返回介绍

13.6 事件排序:wait_order()

发布于 2020-09-09 22:55:52 字数 1052 浏览 953 评论 0 收藏 0

wait_order结构会挂起调用进程直到所有指定的事件以指定的顺序(从左到右)被触发,或者任何为触发的事件被乱序触发,并因此会导致操作失败。

wait_order结构的语法如下:

wait_statement ::=         // 引用自附录A.6.5
    ...
  | wait_order (hierarchical_identifier[, hierarchical_identifier]) action_block

action_block ::=
    statement_or_null
  | [statement] else statement

语法13-2 — wait_order事件排序语法(摘录自附录A)

为了使wait_order成功,在序列的任何点上,后续的事件—在这一点上它必须是未触发的,或者序列已经失败—必须以规定的顺序被触发。以前的事件并没有被限制成只发生一次。也就是说,一旦一个事件以规定的顺序发生,那么它可以被再次触发而不会引起结构失败。

只有列表中的第一个事件能够等待稳固的触发特性。

结构失败是采取的动作依赖于是否指定了可选的else语句(失败语句)。如果指定了失败语句,那么一旦结构失败就会执行指定的语句。如果没有指定失败语句,那么失败会产生一个运行时错误。

例如:

wait_order(a, b, c);

上面的例子会挂起当前的进程直到事件a、b和c以a –> b –> c的顺序触发。如果事件被乱序触发,那么会产生一个运行时错误。

例子:

wait_order(a, b, c) else $display("Error: events out of order");

在这个例子中,失败语句指出:一旦结构失败应该显示一条用户消息,但不会产生一个错误。

例子:

bit success;
wait_order(a, b, c)
    success = 1;
else
    success = 0;

在这个例子中,完成状态被存储在变量success中,并且不会产生一个错误。

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文