verilog中层次化的事件队列

所谓层次化的事件队列指的是用于调度仿真事件的不同的Verilog事件队列,在IEEE verilog标准中,层次化事件队列被看做一个概念模型。设计仿真工具的厂商如何来实现事件队列,关系到仿真器的效率,是技术秘诀。
在IEEE 1364-1995 Verilog标准的5.3节中定义了层次化事件队列在逻辑上分为用于当前仿真时间的4个不同的队列,和用于下一段仿真时间的若干个附件队列;
(1)动态事件队列
阻塞赋值
计算非阻塞赋值右边的表达式
连续赋值
执行$display命令
计算原语的输入和输出的变化

(2)停止运行的事件队列
#0 延时阻塞赋值

(3)非阻塞事件队列
更新非阻塞赋值语句左边的值

(4)监控事件队列
执行$monitor命令
执行$strobe命令

(5)其他指定的PLI命令队列
其他PLI命令
这五个就是Verilog的层次化事件队列

在IEEE标准范围内被加入到这些队列中的事件只能从动态事件队列中消除,而排列在其他队列中的事件要等到被激活后,即被排入动态事件队列中后,才能真正开始等待执行。

非阻塞赋值LHS变量的更新是安排在非阻塞事件队列中,而RHS表达式的计算是在某个仿真时刻随机开始的,与上述其他动态事件是一样的。

#0延时赋值是设计人员企图在不同的程序块中给同一个变量赋值。通过稍加延时赋值来消除Verilog可能产生的竞争冒险。这样做会使定时事件的分析变得更加复杂,完全可以用其他方法来代替,不推荐使用。

上一篇:10,verilog移位操作


下一篇:【Verilog】子模块连接相关问题