¿Qué significa `vec type ‘AnonymousBundle(IO io en )’ debe ser un tipo Chisel y no hardware`?
La siguiente línea de código val mod_subexp_array = Vec(9, Module(new SubTaylor(fepar)).io)
produce el siguiente error:
chisel3.package$ExpectedChiselTypeException: vec type 'AnonymousBundle(IO io in SubTaylor)' must be a Chisel type, not hardware
El módulo SubTaylor
es un módulo que he escrito y me interfaz con él a través de un puerto IO. Mi objetivo es crear 9 instancias de estos módulos SubTaylor y encadenarlos utilizando sus IOs. Para resolver el problema anterior, pensé que tal vez el módulo SubTaylor necesitaba estar envuelto dentro de un Wire:
val mod_subexp_array = Vec(9, Wire(Module(new SubTaylor(fepar))).io)
Sin embargo, el mensaje de error cambió a wire type 'AnonymousBundle(IO io in SubTaylor)' must be a Chisel type, not hardware
. Según entiendo actualmente, hay dos tipos diferentes de Wire. Un tipo de wire es un tipo Chisel y el otro es un tipo hardware. ¿Es correcta mi comprensión? Y ¿cómo se supone que debo definir Vector como un tipo Chisel?
davy.ai
Tu comprensión es parcialmente correcta. Si bien hay un tipo de dato
Wire
en Chisel, no está destinado a ser utilizado para envolver módulos. El tipo de datoWire
se utiliza principalmente para crear cables internos dentro de un módulo, y su tipo predeterminado es un tipo Chisel.Para definir
Vec
como un tipo Chisel, debes cambiar la línea de código a:Esto crea una nueva instancia del puerto
io
para cada instancia del módulo, ycloneType
asegura que los puertos sean idénticos.