現在、内部でグローバル階層を使用している「ウォッチャー」モジュールがあります。これの 2 番目のインスタンスを 2 番目のグローバル階層でインスタンス化する必要があります。
現在:
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 プリプロセッサ) を使用して、実質的に同一の 2 つのモジュール (各階層に 1 つ) を力ずくで生成することですが、もっと洗練された方法はありますか?