VHDL: Descobrindo / relatando a largura / comprimento do bit do número inteiro (vs. std_logic_vector)?

Digamos que preciso de um sinal para representar números de 0 a 5; obviamente, isso precisa de 3 bits de std_logic para ser representado (ou seja, se MAXVAL = 5, largura de bits = {wcalc "floor(logtwo($MAXVAL))+1"})

Estou ciente de que poderia fazer:

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

com o qual eu especificaria explicitamente uma matriz de três std_logic 'bits' e definiria o valor inicial; então eu poderia usar o REPORT para imprimir o comprimento (neste caso, 3):

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

Por enquanto, tudo bem. Mas, digamos que eu use um tipo inteiro (número):

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

Eu estou supondo que aqui o 'compilador' ('sintetizador')automaticamente inferir que ele precisa de 3 bits de comprimento de armazenamento, pois esse número inteiro é variado com valores entre 0 e 5. Se for esse o caso, meuPergunta, questão é: é possível, de alguma forma, imprimir esse bit de largura / comprimento / tamanho em um RELATÓRIO?

O truque é, obviamente, que algo assim:

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

... falhará (digamos, com "HDLParsers: 3389 - O prefixo do comprimento do atributo 'deve ser um objeto de matriz"), pois, até onde eu recordo, todos esses atributos como'length e'range são aplicáveis apenas amatrizes (Noções básicas sobre atributos VHDL), enquanto um número inteiro (natural) não é uma matriz - é umnúmero :) (Pergunta de conversão de números inteiros de vetores VHDL)

Novamente, eu sei que eu poderia utilizar um log2 (Calculando a largura de uma variável não assinada a partir do valor máximo?) - mas o que eu gostaria é apenas ver rapidamente (durante a síntese) quantos 'bits' o 'sintetizador' alocou para um eventual projeto sintetizado e, portanto, aproximadamente quanto seria usado em termos de recursos finais do FPGA (especialmente se eu usasse 'genéricos' para calcular de alguma forma um valor máximo específico para um número inteiro)

Bem, obrigado antecipadamente por todas as respostas, Saúde!

EDIT: um pouco de contexto: estou usando o ISE Webpack 9.2; Estou tentando usar variáveis / constantes 'genéricas' como parâmetros e, em seguida, usar equações para calcular valores máximos para contadores. Acho que esse cálculo ocorre no momento da "compilação" (que seria "Sintetizar" no ISE - não no "Implementar Design") e, portanto, é aqui que desejo que as mensagens de relatório ocorram (e, de fato, consegui-os assim, para o std_logic_vector propriamente dito, no log de síntese - no entanto, as mesmas mensagens de relatório para mim também ocorrem no início da simulação comportamental, o que é bom)

E o objetivo dessas mensagens de relatório é garantir que minhas equações estejam corretas e que o sintetizador não tente inferir um contador de 32 bits - mesmo que eu queira contar apenas de 0 a 5 :)

questionAnswers(4)

yourAnswerToTheQuestion