目录
当下主流基于UVM的验证平台,我们喜欢使用uvm_event实现进程之间的同步。它功能十分强大,几乎满足所有应用场合。而在SystemVerilog构建测试平台中,经常会用到event来实现多个进程之间的同步处理。
之前也没有对event 好好研究过,今天抽空闲,整理和总结一下。如有不正之处,欢迎指正。
其实,event 是一个静态对象句柄指向一个同步的对象,当有进程等待一个某个事件时,这个进程就会被放入这个同步对象中的一个队列中,对于一个事件,可以允许有多个进程对于这个事件处于一种等待的状态。
事件是静态的同步对象句柄(可以像参数一样在子程序中传递),它用来同步多个并发的进程,比如某个进程等待着事件,而另一个进程则触发这个事件。
事件的几个特征:
(1)可以被赋值成null
(2)可以被赋值给其它事件,这样两个事件变量(句柄)会指向同一个同步化对象,触发任意一个变量就触发这个事件(3)可以传给队列,函数和任务
一 语法定义
语法规则:
触发机制:-> 、-