Synthese

[ASICs]  [Chip Typen]  [Chip Aufbau]  [Entwicklung]  [Schnittstellen]  [Glossar]
 
     [Modellierung]  [Strategie]  [Synthese]  [ASIC Test]  [VHDL-Kurs]  [Beispiel]

SyntheseWas ist eine Synthese?

Die Synthese ist ein Vorgang, bei dem mehr oder weniger automatisch mit Hilfe von einem Computer-Programm aus einer abstrakten Beschreibung einer logischen Schaltung (z.B. in VHDL) die Netzliste der Schaltung erzeugt wird. Diese entspricht - von einigen Anpassungen im Layout einmal abgesehen - funktional dem später produzierten physikalischen Chip. Die Schaltung nach der Synthese besteht aus Elementen der benutzten ASIC-Library, die vorwiegend aus folgenden beiden Basisgruppen aufgebaut ist:

  • Gatter (Gates bzw. kombinatorische Logik; der Zustand der Gatterausgänge wird alleine durch die Zustände der Eingangssignale bestimmt)
  • FlipFlops (sequentielle Logik, Speicherelemente mit einem eigenen internen Zustand)

Andere Elemente, die deutlich komplexer sind und nicht ohne weiteres aus einer abstrakten Beschreibung aus Basiselementen erzeugt werden können, müssen in dem RTL-Code mit Aufruf ihrer Elementbezeichnung plaziert (instantiiert) werden. Beispiele solcher Elemente sind neben weiteren möglichen komplexen digitalen oder analogen Funktionsblöcke:

  • RAMs (Random Access Memory; schreib- und lesbare Speicher)
  • ROMs (Read Only Memory; nur lesbare Speicher mit fest programmierten Inhalt)
  • PLLs (Phase Locked Loop; analoge Schaltung zur Erzeugung von Taktsignalen)
  • ADCs und DACs (Analog-Digital Converter bzw. Digital-Analog Converter)

Das folgende Bild zeigt das Ergebnis der Synthese des in dem Beispiels beschriebenen Zählers: Die Netzliste als Grafik dargestellt. Zu erkennen sind links die vier Eingangssignale und rechts die vier Ausgangssignale. Die blau gezeichneten Linien sind die elektrischen Verbindungen zwischen den logischen Elementen (sequentielle und kombinatorische Logik). RAMs oder andere komplexeren Funktionsblöcke sind in diesem Beispiel nicht vorhanden.

Netzliste des Zählers

Steuerung der Synthese
Eine logische Schaltung mit einer ganz bestimmten Funktionalität kann nahezu auf unendlich viele Arten und Weisen aufgebaut bzw. implementiert werden. Bestimmte Implementationen können u.U. als gut bezeichnet werden, während andere nicht gut sind, da sie z.B. deutlich mehr Elemente als andere Implementationen benötigen oder vom Zeitverhalten her deutlich zu langsam sind und z.B. mit der angestrebten Taktrate nicht funktionieren können.
Die Randbedingungen der Synthese werden über bestimmte Eingabeparameter, die so genannten Constraints, bestimmt. Die Constraints steuern verschiedene Optimierungsstrategien der Synthese:

  • Zeitverhalten der Schaltung (Timing Constraints)
    Das Zeitverhalten definiert die Geschwindigkeit der Schaltung in allen ihren Unterbereichen. Als Unterbereiche können verschiedene so genannte Clock-Domains betrachtet werden, die jeweils von einem eigenen Takt mit jeweils unterschiedlichen nicht synchronen Frequenzen betrieben werden.
    • Clocks
      Diese Constraints definieren zum einen die Frequenz des Taktes, zum anderen die Form (Zeitpunkt der steigenden bzw. fallenden Flanke, Duty Cycle) des Taktsignals, als auch die Phasenbeziehung zu anderen definierten Takten.
    • Signalverzögerung (Input und Output Delays)
      Diese Constraints definieren die zu erwartenden Phasenverschiebungen von Eingangs- signalen bzw. die erlaubten Phasenverschiebungen von Ausgangssignalen jeweils bezogen auf ihr Taktsignal.
    • Pfade, die keine Zeitvorgaben benötigen
      Auch wenn dieser Constraint-Typ auf den ersten Blick eher unkritisch oder gar unwichtig erscheint, ist er doch für die Synthese extrem wichtig. Da das Synthese-Werkzeug nicht von sich aus oder aufgrund der anderen Constraints erkennen kann, daß an manchen Stellen der Schaltung auf bestimmte Vorgaben verzichtet werden kann, muß man dieses über die Constraints mitteilen. Fehlen diese, würde die Synthese in Bereichen der Schaltung überflüssigerweise optimieren, was häufig zu einer deutlich größeren Schaltung führt. Ein weitaus kritischerer Fall liegt vor, wenn die vermeintliche Optimierung zusammen mit den echten Constraints nicht bewerkstelligt werden kann und die Optimierung zu Verletzungen in Bereichen der Schaltung führt, die nicht toleriert werden können.
  • Größe der Schaltung (Area Constraints)
    Area Constraints bestimmen die maximale Größe der zu synthetisierenden Schaltung, die in der Einheit der verwendeten ASIC-Library gemessen wird (in Gates oder Grid).
    Area Constraints werden mit niedrigerer Priorität behandelt als die oben beschriebenen Timing Constraints. D.h. in erster Linie wird die Schaltung so aufgebaut, daß sie die Vorgaben der Timing Constraints erfüllt. Ist eine auf die Fläche bezogene Optimierung der Schaltung nur mit einer Verletzung der Timing Constraints zu erreichen, wird diese nicht durchgeführt und ergibt eine Violation (Verletzung).

