Aufgrund eines Problems in der Intel® Quartus® Prime Pro Edition Software Version 20.4 und früher kann diese schwerwiegende Fehlermeldung in der Synthesestufe angezeigt werden, wenn eine VHDL rekursive Funktion mit einem Zwischenwert aufgerufen wird, der auf eine Konstante oder auf den Anfangswert einer in der Funktion angegebenen Variable gesetzt ist.
Code-Beispiel:
Funktions-function_2
(
konstante RECURSION_DEPTH: natürlich)
Rückgabe natürlich ist
konstante retval :natural := -- konstante oder initialisierte Variable, gleiches Ergebnis
function_1(
RECURSION_DEPTH => RECURSION_DEPTH);
Beginnen
Rückgabe retval;
ende function_2;
Um dieses Problem zu umgehen, weisen Sie den Wert einer Konstante zu, und weisen Sie ihn einer Variable zu, wobei die Zuweisung im Körper der Funktion erfolgt ist.
Beachten Sie, dass die Zuweisung des Wertes zu der Variable im Körper der Funktion erfolgen muss. Sie darf nicht als anfängliche Wertzuweisung im deklarativen Teil der Funktion durchgeführt werden, da letzteres den gleichen Absturz wie die Einstellung einer Konstante zur Folge hat.
Beispiel:
Funktions-function_2
(
konstante RECURSION_DEPTH: natürlich)
Rückgabe natürlich ist
Variable Retval : natürlich;
Beginnen
retval := function_1(
RECURSION_DEPTH => RECURSION_DEPTH);
Rückgabe retval;
ende function_2;
Dieses Problem wird ab der Intel® Quartus® Prime Pro Edition Software Version 21.3 behoben.