繁体   English   中英

SystemVerilog:基于参数的端口连接

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM