Question

Ceci est une question releated Verilog. Je travaille avec Xilinx ISE comme environnement de développement.

Je suis en train de variables d'accès à la simulation qui sont générés automatiquement à l'aide genvar mais je reçois l'erreur suivante -> HDLCompiler: 71

Problème Exemple:

genvar i;

generate

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

begin:Sys_Modules

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

end

endgenerate 

Quand je courais la synthèse ou la simulation, je peux voir que Sys_Modules [0..n-1] instances .xmod sont créés.

Lorsque je tente d'ajouter une ligne à la simulation d'accéder au tableau Sys_Modules:

Sys_Modules [i] .xmod.dataY

je reçois l'erreur suivante:

HDLCompiler: 71 dataY n'est pas déclarée en préfixe xmod

Y at-il moyen d'accéder à des valeurs générées automatiquement dans la simulation?

Merci!

Était-ce utile?

La solution

Il est possible d'écrire une référence hiérarchique à une instance générée. La fonctionnalité est décrite dans les sections 2.7.2 et 12.1.3 de la norme IEEE Verilog. Cependant, l'indice d'instance doit être une constante pour qu'il puisse être résolu au moment de la compilation.

Autres conseils

Vous ne pouvez pas utiliser des références croisées hiérarchiques exemple dans Verilog synthétisé.

Je pense que vous êtes hors de la chance. Simulateurs ne semblent pas comme hors de module références (OOMRs) pointant en blocs générés que vous avez découvert.

J'ai rencontré un problème similaire récemment lors d'un moniteur de banc d'essai paramétrable. Je serais un nombre variable de sous-blocs instancié en fonction d'un parameter. Dans ce cadre, je devais avoir une tâche .start() de premier niveau qui a appelé les tâches de .start() dans chacun des modules instanciés. Je ne pouvais pas utiliser une boucle de for faire cela à cause de ce problème de OOMR.

Je fini par avoir à:

  • définir une reg que la tâche .start() de toplevel Bascule
  • écrire un bloc always @ déclenché sur cette reg
  • write autre section generate dans ce bloc toujours appeler .start() sur chacun des sous-modules.

Si vous avez vraiment besoin de jeter un regard dans vos modules generated, vous pourriez peut-être essayer une solution de contournement comme ci-dessus? Par exemple, un bus au premier niveau, et l'utilisation de la déclaration agenerate à coup d'oeil dans votre instanciations generated original à copier / Assign des signaux intéressants à ce bus de premier niveau.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top