Плавающие входные порты с циклом Generate в Verilog - PullRequest
0 голосов
/ 08 сентября 2018

У меня есть такой код:

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

и A, и B являются входами для модуля с именем dut. Я хочу убедиться, что вход A не подключен, когда i==0. Как мне перенести карту этого сценария в код?

Ответы [ 2 ]

0 голосов
/ 12 сентября 2018

вы также можете использовать операторы 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
0 голосов
/ 08 сентября 2018

Если вы намерены опустить один экземпляр dut, тогда установите начальное значение i равным 1:

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

Если вы все еще хотите создать экземпляр dut 3 раза, вы можете добавить один дополнительный экземпляр вне цикла создания для i=0.

...