Add multicore tb integration file
This commit is contained in:
		
							parent
							
								
									207566660d
								
							
						
					
					
						commit
						01d9617f9c
					
				|  | @ -1,4 +1,5 @@ | ||||||
| TOP              := tb | TOP              := tb | ||||||
|  | DOTF             := tb.f | ||||||
| 
 | 
 | ||||||
| CPU_RESET_VECTOR := 32'h40 | CPU_RESET_VECTOR := 32'h40 | ||||||
| 
 | 
 | ||||||
|  | @ -23,7 +24,7 @@ MCONFIGPTR_VAL   := 32'h9abcdef0 | ||||||
| 
 | 
 | ||||||
| all: tb | all: tb | ||||||
| 
 | 
 | ||||||
| SYNTH_CMD += read_verilog -I ../../../hdl $(shell listfiles tb.f); | SYNTH_CMD += read_verilog -I ../../../hdl $(shell listfiles $(DOTF)); | ||||||
| SYNTH_CMD += chparam -set EXTENSION_C $(EXTENSION_C) $(TOP); | SYNTH_CMD += chparam -set EXTENSION_C $(EXTENSION_C) $(TOP); | ||||||
| SYNTH_CMD += chparam -set EXTENSION_M $(EXTENSION_M) $(TOP); | SYNTH_CMD += chparam -set EXTENSION_M $(EXTENSION_M) $(TOP); | ||||||
| SYNTH_CMD += chparam -set EXTENSION_ZBA $(EXTENSION_ZBA) $(TOP); | SYNTH_CMD += chparam -set EXTENSION_ZBA $(EXTENSION_ZBA) $(TOP); | ||||||
|  | @ -43,7 +44,7 @@ SYNTH_CMD += chparam -set MCONFIGPTR_VAL $(MCONFIGPTR_VAL) $(TOP); | ||||||
| SYNTH_CMD += hierarchy -top $(TOP); | SYNTH_CMD += hierarchy -top $(TOP); | ||||||
| SYNTH_CMD += write_cxxrtl dut.cpp | SYNTH_CMD += write_cxxrtl dut.cpp | ||||||
| 
 | 
 | ||||||
| dut.cpp: $(shell listfiles tb.f) | dut.cpp: $(shell listfiles $(DOTF)) | ||||||
| 	yosys -p "$(SYNTH_CMD)" 2>&1 > cxxrtl.log | 	yosys -p "$(SYNTH_CMD)" 2>&1 > cxxrtl.log | ||||||
| 
 | 
 | ||||||
| clean:: | clean:: | ||||||
|  |  | ||||||
|  | @ -0,0 +1,14 @@ | ||||||
|  | adapter driver remote_bitbang | ||||||
|  | remote_bitbang_host localhost | ||||||
|  | remote_bitbang_port 9824 | ||||||
|  | transport select jtag | ||||||
|  | 
 | ||||||
|  | set _CHIPNAME hazard3 | ||||||
|  | jtag newtap $_CHIPNAME cpu -irlen 5 | ||||||
|  | target create $_CHIPNAME.cpu0 riscv -chain-position $_CHIPNAME.cpu -rtos hwthread | ||||||
|  | target create $_CHIPNAME.cpu1 riscv -chain-position $_CHIPNAME.cpu -coreid 1 | ||||||
|  | target smp $_CHIPNAME.cpu0 $_CHIPNAME.cpu1 | ||||||
|  | 
 | ||||||
|  | gdb_report_data_abort enable | ||||||
|  | init | ||||||
|  | halt | ||||||
|  | @ -1,6 +1,2 @@ | ||||||
| file tb.v | file tb.v | ||||||
| file $HDL/debug/cdc/hazard3_reset_sync.v | list tb_common.f | ||||||
| 
 |  | ||||||
| list $HDL/hazard3.f |  | ||||||
| list $HDL/debug/dm/hazard3_dm.f |  | ||||||
| list $HDL/debug/dtm/hazard3_jtag_dtm.f |  | ||||||
|  |  | ||||||
|  | @ -0,0 +1,5 @@ | ||||||
|  | file $HDL/debug/cdc/hazard3_reset_sync.v | ||||||
|  | 
 | ||||||
