Add regression test for br_gh661 and test for correct $random behaviour.

This commit is contained in:
Martin Whitaker 2022-04-03 19:53:30 +01:00
parent 94e09ec473
commit 42de9e646a
7 changed files with 1101 additions and 0 deletions

1000
ivtest/gold/random.gold Normal file

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,40 @@
module test;
localparam NOM_COUNT = 1000;
localparam MIN_COUNT = NOM_COUNT - 200;
localparam MAX_COUNT = NOM_COUNT + 200;
integer histogram[255:0];
integer i;
reg [7:0] value;
reg failed;
initial begin
failed = 0;
for (i = 0; i < 256; i++) begin
histogram[i] = 0;
end
for (i = 0; i < 256*NOM_COUNT; i = i + 1) begin
value = $urandom_range(32'hffffffff, 32'h0) >> 24;
histogram[value] += 1;
end
for (i = 0; i < 256; i++) begin
if (histogram[i] < MIN_COUNT) begin
$display("Bin %3d count %0d", i, histogram[i]);
failed = 1;
end
if (histogram[i] > MAX_COUNT) begin
$display("Bin %3d count %0d", i, histogram[i]);
failed = 1;
end
end
if (failed)
$display("FAILED");
else
$display("PASSED");
end
endmodule

View File

@ -0,0 +1,45 @@
module test;
localparam NOM_COUNT = 1000;
localparam MIN_COUNT = NOM_COUNT - 200;
localparam MAX_COUNT = NOM_COUNT + 200;
integer histogram[255:0];
integer i;
reg [31:0] value;
reg failed;
initial begin
failed = 0;
for (i = 0; i < 256; i++) begin
histogram[i] = 0;
end
for (i = 0; i < 256*NOM_COUNT; i = i + 1) begin
value = $urandom_range(32'h1ff, 32'h100) - 32'h100;
if (value[31:8] != 0) begin
$display("Random value %h not in range", value + 32'h100);
$display("FAILED");
$finish(0);
end
histogram[value] += 1;
end
for (i = 0; i < 256; i++) begin
if (histogram[i] < MIN_COUNT) begin
$display("Bin %3d count %0d", i, histogram[i]);
failed = 1;
end
if (histogram[i] > MAX_COUNT) begin
$display("Bin %3d count %0d", i, histogram[i]);
failed = 1;
end
end
if (failed)
$display("FAILED");
else
$display("PASSED");
end
endmodule

11
ivtest/ivltests/random.v Normal file
View File

@ -0,0 +1,11 @@
module test;
integer i;
initial begin
for (i = 0; i < 1000; i++) begin
$display("%h", $random);
end
end
endmodule

View File

@ -207,6 +207,8 @@ br_gh540 normal,-g2009 ivltests
br_gh553 normal,-g2009 ivltests
br_gh556 normal,-g2009 ivltests
br_gh568 normal,-g2009 ivltests
br_gh661a normal,-g2009 ivltests
br_gh661b normal,-g2009 ivltests
br_ml20171017 normal,-g2009 ivltests
br_ml20180227 CE,-g2009 ivltests
br_ml20180309a normal,-g2009 ivltests

View File

@ -1435,6 +1435,7 @@ queue normal ivltests
queue_fail RE ivltests gold=queue_fail.gold
queue_stat normal ivltests gold=queue_stat.gold
ram16x1 normal ivltests # Sitting here for a long time?
random normal ivltests gold=random.gold
readmem-error normal ivltests gold=readmem-error.gold
readmem-invalid RE ivltests gold=readmem-invalid.gold
readmemb1 normal ivltests # basic $readmemb - uses readmemh1.dat

View File

@ -211,6 +211,8 @@ br1008 CE ivltests
br1019 CE ivltests
br_gh556 CE,-g2009 ivltests
br_gh632c CE ivltests
br_gh661a CE ivltests
br_gh661b CE ivltests
br_ml20171017 CE ivltests
genvar_scopes CE ivltests
meminit2 CE ivltests