如何在specman中创建对变量的引用?

时间:2009-06-29 14:43:24

标签: reference specman

我在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;
};

现在,将作业写入x两次似乎很浪费;一次在初始化期间,一次在循环期间。

我真正想要使用的是对长变量名的引用,以便我可以这样做:

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
};

这可以在specman中完成吗?

1 个答案:

答案 0 :(得分:1)

specman / e通常使用结构和列表的引用,所以如果您的变量类型是其中任何一个,那么您的第二个示例应该可行。对于integerboolean,我不知道如何使用变量的引用。无论如何,有两个可能对你有帮助的想法:

  1. 添加指向其他结构的指针并将其绑定在配置文件中:

    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;
    };
    

    更新:您可以在this Team Specman Post中找到有关此技术的更多信息。

  2. 在一个函数中包装你的while循环,你可以通过引用传递参数(参见help pass reference):

        some_func(x : *uint) is {
            while (x == some_value) {
                // stuff ...
            };
        };
    
  3. 希望这有帮助!

    丹尼尔