iverilog/ivtest/ivltests/wait3.v

57 lines
799 B
Verilog

/*
* this test attempts to show a problem with the waits. This skip
* and skip2 modules should have identical behavior.
*/
module skip(r,a);
input r;
output a;
wire r;
reg a;
initial
a=0;
always begin
wait(r);
#1 a=1;
wait(!r);
#1 a=0;
end
endmodule
module skip2(r,a);
input r;
output a;
wire r;
reg a;
initial
a=0;
always @ (r or a) begin
case ({r,a})
00: ; // idle
10: #1 a=1;
11: ; // idle
01: #1 a=0;
endcase
end
endmodule
module test;
reg r1;
wire a1;
reg clk;
// skip2 skip1(r1,a1); // simulates as expected
skip skip1(r1,a1); // simulation hangs
always #50 clk= !clk;
initial begin
$monitor($time," ",r1,a1);
$display("starting");
#100 r1=0;
#100 r1=1;
wait(a1);
#100 r1=0;
#1000 $display("timeout"); $finish(0);
end
endmodule