Analyseablaufsteuerung¶
In diesem Abschnitt werden die Elemente beschrieben, mit denen der Ablauf einer Traceanalyse beeinflusst werden kann. Folgende Blöcke stehen zur Verfügung: If-Then-Else, IfDef und SwitchDef-Case. Alle Blöcke lassen sich unter- oder oberhalb einer Episode verwenden und beliebig verschachteln.
If-Then-Else¶
Mit einem If-Then-Else-Block ist es möglich in Abhängigkeit von Signalen, Globalen Konstanten, Package- oder Benutzervariablen bestimmte Traceschritte auszuführen. Im Gegensatz zu einem IfDef oder SwitchDef-Case kann der If-Then-Else-Block auf Signale zugreifen und flexibel auf Packagevariablen reagieren, welche im Testfall oder über die Packageparametrierung gesetzt wurden. Ein weiterer Unterschied besteht darin, dass bei Verwendung des If-Then-Else-Blocks die verwendeten Signale enthaltener Traceschritte auch eingelesen werden, wenn die Traceschritte nicht ausgeführt werden.
Zur komfortablen Erstellung der Bedingung können z.B. Variablen über die Autovervollständigung ausgewählt werden.
Nach der Bestätigung mit OK wird der Traceschritt in die Traceanalyse eingefügt und weitere Traceschritte können unter Then (Bedingung ist wahr) und Else (Bedingung nicht wahr) eingefügt werden.
Über das Kontextmenü lassen sich mehrere markierte Traceschritte in einen neuen Then Block hinein verschieben.
Info
Signale können nur innerhalb der im Folgenden aufgeführten Funktionen verwendet werden. Signale können außerdem nur verwendet werden, wenn sich der If-Then-Else-Block unterhalb einer Episode befindet. Weiterhin ist zu beachten, dass die Funktionen global ausgewertet werden, auch wenn sich der If-Then-Else-Block unterhalb eines Triggerblocks befindet.
Info
If-Then-Else-Blöcke außerhalb von Episoden werden zum Beginn der Traceanalyse ausgewertet. Wenn ein Variablenwert während der Traceanalyse geändert wird, beeinflusst das also nur If-Then-Else-Blöcke unterhalb von Episoden.
Funktionen¶
- IsFound(signal)¶
Gibt zurück, ob das Signal berechnet oder in der Aufnahmedatei gefunden wurde.
Info
Selbst ein Signal ohne Samples kann ggf. in einer Aufnahmedatei gefunden werden.
Beispiel:
# Wahr, wenn das Signal berechnet oder in der Aufnahmedatei gefunden wurde IsFound(Sig0)
- SampleCount(signal)¶
Gibt die Anzahl der Samples zurück.
Beispiel:
# Anzahl der Samples von Sig0 SampleCount(Sig0)
IfDef¶
Mit diesem Analyseelement kann direkt auf die globalen Konstanten der Konfiguration zugegriffen werden. Somit ist es möglich Traceschritte nur auszuführen, wenn eine bestimmte globale Konstante auf einen bestimmten Wert gesetzt wurde oder überhaupt vorhanden ist.
Die IfDef-Bedingung wird vor der Traceanalyseausführung geprüft.
Über das Kontextmenü lassen sich mehrere markierte Traceschritte in einen neuen IfDef-Block hinein verschieben.
SwitchDef-Case¶
Mit nur einem SwitchDef-Case-Block ist es möglich, den Analyseablauf beliebig zu verzweigen. In Abhängigkeit des Wertes einer globalen Konstanten, können bestimmte Traceschritte ausgeführt werden. Hierzu müssen diese in den jeweiligen Case-Block eingefügt werden
Hinter Konstante wird die globale Konstante angegeben, die ausgewertet werden soll. Ebenfalls kann hier ein konstanter Ausdruck angegeben werden.
Die Verzweigungen (mögliche Werte) können mit Hilfe der beiden Buttons an der rechten Seite des SwitchDef-Case Dialogs ergänzt oder gelöscht werden. Die spezielle Verzweigung Default existiert immer und kann nicht gelöscht werden. Sie kommt zur Ausführung, wenn keine andere Verzweigung zutrifft. Durch einen Doppelklick kann der Wert aller anderen Verzweigungen bearbeitet werden.
Das Wort hinter der jeweiligen Verzweigung gibt an, ob diese Verzweigung weitere Traceschritte enthält
(genutzt) oder derzeit leer ist (ungenutzt). Steht neu da, wurde sie gerade erst erstellt und der
Dialog seitdem noch nicht wieder geschlossen.
Entsprechen mehrere Case-Bedingungen der globalen Konstanten so wird nur die erste ausgeführt (implizites break).
Dies ist auch im Bild ersichtlich, wobei die globale Konstante TRANSMISSION den Wert AT hat.
Trifft keine der Case-Bedingungen zu, werden die Traceschritte unter Default ausgeführt.
Als Sicherheitsmaßnahme, um unerwartete Konstantenbelegungen leichter zu erkennen, wird die Ausführung
des Default-Knotens standardmäßig mit ERROR bewertet. Dieses Verhalten kann über eine Checkbox
im SwitchDef-Case Dialog deaktiviert werden. Das Vorhandensein eines solchen Default-Knotens kann dazu führen,
dass ein Analysejob erzeugt wird, obwohl dies sonst nicht der Fall wäre.
Existiert die globale Konstante nicht, führt dies immer zu einem ERROR und weder die
Default-Traceschritte noch die Traceschritte unter einer der Case-Bedingungen werden ausgeführt.
Die Case-Blöcke bzw. der Default-Block können nicht manuell ausgeblendet werden. Im Gegensatz zum IfDef-Block kann jedoch der gesamte SwitchDef-Case Block ein- und ausgeblendet werden.