【发布时间】:2015-04-27 09:39:04
【问题描述】:
当我们运行设计时,我们遇到了“零延迟循环”问题。 “零延迟循环”和
是什么意思- 为什么会出现这个问题。
- 零延迟循环的原因是什么。
模拟器一直在运行,还没有结束。
【问题讨论】:
标签: verilog simulation
当我们运行设计时,我们遇到了“零延迟循环”问题。 “零延迟循环”和
是什么意思模拟器一直在运行,还没有结束。
【问题讨论】:
标签: verilog simulation
为什么会发生零延迟循环?
由于竞争条件或不明确的编码风格,可能会生成零延迟循环,从而导致模拟挂起或无限模拟时间
零延迟循环的原因是什么?
一个常见的循环行为示例如下:
always @ (x)
begin
y = 1'b0;
...
case (x)
...
1'b1: y = 1'b1;
...
endcase
end
always @ (y)
begin
x = 1'b0;
...
case (y)
...
1'b1: x = 1'b1;
...
endcase
end
这里x和y都设置为1时可能会出现循环,这会导致新的事件和触发案例语句由于同时触发事件而称为零延迟循环,以避免使用# 0 延迟,强制事件在时间步结束时发生,但不推荐这种类型的编码风格
据我了解,vcs 有一个名为 +vcs+loopreport 的开关,它将生成零延迟循环的详细报告并生成文本文件,从中您可以有效地消除或调试这些循环
【讨论】: