Debido a un problema en la Intel® Quartus® Versión 20.4 del software Prime Pro Edition y versiones anteriores, es posible que vea este mensaje de error fatal en la etapa de síntesis cuando se tiene una llamada a la función vhDL en la que se establecen valores intermedios en una constante o en el valor inicial de una variable declarada en la función.
Ejemplo de código:
función function_2
(
RECURSION_DEPTH constante: natural)
devolución natural es
retval constante: natural := -- variable constante o inicializada, el mismo resultado
function_1(
RECURSION_DEPTH => RECURSION_DEPTH);
Comenzar
retval de devolución;
function_2 final;
Para evitar este problema, en lugar de asignar el valor a una constante, asignéelo a una variable, con la asignación realizada en el sólido de la función.
Tenga en cuenta que la asignación del valor a la variable se debe realizar en el cuerpo de la función, no se debe realizar como asignación de valor inicial en la parte declarativa de la función, ya que este último se traduce en el mismo colapso que establecer una constante.
Ejemplo:
función function_2
(
RECURSION_DEPTH constante: natural)
devolución natural es
retval variable: natural;
Comenzar
retval:= function_1(
RECURSION_DEPTH => RECURSION_DEPTH);
retval de devolución;
function_2 final;
Este problema se ha solucionado a partir de la Intel® Quartus® versión 21.3 del software Prime Pro Edition.