返回介绍

8.10.1 序列事件

发布于 2020-09-09 22:55:48 字数 701 浏览 947 评论 0 收藏 0

事件表达式中可以使用一个序列实例,它基于序列的成功匹配来控制过程语句的执行。这就允许命名序列的终点能够触发其它进程中的多个动作。语法17-2和语法17-4描述了声明命名序列和序列实例的语法。正像语法8-9所显示的那样,一个序列实例可以直接使用在事件表达式中。

当一个事件表达式中指定了一个序列实例的时候,执行事件控制的进程应该阻塞直到指定的序列到达终点。只要整个序列形成匹配,一个序列就到达终点。进程继续执行之后的检测到终点的Observe区域。

使用一个序列作为事件控制的例子如下:

sequence abc;
    @(posedge clk) a ##1 b ##1 c;
endsequence

program test;
    initial begin
        @abc $display("Saw a-b-c");
        L1 : ...
    end
endprogram

在上面的例子中,当命名序列abc到达终点时,program块test中的initial块被解除阻塞,然后它显示字符串"Saw a-b-c",并执行标记为L1的语句。在这个例子中,序列终点的作用是解除事件阻塞的触发器。

使用在事件控制中的序列被实例化(就好像被一个断言特性语句实例化一样);事件控制被用来同步序列的终点,而不管它的起始时间如何。序列的自变量应该是静态的;将自动变量作为序列的自变量会导致一个错误。

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

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

发布评论

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