当我们运行设计时,我们正在进行"零延迟循环"问题。 " 零延迟循环"是什么意思?和
模拟器一直在运行,但还没有完成。
答案 0 :(得分:2)
为什么发生零延迟循环?
由于竞争条件或模糊编码风格,可能会产生零延迟循环,导致模拟挂起或无限模拟时间
零延迟循环的原因是什么?
常见循环行为的一个示例如下:
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的开关,它会生成一个零延迟循环的详细报告,并生成一个文本文件,从中你可以有效地消除或调试这些循环