SystemVerilog имеет нестандартные однобитовые литералы значений, такие как '0
и '1
.В соответствии со стандартом IEEE 1800, в 5.7.1 целочисленных литеральных констант я вижу «одноразрядное значение без размера ... должно рассматриваться как беззнаковое».Тем не менее, пример 5 в разделе, я также вижу:
logic [15:0] a, b, c, d;
a = '0; // sets all 16 bits to 0
b = '1; // sets all 16 bits to 1
...
Разве это не означает, что '1
рассматривается как подписанный?
На самом деле, я получаю следующий результат с '1
и 1'b1
от Quartus Prime и ModelSim-Altera.
logic [3:0] a, b;
assign a = '1; // => yields 4'b1111
assign b = 1'b1; // => yields 4'b0001
Я думаю, что и сами '1
, и 1'b1
являются неподписанными.Почему я вижу такую разницу?