Werden keine Constraints für die Schaltungssynthese vorgegeben, wird häufig auf eine möglichst kleine Fläche hin optimiert ohne auf ausgewogene Signallaufzeiten zu achten.

Bewertung einer Netzliste
Für die Umsetzung von der abstrakten RTL-Beschreibung in eine Netzliste stellt sich die Frage, wie die Synthese die entstehende Netzliste charakterisiert, d.h. wie und woran wird gemessen, wie gut diese Netzliste ist und ob sie noch in Hinblick auf Größe oder Geschwindigkeit verbesserungswürdig ist?

Schaltungsgröße
Die Größe einer Schaltung auf dem späteren Chip wird im Wesentlichen durch die folgenden zwei Bestandteile bestimmt:

  • Summe der Größen aller benutzten Elemente aus der Schaltung
  • Flächenaufwand für die Verdrahtung der Elemente untereinander

Während der erste Teil in der Synthese leicht aus den Größenangaben der verwendeten Library aufsummiert werden kann und einen exakten Wert ergibt, muß man sich für den zweiten Teil in der Synthese nur mit einer Abschätzung zufrieden geben, da sich dieser Wert erst in der späteren Layout-Phase manifestiert. Deshalb wird während der Synthese der Flächenbedarf für die elektrischen Verbindungen häufig ignoriert und sich bei den Größenangaben nur auf den ersten Teil bezogen.
Für eine Zuordnung der benötigten Siliziumfläche wird jedoch indirekt dieser Verdrahtungsaufwand berücksichtigt. Da Chip-Größen neben dem Raw Gate Count (maximale Anzahl von plazierbaren Gates ohne Verdrahtung)  auch in Usable Gate Count (durchschnittliche Anzahl von benutzbaren Gates; die Differenz zum Raw Gate Count wird als Verdrahtungsaufwand angenommen) angegeben werden, beinhaltet dieses Modell Usable Gate Count implizit einen nötigen Verdrahtungsaufwand. Der reale Aufwand im späteren Lyout-Prozeß ist dabei aber nicht einzig von der puren Anzahl der elektrischen Verbindungen abhängig, sondern noch von vielen weiteren Parametern. Einige davon sind:

  • Schaltungsstruktur (regelmäßige oder unregelmäßige Verbindungsstrukturen)
  • Partitionierung im Layout (Design Planning; Aufteilung und Positionierungen von Schaltungs- blöcken)
  • Geschwindigkeit der Schaltung (eine hohe Geschwindigkeit verlangt kurze Verbindungen)
  • Layout Flow (flaches oder hierarchisches Layout)

Schaltungsgeschwindigkeit
Auch die Geschwindigkeit wird aus zwei wesentlichen Bestandteilen zusammengesetzt:

  • Verzögerung innerhalb der Elemente (Intrinsic Delay)
  • Verzögerung aufgrund der elektrischen Verbindungswege

Intrinsic Delay, oder die Signalverzögerung von einem bestimmten Eingang zu einem bestimmten Ausgang des gleichen Elements wird meistens noch abhängig von der betrachteten Signalflanke gegeben (unterschiedliche Geschwindigkeiten für steigende oder flallende Signalflanke). Diese interne Verzögerung ist jedoch abhängig von der getriebenen Last des Ausgangs, und damit von der:

  • Anzahl der getriebenen Eingänge anderer Elemente (Eingangskapazität)
  • parasitären Last der elektrischen Verbindung zwischen dem treibenden Ausgang und den angeschlossenen Eingängen. Diese Last steigt linear mit der Länge der angeschlossenen Leiterbahn

Auch hier tritt wieder der Fall ähnlich wie bei der Größenberechnung auf: Während die Summen der Eingangskapazitäten aus der ASIC-Library bekannt sind und leicht berechnet werden können, muß die Kapazität der Verbindungsleitungen zwischen den Elementen abgeschätzt werden. Es gilt: je größer die Fläche der Schaltung (oder eines Teils von ihr), umso länger die durchschnittliche Verdrahtung zwischen den beteiligten logischen Elementen. Diese Erkenntnis und die Erfahrungen aus vielen Layout-Prozessen spiegelt sich in den so genannten Wireload Modellen wieder, die mit in den Synthesevorgang eingespielt werden müssen. Diese stellen die Grundlage der Berechnung der Signalverzögerungen aufgrund der abgeschätzten Verbindungslasten dar. Die für die Schaltung oder die eines Schaltungsteils zu benutzenden Wireload Modelle bestimmt sich aus dem Gate Count (s.o.) des Schaltungsteils.

