46 lines
940 B
Verilog
46 lines
940 B
Verilog
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
|