[英]SystemVerilog : Port connection based on parameter
我正在尝试使用生成实例化模块的多个副本。 但是,这些多个副本具有不同的输出类型(取决于参数)。 有没有办法有条件地连接输出端口。 例如:
module #(parameter type OUT_TYPE = logic[31:0]) myModule (
input ....
output OUT_TYPE mod_out
);
调用 module ,注意 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
不,你不能这样做。 但是, 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
...
end
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.