2024-10-25 17:46:21 +08:00
|
|
|
`timescale 1 ns / 1 ps
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
module backSys_TB (
|
|
|
|
|
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
reg clock;
|
|
|
|
|
reg reset;
|
|
|
|
|
|
|
|
|
|
reg overCLK;
|
|
|
|
|
|
2024-10-29 11:21:04 +08:00
|
|
|
wire [3:0] io_uDat;
|
|
|
|
|
wire [3:0] io_dDat;
|
2024-10-25 17:46:21 +08:00
|
|
|
|
2024-10-29 11:21:04 +08:00
|
|
|
wire [3:0] isLast;
|
2024-10-25 17:46:21 +08:00
|
|
|
|
2024-10-29 11:21:04 +08:00
|
|
|
|
|
|
|
|
BackSys s_Mst(
|
|
|
|
|
.clock(clock),
|
|
|
|
|
.reset(reset),
|
|
|
|
|
.io_overCLK(overCLK),
|
|
|
|
|
.io_uDatIn(io_uDat[0]),
|
|
|
|
|
.io_uDatOut(),
|
|
|
|
|
.io_dDatIn(1'b0),
|
|
|
|
|
.io_dDatOut(io_dDat[0]),
|
|
|
|
|
.io_out(),
|
|
|
|
|
.io_in(32'b0),
|
|
|
|
|
.io_isOnline(),
|
|
|
|
|
.io_isLast(isLast[0]),
|
|
|
|
|
.io_DCIn(1'b0)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
BackSys s_Slv0(
|
|
|
|
|
.clock(clock),
|
|
|
|
|
.reset(reset),
|
|
|
|
|
.io_overCLK(overCLK),
|
|
|
|
|
.io_uDatIn(io_uDat[1]),
|
|
|
|
|
.io_uDatOut(io_uDat[0]),
|
|
|
|
|
.io_dDatIn(io_dDat[0]),
|
|
|
|
|
.io_dDatOut(io_dDat[1]),
|
|
|
|
|
.io_out(),
|
|
|
|
|
.io_in(32'b0),
|
|
|
|
|
.io_isOnline(isLast[0]),
|
|
|
|
|
.io_isLast(isLast[1]),
|
|
|
|
|
.io_DCIn(1'b0)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
BackSys s_Slv1(
|
|
|
|
|
.clock(clock),
|
|
|
|
|
.reset(reset),
|
|
|
|
|
.io_overCLK(overCLK),
|
|
|
|
|
.io_uDatIn(io_uDat[2]),
|
|
|
|
|
.io_uDatOut(io_uDat[1]),
|
|
|
|
|
.io_dDatIn(io_dDat[1]),
|
|
|
|
|
.io_dDatOut(io_dDat[2]),
|
|
|
|
|
.io_out(),
|
|
|
|
|
.io_in(32'b0),
|
|
|
|
|
.io_isOnline(isLast[1]),
|
|
|
|
|
.io_isLast(isLast[2]),
|
|
|
|
|
.io_DCIn(1'b0)
|
|
|
|
|
);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
BackSys s_Slv2(
|
2024-10-25 17:46:21 +08:00
|
|
|
.clock(clock),
|
|
|
|
|
.reset(reset),
|
|
|
|
|
.io_overCLK(overCLK),
|
2024-10-29 11:21:04 +08:00
|
|
|
.io_uDatIn(io_uDat[3]),
|
|
|
|
|
.io_uDatOut(io_uDat[2]),
|
|
|
|
|
.io_dDatIn(io_dDat[2]),
|
|
|
|
|
.io_dDatOut(io_dDat[3]),
|
|
|
|
|
.io_out(),
|
|
|
|
|
.io_in(32'b0),
|
|
|
|
|
.io_isOnline(isLast[2]),
|
|
|
|
|
.io_isLast(isLast[3]),
|
|
|
|
|
.io_DCIn(1'b0)
|
2024-10-25 17:46:21 +08:00
|
|
|
);
|
|
|
|
|
|
2024-10-29 11:21:04 +08:00
|
|
|
BackSys s_Slv3(
|
|
|
|
|
.clock(clock),
|
|
|
|
|
.reset(reset),
|
|
|
|
|
.io_overCLK(overCLK),
|
|
|
|
|
.io_uDatIn(1'b0),
|
|
|
|
|
.io_uDatOut(io_uDat[3]),
|
|
|
|
|
.io_dDatIn(io_dDat[3]),
|
|
|
|
|
.io_dDatOut(),
|
|
|
|
|
.io_out(),
|
|
|
|
|
.io_in(32'b0),
|
|
|
|
|
.io_isOnline(isLast[3]),
|
|
|
|
|
.io_isLast(1'b1),
|
|
|
|
|
.io_DCIn(1'b0)
|
|
|
|
|
);
|
2024-10-25 17:46:21 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
initial begin
|
|
|
|
|
clock = 0;
|
|
|
|
|
reset = 1;
|
2024-10-29 09:33:29 +08:00
|
|
|
overCLK = 0;
|
2024-10-25 17:46:21 +08:00
|
|
|
|
|
|
|
|
#200
|
|
|
|
|
|
|
|
|
|
reset <= 0;
|
|
|
|
|
|
2024-11-04 17:11:16 +08:00
|
|
|
# 5000000
|
2024-10-25 17:46:21 +08:00
|
|
|
$display("Time Out !!!");
|
|
|
|
|
$stop;
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
initial begin
|
|
|
|
|
forever begin #40 clock <= ~clock; end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
initial begin
|
|
|
|
|
forever begin #10 overCLK <= ~overCLK; end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
2024-11-04 17:38:51 +08:00
|
|
|
`define SRAM s_Mst.sram.mem.mem_ext.ram
|
|
|
|
|
|
2024-10-25 17:46:21 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
localparam DP = 2**14;
|
2024-10-29 11:21:04 +08:00
|
|
|
integer i;
|
2024-10-25 17:46:21 +08:00
|
|
|
|
|
|
|
|
reg [7:0] mem [0:200000];
|
|
|
|
|
initial begin
|
2024-10-29 11:21:04 +08:00
|
|
|
$readmemh("./tb/sw/build/mstTest.verilog", mem);
|
2024-10-25 17:46:21 +08:00
|
|
|
for ( i = 0; i < DP; i = i + 1 ) begin
|
2024-11-04 17:38:51 +08:00
|
|
|
`SRAM[i][7:0] = | mem[i*4+0] ? mem[i*4+0]: 8'h0;
|
|
|
|
|
`SRAM[i][15:8] = | mem[i*4+1] ? mem[i*4+1]: 8'h0;
|
|
|
|
|
`SRAM[i][23:16] = | mem[i*4+2] ? mem[i*4+2]: 8'h0;
|
|
|
|
|
`SRAM[i][31:24] = | mem[i*4+3] ? mem[i*4+3]: 8'h0;
|
2024-10-25 17:46:21 +08:00
|
|
|
|
|
|
|
|
// $display("ITCM %h: %h,%h", i*4,`SRAM_ODD.ram[i],`SRAM_EVE.ram[i]);
|
|
|
|
|
end
|
2024-10-29 11:21:04 +08:00
|
|
|
end
|
|
|
|
|
|
2024-10-25 17:46:21 +08:00
|
|
|
|
2024-11-04 17:38:51 +08:00
|
|
|
`define SLV0_SRAM s_Slv0.sram.mem.mem_ext.ram
|
|
|
|
|
|
|
|
|
|
`define SLV1_SRAM s_Slv1.sram.mem.mem_ext.ram
|
|
|
|
|
|
|
|
|
|
`define SLV2_SRAM s_Slv2.sram.mem.mem_ext.ram
|
|
|
|
|
|
|
|
|
|
`define SLV3_SRAM s_Slv3.sram.mem.mem_ext.ram
|
|
|
|
|
|
2024-10-29 11:21:04 +08:00
|
|
|
|
|
|
|
|
localparam DPS = 2**14;
|
|
|
|
|
|
|
|
|
|
reg [7:0] mem1 [0:200000];
|
|
|
|
|
initial begin
|
|
|
|
|
$readmemh("./tb/sw/build/slvTest.verilog", mem);
|
|
|
|
|
for ( i = 0; i < DP; i = i + 1 ) begin
|
2024-11-04 17:38:51 +08:00
|
|
|
`SLV0_SRAM[i][7:0] = | mem[i*4+0] ? mem[i*4+0]: 8'h0;
|
|
|
|
|
`SLV0_SRAM[i][15:8] = | mem[i*4+1] ? mem[i*4+1]: 8'h0;
|
|
|
|
|
`SLV0_SRAM[i][23:16] = | mem[i*4+2] ? mem[i*4+2]: 8'h0;
|
|
|
|
|
`SLV0_SRAM[i][31:24] = | mem[i*4+3] ? mem[i*4+3]: 8'h0;
|
|
|
|
|
|
|
|
|
|
`SLV1_SRAM[i][7:0] = | mem[i*4+0] ? mem[i*4+0]: 8'h0;
|
|
|
|
|
`SLV1_SRAM[i][15:8] = | mem[i*4+1] ? mem[i*4+1]: 8'h0;
|
|
|
|
|
`SLV1_SRAM[i][23:16] = | mem[i*4+2] ? mem[i*4+2]: 8'h0;
|
|
|
|
|
`SLV1_SRAM[i][31:24] = | mem[i*4+3] ? mem[i*4+3]: 8'h0;
|
|
|
|
|
|
|
|
|
|
`SLV2_SRAM[i][7:0] = | mem[i*4+0] ? mem[i*4+0]: 8'h0;
|
|
|
|
|
`SLV2_SRAM[i][15:8] = | mem[i*4+1] ? mem[i*4+1]: 8'h0;
|
|
|
|
|
`SLV2_SRAM[i][23:16] = | mem[i*4+2] ? mem[i*4+2]: 8'h0;
|
|
|
|
|
`SLV2_SRAM[i][31:24] = | mem[i*4+3] ? mem[i*4+3]: 8'h0;
|
|
|
|
|
|
|
|
|
|
`SLV3_SRAM[i][7:0] = | mem[i*4+0] ? mem[i*4+0]: 8'h0;
|
|
|
|
|
`SLV3_SRAM[i][15:8] = | mem[i*4+1] ? mem[i*4+1]: 8'h0;
|
|
|
|
|
`SLV3_SRAM[i][23:16] = | mem[i*4+2] ? mem[i*4+2]: 8'h0;
|
|
|
|
|
`SLV3_SRAM[i][31:24] = | mem[i*4+3] ? mem[i*4+3]: 8'h0;
|
2024-10-29 11:21:04 +08:00
|
|
|
// $display("ITCM %h: %h,%h", i*4,`SRAM_ODD.ram[i],`SRAM_EVE.ram[i]);
|
|
|
|
|
end
|
2024-10-25 17:46:21 +08:00
|
|
|
end
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-10-29 11:21:04 +08:00
|
|
|
|
2024-10-25 17:46:21 +08:00
|
|
|
initial
|
|
|
|
|
begin
|
|
|
|
|
$dumpfile("./build/wave.vcd"); //生成的vcd文件名称
|
|
|
|
|
$dumpvars(0, backSys_TB);//tb模块名称
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
endmodule
|
|
|
|
|
|