es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  , ,

Answer

  1. Avatar for 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 dato Wire 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:

    val mod_subexp_array = Vec(9, Module(new SubTaylor(fepar)).io.cloneType)
    

    Esto crea una nueva instancia del puerto io para cada instancia del módulo, y cloneType asegura que los puertos sean idénticos.

Comments are closed.