|  | list $HDL/hazard3.f | ||||||
|  | list $HDL/debug/dm/hazard3_dm.f | ||||||
|  | list $HDL/debug/dtm/hazard3_jtag_dtm.f | ||||||
|  | @ -0,0 +1,2 @@ | ||||||
|  | file tb_multicore.v | ||||||
|  | list tb_common.f | ||||||
|  | @ -0,0 +1,321 @@ | ||||||
|  | // An integration of JTAG-DTM + DM + 2 single-ported CPUs for openocd to poke | ||||||
|  | // at over a remote bitbang socket | ||||||
|  | 
 | ||||||
|  | `default_nettype none | ||||||
|  | 
 | ||||||
|  | module tb #( | ||||||
|  | `include "hazard3_config.vh" | ||||||
|  | ) ( | ||||||
|  | 	// Global signals | ||||||
|  | 	input wire               clk, | ||||||
|  | 	input wire               rst_n, | ||||||
|  | 
 | ||||||
|  | 	// JTAG port | ||||||
|  |     input  wire              tck, | ||||||
|  |     input  wire              trst_n, | ||||||
|  |     input  wire              tms, | ||||||
|  |     input  wire              tdi, | ||||||
|  |     output wire              tdo, | ||||||
|  | 
 | ||||||
|  | 	// Core 0 bus (named I for consistency with 1-core 2-port tb) | ||||||
|  | 	output wire [W_ADDR-1:0] i_haddr, | ||||||
|  | 	output wire              i_hwrite, | ||||||
|  | 	output wire [1:0]        i_htrans, | ||||||
|  | 	output wire              i_hexcl, | ||||||
|  | 	output wire [2:0]        i_hsize, | ||||||
|  | 	output wire [2:0]        i_hburst, | ||||||
|  | 	output wire [3:0]        i_hprot, | ||||||
|  | 	output wire              i_hmastlock, | ||||||
|  | 	input  wire              i_hready, | ||||||
|  | 	input  wire              i_hresp, | ||||||
|  | 	input  wire              i_hexokay, | ||||||
|  | 	output wire [W_DATA-1:0] i_hwdata, | ||||||
|  | 	input  wire [W_DATA-1:0] i_hrdata, | ||||||
|  | 
 | ||||||
|  | 	// Core 1 bus (named D for consistency with 1-core 2-port tb) | ||||||
|  | 	output wire [W_ADDR-1:0] d_haddr, | ||||||
|  | 	output wire              d_hwrite, | ||||||
|  | 	output wire [1:0]        d_htrans, | ||||||
|  | 	output wire              d_hexcl, | ||||||
|  | 	output wire [2:0]        d_hsize, | ||||||
|  | 	output wire [2:0]        d_hburst, | ||||||
|  | 	output wire [3:0]        d_hprot, | ||||||
|  | 	output wire              d_hmastlock, | ||||||
|  | 	input  wire              d_hready, | ||||||
|  | 	input  wire              d_hresp, | ||||||
|  | 	input  wire              d_hexokay, | ||||||
|  | 	output wire [W_DATA-1:0] d_hwdata, | ||||||
|  | 	input  wire [W_DATA-1:0] d_hrdata, | ||||||
|  | 
 | ||||||
|  | 	// Level-sensitive interrupt sources | ||||||
|  | 	input wire [NUM_IRQ-1:0] irq,       // -> mip.meip | ||||||
|  | 	input wire               soft_irq,  // -> mip.msip | ||||||
|  | 	input wire               timer_irq  // -> mip.mtip | ||||||
|  | ); | ||||||
|  | 
 | ||||||
|  | // JTAG-DTM IDCODE, selected after TAP reset, would normally be a | ||||||
|  | // JEP106-compliant ID | ||||||
|  | localparam IDCODE = 32'hdeadbeef; | ||||||
|  | 
 | ||||||
|  | wire              dmi_psel; | ||||||
|  | wire              dmi_penable; | ||||||
|  | wire              dmi_pwrite; | ||||||
|  | wire [8:0]        dmi_paddr; | ||||||
|  | wire [31:0]       dmi_pwdata; | ||||||
|  | reg  [31:0]       dmi_prdata; | ||||||
|  | wire              dmi_pready; | ||||||
|  | wire              dmi_pslverr; | ||||||
|  | 
 | ||||||
|  | wire dmihardreset_req; | ||||||
|  | wire assert_dmi_reset = !rst_n || dmihardreset_req; | ||||||
|  | wire rst_n_dmi; | ||||||
|  | 
 | ||||||
