Intel-LOGO

Intel AN 903 Accelerating Timing Closure

Intel-AN-903-Accelerating-Timing-Closure-PRODUCT

AN 903: Beschleunigung des Timing Closure in Intel® Quartus® Prime Pro Edition

Die Dichte und Komplexität moderner FPGA-Designs, die eingebettete Systeme, IP und Hochgeschwindigkeitsschnittstellen kombinieren, stellen zunehmende Herausforderungen an das Timing Closure. Spätere Architekturänderungen und Überprüfungsprobleme können zu zeitaufwändigen Entwurfsiterationen führen. Dieses Dokument fasst drei Schritte zur Beschleunigung des Timing Closure mithilfe einer verifizierten und wiederholbaren Methodik in der Intel® Quartus® Prime Pro Edition-Software zusammen. Diese Methodik umfasst eine anfängliche RTL-Analyse und -Optimierung sowie automatisierte Techniken zur Minimierung der Kompilierungszeit und zur Reduzierung der Designkomplexität und der für das Timing Closure erforderlichen Iterationen.

Timing-Closure-Beschleunigungsschritte

Intel-AN-903-Accelerating-Timing-Closure-FIG-1

Timing-Closure-Beschleunigungsschritte

Timing-Closing-Schritt Timing-Closure-Aktivität Detaillierte Informationen
Schritt 1: RTL analysieren und optimieren •    Korrigieren Sie Verletzungen des Konstruktionsassistenten auf Seite 4

•    Logiklevel reduzieren auf Seite 7

•    Reduzieren Sie hohe Fan-Out-Netze auf Seite 9

•    Intel Quartus Prime Pro Ausgabe Benutzerhandbuch: Design Optimierung

•    Intel Quartus Prime Pro Ausgabe Benutzerhandbuch: Design Empfehlungen

Schritt 2: Wenden Sie die Compiler-Optimierung an •    Compiler-Optimierungsmodi anwenden und Strategien auf Seite 13

•    Reduzieren Sie die Überlastung für eine hohe Auslastung auf Seite 16

•    Intel Quartus Prime Pro Ausgabe Benutzerhandbuch: Design Zusammenstellung

•    Intel Quartus Prime Pro Ausgabe Benutzerhandbuch: Design Optimierung

Schritt 3: Bewahren Sie zufriedenstellende Ergebnisse •    Sperren Sie Uhren, RAMs und DSPs auf Seite 20

•    Ergebnisse der Designpartition beibehalten auf Seite 21

•    Intel Quartus Prime Pro Edition Benutzerhandbuch: Block- Basierendes Design

•    AN-899: Compile reduzieren Zeit mit schneller Konservierung

Schritt 1: Design-RTL analysieren und optimieren

Die Optimierung des Quellcodes Ihres Designs ist normalerweise die erste und effektivste Technik zur Verbesserung der Qualität Ihrer Ergebnisse. Der Intel Quartus Prime Design Assistant hilft Ihnen, Verstöße gegen grundlegende Designregeln schnell zu korrigieren, und empfiehlt RTL-Änderungen, die Designoptimierung und Timing Closure vereinfachen.

Probleme mit dem Timing-Closure

  • Übermäßige Logikpegel beeinflussen die Verarbeitungsreihenfolge, die Dauer und die Qualität der Ergebnisse durch den Fitter.
  • Hohe Fan-Out-Netze verursachen eine Ressourcenüberlastung und fügen zusätzliche Spannungen auf Datenpfaden hinzu, wodurch die Pfadkritikalität unnötig erhöht wird und die zeitliche Schließung erschwert wird. Diese Spannung ist die Anziehungskraft, die den Pfad (und alle Pfade, die dieses High-Fan-Out-Signal teilen) in Richtung der High-Fan-Out-Quelle zieht.

Timing-Closure-Lösungen

  • Verstöße gegen den Konstruktionsassistenten korrigieren auf Seite 4 – um Verstöße gegen grundlegende Konstruktionsregeln, die für Ihre Konstruktion relevant sind, schnell zu identifizieren und zu korrigieren.
  • Reduzieren Sie Logikebenen auf Seite 7 – um sicherzustellen, dass alle Elemente des Designs die gleichen Fitter-Optimierungen erhalten können, und um die Kompilierungszeiten zu verkürzen.
  • Reduzieren Sie High Fan-Out-Netze auf Seite 9 – um die Ressourcenüberlastung zu reduzieren und das Timing Closure zu vereinfachen.

Zugehörige Informationen

  • „Design Rule Checking with Design Assistant“, Intel Quartus Prime Pro Edition User Guide: Design Recommendations
  • „Quellcode optimieren“, Intel Quartus Prime Pro Edition Benutzerhandbuch: Designoptimierung
  • „Duplicate Registers for Fan-Out Control“, Intel Quartus Prime Pro Edition User Guide: Design Optimization

Korrigieren Sie Verletzungen des Konstruktionsassistenten

Die Durchführung einer anfänglichen Designanalyse zur Eliminierung bekannter Timing-Closure-Probleme erhöht die Produktivität erheblich. Nachdem Sie eine anfängliche Kompilierung mit Standardeinstellungen ausgeführt haben, können Sie erneutview der Konstruktionsassistent erstellt Berichte zur ersten Analyse. Wenn aktiviert, meldet der Design-Assistent automatisch alle Verstöße gegen einen Standardsatz von Intel FPGA-empfohlenen Designrichtlinien. Sie können den Konstruktionsassistenten im Compilation Flow-Modus ausführen, was Ihnen dies ermöglicht view die für die Erstellung relevanten Verstöße stagwenn du rennst. Alternativ ist der Design Assistant im Analysemodus im Timing Analyzer und Chip Planner verfügbar.

  • Compilation-Flow-Modus– läuft automatisch während einer oder mehrerer s abtagEs der Zusammenstellung. In diesem Modus verwendet der Konstruktionsassistent eingehende (vorübergehende) Daten während der Kompilierung.
  • Analysemodus– Führen Sie den Design Assistant von Timing Analyzer und Chip Planner aus, um Designverletzungen bei einer bestimmten Kompilierung zu analysierentage, bevor Sie im Kompilierungsablauf fortfahren. Im Analysemodus verwendet der Konstruktionsassistent statische Kompilierungs-Snapshot-Daten.

