2013-09-11 11 views
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) 

ответ

1

Любого экземпляр модуля должен быть завернутый в «Модуль()».

Это только предположение, но дать этому попытку:

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

Причиной этого, IIRC, является то, что «модуль()» помогает Зубило понять происхождение проводов/объектов, созданных в кэше объект (по существу, толкает и выталкивает стек модуля при построении графика).

+0

К сожалению, все еще не работает, хотя сообщение об ошибке изменилось: [error] (run-main) java.util.NoSuchElementException: ключ не найден:/*? в классе Cache */Chisel.UInt (OUTPUT, width = 64, connect to 0 input:()) java.util.NoSuchElementException: ключ не найден:/*? в классе Cache */Chisel.UInt (OUTPUT, width = 64, connect to 0 input:()) –

+0

Этот вариант работает для меня: val cache_inst =() => Модуль (новый Cache (nways = 16, nsets = 32)) chiselMainTest (Array [String] («- backend», «c», «--genHarness»), cache_inst) {c => новые CacheTests (c)} Спасибо! –