ID do artigo: 000092740 Tipo de conteúdo: Mensagens de erro Última revisão: 12/09/2023

Por que eu vejo vários avisos "Aviso: NUMERIC_STD. TO_SIGNED: truncado por vetor" ao simular o núcleo Intel® FPGA IP FIR II?

Ambiente

    Intel® Quartus® Prime Pro Edition
    FIR II Intel® FPGA IP
BUILT IN - ARTICLE INTRO SECOND COMPONENT
Descrição

Esses avisos ocorrem durante a simulação devido à representação da constante (9) como um vetor assinado de 4 bits no arquivo FIR II Intel® FPGA IP VHDL, hb1s_altera_fir_compiler_ii_1911_kmsq6ua_rtl_core.vhd.

O número 9 não pode caber em um número assinado de 4 bits; assim, vemos o aviso de vector_truncated da função TO_SIGNED VHDL.

Quando interpretamos o padrão de bits do 9 (1001) como um número assinado em 4 bits, obtemos -7.

Resolução

Faça a seguinte modificação de RTL para remover o aviso de "vetor truncado" se você estiver usando o software Intel® Quartus® Prime Pro Edition versão 22.3 ou anterior.

Encontre o arquivo hb1s_altera_fir_compiler_ii_1911_kmsq6ua_rtl_core.vhd na seguinte pasta gerada por IP:

<ip_variation_name>pasto/altera_fir_compiler_ii_1911/sim/

Substituir:

u0_m0_wo0_wi0_r0_ra0_count1_inner (COUNTER,25)@14

baixa = 1, alta = 6, etapa = 1, init = 5

u0_m0_wo0_wi0_r0_ra0_count1_inner_clkproc: PROCESSO (clk)

COMEÇAR

IF (clk'EVENT AND clk = '1') ENTÃO

IF (areset = '1') ENTÃO

u0_m0_wo0_wi0_r0_ra0_count1_inner_i <= TO_SIGNED(5, 4);

MAIS

IF (u0_m0_wo0_memread_fanout_reg0_q = "1") ENTÃO

IF (u0_m0_wo0_wi0_r0_ra0_count1_inner_i(3 downto 3) = "1") ENTÃO

u0_m0_wo0_wi0_r0_ra0_count1_inner_i <= u0_m0_wo0_wi0_r0_ra0_count1_inner_i - 9;

MAIS

u0_m0_wo0_wi0_r0_ra0_count1_inner_i <= u0_m0_wo0_wi0_r0_ra0_count1_inner_i - 1;

TERMINAR SE;

TERMINAR SE;

TERMINAR SE;

TERMINAR SE;

PROCESSO FINAL;

com (alterações em vermelho):

u0_m0_wo0_wi0_r0_ra0_count1_inner (COUNTER,25)@14

baixa = 1, alta = 6, etapa = 1, init = 5

u0_m0_wo0_wi0_r0_ra0_count1_inner_clkproc: PROCESSO (clk)

wider_var variáveis: ASSINADO (4 downto 0);

COMEÇAR

IF (clk'EVENT AND clk = '1') ENTÃO

IF (areset = '1') ENTÃO

u0_m0_wo0_wi0_r0_ra0_count1_inner_i <= TO_SIGNED(5, 4);

MAIS

IF (u0_m0_wo0_memread_fanout_reg0_q = "1") ENTÃO

IF (u0_m0_wo0_wi0_r0_ra0_count1_inner_i(3 downto 3) = "1") ENTÃO

wider_var := redidoming (u0_m0_wo0_wi0_r0_ra0_count1_inner_i,5) - 9;

MAIS

wider_var := redidoming (u0_m0_wo0_wi0_r0_ra0_count1_inner_i,5) - 1;

TERMINAR SE;

u0_m0_wo0_wi0_r0_ra0_count1_inner_i <= wider_var (3 downto 0);

TERMINAR SE;

TERMINAR SE;

TERMINAR SE;

PROCESSO FINAL;

Observe que há outra cópia deste arquivo na pasta de síntese:

<ip_variation_name>pasto/altera_fir_compiler_ii_1911/sintetizador/hb1s_altera_fir_compiler_ii_1911_kmsq6ua_rtl_core.vhd

A cópia "sim" é usada para o simulador. O software Intel® Quartus® Prime usa a cópia "sintetizador".

Tecnicamente, apenas a versão sim dos arquivos precisa ser modificada para corrigir os avisos de simulador.

Esse problema é corrigido na versão 22.4 do software Intel® Quartus® Prime Pro Edition.

Produtos relacionados

Este artigo aplica-se a 1 produtos

FPGAs e FPGAs SoC Intel® Agilex™ série I

1

O conteúdo desta página é uma combinação de tradução humana e por computador do conteúdo original em inglês. Este conteúdo é fornecido para sua conveniência e apenas para informação geral, e não deve ser considerado completo ou exato. Se houver alguma contradição entre a versão em inglês desta página e a tradução, a versão em inglês governará e será a controle. Exibir a versão em inglês desta página.