我试图使用generate实例化一个模块的多个副本。但是,这些多个副本有不同的输出类型(取决于参数)。有没有办法有条件地连接输出端口。例:
module #(parameter type OUT_TYPE = logic[31:0]) myModule (
input ....
output OUT_TYPE mod_out
);调用模块,请注意out_a、out_b、out_c是不同的类型。
generate for (genvar g=0; g<4; g++) begin
localparam type g_TYPE = g==0 ? logic[31:0] : (g==1 ? logic[15:0] : logic[7:0]);
myModule #(.OUT_TYPE(g_TYPE)) inst_myModule (
.
.
if (g==0)
.mod_out(out_a)
else if (g==1)
.mod_out (out_b)
else
.mod_out (out_c)
);
end endgenerate发布于 2022-06-12 00:44:10
不,你不能这样做。但是,generate块允许您完全实例化模块:
for (genvar g=0; g<4; g++) begin: loopblk
if (g == 0) begin
typedef logic[31:0] g_TYPE;
myModule#(.OUT_TYPE(g_TYPE)) inst_myModule(.mod_out(out_a));
end
else if (g == 1) begin
myModule #(.OUT_TYPE(logic[15:0])) inst_myModule(.mod_out(out_b));
end
else
...
endhttps://stackoverflow.com/questions/72578142
复制相似问题