Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
List 我如何等待specman中事件列表中的一个事件?_List_Events_Specman - Fatal编程技术网

List 我如何等待specman中事件列表中的一个事件?

List 我如何等待specman中事件列表中的一个事件?,list,events,specman,List,Events,Specman,我在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[

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

您可以手动级联事件:

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的长度,并生成第一个{sync…list作为宏的替换

很抱歉,我目前没有时间编写一个示例,但是如果您感兴趣,Specman文档应该是您的朋友。如果您还没有听说过计算宏,那么它绝对值得一看


[更新]:在Team Specman上,他们刚刚发布了一篇文章。他们在这个主题上也有一些文章。

另一个解决方案是使用计算宏。计算宏的概念是编写代码来生成电子代码。使用这种方法,您可以查看foo_l的长度并生成{同步…列表作为宏的替换

很抱歉,我目前没有时间编写一个示例,但是如果您感兴趣,Specman文档应该是您的朋友。如果您还没有听说过计算宏,那么它绝对值得一看


[更新]:在TeamSpecman上,他们刚刚发布了一篇文章。他们也有一些关于这个主题的文章。

Grateary:-接下来是必须的15个字符扩展名!Grateary:-接下来是必须的15个字符扩展名!