Der Konstruktionsassistent weist jedem Regelverstoß einen der folgenden Schweregrade zu. Sie können angeben, welche Regeln der Design-Assistent in Ihrem Design überprüfen soll, und die Schweregrade anpassen, wodurch Regelprüfungen entfallen, die für Ihr Design nicht wichtig sind.

Schweregrade der Regel des Design-Assistenten

Kategorien Beschreibung Farbe des Schweregrads
Kritisch Adressproblem für die Übergabe. Rot
Hoch Verursacht möglicherweise einen Funktionsausfall. Kann auf fehlende oder falsche Konstruktionsdaten hinweisen. Orange
Medium Beeinträchtigt möglicherweise die Qualität der Ergebnisse für fMAX oder Ressourcennutzung. Braun
Niedrig Die Regel spiegelt Best Practices für RTL-Codierungsrichtlinien wider. Blau

Konstruktionsassistent einrichten
Sie können den Konstruktionsassistenten vollständig an Ihre individuellen Konstruktionsmerkmale und Berichtsanforderungen anpassen. Klicken Sie auf Zuweisungen ➤ Einstellungen ➤ Regeleinstellungen des Konstruktionsassistenten, um Optionen anzugeben, die steuern, welche Regeln und Parameter für die verschiedenen s geltentages der Entwurfszusammenstellung für die Entwurfsregelüberprüfung.

Regeleinstellungen des KonstruktionsassistentenIntel-AN-903-Accelerating-Timing-Closure-FIG-2

Ausführen des Konstruktionsassistenten
Wenn aktiviert, wird der Design-Assistent während der Kompilierung automatisch ausgeführt und meldet aktivierte Designregelverletzungen im Kompilierungsbericht. Alternativ können Sie den Design-Assistenten im Analysemodus für einen bestimmten Kompilierungs-Snapshot ausführen, um die Analyse nur auf diese s zu konzentrierentage. So aktivieren Sie die automatische Überprüfung des Konstruktionsassistenten während der Kompilierung:

  • Aktivieren Sie Ausführung des Konstruktionsassistenten während der Kompilierung aktivieren in den Regeleinstellungen des Konstruktionsassistenten. So führen Sie den Konstruktionsassistenten im Analysemodus aus, um einen bestimmten Schnappschuss anhand aller Entwurfsregeln zu validieren, die für den Schnappschuss gelten:
  • Klicken Sie im Bereich „Timing Analyzer“ oder „Chip Planner Tasks“ auf DRC melden.

ViewErgebnisse des Konstruktionsassistenten überprüfen und korrigieren
Der Konstruktionsassistent meldet aktivierte Konstruktionsregelverletzungen in den verschiedenen stages des Compilation Reports.

Ergebnisse des Konstruktionsassistenten in Synthese-, Planungs-, Platzierungs- und AbschlussberichtenIntel-AN-903-Accelerating-Timing-Closure-FIG-3

Zu view Um die Ergebnisse für jede Regel anzuzeigen, klicken Sie in der Regelliste auf die Regel. Eine Beschreibung der Regel und Gestaltungsempfehlungen zur Korrektur werden angezeigt.

Empfehlung zu Regelverstößen des Konstruktionsassistenten

Intel-AN-903-Accelerating-Timing-Closure-FIG-4

Ändern Sie Ihre RTL, um die Designregelverletzungen zu korrigieren.

Logiklevel reduzieren

Übermäßige Logikpegel können die Qualität der Ergebnisse des Fitters beeinträchtigen, da der kritische Designpfad die Verarbeitungsreihenfolge und -dauer des Fitters beeinflusst. Der Monteur platziert und routet das Design basierend auf Zeitüberhang. Der Monteur platziert zuerst längere Pfade mit dem geringsten Durchhang. Der Fitter priorisiert im Allgemeinen Pfade mit höherem Logikpegel gegenüber Pfaden mit niedrigerem Logikpegel. Typischerweise nach dem Monteur stage vollständig ist, sind die verbleibenden kritischen Pfade nicht die Pfade mit dem höchsten Logikpegel. Der Fitter gibt der Logik auf höherer Ebene bevorzugte Platzierung, Routing und Retiming. Das Reduzieren des Logikpegels trägt dazu bei sicherzustellen, dass alle Elemente des Designs die gleiche Fitter-Priorität erhalten. Führen Sie Reports ➤ Custom Reports ➤ Report Timing im Timing Analyzer aus, um Berichte zu generieren, die die Logikebenen im Pfad zeigen. Wenn das Timing des Pfads fehlschlägt und die Anzahl der Logikebenen hoch ist, sollten Sie erwägen, Pipelining in diesem Teil des Designs hinzuzufügen, um die Leistung zu verbessern.

Logische Tiefe im Pfadbericht

Intel-AN-903-Accelerating-Timing-Closure-FIG-5

Tiefe der Berichtslogikebene
Nach dem Compiler's Plan stage können Sie report_logic_depth in der Timing Analyzer Tcl-Konsole ausführen view die Anzahl von Logikpegeln innerhalb einer Taktdomäne. report_logic_depth zeigt die Verteilung der Logiktiefe auf die kritischen Pfade, sodass Sie Bereiche identifizieren können, in denen Sie die Logikebenen in Ihrer RTL reduzieren können.

Bericht_Logik_Tiefe -Panel_Name -von [get_clocks ] \ -to [get_clocks ]

report_logic_depth AusgabeIntel-AN-903-Accelerating-Timing-Closure-FIG-6

Um Daten zur Optimierung von RTL zu erhalten, führen Sie report_logic_depth nach den Compiler's Plan s austage, bevor die verbleibenden Fitter s ausgeführt werdentages. Ansonsten enthalten die Post-Fitter-Berichte auch Ergebnisse aus der physikalischen Optimierung (Retiming und Resynthese).

Nachbarpfade melden
Nach dem Ausführen von Fitter (Finalize) stage können Sie report_neighbor_paths ausführen, um die Ursache des kritischen Pfads zu ermitteln (zample, hoher Logikpegel, Retiming-Beschränkung, suboptimale Platzierung, E/A-Spaltenkreuzung, Hold-Fix oder andere): report_neighbor_paths -to_clock -nPfade -panel_name

