Ошибка времени выполнения Chisel в тестовой обвязке

Этот код 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)

person Alexander Samoilov    schedule 11.09.2013    source источник


Ответы (1)


Любой экземпляр модуля должен быть обернут с помощью «Module()».

Это всего лишь предположение, но попробуйте:

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

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

person Chris    schedule 12.09.2013
comment
К сожалению, по-прежнему не работает, хотя сообщение об ошибке изменилось: [ошибка] (run-main) java.util.NoSuchElementException: ключ не найден: /*? в классе Cache*/ Chisel.UInt(OUTPUT, width=64, подключиться к 0 входам: ()) java.util.NoSuchElementException: ключ не найден: /*? в классе Cache*/ Chisel.UInt(OUTPUT, width=64, подключение к 0 входам: ()) - person Alexander Samoilov; 12.09.2013
comment
У меня работает такой вариант: val cache_inst = () => Module(new Cache(nways = 16, nsets = 32)) chiselMainTest(Array[String](--backend, c, --genHarness), cache_inst ){c = › новые CacheTests(c)} Спасибо! - person Alexander Samoilov; 12.09.2013