¿Cuál es el significado de la siguiente advertencia (presentada por Quartus)?
Warning (10445): VHDL Subtype or Type Declaration warning at someFile.vhd(32): subtype or type has null range
La línea de código ofensiva es:
-- Drive unused low
q( N - 1 downto X ) <= ( others => '0' ); -- drive unused low
N
y X
son constantes enteras utilizadas con éxito en otras partes del código (sin generar advertencias). q
se declara como q : out std_logic_vector( N - 1 downto 0 )
El mismo error también se genera para esta línea de código (en otro archivo):
-- Upper nibble
q <= zero( N - 1 downto 8 ) & q0( 7 downto 4 ) & zero( 3 downto 0 );
N
es una constante entera usada exitosamente en otras partes del código. q
se declara como q : out std_logic_vector( N - 1 downto 0 )
. q0
se declara como signal q0 : std_logic_vector( N - 1 downto 0 )
. zero
se declara como constant zero : std_logic_vector( N - 1 downto 0 ) := ( others => '0' )
Parece que ( others => '0' )
es el punto común para ambos, pero no sé cómo se relaciona esto con la advertencia de rango nulo.