report_neighbor_paths meldet die zeitkritischsten Pfade im Design, einschließlich zugehörigem Schlupf, zusätzlicher Pfadzusammenfassungsinformationen und Pfadbegrenzungsrahmen.

report_neighbor_paths AusgabeIntel-AN-903-Accelerating-Timing-Closure-FIG-7

report_neighbor_paths zeigt den zeitlich kritischsten Pfad vor und Pfad nach jedem kritischen Pfad. Das Retiming oder der logische Ausgleich des Pfads kann das Timing-Closure vereinfachen, wenn auf dem Pfad ein negativer Schlupf, aber ein positiver Schlupf auf dem Pfad davor oder dem Pfad danach besteht.

Um das Retiming zu aktivieren, stellen Sie sicher, dass die folgenden Optionen aktiviert sind:

  • Aktivieren Sie für Register Zuweisungen ➤ Einstellungen ➤ Compiler-Einstellungen ➤ Registeroptimierung ➤ Register-Retiming zulassen
  • Aktivieren Sie für RAM-Endpunkte Zuweisungen ➤ Einstellungen ➤ Compiler-Einstellungen ➤ Fitter-Einstellungen (erweitert) ➤ RAM-Neutaktung zulassen
  • Aktivieren Sie für DSP-Endpunkte Zuweisungen ➤ Einstellungen ➤ Compiler-Einstellungen ➤ Fitter-Einstellungen (erweitert) ➤ DSP-Retiming zulassen

NOTIZ

Wenn ein weiterer Logikausgleich erforderlich ist, müssen Sie Ihre RTL manuell ändern, um die Logik vom kritischen Pfad zum Pfad davor oder Pfad nachher zu verschieben.
Wenn der Ausgang eines Registers mit seinem Eingang verbunden ist, können einer oder beide der Nachbarpfade mit dem aktuellen Pfad identisch sein. Bei der Suche nach Nachbarpfaden mit dem größten Schlupf werden alle Betriebsbedingungen berücksichtigt, nicht nur die Betriebsbedingungen des Hauptpfads selbst.

Visualisierung von Logikebenen in der Technologiekarte Viewer
Die Technologielandkarte Viewer bietet auch schematische, technologiebasierte Darstellungen der Design-Netzliste und kann Ihnen dabei helfen, zu erkennen, welche Bereiche in einem Design von einer Verringerung der Anzahl von Logikebenen profitieren können. Auch die physische Anordnung eines Pfades können Sie im Chip Planner detailliert untersuchen. Um einen Timing-Pfad in einem der zu lokalisieren viewKlicken Sie im Timing-Bericht mit der rechten Maustaste auf einen Pfad, zeigen Sie auf Pfad suchen und wählen Sie In Technologiekarte suchen aus Viewäh.

Reduzieren Sie hohe Fan-Out-Netze

Hohe Fan-out-Netze können eine Ressourcenüberlastung verursachen, wodurch der zeitliche Abschluss erschwert wird. Im Allgemeinen verwaltet der Compiler automatisch High-Fan-out-Netze in Bezug auf Takte. Der Compiler befördert automatisch erkannte High-Fan-Out-Netze in das globale Taktnetzwerk. Der Compiler macht während der Place- und Route-s einen höheren Optimierungsaufwandtages, was zu einer vorteilhaften Registerduplizierung führt. In den folgenden Eckfällen können Sie die Überlastung zusätzlich reduzieren, indem Sie die folgenden manuellen Änderungen an Ihrer Design-RTL vornehmen:

Eckgehäuse mit hohem Fan-Out-Netz

Designmerkmal Manuelle RTL-Optimierung
Hohe Fan-Out-Netze, die viele Hierarchien oder physisch weit entfernte Ziele erreichen Geben Sie die Zuweisung „Duplicate_Hierarchy_Tiefe“ für das letzte Register in einer Pipeline an, um Netzwerke mit hoher Auffächerung über Hierarchien hinweg manuell zu duplizieren. Geben Sie die Duplicate_register-Zuweisung an doppelte Register während der Platzierung an.
Designs mit Steuersignalen zu DSP- oder M20K-Speicherblöcken aus kombinatorischer Logik Treiben Sie das Steuersignal von einem Register zum DSP oder M20K-Speicher.

Registrieren Sie Duplikate über Hierarchien hinweg
Sie können die Zuweisung „Duplicate_Hierarchy_Tiefe“ für das letzte Register in einer Pipeline angeben, um die Erstellung von Registerduplizierungen und Fan-Outs zu steuern. Die folgenden Abbildungen veranschaulichen die Auswirkungen der folgenden Zuweisung von „Duplicate_hierarchy_Tiefe“:

set_instance_assignment -name doppelte_hierarchietiefe -to \

Wo:

  • register_name – das letzte Register in einer Kette, die sich in mehrere Hierarchien auffächert.
  • level_number – die Anzahl der zu duplizierenden Register in der Kette.

Abbildung 9. Vor der Registerduplizierung
Legen Sie die Zuweisung „Duplicate_Hierarchy_Tiefe“ fest, um die Registerduplizierung über Hierarchien hinweg zu implementieren, und erstellen Sie einen Registerbaum nach dem letzten Register in der Kette. Sie geben den Registernamen und die Anzahl der durch M repräsentierten Duplikate im folgenden Beispiel anample. Rote Pfeile zeigen die potenziellen Standorte doppelter Register.

  • set_instance_assignment –name DUPLICATE_HIERARCHY_DEPTH –to regZ MIntel-AN-903-Accelerating-Timing-Closure-FIG-8

Registrieren Duplizierung = 1
Durch Angabe der folgenden Einzelebene der Registerduplizierung (M=1) wird ein Register (regZ) eine Ebene tiefer in der Designhierarchie dupliziert:

  • set_instance_assignment –name DUPLICATE_HIERARCHY_DEPTH –to regZ 1Intel-AN-903-Accelerating-Timing-Closure-FIG-9

