在系统Verilog中生成块

时间:2018-10-03 22:12:21

标签: system-verilog

module A#(parameter NUM_PORT=2);

logic port_wire[NUM_PORT];

DUT dut_inst(
  generate
    for(genvar idx=0; idx<NUM_PORT; idx++) begin:num_port
      .port[idx] (port_wire[idx]);
    end:num_port
  endgenerate
);

endmodule

是否可以在生成块的上述实现方式中使用?我的意思是在模块实例化内。抱歉,这个问题太傻了。

1 个答案:

答案 0 :(得分:1)

不,您不能在端口列表的中间使用generate构造。

但是,如果列表中的端口之一是数组,则可以这样做

module A#(parameter NUM_PORT=2);

logic port_wire[NUM_PORT];

DUT dut_inst(
      .port (port_wire);
);

endmodule
module DUT #(int NP=2)(input logic port[NP]);
...
endmodule