Artikel-ID: 000091832 Inhaltstyp: Fehlerbehebung Letzte Überprüfung: 23.08.2023

Warum synthetisiert die Software eine sehr große Anzahl von Logikpegeln für eine for-Schleife in meinem Design, wenn eine if-Anweisung in der Schleife verschachtelt ist?

Umgebung

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

Wenn Ihr Design eine for-Schleife wie diese enthält:

ganze Zahl i;

for( i = ... ; ... ; ... ) beginnen

a = Ausdruck von i ;

wenn( ...... Bedingte Anweisung zu einem ) Begin

Anweisung;

......

Ende

Ende

Die Intel® Quartus® Prime Pro Edition Software kann eine sehr große Anzahl von Logikpegeln in dieser for-Schleife synthetisieren.

Lösung

Wenn eine for-Schleife diese Bedingungen enthält, kann sie nicht für die Logiktiefe optimiert werden:

  • Ein Zuweisungsausdruck, der von der Schleifensteuervariablen abhängt
  • Eine in der Schleife verschachtelte if-Anweisung, die das Zuweisungsergebnis als Auswahlbedingung verwendet

Die Zuweisungsanweisung, die von der Schleifensteuervariablen abhängt, sollte aus dem for-Schleifenblock verschoben werden, um eine weitere Optimierung zu ermöglichen. Außerhalb der Schleife kann die Zuweisungsanweisung in parallele Zuweisungen zu jedem Bit eines Vektors umgewandelt werden. Dann kann das Zuordnungsergebnis jedes Zyklus durch die Schleifensteuervariable in diesem neu erstellten Vektor indiziert werden.

Der Code kann wie folgt geändert werden:

Vektor[ N ] = ... ;

......

Vektor[ 2 ] = ... ;

Vektor[ 1 ] = ... ;

ganze Zahl i ;

for( i = ... ; ... ; ... ) beginnen

wenn( ...... Bedingte Aussage über Vektor[i] ) beginnen

Anweisung;

......

Ende

Ende

Die Optimierung eignet sich für Fälle, in denen die Anzahl der Zyklen festgelegt und nicht sehr groß ist. Die Optimierung kann die Verwendung von ALUTs erhöhen und gleichzeitig die Anzahl der Logikebenen verringern.

Eine zukünftige Version der Intel® Quartus® Prime Pro Edition Software ist geplant, um den ursprünglichen Code automatisch zu optimieren.

Zugehörige Produkte

Dieser Artikel bezieht sich auf 1 Produkte

Intel® programmierbare Geräte

1

Der Inhalt dieser Seite ist eine Kombination aus menschlicher und computerbasierter Übersetzung des originalen, englischsprachigen Inhalts. Dieser Inhalt wird zum besseren Verständnis und nur zur allgemeinen Information bereitgestellt und sollte nicht als vollständig oder fehlerfrei betrachtet werden. Sollte es Widersprüche zwischen der englischsprachigen Version dieser Seite und der Übersetzung geben, gilt die englische Version. Englische Version dieser Seite anzeigen.