10 <strong>VHDL</strong> und Synthese<strong>VHDL</strong> als Hardwarebeschreibungssprache deckt mit seinen Ausdrucksmoglichkeiten alleim (digital) IC-Entwurf verwendeten Abstraktionsebenen ab. So kann das Verhalten kompletterSysteme mit abstrakten Datentypen modelliert (und simuliert) werden, wahrendandererseits Netzlistenbeschreibungen mit Datentypen '0' und '1' einen Aufbau aus Logikgatternnachbilden. Damit ist <strong>VHDL</strong> der ideale Ausgangspunkt fur Synthesewerkzeuge,da Ein- und Ausgabe der Programme in <strong>VHDL</strong> erfolgen kann, wobei abhangig von derenMoglichkeiten eine mehr oder minder abstrakte <strong>VHDL</strong>-Beschreibung verarbeitet wird.Synthese bezeichnet hier die Transformation von Verhaltensbeschreibungen in Strukturbeschreibungenaus Elementen niedrigerer Abstraktionsebenen | im Idealfall aus Elementeneiner Zellbibliothek eines Herstellers. Da sich mit zunehmender Abstraktion mehrFreiheitsgrade in Bezug auf Entwurfsentscheidungen ergeben, wird der Suchraum fur moglicheLosungen immer groer. Aber selbst auf der Logikebene hat man schon den tradeozwischen Platz und Geschwindigkeit: kleine Losungen mit wenig Elementen, die aber durchMehrfachbenutzung der Gatter viele Stufen umfassen , schnelle Schaltnetze mit wenigenStufen (im Idealfall: zweistug), die aber sehr gro sind.In kommerziellen Werkzeugen wird heutzutage die Logiksynthese (Schaltnetze), dieSynthese von Datenpfaden (Register, Funktionseinheit, Register, :::) und die Syntheseendlicher Automaten (synchrone Schaltwerke) relativ problemlos beherrscht. Bei funktionalenBeschreibungen hoherer Ebenen zeigen Werkzeuge, die uberwiegend aus dem universitarenBereichkommen, eine (notwendige) Spezialisierung | bezuglich der Zielarchitekturen,wie auch der Einsatzbereiche bzw. Aufgabenstellung ) Einschrankung des Suchraums.Wie schon angedeutet wurde, ist nicht jede <strong>VHDL</strong>-Beschreibung sinnvoller und/odermoglicher Ausgangspunkt fur Synthesetools. Man spricht deshalb auch oft von synthesisreadycode. Das heit:1. Die Eingabe mu sich auf einem Level benden, da sie von den CAD-Werkzeugenverarbeitet werden kann | zur Zeit sind dies Beschreibungen, die im Bereich derRegister-Transfer Ebene anzusiedeln sind. Gegebenenfalls mussen, im Sinne einesTop-Down Entwurfs, erste Verfeinerungen schon "von Hand\ gemacht worden sein.2. Die Eingabe mu gut synthetisierbar sein. Hinter dieser Aussage verbirgt sich dieganze Kunst beim Umgang mit Synthesewerkzeugen. Wie in Programmiersprachenlassen sich auch in <strong>VHDL</strong> Verhaltensweisen auf viele verschiedene Arten ausdrucken,wobei abhangig vom Werkzeug einige besonders gut fur die Synthese geeignet sind,wahrend andere als "nicht synthethisierbar\ eingestuft werden oder nur zu inezientenHardwarelosungen fuhren.Neben der Art der Sprachbeschreibung wirken sich vor allem noch zwei weitere Einusseauf das Syntheseergebnis aus. Dies ist zum einen die Zielbibliothek { welche Elementestellt ein Hersteller zur Verfugung {, zum anderen die Art und Weise, wie der Benutzerden Syntheseproze gesteuert hat. So bieten die meisten Systeme vielfaltige Moglichkeitenum Randbedingungen einzustellen, wie:57
{ Schranken fur die Flache (area){ Schranken fur Signallaufzeiten (delay, transition time, arrival time){ Zeitabhangigkeiten zwischen Signalen (clock to data){ Belastung vorangeschalteter Stufen (load){ Treiberleistung (fanout)Durch die Angabe solcher Randbedingungen wird einerseits der Suchraum des Synthesesystemseingeschrankt, zum anderen konnen Anforderungen der spateren Schaltungsumgebungberucksichtigt werden ) schneller, gezieltere Ergebnisse.Da der "synthetisierbare\ Sprachumfang von <strong>VHDL</strong> von dem verwendeten Werkzeugabhangt, folgen jetzt nur einige allgemeine Anmerkungen zu Strategien bei der Syntheseund zu der Umsetzung von Sprachkonstrukten.Verzogerungszeiten : sind bei Signalzuweisungen, in Bezug auf die Synthese, unsinnig,da sich die absoluten Zeitangaben nicht in Hardware realisieren lassen.Beispiel:C
- Seite 1 und 2:
VHDL KurzbeschreibungA. MaderUniver
- Seite 3 und 4:
10.1.2 VHDL-Prozesse : : : : : : :
- Seite 5 und 6:
1.2 Design-ParadigmenDer eigentlich
- Seite 7 und 8:
Syntax:entity entity name is[generi
- Seite 9 und 10: DatenuBei dieser Beschreibung wird
- Seite 11 und 12: Ublicherweise wird fur die Simulati
- Seite 13 und 14: Integer : Zahlen sind moglichvon ,2
- Seite 15 und 16: Nachfolgend werden einige Eigenscha
- Seite 17 und 18: Es lassen sich auch Arrays von Arra
- Seite 19 und 20: Zugristypen : Wie Zeiger in Program
- Seite 21 und 22: Bereichefunction VEC2INT (INVEC: bi
- Seite 23 und 24: Bei der Deklaration konnen die Wert
- Seite 25 und 26: Da VHDL streng typisiert ist, musse
- Seite 27 und 28: 5 Sequentielle BeschreibungenDie ze
- Seite 29 und 30: Moglichkeiten fur choicesvalue => s
- Seite 31 und 32: Wait : kontrolliert dynamisch die A
- Seite 33 und 34: In dem folgenden Beispiel wird ein
- Seite 35 und 36: Beispiel: function DECR (X: integer
- Seite 37 und 38: 6 SignaleWahrend die VHDL-Elemente
- Seite 39 und 40: Aktivierung der Zuweisung :Obwohl S
- Seite 41 und 42: Untertyp mit Auosungsfunktionsubtyp
- Seite 43 und 44: Beispiel: entity DFLOP is D-Type FF
- Seite 45 und 46: Beispiel: process (A, B) sensitivit
- Seite 47 und 48: | ist aquivalent zu|architecture ..
- Seite 49 und 50: SETRESET---ABABU1! d CXXXXXXXX-! d
- Seite 51 und 52: Beispiel:architecture S of COMPARE
- Seite 53 und 54: Beispiel: configuration ONE of XR2
- Seite 55 und 56: Generische Werte werden bei der Dek
- Seite 57 und 58: 9 Libraries und PackagesEin package
- Seite 59: Zusatzliche Libraries und Packages
- Seite 63 und 64: 10.1.1 Behandlung von Beschreibungs
- Seite 65 und 66: 10.1.2 VHDL-ProzesseDas entscheiden
- Seite 67 und 68: Variablen : Als Zwischenspeicher be
- Seite 69 und 70: Latch mit asynchronem Setprocess (S
- Seite 71 und 72: nur einen Takt : die Benutzung mehr
- Seite 73 und 74: SYNCH: processProze fur synchrone E
- Seite 75 und 76: ASyntaxbeschreibungAnmerkung:Der An
- Seite 77 und 78: A.2 Bibliothekseinheitenentity decl
- Seite 79 und 80: package declarationpackage identier
- Seite 81 und 82: conguration declarationconfiguratio
- Seite 83 und 84: port declarationport (identier list
- Seite 85 und 86: subtype declarationsubtype identier
- Seite 87 und 88: constant declarationconstant identi
- Seite 89 und 90: le declarationfile identier : type
- Seite 91 und 92: subprogram declarationprocedure sub
- Seite 93 und 94: attribute declarationattribute iden
- Seite 95 und 96: A.4 Spezikationenattribute specicat
- Seite 97 und 98: disconnection specicationdisconnect
- Seite 99 und 100: use clauseuse selected name f, sele
- Seite 101 und 102: assertion statementassert condition
- Seite 103 und 104: variable assignment statementtarget
- Seite 105 und 106: if statementif condition thensequen
- Seite 107 und 108: loop statement[loop label:][while c
- Seite 109 und 110: exit statementexit [loop label][whe
- Seite 111 und 112:
null statementnull;C CCCCCCCCCCCCCC
- Seite 113 und 114:
process statement[label:] process [
- Seite 115 und 116:
concurrent assertion statement[labe
- Seite 117 und 118:
component instantiation statementla
- Seite 119 und 120:
A.8 Vordenierte AttributeAttribut P
- Seite 121 und 122:
A.9 Reservierte Bezeichnerabs eleme
- Seite 123:
Index:=, 79, 80, 84, 85, 87, 100, 1