SPI_Test/tb/qumcu/isa/case/Auipc_0xfffff_test/user.sv

204 lines
6.9 KiB
Systemverilog
Raw Normal View History

2024-06-25 16:41:01 +08:00
wire ram_clk = `TB.U_CHIP_TOP.U_DTCM.U_tsmc_dpram.dpram_32X4096_generation.U0_TSDN28HPCPUHDB4096X32M4MWR.CLK;
wire ram_cs = `TB.U_CHIP_TOP.U_DTCM.U_tsmc_dpram.dpram_32X4096_generation.U0_TSDN28HPCPUHDB4096X32M4MWR.CEBA;
wire reg_clk = tbtop.U_CHIP_TOP.U_qbmcu.U_qbmcu_regfile.clk;
wire reg_en = tbtop.U_CHIP_TOP.U_qbmcu.U_qbmcu_regfile.wbck_dest_wen;
reg ram_cs_dly1 ;
reg reg_en_dly1 ;
always @(posedge ram_clk) begin
ram_cs_dly1 <= ~ram_cs;
reg_en_dly1 <= reg_en;
end
initial begin
#1ns;
//@(posedge ram_cs_dly1 );
#5ns;
//while(1)begin
#1ns;
//@(posedge reg_en_dly1 );
REGFILE_CHECK(6'd1 ,32'hffff_f000);
REGFILE_CHECK(6'd1 ,32'hffff_f004);
REGFILE_CHECK(6'd1 ,32'hffff_f008);
REGFILE_CHECK(6'd1 ,32'hffff_f00c);
REGFILE_CHECK(6'd2 ,32'hffff_f010);
REGFILE_CHECK(6'd2 ,32'hffff_f014);
REGFILE_CHECK(6'd2 ,32'hffff_f018);
REGFILE_CHECK(6'd2 ,32'hffff_f01c);
REGFILE_CHECK(6'd3 ,32'hffff_f020);
REGFILE_CHECK(6'd3 ,32'hffff_f024);
REGFILE_CHECK(6'd3 ,32'hffff_f028);
REGFILE_CHECK(6'd3 ,32'hffff_f02c);
REGFILE_CHECK(6'd4 ,32'hffff_f030);
REGFILE_CHECK(6'd4 ,32'hffff_f034);
REGFILE_CHECK(6'd4 ,32'hffff_f038);
REGFILE_CHECK(6'd4 ,32'hffff_f03c);
REGFILE_CHECK(6'd5 ,32'hffff_f040);
REGFILE_CHECK(6'd5 ,32'hffff_f044);
REGFILE_CHECK(6'd5 ,32'hffff_f048);
REGFILE_CHECK(6'd5 ,32'hffff_f04c);
REGFILE_CHECK(6'd6 ,32'hffff_f050);
REGFILE_CHECK(6'd6 ,32'hffff_f054);
REGFILE_CHECK(6'd6 ,32'hffff_f058);
REGFILE_CHECK(6'd6 ,32'hffff_f05c);
REGFILE_CHECK(6'd7 ,32'hffff_f060);
REGFILE_CHECK(6'd7 ,32'hffff_f064);
REGFILE_CHECK(6'd7 ,32'hffff_f068);
REGFILE_CHECK(6'd7 ,32'hffff_f06c);
REGFILE_CHECK(6'd8 ,32'hffff_f070);
REGFILE_CHECK(6'd8 ,32'hffff_f074);
REGFILE_CHECK(6'd8 ,32'hffff_f078);
REGFILE_CHECK(6'd8 ,32'hffff_f07c);
REGFILE_CHECK(6'd9 ,32'hffff_f080);
REGFILE_CHECK(6'd9 ,32'hffff_f084);
REGFILE_CHECK(6'd9 ,32'hffff_f088);
REGFILE_CHECK(6'd9 ,32'hffff_f08c);
REGFILE_CHECK(6'd10,32'hffff_f090);
REGFILE_CHECK(6'd10,32'hffff_f094);
REGFILE_CHECK(6'd10,32'hffff_f098);
REGFILE_CHECK(6'd10,32'hffff_f09c);
REGFILE_CHECK(6'd11,32'hffff_f0a0);
REGFILE_CHECK(6'd11,32'hffff_f0a4);
REGFILE_CHECK(6'd11,32'hffff_f0a8);
REGFILE_CHECK(6'd11,32'hffff_f0ac);
REGFILE_CHECK(6'd12,32'hffff_f0b0);
REGFILE_CHECK(6'd12,32'hffff_f0b4);
REGFILE_CHECK(6'd12,32'hffff_f0b8);
REGFILE_CHECK(6'd12,32'hffff_f0bc);
REGFILE_CHECK(6'd13,32'hffff_f0c0);
REGFILE_CHECK(6'd13,32'hffff_f0c4);
REGFILE_CHECK(6'd13,32'hffff_f0c8);
REGFILE_CHECK(6'd13,32'hffff_f0cc);
REGFILE_CHECK(6'd14,32'hffff_f0d0);
REGFILE_CHECK(6'd14,32'hffff_f0d4);
REGFILE_CHECK(6'd14,32'hffff_f0d8);
REGFILE_CHECK(6'd14,32'hffff_f0dc);
REGFILE_CHECK(6'd15,32'hffff_f0e0);
REGFILE_CHECK(6'd15,32'hffff_f0e4);
REGFILE_CHECK(6'd15,32'hffff_f0e8);
REGFILE_CHECK(6'd15,32'hffff_f0ec);
REGFILE_CHECK(6'd16,32'hffff_f0f0);
REGFILE_CHECK(6'd16,32'hffff_f0f4);
REGFILE_CHECK(6'd16,32'hffff_f0f8);
REGFILE_CHECK(6'd16,32'hffff_f0fc);
REGFILE_CHECK(6'd17,32'hffff_f100);
REGFILE_CHECK(6'd17,32'hffff_f104);
REGFILE_CHECK(6'd17,32'hffff_f108);
REGFILE_CHECK(6'd17,32'hffff_f10c);
REGFILE_CHECK(6'd18,32'hffff_f110);
REGFILE_CHECK(6'd18,32'hffff_f114);
REGFILE_CHECK(6'd18,32'hffff_f118);
REGFILE_CHECK(6'd18,32'hffff_f11c);
REGFILE_CHECK(6'd19,32'hffff_f120);
REGFILE_CHECK(6'd19,32'hffff_f124);
REGFILE_CHECK(6'd19,32'hffff_f128);
REGFILE_CHECK(6'd19,32'hffff_f12c);
REGFILE_CHECK(6'd20,32'hffff_f130);
REGFILE_CHECK(6'd20,32'hffff_f134);
REGFILE_CHECK(6'd20,32'hffff_f138);
REGFILE_CHECK(6'd20,32'hffff_f13c);
REGFILE_CHECK(6'd21,32'hffff_f140);
REGFILE_CHECK(6'd21,32'hffff_f144);
REGFILE_CHECK(6'd21,32'hffff_f148);
REGFILE_CHECK(6'd21,32'hffff_f14c);
REGFILE_CHECK(6'd22,32'hffff_f150);
REGFILE_CHECK(6'd22,32'hffff_f154);
REGFILE_CHECK(6'd22,32'hffff_f158);
REGFILE_CHECK(6'd22,32'hffff_f15c);
REGFILE_CHECK(6'd23,32'hffff_f160);
REGFILE_CHECK(6'd23,32'hffff_f164);
REGFILE_CHECK(6'd23,32'hffff_f168);
REGFILE_CHECK(6'd23,32'hffff_f16c);
REGFILE_CHECK(6'd24,32'hffff_f170);
REGFILE_CHECK(6'd24,32'hffff_f174);
REGFILE_CHECK(6'd24,32'hffff_f178);
REGFILE_CHECK(6'd24,32'hffff_f17c);
REGFILE_CHECK(6'd25,32'hffff_f180);
REGFILE_CHECK(6'd25,32'hffff_f184);
REGFILE_CHECK(6'd25,32'hffff_f188);
REGFILE_CHECK(6'd25,32'hffff_f18c);
REGFILE_CHECK(6'd26,32'hffff_f190);
REGFILE_CHECK(6'd26,32'hffff_f194);
REGFILE_CHECK(6'd26,32'hffff_f198);
REGFILE_CHECK(6'd26,32'hffff_f19c);
REGFILE_CHECK(6'd27,32'hffff_f1a0);
REGFILE_CHECK(6'd27,32'hffff_f1a4);
REGFILE_CHECK(6'd27,32'hffff_f1a8);
REGFILE_CHECK(6'd27,32'hffff_f1ac);
REGFILE_CHECK(6'd28,32'hffff_f1b0);
REGFILE_CHECK(6'd28,32'hffff_f1b4);
REGFILE_CHECK(6'd28,32'hffff_f1b8);
REGFILE_CHECK(6'd28,32'hffff_f1bc);
REGFILE_CHECK(6'd29,32'hffff_f1c0);
REGFILE_CHECK(6'd29,32'hffff_f1c4);
REGFILE_CHECK(6'd29,32'hffff_f1c8);
REGFILE_CHECK(6'd29,32'hffff_f1cc);
REGFILE_CHECK(6'd30,32'hffff_f1d0);
REGFILE_CHECK(6'd30,32'hffff_f1d4);
REGFILE_CHECK(6'd30,32'hffff_f1d8);
REGFILE_CHECK(6'd30,32'hffff_f1dc);
REGFILE_CHECK(6'd31,32'hffff_f1e0);
REGFILE_CHECK(6'd31,32'hffff_f1e4);
REGFILE_CHECK(6'd31,32'hffff_f1e8);
REGFILE_CHECK(6'd31,32'hffff_f1ec);
#10us;
TEST_PASS;
end
task DRAM_DATA_CHECK;
input [9:0] addr ;
input [31:0] edata ;
logic [31:0] ram_data;
@(posedge ram_cs_dly1 );
@(posedge ram_clk );
//$monitor($time, " Simulation time: %t", $time);
if(ram_cs_dly1) begin
ram_data = `TB_DRAM.mem[addr];
//$display("* RAM_DATA[%x]: %x | EXP_DATA: %x ",addr,ram_data, edata);
if(ram_data !== edata) begin
$display("* RAM_DATA[%x]: %x | EXP_DATA: %x => Error!!!",addr,ram_data, edata);
#1us;
TEST_FAIL;
end
$display("* RAM_DATA[%x]: %x | EXP_DATA: %x => OK!!!",addr, ram_data, edata);
end
else begin
$display("* DRAM CS is High => Error!!!");
TEST_FAIL;
end
endtask
task REGFILE_CHECK;
input [4:0] addr ;
input [31:0] edata ;
logic [31:0] reg_data;
@(posedge reg_en );
@(posedge reg_clk);
if(reg_en)begin
reg_data = tbtop.U_CHIP_TOP.U_qbmcu.U_qbmcu_regfile.wbck_dest_dat;
if(reg_data !== edata) begin
$display("* REG_DATA[%x]: %x | EXP_DATA: %x => Error!!!",addr,reg_data, edata);
#1us;
//TEST_FAIL;
end
$display("* REG_DATA[%x]: %x | EXP_DATA: %x => OK!!!",addr, reg_data, edata);
end
else begin
$display("* REG WR EN is High => Error!!!");
//TEST_FAIL;
end
endtask
initial begin
#100us;
$display("\n----------------------------------------\n");
$display("\t Timeout Error !!!!\n");
TEST_FAIL;
end