64
2 Spezifikation und Modellierung
Ohne die Aufteilung in zwei Phasen würde beiden Variablen derselbe Wert zugewiesen. Das Ergebnis würde von der Reihenfolge der Ausführung der Wertzuweisungen abhängen. Diese Aufteilung in (mindestens) zwei Phasen ist typisch für
Sprachen, die das Verhalten von synchroner Hardware nachbilden. Eine ähnliche
Aufteilung findet sich auch in VHDL (siehe Seite 118). Durch diese Trennung hängen die Ergebnisse nicht von der Reihenfolge ab, in der Teile des Modells in der
Simulation ausgeführt werden. Dies ist eine extrem wichtige Eigenschaft. Ohne diese würden verschiedene Simulationsläufe unterschiedliche Ergebnisse erzeugen, die
alle als korrekt angesehen werden können. Dies wäre eine sehr verwirrende Eigenschaft des Modells und entspricht nicht dem, was wir von einer Simulation einer
realen Schaltung mit festem Verhalten erwarten.
• Kahn [279] nennt diese Eigenschaft „ determinate”.
• In anderen Veröffentlichungen wird die Eigenschaft deterministisch genannt.
Dieser Begriff ist aber mit mehreren Bedeutungen überladen:
– Der Begriff bezeichnet nichtdeterministische endliche Automaten, die sich
zugleich in mehreren Zuständen befinden können [222].
– Sprachen können nichtdeterministische Operatoren besitzen. Diese Operatoren
besitzen mehrere zulässige Implementierungen.
– Viele Autoren bezeichnen ein System als nichtdeterministisch, wenn sein Verhalten von einer Eingabe zur Laufzeit abhängt.
– In der Bedeutung von Kahns Begriff „ determinate”.
In diesem Buch verwenden wir den Begriff „deterministisch” im Sinne von Kahns
Begriff „ determinate”. StateMate-Modelle können nur deterministisch sein, wenn
es keine anderen Gründe für undefiniertes Verhalten gibt. So könnten z.B. Konflikte
zwischen verschiedenen Transitionen erlaubt sein, wie in Abb. 2.23 gezeigt. Wenn in
Abb. 2.23 Links: Konflikt
zwischen Schachtelungstiefen;
rechts: Konflikt auf
derselben Tiefe
A
A
>10
<20
x
x
Abb. 2.23 (links) das Ereignis A eintritt, während sich das System im linken Zustand
befindet, müssen wir bestimmen, welche Transition ausgeführt werden soll. Wenn
diese Konflikte auf beliebige Weise aufgelöst würden, wäre das Verhalten nichtdeterministisch. Meist werden deshalb Prioritäten definiert, damit diese Art von Konflikt
aufgelöst werden kann. In Abb. 2.23 (rechts) liegt ein Konflikt beispielsweise für
den Fall x = 15 vor. Solche Konflikte sind nur schwer zu erkennen. Um deterministisches Verhalten zu erreichen, dürfen keine Konflikte vorhanden sein, die in einer
beliebigen Weise aufgelöst werden.
Es mag aber auch Fälle geben, in denen wir nichtdeterministisches Verhalten
beschreiben wollen, z.B. wenn von zwei verschiedenen Eingängen gelesen werden
2 Spezifikation und Modellierung
Ohne die Aufteilung in zwei Phasen würde beiden Variablen derselbe Wert zugewiesen. Das Ergebnis würde von der Reihenfolge der Ausführung der Wertzuweisungen abhängen. Diese Aufteilung in (mindestens) zwei Phasen ist typisch für
Sprachen, die das Verhalten von synchroner Hardware nachbilden. Eine ähnliche
Aufteilung findet sich auch in VHDL (siehe Seite 118). Durch diese Trennung hängen die Ergebnisse nicht von der Reihenfolge ab, in der Teile des Modells in der
Simulation ausgeführt werden. Dies ist eine extrem wichtige Eigenschaft. Ohne diese würden verschiedene Simulationsläufe unterschiedliche Ergebnisse erzeugen, die
alle als korrekt angesehen werden können. Dies wäre eine sehr verwirrende Eigenschaft des Modells und entspricht nicht dem, was wir von einer Simulation einer
realen Schaltung mit festem Verhalten erwarten.
• Kahn [279] nennt diese Eigenschaft „ determinate”.
• In anderen Veröffentlichungen wird die Eigenschaft deterministisch genannt.
Dieser Begriff ist aber mit mehreren Bedeutungen überladen:
– Der Begriff bezeichnet nichtdeterministische endliche Automaten, die sich
zugleich in mehreren Zuständen befinden können [222].
– Sprachen können nichtdeterministische Operatoren besitzen. Diese Operatoren
besitzen mehrere zulässige Implementierungen.
– Viele Autoren bezeichnen ein System als nichtdeterministisch, wenn sein Verhalten von einer Eingabe zur Laufzeit abhängt.
– In der Bedeutung von Kahns Begriff „ determinate”.
In diesem Buch verwenden wir den Begriff „deterministisch” im Sinne von Kahns
Begriff „ determinate”. StateMate-Modelle können nur deterministisch sein, wenn
es keine anderen Gründe für undefiniertes Verhalten gibt. So könnten z.B. Konflikte
zwischen verschiedenen Transitionen erlaubt sein, wie in Abb. 2.23 gezeigt. Wenn in
Abb. 2.23 Links: Konflikt
zwischen Schachtelungstiefen;
rechts: Konflikt auf
derselben Tiefe
A
A
>10
<20
x
x
Abb. 2.23 (links) das Ereignis A eintritt, während sich das System im linken Zustand
befindet, müssen wir bestimmen, welche Transition ausgeführt werden soll. Wenn
diese Konflikte auf beliebige Weise aufgelöst würden, wäre das Verhalten nichtdeterministisch. Meist werden deshalb Prioritäten definiert, damit diese Art von Konflikt
aufgelöst werden kann. In Abb. 2.23 (rechts) liegt ein Konflikt beispielsweise für
den Fall x = 15 vor. Solche Konflikte sind nur schwer zu erkennen. Um deterministisches Verhalten zu erreichen, dürfen keine Konflikte vorhanden sein, die in einer
beliebigen Weise aufgelöst werden.
Es mag aber auch Fälle geben, in denen wir nichtdeterministisches Verhalten
beschreiben wollen, z.B. wenn von zwei verschiedenen Eingängen gelesen werden
