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

1