2

このChiselコードは問題なく動作します:

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 が理解するのに役立つためです (基本的に、グラフが構築されるときにモジュール スタックをプッシュおよびポップします)。

于 2013-09-12T11:40:28.327 に答える