Tengo un módulo "vigilante" que actualmente usa jerarquías globales dentro de él. Necesito instanciar una segunda instancia de esto con una segunda jerarquía global.Pasar la jerarquía a un módulo Verilog
Actualmente:
module watcher;
wire sig = `HIER.sig;
wire bar = `HIER.foo.bar;
...
endmodule
watcher w; // instantiation
deseado:
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
Mi mejor idea es usar VPP (el preprocesador Verilog) a la fuerza bruta generar dos módulos prácticamente idénticos (uno con cada jerarquía) , pero ¿hay una manera más elegante?
Gracias por la respuesta, y ciertamente estoy de acuerdo con la mayoría de sus puntos en general. Desafortunadamente, en este caso el módulo tiene ~ 100 cables de sonda internamente, por lo que convertirlos en entradas explícitas, aunque más claros, es bastante desordenado. – pdq
Hola pdq. Supongo que es por eso que mencioné las interfaces SV. Al menos puede encapsularlos en varios grupos lógicos y acceder a los cables desde dentro de su módulo utilizando la notación de puntos. – DMC