iverilog/ivtest/ivltests/pr1623097.v

66 lines
779 B
Verilog

/* pr1623097 */
`timescale 1ns/1ns
module top;
reg [3:0] state;
reg [3:0] data;
reg [3:0] clear;
reg clk;
genvar i;
initial begin
#0; // avoid time-0 race
clk = 0; data = 4'b1111; clear = 4'b1111;
$monitor($time,,"clk=%b, data=%b, clear=%b, state=%b",
clk, data, clear, state);
#10 clear = 4'b0000;
#10 clk = 1;
#10 clk = 0; clear = 4'b0010;
#10 clear = 4'b0000; data = 4'b1010;
#10 clk = 1;
#10 clk = 0;
end
// This fails!
generate for (i=0; i<4; i=i+1) begin:sm
always @(posedge clk or posedge clear[i]) begin
if (clear[i]) state[i] <= 1'b0; // Async. clear the flip bit.
else begin
state[i] <= #1 data[i];
end
end
end endgenerate
endmodule