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

204 lines
6.8 KiB
Systemverilog

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'h0000_1000);
REGFILE_CHECK(6'd1,32'h0000_1004);
REGFILE_CHECK(6'd1,32'h0000_1008);
REGFILE_CHECK(6'd1,32'h0000_100c);
REGFILE_CHECK(6'd2,32'h0000_1010);
REGFILE_CHECK(6'd2,32'h0000_1014);
REGFILE_CHECK(6'd2,32'h0000_1018);
REGFILE_CHECK(6'd2,32'h0000_101c);
REGFILE_CHECK(6'd3,32'h0000_1020);
REGFILE_CHECK(6'd3,32'h0000_1024);
REGFILE_CHECK(6'd3,32'h0000_1028);
REGFILE_CHECK(6'd3,32'h0000_102c);
REGFILE_CHECK(6'd4,32'h0000_1030);
REGFILE_CHECK(6'd4,32'h0000_1034);
REGFILE_CHECK(6'd4,32'h0000_1038);
REGFILE_CHECK(6'd4,32'h0000_103c);
REGFILE_CHECK(6'd5,32'h0000_1040);
REGFILE_CHECK(6'd5,32'h0000_1044);
REGFILE_CHECK(6'd5,32'h0000_1048);
REGFILE_CHECK(6'd5,32'h0000_104c);
REGFILE_CHECK(6'd6,32'h0000_1050);
REGFILE_CHECK(6'd6,32'h0000_1054);
REGFILE_CHECK(6'd6,32'h0000_1058);
REGFILE_CHECK(6'd6,32'h0000_105c);
REGFILE_CHECK(6'd7,32'h0000_1060);
REGFILE_CHECK(6'd7,32'h0000_1064);
REGFILE_CHECK(6'd7,32'h0000_1068);
REGFILE_CHECK(6'd7,32'h0000_106c);
REGFILE_CHECK(6'd8,32'h0000_1070);
REGFILE_CHECK(6'd8,32'h0000_1074);
REGFILE_CHECK(6'd8,32'h0000_1078);
REGFILE_CHECK(6'd8,32'h0000_107c);
REGFILE_CHECK(6'd9,32'h0000_1080);
REGFILE_CHECK(6'd9,32'h0000_1084);
REGFILE_CHECK(6'd9,32'h0000_1088);
REGFILE_CHECK(6'd9,32'h0000_108c);
REGFILE_CHECK(6'd10,32'h0000_1090);
REGFILE_CHECK(6'd10,32'h0000_1094);
REGFILE_CHECK(6'd10,32'h0000_1098);
REGFILE_CHECK(6'd10,32'h0000_109c);
REGFILE_CHECK(6'd11,32'h0000_10a0);
REGFILE_CHECK(6'd11,32'h0000_10a4);
REGFILE_CHECK(6'd11,32'h0000_10a8);
REGFILE_CHECK(6'd11,32'h0000_10ac);
REGFILE_CHECK(6'd12,32'h0000_10b0);
REGFILE_CHECK(6'd12,32'h0000_10b4);
REGFILE_CHECK(6'd12,32'h0000_10b8);
REGFILE_CHECK(6'd12,32'h0000_10bc);
REGFILE_CHECK(6'd13,32'h0000_10c0);
REGFILE_CHECK(6'd13,32'h0000_10c4);
REGFILE_CHECK(6'd13,32'h0000_10c8);
REGFILE_CHECK(6'd13,32'h0000_10cc);
REGFILE_CHECK(6'd14,32'h0000_10d0);
REGFILE_CHECK(6'd14,32'h0000_10d4);
REGFILE_CHECK(6'd14,32'h0000_10d8);
REGFILE_CHECK(6'd14,32'h0000_10dc);
REGFILE_CHECK(6'd15,32'h0000_10e0);
REGFILE_CHECK(6'd15,32'h0000_10e4);
REGFILE_CHECK(6'd15,32'h0000_10e8);
REGFILE_CHECK(6'd15,32'h0000_10ec);
REGFILE_CHECK(6'd16,32'h0000_10f0);
REGFILE_CHECK(6'd16,32'h0000_10f4);
REGFILE_CHECK(6'd16,32'h0000_10f8);
REGFILE_CHECK(6'd16,32'h0000_10fc);
REGFILE_CHECK(6'd17,32'h0000_1100);
REGFILE_CHECK(6'd17,32'h0000_1104);
REGFILE_CHECK(6'd17,32'h0000_1108);
REGFILE_CHECK(6'd17,32'h0000_110c);
REGFILE_CHECK(6'd18,32'h0000_1110);
REGFILE_CHECK(6'd18,32'h0000_1114);
REGFILE_CHECK(6'd18,32'h0000_1118);
REGFILE_CHECK(6'd18,32'h0000_111c);
REGFILE_CHECK(6'd19,32'h0000_1120);
REGFILE_CHECK(6'd19,32'h0000_1124);
REGFILE_CHECK(6'd19,32'h0000_1128);
REGFILE_CHECK(6'd19,32'h0000_112c);
REGFILE_CHECK(6'd20,32'h0000_1130);
REGFILE_CHECK(6'd20,32'h0000_1134);
REGFILE_CHECK(6'd20,32'h0000_1138);
REGFILE_CHECK(6'd20,32'h0000_113c);
REGFILE_CHECK(6'd21,32'h0000_1140);
REGFILE_CHECK(6'd21,32'h0000_1144);
REGFILE_CHECK(6'd21,32'h0000_1148);
REGFILE_CHECK(6'd21,32'h0000_114c);
REGFILE_CHECK(6'd22,32'h0000_1150);
REGFILE_CHECK(6'd22,32'h0000_1154);
REGFILE_CHECK(6'd22,32'h0000_1158);
REGFILE_CHECK(6'd22,32'h0000_115c);
REGFILE_CHECK(6'd23,32'h0000_1160);
REGFILE_CHECK(6'd23,32'h0000_1164);
REGFILE_CHECK(6'd23,32'h0000_1168);
REGFILE_CHECK(6'd23,32'h0000_116c);
REGFILE_CHECK(6'd24,32'h0000_1170);
REGFILE_CHECK(6'd24,32'h0000_1174);
REGFILE_CHECK(6'd24,32'h0000_1178);
REGFILE_CHECK(6'd24,32'h0000_117c);
REGFILE_CHECK(6'd25,32'h0000_1180);
REGFILE_CHECK(6'd25,32'h0000_1184);
REGFILE_CHECK(6'd25,32'h0000_1188);
REGFILE_CHECK(6'd25,32'h0000_118c);
REGFILE_CHECK(6'd26,32'h0000_1190);
REGFILE_CHECK(6'd26,32'h0000_1194);
REGFILE_CHECK(6'd26,32'h0000_1198);
REGFILE_CHECK(6'd26,32'h0000_119c);
REGFILE_CHECK(6'd27,32'h0000_11a0);
REGFILE_CHECK(6'd27,32'h0000_11a4);
REGFILE_CHECK(6'd27,32'h0000_11a8);
REGFILE_CHECK(6'd27,32'h0000_11ac);
REGFILE_CHECK(6'd28,32'h0000_11b0);
REGFILE_CHECK(6'd28,32'h0000_11b4);
REGFILE_CHECK(6'd28,32'h0000_11b8);
REGFILE_CHECK(6'd28,32'h0000_11bc);
REGFILE_CHECK(6'd29,32'h0000_11c0);
REGFILE_CHECK(6'd29,32'h0000_11c4);
REGFILE_CHECK(6'd29,32'h0000_11c8);
REGFILE_CHECK(6'd29,32'h0000_11cc);
REGFILE_CHECK(6'd30,32'h0000_11d0);
REGFILE_CHECK(6'd30,32'h0000_11d4);
REGFILE_CHECK(6'd30,32'h0000_11d8);
REGFILE_CHECK(6'd30,32'h0000_11dc);
REGFILE_CHECK(6'd31,32'h0000_11e0);
REGFILE_CHECK(6'd31,32'h0000_11e4);
REGFILE_CHECK(6'd31,32'h0000_11e8);
REGFILE_CHECK(6'd31,32'h0000_11ec);
#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