【发布时间】:2020-05-06 23:03:24
【问题描述】:
是否可以有变量模块名称,然后可以通过某些参数选择?我正在寻找宏定义中if...else 的语法。
module test;
`define NAME(x) if (x == 0) mod_e else mod_w
generate
for (genvar i = 0; i < 2; i++) begin
`NAME(i) inst_name (.a(a),.b(b),...);
end
endgenerate
endmodule
一种方法是像下面这样,但是需要连接所有端口2次,这对于数百个IO的模块来说很不方便并且容易出错。
module test;
generate
if (SOME_PARAM == 0) begin
mod_e inst_name (.a(a),.b(b),...);
end else begin
mod_w inst_name (.a(a),.b(b),...);
end
endgenerate
endmodule
【问题讨论】:
-
端口列表中发生了一些表达式评估,并且名称不匹配。我没有在这里展示。
标签: if-statement macros verilog system-verilog substitution