J'ai un module "observateur" qui utilise actuellement des hiérarchies globales à l'intérieur. J'ai besoin d'instancier une deuxième instance de ceci avec une deuxième hiérarchie globale.Passage de la hiérarchie dans un module Verilog
Actuellement:
module watcher;
wire sig = `HIER.sig;
wire bar = `HIER.foo.bar;
...
endmodule
watcher w; // instantiation
souhaitee:
module watcher(input base_hier);
wire sig = base_hier.sig;
wire bar = base_hier.foo.bar;
...
endmodule
watcher w1(`HIER1); // instantiation
watcher w2(`HIER2); // second instantiation, except with a different hierarchy
Ma meilleure idée est d'utiliser VPP (le préprocesseur Verilog) à force brute générer deux modules quasi-identiques (une avec chaque hiérarchie) , mais y a-t-il une manière plus élégante?
Merci pour la réponse, et je suis certainement d'accord avec la plupart de vos points en général. Malheureusement, dans ce cas, le module a ~ 100 fils de sonde en interne, donc les convertir en entrées explicites, bien que plus clair, est assez salissant. – pdq
Salut pdq. Je suppose que c'est pourquoi j'ai mentionné les interfaces SV. Vous pouvez au moins les encapsuler dans plusieurs groupes logiques et accéder aux fils depuis l'intérieur de votre module en utilisant la notation par points. – DMC