Verilog的分层事件队列

仿真器首先按照仿真时间对事件进行排序,然后再在当前仿真时间里按照事件的优先级顺序进行排序。

活跃事件是优先级最高的时间,在活跃事件之间,它们的执行顺序是随机的。

两个缩写:RHS(right-hand-side) 和LHS(left-hand-side)。

前者指等式右边的表达式或者变量(RHS expression or RHS variable),后者指等式左边的表达式或者变量(LHS expression or LHS variable)。

由上表可知,阻塞赋值属于活跃事件,会立刻执行,这就是阻塞赋值“计算完毕,立即更新”的原因。此外,由于在分层事件队列中,只有将活跃事件中排在前面的事件调出,并执行完毕后,才能够执行下面的事件,这就可以解释阻塞赋值的第二个特点。

同样由上表可知,非阻塞赋值的RHS计算属于活跃事件,而非阻塞赋值的更新事件排在非活跃事件之后,因此只有仿真队列中所有的活跃事件和非活跃事件都执行完毕后,才轮到非阻塞赋值更新事件,这就是非阻塞赋值必须分两拍完成的原因。

阻塞赋值特点:

1、RHS的表达式计算和LHS的赋值更新,这两个动作之间不能插入其他动作,即所谓计算完毕,立即更新。

2、所谓阻塞赋值就是在一个”begin…end”块中的多个阻塞赋值语句,只有上一句完全执行完毕后,才会执行下一语句。

非阻塞赋值()程序的执行:

非阻塞赋值,RHS的计算表达式和LHS的赋值更新分两个节拍执行。首先,应该是RHS表达式计算,得到新值后并不立即赋值,而是放在事件队列中等待,直到当前仿真时刻的后期才执行。

posted @ 2016-06-30 15:44  冷冷北极  阅读(2740)  评论(0编辑  收藏  举报