Векторный входной порт управляет выходным портом однобитной сети

Почему эти два кода не эквивалентны? Я проверяю логическую эквивалентность между ними, они терпят неудачу, в чем может быть ошибка? Будет ли это восприниматься как несоответствие ширины или сеть, управляемая несколькими драйверами? Я использую каденцию LEC для формальной проверки

module driver (a, b);
  input [3:0] a;
  output wand b;

  assign b = a;
endmodule
module driver (a, b);
  input [3:0] a;
  output wand b;

  assign b = a[3];
  assign b = a[2];
  assign b = a[1];
  assign b = a[0];
endmodule

1 ответ

assign b = a эквивалентно assign b = a[0], Верхние биты a вне диапазона для b,

Та же причина с переполнением. Например assign sum[3:0]=a[3:0]+b[3:0] если a=15 и b=2, сумма будет равна 1, потому что недостаточно битов для представления 17 (17 mod (2^bitwidth(4)) = 1).

Другие вопросы по тегам