iverilog/ivtest/ivltests/pr1675789b.v

38 lines
921 B
Verilog

module main;
parameter WORD_WID = 3;
parameter WORD_CNT = 8;
reg [WORD_WID-1: 0] mem [0:WORD_CNT-1], tmp;
integer idx, jdx;
initial begin
for (idx = 0 ; idx < WORD_CNT ; idx = idx+1)
mem[idx] = idx;
for (idx = 0 ; idx < WORD_CNT ; idx = idx+1) begin
tmp = idx;
if (mem[idx][2:1] !== tmp[2:1]) begin
$display("FAILED -= mem[%d][2:1]=%b, tmp[2:1]=%b",
idx, mem[idx][2:1], tmp[2:1]);
$finish;
end
if (mem[idx][1:0] !== tmp[1:0]) begin
$display("FAILED -= mem[%d][1:0]=%b, tmp[1:0]=%b",
idx, mem[idx][1:0], tmp[1:0]);
$finish;
end
for (jdx = 0 ; jdx < WORD_WID ; jdx = jdx+1)
if (mem[idx][jdx +:2] !== tmp[jdx +:2]) begin
$display("FAILED -- mem[%d][%d +:2]=%b, tmp[%d +:2]=%b",
idx, jdx, mem[idx][jdx+:2], jdx, tmp[jdx+:2]);
$finish;
end
end
$display("PASSED");
end
endmodule // main