У меня есть три провода, созданные как это:Verilog: «... не является постоянной»
wire [11:0] magnitude;
wire [3:0] bitsEnd;
wire [3:0] leadingBits;
Все они assign
ред некоторое выражение с помощью комбинационной логики. Следующий код работает отлично:
assign leadingBits[3] = magnitude[bitsEnd + 3];
assign leadingBits[2] = magnitude[bitsEnd + 2];
assign leadingBits[1] = magnitude[bitsEnd + 1];
assign leadingBits[0] = magnitude[bitsEnd + 0];
Однако следующее (по-видимому эквивалент) код выдает ошибку bitsEnd is not a constant
:
assign leadingBits[3:0] = magnitude[bitsEnd + 3:bitsEnd];
Могу ли я не использовать сокращенную для этого задания? Почему эта ошибка возникает во втором случае, но не первой?
Может быть проблемой компилятора. Семантически оба эквивалентны, как вы указываете. Попробуйте другой компилятор. – jamihash