System verilog 利用iff限定符的verilog事件控制
此Systemverilog列出了利用iff限定符的有趣的始终块事件控制语句 我不明白@1和@2的前3个模拟结果:System verilog 利用iff限定符的verilog事件控制,system-verilog,System Verilog,此Systemverilog列出了利用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,
@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时,为什么reset会触发$display语句@1?
另外,为什么当rst变为1时,@2没有触发$display(用iff断言重置)?此时正在打印$display()
消息。当到达行时,模拟器调度程序执行$display()
消息。$monitor()
消息仅在时间步结束时打印。因此,在同一时间步内,$display()
消息将在$monitor()
消息之前打印。将$time
添加到$display
消息中,以帮助将其可视化
最后的重置被断言,没有iff
不是时间2的一部分,而是时间3的一部分。当时钟上升时
@3时钟1 rst 1启用x d 0 q 0闩锁x
“with iff”消息不显示,因为iff rst==0
屏蔽了posedge clk
在rst=0
。只有当iff
条件为真时,才能观察到posedge clk
请注意,
iff
是不可合成的,因此不要将其放在设计中。此功能用于验证和行为建模。谢谢。我的事情搞砸了。您的评论使我意识到前2$display()消息属于@2 timestep。这些$display()命令在活动事件区域中打印,而$monitor()在延迟的事件区域(@2 simulation timestep的末尾)执行。一些插入良好的换行符可以更容易地可视化哪些显示语句属于哪个时间步。