Teil 3 - Informatik 12

Grundlagen der Technischen Informatik
Kapitel 10, VHDL, Teil 3
Prof. Dr.-Ing. Jürgen Teich
Lehrstuhl für Hardware-Software-Co-Design
Grundlagen der Technischen Informatik
VHDL
• Entwurf einer Verkehrsampelsteuerung
• Syntax und Semantik von VHDL
• Simulation von Hardwarebeschreibungen
– Funktionsweise einer Simulation
– Einige Fallen
– Testbenches
Grundlagen der Technischen Informatik
2
Funktionale Simulation
• Funktionale Simulation der Spezifikation
= Überprüfung der logischen Korrektheit der Spezifikation
• Grobe Vorgehensweise:
• Anlegen ausgewählter Eingabemuster, den Stimuli
• Ist / Soll-Vergleich
• wird üblicherweise durch Testbench gesteuert
Grundlagen der Technischen Informatik
3
Testbenches
• VHDL-Beschreibungen zur Steuerung der Simulationsläufe
– Eingabe der Testvektoren
– Vergleich der Ist- und Soll-Werte
Referenz
Simulation
DUT Eingabe
Design
Under
Test
(DUT)
Erzeuge bzw. lese
Eingabeund Soll-Werte
compare
Soll-Werte
DUT Ausgabe
pass / fail
Grundlagen der Technischen Informatik
4
Ereignisgesteuerte Simulation
• Ereignis ist im Wesentlichen eine Zuweisung eines Wertes
an ein Signal zu festgelegtem Zeitpunkt (in der Zukunft)
Zeitpunkt, Signal, Wert
• Ereignisse werden zeitlich geordnet in Ereignistabelle
eingetragen
• Wenn die Simulation die Zeit weiterschaltet:
– in Tabelle nachsehen, welche Ereignisse für den erreichten
Zeitpunkt enthalten sind.
Grundlagen der Technischen Informatik
5
Simulation von VHDL-Beschreibungen
• Zwei-Phasen-Modell:
Simulationsstart
Aktualisierungsphase
Abarbeitungsphase
Simulationsende
Grundlagen der Technischen Informatik
6
Simulation von VHDL-Beschreibungen
• Zwei-Phasen-Modell:
Simulationsstart
Werte der Signale
auf Initialwerte
setzen
Simulationszeit auf
den Zeitpunkt setzen,
für den nächstes
Ereignis vorliegt
aktive Prozesse
abarbeiten und
neue Ereignisse in
Liste einsortieren
Aktualisierungsphase
Werte der Signale für
aktuellen Zeitpunkt
aktualisieren
Abarbeitungsphase
Bestimmung der
Prozesse, die aktiv
werden
Grundlagen der Technischen Informatik
7
Simulationsende
Simulation von VHDL-Beschreibungen
• Zwei-Phasen-Modell:
Simulationsstart
Aktualisierungsphase
Abarbeitungsphase
Stopregeln:
• Leere Ereignistabelle
• Überschreiten des zu simulierenden
Zeitintervalls
Grundlagen der Technischen Informatik
8
Simulationsende
Prozessübergangsgraph
Änderung eines Signals
der Sensitivitätsliste
aktiv
Simulator holt
Prozess aus
Queue
gestoppt
gestoppt
running
… läuft, bis eine waitAnweisung kommt.
Grundlagen der Technischen Informatik
9
Aktivierung eines Prozesses
• Jeder Prozess P sollte eine Sensitivitätsliste S(P) besitzen
= Liste der Signale, von denen der Prozess abhängt
architecture RTL1 of NANDXOR is
begin
process (A, B, C)
begin
if (C='0') then
D <= A nand B after 5 ns;
else
D <= A and B after 10 ns;
end if;
end process;
end RTL1;
architecture RTL2 of NANDXOR is
begin
process
begin
if (C='0') then
D <= A nand B after 5 ns;
else
D <= A and B after 10 ns;
end if;
wait on A, B, C;
end process;
end RTL2;
• Beide Darstellungen sind äquivalent!
Grundlagen der Technischen Informatik
10
Problem bei Prozessen ohne Zeitverzögerung
architecture RTL of NOT_A is
signal a : bit := ‘0‘;
begin
process
begin
a <= not a;
wait on a;
end process;
end RTL2;
Bei Ausführung zum Zeitpunkt t0:
• L(t0)=L(t0)+(D,new_value), d.h. es
werden Daten in die Ereignistabelle für
Zeitpunkt t0 geschrieben, obwohl der
zu t0 gehörige Simulationszyklus
schon läuft.
Vorgehen von VHDL-Simulatoren:
• Neu eingetragene Daten in L(t0)
werden erst im nächsten
Simulationszyklus den Signalen
zugewiesen (Delta-Schritte).
• Erst wenn alle Delta-Schritte
abgearbeitet sind, wird der nächste
„echte“ Zeitschritt veranlasst.
Grundlagen der Technischen Informatik
11
Problem bei Prozessen ohne Zeitverzögerung
Bei Ausführung zum Zeitpunkt t0:
• L(t0)=L(t0)+(D,new_value), d.h. es
werden Daten in die Ereignistabelle für
Zeitpunkt t0 geschrieben, obwohl der
zu t0 gehörige Simulationszyklus
schon läuft.
architecture RTL of NOT_A is
signal a : bit := ‘0‘;
begin
process
begin
a <= not a;
Vorgehen von VHDL-Simulatoren:
wait on a;
end process;
• Neu eingetragene Daten in L(t0)
Delta-Delay
end RTL2;
werden erst im nächsten
Simulationszyklus den Signalen
zugewiesen (Delta-Schritte).
t0
t0+1∙t t0+2∙t
t0+3∙t t0+4∙t
…
• Erst wenn alle Delta-Schritte
a
0
1
0abgearbeitet
1 sind, 0
wird der nächste
„echte“ Zeitschritt veranlasst.
Es können mehrere (unendlich viele) Simulationszyklen
für einen Zeitpunkt t0 ausgeführt werden!
Grundlagen der Technischen Informatik
12
Beispiel „Normale Anwendung“ des Delta-Delays
Event:
c <= ‘1‘ after 1ns;
architecture RTL2 of ABC is
signal a : bit := ‘0‘;
signal b : bit := ‘0‘;
Initialisierung
signal c : bit := ‘0‘;
begin
process
begin
b <= ‘1‘;
c <= ‘1‘ after 1 ns;
wait for 1 ns;
a <= b;
b <= a;
wait for 1ns;
end process;
end RTL2;
Events:
a <= b;
b <= a;
Event:
b <= ‘1‘;
t0
t0+1∙t
t1
t1+1∙t
(= 0ns)
(= 1ns)
a
0
0
0
1
b
0
1
1
0
c
0
0
1
1
Grundlagen der Technischen Informatik
13
Beispiele zur Erklärung der Funktionsweise
entity test is
end test;
architecture verhalten of test is
signal clock: bit := '0';
begin
process
begin
clock <= not clock after 10 ns;
end process;
-- Ausgabe auf dem Monitor
assert clock='0' report "clock auf
1" severity NOTE;
assert clock='1' report "clock auf
0" severity NOTE;
end verhalten;
 Keine Ausgabe auf dem Monitor !
 Simulator gerät zur Simulationszeit 0 in unendliche Schleife !