|  | hazard3_reset_sync dmi_reset_sync_u ( | ||||||
|  | 	.clk       (clk), | ||||||
|  | 	.rst_n_in  (!assert_dmi_reset), | ||||||
|  | 	.rst_n_out (rst_n_dmi) | ||||||
|  | ); | ||||||
|  | 
 | ||||||
|  | hazard3_jtag_dtm #( | ||||||
|  | 	.IDCODE (IDCODE) | ||||||
|  | ) inst_hazard3_jtag_dtm ( | ||||||
|  | 	.tck              (tck), | ||||||
|  | 	.trst_n           (trst_n), | ||||||
|  | 	.tms              (tms), | ||||||
|  | 	.tdi              (tdi), | ||||||
|  | 	.tdo              (tdo), | ||||||
|  | 
 | ||||||
|  | 	.dmihardreset_req (dmihardreset_req), | ||||||
|  | 
 | ||||||
|  | 	.clk_dmi          (clk), | ||||||
|  | 	.rst_n_dmi        (rst_n_dmi), | ||||||
|  | 
 | ||||||
|  | 	.dmi_psel         (dmi_psel), | ||||||
|  | 	.dmi_penable      (dmi_penable), | ||||||
|  | 	.dmi_pwrite       (dmi_pwrite), | ||||||
|  | 	.dmi_paddr        (dmi_paddr), | ||||||
|  | 	.dmi_pwdata       (dmi_pwdata), | ||||||
|  | 	.dmi_prdata       (dmi_prdata), | ||||||
|  | 	.dmi_pready       (dmi_pready), | ||||||
|  | 	.dmi_pslverr      (dmi_pslverr) | ||||||
|  | ); | ||||||
|  | 
 | ||||||
|  | localparam N_HARTS = 2; | ||||||
|  | localparam XLEN = 32; | ||||||
|  | 
 | ||||||
|  | wire                      sys_reset_req; | ||||||
|  | wire                      sys_reset_done; | ||||||
|  | wire [N_HARTS-1:0]        hart_reset_req; | ||||||
|  | wire [N_HARTS-1:0]        hart_reset_done; | ||||||
|  | 
 | ||||||
|  | wire [N_HARTS-1:0]        hart_req_halt; | ||||||
|  | wire [N_HARTS-1:0]        hart_req_halt_on_reset; | ||||||
|  | wire [N_HARTS-1:0]        hart_req_resume; | ||||||
|  | wire [N_HARTS-1:0]        hart_halted; | ||||||
|  | wire [N_HARTS-1:0]        hart_running; | ||||||
|  | 
 | ||||||
|  | wire [N_HARTS*XLEN-1:0]   hart_data0_rdata; | ||||||
|  | wire [N_HARTS*XLEN-1:0]   hart_data0_wdata; | ||||||
|  | wire [N_HARTS-1:0]        hart_data0_wen; | ||||||
|  | 
 | ||||||
|  | wire [N_HARTS*XLEN-1:0]   hart_instr_data; | ||||||
|  | wire [N_HARTS-1:0]        hart_instr_data_vld; | ||||||
|  | wire [N_HARTS-1:0]        hart_instr_data_rdy; | ||||||
|  | wire [N_HARTS-1:0]        hart_instr_caught_exception; | ||||||
|  | wire [N_HARTS-1:0]        hart_instr_caught_ebreak; | ||||||
|  | 
 | ||||||
