Hardware Reference
In-Depth Information
3.1.8 Nebenläufige Prozeduren
Eine nebenläufige Prozedur ist ein Prozeduraufruf außerhalb eines Prozesses.
Er wird in einen Prozess mit allen Eingabesignalen der Prozedur in der Weck-
liste und dem Prozeduraufruf als einzige Anweisung übersetzt. Der Prozess
ruft die Prozedur zum Simulationsbeginn auf, wartet nach ihrer Beendigung
auf eine Änderung eines der Eingabesignale der Prozedur und ruft sie dann er-
neut auf. Mit diesem Verhaltensmodell lässt sich jedes Verhalten nachbilden,
das ein einzelner Prozess beschreiben kann. Die Vorteile von nebenläufigen
Prozeduren gegenüber Prozessen sind, dass sich Prozeduren in Packages aus-
lagern, parametrisiert beschreiben, separat testen und mehrfach verwenden
lassen. Als Beispiele sollen typische Bausteine eines Testrahmens - ein Test-
objekt, ein Testeingabegenerator und ein Ausgabeprozess - als nebenläufige
Prozeduren beschrieben werden.
Das Testobjekt sei ein NAND-Gatter mit einer Halte- und einer Verzöge-
rungszeit. Die Ein- und Ausgabesignale müssen den Objekttyp »signal« ha-
ben, die Eingabesignale, damit sie in die Weckliste übernommen werden, und
das Ausgabesignal, damit ihm Signaländerungen zugewiesen werden können.
Die Haltezeit und die Verzögerungszeit sind normale Eingabeparameter:
t h ,t d
procedure nand_proc( signal a, b:std_logic;
signal y: out std_logic; th, td:delay_length) is
begin
y <= 'X' after th;
if not is_x(a) and not is_x(b) then
y <= transport a nand b after td;
end if ;
end procedure ;
a
b
& y
) WEB-Projekt:P3.1/UP_pack.vhdl
Eingerahmt in ihren Prozess wird die Prozedur zum Simulationsbeginn und
dann nach jeder Änderung eines der beiden Eingabesignale aufgerufen. Bei
jedem Aufruf wird dem Ausgabesignal nach der Haltezeit der Pseudo-Wert
»ungültig« und, wenn der Eingabewert gültig ist, zusätzlich nach der Ver-
zögerungszeit der neue Funktionswert zugewiesen. Die Zuweisung des neuen
gültigen Wertes erfolgt nach dem Transportverzögerungsmodell, damit die
schwebende Änderung nach »ungültig« nicht gelöscht wird (vgl. Abschnitt
1.3.3).
Die zweite Beispielprozedur soll einen erschöpfenden Testsatz für das
NAND-Gatter unter Verwendung der Übergangsfunktion »countx(...)« aus
Abb. 3.9 erzeugen. Das zu erzeugende Signal ist für die Prozedur ein Aus-
gabesignal. Der zweite Aufrufparameter legt die Dauer der Testschritte fest.
Da die Prozedur kein Eingabesignal hat, wird sie nur zum Simulationsbeginn
aufgerufen. Sie legt dann zwei Datenobjekte an, eine Konstante für den Start-
wert und eine Variable für den Zustand. Beide übernehmen die Bitbreite des
Testeingabesignals und werden mit dem Startwert »alles null« initialisiert.
 
Search WWH ::




Custom Search