此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
答案 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 !=0
。 posedge clk
仅在iff
条件为真时才能被观察到。
请注意iff
不可合成,因此请勿将其置于设计中。该功能用于验证和行为建模。