Article ID: 000086149 Content Type: Troubleshooting Last Reviewed: 03/23/2022

*** Fatal Error: Segment Violation: faulting address=(nil), PC=(nil) : 0:

Environment

  • Intel® Quartus® Prime Pro Edition
  • BUILT IN - ARTICLE INTRO SECOND COMPONENT
    Description

    Due to a problem in the Intel® Quartus® Prime Pro Edition Software version 20.4 and earlier, you might see this fatal error message in the synthesis stage when you have a VHDL recursive function calls with an intermediate values set to a constant or to the initial value of a variable declared in the function. 

     

    Code Example:

      function function_2
    (

        constant RECURSION_DEPTH : natural)

        return natural is

        constant retval :natural :=  -- constant or initialized variable, same result

          function_1(

           RECURSION_DEPTH => RECURSION_DEPTH);

      begin

        return retval;

      end function_2;

     

     

    Resolution

    To work around this problem, instead of assigning the value to a constant, assign it to a variable, with the assignment done in the body of the function. 

    Note that the assignment of the value to the variable must be done in the body of the function, it must not be done as an initial value assignment in the declarative part of the function, as the latter results in the same crash as setting a constant.

    Example:

      function function_2
    (

        constant RECURSION_DEPTH : natural)

        return natural is

        variable retval : natural;

      begin

        retval := function_1(

            RECURSION_DEPTH => RECURSION_DEPTH);

        return retval;

      end function_2;

    This problem is fixed starting with the Intel® Quartus® Prime Pro Edition Software version 21.3.

    Related Products

    This article applies to 1 products

    Intel® Programmable Devices