Article ID: 000092740 Content Type: Error Messages Last Reviewed: 09/12/2023

Why do I see multiple warnings "Warning: NUMERIC_STD.TO_SIGNED: vector truncated" when simulating the FIR II Intel® FPGA IP Core?

Environment

  • Intel® Quartus® Prime Pro Edition
  • FIR II Intel® FPGA IP
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Description

    These warnings occur during simulation due to the representation of the constant (9) as a 4-bit signed vector in the FIR II  Intel® FPGA IP VHDL file, hb1s_altera_fir_compiler_ii_1911_kmsq6ua_rtl_core.vhd.

    Number 9 cannot fit in a 4-bit signed number; hence, we see the vector_truncated warning from the TO_SIGNED VHDL function.

    When we interpret the bit pattern of 9 (1001) as a 4-bit signed number, we get -7.

     

    Resolution

    Make the following RTL modification to remove the "vector truncated" warning if you are using the Intel® Quartus® Prime Pro Edition Software version 22.3 or earlier. 

    Find hb1s_altera_fir_compiler_ii_1911_kmsq6ua_rtl_core.vhd file in the following IP generated folder:

    <ip_variation_name>folder/altera_fir_compiler_ii_1911/sim/

    Replace:

        u0_m0_wo0_wi0_r0_ra0_count1_inner(COUNTER,25)@14

        low=-1, high=6, step=-1, init=5

        u0_m0_wo0_wi0_r0_ra0_count1_inner_clkproc: PROCESS (clk)

        BEGIN

            IF (clk'EVENT AND clk = '1') THEN

                IF (areset = '1') THEN

                    u0_m0_wo0_wi0_r0_ra0_count1_inner_i <= TO_SIGNED(5, 4);

                ELSE

                    IF (u0_m0_wo0_memread_fanout_reg0_q = "1") THEN

                        IF (u0_m0_wo0_wi0_r0_ra0_count1_inner_i(3 downto 3) = "1") THEN

                            u0_m0_wo0_wi0_r0_ra0_count1_inner_i <= u0_m0_wo0_wi0_r0_ra0_count1_inner_i - 9;

                        ELSE

                            u0_m0_wo0_wi0_r0_ra0_count1_inner_i <= u0_m0_wo0_wi0_r0_ra0_count1_inner_i - 1;

                        END IF;

                    END IF;

                END IF;

            END IF;

        END PROCESS;

     

    with (changes in red):

        u0_m0_wo0_wi0_r0_ra0_count1_inner(COUNTER,25)@14

        low=-1, high=6, step=-1, init=5

        u0_m0_wo0_wi0_r0_ra0_count1_inner_clkproc: PROCESS (clk)

            variable wider_var : SIGNED (4 downto 0);

        BEGIN

            IF (clk'EVENT AND clk = '1') THEN

                IF (areset = '1') THEN

                    u0_m0_wo0_wi0_r0_ra0_count1_inner_i <= TO_SIGNED(5, 4);

                ELSE

                    IF (u0_m0_wo0_memread_fanout_reg0_q = "1") THEN

                        IF (u0_m0_wo0_wi0_r0_ra0_count1_inner_i(3 downto 3) = "1") THEN

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

                        ELSE

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

                        END IF;

                        u0_m0_wo0_wi0_r0_ra0_count1_inner_i <= wider_var(3 downto 0);

                    END IF;

                END IF;

            END IF;

     

        END PROCESS;

     

     

    Note that there is another copy of this file in the synth folder:

    <ip_variation_name>folder/altera_fir_compiler_ii_1911/synth/hb1s_altera_fir_compiler_ii_1911_kmsq6ua_rtl_core.vhd

    The "sim" copy is used for the simulator. The Intel® Quartus® Prime software uses the "synth" copy.

    Technically, only the sim version of the files needs to be modified to fix the simulator warnings.

    This problem is fixed in version 22.4  of the Intel® Quartus® Prime Pro Edition Software.

    Related Products

    This article applies to 1 products

    Intel Agilex® 7 FPGAs and SoC FPGAs I-Series