System verilog 在系统verilog中生成块 模块A(参数NUM#u PORT=2); 逻辑端口接线[NUM_port]; DUT DUT_inst( 生成 对于(genvar idx=0;idx

System verilog 在系统verilog中生成块 模块A(参数NUM#u PORT=2); 逻辑端口接线[NUM_port]; DUT DUT_inst( 生成 对于(genvar idx=0;idx,system-verilog,System Verilog,No),不能在端口列表的中间使用generate构造 但是,如果列表中的某个端口是阵列,则可以执行以下操作 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_p

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

但是,如果列表中的某个端口是阵列,则可以执行以下操作

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

不,这是不允许的。
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