Logik-Design mit FPGAs und SoCs So nützen Sie XDC-Timing-Constraints in FPGA-Designs richtig

Autor / Redakteur: Adam Taylor * / Sebastian Gerstl

Timing- und Placement-Constraints sind ein wichtiger Faktor, wenn man vorgegebene Entwicklungsanforderungen optimal erfüllen will. Dieser Artikel soll als Einführung in den besten Einsatz dieser Design-Bedingungen dienen.

Firmen zum Thema

Timing- und Placement-Constraints sind ein wichtiger Faktor, wenn man vorgegebene Entwicklungsanforderungen optimal erfüllen will. Grundsätzlich gilt: Die Deklaration eines Multicycle Path resultiert in einer besseren und weniger restriktiven Timing-Analyse. Dadurch wird die Timing Engine frei für andere kritischere Pfade.
Timing- und Placement-Constraints sind ein wichtiger Faktor, wenn man vorgegebene Entwicklungsanforderungen optimal erfüllen will. Grundsätzlich gilt: Die Deklaration eines Multicycle Path resultiert in einer besseren und weniger restriktiven Timing-Analyse. Dadurch wird die Timing Engine frei für andere kritischere Pfade.
(Bild: Xilinx)

Der korrekte Abschluss des RTL-Designs ist ein wichtiger Teilschritt auf dem Weg zur Fertigungsreife eines FPGA-Designs. Die nächste Herausforderung besteht in der Sicherstellung der Timing- und Performance-Anforderungen des Bausteins. Oft muss man dazu muss man die Timing- und auch die Placement-Constraints definieren. Ein Blick auf die Erstellung und den Einsatz dieser beiden Bedingungen beim Systementwurf mit Xilinx FPGAs und SoCs ist dazu aufschlussreich.

Timing Constraints

Im einfachsten Fall definieren Timing Constraints die Betriebsfrequenz für den Takt (oder die Takte) des zu entwickelnden Systems. Höher komplexe Constraints können außerdem die Beziehungen zwischen den Taktpfaden etablieren. Als Entwickler muss man diese Arten von Constraints berücksichtigen, um zu entscheiden, ob man den Pfad analysieren muss oder – falls keine gültige Zeitbeziehung zwischen diesen Taktpfaden besteht – darauf verzichtet.

Bildergalerie

In ihrer Grundeinstellung analysiert die Xilinx Vivado Design Suite alle diese Beziehungen. Allerdings haben nicht alle Takte in einem Design eine Timing-Beziehung, die sich genauer analysieren lässt. Ein Beispiel dafür sind asynchrone Takte, da eine genaue Bestimmung ihrer Phase nicht möglich ist (siehe Bild 1).

Man kann die Beziehungen zwischen den Taktpfaden mit Hilfe einer Constraint-Datei und der Deklaration von Taktgruppen einrichten. Wenn eine Taktgruppe deklariert wird, führen die Vivado-Tools keine Timing-Analyse in beiden Richtungen zwischen den darin definierten Takten durch. Um die Generierung von Timing Constraints zu unterstützen, definieren die Vivado Tools geeignete Takte in drei möglichen Kategorien: synchron, asynchron oder nicht expandierbar.

  • Synchrone Takte haben eine vorhersagbare Timing/Phasenbeziehung. Dies ist normalerweise bei einem primären Takt und seinen abgeleiteten Takten der Fall, da sie auf einer gemeinsamen Erzeugung (root) beruhen und eine gemeinsame Periode haben.
  • Asynchrone Takte haben keine vorhersagbare Timing/Phasenbeziehung. Das ist häufig der Fall bei unterschiedlichen primären (und den von ihnen abgeleiteten) Takten. Asynchrone Takte beruhen auf unterschiedlichen Roots.
  • Zwei Takte sind nicht expandierbar, wenn sie bei über 1.000 Zyklen keine gemeinsame Periode erkennen lassen. Ist dies der Fall, wird die Worst-Case Setup-Beziehung über diese 1.000 Zyklen verwendet. Dabei besteht allerdings keine Gewähr, dass dies die wirkliche Worst-Case-Bedingung ist.

Um herauszufinden, welche Art von Takt aktuell vorliegt, nutzt man am besten den Clock Report, den Vivado erstellt. Dieser Report hilft bei der Identifizierung von asynchronen und nicht expandierbaren Takten.

(ID:44009087)