VHDL: ¿Cómo descubrir / informar el ancho / longitud del bit del entero (frente a std_logic_vector)?

Digo que necesito una señal para representar números del 0 al 5; obviamente esto necesita 3 bits de std_logic para ser representado es decir, si MAXVAL = 5, entonces bitwidth = wcalc "floor(logtwo($MAXVAL))+1"}).

Soy consciente de que podría hacer:

SIGNAL myLogicVector : STD_LOGIC_VECTOR(2 downto 0) := 5; 

con lo cual especificaría explícitamente una matriz de tres 'bits' std_logic y establecería el valor inicial; entonces podría usar REPORT para imprimir la longitud (en este caso, 3):

report("Bit width of myLogicVector is "& integer'image(myLogicVector'length));

Hasta aquí todo bien. Pero, digamos que uso un tipo entero (número) en su lugar:

SIGNAL myInteger : NATURAL range 0 to 5 := 5;

Supongo que aquí el 'compilador' ('sintetizador') seríaautomáticament infiere que necesita 3 bits de longitud de almacenamiento, ya que este número entero tiene valores entre 0 y 5. Si ese es el caso, mipregunt es: ¿es posible imprimir de alguna manera el ancho / largo / tamaño de este bit en un INFORME?

El truco es, por supuesto, que algo como esto:

report("Bit width of myInteger is "& integer'image(myInteger'length));

... fallará (por ejemplo, con "HDLParsers: 3389 - El prefijo de la longitud del atributo debe ser un objeto de matriz "), ya que, por lo que sé, todos estos atributos como'length y'range son aplicables solo a arrays ( Comprender los atributos de VHDL), mientras que un entero (natural) no es una matriz, es unanúmer :) VHDL pregunta de conversión de enteros vectoriales)

De nuevo, sé que posiblemente podría utilizar un log2 Calculando el ancho de una variable sin signo del valor máximo?), pero lo que me gustaría es verlo rápidamente durante la síntesis) cuántos 'bits' asignó el 'sintetizador' para un diseño sintetizado eventual, y por lo tanto aproximadamente cuánto se usaría en términos de recursos FPGA finales especialmente si usaría 'genéricos' para calcular de alguna manera un valor máximo particular para un entero).

Bueno, gracias de antemano por cualquier respuesta, ¡salud!

EDIT: un poco de contexto: estoy usando ISE Webpack 9.2; Estoy tratando de usar variables / constantes 'genéricas' como parámetros, y luego usar ecuaciones para calcular valores máximos para contadores. Supongo que este cálculo ocurre en el momento de 'compilación' (que sería 'Sintetizar' en ISE, no 'Implementar diseño'), por lo que es aquí donde quiero que aparezcan los mensajes de informe y de hecho los obtuve así, por std_logic_vector propiamente dicho, en el registro de síntesis; sin embargo, los mismos mensajes de informe para mí también aparecen al comienzo de la simulación de comportamiento, lo cual está bien).

Y el objetivo de estos mensajes de informe es asegurarme de que mis ecuaciones estén bien y que el sintetizador no intente inferir un contador de 32 bits, incluso si quiero contar solo de 0 a 5:)

Respuestas a la pregunta(4)

Su respuesta a la pregunta