¿Cómo acceder a las instancias generadas systemverilog y Vivado 2014.1?

2

Generéinstanciasusandoelsiguientecódigo:

Intento acceder a ellos de esa manera: R [0] .router3d.address = 0; // por ejemplo

La simulación salió bien Pero el código no se puede sintetizar con el siguiente error: No se puede resolver el nombre jerárquico.

¿Alguna idea de por qué?

    
pregunta Ahmad Aly

1 respuesta

2

Una forma fácil de encontrar la ruta completa es agregar initial $display("%m"); a tus Router_2D y Router_3D . Luego simula sin intentar acceder a la ruta. %m muestra el nombre jerárquico, consulte IEEE Std 1800-2012 § 21.2.1.2 Especificaciones de formato .

Ya que no está especificando una etiqueta en la sentencia if, el nombre jerárquico probablemente será R[0].genblk1.router3d.address . Esto se explica en IEEE Std 1800-2012 § 27.6 Nombres externos para bloques de generación sin nombre :

  

Aunque un bloque de generación sin nombre no tiene un nombre que pueda usarse en un nombre jerárquico, debe tener un nombre por el cual las interfaces externas puedan referirse a él. Se asignará un nombre para este propósito a cada bloque de generación sin nombre como se describe en el siguiente párrafo.

  A cada construcción generada en un ámbito dado se le asigna un número. El número será 1 para la construcción que aparece textualmente primero en ese alcance y aumentará en 1 para cada construcción posterior generada en ese alcance. A todos los bloques de generación sin nombre se les dará el nombre " genblk<n> ", donde <n> es el número asignado a su construcción de generación adjunta. Si tal nombre entraría en conflicto con un nombre declarado explícitamente, entonces los ceros iniciales se agregan delante del número hasta que el nombre no entre en conflicto. el párrafo anterior, incluso si no contiene ningún bloque de generación sin nombre.

    
respondido por el Greg

Lea otras preguntas en las etiquetas