Verilog: “… não é uma constante”

Eu tenho três fios criados assim:

wire [11:0] magnitude;
wire [3:0] bitsEnd;
wire [3:0] leadingBits;

Todos eles sãoassignalguma expressão usando lógica combinacional. O código a seguir funciona bem:

assign leadingBits[3] = magnitude[bitsEnd + 3];
assign leadingBits[2] = magnitude[bitsEnd + 2];
assign leadingBits[1] = magnitude[bitsEnd + 1];
assign leadingBits[0] = magnitude[bitsEnd + 0];

No entanto, o seguinte código (aparentemente equivalente) fornece o errobitsEnd is not a constant:

assign leadingBits[3:0] = magnitude[bitsEnd + 3:bitsEnd];

Não posso usar atalhos para esta tarefa? Por que esse erro seria gerado no segundo caso, mas não no primeiro?

questionAnswers(1)

yourAnswerToTheQuestion