Verilog的分层事件队列
Posted 宁静致远
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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表达式计算,得到新值后并不立即赋值,而是放在事件队列中等待,直到当前仿真时刻的后期才执行。
以上是关于Verilog的分层事件队列的主要内容,如果未能解决你的问题,请参考以下文章
Verilog学习笔记设计和验证篇...............层次化事件队列
cadence netlister si 可以生成扁平的verilog 网表吗?