Is it possible to have variable module name which could then be picked by some parameter? I am looking for the syntax for if...else
inside a macro definition.
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
One way is to do it like below, but it requires connecting all ports 2 times, which is inconvenient for modules with hundreds of IOs and prone to errors.
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