当我们运行设计时,我们遇到了“零延迟循环”问题。 “零延迟循环”和
是什么意思- 为何会出现此问题。
- 造成零延迟环路的原因有哪些。
模拟器正在持续运行,但尚未完成。
最佳答案
为什么会出现零延迟环路?
由于竞争条件或不明确的编码风格,可能会生成零延迟循环,从而导致模拟挂起或无限的模拟时间
造成零延迟环路的原因是什么?
常见循环行为的一个示例如下:
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 的开关,它将生成零延迟循环的详细报告并生成一个文本文件,从中您可以有效地消除或调试这些循环
关于verilog - 零延迟环路,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29892097/