Logik-Design mit FPGAs und SoCs

So nützen Sie XDC-Timing-Constraints in FPGA-Designs richtig

Seite: 3/5

Anbieter zum Thema

Da der Multicycle Path sowohl für Setup als auch Hold eingesetzt werden kann, hat man hier die freie Wahl, wo man ihn einsetzen will. Wenn man einen Setup Multiplier deklariert, ist es oft am besten, auch einen Hold Time Multiplier über die folgende Gleichung zu deklarieren:

hold cycles = setup multiplier – 1 – hold multiplier
Bildergalerie

Was dies für das hier verwendete einfache Beispiel bedeutet, zeigt die folgende Gleichung zur Definition des Hold Multipliers (Wenn man einen gemeinsamen Takt verwendet):

hold multiplier = setup multiplier – 1

Als Demonstration, welche Bedeutung die Multicycle Paths haben, benutzen wir ein einfaches Beispiel, das in diesem GitHub-Repository kostenlos zum Download bereitsteht. Die hierin befindliche XDC-Datei enthält ein Beispiel, das zwei deklarierte Multicycle Paths enthält, sowohl für Setup als auch für Hold.

Physische Constraints

Die am häufigsten eingesetzten physischen Constraints finden sich in der Platzierung von I/O-Pins und in der Definition der ihnen zugeordneten Parameter, etwa die Standard-Treiberfähigkeit. Es gibt aber noch andere Arten von physischen Constraints, wie Platzierung, Routing, I/O und Konfiguration. Placement Constraints ermöglichen die Definition der Anordnung von Zellen, während die Routing Constraints die Definition des Signal-Routing erlauben. Mit I/O Constraints definiert man die Anordnung von I/Os und deren Parameter. Die Konfigurations-Constraints schließlich zeigen einen Weg zur Definition der gewünschten Konfigurationsverfahren.

Wie immer gibt es auch hier einige Constraints, die nicht in diese genannten Gruppen passen. Die Vivado Design Suite umfasst drei dieser Constraints, die im Wesentlichen mit der Netlist genutzt werden:

  • DONT_TOUCH – Diese Bedingung wird eingesetzt, um Optimierungen zu unterbinden. Sie kann von großem Nutzen sein, wenn man ein sicherheits-kritisches oder hoch zuverlässiges System implementiert.
  • MARK_DEBUG – Diese Bedingung wird eingesetzt, um ein RTL-Netz so lange zu erhalten, dass es später zum Debugging verwendet werden kann.
  • CLOCK_DEDICATED_ROUTE – Diese Bedingung identifiziert eine Verbindung für das Takt-Routing.

Die am häufigsten eingesetzten Constraints beziehen sich auf die I/O-Platzierung und I/O-Konfigurierung. Die Platzierung eines I/O auf einem FPGA involviert den Einsatz von Placement-Constraints zur physischen Platzierung der Pins und von I/O-Constraints zur Konfiguration der I/O-Eigenschaften, wie I/O-Standard, Flankensteilheit, etc.

(ID:44009087)