Physikalische Synthese
Eine Verbesserung der Zeit- und Flächenabschätung während der Synthese mit Wireload Modellen stellt die so genannte physikalische Synthese (Physical Synthesis) dar. Hier werden die Verbindungslängen nicht über durchschnittlichen und damit ungenaue Werte eines Wireload Modells herangezogen. Die physikalische Synthese beinhaltet einen Teil des traditionellen Layouts, das Placement der Schaltungselemente. Dadurch, daß jedem Element während der Synthese auch eine Position auf der Chipfläche zugewiesen wird, kann ein mehr oder weniger exacter Abstand zwischen zwischen den Ein- und Ausgängen ermittelt werden, die miteinander verbunden werden sollen. Damit ist die Leitungslänge deutlich genauer bestimmbar als durch die Wireload Modelle. Absolut genau ist jedoch auch dieser Synthese-Flow nicht, da das Routing - also die detaillierte Erstellung der Verbindungsleitungen - erst nach der Synthese stattfindet. Auf die Details des Routings wird während der physikalischen Synthese nicht eingegangen.

Kritischer Pfad
Ein Detail der Geschwindigkeitsanalyse nach der Synthese ist der so genannte Kritische Pfad. Dieser gibt denjenigen Signalpfad wieder, der bezogen auf die angelegten Constraints den kritischten Wert hat und somit die geringste Reserve für die Signallaufzeit besitzt. Der kritische Pfad gibt somit eine Abschätzung, wie nah sich die Schaltung an den gesetzten zeitlichen Vorgaben der Constraints befindet.

BlockstrukturVorgehensweisen bei der Synthese (Synthese Flow)
ASICs haben oft eine z.T. enorme Größe bzgl. des Gate Counts. Mehrere Millionen Gates sind keine Seltenheit mehr. Daher ist es in solchen Fällen nicht sinnvoll, den gesamten RTL-Code des ASICs in einem einzelnen Durchlauf zu synthetisieren. Da ASICs meistens aus vielen unterschiedlichen funktionalen Blöcken bestehen, bietet es sich für die Synthese an, diese Blöcke jeweils einzeln zu synthetisieren und am Ende zu der Gesamtschaltung des ASICs zusammenzufügen (s. Bild). Dieses Vorgehen wird durch Top-Down Strategie bei der Entwicklung des RTL-Codes unterstützt.
Der Nachteil dieses Synthese-Flows ist der erhöhte Aufwand in der Gestaltung der Constraints. Wo vorher nur die Constraints bezogen auf die Ports des ASICs zu erstellen war, muß nun für jeden Block ein Satz von Constraints erstellt werden. Das eigentliche Problem dabei ist nicht die Anzahl der Constraints, sondern vielmehr die Ausgewogenheit der Constraints zwischen den einzelnen funktionalen Blöcken. Hiermit ist gemeint, daß die Verzögerungszeiten von Signalen, die über eine oder mehrere Blockgrenzen (= Synthesevorgänge) hinweg verlaufen, passend auf die verschiedenen Blöcke aufgeteilt werden müssen. Dieses wird umso kritischer, je größer der Verdrahtungsaufwand auf Toplevel zwischen den einzeln synthetisierten Blöcken ist. Je größer der Aufwand, umso unvorhersagbarer sind die Signallaufzeiten zwischen den Blöcken für die Synthese und das spätere Layout.
Diesem Problem kann z.T. schaltungstechnisch entgegengewirkt werden indem z.B jeder Blockeingang mit einem FlipFlop beginnt und jeder Blockausgang durch ein FlipFlop abgeschlossen wird. Durch diese Konstruktion befindet sich auf dem Toplevel des ASICs keine kombinatorische Logik und die maximal mögliche Signallaufzeit von nahezu einem Systemtakt kann von der Verzögerung der elektrischen Verbindungen zwischen den zwei beteiligten FlipFlops aufgebraucht werden.

Datei-Formate für Netzlisten
Nach der Synthese wird die Netzliste in einer Datei an den nächsten Schritt der ASIC-Entwicklung weitergegeben. Je nach Design-Flow wird entweder die Teststruktur eingebaut (DFT Insertion) oder mit dem Layout begonnen. Die DFT-Logik für den ASIC Test, insbesondere die BIST-Strukturen können u.U. auch mit Mitteln der Synthese erzeugt werden
Gängige Formate für Netzlistendateien sind VHDL- oder Verilog-Beschreibungen. Ein weiteres Format ist EDIF (Electronic Data Interchange Format). Welches Format benutzt wird ist vor allem von der Software des nächsten Schrittes in dem ASIC-Flow abhängig.

 

[Home] [ASICs] [Selbstmanagement] [Inselmeer] [Spiele]
[Ich über mich] [Links] [SiteMap] [Disclaimer]