iverilog/ivtest/ivltests/pr1830834.v

27 lines
744 B
Verilog

// Here are two examples of $strobe failing. It appears that thread data
// is being cleaned up too soon for the $strobe to access it.
module test;
reg[4:0] j;
reg [5:0] in [1:0];
wire [5:0] out;
assign out = in[j]; // This uses the current j.
initial begin
in[1] = 6'b110001;
j = 1;
#1; // Need some delay for the calculations to run.
$display("out: %b, in[%0d] %b:", out, j, in[j]);
$display("out[3:0]: %b, in[%0d] %b:", out[j*1-1 +: 4], j, in[j]);
// in[j] is what is failing.
$strobe("out: %b, in[%0d] %b:", out, j, in[j]);
// out[j... is what is failing.
$strobe("out[3:0]: %b, in[%0d] %b:", out[j*1-1 +: 4], j, in[j]);
// #1; // Adding this will work around the bug.
end
endmodule