Verilog: "... no es una constante"

Tengo tres cables creados así:

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

Todos ellos sonassigned alguna expresión usando lógica combinacional. El siguiente código funciona bien:

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

Sin embargo, el siguiente código (aparentemente equivalente) da el errorbitsEnd is not a constant:

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

¿No puedo usar taquigrafía para esta tarea? ¿Por qué se generaría este error en el segundo caso pero no en el primero?

Respuestas a la pregunta(1)

Su respuesta a la pregunta