iverilog/ivtest/ivltests/br_gh112c.v

57 lines
1.2 KiB
Coq
Raw Normal View History

`ifdef __ICARUS__
`define SUPPORT_CONST_OUT_OF_RANGE_IN_IVTEST
`endif
module bug();
reg [2:1][16:1][8:1] array;
reg failed = 0;
integer i;
reg [3:0] index;
initial begin
i = $bits(array);
$display("width 0 = %0d", i);
if (i !== 256) failed = 1;
`ifdef SUPPORT_CONST_OUT_OF_RANGE_IN_IVTEST
i = $bits(array[0]);
`else
i = $bits(array[1]);
`endif
$display("width 1 = %0d", i);
if (i !== 128) failed = 1;
`ifdef SUPPORT_CONST_OUT_OF_RANGE_IN_IVTEST
i = $bits(array[0][0]);
`else
i = $bits(array[1][1]);
`endif
$display("width 2 = %0d", i);
if (i !== 8) failed = 1;
for (i = 0; i < 16; i++) begin
index = i[3:0];
array[1][5'd1+index] = {4'd0, index};
array[2][5'd1+index] = {4'd1, index};
end
$display("%h", array);
if (array !== 256'h1f1e1d1c1b1a191817161514131211100f0e0d0c0b0a09080706050403020100)
failed = 1;
for (i = 0; i < 16; i++) begin
index = i[3:0];
$display("%h : %h %h", index, array[1][5'd1+index], array[2][5'd1+index]);
if (array[1][5'd1+index] !== {4'd0, index}) failed = 1;
if (array[2][5'd1+index] !== {4'd1, index}) failed = 1;
end
if (failed)
$display("FAILED");
else
$display("PASSED");
end
endmodule