Registrieren Duplizierung = 3
Die Angabe von drei Ebenen der Registerduplizierung (M=3) dupliziert drei Register (regZ, regY, regX) drei, zwei bzw. eine Ebene der Hierarchie nach unten:

  • set_instance_assignment –name DUPLICATE_HIERARCHY_DEPTH –to regZ 3Intel-AN-903-Accelerating-Timing-Closure-FIG-10

Durch Duplizieren und Herunterschieben der Register in die Hierarchien behält das Design die gleiche Anzahl von Zyklen zu allen Zielen bei, während die Leistung auf diesen Pfaden erheblich beschleunigt wird.

Registrieren Sie die Duplizierung während der Platzierung
Abbildung 12 auf Seite 11 zeigt ein Register mit hohem Fan-Out zu einem weit verbreiteten Bereich des Chips. Durch 50-maliges Duplizieren dieses Registers können Sie die Entfernung zwischen dem Register und den Zielen verringern, was letztendlich zu einer schnelleren Taktleistung führt. Das Zuweisen von „Duplicate_register“ ermöglicht es dem Compiler, die physische Nähe zu nutzen, um die Platzierung neuer Register zu steuern, die eine Teilmenge von Ausgangsfächern speisen.

Abbildung 12. Duplizierung während der Platzierung registrierenIntel-AN-903-Accelerating-Timing-Closure-FIG-11

Notiz: Verwenden Sie ein Multis, um ein Signal über den Chip zu sendentagDie Pipeline. Wenden Sie die Duplicate_register-Zuweisung auf jedes der Register in der Pipeline an. Diese Technik erzeugt eine Baumstruktur, die das Signal über den Chip sendet.

ViewAnzeigen von Duplizierungsergebnissen
Nach der Designsynthese view Duplizierungsergebnisse im Zusammenfassungsbericht Duplizierung des hierarchischen Baums im Ordner Synthese des Kompilierungsberichts. Der Bericht enthält Folgendes:

  • Informationen zu den Registern, die die Duplicate_hierarchy_depth-Zuweisung haben.
  • Grund für die Kettenlänge, die Sie als Ausgangspunkt für weitere Verbesserungen mit der Zuordnung verwenden können.
  • Informationen zu den einzelnen Registern in der Kette, die Sie nutzen können, um die Struktur der implementierten Duplikate besser zu verstehen.

Der Fitter-Bericht enthält auch einen Abschnitt zu Registern mit der Einstellung „Duplicate_register“.

Wenden Sie Compiler-Optimierungstechniken an

Designs, die einen sehr hohen Prozentsatz nutzentage von FPGA-Geräteressourcen kann eine Ressourcenüberlastung verursachen, was zu einem niedrigeren fMAX und einem komplexeren Timing-Closure führt. Mit den Einstellungen des Compiler-Optimierungsmodus können Sie den Schwerpunkt der Compiler-Bemühungen während der Synthese festlegen. Zum Bspample, Sie optimieren die Synthese für Area oder Routability, wenn Sie Ressourcenüberlastung angehen. Sie können mit Kombinationen derselben Optimierungsmodus-Einstellungen im Intel Quartus Prime Design Space Explorer II experimentieren. Diese Einstellungen und andere manuelle Techniken können Ihnen dabei helfen, Staus in stark ausgelasteten Designs zu reduzieren.

Timing-Closure-Problem

  • Designs mit sehr hoher Auslastung der Geräteressourcen erschweren das Timing Closure.

Timing-Closure-Lösungen

  • Compiler-Optimierungsmodi und -strategien anwenden auf Seite 13 – Geben Sie das primäre Ziel des Optimierungsmodus für die Designsynthese an.
  • Experimentieren Sie mit Bereichs- und Routing-Optionen auf Seite 16 – wenden Sie zusätzliche Sammlungen von Einstellungen an, um Staus zu reduzieren und die Ziele für Bereich und Routing zu erreichen.
  • Betrachten Sie die Fraktalsynthese für arithmetikintensive Designs auf Seite 16 – Bei arithmetikintensiven Designs mit hohem Durchsatz reduziert die Fraktalsynthese die Geräteressourcennutzung durch Multiplikatorregularisierung, Retiming und kontinuierliches arithmetisches Packen.

Zugehörige Informationen

  • Kapitel „Timing Closure and Optimization“, Intel Quartus Prime Pro Edition User Guide: Design Optimization
  • Benutzerhandbuch für Intel Quartus Prime Pro Edition: Designzusammenstellung

Wenden Sie Compiler-Optimierungsmodi und -Strategien an

Verwenden Sie die folgenden Informationen, um Compiler-Optimierungsmodi und Design Space Explorer II (DSE II)-Kompilierungsstrategien anzuwenden.

Experimentieren Sie mit den Einstellungen des Compiler-Optimierungsmodus
Befolgen Sie diese Schritte, um mit den Einstellungen des Compiler-Optimierungsmodus zu experimentieren:

  1. Erstellen oder öffnen Sie ein Intel Quartus Prime-Projekt.
  2. Um die allgemeine Optimierungsstrategie des Compilers anzugeben, klicken Sie auf Zuweisungen ➤ Einstellungen ➤ Compiler-Einstellungen. Experimentieren Sie mit einer der folgenden Moduseinstellungen, wie in Tabelle 4 auf Seite 14 beschrieben.
  3. Um das Design mit diesen Einstellungen zu kompilieren, klicken Sie im Compilation Dashboard auf Compilation starten.
  4. View die Zusammenstellungsergebnisse im Zusammenstellungsbericht.
  5. Klicken Sie auf Tools ➤ Timing Analyzer to view die Ergebnisse der Optimierungseinstellungen zur Leistung.

Einstellungen des Compiler-Optimierungsmodus

Intel-AN-903-Accelerating-Timing-Closure-FIG-22

Optimierungsmodi (Seite Compiler-Einstellungen)

