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