specman有静态变量吗?

时间:2009-05-25 18:04:44

标签: static specman

我在遗传的specman中有以下代码:

some_method() is {
    var a: bool;

    if (!a) {
        a = some_other_method();
    };
};

我的理解是,每次调用some_method()时,都会重新生成a,并且在分配a之前检查a的值是没有意义的。但是,我可能在这里遗漏了一些东西。例如,如果{{1}}是静态的,那么这段代码是有道理的,这让我想到了我的问题:

变量在specman中有静态吗?

2 个答案:

答案 0 :(得分:3)

没有像C中那样的静态变量。方法中的变量有默认值(在这种情况下为False)如果没有初始化,那么你应该是正确的if (!a)应该始终是{{ 1}}。

如果True是结构成员,情况会有所不同,那么就像其他OO语言一样,它会保留多个方法调用的值,并且检查更有意义:

a

您也可以在交互式提示中查看此类内容:

struct some_struct_s {
    a : bool;
    some_method() is {
        if (!a) {
            a = some_other_method();
        };
    };
};

交互式帮助也很好,例如尝试:

Specman> var a : bool;
Specman> print a
  a = FALSE

并选择条目(按编号)Specman> help variable 。在那里,您将找到有关您问题的所有相关信息。

干杯, 丹尼尔

答案 1 :(得分:0)

静态结构成员(事件,字段,方法)被添加到Specman v15.2中的语言中。无法生成静态字段,物理(%)或在子类型中使用。

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