VHDL Simulation Dr.-Ing. Matthias Sand Lehrstuhl für Informatik 3 (Rechnerarchitektur) Friedrich-Alexander-Universität Erlangen-Nürnberg SS 2011 VHDL Simulation 1/20 2011-05-18
Motivation Der Simulationsalgorithmus bestimmt wesentlich die Semantik von VHDL. Er soll daher im Folgenden etwas näher betrachtet werden. VHDL Simulation 2/20 2011-05-18
Ereignislisten Eigenschaften Gedachte bzw. simulatorinterne Liste von Paaren aus Signalwerten und Zeitpunkten, enthält alle zukünftigen Signalwechsel, verzögerte Signalzuweisungen werden an der entsprechenden Stelle eingetragen, bei der Simulation wird die Liste abgearbeitet und ggf. ergänzt. VHDL Simulation 3/20 2011-05-18
Ereignislisten (2) Beispiel sig_a <= 1 AFTER 2 ns, 0 AFTER 5 ns, 1 AFTER 10 ns, 1 AFTER 12 ns, 0 AFTER 15 ns, 1 AFTER 17 ns ; VHDL Simulation 4/20 2011-05-18
Ereignisse Terminologie Transaktion (transaction): Eintrag aus Wert und Zeitpunkt in einer Ereignisliste. Ereignis (event): Änderung eines Signalwertes zum gegebenen Zeitpunkt. aktiv (active): Ein Signal ist aktiv, wenn ihm gerade von einer Transaktion ein Wert zugewiesen wird. VHDL Simulation 5/20 2011-05-18
Verdrängung ( Preemption ) Eigenschaften bezeichnet das Entfernen von geplanten Transaktionen aus der Ereignisliste, wird bei jeder Signalzuweisung geprüft/durchgeführt, welche Transaktionen gelöscht werden, hängt vom Verzögerungsmodell ab: Transport-Modell, Inertial-Modell, Reject-Inertial-Modell. VHDL Simulation 6/20 2011-05-18
Transport-Modell Alle Transaktionen, die nicht früher als zum Zeitpunkt der neuen Transaktion auftreten, werden entfernt. Beispiel sig_a <= TRANSPORT 1 AFTER 11 ns; führt im obigen Beispiel zum Zeitpunkt 2 ns zu: VHDL Simulation 7/20 2011-05-18
Inertial-Modell Eigenschaften Ist das Default-Modell, es gilt folgende Regel: 1 markiere Transaktion unmittelbar vor dem neuen Eintrag, falls sie denselben Wert hat, 2 markiere aktuelle und neue Transaktion, 3 lösche alle nicht markierten, anschaulich: nur solche Impulse bleiben erhalten, die mindestens die angegebene Verzögerungszeit als Dauer haben. VHDL Simulation 8/20 2011-05-18
Inertial-Modell (2) Beispiel sig_a <= 1 AFTER 11 ns; führt im obigen Beispiel zum Zeitpunkt 2 ns zu: VHDL Simulation 9/20 2011-05-18
Reject-Inertial-Modell Eigenschaften Beispiel Erweitert das Inertial-Modell, es wird eine explizite Mindestdauer für Impulse angegeben. sig_a <= REJECT 2 ns INERTIAL sig_b AFTER 3 ns ; Alle Impulse von sig_b, die länger als 2 ns sind, werden um 3 ns verzögert an sig_a weitergegeben. VHDL Simulation 10/20 2011-05-18
Simulationsalgorithmus Die Simulation springt von Zeitpunkt zu Zeitpunkt, jeder Zeitpunkt besteht aus infinitesimal kurzen Schritten, die mit bezeichnet werden, durch die Unterscheidung von simulierter Realzeit und -Schritten kann die Nebenläufigkeit von VHDL recht leicht sequentialisiert werden. VHDL Simulation 11/20 2011-05-18
Simulationsalgorithmus (2) Zur Erinnerung... Transaktion (transaction): Paar aus Signalwert und Zeitpunkt, Ereignisliste Liste von Transaktionen, Ereignis (event): Änderung eines Signalwertes zum gegebenen Zeitpunkt. Aber: nicht jede Transaktion führt zu einem Ereignis! VHDL Simulation 12/20 2011-05-18
Simulationsalgorithmus (3) solange die Eventliste nicht leer ist gehe zum nächsten Zeitpunkt t mit eingetragenen Transaktionen now := t + 0Δ aktualisiere Signale für alle aktiven Prozesse arbeite Prozessrumpf bis zur nächsten Deaktivierung ab; vermerke dabei zeitlose Signaländerungen für den nächsten Δ-Schritt, zeitbehaftete an der passenden Stelle der Eventliste now := now + 1Δ bis keine Signaländerungen für dieses Δ mehr vorliegen VHDL Simulation 13/20 2011-05-18
Delta-Zyklus Einen Durchlauf von Prozess-Abarbeitung und Signal-Aktualisierung nennt man einen Delta-Zyklus. VHDL Simulation 14/20 2011-05-18
Aktive Prozesse Prozess-Zustandswechsel Sensitiv-Liste mit ohne Aktivierung Event auf sensitivem Signal WAIT kehrt zurück Deaktivierung Prozess-END wird erreicht nächstes WAIT VHDL Simulation 15/20 2011-05-18
Initialisierung Beginn der Simulation: Zeitpunkt 0 + 0, jeder Prozess wird bis zur ersten Deaktivierung ausgeführt, danach: Fortschreiten der -Zeit nach obigem Algorithmus. VHDL Simulation 16/20 2011-05-18
Nebenläufige Zuweisungen vs. Prozesse N.B. Nebenläufige Zuweisungen können immer durch äquivalente Prozesse ersetzt werden. Beispiel csa : sig_b <= 1, 0 AFTER 2 ns WHEN s e l = 1 ELSE 0, 1 AFTER 3 ns WHEN s e l = 2 ELSE Z ; VHDL Simulation 17/20 2011-05-18
Nebenläufige Zuweisungen vs. Prozesse (2) Beispiel (Forts.) csa : PROCESS ( s e l ) BEGIN IF s e l = 1 THEN sig_b <= 1, 0 AFTER 2 ns ; ELSIF s e l = 2 THEN sig_b <= 0, 1 AFTER 3 ns ; ELSE sig_b <= Z ; END IF ; END PROCESS; VHDL Simulation 18/20 2011-05-18
Signale vs. Variablen Wichtig! Zuweisungen an Signale und Variablen wirken zu unterschiedlichen Zeitpunkten: Variablen sofort, Signale erst bei der nächsten Aktualisierung, Reihenfolge der Abarbeitung gleichzeitig aktiver Prozesse nicht festgelegt. Variablen nicht über Prozessgrenzen hinaus verwenden! VHDL Simulation 19/20 2011-05-18
Signale vs. Variablen (2) Beispiel ARCHITECTURE arch OF example IS SIGNAL a, b : i n t e g e r := 0 ; BEGIN a <= 1 AFTER 1 ns, 2 AFTER 2 ns, 3 AFTER 3 ns ; PROCESS ( a ) VARIABLE c : i n t e g e r := 0 ; BEGIN b <= a + 2 ; c := 2 b ; END PROCESS; END arch ; VHDL Simulation 20/20 2011-05-18