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

Почему эти два кода не эквивалентны? Я проверяю логическую эквивалентность между ними, они терпят неудачу, в чем может быть ошибка? Будет ли это воспринято как несоответствие ширины или сеть, управляемая несколькими драйверами? Я использую cadence 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

person VIJETH ANCHATGERI    schedule 16.04.2015    source источник
comment
В конце концов, ответ на этот вопрос будет похож на ваш предыдущий один.   -  person Qiu    schedule 16.04.2015


Ответы (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).

person Greg    schedule 16.04.2015