Optimierungsmodus Beschreibung
Ausgeglichen (normaler Fluss) Der Compiler optimiert die Synthese für eine ausgewogene Implementierung, die Zeitbeschränkungen respektiert.
Hochleistungsaufwand Der Compiler erhöht den Timing-Optimierungsaufwand während der Platzierung und des Routings und ermöglicht zeitbezogene Optimierungen der physikalischen Synthese (Optimierungseinstellungen pro Register). Jede zusätzliche Optimierung kann die Kompilierzeit verlängern.
Hohe Leistung bei maximalem Platzierungsaufwand Aktiviert die gleichen Compiler-Optimierungen wie Hochleistungsaufwand, mit zusätzlichem Placement-Optimierungsaufwand.
Überlegene Leistung Aktiviert die gleichen Compiler-Optimierungen wie Hochleistungsaufwandund fügt während der Analyse und Synthese weitere Optimierungen hinzu, um die Designleistung mit einer potenziellen Vergrößerung des Logikbereichs zu maximieren. Wenn die Designauslastung bereits sehr hoch ist, kann diese Option zu Anpassungsschwierigkeiten führen, was sich auch negativ auf die Gesamtqualität der Optimierung auswirken kann.
Überlegene Leistung mit maximalem Platzierungsaufwand Aktiviert die gleichen Compiler-Optimierungen wie Überlegene Leistung, mit zusätzlichem Placement-Optimierungsaufwand.
Aggressives Gebiet Der Compiler unternimmt aggressive Anstrengungen, um die zum Implementieren des Entwurfs erforderliche Gerätefläche auf Kosten der Entwurfsleistung zu reduzieren.
Hoher Routing-Aufwand für die Platzierung Der Compiler unternimmt große Anstrengungen, um das Design auf Kosten des Designbereichs, der Leistung und der Kompilierungszeit zu routen. Der Compiler verbringt zusätzliche Zeit damit, die Routing-Auslastung zu reduzieren, was die Routing-Fähigkeit verbessern und auch dynamische Energie sparen kann.
Hoher Pack-Routability-Aufwand Der Compiler unternimmt große Anstrengungen, um das Design auf Kosten des Designbereichs, der Leistung und der Kompilierungszeit zu routen. Der Compiler verbringt zusätzliche Zeit mit dem Packen von Registern, was die Routingfähigkeit verbessern kann und auch dynamische Energie spart.
Netzliste für Routingfähigkeit optimieren Der Compiler implementiert Netzlistenmodifikationen, um die Routingfähigkeit auf Kosten der Leistung zu erhöhen.
Fortsetzung…
Optimierungsmodus Beschreibung
Hoher Kraftaufwand Der Compiler unternimmt große Anstrengungen, um die Synthese für geringen Stromverbrauch zu optimieren. Hoher Kraftaufwand erhöht die Laufzeit der Synthese.
Aggressive Kraft Bemüht sich aggressiv, die Synthese für geringe Leistung zu optimieren. Der Compiler reduziert die Routing-Nutzung von Signalen mit den höchsten spezifizierten oder geschätzten Toggle-Raten weiter, wodurch zusätzliche dynamische Energie gespart, aber möglicherweise die Leistung beeinträchtigt wird.
Aggressive Kompilierzeit Reduziert die zum Implementieren des Designs erforderliche Kompilierzeit mit geringerem Aufwand und weniger Leistungsoptimierungen. Diese Option deaktiviert auch einige detaillierte Berichtsfunktionen.

Notiz: Einschalten Aggressive Kompilierzeit aktiviert Intel Quartus Prime-Einstellungen File (.qsf)-Einstellungen, die nicht durch andere .qsf-Einstellungen überschrieben werden können.

Kompilierungsstrategien für Design Space Explorer II
Mit DSE II können Sie optimale Projekteinstellungen für Ressourcen-, Leistungs- oder Energieoptimierungsziele finden. Mit DSE II können Sie ein Design iterativ kompilieren, indem Sie verschiedene voreingestellte Kombinationen von Einstellungen und Einschränkungen verwenden, um ein bestimmtes Ziel zu erreichen. DSE II meldet dann die beste Einstellungskombination, um Ihre Ziele zu erreichen. DSE II kann auch Vorteile bringentage von Parallelisierungsfähigkeiten, um Seeds auf mehreren Computern zu kompilieren. Die Einstellungen der DSE II-Kompilierungsstrategie entsprechen den Einstellungen des Optimierungsmodus in Tabelle 4 auf Seite 14

Design Space Explorer IIIntel-AN-903-Accelerating-Timing-Closure-FIG-12

Befolgen Sie diese Schritte, um die Kompilierungsstrategie für DSE II anzugeben:

  1. Um DSE II zu starten (und die Intel Quartus Prime-Software zu schließen), klicken Sie auf Extras ➤ Design Space Explorer II starten. DSE II wird geöffnet, nachdem die Intel Quartus Prime-Software geschlossen wurde.
  2. Klicken Sie in der DSE II-Symbolleiste auf das Symbol Exploration.
  3. Erweitern Sie Erkundungspunkte.
  4. Wählen Sie Entwurfserkundung aus. Aktivieren Sie eine der Kompilierungsstrategien, um Designuntersuchungen durchzuführen, die auf diese Strategien abzielen.

Reduzieren Sie die Überlastung für eine hohe Auslastung

Designs, die über 80 % der Geräteressourcen nutzen, bereiten typischerweise die größten Schwierigkeiten beim Timing Closure. Sie können die folgenden manuellen und automatisierten Techniken anwenden, um Staus weiter zu reduzieren und das Timing Closure zu vereinfachen.

  • Experimentieren Sie mit Bereichs- und Routbarkeitsoptionen auf Seite 16
  • Betrachten Sie Fraktalsynthese für arithmetisch-intensive Designs auf Seite 16

Experimentieren Sie mit Bereichs- und Routbarkeitsoptionen

Wenn die Geräteauslastung eine Routing-Überlastung verursacht, können Sie mit den Optimierungseinstellungen für Bereich und Routbarkeit experimentieren, um die Ressourcenauslastung und Überlastung für Ihr Design zu reduzieren. Klicken Sie auf Zuweisungen ➤ Einstellungen ➤ Compilereinstellungen ➤ Optimierungsmodus, um auf diese Einstellungen zuzugreifen:

Gebiets- und Routing-Optionen

Intel-AN-903-Accelerating-Timing-Closure-FIG-13

Betrachten Sie die Fraktalsynthese für arithmetisch-intensive Designs