|  | hazard3_dm #( | ||||||
|  | 	.N_HARTS      (N_HARTS), | ||||||
|  | 	.NEXT_DM_ADDR (0) | ||||||
|  | ) dm ( | ||||||
|  | 	.clk                         (clk), | ||||||
|  | 	.rst_n                       (rst_n), | ||||||
|  | 
 | ||||||
|  | 	.dmi_psel                    (dmi_psel), | ||||||
|  | 	.dmi_penable                 (dmi_penable), | ||||||
|  | 	.dmi_pwrite                  (dmi_pwrite), | ||||||
|  | 	.dmi_paddr                   (dmi_paddr), | ||||||
|  | 	.dmi_pwdata                  (dmi_pwdata), | ||||||
|  | 	.dmi_prdata                  (dmi_prdata), | ||||||
|  | 	.dmi_pready                  (dmi_pready), | ||||||
|  | 	.dmi_pslverr                 (dmi_pslverr), | ||||||
|  | 
 | ||||||
|  | 	.sys_reset_req               (sys_reset_req), | ||||||
|  | 	.sys_reset_done              (sys_reset_done), | ||||||
|  | 	.hart_reset_req              (hart_reset_req), | ||||||
|  | 	.hart_reset_done             (hart_reset_done), | ||||||
|  | 
 | ||||||
|  | 	.hart_req_halt               (hart_req_halt), | ||||||
|  | 	.hart_req_halt_on_reset      (hart_req_halt_on_reset), | ||||||
|  | 	.hart_req_resume             (hart_req_resume), | ||||||
|  | 	.hart_halted                 (hart_halted), | ||||||
|  | 	.hart_running                (hart_running), | ||||||
|  | 
 | ||||||
|  | 	.hart_data0_rdata            (hart_data0_rdata), | ||||||
|  | 	.hart_data0_wdata            (hart_data0_wdata), | ||||||
|  | 	.hart_data0_wen              (hart_data0_wen), | ||||||
|  | 
 | ||||||
|  | 	.hart_instr_data             (hart_instr_data), | ||||||
|  | 	.hart_instr_data_vld         (hart_instr_data_vld), | ||||||
|  | 	.hart_instr_data_rdy         (hart_instr_data_rdy), | ||||||
|  | 	.hart_instr_caught_exception (hart_instr_caught_exception), | ||||||
|  | 	.hart_instr_caught_ebreak    (hart_instr_caught_ebreak) | ||||||
|  | ); | ||||||
|  | 
 | ||||||
|  | // Generate resynchronised reset for CPU based on upstream reset and | ||||||
|  | // on reset requests from DM. | ||||||
|  | 
 | ||||||
|  | wire assert_cpu_reset0 = !rst_n || sys_reset_req || hart_reset_req[0]; | ||||||
|  | wire assert_cpu_reset1 = !rst_n || sys_reset_req || hart_reset_req[1]; | ||||||
|  | wire rst_n_cpu0; | ||||||
|  | wire rst_n_cpu1; | ||||||
|  | 
 | ||||||
|  | hazard3_reset_sync cpu0_reset_sync ( | ||||||
|  | 	.clk       (clk), | ||||||
|  | 	.rst_n_in  (!assert_cpu_reset0), | ||||||
|  | 	.rst_n_out (rst_n_cpu0) | ||||||
|  | ); | ||||||
|  | 
 | ||||||
|  | hazard3_reset_sync cpu1_reset_sync ( | ||||||
|  | 	.clk       (clk), | ||||||
|  | 	.rst_n_in  (!assert_cpu_reset1), | ||||||
|  | 	.rst_n_out (rst_n_cpu1) | ||||||
|  | ); | ||||||
|  | 
 | ||||||
|  | // Still some work to be done on the reset handshake -- this ought to be | ||||||
|  | // resynchronised to DM's reset domain here, and the DM should wait for a | ||||||
|  | // rising edge after it has asserted the reset pulse, to make sure the tail | ||||||
|  | // of the previous "done" is not passed on. | ||||||
|  | assign sys_reset_done = rst_n_cpu0 && rst_n_cpu1; | ||||||
|  | assign hart_reset_done = {rst_n_cpu1, rst_n_cpu0}; | ||||||
|  | 
 | ||||||
