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