2

这个凿子代码工作正常:

chiselMainTest(Array[String]("--backend", "c", "--genHarness"), () => Module( new Cache(nways = 16, nsets = 32)  )){c => new CacheTests(c)}

然而,这个 - 一个小的变化 - 会产生运行时错误:

val cache_inst = new Cache(nways = 16, nsets = 32)
chiselMainTest(Array[String]("--backend", "c", "--genHarness"), () => Module(cache_inst)){c => new CacheTests(c)}


[error] (run-main) java.util.NoSuchElementException: head of empty list
java.util.NoSuchElementException: head of empty list
    at scala.collection.immutable.Nil$.head(List.scala:337)
    at scala.collection.immutable.Nil$.head(List.scala:334)
4

1 回答 1

1

模块的任何实例都必须用“Module()”包装。

这只是一个猜测,但请尝试一下:

val cache_inst = Module(new Cache(nways = 16, nsets = 32))
ChiselMainTest(.....),() => (cache_inst){....}

IIRC,这样做的原因是“Module()”帮助 Chisel 了解在 Cache 对象中创建的线/对象的父级(本质上是在构建图形时推送和弹出模块堆栈)。

于 2013-09-12T11:40:28.327 回答