story · 2021年07月29日

关于SystemVerilog中的Events

事件(Events)是进程之间同步的静态对象。

事件发挥作用的过程分为两个阶段,即:

一个进程触发(trigger )事件,另一个进程等待事件被触发(triggered)。可以使用->操作符触发事件,使用@操作符或者wait()等待事件被触发 

注意:其中@操作符会阻塞住所调用的进程直到触发给定的事件,所以等待进程必须先执行@语句,然后触发进程才能执行触发器操作符->。如果触发进程先执行,则等待进程会一直被阻塞。

而wait()操作覆盖则是监测触发事件是否曾被触发过,即使等待进程晚于触发进程也能接触阻塞。

wait_order是指等待所有指定的事件按照特定的顺序触发(从左到右)。例如wait_order(a,b,c)会一直等待事件a,b,c按顺序触发

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

下面的示例显示了事件触发以及等待事件触发的两个过程

module events_ex;
event ev_1; //declaring event ev_1
  initial begin
    fork
      //process-1, triggers the event
      begin
        #40;
        $display($time,"\tTriggering The Event");
        ->ev_1;
      end
           //process-2, wait for the event to trigger 
     begin
       $display($time,"\tWaiting for the Event to trigger");
        @(ev_1.triggered);
        $display($time,"\tEvent triggered");
      end
    join
  end
endmodule

Simulator Output

0 Waiting for the Event to trigger
40 Triggering The Event
40 Event triggered

如果是先触发事件,然后再等待事件触发,那么等待触发之后的语句将不会被执行。

module events_ex;
    event ev_1; //declaring event ev_1
  initial begin
    fork
      //process-1, triggers the event
      begin
        #40;
        $display($time,"\tTriggering The Event");
        ->ev_1;
      end
        //process-2, wait for the event to trigger
      begin
        $display($time,"\tWaiting for the Event to trigger");
        #60;
        @(ev_1.triggered);
        $display($time,"\tEvent triggered");
      end
    join
  end
  initial begin
    #100;
    $display($time,"\tEnding the Simulation");
    $finish;
  end
endmodule

Simulator Output

0  Waiting for the Event to triggerSimulator Output
40  Triggering The Event
100 Ending the Simulation

这里如果不加上最后一个initial begin end进程,那么仿真就会一直hang。

作者:XinXinHu
原文链接:https://mp.weixin.qq.com/s/XH0BazPXPHBC\_\_Qrb5agSw
微信公众号:
数字芯片实验室.jpg
授权转自数字芯片实验室公众号,请勿二次转载。

推荐阅读

更多数字IC设计技术干货等请关注数字芯片实验室专栏。
推荐阅读
关注数
12271
内容数
198
前瞻性的眼光,和持之以恒的学习~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息