1 module test(); 2 reg a; 3 reg b; 4 reg c; 5 initial begin 6 a=1'b0; 7 b=1'b0; 8 c=1'b1; 9 10 #10 11 a=1'b1; 12 b=#5 1'b1; 13 c=1'b0; 14 //b=#5 1'b0; 15 16 #5 17 a<=1'b0; 18 c<=#2 1'b1; 19 end 20 endmodule
1 module test(); 2 reg a; 3 reg b; 4 reg c; 5 initial begin 6 a=1'b0; 7 b=1'b0; 8 c=1'b1; 9 10 #10 11 a=1'b1; 12 b<=#5 1'b1; 13 c=1'b0; 14 //b=#5 1'b0; 15 16 #5 17 a<=1'b0; 18 c<=#2 1'b1; 19 end 20 endmodule
1 module test(); 2 reg a; 3 reg b; 4 reg c; 5 initial 6 begin 7 a=1'b0; 8 b=1'b0; 9 c=1'b1; 10 11 #10 12 a=1'b1; 13 b<=#5 1'b1; 14 c=1'b0; 15 b=#5 1'b0; 16 17 #5 18 a<=1'b0; 19 c<=#2 1'b1; 20 end 21 endmodule
以上三个例子都是在说明,对于内延时,<=对其后语句没有影响,而=使其后语句延迟若干个单位。
1 `timescale 10ns/ 1ns 2 module test(); 3 reg a; 4 reg b; 5 reg c; 6 reg d; 7 initial begin 8 a<=1; 9 c<=1; 10 end 11 initial begin 12 #5 a=0; 13 b=a; 14 end 15 initial begin 16 #5 c<=0; 17 d<=c; 18 end 19 endmodule
此时,不同的initial模块都在0时刻激活。在第一个initial语句,在时刻0,a和c均被赋值1,在第二个initial语句中,在时刻5,a被阻塞赋值0,在同一时刻,b被赋值a。而在第三个initial语句中,同样在时刻5 c被非阻塞赋值赋值0,在同一时刻d被非阻塞性赋值为之前c的值。