iverilog/ivtest/ivltests/br963.v

41 lines
880 B
Verilog

// Regression test for br962 - based on test case provided in bug report
module qtest;
parameter width = 32;
parameter depth = 32;
reg [width-1:0] values[$];
reg [$clog2(depth)+width-1:0] sum1;
reg [$clog2(depth)+width-1:0] sum2;
task new_sample;
input [width-1:0] data;
int i;
begin
reg [width-1:0] popped;
if (values.size >= depth)
begin : foo
popped = values.pop_back();
sum1 = sum1 - popped;
end
sum1 = sum1 + data;
values.push_front(data);
sum2 = 0;
for (i = 0; i < values.size; i++) begin
sum2 = sum2 + values[i];
end
$display("sum1 = %d sum2 = %d", sum1, sum2);
if (sum1 !== sum2) begin
$display("FAILED");
$finish;
end
end
endtask
initial begin
sum1 = 0;
repeat (2*depth) new_sample({$random});
$display("PASSED");
end
endmodule