在那篇很流行的阻塞和非阻塞赋值论文中,有这样一个例子
例:采用非阻塞赋值的自触发振荡器
module osc2(clk);
output clk;
reg clk;
initial #10 clk=0;
always @(clk) #10 clk<=~clk;
endmodule
@(clk)的第一次触发之后,非阻塞赋值的RHS表达式便计算出来,并把值赋给LHS的时间并安排在更新事件队列中。在非阻塞赋值更新事件队列被激活之前,又遇到了@(clk)触发语句,并且always块再次对clk的值变化产生反应。当非阻塞LHS的值在同一时刻被更新时,@(clk)再一次触发。
问题:红色那一部分怎么理解?非阻塞赋值更新事件队列还没有发生,也就是clk还没有变化,它怎么又遇到@(clk)触发语句呢?谢谢。 |