У меня есть модуль «наблюдателя», который в настоящее время использует глобальные иерархии внутри него. Мне нужно создать второй экземпляр этого со второй глобальной иерархией.
В настоящее время:
module watcher;
wire sig = `HIER.sig;
wire bar = `HIER.foo.bar;
...
endmodule
watcher w; // instantiation
Желанный:
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
Моя лучшая идея — использовать vpp (препроцессор Verilog) для генерирования методом грубой силы двух практически идентичных модулей (по одному с каждой иерархией), но есть ли более элегантный способ?