有没有办法禁用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(,它们通常会发生在子元素之间具有依赖性的聚合类型。只是试图查看其他常见的使用模式会导致错误的循环。