我有一个结构在specman:

struct foo_s {
    event foo_ev;

    // some code that will emit foo_ev sometimes
};

和一个清单:

var foo_l: list of foo_s;  // later code will manage the list

现在我要同步的 foo_ev 事件清单:

first of {
    sync @foo_l[0].foo_ev;
    sync @foo_l[1].foo_ev;
    sync @foo_l[2].foo_ev;
    //etc
};

问题是,在这段运行,我不知道该如何许多元素都在 foo_l.是否有任何方式为我要等待 任何foo_ev 事件中发现?

有帮助吗?

解决方案

您可以手动级联事件:

unit bar_u {
    foo_l: list of foo_s;  
    event any_foo_toggled_e;
}

struct foo_s {
    event foo_e;
    on foo_e {
        emit get_enclosing_unit(bar_u).any_foo_toggled_e;
    };

    // some code that will emit foo_ev sometimes
};

其他提示

另一个解决办法是使用一个计算宏。这一概念的计算宏编写代码生成的电子码。使用这种方法,你可以看看的长度 foo_l 并生成的 first of { sync ... 列表中作为替代的宏观。

抱歉,我目前没有时间做饭了一个例子,但Specman文件应该是你的朋友如果你有兴趣。如果你没听说过有关计算宏然而,它肯定是值得看一看。

[更新]: 在团队Specman他们刚刚发表的一个 例计算的宏.他们也有一些 老职位 关于这一主题。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top