从参数名称实例化Verilog模块

时间:2018-09-21 01:25:42

标签: verilog

我想编写一个Verilog模块,以便它可以实例化其参数中命名的模块。

$display

除了child_1之外,还有MODULE的模块实例化,因为它是通过{{1}}参数传递的名称。

2 个答案:

答案 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