两者最大的区别还是uvm_event能够传递数据,而event不行。
4.uvm_event与event的区别 (1)uvm_event的基础是event,只不过对event的触发与等待进行了扩展; (2)event被->触发后,会触发用@/wait(event.triggered())等待该事件的对象;uvm_event通过trigger()来触发,会触发使用wait_trigger()/wait_ptrigger()/wait_trigger_data()/wait_ptrigger_data()等待的对象; (3)...
uvm_event获取操作方便 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 ge...
uvm_event类与event相比,有一定的区别: ① event被->触发之后,会触发使用@等待该事件的对象;uvm_event通过trigger()来触发,会触发使用wait_trigger()等待该事件的对象。② 如果要再次等待事件触发,event只需要再次用->来触发,而uvm_event需要先通过reset()方法重置初始状态,再使用trigger()来触发。③ event无法携...
1.uvm_event的使用 在uvm中只需要将 uvm_event放到 uvm_event_pool中即可,这在进行移植验证环境时,是非常便利的事情,并且我们在使用时,也不需要关心event的路径,只需要从event_pool中get到这个event就可以了。比如说,我们在tc里的main_phase中发完包之后,一般都会设置drain_time来等待dut将数据吐完,我们就可以在...
UVM框架下,事件与事件池的运用是进行验证环境移植时的重要工具。张强的《UVM实战》书虽未详细介绍uvm_event的用法,但其在移植验证环境、简化事件管理方面提供了高效手段。在UVM中,通过将uvm_event添加到uvm_event_pool,使得在移植验证环境时更加便捷。使用uvm_event_pool时,无需关注事件路径,直接从池...
在调试过程中,我们常会遇到使用大量event的问题,特别是在UVM环境中。直接追踪每个event的触发时间可能相当困难,特别是在非interfere定义的event中,仅可通过波形观察或加入打印操作来识别触发时间,这无疑增加了调试的复杂度。为解决这一问题,UVM环境提供了uvm_event类,它为event使用提供了更强大的功能与...
8.1 uvm event的用法 9 sequence、sequencer、driver关系 9.1 uvm_sequence和uvm_sequence_item都继承于uvm_object, 不同于uvm_component只应当在build阶段作为UVM环境的不动产进行创建和配置,它们可以在任何阶段创建。 9.2 组件之间可以通过TLM进行通信,如sequencer和driver;sequence和组件之间(如sequencer)则通过uvm_event...
对比UVM与SV同步通信,主要区别在于基本思路:UVM利用uvm_object_string_pool #(T)的子类,通过类似字符串索引的关联数组实现同步,类型T Pool [string]。UVM中uvm_event的运用场景与SV中的event不同,UVM更加灵活。至于uvm_barrier,则通常用于同步多个组件,通过设置等待阈值,确保所有组件都准备就绪后...