零延迟循环

时间:2015-04-27 09:39:04

标签: verilog simulation

当我们运行设计时,我们正在进行"零延迟循环"问题。 " 零延迟循环"是什么意思?和

  1. 为什么会出现此问题。
  2. 零延迟循环的原因是什么。
  3. 模拟器一直在运行,但还没有完成。

1 个答案:

答案 0 :(得分:2)

  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
    
  3. 在这里,当xy都设置为1时,有可能出现循环,这会导致新事件和触发器语句被称为零延迟循环,因为同时触发事件,避免使用#0延迟强制事件在时间步骤结束时发生,但不推荐这种类型的编码风格

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