Frage

Ich habe den folgenden Code in Specman, die ich geerbt:

some_method() is {
    var a: bool;

    if (!a) {
        a = some_other_method();
    };
};

Mein Verständnis ist, dass jedes Mal, some_method() genannt wird, a wird neu generiert, und es hat keinen Sinn a Wert bei der Prüfung, bevor sie zugewiesen ist. Es kann jedoch sein, dass ich hier etwas fehlt bin. wenn a statisch ist zum Beispiel dann macht dieser Code Sinn, der mich auf meine Frage bringt:

Gibt es eine Möglichkeit für eine Variable in Specman statisch zu sein?

War es hilfreich?

Lösung

gibt es keine statischen Variablen wie in C. Eine Variable in einem Verfahren den Standardwert hat (False in diesem Fall), wenn nicht initialisiert, so dass Sie sich if (!a) sein sollte, sollte immer True werden.

Dinge wären anders, wenn a ein struct Mitglied ist, dann wie in anderen OO-Sprachen wäre es dort Wert über mehrere Methodenaufrufe beibehalten und die Prüfung würde mehr Sinn machen:

struct some_struct_s {
    a : bool;
    some_method() is {
        if (!a) {
            a = some_other_method();
        };
    };
};

Sie können Sachen wie diese überprüfen auch auf der interaktiven Eingabeaufforderung:

Specman> var a : bool;
Specman> print a
  a = FALSE

Dort wird die interaktive Hilfe ist auch schön, zum Beispiel versuchen:

Specman> help variable

und wählen Sie den Eintrag (nach Anzahl) sn_eref: variables : declaring. Dort finden Sie alle relevanten Informationen für Ihre Frage.

Cheers, Daniel

Andere Tipps

Statische Strukturkomponenten (Veranstaltungen, Felder, Methoden) wurden in der Sprache, in Specman v15.2 hinzugefügt. Ein statisches Feld kann nicht erzeugt werden, physikalisches (%) oder wenn verwendet in Subtypen.

struct some_struct_s {
    a : bool;
    some_method() is {
        if (!a) {
            a = some_other_method();
        };
    };
};

-- Change field 'a' for all instances
on xxx { some_struct_s::a = TRUE; };

Hier einige Kommentare aus dem teamspecman Blog: Statische Mitglieder in e

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top