Specman 有静态变量吗?

发布于 2024-07-22 04:09:55 字数 361 浏览 13 评论 0原文

我在 Specman 中继承了以下代码:

some_method() is {
    var a: bool;

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

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

有没有办法让一个变量在specman中是静态的?

I have the following code in specman that I inherited:

some_method() is {
    var a: bool;

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

My understanding is that each time some_method() is called, a is generated anew, and there's no sense in checking a's value before it's assigned. However, it may be that I'm missing something here. For instance, if a is static then this code makes sense, which brings me to my question:

Is there any way for a variable to be static in specman?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

分分钟 2024-07-29 04:09:55

没有像 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

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

Specman> help variable

并选择条目(按数字)sn_eref:变量:声明。 在那里您可以找到与您的问题相关的所有信息。

干杯,
丹尼尔

there are no static variables as in C. A variable in a method has its default value (False in this case) if not initialized, so you should be right if (!a) should always be True.

Things would be different if a was a struct member, then like in other OO languages it would retain there value over several method calls and the check would make more sense:

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

You can check stuff like this also on the interactive prompt:

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

There the interactive help is also nice, for example try:

Specman> help variable

and select the entry (by number) sn_eref: variables : declaring. There you will find all relevant information for your question.

Cheers,
Daniel

戏蝶舞 2024-07-29 04:09:55

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 博客的一些评论:e 中的静态成员

Static struct members (events, fields, methods) were added to the language in Specman v15.2. A static field can't be generated, physical(%) or used in when subtypes.

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

Here's some comments from the teamspecman blog : Static members in e

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文