在Verilog中使用Generate循环浮动输入端口

时间:2018-09-08 16:34:12

标签: verilog

我有这样的代码:

genvar i;
generate
  for (i=0; i<3; i=i+1) begin : label
    dut dut_inst (
    .A (a[i]),
    .B (b[i])
    )
  end
endgenerate

AB都是名为dut的模块的输入。 我想确保在A时未连接输入i==0。如何在代码中移植此方案?

2 个答案:

答案 0 :(得分:0)

如果您打算省略dut的一个实例,则将i的初始值设置为1:

for(i=1; i<3; i=i+1) ....

如果您仍然想实例化3次dut,则可以在i=0的generate循环之外添加一个额外的实例。

答案 1 :(得分:0)

您也可以在generate块中使用'if'语句。类似于以下内容。

genvar i;
generate 
  for (i=0; i<3; i=i+1) begin : label
     if (i == 0)
        dut dut_inst (
           .A (),
           .B (b[i])
        );
     else 
        dut dut_inst (
           .A (a[i]),
           .B (b[i])
        );

   end
 endgenerate