禁用firrtl通过检查组合循环



有没有办法禁用checkcombloops firrtl通行证?(这些循环是错误的。(如果可能的话,我想在测试器驱动程序中执行此操作。我看到了FIRRTL Inteptreter的选项,但是在FIRRTL运行期间,我仍然有例外。我也希望能够将VC用作后端。

class LazyStackNWait2Test extends FlatSpec with Matchers {
  behavior of "LazyStackNWait2"
  it should "work" in {
    chisel3.iotesters.Driver.execute( Array( "--fr-allow-cycles", "--backend-name", "firrtl"), () => new LazyStackN(10, () => new LazyStackWait2)) { c =>
      new LazyStackNTester( c)
    } should be ( true)
  }
}

这是日志的一部分:

[info] [1.057] Done elaborating.
[info] - should work *** FAILED ***
[info]   firrtl.passes.PassExceptions: 
firrtl.passes.CheckCombLoops$CombLoopException:  @[:@5437.2]: [module LazyStackN] Combinational loop detected:

构建来自最新的github头。

编辑:现在通过--no-check-comb-loops支持这一点。相关pr

当前没有一种方法,但是我创建了一个添加此功能的问题,并且它不应该这样做很难。https://github.com/ucb-bar/firrtl/issues/600

出于好奇,您看到什么样的错误组合循环?我们发现它们非常罕见*,通常很容易解决,因此,如果您有任何例子可以分享,我将非常感谢。

*例如,如果聚集体被铸成位并返回(例如,例如通过chisel3.util.mux1h(,它们通常会发生在子元素之间具有依赖性的聚合类型。只是试图查看其他常见的使用模式会导致错误的循环。

最新更新