Für arithmetikintensive Designs mit hohem Durchsatz können Sie automatische Fraktalsyntheseoptimierungen aktivieren, um die Nutzung der Geräteressourcen zu verbessern. Zu den Optimierungen der Fraktalsynthese gehören Multiplikatorregulation und Retiming sowie kontinuierliches arithmetisches Packen. Die Optimierungen zielen auf Designs mit einer großen Anzahl von arithmetischen Operationen mit niedriger Genauigkeit ab (z. B. Additionen und Multiplikationen). Sie können die Fraktalsynthese global oder nur für bestimmte Multiplikatoren aktivieren. Unter idealen Bedingungen kann die Optimierung der Fraktalsynthese eine Flächenreduzierung von 20–45 % erreichen.

Multiplikator-Regularisierung und Retiming
Multiplikator-Regularisierung und -Retiming führen eine Inferenz von hochoptimierten Soft-Multiplikator-Implementierungen durch. Der Compiler kann ein Rückwärts-Retiming auf zwei oder mehr Pipelines anwendentages bei Bedarf. Wenn Sie die Fraktalsynthese aktivieren, wendet der Compiler Multiplikatorregularisierung und Retiming auf vorzeichenbehaftete und vorzeichenlose Multiplikatoren an.

Abbildung 16. Multiplikator-RetimingIntel-AN-903-Accelerating-Timing-Closure-FIG-14

NOTIZ

  • Die Multiplikatorregularisierung verwendet nur Logikressourcen und keine DSP-Blöcke.
  • Multiplikatorregularisierung und Retiming werden sowohl auf vorzeichenbehaftete als auch auf vorzeichenlose Multiplikatoren in Modulen angewendet, in denen die QSF-Zuweisung FRACTAL_SYNTHESIS gesetzt ist.

Kontinuierliches arithmetisches Packen
Kontinuierliches arithmetisches Packen resynthetisiert arithmetische Gatter in Logikblöcke, die optimal dimensioniert sind, um in Intel FPGA LABs zu passen. Diese Optimierung ermöglicht eine bis zu 100%ige Nutzung der LAB-Ressourcen für die Rechenblöcke. Wenn Sie die Fraktalsynthese aktivieren, wendet der Compiler diese Optimierung auf alle Übertragsketten und Logikgatter mit zwei Eingängen an. Diese Optimierung kann Addiererbäume, Multiplikatoren und jede andere arithmetische Logik packen.

Kontinuierliches arithmetisches Packen

Intel-AN-903-Accelerating-Timing-Closure-FIG-15

NOTIZ

Beachten Sie, dass das kontinuierliche arithmetische Packen unabhängig von der Multiplikatorregularisierung funktioniert. Wenn Sie also einen nicht regularisierten Multiplikator verwenden (z. B. indem Sie Ihren eigenen Multiplikator schreiben), kann kontinuierliches arithmetisches Packen immer noch funktionieren. Die Optimierung der Fraktalsynthese eignet sich am besten für Designs mit Deep-Learning-Beschleunigern oder anderen arithmetikintensiven Funktionen mit hohem Durchsatz, die alle DSP-Ressourcen übersteigen. Die projektweite Aktivierung der Fraktalsynthese kann zu unnötiger Aufblähung von Modulen führen, die nicht für Fraktaloptimierungen geeignet sind.

Aktivieren oder Deaktivieren der Fraktalsynthese

Bei Intel Stratix® 10- und Intel Agilex™-Geräten wird die Optimierung der Fraktalsynthese automatisch für kleine Multiplikatoren ausgeführt (jede A*B-Anweisung in Verilog HDL oder VHDL, bei der die Bitbreite der Operanden 7 oder weniger beträgt). Sie können die automatische Fraktalsynthese für kleine Multiplikatoren für diese Geräte auch mit einer der folgenden Methoden deaktivieren:

  • Stellen Sie in RTL den DSP-Multstyle ein, wie „Multstyle Verilog HDL Synthesis Attribute“ beschreibt. Zum Bspample: (* multstyle = „dsp“ *) module foo(…); Modul foo(..) /* Synthese multstyle = „dsp“ */;
  • In der .qsf file, fügen Sie wie folgt als Zuweisung hinzu: set_instance_assignment -name DSP_BLOCK_BALANCING_IMPLEMENTATION \DSP_BLOCKS -to r

Darüber hinaus können Sie für Intel Stratix 10-, Intel Agilex-, Intel Arria® 10- und Intel Cyclone® 10 GX-Geräte die Fraktalsynthese global oder für bestimmte Multiplikatoren mit der GUI-Option Fractal Synthesis oder der entsprechenden FRACTAL_SYNTHESIS .qsf-Zuweisung aktivieren:

  • Verwenden Sie altera_attribute in RTL wie folgt: (* altera_attribute = „-name FRACTAL_SYNTHESIS ON“ *)
  • In der .qsf file, fügen Sie wie folgt als Zuweisung hinzu: set_global_assignment -name FRACTAL_SYNTHESIS ON -entity

Gehen Sie in der Benutzeroberfläche wie folgt vor:

  1. Klicken Sie auf Zuweisungen ➤ Zuweisungseditor.
  2. Wählen Sie Fractal Synthesis für Assignment Name, On für den Value, den arithmetikintensiven Entity-Namen für Entity und einen Instanznamen in der To-Spalte aus. Sie können einen Platzhalter (*) für To eingeben, um alle Instanzen der Entität zuzuweisen.

Abbildung 18. Fraktalsynthese-Zuordnung im Zuordnungseditor

Intel-AN-903-Accelerating-Timing-Closure-FIG-16

Zugehörige Informationen

  • Multistyle Verilog HDL-Syntheseattribut
    • In der Intel Quartus Prime-Hilfe.

Bewahren Sie zufriedenstellende Ergebnisse

