0 votes

comment créer une référence à une variable dans specman ?

J'ai 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 la mission pour x deux fois ; une fois pendant l'initialisation et une fois pendant la boucle.

Ce que je veux vraiment utiliser est une référence au nom de la variable longue, de sorte que je pourrais 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-il être fait dans specman ?

1voto

danielpoe Points 2858

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

  1. Ajouter un pointeur vers l'autre structure et le 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;
    };

    UPDATE : Vous pouvez trouver plus d'informations sur cette technique dans ce poste de l'équipe Specman .

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

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

J'espère que cela vous aidera !

Daniel

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X