Grund:
Keine WAIT-Anweisung im
Prozess!
process (clock)
wait on clock;
Grundlagen der Technischen Informatik
14
funktioniert nur
mit
Senistivitätsliste
bzw. wait.
Andere Modellierungsmöglichkeit
entity test is
end test;
 ... funktioniert auch!
architecture verhalten of test is
Grund:
 impliziter Prozess
 implizite Prozesse haben
alle Signale der rechten
Seite in ihrer Sensitivitätsliste
 Signal muss jedoch
initialisiert werden
signal clock: bit := '0';
begin
clock <= not clock after 10 ns;
-- Ausgabe auf dem Monitor
assert clock='0' report "clock
auf 1" severity NOTE;
assert clock='1' report "clock
auf 0" severity NOTE;
end verhalten;
Grundlagen der Technischen Informatik
15
Zusammenfassung
• VHDL-Beschreibungen können simuliert werden.
• Dazu muss auch eine Testbench (in VHDL) geschrieben
werden, die alle Eingangssignale und Clocks über die
Simulationszeit beschreibt.
• Für Validierung und Verifikation können die Ist-Werte mit
Soll-Werten verglichen werden.
• Ereignisgesteuerten Simulation von VHDL:
– In der Abarbeitungsphase werden Ereignisse (=Zeitpunkt + Signal +
Wert) aller aktiven Prozesse in einer Ereignistabelle chronologisch
einsortiert.
– In der Aktualisierungsphase werden alle Ereignisse des nächsten
Zeitpunkts abgearbeitet.
Grundlagen der Technischen Informatik
16
Selbst VHDL schreiben und simulieren…
• Viel kommerzielle Software, aber auch Gratis- und
Studenten-Versionen, z.B.
Xilinx Vivado HL WebPACK
http://www.xilinx.com/support/download.html
(1,14 GB !)
• Auch Cloud-basierte Simulatoren verfügbar, z.B.
EDA playground
http://www.edaplayground.com/
Grundlagen der Technischen Informatik