|  | hazard3_cpu_1port #( | ||||||
|  | 	// Have to copy paste hazard3_config_inst.vh just so we can change MHARTID | ||||||
|  | 	.RESET_VECTOR    (RESET_VECTOR), | ||||||
|  | 	.MTVEC_INIT      (MTVEC_INIT), | ||||||
|  | 	.EXTENSION_A     (EXTENSION_A), | ||||||
|  | 	.EXTENSION_C     (EXTENSION_C), | ||||||
|  | 	.EXTENSION_M     (EXTENSION_M), | ||||||
|  | 	.EXTENSION_ZBA   (EXTENSION_ZBA), | ||||||
|  | 	.EXTENSION_ZBB   (EXTENSION_ZBB), | ||||||
|  | 	.EXTENSION_ZBC   (EXTENSION_ZBC), | ||||||
|  | 	.EXTENSION_ZBS   (EXTENSION_ZBS), | ||||||
|  | 	.CSR_M_MANDATORY (CSR_M_MANDATORY), | ||||||
|  | 	.CSR_M_TRAP      (CSR_M_TRAP), | ||||||
|  | 	.CSR_COUNTER     (CSR_COUNTER), | ||||||
|  | 	.DEBUG_SUPPORT   (DEBUG_SUPPORT), | ||||||
|  | 	.NUM_IRQ         (NUM_IRQ), | ||||||
|  | 	.MVENDORID_VAL   (MVENDORID_VAL), | ||||||
|  | 	.MIMPID_VAL      (MIMPID_VAL), | ||||||
|  | 	.MHARTID_VAL     (32'h0000_0000), | ||||||
|  | 	.MCONFIGPTR_VAL  (MCONFIGPTR_VAL), | ||||||
|  | 	.REDUCED_BYPASS  (REDUCED_BYPASS), | ||||||
|  | 	.MULDIV_UNROLL   (MULDIV_UNROLL), | ||||||
|  | 	.MUL_FAST        (MUL_FAST), | ||||||
|  | 	.MULH_FAST       (MULH_FAST), | ||||||
|  | 	.MTVEC_WMASK     (MTVEC_WMASK) | ||||||
|  | ) cpu0 ( | ||||||
|  | 	.clk                        (clk), | ||||||
|  | 	.rst_n                      (rst_n_cpu0), | ||||||
|  | 
 | ||||||
|  | 	.ahblm_haddr                (i_haddr), | ||||||
|  | 	.ahblm_hexcl                (i_hexcl), | ||||||
|  | 	.ahblm_hwrite               (i_hwrite), | ||||||
|  | 	.ahblm_htrans               (i_htrans), | ||||||
|  | 	.ahblm_hsize                (i_hsize), | ||||||
|  | 	.ahblm_hburst               (i_hburst), | ||||||
|  | 	.ahblm_hprot                (i_hprot), | ||||||
|  | 	.ahblm_hmastlock            (i_hmastlock), | ||||||
|  | 	.ahblm_hready               (i_hready), | ||||||
|  | 	.ahblm_hresp                (i_hresp), | ||||||
|  | 	.ahblm_hexokay              (i_hexokay), | ||||||
|  | 	.ahblm_hwdata               (i_hwdata), | ||||||
|  | 	.ahblm_hrdata               (i_hrdata), | ||||||
|  | 
 | ||||||
|  | 	.dbg_req_halt               (hart_req_halt              [0]), | ||||||
|  | 	.dbg_req_halt_on_reset      (hart_req_halt_on_reset     [0]), | ||||||
|  | 	.dbg_req_resume             (hart_req_resume            [0]), | ||||||
|  | 	.dbg_halted                 (hart_halted                [0]), | ||||||
|  | 	.dbg_running                (hart_running               [0]), | ||||||
|  | 
 | ||||||
|  | 	.dbg_data0_rdata            (hart_data0_rdata           [0 * XLEN +: XLEN]), | ||||||
|  | 	.dbg_data0_wdata            (hart_data0_wdata           [0 * XLEN +: XLEN]), | ||||||
|  | 	.dbg_data0_wen              (hart_data0_wen             [0]), | ||||||
|  | 
 | ||||||
|  | 	.dbg_instr_data             (hart_instr_data            [0 * XLEN +: XLEN]), | ||||||
|  | 	.dbg_instr_data_vld         (hart_instr_data_vld        [0]), | ||||||
|  | 	.dbg_instr_data_rdy         (hart_instr_data_rdy        [0]), | ||||||
|  | 	.dbg_instr_caught_exception (hart_instr_caught_exception[0]), | ||||||
|  | 	.dbg_instr_caught_ebreak    (hart_instr_caught_ebreak   [0]), | ||||||
|  | 
 | ||||||
|  | 	.irq                        (irq), | ||||||
|  | 	.soft_irq                   (soft_irq), | ||||||
|  | 	.timer_irq                  (timer_irq) | ||||||
|  | ); | ||||||
|  | 
 | ||||||
