零延迟循环

Zero delay loop

当我们 运行 设计时,我们遇到了 "Zero Delay loop" 问题。 “零延迟循环”和

是什么意思
  1. 为什么会出现这个问题。
  2. 零延迟环路的原因是什么

模拟器一直在运行ning,还没有结束。

  1. 为什么会出现零延迟循环?

    由于竞争条件或不明确的编码风格,可能会生成零延迟循环,从而导致模拟挂起或无限模拟时间

  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
    

这里在xy都设置为1时有可能出现循环,由于事件同时触发,导致新的事件和触发case语句称为零延迟循环时间,以避免使用 #0 延迟强制事件在时间步结束时发生,但不推荐这种类型的编码风格

  1. 调试这个问题

根据我的理解,vcs 有一个名为 +vcs+loopreport 的开关,它将生成零延迟循环的详细报告并生成一个文本文件,您可以从中有效地消除或调试这些循环