Technische und Wirtschaftswissenschaftliche Universität Budapest Lehrstuhl für Elektronische Bauelemente MIKROELEKTRONIK, VIEEAB00 Entwurf auf FPGA, Verilog, SystemC
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Entwurf auf FPGA
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Kosten von Standardzellen-ICs ► Die Kosten der vollen Si Technologie sind zu bezahlen Der volle Satz der Masken muss erstellt werden (NRE) Die vollen Kosten der Bearbeitung des Si treten auf; proportional der Si Fläche ► Verpackungskosten proportional der Anzahl der Anschlüsse des IC hängen von der Schwierigkeiten der Verpackung ab ► Testkosten Scheibentest – als Teil der Kosten für Scheibenfertigung im Rahmen von small volume production liefern MPW Broker getestete Scheiben Endtest-Kosten – diese können durch DFT (Design for Testability, siehe später) reduziert werden
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Oder: Ausführung auf FPGA ► Ausgang: die Idee von gate array bleibt, aber die Verbindungen werden nicht durch Photomasken programmiert – nicht mit Metallisierungsgebilde (starke Reduzierung von NRE Kosten) das Grundelement ist: logic array block ► Statt dessen: die Architektur des Verbindungsnetzes wird vorweg aufgebaut, die Verbindungen werden programmiert Durchschmelzen von Sicherungen – oder günstiger ist die antifuse Technik (niederohmiger Kontakt durch Durchbrennen einer Isolationsschicht) Speicherung der Verbindungen in SRAM Vorweg gestaltete I/O Schaltkreise ► Die modernen FPGAs enthalten auch sehr komplexe Blöcke (RAM, DSP Block,...)
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Beispiel von Altera: Stratix
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Altera Stratix
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET z.B.: Xilinx Virtex-5 ► 65-nm CMOS Technologie ► 12 Metallschichten ► 1.0V core Voltage ► 36-Kbit Block RAM/FIFO ► I/O Betrieb: 1.2 bis 3.3V ► RocketIO GTP transceivers 100 Mb/s Gb/s ► PCI Express Endpoint Blöcke ► 10/100/1000 Mb/s Ethernet ► On-chip Temperaturmonitoring ► On-chip Versorgungsmonitoring
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Prozess des Entwurfs von FPGA-s: Systembeschreibung Spezifikation in SystemC. HW-SW co-design System Simulation Entwurf auf System- Ebene High-Level Syntheis Timing Parameter Abstraktionsebene:Repräsentation: Simulator: Verhaltensbeschreibung Spezifikation in VHDL oder in Verilog Funktionale Verifikation Strukturelle Beschreibung in VHDL oder Verilog Logik-Simulation Mapping und Layouterstellung Entwurf auf Logik- Ebene Physikalischer Entwurf (Layout) Erstellung von Timing Data Entwurf auf Transistor- Ebene Das Entwerfen konzentriert sich hier Das bleibt aus, es wird ein Programmcode generiert, das die Verbindungen repräsentiert
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Programmierung – Entwurf von FPGA-s Programmierungsprache Compiler Object Dateien Linker Ausführbare Datei HDL Synthese „Placierung und Verdrahtung" Netzliste Bit-Datei Software FPGA hardware
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET VHDL Muster:
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Verilog Muster
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Synthese Netlist RTL HDL
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Hardware-Beschreibung Sprachen (HDL) ► Überschau ► Verilog ► Kurz über SystemC
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Entwicklung von HDL-s ► In den 80-er Jahren wurden die digitalen Schalt- kreise so komplex, dass sie auf Transistor- bzw. Gatterebene nicht mehr überschaubar waren ► Es wurde ein Mittel gebraucht 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 sind
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Die Geschichte von Verilog ► Diese Sprache hat die Firma Gateway Design Automation 1984 entwickelt (Simulator Verilog-XL) ► Diese Firma hat Cadence Design Systems aufge- kauft, und 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
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Eigenschaften der HDLs ► Sie sind spezielle Programmierungssprachen ► Sie modellieren, simulieren (und darstellen) die digitale Hardware ► Sie können das konkurrente Funktionieren beschreiben (Parallelität) ► Sie wiedergeben den zeitlichen Verlauf der Signale, behandeln die hardwarenspezifische Signal-Pegel ► Sie realisieren einfach die unterschiedlichen digita- len Modelle (kombinatorische, synchrone und asynchrone sequentielle Netzwerke) ► Unterstützen den modularen Entwurf
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Vorteile der HDLs ► Unterstützung der strukturierten Entwurfsmethoden ► Projekte können flexibel partitioniert werden ► Auf Grund der Sprachbeschreibung kann der Schaltplan generiert werden, wenn notwendig ► 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
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Hierarchischer Aufbau aus Elementen 1 ► In Verilog werden Moduln definiert ► Diese sind Teilschaltkreise mit Ein- und Ausgängen ► z.B.: module AND(inA, inB, q); input inA, inB; output q; … endmodule A inA inB q
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Hierarchischer Aufbau aus Elementen 2 ► Eine beliebige Anzahl von Moduln kann eingebaut werden– Instanzierung: module Komplex(in, out); input [3:0] in; output [1:0] out; AND a1(in[0], in[1], out[0]); AND a2(in[2], in[3], out[1]); endmodule 4-Bit Eingang 2-Bit Ausgang Name des zu instanzierenden Moduls Individueller Name der Instanz Portliste Die einzelnen Bits werden mittels des Index-Operators ([ ]) selektiert
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Hierarchischer Aufbau aus Elementen 3 module Komplex module AND a1 a2 in [3:0]out [1:0] in[0] in[1] in[2] in[3] out[0] out[1] inA inB q q inA inB
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Leitungen im Verilog ► 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 An der rechten Seite der Zuweisung werden die Werte kontinu- ierlich beobachtet, und wenn sich etwas ändert, werden die Zuweisungen sofort aufgefrischt Anschluss an den Ausgang eines Registers: Die Register speichern den zugewiesenen Wert (siehe später), deshalb können sie die angeschlossene(n) Leitung(en) kontinuierlich antreiben
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Kontinuierliche Zuweisung ► Wird mittels des Schlüsselwortes assign gemacht ► Realisierung des AND Gatters von Slide 18: module (inA, inB, q); input inA, inB; output q; assign q = inA & inB; endmodule;
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Deklaration von Leitungen ► Wenn nicht anders deklariert, werden die An- schlüsse eines Moduls als Leitungen behandelt ► Weitere Leitungen können mittels des Schlüssel- worts wire deklariert werden ► Z.B. eine einfache Leitung und ein 8-Bit-Bus: wire leitung; wire [7:0] bus;
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Register ► Ein-Bit Speicher ► Zuweisungen können nur durch ein Ereignis statt- finden (z:B. steigende Flanke eines Taktsignals) ► Der zugewiesene Wert wird bis zur nächsten Zuweisung beibehalten ► Deklaration: mittels des Schlüsselwortes reg reg q; reg [3:0] counter;
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Ereignisgesteuerte Zuweisung 1 ► In einem always Block können Werte, gesteuert durch ein Ereignis, einem Register zugewiesen werden: ► wire clk; reg counter; clk) begin counter = counter + 1; end Nach dem wird das Ereignis angegeben Eine steigende Flanke des Signals clk startet die Durch- führung der Befehle im Block Ein Befehlsblock befindet sich zwischen den Schlüsselwörtern begin und end
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Ereignisgesteuerte Zuweisung 2 ► Das System kontinuierlich prüft die Bedingungen 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 ► Es gibt always Blöcke auch ohne Bedingung,die kontinuierlich durchgeführt werden
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Ein komplexeres Beispiel: Zähler module zaehler(clk, reset, q); input clk, reset; output reg [7:0] q; clk) begin if (reset == 1) q = 0; else q = q + 1; end endmodule Der Ausgang ist ein 8-Bit-Regiszter Das Reset ist synchron, weil das Resetsignal nur bei der steigen-de Flanke des Taktes geprüft wird Die bedingte Abzweigung ( if-else ) funktioniert genau so, wie in anderen Sprachen (z.B. C) Wichtig: die logische Gleichheitsprüfung ist nicht identisch mit der Zuweisung
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Testen ► Auch das Testen (Prüfung) erfolgt mit Sprachmitteln ► Ein portloser Modul wird erstellt ► Darin wird der zu prüfende Modul instanziert ► Für die Eingänge werden Register definiert, in diesen wird die Testsequenz erstellt ► Eine Testsequenz mit einmaliger Ablauf kann in einem initial Block generiert werden ► Die Leitungen an den Ausgängen werden beobachtet
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Generierung von aperiodischen Testsignalen ► Die Ausführung des initial Blocks beginnt am Anfang der Simulation ► Am Ende des Blocks wird die Simulation beendet ► Nur Registern dürfen Werte zugewiesen werden reg in; initial begin in = 0; #5 in = 1; #500 $finish; end Das bedeutet eine Verzögerung von fünf Zeiteinheiten der Simulation So können Änderungen in einer Testsequenz zeitlich bestimmt werden Diese Art Verzögerung ist nicht synthetisierbar
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET 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 Der Wert des Registers clk wird nach fünf Zeiteinheiten invertiert
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Beispiel: Prüfung des Zählers module teszt; reg clk, reset; wire [7:0] q; zaehler z1(clk, reset, q); initial begin clk = 0; reset = 0; #2 reset = 1; #2 reset = 0; #2600 $finish; end always #5 clk = !clk; endmodule
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Spezialoperatoren 1 ► Bit-shift Operatoren ( >): Genauso, wie in der C Sprache Sie können für Demultiplexer verwendet werden: module demux(in, addr, out); input in; input [2:0] addr; output [7:0] out; assign out = in << addr; endmodule Der Eingangssignal in wird entspre- chend der Nummer am Eingang addr verschoben werden.
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Spezialoperatoren 2 ► Anhängeoperator ({}): Bits oder Bitserien können aneinandergehängt werden Einzelteile müssen durch Komma separiert angegeben werden Damit können z.B. die Bits eines Registers rotiert werden: reg [7:0] rx; always begin #1 rx = {rx[6:0], rx[7]}; end Die niedrigen 7 Bits werden oben (MSB) placiert, während das echte MSB zum Platz 0 (LSB)
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Spezialoperatoren 3 ► Reduktionsoperatoren: Diese machen die Beschreibung von Gattern mit vielen Eingängen einfacher Die Einoperandversion der Logikoperatoren wird vor eine Variante placiert, so werden die Operationenan an allen Bits durchgeführt: wire [3:0] in; wire q; q = ∈ & in[0] in[1] in[2] in[3] q
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Die neuen Möglichkeiten des Verilog-2001 ► Zusammengefasste Port-Deklaration: In der früheren Versionen musste es separat angegeben werden, dass ein Ausgang Register ist Beim Verilog-2001: module m(in, out); input [7:0] in; output reg [2:0] out; … endmodule
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Die neuen Möglichkeiten des Verilog ► Port-Deklaration in der Portliste: Beim Verilog-2001 können die Ports in der Portliste deklariert werden: module m(input [7:0] in, output reg [2:0] out); … endmodule
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Die neuen Möglichkeiten des Verilog ► Skalierbare Moduln – Hardwaregenerierung 1: Problem: Zahlreiche Instanzen desselben Moduls Ein Modul besteht aus vielen identischen Elementen In solchen Fällen müsste viel Text eingetippt werden (zeitraubend, Fehltipp-Gefahr) Das VHDL hatte es schon seit langem: parametrisierte Hardwaregenerierung – das hat auch Verilog übernommen Mittels des Schlüsselwortes generate können parametrisierte Hardware-Elemente zyklisch eingebaut werden
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Die neuen Möglichkeiten des Verilog ► Skalierbare Moduln – Hardwaregenerierung 2: module myMod(input a, input b, output q);... module generator(input [7:0] a, input [7:0] b, output [7:0] q); genvar i; generate for (i = 0; i < 8; i=i+1) begin : bigMod myMod m(a[i], b[i], q[i]); end endgenerate endmodule Zählvariable 8 Stücke vom Modul myMod werden instanziert Der Name des komplexen Moduls wird bigMod sein Die einzelnen Instanzen können unter dem Namen m referenziert werden
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Die neuen Möglichkeiten des Verilog ► Skalierbare Moduln – Hardwaregenerierung 3: Bezugname auf die instanzierten Elementen: bigMod[3].m Ordinalzahl der Instanz (0..7) Modulnamen innerhalb der Instanzen (In diesem Fall enthalten die Instanzen nur je einen Modul (je ein Exemplar von myMod ))
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Verilog Literatur ► Kollegienhefte vom Lehrstuhl: ► Andere Quellen:
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Andere Trends ► SOC ► SystemC
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Andere Trends– SoC ► SoC = System on Chip Ein vollständiges System, gebaut auf einem Chip digitaler Teil eingebettete Software analoge Schnittstellen (wenn notwendig) Homogene Technologie – z.B. alle Hardwarekompo- nenten 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. SystemC Das wurde 2005 standardisiert
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET “Intellectual Property” A Protocol Processor for Wireless
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Gemeinsamer Entwurf von Hardware und Software ► SystemC – ein typisches Mittel für HSCD (hardware- software co-design) ► IEEE Standard ab 2005: IEEE std ► Das Ziel ist: HW-SW parallel (gleichzeitig) Entwurf Simulation Verifizierung ► 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
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Gemeinsamer Entwurf von Hardware und Software ► ESL: Electronic System Level design HSCD ► 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 Markkteinführung kürzer wird, und die Entwurfskosten reduziert werden. ► Dafür ist ein günstiges Mittel das SystemC ► Eine andere Version: Verwendung von ANSI C, z.B. Mentor Graphics CatapultC
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Das SystemC ► Das SystemC ist eine C++ Bibliothek und Methode, die recht effizient verwendet werden kann zum Erstellen Software-Algorithmen, Modellieren Hardware-Architekturen, sowie Realisieren der Schnittstellen von SoC und System-Level Modellen. ► Durch Verwendung von Entwurfsumgebung für SystemC 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
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Die Komponenten von SystemC ► 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 Vorsicht – Syntethisierbarkeit!! ► 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
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Ein Beispiel für SystemC ► Steuerung von Verkehrsampeln (BAH Knoten) 9 KFZ, 7 Fussgänger Ampeln Zyklus: 90 sec 3 Moduln Zähler (Zeitgeber) KFZ Ampelsteuerung Fussgänger Ampelst. Balotai Péter: Diploma dolgozat, 2007
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Steuerung von Verkehrsampeln Balotai Péter: Diploma dolgozat, 2007
Budapesti Műszaki és Gazdaságtudomanyi Egyetem Elektronikus Eszközök Tanszéke IC tervezés 3 © Poppe András – Nagy Gergely, BME-EET Steuerung von Verkehrsampeln // count.h #include "systemc.h" SC_MODULE(count) { //input ports sc_in clk; sc_in en; //output ports sc_out > ido; int countval; void countproc(); SC_CTOR(count) { SC_METHOD(countproc); countval = 89; sensitive_pos << clk; sensitive << en; } }; //count.cpp #include "count.h" void count::countproc() { if (en == 1) { if (countval < 89) { countval++; } else { countval = 0; } } else { countval = 0x7f; } ido = countval; }