typedef uvm_object_string_pool #(uvm_event) uvm_event_pool; uvm_event_pool可以通过get来获取event变量,如果该变量没有被create,则会先create。 get函数原型: virtual function T get(string key); if(!pool.exists(key)) pool[key] = new(key); return pool[key]; endfuntion 使用uvm_event_pool首先...
UVM的学习,还是非常推荐张强的《UVM实战》,不过书里貌似没有写uvm_event的使用。 uvm_event支持的方法有如下表所示 1.uvm_event的使用 在uvm中只需要将 uvm_event放到 uvm_event_pool中即可,这在进行移植验证环境时,是非常便利的事情,并且我们在使用时,也不需要关心event的路径,只需要从event_pool中get到这个eve...
uvm环境提供uvm_event_pool类,借助该类可以在任意组件中实现uvm_event实例的获取。 uvm_event_pool::get_global_pool(),该函数返回一个全局的uvm_event_pool句柄,可以通过get函数获取到输入字符串对应的uvm_event句柄,在uvm_event_pool中uvm_event都有唯一对应的字符串。 uvm_event_pool gep; uvm_event fred; ...
(1)通过uvm_event_pool::get_global_pool()函数获取全局的单实例类uvm_event_pool类型对象的句柄; (2)两个initial块中调用get_global_pool返回同一个uvm_event_pool类型对象的句柄; (3)通过uvm_event_pool.get(“ev”)可以得到一个名字为”ev”的uvm_event对象的句柄;如果名字为"ev"的uvm_event对象不存在,...
uvm_eventto_idle,to_state_a,to_state_b,to_state_c; functionnew(); events_pool=uvm_event_pool::get_global_pool(); to_idle=events_pool.get("to_idle"); to_state_a=events_pool.get("to_state_a"); to_state_b=events_pool.get("to_state_b"); ...
uvm_event_pool的应用示例如下所示,同样先利用uvm_event_pool.get_global(“reset”),获取一个用于全局复位的复位事件reset_event,这个reset_event是全局的,在上面的reset_monitor中进行触发和复位,在这里利用reset_event.wait_on()来阻塞进程,用于同步控制。
uvm_event是sv中event的class warpper,内建了很多方法。 # uvm_pool.svh class uvm_object_string_pool #(type T=uvm_object) extends uvm_pool #(string,T); ... typedef class uvm_barrier; typedef class uvm_event; typedef uvm_object_string_pool #(uvm_barrier) uvm_barrier_pool; typedef...
通过my_event = uvm_event_pool::get_global("my_event")将my_event注册到event_pool中。在set_component中将uvm_event添加到event_pool并设定触发条件,在get_component中从uvm_event_pool取出,通过wait_trigger捕获事件。实际上在object中也可进行类似操作。此时my_event与b间的数据传递完成。wait_...
event无法直接获取等待它的进程数目,而uvm_event不但可以通过get_num_waiters()来获取等待它的进程数目。 不同的组件可以共享同一个uvm_event,这不是通过跨层次传递uvm_event对象句柄来实现共享的,因为这并不符合组件环境封闭的原则。这种共享同一个uvm_event对象是通过uvm_event_pool这一全局资源池来实现的。这个资...
• event 无法直接获取等待它的进程数目, 而 uvm_eveot 可以通过 get_num_waiters()来获取等待它的进程数目。 不同组件可以共享同一个 uvm_event, 这不需要通过跨层次传递 uvm_event 对象句柄来实现共享, 因为这不符合组件环境封闭的原则, 该共享方式是通过 uvm_event_pool 这一全局资源池来实现的。这个资源...