使用iff限定符的verilog事件控制

时间:2014-01-27 09:35:18

标签: system-verilog

此Systemverilog tutorial列出了使用iff限定符的有趣的始终阻止事件控制语句。

我不理解@ 1和@ 2的前3个模拟结果:

@0 clk 0 rst 0 enable x d x q x latch x
@1 clk 1 rst 0 enable x d 0 q 0 latch x
Reset is asserted with iff
Reset is asserted, no iff
@2 clk 0 rst 1 enable x d 0 q 0 latch x
Reset is asserted, no iff

也就是说,为什么重置会在没有posedge rst的情况下触发$ display语句@ 1? 另外,当rst变为1时,为什么不显示$ display(使用iff置位复位)触发@ 2

1 个答案:

答案 0 :(得分:0)

正在$display()时间打印@2条消息。当到达行时,模拟器调度程序执行$display()消息。 $monitor()消息仅在时间步骤结束时打印。因此,在同一时间步骤中,$display()消息将在$monitor()消息之前打印。将$time添加到$display消息,以帮助您查看此消息。

最终Reset is asserted, no iff不是时间2的一部分,而是时间3.当时钟上升时。

  

@3 clk 1 rst 1 enable x d 0 q 0 latch x

不显示“with iff”消息,因为iff rst == 0会在posedge clk时屏蔽rst !=0posedge clk仅在iff条件为真时才能被观察到。

请注意iff不可合成,因此请勿将其置于设计中。该功能用于验证和行为建模。