Files
eb001/tb/verilator/SimTop.v
2025-01-15 17:58:12 +08:00

394 lines
8.5 KiB
Verilog

module SimTop (
// output success,
// output fail,
input clock, //100MHz
input reset,
input clk400
);
wire [3:0] uDatSer;
wire [3:0] dDatSer;
wire [3:0] dmactive;
ExampleRocketSystem s_rocket_mst(
.clock(clock),
.reset(reset),
.resetctrl_hartIsInReset_0(reset),
.debug_clock(clock),
.debug_reset(reset),
.debug_systemjtag_jtag_TCK(1'b0),
.debug_systemjtag_jtag_TMS(1'b0),
.debug_systemjtag_jtag_TDI(1'b0),
.debug_systemjtag_jtag_TDO_data(),
.debug_systemjtag_jtag_TDO_driven(),
.debug_systemjtag_reset(reset),
.debug_systemjtag_mfr_id(11'b0),
.debug_systemjtag_part_number(16'b0),
.debug_systemjtag_version(4'b0),
.debug_ndreset(),
.debug_dmactive(dmactive[0]),
.debug_dmactiveAck(dmactive[0]),
.mmio_apb_0_psel(),
.mmio_apb_0_penable(),
.mmio_apb_0_pwrite(),
.mmio_apb_0_paddr(),
.mmio_apb_0_pprot(),
.mmio_apb_0_pwdata(),
.mmio_apb_0_pstrb(),
.mmio_apb_0_pready(1'b1),
.mmio_apb_0_pslverr(1'b0),
.mmio_apb_0_prdata(32'b0),
.mmio_ahb_0_hmastlock(),
.mmio_ahb_0_hsel(),
.mmio_ahb_0_hready(),
.mmio_ahb_0_hreadyout(1'b1),
.mmio_ahb_0_htrans(),
.mmio_ahb_0_hsize(),
.mmio_ahb_0_hburst(),
.mmio_ahb_0_hwrite(),
.mmio_ahb_0_hprot(),
.mmio_ahb_0_haddr(),
.mmio_ahb_0_hwdata(),
.mmio_ahb_0_hresp(2'b0),
.mmio_ahb_0_hrdata(32'b0),
.mmio_ahb_0_hmaster(),
.mmio_ahb_0_hsplit(16'b0),
.interrupts(2'b0),
.cdrio_overCLK(clk400),
.cdrio_uDatIn(uDatSer[0]),
.cdrio_uDatOut(),
.cdrio_dDatIn(1'b0),
.cdrio_dDatOut(dDatSer[0])
);
/*
ExampleRocketSystem s_rocket_slv0(
.clock(clock),
.reset(reset),
.resetctrl_hartIsInReset_0(reset),
.debug_clock(clock),
.debug_reset(reset),
.debug_systemjtag_jtag_TCK(1'b0),
.debug_systemjtag_jtag_TMS(1'b0),
.debug_systemjtag_jtag_TDI(1'b0),
.debug_systemjtag_jtag_TDO_data(),
.debug_systemjtag_jtag_TDO_driven(),
.debug_systemjtag_reset(reset),
.debug_systemjtag_mfr_id(11'b0),
.debug_systemjtag_part_number(16'b0),
.debug_systemjtag_version(4'b0),
.debug_ndreset(),
.debug_dmactive(dmactive[1]),
.debug_dmactiveAck(dmactive[1]),
.mmio_apb_0_psel(),
.mmio_apb_0_penable(),
.mmio_apb_0_pwrite(),
.mmio_apb_0_paddr(),
.mmio_apb_0_pprot(),
.mmio_apb_0_pwdata(),
.mmio_apb_0_pstrb(),
.mmio_apb_0_pready(1'b1),
.mmio_apb_0_pslverr(1'b0),
.mmio_apb_0_prdata(32'b0),
.mmio_ahb_0_hmastlock(),
.mmio_ahb_0_hsel(),
.mmio_ahb_0_hready(),
.mmio_ahb_0_hreadyout(1'b1),
.mmio_ahb_0_htrans(),
.mmio_ahb_0_hsize(),
.mmio_ahb_0_hburst(),
.mmio_ahb_0_hwrite(),
.mmio_ahb_0_hprot(),
.mmio_ahb_0_haddr(),
.mmio_ahb_0_hwdata(),
.mmio_ahb_0_hresp(2'b0),
.mmio_ahb_0_hrdata(32'b0),
.mmio_ahb_0_hmaster(),
.mmio_ahb_0_hsplit(16'b0),
.interrupts(2'b0),
.cdrio_overCLK(clk400),
.cdrio_uDatIn(uDatSer[1]),
.cdrio_uDatOut(uDatSer[0]),
.cdrio_dDatIn(dDatSer[0]),
.cdrio_dDatOut(dDatSer[1])
);
ExampleRocketSystem s_rocket_slv1(
.clock(clock),
.reset(reset),
.resetctrl_hartIsInReset_0(reset),
.debug_clock(clock),
.debug_reset(reset),
.debug_systemjtag_jtag_TCK(1'b0),
.debug_systemjtag_jtag_TMS(1'b0),
.debug_systemjtag_jtag_TDI(1'b0),
.debug_systemjtag_jtag_TDO_data(),
.debug_systemjtag_jtag_TDO_driven(),
.debug_systemjtag_reset(reset),
.debug_systemjtag_mfr_id(11'b0),
.debug_systemjtag_part_number(16'b0),
.debug_systemjtag_version(4'b0),
.debug_ndreset(),
.debug_dmactive(dmactive[2]),
.debug_dmactiveAck(dmactive[2]),
.mmio_apb_0_psel(),
.mmio_apb_0_penable(),
.mmio_apb_0_pwrite(),
.mmio_apb_0_paddr(),
.mmio_apb_0_pprot(),
.mmio_apb_0_pwdata(),
.mmio_apb_0_pstrb(),
.mmio_apb_0_pready(1'b1),
.mmio_apb_0_pslverr(1'b0),
.mmio_apb_0_prdata(32'b0),
.mmio_ahb_0_hmastlock(),
.mmio_ahb_0_hsel(),
.mmio_ahb_0_hready(),
.mmio_ahb_0_hreadyout(1'b1),
.mmio_ahb_0_htrans(),
.mmio_ahb_0_hsize(),
.mmio_ahb_0_hburst(),
.mmio_ahb_0_hwrite(),
.mmio_ahb_0_hprot(),
.mmio_ahb_0_haddr(),
.mmio_ahb_0_hwdata(),
.mmio_ahb_0_hresp(2'b0),
.mmio_ahb_0_hrdata(32'b0),
.mmio_ahb_0_hmaster(),
.mmio_ahb_0_hsplit(16'b0),
.interrupts(2'b0),
.cdrio_overCLK(clk400),
.cdrio_uDatIn(uDatSer[2]),
.cdrio_uDatOut(uDatSer[1]),
.cdrio_dDatIn(dDatSer[1]),
.cdrio_dDatOut(dDatSer[2])
);
ExampleRocketSystem s_rocket_slv2(
.clock(clock),
.reset(reset),
.resetctrl_hartIsInReset_0(reset),
.debug_clock(clock),
.debug_reset(reset),
.debug_systemjtag_jtag_TCK(1'b0),
.debug_systemjtag_jtag_TMS(1'b0),
.debug_systemjtag_jtag_TDI(1'b0),
.debug_systemjtag_jtag_TDO_data(),
.debug_systemjtag_jtag_TDO_driven(),
.debug_systemjtag_reset(reset),
.debug_systemjtag_mfr_id(11'b0),
.debug_systemjtag_part_number(16'b0),
.debug_systemjtag_version(4'b0),
.debug_ndreset(),
.debug_dmactive(dmactive[3]),
.debug_dmactiveAck(dmactive[3]),
.mmio_apb_0_psel(),
.mmio_apb_0_penable(),
.mmio_apb_0_pwrite(),
.mmio_apb_0_paddr(),
.mmio_apb_0_pprot(),
.mmio_apb_0_pwdata(),
.mmio_apb_0_pstrb(),
.mmio_apb_0_pready(1'b1),
.mmio_apb_0_pslverr(1'b0),
.mmio_apb_0_prdata(32'b0),
.mmio_ahb_0_hmastlock(),
.mmio_ahb_0_hsel(),
.mmio_ahb_0_hready(),
.mmio_ahb_0_hreadyout(1'b1),
.mmio_ahb_0_htrans(),
.mmio_ahb_0_hsize(),
.mmio_ahb_0_hburst(),
.mmio_ahb_0_hwrite(),
.mmio_ahb_0_hprot(),
.mmio_ahb_0_haddr(),
.mmio_ahb_0_hwdata(),
.mmio_ahb_0_hresp(2'b0),
.mmio_ahb_0_hrdata(32'b0),
.mmio_ahb_0_hmaster(),
.mmio_ahb_0_hsplit(16'b0),
.interrupts(2'b0),
.cdrio_overCLK(clk400),
.cdrio_uDatIn(1'b0),
.cdrio_uDatOut(uDatSer[2]),
.cdrio_dDatIn(dDatSer[2]),
.cdrio_dDatOut()
);
*/
// wire debugger_success;
// debuger i_debuger(
// .success(debugger_success),
// .DEBUGER_AWID (mmio_axi4_0_aw_bits_id),
// .DEBUGER_BID (mmio_axi4_0_b_bits_id),
// .DEBUGER_ARID (mmio_axi4_0_ar_bits_id),
// .DEBUGER_RID (mmio_axi4_0_r_bits_id),
// .DEBUGER_AWADDR (mmio_axi4_0_aw_bits_addr),
// .DEBUGER_AWVALID(mmio_axi4_0_aw_valid),
// .DEBUGER_AWREADY(mmio_axi4_0_aw_ready),
// .DEBUGER_WDATA (mmio_axi4_0_w_bits_data),
// .DEBUGER_WSTRB (mmio_axi4_0_w_bits_strb),
// .DEBUGER_WVALID(mmio_axi4_0_w_valid),
// .DEBUGER_WREADY(mmio_axi4_0_w_ready),
// .DEBUGER_BRESP (mmio_axi4_0_b_bits_resp),
// .DEBUGER_BVALID(mmio_axi4_0_b_valid),
// .DEBUGER_BREADY(mmio_axi4_0_b_ready),
// .DEBUGER_ARADDR (mmio_axi4_0_ar_bits_addr),
// .DEBUGER_ARVALID(mmio_axi4_0_ar_valid),
// .DEBUGER_ARREADY(mmio_axi4_0_ar_ready),
// .DEBUGER_RDATA (mmio_axi4_0_r_bits_data),
// .DEBUGER_RRESP (mmio_axi4_0_r_bits_resp),
// .DEBUGER_RVALID(mmio_axi4_0_r_valid),
// .DEBUGER_RREADY(mmio_axi4_0_r_ready),
// .CLK(CLK),
// .RSTn(RSTn)
// );
// reg [1023:0] firmware_file;
// initial begin
// if ($value$plusargs("%s", firmware_file)) begin
// $display("%s", firmware_file);
// $readmemh(firmware_file, s_rocket.ram.Mem_SRAM.Mem_SRAM_ext.ram);
// end
// end
// assign success = debugger_success;
string testName;
`define MEM0 s_rocket_mst.ram.Mem_SRAM.Mem_SRAM_ext.ram
`define MEM1 s_rocket_slv0.ram.Mem_SRAM.Mem_SRAM_ext.ram
`define MEM2 s_rocket_slv1.ram.Mem_SRAM.Mem_SRAM_ext.ram
`define MEM3 s_rocket_slv2.ram.Mem_SRAM.Mem_SRAM_ext.ram
reg [7:0] mem0 [0:200000];
reg [7:0] mem1 [0:200000];
reg [7:0] mem2 [0:200000];
reg [7:0] mem3 [0:200000];
localparam DP = 8192;
integer i;
initial begin
#20
$readmemh("./tb/sw/build/mstTest.verilog", mem0);
for ( i = 0; i < DP; i = i + 1 ) begin
if ( mem0[i*4+0] || mem0[i*4+1] || mem0[i*4+2] || mem0[i*4+3] ) begin
`MEM0[i] = {mem0[i*4+3], mem0[i*4+2], mem0[i*4+1], mem0[i*4+0]};
end
else begin
`MEM0[i] = 32'h0;
end
// $display("MEM0[%d] = %h", i, `MEM0[i]);
end
// $readmemh("./tb/sw/build/slvTest.verilog", mem1);
// for ( i = 0; i < DP; i = i + 1 ) begin
// if ( mem1[i*4+0] || mem1[i*4+1] || mem1[i*4+2] || mem1[i*4+3] ) begin
// `MEM1[i] = {mem1[i*4+3], mem1[i*4+2], mem1[i*4+1], mem1[i*4+0]};
// end
// else begin
// `MEM1[i] = 32'h0;
// end
// end
// $readmemh("./tb/sw/build/slvTest.verilog", mem2);
// for ( i = 0; i < DP; i = i + 1 ) begin
// if ( mem2[i*4+0] || mem2[i*4+1] || mem2[i*4+2] || mem2[i*4+3] ) begin
// `MEM2[i] = {mem2[i*4+3], mem2[i*4+2], mem2[i*4+1], mem2[i*4+0]};
// end
// else begin
// `MEM2[i] = 32'h0;
// end
// end
// $readmemh("./tb/sw/build/slvTest.verilog", mem3);
// for ( i = 0; i < DP; i = i + 1 ) begin
// if ( mem3[i*4+0] || mem3[i*4+1] || mem3[i*4+2] || mem3[i*4+3] ) begin
// `MEM3[i] = {mem3[i*4+3], mem3[i*4+2], mem3[i*4+1], mem3[i*4+0]};
// end
// else begin
// `MEM3[i] = 32'h0;
// end
// end
end
endmodule