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的callback而言,不用采用示例2中通用的callback机制方法,可以直接使用uvm_event已经实现好的函数(如add_callback等); 1//示例12class edata extends uvm_object;3`uvm_object_utils(edata)4intdata;5...6endclass78class ecb extends uvm_event_callback;9`uvm_object_utils(ecb)10...11...
1.uvm_event的使用 在uvm中只需要将 uvm_event放到 uvm_event_pool中即可,这在进行移植验证环境时,是非常便利的事情,并且我们在使用时,也不需要关心event的路径,只需要从event_pool中get到这个event就可以了。比如说,我们在tc里的main_phase中发完包之后,一般都会设置drain_time来等待dut将数据吐完,我们就可以...
在SV中,可以使用event来实现进程之间的同步,在UVM中也与专门的类来实现进程之间的同步: uvm_event#(typeT=uvm_object)。 uvm_event相比于event最大的优势是可以实现不同组件之间的同步。比如组件A,B要实现同步,如果使用SV的方法,必须在组件B中将组件A中的事件event赋值给组件B中的event,B.event=A.event。但是...
// 使用uvm_event_pool创建事件。 uvm_event_pool event_pool; uvm_event another_event; initial begin. event_pool = uvm_event_pool::get_global_pool(); another_event = event_pool.get("another_event"); end. 2. 事件触发方法。 `trigger()`. 功能:触发事件,通知所有等待该事件的进程。 示例: ...
11.wait_trigger_data:此方法调用<uvm_event_base::wait_trigger>然后调用<get_trigger_data>; 12.wait_ptrigger_data:此方法调用<uvm_event_base::wait_ptrigger>然后调用<get_trigger_data>; 13.trigger:触发事件,恢复所有等待的进程; 14.get_trigger_data:通过最后一次调用trigger得到的数据; ...
在UVM中,通过将uvm_event添加到uvm_event_pool,使得在移植验证环境时更加便捷。使用uvm_event_pool时,无需关注事件路径,直接从池中获取事件即可。例如,假若在测试案例(tc)的main_phase阶段完成数据发送后,通常会设置drain_time等待DUT完成数据输出。此时,在scoreboard中设置一个uvm_event等待数据接收...
uvm_event是一个类,定义在uvm_pkg中,需要通过include语句引入。在使用uvm_event之前,需要在UVM组件中声明一个uvm_event对象,可以在组件的内部或全局声明。 二、uvm_event的触发和等待 uvm_event的触发和等待是成对出现的。当需要触发事件时,可以通过调用uvm_event的trigger方法实现;当需要等待事件触发时,可以通过调用...
首先,uvm_event引入了trigger状态标识功能。该标识在事件被首次触发时被设置为1,触发后复位为0,便于追踪事件触发的次数。其次,uvm_event提供了wait_on和wait_off函数,允许直接检查事件当前状态,若状态满足条件,函数立即返回,否则等待至状态满足后返回。is_on和is_off函数进一步用于获取事件当前状态。...
1、uvm_event 2、uvm_event_pool 总结 前言 1、uvm_event uvm_event类有两种不同的操作模式:边沿敏感和电平敏感。 边沿敏感模式包括:trigger(),wait_trigger(),wait_ptrigger()和wait_ptrigger_data() 方法。不要使用reset(),is_on(),is_off(),wait_on()和wait_off()方法。