Technische und Wirtschaftswissenschaftliche Universitt Budapest Lehrstuhl fr Elektronische
Technische und Wirtschaftswissenschaftliche Universität Budapest Lehrstuhl für Elektronische Bauelemente MIKROELEKTRONIK, VIEEAB 00 HDL, Synthese, Verilog, System. C http: //www. eet. bme. hu/~gaertner/Vorlesungen/HDLverilog. ppt http: //www. eet. bme. hu
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Hardware-Beschreibung Sprachen (HDL) ► Überschau ► Synthese ► Verilog ► System. C 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 2
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Entwicklung von HDL-s ► In den 80 -er Jahren wurden die digitalen Schaltkreise so komplex, dass sie auf Transistor- bzw. Gatterebene nicht mehr überschaubar waren ► Es wurde ein Mittel benötigt zur schnellen und effizienten Gestaltung und Prüfung der Entwürfe ► Die Lösung kam in Form von Programmiersprachen (Verilog, VHDL, ABEL, usw. ) ► Diese sind Spezialsprachen, die direkt für die Ansprüche des Hardware-Entwurfs gestaltet wurden ABEL – Avanced Boolean Equation Language – (z. B. Xilinx) 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 3
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Eigenschaften der HDLs ► Sie modellieren, simulieren (und darstellen) die digitale Hardware ► Sie können die konkurrenten Tätigkeiten im Schaltkreis beschreiben (Parallelität) ► Sie wiedergeben den zeitlichen Verlauf der Signale ► Sie unterstützen den modularen Entwurf ► Sie realisieren die unterschiedlichen digitalen Modelle (kombinatorische, synchrone und asynchrone sequentielle Netzwerke) 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 4
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Vorteile der HDLs ► Unterstützung der strukturierten Entwurfsmethoden ► Projekte können flexibel partitioniert werden ► Abstraktion auf hoher Ebene ist möglich ► Einfacher Vergleich von Alternativen ist möglich ► Änderungen können schnell durchgeführt werden ► Bessere Effizienz und Qualität grössere Produktivität beim Entwerfen ► Schneller Prototypenentwurf durch Synthese 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 5
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Entwerfen in HDL ► Günstig für top-down Stil ► High-Level Beschreibung der Funktion (Verhalten) ► Verifizierung durch Simulation ► Identifizierung von kleineren funktionellen Einheiten, Partitionierung, Unterteilung in hierarchische Blöcke ► Verfeinerung bis RTL-Ebene (Register-Transfer Level, Hardwarenahe “quasi-strukturelle” Beschreibung) ► Ständige Prüfung durch Simulation 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 6
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke RTL – Register-Transfer Level ► Das ideale Synthese: § Spezifikation Chip Layout § Das können Programme nur annähern, mit Hilfe des Entwerfers ► Auf System-Ebene ist der Freiheitsgrad der Realisierung sehr hoch. ► Wahl zwischen Software und Hardware. ► Der Syntheser benötigt RTL-Beschreibung, wo Datenlogik, Manipulationen sowie Steuerlogik erkennbar sind (Register, Busse, State-Machine, Boole’sche Gleichungen). 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 7
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Synthese: Funktion Struktur ► Das ist der wichtigste Schritt im Entwerfen ► Umsetzung: einer Funktionellen Beschreibung wird eine Netzliste (Struktur!) zugeordnet, im ersten Schritt mit generischen Schaltungselementen. ► Der zweite Schritt: Mapping. Für die generischen Elemente werden Zellen von der Zellen-bibliothek der spezifizierten Technologie gesucht und substituiert. ► In dieser Phase wird schon die Laufzeit der Signalpfade überprüft, ob sie die Taktperiode überschreitet – Timing Analysis. ► Nachher wird die Funktionalität durch Simulation geprüft. 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 8
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Timing Analysis – Laufzeit Analyse ► Der Syntheser erhält keine Stimuli, nur eine Netzliste ► Kritische Signalpfade werden gesucht ► Restzeiten – Slack-time – werden für den sicheren Betrieb ermittelt. t slack CLK Q Komb. Q D Netzw. D CLK tdff tkomb tsetup tclk 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 9
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Die funktionelle Beschreibung und die generische Synthese ist Technologie-unabhängig! HDL FPGA ASIC 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 10
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Die Geschichte von Verilog ► Diese Sprache hat die Firma Gateway Design Automation 1984 entwickelt (Simulator Verilog-XL) ► Cadence Design Systems hat Gateway Design Automation aufgekauft, und Verilog 1990 veröffentlicht, um damit eine verbreitete Verwendung zu ermöglichen. Dadurch wurde Verilog de facto Standard. ► Die offizielle Standardisierung erfolgte 1995 unter der Betreuung durch die Organisation Open Verilog International (OVI – alias Accelera) – dann wurde Verilog de jure Standard ► 2001 wurde das Standard erweitert: Verilog-2001 ► Von ca. 2005 weiterentwickelt: System Verilog 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 11
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Verilog – Erbschaften von C ► Lexikale Elemente ► Ausdrücke ► Operatoren ► (Zyklische ► Bedingte 25. 02. 2016. PG. Befehle) Zuweisungen IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 12
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Spezialoperatoren 1 ► Anhängeoperator (Concatenation) { }: § Bits oder Bitserien können verkettet werden § Einzelteile müssen durch Komma separiert angegeben werden § Damit können z. B. die Bits eines Registers rotiert werden: Die niedrigen 7 Bits werden oben (MSB) placiert, während das echte MSB zum Bit 0 (LSB) reg [7: 0] rx; always @(posedge CLK) begin if (rotleft) rx <= {rx[6: 0], rx[7]}; end 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 13
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Spezialoperatoren 2 ► Reduktionsoperatoren: § Diese machen die Beschreibung von Gattern mit vielen Eingängen einfacher § Wird die Einoperandversion der Logikoperatoren vor eine Bus-Variante placiert, so werden die Operationen an allen Bits durchgeführt: wire [3: 0] in; wire q; assign q = ∈ 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 14
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Leitungen 1 ► Leitung: das einfachste Schaltkreiselement (wire) ► Sie braucht ständige Steuerung, denn sie hat keinen Speicher ► Dafür gibt es zwei Möglichkeiten: § Kontinuierliche Zuweisung (continuous assignment): • Das ist ein Modell des (kombinatorischen) Schaltnetzes • Wenn sich an der rechten Seite etwas ändert, werden die Zuweisungen sofort aufgefrischt § Anschluss an den Ausgang eines Registers: • Die Register speichern den zugewiesenen Wert, so können sie die angeschlossene(n) Leitung(en) kontinuierlich antreiben 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 15
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Leitungen 2 ► Wenn nicht anders deklariert, werden die Anschlüsse eines Moduls als Leitungen behandelt ► Weitere Leitungen können mittels des Schlüsselworts wire deklariert werden, z. B. einfache Leitungen (AA, BB, Z) und ein 8 -Bit-Bus (CC) ► Die kontinuierliche Zuweisung erfolgt mit assign: wire AA, BB, Z; wire [7: 0] CC; assign Z = AA && BB; 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 16
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Register ► Ein-Bit Speicher ► Zuweisungen können nur durch ein Ereignis stattfinden (z: B. steigende Flanke eines Taktsignals) ► Der zugewiesene Wert wird bis zur nächsten Zuweisung beibehalten ► Deklaration: mittels des Schlüsselwortes reg q; reg [3: 0] cnt; 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 17
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Ereignisgesteuerte Zuweisung 1 ► In einem always Block können Werte, gesteuert durch ein Ereignis, einem Register zugewiesen werden: ► wire clk; Nach dem Zeichen @ wird das reg [7: 0]cnt; Ereignis angegeben always @(posedge clk) begin cnt <= cnt + 1; end Eine steigende Flanke des Signals clk startet die Durchführung der Befehle im Block Ein Befehlsblock befindet sich zwischen den Schlüsselwörtern begin und end 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 18
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Ereignisgesteuerte Zuweisung 2 ► Das System prüft die Bedingungen ständig im Kopf der always Blöcke und bei Erfüllung führt das Befehlsblock im Körper aus ► In einem always können Werte nur Registern zugewiesen werden (in gewissen Fällen kann der Syntheser das Register zur Leitung umgestalten) ► Die always Blöcke innerhalb eines Moduls laufen parallel (konkurrent) ► Es gibt always Blöcke auch ohne Bedingung, die kontinuierlich durchgeführt werden 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 19
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Ein einfaches Beispiel: Zähler module zaehler(clk, reset, q); input clk, reset; Der Ausgang ist ein 8 -Bit-Register output reg [7: 0] q; Das Reset ist synchron, weil das Resetsignal nur bei der steigenden Flanke des Taktes geprüft wird always @(posedge clk) begin if (reset == 1) q <= 0; else q <= q + 1; end Die bedingte Abzweigung (if-else) endmodule funktioniert genau so, wie in anderen Sprachen (z. B. C) 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 20
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Testen – Testbench ► Auch das Testen (Prüfung) erfolgt mit Sprachmitteln ► Ein portloser Modul wird erstellt und simuliert ► Das stellt die Umgebung des zu prüfenden Moduls dar ► Darin wird der zu prüfende Modul instanziert ► Für die Eingänge werden Register definiert, in diesen Registern wird die Testsequenz erstellt ► Eine Testsequenz mit einmaliger Ablauf kann in einem initial Block generiert werden ► Die Leitungen an den Ausgängen werden beobachtet 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 21
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Generierung von aperiodischen Testsignalen ► Die Ausführung des initial Blocks beginnt am Anfang der Simulation ► Die Simulation wird mit $finish beendet ► Nur Registern dürfen Werte zugewiesen werden Das bedeutet eine Verzögerung von fünf reg in; Zeiteinheiten der Simulation initial So können Änderungen in einer Testsequenz zeitlich bestimmt werden begin in = 0; Diese Art Verzögerung ist nicht synthetisierbar #5 in = 1; Das Schlüsselwort $finish beendet die Simulation #500 $finish; end 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 22
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Generierung von periodischen Testsignalen ► Periodische Testsignale können in bedingungslosen always Blöcken generiert werden, ein Anfangswert soll aber in einem initial Block zugewiesen werden ► z. B. ein Rechtecksignal von zehn Zeiteinheiten (Takt): initial clk = 0; always begin #5 clk = !clk; end 25. 02. 2016. PG. Der Wert des Registers clk wird nach fünf Zeiteinheiten invertiert IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 23
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Beispiel: Prüfung des Zählers module tb_zaehler; reg clk, reset; wire [7: 0] q; zaehler z 1(clk, reset, q); initial begin clk = 0; reset = 0; #2 reset = 1; #2 reset = 0; #2600 $finish; end always #5 clk = !clk; endmodule 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 24
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Hierarchischer Aufbau aus Elementen 1 ► In Verilog werden Moduln definiert ► Diese sind Teilschaltkreise mit Ein- und Ausgängen ► z. B. : module AND(in. A, in. B, q); input in. A, in. B; output q; … in. A q endmodule A in. B 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 25
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Hierarchischer Aufbau aus Elementen 2 ► Eine beliebige Anzahl von Moduln kann eingebaut werden– Instanzierung: module Komplex(in, out); 4 -Bit Eingang input [3: 0] in; 2 -Bit Ausgang output [1: 0] out; Name des zu instanzierenden Moduls Individueller Name der Instanz AND a 1(in[0], in[1], out[0]); AND a 2(in[2], in[3], out[1]); endmodule Die einzelnen Bits werden mittels des Index-Operators [ ] selektiert IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 25. 02. 2016. PG. Portliste 26
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Hierarchischer Aufbau aus Elementen 3 module Komplex module AND in[0] in. A a 1 out[0] q in[1] in. B in [3: 0] out [1: 0] module AND a 2 in[2] in. A q in[3] 25. 02. 2016. PG. in. B out[1] IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 27
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Neue Möglichkeiten des Verilog-2001 ► Syntax-Strukturen z. B: von C++ wurden übernommen, § Zusammengefasste Port-Deklaration: output reg [2: 0] aus; § Flexible Port-Listen sind möglich: module mmm(input [7: 0] ein, output reg [2: 0] aus); 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 28
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Verilog Synchron-Sequentieller Stil 1 ► Die Basis ist das Flipflop mit Takt- und Rücksetzsignal. ► Es ist nachdrücklich empfohlen, in die Ereignisliste diese, aber nur diese Signale aufzunehmen. ► Die always Anweisung soll so aussehen: always@(posedge CLK or posedge RES) if (RES) Q <= 0; else begin. . . < alle Aktivitäten, Zuweisung(en) an Q >. . . end 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 29
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Verilog Synchron-Sequentieller Stil 2 ► Wenn die Änderung eines Signals eine Aktivität auslösen soll, soll das in einem if Befehl bewerkstelligt werden. ► Nur so kann einfacher Schaltkreis synthetisiert werden. always@(posedge CLK or posedge RES) if (RES) begin Q <= 0; ZZ <= 0; end else begin ZZ <= KNOPF; if(!ZZ && KNOPF) Q <= Q+1; . . . end 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 30
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Verilog Literatur ► Kollegienhefte vom Lehrstuhl: § www. eet. bme. hu/~nagyg/verilog. pdf § www. eet. bme. hu/~gaertner/Segedanyagok/LXveri. FS. doc ► Andere Quellen: § www. doulos. com/knowhow/verilog_designers_guide/ § www. verilog. net/docs. html § www. asic-world. com/verilog/index. htm § www. ee. lsu. edu/v/refcard. pdf 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 31
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Andere Trends ► So. C – System on Chip ► Hardware-Software ► System 25. 02. 2016. PG. Co-Design – HSCD C IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 32
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Andere Trends – So. C ► So. C = System on Chip § Ein vollständiges System, gebaut auf einem Chip • digitaler Teil • eingebettete Software • analoge Schnittstellen (wenn notwendig) § Homogene Technologie – z. B. alle Hardwarekomponenten CMOS § Es wird auf hoher Abstraktionsebene entworfen • Verilog/VHDL • für Analogteile: die Erweiterungen Verilog-A, VHDL-A § Typisch ist die Verwendung von IP Blöcken § Gemeinsamer Hardware-Software Entwurf: z. B. System. C • Das wurde 2005 standardisiert 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 33
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke “Intellectual Property” Zum Beispiel: A Protocol Processor for Wireless Communication 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 34
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Gemeinsamer Entwurf von Hardware und Software ► ESL: Electronic System Level design ► Das wichtigste Ziel des gemeinsamen HW-SW Entwurfs ist, dass § der Entwurf durch Beschreibung auf hoher Abstraktionsebene besser überschaubar wird, § Fehler leichter zu finden sind, § die HW-SW Partitionierung optimalisiert wird, § die Zeit zur Markteinführung kürzer wird, und § die Entwurfskosten reduziert werden. ► Dafür ist ein günstiges Mittel das System. C ► Eine andere Version: Verwendung von ANSI C, z. B. Mentor Graphics Catapult. C 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 35
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Gemeinsamer Entwurf von Hardware und Software ► System. C: HSCD (hardware-software co-design) ► IEEE Standard ab 2005: IEEE std-1666 -2005 ► Das Ziel ist: HW-SW parallel (gleichzeitig) § Entwerfen § Simulieren § Verifizieren ► Es ist nicht notwendig, mit dem Entwurf der eingebetteten Software die Fertigstellung der Hardware abzuwarten § time-to-market kann reduziert werden ► Der Entwurf kann auf hoher Abstraktionsebene durchgeführt werden 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 36
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Das System. C ► Das System. C ist eine C++ Bibliothek und Methoden, die recht effizient verwendet werden können zum § Erstellen von Software-Algorithmen, § Modellieren von Hardware-Architekturen, sowie § Realisieren der Schnittstellen von So. C und System-Level Modellen. ► Durch Verwendung von Entwurfsumgebung für System. C und traditionelles C++ können Modelle auf System-Ebene beschrieben werden, diese können leicht simuliert und optimalisiert werden. ► Das System-Modell ist ein C++ Programm, das beim Laufen dasselbe produziert als das System selber 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 37
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke Die Komponenten von System. C ► ► ► ► Modul: ist ein container, das andere Moduln und process-e enthalten kann Process: beschreibt eine gegebene Funktionalität Signal: sowohl das 2 -Werte (0, 1) als auch das 4 -Werte (0, 1, X, Z) Logik wird unterstützt Port: Signalanschluss Datentypen – vielerlei Typen können gebraucht werden Taktsignal: Spezialsignal zum Modellieren der Zeit Simulationskernel – Ermöglicht eine schnelle Simulation (compiled Kode) Signal-Monitoring: § VCD (Value Change Dump), § WIF (Waveform Intermediate Format) und § ISDB (Integrated Signal Data Base) Dateiformate werden unterstützt 25. 02. 2016. PG. IC tervezés 3 © Poppe András – Nagy Gergely, PG. BME-EET 2016 38
- Slides: 38