forked from Github_Repos/cvw
busybear: change register file checking to only store register changed
this should make parsedRegs.txt much smaller
This commit is contained in:
parent
416b3fc96c
commit
ff88214730
@ -49,7 +49,8 @@ add wave /testbench_busybear/speculative
|
||||
add wave /testbench_busybear/lastPC2
|
||||
add wave -divider
|
||||
# registers!
|
||||
add wave -hex /testbench_busybear/rfExpected
|
||||
add wave -hex /testbench_busybear/regExpected
|
||||
add wave -hex /testbench_busybear/regNumExpected
|
||||
add wave -hex /testbench_busybear/HWRITE
|
||||
add wave -hex /testbench_busybear/dut/MemRWM[1]
|
||||
add wave -hex /testbench_busybear/HWDATA
|
||||
|
@ -93,32 +93,27 @@ module testbench_busybear();
|
||||
end
|
||||
end
|
||||
|
||||
logic [63:0] rfExpected[31:1];
|
||||
logic [63:0] pcExpected;
|
||||
// I apologize for this hack, I don't have a clue how to properly work with packed arrays
|
||||
logic [64*32:64] rf;
|
||||
logic [63:0] regExpected;
|
||||
integer regNumExpected;
|
||||
|
||||
genvar i;
|
||||
generate
|
||||
for(i=1; i<32; i++) begin
|
||||
assign rf[i*64+63:i*64] = dut.ieu.dp.regf.rf[i];
|
||||
end
|
||||
endgenerate
|
||||
|
||||
always @(rf) begin
|
||||
for(int j=1; j<32; j++) begin
|
||||
if($feof(data_file_rf)) begin
|
||||
$display("no more rf data to read");
|
||||
$stop;
|
||||
end
|
||||
// read 31 integer registers
|
||||
scan_file_rf = $fscanf(data_file_rf, "%x\n", rfExpected[j]);
|
||||
// check things!
|
||||
if (rf[j*64+63 -: 64] != rfExpected[j]) begin
|
||||
$display("%t ps, instr %0d: rf[%0d] does not equal rf expected: %x, %x", $time, instrs, j, rf[j*64+63 -: 64], rfExpected[j]);
|
||||
// $stop;
|
||||
for(i=1; i<32; i++) begin
|
||||
always @(dut.ieu.dp.regf.rf[i]) begin
|
||||
if ($time != 0) begin
|
||||
scan_file_rf = $fscanf(data_file_rf, "%d\n", regNumExpected);
|
||||
scan_file_rf = $fscanf(data_file_rf, "%x\n", regExpected);
|
||||
if (i != regNumExpected) begin
|
||||
$display("%t ps, instr %0d: wrong register changed: %0d, %0d expected", $time, instrs, i, regNumExpected);
|
||||
end
|
||||
if (dut.ieu.dp.regf.rf[i] != regExpected) begin
|
||||
$display("%t ps, instr %0d: rf[%0d] does not equal rf expected: %x, %x", $time, instrs, i, dut.ieu.dp.regf.rf[i], regExpected);
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
endgenerate
|
||||
|
||||
logic [`XLEN-1:0] readAdrExpected;
|
||||
// this might need to change
|
||||
|
Loading…
Reference in New Issue
Block a user