|  | hazard3_cpu_1port #( | ||||||
|  | 	// Have to copy paste hazard3_config_inst.vh just so we can change MHARTID | ||||||
|  | 	.RESET_VECTOR    (RESET_VECTOR), | ||||||
|  | 	.MTVEC_INIT      (MTVEC_INIT), | ||||||
|  | 	.EXTENSION_A     (EXTENSION_A), | ||||||
|  | 	.EXTENSION_C     (EXTENSION_C), | ||||||
|  | 	.EXTENSION_M     (EXTENSION_M), | ||||||
|  | 	.EXTENSION_ZBA   (EXTENSION_ZBA), | ||||||
|  | 	.EXTENSION_ZBB   (EXTENSION_ZBB), | ||||||
|  | 	.EXTENSION_ZBC   (EXTENSION_ZBC), | ||||||
|  | 	.EXTENSION_ZBS   (EXTENSION_ZBS), | ||||||
|  | 	.CSR_M_MANDATORY (CSR_M_MANDATORY), | ||||||
|  | 	.CSR_M_TRAP      (CSR_M_TRAP), | ||||||
|  | 	.CSR_COUNTER     (CSR_COUNTER), | ||||||
|  | 	.DEBUG_SUPPORT   (DEBUG_SUPPORT), | ||||||
|  | 	.NUM_IRQ         (NUM_IRQ), | ||||||
|  | 	.MVENDORID_VAL   (MVENDORID_VAL), | ||||||
|  | 	.MIMPID_VAL      (MIMPID_VAL), | ||||||
|  | 	.MHARTID_VAL     (32'h0000_0001), | ||||||
|  | 	.MCONFIGPTR_VAL  (MCONFIGPTR_VAL), | ||||||
|  | 	.REDUCED_BYPASS  (REDUCED_BYPASS), | ||||||
|  | 	.MULDIV_UNROLL   (MULDIV_UNROLL), | ||||||
|  | 	.MUL_FAST        (MUL_FAST), | ||||||
|  | 	.MULH_FAST       (MULH_FAST), | ||||||
|  | 	.MTVEC_WMASK     (MTVEC_WMASK) | ||||||
|  | ) cpu1 ( | ||||||
|  | 	.clk                        (clk), | ||||||
|  | 	.rst_n                      (rst_n_cpu1), | ||||||
|  | 
 | ||||||
|  | 	.ahblm_haddr                (d_haddr), | ||||||
|  | 	.ahblm_hexcl                (d_hexcl), | ||||||
|  | 	.ahblm_hwrite               (d_hwrite), | ||||||
|  | 	.ahblm_htrans               (d_htrans), | ||||||
|  | 	.ahblm_hsize                (d_hsize), | ||||||
|  | 	.ahblm_hburst               (d_hburst), | ||||||
|  | 	.ahblm_hprot                (d_hprot), | ||||||
|  | 	.ahblm_hmastlock            (d_hmastlock), | ||||||
|  | 	.ahblm_hready               (d_hready), | ||||||
|  | 	.ahblm_hresp                (d_hresp), | ||||||
|  | 	.ahblm_hexokay              (d_hexokay), | ||||||
|  | 	.ahblm_hwdata               (d_hwdata), | ||||||
|  | 	.ahblm_hrdata               (d_hrdata), | ||||||
|  | 
 | ||||||
|  | 	.dbg_req_halt               (hart_req_halt              [1]), | ||||||
|  | 	.dbg_req_halt_on_reset      (hart_req_halt_on_reset     [1]), | ||||||
|  | 	.dbg_req_resume             (hart_req_resume            [1]), | ||||||
|  | 	.dbg_halted                 (hart_halted                [1]), | ||||||
|  | 	.dbg_running                (hart_running               [1]), | ||||||
|  | 
 | ||||||
|  | 	.dbg_data0_rdata            (hart_data0_rdata           [1 * XLEN +: XLEN]), | ||||||
|  | 	.dbg_data0_wdata            (hart_data0_wdata           [1 * XLEN +: XLEN]), | ||||||
|  | 	.dbg_data0_wen              (hart_data0_wen             [1]), | ||||||
|  | 
 | ||||||
|  | 	.dbg_instr_data             (hart_instr_data            [1 * XLEN +: XLEN]), | ||||||
|  | 	.dbg_instr_data_vld         (hart_instr_data_vld        [1]), | ||||||
|  | 	.dbg_instr_data_rdy         (hart_instr_data_rdy        [1]), | ||||||
|  | 	.dbg_instr_caught_exception (hart_instr_caught_exception[1]), | ||||||
|  | 	.dbg_instr_caught_ebreak    (hart_instr_caught_ebreak   [1]), | ||||||
|  | 
 | ||||||
|  | 	.irq                        (irq), | ||||||
|  | 	.soft_irq                   (soft_irq), | ||||||
|  | 	.timer_irq                  (timer_irq) | ||||||
|  | ); | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | endmodule | ||||||
		Loading…
	
		Reference in New Issue