零延迟循环
Zero delay loop
当我们 运行 设计时,我们遇到了 "Zero Delay loop" 问题。
“零延迟循环”和
是什么意思
- 为什么会出现这个问题。
- 零延迟环路的原因是什么
模拟器一直在运行ning,还没有结束。
为什么会出现零延迟循环?
由于竞争条件或不明确的编码风格,可能会生成零延迟循环,从而导致模拟挂起或无限模拟时间
零延迟循环的原因是什么?
常见循环行为的一个示例如下:
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时有可能出现循环,由于事件同时触发,导致新的事件和触发case语句称为零延迟循环时间,以避免使用 #0 延迟强制事件在时间步结束时发生,但不推荐这种类型的编码风格
- 调试这个问题
根据我的理解,vcs 有一个名为 +vcs+loopreport 的开关,它将生成零延迟循环的详细报告并生成一个文本文件,您可以从中有效地消除或调试这些循环
当我们 运行 设计时,我们遇到了 "Zero Delay loop" 问题。 “零延迟循环”和
是什么意思- 为什么会出现这个问题。
- 零延迟环路的原因是什么
模拟器一直在运行ning,还没有结束。
为什么会出现零延迟循环?
由于竞争条件或不明确的编码风格,可能会生成零延迟循环,从而导致模拟挂起或无限模拟时间
零延迟循环的原因是什么?
常见循环行为的一个示例如下:
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时有可能出现循环,由于事件同时触发,导致新的事件和触发case语句称为零延迟循环时间,以避免使用 #0 延迟强制事件在时间步结束时发生,但不推荐这种类型的编码风格
- 调试这个问题
根据我的理解,vcs 有一个名为 +vcs+loopreport 的开关,它将生成零延迟循环的详细报告并生成一个文本文件,您可以从中有效地消除或调试这些循环