Sie können das Timing Closure vereinfachen, indem Sie zufriedenstellende Kompilierungsergebnisse rückannotieren, um die Platzierung großer Blöcke in Bezug auf Uhren, RAMs und DSPs zu sperren. In ähnlicher Weise können Sie mit der Wiederverwendungstechnik von Designblöcken zufriedenstellende Kompilierungsergebnisse für bestimmte FPGA-Peripherie- oder Kernlogik-Designblöcke (Logik, die eine hierarchische Designinstanz umfasst) bewahren und diese Blöcke dann in nachfolgenden Kompilierungen wiederverwenden. Bei der Wiederverwendung von Designblöcken weisen Sie die hierarchische Instanz als Designpartition zu und bewahren und exportieren die Partition nach erfolgreicher Kompilierung. Das Aufbewahren und Wiederverwenden zufriedenstellender Ergebnisse ermöglicht es Ihnen, den Aufwand und die Zeit des Compilers nur auf Teile des Designs zu konzentrieren, die kein geschlossenes Timing haben.

Timing-Closure-Problem

  • Sofern er nicht gesperrt ist, kann der Compiler Entwurfsblöcke, Uhren, RAMs und DSPs je nach verschiedenen Faktoren von Kompilierung zu Kompilierung unterschiedlich implementieren.

Timing-Closure-Lösungen

  • Sperren von Takten, RAMs und DSPs auf Seite 20 – Hinternotieren Sie zufriedenstellende Kompilierungsergebnisse, um die Platzierung großer Blöcke in Bezug auf Takte, RAMs und DSPs zu sperren.
  • Designpartitionsergebnisse beibehalten auf Seite 21 – behalten Sie die Partitionen für Blöcke bei, die dem Timing entsprechen, und konzentrieren Sie die Optimierung auf die anderen Designblöcke.

Zugehörige Informationen

  • Hilfe zum Dialogfeld "Zuweisungen zurückkommentieren".
  • AN-899: Reduzierung der Kompilierungszeit durch schnelle Erhaltung
  • Benutzerhandbuch für Intel Quartus Prime Pro Edition: Blockbasiertes Design

Sperren Sie Uhren, RAMs und DSPs

Sie können das Timing Closure vereinfachen, indem Sie zufriedenstellende Kompilierungsergebnisse rückkommentieren, um die Platzierung großer Blöcke in Bezug auf Takte, RAMs und DSPs zu sperren. Durch Sperren der Platzierung großer Blöcke kann ein höherer fMAX mit weniger Rauschen erzeugt werden. Das Sperren großer Blöcke wie RAMs und DSPs kann effektiv sein, da diese Blöcke eine stärkere Konnektivität aufweisen als normale LABs, was die Bewegung während der Platzierung erschwert. Wenn ein Seed durch geeignete RAM- und DSP-Platzierung gute Ergebnisse erzielt, können Sie diese Platzierung mit Back-Annotation erfassen. Nachfolgende Kompilierungen können dann von der hochwertigen RAM- und DSP-Platzierung aus dem guten Seed profitieren. Designs mit sehr wenigen RAMs oder DSPs profitieren von dieser Technik nicht wesentlich. Klicken Sie auf Zuweisungen ➤ Zuweisungen zurückkommentieren, um die Geräteressourcenzuweisungen aus der letzten Kompilierung in die .qsf-Datei zu kopieren, um sie in der nächsten Kompilierung zu verwenden. Wählen Sie den Typ der Rückseitenanmerkung in der Liste Typ der Rückseitenanmerkung aus.

Dialogfeld „Zuweisungen zurückkommentieren“.

Intel-AN-903-Accelerating-Timing-Closure-FIG-17

Alternativ können Sie Back-Annotation mit der folgenden ausführbaren quartus_cdb-Datei ausführen. quartus_cdb –back_annotate [–dsp] [–ram] [–clock]

NOTIZ

  • Die ausführbare Datei unterstützt die zusätzlichen Variablen [–dsp], [–ram] und [–clock], die das Dialogfeld Back-Annotate Assignments noch nicht unterstützt.

Ergebnisse der Designpartition beibehalten

NOTIZ

  • Nach dem Partitionieren des Designs können Sie die Partitionen für Blöcke beibehalten, die das Timing erfüllen, und sich auf die Optimierung auf die anderen Designblöcke konzentrieren. Darüber hinaus vereinfacht die Option „Fast Preserve“ die Logik einer beibehaltenen Partition dahingehend, dass nur während der Kompilierung Schnittstellenlogik vorhanden ist, wodurch die Kompilierungszeit für die Partition verkürzt wird. Fast Preserve unterstützt nur die Wiederverwendung von Root-Partitionen und partielle Rekonfigurationsdesigns. Bei Designs mit Untermodulen, die eine Herausforderung für Timing Closure darstellen, können Sie eine eigenständige Optimierung und Kompilierung der Partition des Moduls durchführen und dann das Timing-Closed-Modul exportieren, um die Implementierung in nachfolgenden Kompilierungen beizubehalten.

Beibehalten der Ergebnisse der Designpartition

Intel-AN-903-Accelerating-Timing-Closure-FIG-18

Blockbasiertes Design erfordert Designpartitionierung. Die Design-Partitionierung ermöglicht es Ihnen, einzelne Logikblöcke in Ihrem Design beizubehalten, kann aber auch zu potenziellen Leistungsverlusten aufgrund von Partitionskreuzungen und Grundrisseffekten führen. Sie müssen diese Faktoren ausgleichen, wenn Sie blockbasierte Designtechniken verwenden. Die folgenden allgemeinen Schritte beschreiben den Ablauf der Partitionserhaltung für Designs zur Wiederverwendung von Root-Partitionen:

  1. Klicken Sie auf Verarbeitung ➤ Start ➤ Analyse und Ausarbeitung starten.
  2. Klicken Sie im Projektnavigator mit der rechten Maustaste auf die zeitlich geschlossene Designinstanz, zeigen Sie auf Designpartition und wählen Sie einen Partitionstyp aus, wie unter Designpartitionseinstellungen auf Seite 23 beschrieben.

Designpartitionen erstellen

Intel-AN-903-Accelerating-Timing-Closure-FIG-19

  1. Definieren Sie Grundrisseinschränkungen für die Logiksperre für die Partition. Klicken Sie im Fenster „Partitionen entwerfen“ mit der rechten Maustaste auf die Partition und klicken Sie dann auf Logiksperrbereich ➤ Neuen Logiksperrbereich erstellen. Stellen Sie sicher, dass der Bereich groß genug ist, um die gesamte Logik in der Partition einzuschließen.
  2. Um die Partitionsergebnisse nach der Kompilierung zu exportieren, geben Sie im Fenster Design Partitions die Partition .qdb als Post Final Export an File.

