通过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捕获这次事件。(这里用component只是作为例子使用,实际上在object中也可以这么做)。
uvm_event_pool顾名思义,用于存放uvm_event的一个池子。通过这个池子,uvm_event可以被全局访问。 必须选择使用uvm_event作为电平敏感事件或边沿敏感事件,不能把这两种使用模式混在一起。 对于电平敏感的同步,使用trigger()打开事件,使用reset()关闭事件。 对于边沿敏感的同步,只使用trigger()来触发边缘,不要调用reset...
除了经典的tlm通信,你还可以借助uvm_event的魔力来实现跨组件的数据流动哦。💡想象一下,在src组件中,你拥有一个uvm_event_pool资源池和它的实例event。当数据宝宝到来,想要往外跑时,你只需轻轻一按event.trigger(data),数据就飞速传递出去啦!🚀而在dst组件呢?别担心,你只需在uvm_event_pool中找到src中那个e...
例如,假若在测试案例(tc)的main_phase阶段完成数据发送后,通常会设置drain_time等待DUT完成数据输出。此时,在scoreboard中设置一个uvm_event等待数据接收完毕,然后通过uvm_event通知tc触发main_phase中的uvm_event.trigger,实现仿真结束。通过my_event = uvm_event_pool::get_global("my_event")将my_...
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...
uvm_event_pool等待触发:wait for trigger 保护(独占Grab/释放Ungrab) 两个sequence抢用同一个sequencer,所以使用grab/ungrab保证同一时间只有一个sequence使用这个sequencer uvm_pool virtual sequence示例 virtual sequence virtual sequencer test 可以使用v_seqr.start(v_sqr)的方式启动v_sqr 内容 virtual sequence ...
uvm_event event1;//定义 event1=uvm_event_pool::get_global("event1");//例化 event1.wait_trigger(); ... 则文件b在执行的过程中会一直在wait_trigger等待,直到event1.trigger()触发为止。 2 wait_trigger_data()用法 uvm event是可以带参数的,但是需要注意的参数必须是uvm_object类型的,因此在传递参...
文章目录前言1、uvm_event2、uvm_event_pool总结 前言 1、uvm_eventuvm_event类有两种不同的操作模式:边沿敏感和电平敏感。边沿敏感模式包括:trigger(),wait_trigger(),wait_ptrigger()和wait_ptrigger_data() 方法。不要使用reset(),is_on(),is_off(),wait_on()和w ...
event无法携带更多的信息,而uvm_event可以通过trigger(uvm_event data = null)的可选参数,将所要伴随触发的数据信息都写入到该触发事件中,而等待该事件的对象可以通过方法wait_trigger_data(output uvm_object data)来获取事件触发时写入的数据对象。 event触发时无法直接触发回调函数,而uvm_event可以通过add_callback...
virtual task wait_ptrigger (); if (m_event.triggered) return; num_waiters++; @m_event; endtask uvm_event获取操作方便 uvm环境提供uvm_event_pool类,借助该类可以在任意组件中实现uvm_event实例的获取。 uvm_event_pool::get_global_pool(),该函数返回一个全局的uvm_event_pool句柄,可以通过get函数获取...