Question

Je le code suivant dans specman:

var x := some.very.long.path.to.a.variable.in.another.struct;

while (x == some_value) {
    //do something that uses x;
    //wait for something

    //get a new value for x
    x = some.very.long.path.to.a.variable.in.another.struct;
};

Maintenant, il semble inutile d'écrire l'affectation à deux fois x; une fois lors de l'initialisation et une fois au cours de la boucle.

Ce que je veux vraiment utiliser est une référence à long nom de variable, de sorte que je pouvais faire:

var x := reference to some.very.long.path.to.a.variable.in.another.struct;

while (x == some_value) {
    //do something that uses x;
    //wait for something
    //no need to update x now since it's a reference
};

Cela peut se faire en specman?

Était-ce utile?

La solution

specman / e utilise généralement des références et des listes pour les structures, donc si votre type de variable est soit de celui-ci votre deuxième exemple devrait fonctionner. Pour ou integer boolean Je ne sais pas un moyen d'utiliser une référence à une variable. Quoi qu'il en soit, deux idées qui pourraient vous aider:

  1. Ajouter un pointeur à l'autre et struct lier dans un fichier de configuration:

    struct a { other_variable : uint; };
    struct b {
        other_struct : a;
        some_func() is {
            var x : uint = other_struct.other_variable;
            while (x == some_value) {
                x = other_struct.other_variable;
            };
        };
    };
    extend cfg {
        struct_a : a;
        struct_b : b;
        keep struct_b.other_struct == struct_a;
    };
    

    Mise à jour: Vous pouvez trouver plus d'informations sur cette technique dans cette équipe Specman post .

  2. Enveloppez votre boucle while dans une fonction, vous pouvez y passer des paramètres par référence (voir help pass reference):

        some_func(x : *uint) is {
            while (x == some_value) {
                // stuff ...
            };
        };
    

Hope this helps!

Daniel

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top