2009-06-29 47 views
0

我在的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

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

    UPDATE:你可以找到一些這方面的更多信息技術在this Team Specman Post

  2. 總結while循環的功能,也可以按引用傳遞參數(見help pass reference):

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

希望這有助於!

丹尼爾

相關問題