我想编写一个Verilog模块,以便它可以实例化其参数中命名的模块。
$display
除了child_1
之外,还有MODULE
的模块实例化,因为它是通过{{1}}参数传递的名称。
答案 0 :(得分:3)
这无法在Verilog中完成。如果您知道MODULE的所有可能选择,则可以进行generate-case
module parent();
parameter MODULE = "missing_module";
case(MODULE)
"child_1": child_1 inst_name(ports);
"child_2": child_2 inst_name(ports);
"child_3": child_3 inst_name(ports);
endcase
endmodule
其他选项正在使用Verilog config
或文本宏。但是我将不得不详细了解您的情况。
答案 1 :(得分:1)
您无法在带参数的Verilog中执行此操作。 如果确实需要具有任意模块名称,则可以使用宏进行操作,如下所示:
`define PARENT_MODULE(CHILD_MODULE) \
module parent();\
CHILD_MODULE child();\
endmodule
`PARENT_MODULE(my_child)
module top;
parent p();
endmodule
....
`undef PARENT_MODULE