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