Vorlesungsfolien Termin 12
Vorlesungsfolien Termin 12
Vorlesungsfolien Termin 12
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Digitaltechnik<br />
Prof. Dr. Sven-Hendrik Voß | Wintersemester 2013<br />
Technische Informatik (Bachelor), Semester 3 <strong>Termin</strong> <strong>12</strong>, 06.01.2014
Seite 2 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Inhaltsverzeichnis<br />
Themen und <strong>Termin</strong>e<br />
Simulation von VHDL-Beschreibungen<br />
Simulation vs. Synthese<br />
Testbenches<br />
Aufbau einer Testbench<br />
Simulation<br />
Modellierung von Zeit<br />
Simulationstechnik<br />
VHDL Simulation<br />
Zeitverhalten von Prozessen<br />
Synthese
Seite 3 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Themen und <strong>Termin</strong>e - Seminaristischer Unterricht<br />
Seminaristischer Unterricht (SU) im Raum B323, montags <strong>12</strong>:15 - 13:45 Uhr<br />
Nr. Datum Themen Kurztest<br />
1 07.10. Einführung und Begriff Digitaltechnik<br />
2 14.10. Flipflops und sequentielle Grundschaltungen<br />
3 21.10. Schaltungsanalyse und -synthese (1)<br />
4 28.10. Schaltungsanalyse und -synthese (2)<br />
5 04.11. Entwicklung komplexer digitaler Systeme (1)<br />
6 11.11. Entwicklung komplexer digitaler Systeme (2) 1<br />
7 18.11. Technische Realisierung von Logikbausteinen (1)<br />
8 25.11. Technische Realisierung von Logikbausteinen (2)<br />
9 02.<strong>12</strong>. Programmierbare Logikbausteine<br />
10 09.<strong>12</strong>. Hardwarebeschreibung in VHDL 2<br />
11 16.<strong>12</strong>. Syntax und Semantik von VHDL<br />
23.<strong>12</strong>. Weihnachtsferien<br />
30.<strong>12</strong>. Weihnachtsferien<br />
<strong>12</strong> 06.01. Simulation von Hardwarebeschreibungen (1)<br />
13 13.01. Simulation von Hardwarebeschreibungen (2)<br />
14 20.01. Entwurf von Zustandsautomaten mit VHDL 3<br />
15 27.01. Praxisbeispiele mit VHDL<br />
16 03.02. Klausur<br />
17 10.02. Klausurrückgabe und -besprechung
Seite 4 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Simulation von VHDL-Beschreibungen<br />
Schaltungssimulation<br />
◮<br />
◮<br />
◮<br />
Verifikation des Quellcodes<br />
Aufbau von Testbenches<br />
Verhaltensbeschreibungen<br />
für alle Komponenten<br />
müssen vorliegen<br />
Initialisierung<br />
Aktualisierung<br />
der Signale<br />
(Delay)<br />
Ausführung der<br />
aktiven Prozesse<br />
Simulationszyklus<br />
Simulationsende
Seite 5 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Simulation von VHDL-Beschreibungen<br />
Funktionale Simulation der Spezifikation<br />
→ Überprüfung der logischen Korrektheit der Spezifikation<br />
insbesondere auf<br />
◮<br />
◮<br />
◮<br />
Funktionalität (Debugging)<br />
Geschwindigkeit / Durchsatz (unter Einbeziehung der<br />
Zielplattformparameter)<br />
Energieverbrauch (unter Einbeziehung der Zielplattformparameter)<br />
Grobe Vorgehensweise:<br />
◮<br />
◮<br />
◮<br />
Anlegen ausgewählter Eingabemuster (Stimuli)<br />
Ist / Soll-Vergleich<br />
wird üblicherweise durch Testbench gesteuert<br />
... durch Simulation der Schaltung
Seite 6 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Simulation vs. Synthese<br />
Simulation<br />
◮<br />
◮<br />
Prozess wird nur dann aufgerufen, wenn Änderung eines Signalwertes<br />
in der Sensitivitätsliste erfolgt<br />
alle Signaländerungen, die bei Ausführung der sequentiellen<br />
Anweisungen durchzuführen sind, werden erst am Prozessende<br />
aktualisiert<br />
Synthese<br />
◮<br />
◮<br />
Sensitivitätsliste wird nicht berücksichtigt<br />
nur der im Prozess enthaltene VHDL-Code ist entscheidend<br />
Auswirkung<br />
◮<br />
◮<br />
Simulation einer anderen Verhaltensweise als das Ergebnis der<br />
Synthese ergibt<br />
Beispiel: Realisierung eines Multiplexers mit einem Prozess ohne<br />
Angabe der Steuersignale in der Sensitivitätsliste<br />
→ daher: bei rein kombin. Schaltungen alle Eingangssignale in Sens.-liste!
Seite 7 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Simulation vs. Synthese<br />
ARCHITECTURE VERHALTEN OF X IS<br />
SIGNAL Y: std_logic;<br />
BEGIN<br />
PROCESS(Y)<br />
BEGIN<br />
Y
Seite 8 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Simulation vs. Synthese<br />
ARCHITECTURE VERHALTEN OF X IS<br />
SIGNAL Y: std_logic;<br />
BEGIN<br />
PROCESS(CLK)<br />
VARIABLE TMP: std_logic;<br />
BEGIN<br />
TMP := ’1’; -- Zuweisung an Variable<br />
-- [ ... ]<br />
IF (TMP = ’1’) THEN<br />
TMP := ’0’;<br />
-- [ ... ]<br />
ELSE<br />
-- [ ... ]<br />
END IF;<br />
Y
Seite 9 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Testbenches<br />
VHDL Logik- und Timing-Simulation durch Testbench<br />
Testbench<br />
UUT<br />
unit under test<br />
Simulation erfordert Modellierung der Schaltung auf jeweiliger Entwurfsebene<br />
und Kontrolle der Funktion dieses Modells bei Eingabe von aussagefähigen<br />
Simulationsstimuli (Eingabewerten).<br />
Simulationsumgebung<br />
◮<br />
◮<br />
unabhängig vom Stadium des Entwurfs (Anteil von Verhaltens- und<br />
Strukturmodell)<br />
Benutzung eines Satzes von Simulationsstimuli, mit dem dieselbe<br />
Funktionalität in allen Ebenen des Entwurfs verifiziert werden kann
Seite 10 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Testbenches<br />
Warum benötigt man beim Beschreiben von Hardware eine Testbench?<br />
Vergleich mit Software-Entwicklung:<br />
◮<br />
◮<br />
◮<br />
◮<br />
Programm lässt sich meist schnell übersetzen und ausprobieren<br />
wenn etwas nicht läuft: Debugger starten<br />
Breakpoint setzen, Inhalt von Variablen, Speicher und<br />
Prozessorregistern prüfen<br />
Fehler finden<br />
Abgrenzung zu Hardware-Entwicklung<br />
◮<br />
◮<br />
◮<br />
◮<br />
Synthese für komplexes Design (auf großem FPGA) kostet meist<br />
mehrere Stunden<br />
kein Debugger verfügbar, stattdessen Logikanalysator (extern oder als<br />
FPGA Soft Core)<br />
iterative Eingrenzung der Problemursachen<br />
mühsame Fehlersuche
Seite 11 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Testbenches<br />
Testbench“ ist eine Entity, die die zu testende Baugruppe (Entity) umgibt<br />
”<br />
Schaltungsentwurf (Unit-Under-Test) wird simuliert durch<br />
◮<br />
◮<br />
◮<br />
Eingabe geeigneter Testmuster an die Schaltungseingänge über einen<br />
gewissen Zeitbereich (Testbench); Darstellung als Wave-Form oder<br />
direkt in VHDL<br />
Simulation des VHDL-Modells der UUT bezüglich dieser Eingabe<br />
Aufzeichnen der Ausgaben (ggf. auch internen Signale) über die<br />
gesamte Testzeit; Darstellung z.B. als Wave-Form<br />
Testbench<br />
UUT<br />
unit under test<br />
Simulator
Seite <strong>12</strong> Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Testbenches<br />
Blackbox Testing<br />
◮<br />
zu testender Schaltungsteil wird als Komponente in der Testbench<br />
instanziiert<br />
Greybox Testing<br />
◮<br />
zusätziche Information zum internen Zustand der zu testenden<br />
Komponente werden angegeben
Seite 13 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Aufbau einer Testbench<br />
Entwurf einer Testbench (normalerweise zu jedem VHDL-Modul)<br />
◮<br />
◮<br />
◮<br />
◮<br />
◮<br />
◮<br />
zusätzlicher VHDL Code zur Überprüfung von VHDL-Konstrukten<br />
Funktionalitätscheck vor der Synthese mittels Simulation<br />
Testbench generiert alle Eingangssignale (Testvektoren) für das zu<br />
testende Modul (UUT) und prüft ggf. Resultate<br />
an den Ausgängen der Testbench werden Stimuli angelegt (verbunden<br />
mit den Eingängen des Prüflings)<br />
an den Eingängen der Testbench (Ausgänge Prüfling) können<br />
Signalverläufe analysiert und mitgeschrieben werden<br />
besteht aus nicht synthetisierbarem VHDL, Merkmal:<br />
entity-Beschreibung leer<br />
Testbench<br />
UUT<br />
unit under test<br />
Testbench und UUT vom Simulator (ModelSim) compiliert und ausgeführt
Seite 14 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Aufbau einer Testbench<br />
Oft bestehen digitale Systeme aus mehreren Submodulen, die in einer<br />
übergeordneten Datei zusammengefügt werden<br />
→ hierzu verwendet man sog. Komponenten (Wiederholung)<br />
Testbench-Erstellung folgt gleichem Prinzip: Zu testendes Modul (Entity) wird<br />
in eine Top-Entity ”<br />
Testbench“ eingefügt!<br />
Besonderheit<br />
VHDL bietet hierzu einen entsprechenden Befehlssatz, der jedoch<br />
nicht synthetisierbar ist.
Seite 15 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Aufbau einer Testbench<br />
Nützliche VHDL-Anweisungen für Testbenches (nicht synthetisierbar)<br />
Zeitliche Steuerung mit ”<br />
wait“<br />
◮<br />
gezieltes Warten<br />
A
Seite 16 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Aufbau einer Testbench<br />
LIBRARY ieee;<br />
USE ieee.std_logic_1164.ALL;<br />
USE ieee.std_logic_unsigned.ALL;<br />
ENTITY XOR_GATE IS<br />
PORT(<br />
A,B : IN std_logic;<br />
Y : OUT std_logic<br />
);<br />
END XOR;<br />
Beispiel für den Test einer<br />
XOR-Schaltung, hier erstmal die<br />
XOR-Beschreibung!<br />
ARCHITECTURE VERHALTEN OF XOR_GATE IS<br />
SIGNAL S: std_logic;<br />
BEGIN<br />
S
Seite 17 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Aufbau einer Testbench<br />
ENTITY TESTBENCH IS -- Testbench-Entity ohne Ports!<br />
END TESTBENCH;<br />
ARCHITECTURE VERHALTEN OF TESTBENCH IS<br />
COMPONENT XOR IS<br />
PORT(<br />
A, B : IN std_logic;<br />
Y : OUT std_logic<br />
);<br />
END COMPONENT;<br />
SIGNAL A_L, B_L, Y_L; : std_logic;<br />
SIGNAL STIMULI; : std_logic_vector(1 DOWNTO 0);<br />
BEGIN<br />
DUT: XOR<br />
PORT MAP(<br />
A => A_L,<br />
B => B_L,<br />
Y => Y_L<br />
);<br />
-- Instanz der zu testenden VHDL-Datei<br />
(B_L, A_L)
Seite 18 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Aufbau einer Testbench<br />
Am Beispiel zu erkennen:<br />
◮<br />
◮<br />
◮<br />
◮<br />
Entity der Testbench enthält keine Schnittstellensignale (leer)<br />
Schnittstellensignale des zu testenden Entwurfs dagegen als lokale<br />
Signale in der Testbench-Architecture deklariert<br />
zu testender Entwurf wird als Komponente eingefügt und entsprechend<br />
instanziiert<br />
lokale Signale und Entity-Signale der instanziierten Komponente<br />
müssen nicht zwingend verschiedene Bezeichnungen haben (z.B. ist<br />
statt ”<br />
A L“ auch ”<br />
A“ möglich)<br />
Stimuli-Signale<br />
◮<br />
◮<br />
mittels Schlüsselwortes ”<br />
after“ und (absoluter) Zeitangabe (sinnvoll in<br />
Einheiten ps oder ns) kann Entwurf gezielt mit Stimuli-Signalen in<br />
zeitlicher Abfolge untersucht werden<br />
Stimuli-Signale sollten immer so gewählt werden, dass alle möglichen<br />
Verhaltensweisen abgeprüft werden können
Seite 19 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Aufbau einer Testbench<br />
Bekanntes Beispiel: UND-Gatter<br />
ENTITY AND_GATE IS<br />
PORT(<br />
In1, In2 : IN std_logic; -- die beiden Eingaenge<br />
Output : OUT std_logic -- der Ausgang<br />
);<br />
ARCHITECTURE CONCURRENT_ASSIGNMENT OF AND_GATE IS<br />
BEGIN<br />
Output
Seite 20 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Aufbau einer Testbench<br />
Beispiel: Testbench für das UND-Gatter<br />
LIBRARY IEEE;<br />
USE IEEE.STD_LOGIC_1164.ALL;<br />
ENTITY AND2TEST IS<br />
END;<br />
ARCHITECTURE SIMPLE OF AND2TEST IS<br />
COMPONENT AND_GATE<br />
PORT(<br />
In1, In2<br />
Output<br />
);<br />
END COMPONENT;<br />
SIGNAL A, B, O : STD_LOGIC;<br />
: IN STD_LOGIC;<br />
: OUT STD_LOGIC<br />
BEGIN<br />
AND_UNDER_TEST : AND_GATE<br />
PORT MAP(<br />
In1 => A, In2 => B,<br />
Output => O<br />
);<br />
PROCESS<br />
BEGIN<br />
A
Seite 21 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Aufbau eines Taktgenerators<br />
Für den Test von getakteten Systemen ist ein Taktsignal zu definieren.<br />
ARCHITECTURE VERHALTEN OF TEST<br />
-- [ ... ]<br />
CONSTANT T: time := 10 ns;<br />
SIGNAL CLK: std_logic := ’0’;<br />
-- [ ... ]<br />
BEGIN<br />
-- [ ... ]<br />
CLK
Seite 22 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Aufbau eines Taktgenerators<br />
Besonderheiten des Taktgenerators<br />
◮ Taktsignal CLK mit Periode T = 10ns<br />
◮ Periodendauer durch Konstante T mit speziellem Datentyp time“ für ”<br />
Zeitangaben bei Simulation festgelegt<br />
◮ Taktsignal mit Wert 0“ initialisiert<br />
”<br />
◮ Hardware-Reset (RST
Seite 23 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Simulation
Seite 24 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Simulation<br />
Simulation auf verschiedenen Abstraktionsebenen<br />
• Behavioral Model<br />
◮<br />
◮<br />
◮<br />
enthält keine Signalverzögerungen durch Gatter oder Leitungen<br />
nur Testen der logischen Funktionalität<br />
beispielsweise sind RC-Adder und CLA-Adder äquivalent<br />
• Post-Map Model<br />
◮<br />
◮<br />
◮<br />
enthält Signalverzögerungen für die Gatter<br />
abhängig von Zieltechnologie (z.B. CMOS Bibliothek xxx oder FPGA<br />
xxx)<br />
simuliert Funktionalität und Zeitverhalten<br />
• Post-Place & Route Model<br />
◮<br />
◮<br />
enthält zusätzlich Signalverzögerungen durch Leitungen<br />
abhängig von Platzierung der Gatter auf dem Chip (Länge der<br />
Verbindungen)
Seite 25 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Modellierung von Zeit<br />
Vordefinierter VHDL-Typ TIME<br />
-- im Package ’standard’ vordefiniert:<br />
TYPE time IS RANGE <br />
UNITS<br />
fs;<br />
-- Femtosekunden<br />
ps = 1000 fs -- Pikosekunden<br />
ns = 1000 ps -- Nanosekunden<br />
us = 1000 ns -- Mikrosekunden<br />
ms = 1000 us -- Millisekunden<br />
sec = 1000 ms -- Sekunden<br />
min = 60 sec -- Minuten<br />
hr = 60 min -- Stunden<br />
END UNITS;<br />
In VHDL kann man sowohl die Verzögerungszeiten von<br />
◮<br />
◮<br />
kombinatorischer Logik (kombinatorische Zuweisungen), als auch von<br />
sequentieller Logik (Prozesse) modellieren
Seite 26 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Verzögerungszeiten<br />
Kombinatorische Zuweisungen (concurrent assignments)<br />
x0<br />
y0<br />
4 ns<br />
&<br />
z, 0 w<br />
Inertial Delay<br />
Transport Delay<br />
z
Seite 27 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Verzögerungszeiten<br />
Inertial Delay modelliert Trägheit der Gatter, Eingangskapazitäten<br />
der Gatter absorbieren kurze Impulse<br />
Transport Delay modelliert reine Verzögerungszeit der Gatter,<br />
SEingangsimpulse werden unabhängig von ihrer<br />
Dauer abgebildet<br />
Delta Delay Reaktion des Gatters idealerweise ohne<br />
Verzögerung, dies ist die Default-Einstellung<br />
in VHDL
Seite 28 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Modellierung von Zeit<br />
Prozesse<br />
◮<br />
◮<br />
Prozess hat mindestens eine wait-Anweisung<br />
Sensitivitätsliste entspricht wait-Anweisung am Ende des Prozesses<br />
Beispiele für wait-Anweisungen<br />
wait;<br />
Prozess wartet für immer<br />
wait on < signal list >; Prozess wartet auf eine Änderung bei einem<br />
der angegebenen Signale<br />
wait until (condition); Prozess wartet bis eine Bedingung wahr wird<br />
wait for <strong>12</strong>ns;<br />
Prozess wartet die angegebene Zeit
Seite 29 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Modellierung von Zeit<br />
Hier: zwei äquivalente Prozesse<br />
logic1 : PROCESS(x1, x2, x3)<br />
BEGIN<br />
IF (x1 = ’1’) THEN<br />
y
Seite 30 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Simulationstechnik<br />
Gruppen von Simulationsverfahren<br />
• Zeitgetriebene Simulation<br />
◮<br />
◮<br />
◮<br />
◮<br />
Auswerten des Testmodells in äquidistanten Zeitschritten (z.B. alle 3 ns)<br />
verwendet z.B. für mechanische Systeme oder analoge Schaltungen,<br />
deren Verhalten durch Differentialgleichungen beschrieben wird<br />
Rechenaufwand von Auflösung und Simulationszeitraum abhängig<br />
nicht für VHDL Simulation geeignet<br />
• Ereignisgetriebene Simulation<br />
◮<br />
◮<br />
◮<br />
Auswerten des Testmodells nur bei Änderungen (Ereignissen):<br />
Änderung eines Eingangs oder eines internen Signals<br />
Rechenaufwand nur von Anzahl der Ereignisse abhängig → schnell<br />
Basisverfahren für VHDL Simulatoren<br />
◮ Event :=< Signal, Wert, Zeitpunkt >
Seite 31 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Simulationstechnik<br />
Ereignisgetriebene Simulation<br />
◮ Event :=< Signal, Wert, Zeitpunkt ><br />
◮<br />
Event ändert den Wert eines Signals zu einem bestimmten Zeitpunkt<br />
Simulationsschritte<br />
1. Simulator startet mit Simulationszeit 0<br />
2. alle bekannten Events (Testbench) werden in eine Ereignisliste<br />
eingetragen<br />
3. Simulaionszeit wird auf Zeit des nächsten Events gesetzt<br />
4. Event wird ausgewertet und erzeugt ggf. neue Events (alle Prozesse /<br />
Zuweisungen die von dem Signal des Events abhängen)<br />
5. wiederhole 3. bis 4. bis kein Event mehr auftritt oder eine vorgegebene<br />
maximale Simulationszeit erreicht wird
Seite 32 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
VHDL Simulation<br />
Haupt-Datenstruktur des Simulators ist die Ereignisliste (event queue)
Seite 33 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
VHDL Simulation<br />
Haupt-Datenstruktur des Simulators ist die Ereignisliste (event queue)<br />
Annahme: Alle Zeitangaben sind ein Vielfaches von t n<br />
Simulationszustand zum Zeitpunkt t n:<br />
◮ Liste der Ereignisse zum Zeitpunkt t n+1<br />
◮ Liste der Ereignisse zum Zeitpunkt t n+2<br />
◮ ...<br />
◮ Liste der Ereignisse zum Zeitpunkt t n+i (für beliebig großes i)<br />
Simulationsablauf: Zum Zeitpunkt t n+i werden...<br />
◮<br />
◮<br />
die Ereignisse der Liste (Zuweisung neuer Werte an Signale) ausgeführt<br />
die von diesen Signalen abhängigen Prozesse aktiviert und ausgeführt
Seite 34 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
VHDL Simulation<br />
Problem: Logikelemente, die eine Verzögerungszeit von 0 haben<br />
◮<br />
◮<br />
Events zu einem Zeitpunkt generieren wieder Events zu diesem<br />
Zeitpunkt<br />
mehrere (unendlich viele) Simulationszyklen können für einen Zeitpunkt<br />
t ausgeführt werden
Seite 35 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
VHDL Simulation<br />
Problem: Logikelemente, die eine Verzögerungszeit von 0 haben<br />
◮<br />
◮<br />
Events zu einem Zeitpunkt generieren wieder Events zu diesem<br />
Zeitpunkt<br />
mehrere (unendlich viele) Simulationszyklen können für einen Zeitpunkt<br />
t ausgeführt werden<br />
Was passiert?<br />
◮<br />
◮<br />
◮<br />
bei Ausführung zum Zeitpunkt t werden Daten in die Ereignisliste für<br />
Zeitpunkt t geschrieben, obwohl der zu t gehörige Simulationszyklus<br />
schon läuft<br />
am Ausgang entsteht Puls mit Breite 0 (zero-width pulse)<br />
Auswertungsreihenfolge bestimmt ob zero-width pulse entsteht, d.h.<br />
verschiedene Simulatoren können verschiedene Ausgaben liefern!
Seite 36 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
VHDL Simulation<br />
Lösung: in VHDL gibt es keine Verzögerungszeit von 0!<br />
◮<br />
◮<br />
◮<br />
ein Event, das von einem anderen Event direkt kausal abhängt, findet<br />
um ein Delta-Delay verzögert statt<br />
Delta-Delay sind künstliche Delays<br />
neu eingetragene Daten in die Event List werden erst im nächsten<br />
Simulationszyklus den Signalen zugewiesen<br />
◮<br />
Simulatorverhalten wird damit standardisiert
Seite 37 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Event-Queue mit Delta-Delays<br />
◮<br />
◮<br />
◮<br />
Delta-Delays ordnen Events innerhalb eines Zeitpunkts<br />
Delta-Delays lassen die Simulationsuhr nicht fortschreiten<br />
können sich aber nie zu einem echten Zeitschritt aufaddieren
Seite 38 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Event-Queue mit Delta-Delays<br />
Initialisierungsphase und Stopregel<br />
• Initialisierung<br />
◮<br />
◮<br />
◮<br />
◮<br />
Erzeugung einer leeren Liste<br />
Setzen aler Signale auf ihre kleinstmöglichen“ Werte<br />
”<br />
Einfügen der von außen gesetzten Signal in die Liste<br />
Aktivierung aller Prozesse<br />
• Stopregeln<br />
◮<br />
◮<br />
leere Liste<br />
Überschreiten des zu simulierneden Zeitintervalls
Seite 39 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Zeitverhalten von Prozessen<br />
Prozesse...<br />
◮<br />
◮<br />
modellieren sequentielle Abläufe<br />
sind implizit auch Concurrent Statements, d.h. in einer<br />
VHDL-Beschreibung existieren alle Prozesse und alle expliziten<br />
Concurrent Statements parallel<br />
Ein Prozess...<br />
◮<br />
◮<br />
◮<br />
wird am Anfang der Simulation einmal ausgeführt (initialisiert) bis zum<br />
wait-Statement oder zum Ende des Prozesses, falls kein wait-Statement<br />
existiert<br />
bleibt nach einem Durchlauf zwar aktiv, geht aber in einen<br />
Schlaf-Zustand“ über (suspend)<br />
”<br />
wird erst wieder aufgeweckt“ (resume) und macht einen Durchlauf,<br />
”<br />
wenn ein Event bei einem der Signale (in der Sensitivitätsliste oder der<br />
wait on- / until-Bedingung) auftritt, oder wenn die mit wait for“ ”<br />
angegebene Verzögerungszeit abgelaufen ist
Seite 40 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Zeitverhalten von Prozessen<br />
Prozess-Zustandsübergangsgraph<br />
aktiv<br />
Änderung eines Signals<br />
der Sensitivitätsliste<br />
gestoppt<br />
Simulator holt<br />
Prozeß aus<br />
der Queue<br />
running<br />
...läuft bis eine wait-<br />
Anweisung kommt<br />
Prozeß fertig<br />
abgearbeitet<br />
Simulationszyklus<br />
◮<br />
◮<br />
Auswertung der Signale der aktiven Prozesse<br />
Zuweisung der Werte an die Signale
Seite 41 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Synthese<br />
Hardwarebeschreibungssprachen<br />
◮<br />
◮<br />
ursprünglich zur Simulation von Hardware entwickelt<br />
heute auch als Eingabesprache für die Synthese verwendet<br />
Synthese<br />
◮<br />
◮<br />
◮<br />
◮<br />
automatisierter Entwurf von digitalen Schaltungen<br />
manche VHDL-Sprachkonstrukte sind nicht synthetisierbar<br />
synthetisierbares VHDL Subset ist im Standard IEEE 1076.6 definiert<br />
die meisten Synthesewerkzeuge können mehr als diesen Standard,<br />
meist Hersteller-spezifisch
Seite 42 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Synthese<br />
Was macht für die Synthese keinen Sinn?<br />
◮ vorgegebene Zeiten: after, wait for, ...<br />
◮<br />
◮<br />
Datei-Operationen: es gibt kein Filesystem in Hardware<br />
Initialisierung von Signalen nicht durch jede Ziel-Technologie unterstützt<br />
Beispiele<br />
◮<br />
kombinatorische Zuweisungen werden direkt in Gatter umgesetzt<br />
z
Seite 43 Simulation von Hardwarebeschreibungen | Digitaltechnik | Wintersemester 2013<br />
Synthese<br />
◮<br />
◮<br />
Merke:<br />
◮<br />
◮<br />
hierarchisches VHDL wird in Verdrahtung umgesetzt<br />
sequentielles VHDL kann in kombinatorische und/oder sequentielle<br />
Logik umgesetzt werden<br />
werden bei If- und Case-Anweisungen alle Fälle auscodiert, so wird<br />
kombinatorische Logik erzeugt, ansonsten Latches<br />
bei Abfragen auf Signalflanken werden Flipflops erzeugt, und zwar für<br />
alle Signalzuweisungen innerhalb eines Prozesses