Pregunta

Esta es una pregunta relatada de Verilog. Estoy trabajando con Xilinx ISE como un entorno de desarrollo.

Estoy tratando de acceder a las variables en la simulación que se generan automáticamente usando Genvar, pero recibo el siguiente error -> HDLCompiler: 71

Ejemplo del problema:

genvar i;

generate

for(i=0; i < N; i=i+1)

begin:Sys_Modules

  TypeXModule #(.width(10)) xmod(.dataY(dataY)));

end

endgenerate 

Cuando ejecuté síntesis o simulación, puedo ver que se crean sys_modules [0..n-1] .xmod instancias.

Cuando intento agregar una línea a la simulación que accede a la matriz sys_modules:

Sys_modules [i] .xmod.datay

Obtuve el siguiente error:

HDLCOMPILER: 71 Datay no se declara en prefijo XMOD

¿Hay alguna forma de acceder a valores generados automáticamente en la simulación?

¡Gracias!

¿Fue útil?

Solución

Es legal escribir una referencia jerárquica a una instancia generada. La funcionalidad se describe en las Secciones 2.7.2 y 12.1.3 del estándar IEEE Verilog. Sin embargo, el subíndice de instancia debe ser una constante para que pueda resolverse en el momento de la compilación.

Otros consejos

No puede usar referencias jerárquicas de intervención cruzada en Verilog sintetizado.

Creo que no tienes suerte. Los simuladores no parecen gustarles las referencias fuera del módulo (OOMR) que apuntan a bloques generados como descubrió.

Recientemente encontré un problema similar al hacer un monitor de TestBench de parametrizable. Sería un número variable de sub-blocks instanciados dependiendo de un parameter. Dentro de esto, necesitaba tener un nivel superior .start() tarea que llamó al .start() tareas en cada uno de los módulos instanciados. No pude usar un for Luce para hacer esto debido a este problema de OOMR.

Entonces terminé teniendo que:

  • Definir un reg que el toplevel .start() tarea alternativa
  • escribe un always @ bloque activado en este reg
  • escribe otro generate sección dentro de este bloque siempre para llamar .start() en cada uno de los submódulos.

Si realmente necesitas echar un vistazo a tu generateD módulos, ¿tal vez podrías probar una solución como arriba? Por ejemplo, tenga un autobús en el nivel superior y use ungenerate declaración para echar un vistazo dentro de su original generateD Instantiaciones para copiar/asignar señales interesantes en este bus Toplevel.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top