我在specman中继承了以下代码:
some_method() is {
var a: bool;
if (!a) {
a = some_other_method();
};
};我的理解是,每次调用some_method()时,都会重新生成a,在赋值之前检查a的值是没有意义的。然而,可能我在这里遗漏了一些东西。例如,如果a是静态的,那么这段代码就有意义,这就引出了我的问题:
有没有办法让一个变量在specman中是静态的?
发布于 2009-05-26 06:52:37
没有像C中那样的静态变量。如果没有初始化,方法中的变量就有它的默认值(在本例中是False),所以你应该是对的,if (!a)应该总是True。
如果a是一个结构成员,情况就不同了,那么就像在其他OO语言中一样,它会在几次方法调用中保留那里的值,并且检查会更有意义:
struct some_struct_s {
a : bool;
some_method() is {
if (!a) {
a = some_other_method();
};
};
};您也可以在交互式提示符上查看类似的内容:
Specman> var a : bool;
Specman> print a
a = FALSE这里的交互式帮助也很不错,例如try:
Specman> help variable并选择条目(按编号) sn_eref: variables : declaring。在那里,您将找到与您的问题相关的所有信息。
干杯,丹尼尔
发布于 2017-06-23 22:53:25
在Specman v15.2中,静态结构成员(事件、字段、方法)被添加到语言中。静态字段不能生成、物理(%)或在when子类型中使用。
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; };以下是来自teamspecman博客的一些评论:Static members in e
https://stackoverflow.com/questions/907577
复制相似问题