Postendgültiger Export File

Intel-AN-903-Accelerating-Timing-Closure-FIG-20

  1. Um das Design zu kompilieren und die Partition zu exportieren, klicken Sie im Kompilierungs-Dashboard auf Design kompilieren.
  2. Öffnen Sie das Projekt der obersten Ebene in der Intel Quartus Prime-Software.
  3. Klicken Sie auf Zuweisungen ➤ Einstellungen ➤ Compilereinstellungen ➤ Inkrementelle Kompilierung. Aktivieren Sie die Option „Schnell beibehalten“.

Option zum schnellen Speichern

Intel-AN-903-Accelerating-Timing-Closure-FIG-21

  1. Klicken Sie auf „OK“.
  2. Geben Sie im Fenster „Partitionen entwerfen“ die exportierte .qdb-Datei als Partitionsdatenbank an File für die betreffende Partition. Diese .qdb ist jetzt die Quelle für diese Partition im Projekt. Wenn Sie die Option Fast Preserve aktivieren, reduziert der Compiler die Logik der importierten Partition auf nur Schnittstellenlogik, wodurch die für die Partition erforderliche Kompilierungszeit reduziert wird.

Partitionseinstellungen entwerfen

Partitionseinstellungen entwerfen

Option Beschreibung
Partitionsname Gibt den Partitionsnamen an. Jeder Partitionsname muss eindeutig sein und darf nur aus alphanumerischen Zeichen bestehen. Die Intel Quartus Prime-Software erstellt automatisch eine „root_partition“ auf oberster Ebene (|) für jede Projektrevision.
Hierarchiepfad Gibt den Hierarchiepfad der Entitätsinstanz an, die Sie der Partition zuweisen. Diesen Wert geben Sie in der an Neue Partition erstellen Dialogbox. Der Pfad der Stammpartitionshierarchie ist |.
Typ Doppelklicken Sie, um einen der folgenden Partitionstypen anzugeben, die steuern, wie der Compiler die Partition verarbeitet und implementiert:
Fortsetzung…
Option Beschreibung
•    Standard– Identifiziert eine Standardpartition. Der Compiler verarbeitet die Partition unter Verwendung der zugeordneten Entwurfsquelle files.

•    Rekonfigurierbar– Identifiziert eine rekonfigurierbare Partition in einem partiellen Rekonfigurationsfluss. Präzisiere das Rekonfigurierbar Typ, um die Syntheseergebnisse beizubehalten, während die Neuanpassung der Partition im PR-Fluss ermöglicht wird.

•    Reservierter Kern– Identifiziert eine Partition in einem blockbasierten Entwurfsablauf, die für die Kernentwicklung durch einen Verbraucher reserviert ist, der die Geräteperipherie wiederverwendet.

Erhaltungsgrad Gibt eine der folgenden Erhaltungsstufen für die Partition an:

•    Nicht festgelegt– Gibt keine Erhaltungsstufe an. Die Partition wird aus der Quelle kompiliert files.

•    synthetisiert– Die Partition wird mit dem synthetisierten Snapshot kompiliert.

•    Finale– Die Partition wird mit dem endgültigen Snapshot kompiliert.

Mit Erhaltungsgrad of synthetisiert or Finale, erscheinen Änderungen am Quellcode nicht in der Synthese.

Leer Gibt eine leere Partition an, die der Compiler überspringt. Diese Einstellung ist nicht kompatibel mit dem Reservierter Kern Und Datenbank partitionieren File Einstellungen für dieselbe Partition. Die Erhaltungsgrad muss sein Nicht festgelegt. Eine leere Partition kann keine untergeordneten Partitionen haben.
Datenbank partitionieren File Gibt eine Partitionsdatenbank an File (.qdb), die der Compiler beim Kompilieren der Partition verwendet. Sie exportieren die .qdb für die stage der Zusammenstellung, die Sie wiederverwenden möchten (synthetisiert oder endgültig). Weisen Sie die .qdb einer Partition zu, um diese Ergebnisse in einem anderen Kontext wiederzuverwenden.
Neubindung von Entitäten • PR-Flow – gibt die Entität an, die die Standard-Persona in jeder Implementierungsrevision ersetzt.

• Root-Partitions-Wiederverwendungsablauf – gibt die Entität an, die die reservierte Kernlogik im Verbraucherprojekt ersetzt.

Farbe Gibt die Farbcodierung der Partition in den Anzeigen Chip Planner und Design Partition Planner an.
Postsynthese-Export File Exportiert automatisch Post-Synthese-Kompilierungsergebnisse für die Partition bei jeder Ausführung von Analysis & Synthesis in die von Ihnen angegebene .qdb-Datei. Sie können automatisch jede Designpartition exportieren, die keine beibehaltene übergeordnete Partition hat, einschließlich der root_partition.
Postendgültiger Export File Exportiert automatisch die Ergebnisse der nachträglichen Kompilierung für die Partition in die von Ihnen angegebene .qdb-Datei, jedes Mal, wenn die letzten stage der Monteur läuft. Sie können automatisch jede Designpartition exportieren, die keine beibehaltene übergeordnete Partition hat, einschließlich der root_partition.

AN 903 Dokumentrevisionshistorie

Dieses Dokument hat den folgenden Revisionsverlauf:

Dokumentversion Intel Quartus Prime-Version Änderungen
2021.02.25 19.3 „Pull“ durch „Tension“ ersetzt Analysieren und optimieren Sie Design-RTL Thema.
2020.03.23 19.3 Syntaxfehler in Code s korrigiertample im Thema „Lock Down Clocks, RAMs, and DSPs“.
2019.12.03 19.3 • Erste öffentliche Veröffentlichung.

Dokumente / Ressourcen

Intel AN 903 Accelerating Timing Closure [pdf] Benutzerhandbuch
AN 903 Beschleunigungs-Timing-Schließung, AN 903, Beschleunigungs-Timing-Schließung, Timing-Schließung

Verweise

Hinterlasse einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Pflichtfelder sind markiert *