Fakultät für Elektrotechnik und Informationstechnik Lehrstuhl für Entwurfsautomatisierung Univ.-Prof. Dr.-Ing. Ulf Schlichtmann Entwurfsverfahren digitaler Schaltungen II. Logiksimulation
II. Logiksimulation A) Zweck der Simulation 1. Verifikation (Validierung) des Entwurfs (Logikverifikation, Zeitverhalten) 2. Fehleranalyse (Fehlersimulation, Fehlerüberdeckung) 3. Software-Entwicklung für noch nicht gefertigte Hardware (Co-Simulation) B) Simulationsebenen Abstraktionsgrad System Algorithmus Register-Transfer Switch-Level Logik Process Device Circuit Komplexität 1 10 10 2 10 3 10 4 10 5 10 6 10 7 10 8 10 9 10 10 # Transistoren 2
C) Simulationssystem (auf Logikebene) Schaltungsmodelle - logische Funktionen - zeitliches Verhalten Signalwertverläufe Netzliste Simulator Stimuli übliche Signalmodelle: - Boolesche Logik { 0, 1 } - Dreiwertige Logik { 0, 1, X } - IEEE Standard Logik { U, X, 0, 1, Z, W, L, H, - } 3
Simulation der logischen Funktion ( Zero Delay ) Beispielschaltung: x z 1 z2 z3 z 5 z 4 y x 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 z 1 z 2 z 3,z 4 z 5 y Boolesche Funktion: y = x x = x x = 0 4
Schaltungsbeschreibung (Schaltungsmodellierung) Aufbau der Schaltung mit Basiselementen des Simulationssystems Modellierung von Funktion und Zeitverhalten: Δ: Grundzeiteinheit x τ y τ: (Signal )Laufzeit τ d = n Δ: Gatterlaufzeit (gate delay) y t = x t τ τ w = m Δ: Leitungslaufzeit (wire delay) z.b.: a b z τ y z t = a t b t ; y t = z t τ = a t τ b t τ 5
Simulation mit Zeitverhalten Beispiel: x z z 1 2 3 z Race z 4 z 5 z 6 y x 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 z 1 z 2 z 3,z 4 z 5 z 6 y Laufzeitabhängige Effekte: Hazard a) Race: Wettlauf von Signalwertänderungen auf Leitungen vor einem gemeinsamen Knoten (Gatter) b) Hazard: (Spike, Glitch) Signalwertverlauf, welcher der reinen Logikfunktion der Schaltung widerspricht und nur durch die Verzögerungszeiten entsteht 6
Zeitauswertung (Zeitverifikation, Raceanalyse) Die Logik wird nicht berücksichtigt x y fan-in ohne Spezifikation der Gatterfunktion Nimmt man eine Flanke an x bei t = 0 an, so ergibt sich folgender Zeitfahrplan für den Durchlauf dieser Flanke zum Schaltungsausgang. 0 2 4 6 8 6.. 8 8.. 10 x 6 y Am Ausgang ist jetzt die maximale Einschwingunsicherheit abzulesen (wichtig für die Auslegung der Taktzeit synchroner Schaltungen). 7
Simulation mit Flankenunsicherheit Da eine Signalwertänderung nicht mit unendlich steilen Flanken abläuft, entsteht an den Übergängen ein Bereich, in dem der Signalwert undefiniert ist. Das führt in der Simulation zu einem neuen Signalwert X. Beispiel: x z z 1 2 3 z z 4 z 5 y Der Flankenunsicherheitsbereich soll eine Grundzeiteinheit dauern: x 0 0 0 X 1 1 1 1 1 1 1 1 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 z 1 1 1 1 X 0 0 0 X 1 1 1 z 2 0 0 0 X 1 1 1 X 0 0 0 z 3,z 4 1 1 1 X 0 0 0 X 1 1 1 z 5 0 0 0 X 1 1 1 X 0 0 0 y 0 0 0 0 0 0 0 0 X 1 X 0 0 0 Hazard 8
Wertetabelle mit einem neuen Signalwert X : AND 0 1 X OR 0 1 X NOT 0 1 X 0 0 0 0 0 0 1 X 1 0 X 1 0 1 X 1 1 1 1 X 0 X X X X 1 X 9
Simulation mit Laufzeitunsicherheit Von einem Gatter sei die minimale und die maximale Verzögerungszeit bekannt, dazwischen ist der Ausgangswert undefiniert. x τ d y x (ideal) 0 0 1 1 1 1 1 y 1 1 1 X X 0 0 z.b. τ d min = Δ τ d max = 3Δ 10
Schaltungsbeispiel: x τ d τ d min = z 1 z 2 z z 3 5 3Δ τ d τ d τ d τ d z 4 z 6 τ d y τ d max = 4 Δ x 0 X 1 1 1 1 1 1 X 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 z 1 1 1 1 1 X X 0 0 0 0 0 X X 1 1 1 z 2 0 0 0 X X X 1 1 1 1 X X X 0 0 0 z 3,z 4 1 1 1 X X X X 0 0 0 X X X X 1 1 1 z 5 0 0 0 X X 1 1 X X 0 0 0 z 6 0 0 X 0 0 X X 0 0 0 y 0 0 X X 0 0 X X 0 0 Hazard möglich 11
Wegen der laufenden Verbreiterung der Unsicherheitsbereiche erhält man mit diesem Verfahren ein Ergebnis im Sinne einer worst-case-analyse. übliche Modellierung des Zeitverhaltens: Gatter- und Leitungslaufzeiten: Pin-to-pin Verzögerungen τ d τ w2 τ w1 12
Simulationsprogramm a) Modellierung der Schaltungselemente durch Basiselemente des Simulationssystems (Primitives) b) Schaltungsnachbildung (Compilation oder Listenaufbau) c) Simulationsdurchführung Compilergesteuerte Simulation Die zu untersuchende Schaltung wird in ein ausführbares Programm übersetzt. Für jeden Taktzyklus wird die logische Funktion der gesamten Schaltung ausgewertet, wobei von den Eingangssignalen und den internen Schaltungszuständen (Register) ausgegangen wird. Sehr schnell, aber normalerweise keine Zeitauswertung (Simulation mit Null-Verzögerung). 13
Ereignisgesteuerte Simulation Bei der ereignisgesteuerten Simulation werden nur Änderungen der Signalzustände der Schaltung betrachtet. In jedem Simulationsschritt werden Schaltungskomponenten nur dann neu ausgewertet, wenn an ihren Eingängen ein Signalwertwechsel auftritt. Signalwertwechsel werden durch Ereignisse dargestellt. Signalwertwechsel: val( z, tv ) val( z, tv 1) Ereignis: Die Auswertung einer Komponente zur Simulationszeit t gen verursacht einen Signalwertwechsel an Signal z mit dem neuen Wert val (z, t exe ) für den Simulationszeitpunkt t exe. E = ( z, val( z, texe), tgen, texe) z : val(z, t t t t gen exe exe : : t exe gen ): = τ : Signalname Wert des Signals z zum Zeitpunkt t exe Generierungszeitpunkt des Ereignisses Ausführungszeitpunkt des Ereignisses modellierte Verzögerungszeit 14
Simulationszyklus: Ereignisausführung (Signalwerte zuweisen) Bestimmung betroffener Komponenten Auswerten dieser Komponenten Ereignisgenerierung unverzögerte Ereignisse Weiterschalten der Simulationszeit zum nächsten Zeitstempel (verzögerte Ereignisse, Ereignisliste) 15
Beispielablauf einer Simulation: Multiplexer Schaltung: Nand_a Verzögerungszeit: τ = 2 A Sel τ Inv Sel n τ S 1 Nand_c τ Q B S2 τ Nand_b 16
A Sel τ Inv Sel n Nand τ _ a S 1 Nand τ _ c Verzögerungszeit: τ = 2 Q Simulationsablauf: B S 2 τ Nand _ b t A B Sel Sel n S 1 S 2 Q ausgewertete Elemente 0 0 0 1 0 1 1 0 Initialzustand (Stimuli) neue Ereignisse (signal, val, t gen, t exe ) (A, 1, 0, 20); (B, 1, 0, 10); (Sel, 0, 0, 30) 10 1 Nand_b (S 2, 0, 10, 12) 12 0 Nand_c (Q, 1, 12, 14) 14 1 - - 20 1 Nand_a - 30 0 Inv, Nand_b (Sel n, 1, 30, 32); (S 2, 1, 30, 32) 32 1 1 Nand_a, Nand_c (S 1, 0, 32, 34); (Q, 0, 32, 34) 34 0 0 Nand_c (Q, 1, 34, 36) 36 1 - - 17
Signalverläufe: 18
Modellierung und Simulation mit VHDL VHSIC Hardware Description Language (VHSIC = Very High Speed Integrated Circuit) weit verbreitete Hardware-Beschreibungssprache für Simulation, Dokumentation und Synthese. Primär in Europa, in USA ist Verilog stärker verbreitet Standardformat für Bibliotheken und für den Datenaustausch zwischen Entwurfswerkzeugen Ähnlichkeit mit Programmiersprache; Erweiterungen zur Hardware-Modellierung: - Nebenläufigkeit (Beschreibung parallel ablaufender Prozesse) - Zeitmodell (Verzögerungszeiten; ereignisgesteuerte Simulation) Hardware-Modellierung: - auf verschiedenen Abstraktionsebenen - Beschreibung von Verhalten und Struktur 19
VHDL Modell eines Multiplexers 1. Spezifikation: Multiplexer mit den Eingängen A, B, Sel und dem Ausgang Q. Bei Sel = 0 wird A auf den Ausgang Q geschaltet. Bei Sel = 1 wird B auf den Ausgang Q geschaltet. Die Eingänge und der Ausgang sind vom Typ Bit. 2. Realisierung: Beschreibung der Schnittstelle: ENTITY Declaration Beschreibung einer Implementierung: ARCHITECTURE ENTITY Multiplexer IS PORT (A, B, Sel: in bit; Q: out bit); END Multiplexer; ENTITY Declaration Sel A B ARCHITECTURE 1 ARCHITECTURE 2... ARCHITECTURE N Black Box Entity Multiplexer Entity = Entity Declaration + Architecture Q 20
VHDL Modell eines Multiplexers Realisierung in Datenflussbeschreibung (Verhaltensbeschreibung): ENTITY Multiplexer IS PORT (A, B, Sel: in bit; Q: out bit); END Multiplexer; Sel A B Black Box Entity Multiplexer ARCHITECTURE dataflow OF Multiplexer IS PROCESS (A, B, Sel) CASE Sel IS WHEN 0 => Q <= A; WHEN 1 => Q <= B; END CASE; END PROCESS; END dataflow; Sel A B Q MUX Architecture dataflow Q 21
VHDL Modell eines Multiplexers Realisierung durch strukturelle Beschreibung: A Sel Inv Sel _ n Nand_a S 1 Nand_c Q B S 2 Nand_b ENTITY Multiplexer IS PORT (A, B, Sel: in bit; Q: out bit); END Multiplexer; LIBRARY BasicGates; USE BasicGates.ALL; ARCHITECTURE structure OF Multiplexer IS COMPONENT Inverter PORT (i: in bit; o: out bit); END COMPONENT; COMPONENT Nand2 PORT (i1, i2: in bit; o: out bit); END COMPONENT; SIGNAL Sel_n, S1, S2: bit; Inv: Inverter PORT MAP (Sel, Sel_n); Nand_a: Nand2 PORT MAP (A, Sel_n, S1); Nand_b: Nand2 PORT MAP (B, Sel, S2); Nand_c: Nand2 PORT MAP (S1, S2, Q); END structure; 22
VHDL Modell eines Multiplexers 3. Validierung durch Simulation: Testbench: Anregung der Schaltungseingänge mit Stimuli. Erfassen der Signalwerte an den Schaltungsausgängen. Überwachen der Korrektheit mit Assertions (optional). Sel A B Testbench (Funktionstest) MUX Multiplexer (dataflow) Q 23
VHDL Modell eines Multiplexers Testbench für Multiplexer Beschreibung der Schnittstelle: ENTITY Testbench IS -- -- keine Eingaenge, keine Ausgaenge. -- END Testbench; Implementierung, Einbindung des Multiplexers als COMPONENT: ARCHITECTURE Funktionstest OF Testbench IS COMPONENT Multiplexer PORT (A, B, Sel: in bit; Q: out bit); END COMPONENT; SIGNAL A, B, Sel, Q: bit; MUX_1: Multiplexer PORT MAP (A, B, Sel, Q); A <= 0, 1 after 20 ns, 0 after 60 ns, 1 after 100 ns; B <= 1, 0 after 30 ns, 1 after 70 ns; Sel <= 0, 1 after 40 ns, 0 after 80 ns; END Funktionstest; 24
VHDL Modell eines Multiplexers Konfiguration, Entity / Architecture Binding: CONFIGURATION Test_Setup OF Testbench IS FOR Funktionstest FOR MUX_1: Multiplexer USE ENTITY WORK.Multiplexer(dataflow); END FOR; END FOR; END Test_Setup; A B Sel Q 1 0 1 0 1 0 1 0 0 20 40 60 80 100 120 t (ns) 25
Prozesse: Anweisungen im PROCESS werden sequentiell in einer Endlosschleife ausgeführt. Alle Prozesse sind nebenläufig (laufen zeitgleich / parallel ab). Ein PROCESS muss entweder eine WAIT-Anweisung oder eine Sensitivity-List besitzen. Jede Signalzuweisung außerhalb eines PROCESS wird vom Simulator in einen eigenen PROCESS umgewandelt. In einem PROCESS können neben Signalen auch Variablen benutzt werden. Beispiel: Clock Generator Beispiel für Signalzuweisung ARCHITECTURE Simple OF CLKgen IS CLK <= NOT CLK AFTER 10 ns; END Simple; Beispiel für SENSITIVITY LIST ARCHITECTURE SList OF CLKgen IS PROCESS (CLK) CLK <= NOT CLK AFTER 10 ns; END PROCESS; END SList; Beispiel für WAIT ON-Anweisung ARCHITECTURE Wait1 OF CLKgen IS PROCESS CLK <= NOT CLK AFTER 10 ns; WAIT ON CLK; END PROCESS; END Wait1; Beispiel für WAIT FOR-Anweisung ARCHITECTURE Wait2 OF CLKgen IS PROCESS CLK <= NOT CLK; WAIT FOR 10 ns; END PROCESS; END Wait2; 26
Zwei Prozessbeschreibungen: ENTITY XXX IS PORT (a, b: IN bit; c: OUT bit); END XXX; ARCHITECTURE beispiel1 OF XXX IS PROCESS IF a = 1 AND b = 1 THEN c <= 1 ; WAIT ON a, b; ELSIF a = 0 THEN c <= 0 ; WAIT ON a; ELSIF b = 0 THEN c <= 0 ; WAIT ON b; END IF; END PROCESS; END beispiel1; ENTITY XXX IS PORT (a, b: IN bit; c: OUT bit); END XXX; ARCHITECTURE beispiel2 OF XXX IS PROCESS IF a = 1 AND b = 1 THEN c <= 1 ; WAIT ON a, b; ELSE c <= 0 ; WAIT ON a, b; END IF; END PROCESS; END beispiel2; Was beschreiben diese Prozesse? Welche Modellierung ist günstiger für einen Simulator? 27
Signale und Variablen: Signale: Haben zeitliches Gedächtnis. Die Einplanung zukünftiger Signalwerte erfolgt durch den Eintrag einer Transaktion (w n, t n ) im Signal-Treiber. (w n : eingeplanter Signalwert, t n : Zeitpunkt) (Transaktion Ereignis) Bei Wertzuweisungen <= waveform wird der neue Wert eingeplant. Die Übernahme erfolgt erst, wenn der PROCESS suspendiert wird (in der Signal-Update-Phase). Variablen: Haben kein zeitliches Gedächtnis. Bei Wertzuweisungen := expression wird der neue Wert sofort übernommen. 28
Delay-Mechanismen: Transport-Delay: (signal <= transport waveform;) Modellierung eines idealen Bauelements mit unbegrenzter Übertragungsbandbreite. Regel für das Einfügen einer neuen Transaktion (w n, t n ) in den Signaltreiber: - Alle (späteren) Transaktionen (w i, t i ) mit t i t n werden gelöscht. - Die neue Transaktion (w n, t n ) wird am Ende der Liste angefügt. Inertial-Delay: (signal <= waveform;) Modellierung realer Bauelemente mit endlicher Übertragungsbandbreite. (Impulse, die kürzer als die Verzögerung des Bauelements sind, werden unterdrückt.) Regel für das Einfügen einer neuen Transaktion (w n, t n ) in den Signaltreiber: - Alle (späteren) Transaktionen (w i, t i ) mit t i t n werden gelöscht. - Die neue Transaktion (w n, t n ) wird am Ende der Liste angefügt. - Transaktionen im Intervall t now t i t n werden gelöscht, wenn w i w n. 29
ENTITY inverter IS PORT ( inp : IN std_logic; outp : OUT std_logic); END inverter; ARCHITECTURE delaymechanism OF inverter IS outp <= TRANSPORT NOT inp AFTER 10 ns; END ARCHITECTURE; inp inp outp outp 5 10 15 20 25 30 35 ns 30
ENTITY inverter IS PORT ( inp : IN std_logic; outp : OUT std_logic); END inverter; ARCHITECTURE delaymechanism OF inverter IS outp <= INERTIAL NOT inp AFTER 10 ns; END ARCHITECTURE; inp inp outp outp 5 10 15 20 25 30 35 ns 31
ENTITY inverter IS PORT ( inp : IN std_logic; outp : OUT std_logic); END inverter; ARCHITECTURE delaymechanism OF inverter IS outp <= REJECT 2 ns INERTIAL NOT inp AFTER 10 ns; END ARCHITECTURE; inp inp outp outp 5 10 15 20 25 30 35 ns 32
Ereignisgesteuerte Simulation: Abarbeitung aller Transaktionen zum Zeitpunkt t n in Δ-Zyklen. Weiterschalten der Simulationszeit t n t n+1, wenn alle Transaktionen zur Zeit t n abgearbeitet sind. Δ-Zyklus: Signal-Update-Phase: - Ausführen aller Transaktionen zum aktuellen Zeitpunkt. - Ändert eine Transaktion einen Signalwert, so liegt ein Ereignis vor. Process-Evaluation-Phase: - Prozesse, für die ein Ereignis vorliegt, werden ausgeführt. - Wertzuweisungen an Signale werden im Treiber eingeplant. Δ-Zyklen Signal- Update Process- Evaluation Signal- Update +Δ +Δ Process- Evaluation t n t n+1 Zeit 33
Vertiefende Veranstaltungen des Lehrstuhls: Praktikum Systementwurf mit VHDL (4P; Bachelor 5-8) Praktikum VLSI Design Lab (4P; Master 1-3) 34