以uvm_event#(uvm_object)作为参数,继承自uvm_object_string_pool,该类的继承关系如下图所示: uvm_object_string_pool#(T)包含的常用方法有:get()、delete()等。 get()根据输入字符串返回一个T类型的对象,delete()删除指定字符串的对象。 uvm_event_pool机制可以方便uvm_event在环境搭建过程中的使用, 可以很...
Calling uvm_event_pool::get_global(“event_name”) method returns an event handle. get_global Returns the specified item instance from the global item pool. Refer to the uvm_pool for more details. uvm event pool example The below example consists of two components comp_a and comp_b. event...
A UVM event pool manages a pool of events that can be accessed using a string name. Each of the two agents in this example gets the same event from the pool (different parts of the testbench just have to agree on the name they will use). The `uvm_event_pool` class acts as an ...
1.uvm_event的使用 在uvm中只需要将 uvm_event放到 uvm_event_pool中即可,这在进行移植验证环境时,是非常便利的事情,并且我们在使用时,也不需要关心event的路径,只需要从event_pool中get到这个event就可以了。比如说,我们在tc里的main_phase中发完包之后,一般都会设置drain_time来等待dut将数据吐完,我们就可以在...
(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_event使用方法 首先从常见的uvm_event达成同步的方式讲起: moduletest importuvm_pkg::*; initialbegin // get a reference to the global singleton object by // calling a static method uvm_event_pool ev_pool = uvm_event_pool::get_global_pool();// ...
在UVM中,通过将uvm_event添加到uvm_event_pool,使得在移植验证环境时更加便捷。使用uvm_event_pool时,无需关注事件路径,直接从池中获取事件即可。例如,假若在测试案例(tc)的main_phase阶段完成数据发送后,通常会设置drain_time等待DUT完成数据输出。此时,在scoreboard中设置一个uvm_event等待数据接收...
Simple example 本篇对一个示例,分别使用两种方式来描述: 一个简单的FSM如下,分为4种状态;对于状态的跳转条件,本篇通过uvm_event类型的事件触发,验证环境中的实际情况可以是事件,某一个signal状态,或者if的判断等;不同状态下的Action,仅使用一句display代表,验证环境中的实际情况可以调用某一个task,对signal的驱动,...
event_pool = uvm_event_pool::get_global_pool(); another_event = event_pool.get("another_event"); end. 2. 事件触发方法。 `trigger()`. 功能:触发事件,通知所有等待该事件的进程。 示例: systemverilog. uvm_event my_event; initial begin. my_event = new("my_event"); // 触发事件。 my_...
uvm_event#(event_data)ev=data_event_pool::get_global("event_key"); 24 phase.raise_objection(this); 25 #10; 26 data.value=100; 27 ev.trigger(data); 28 phase.drop_objection(this); 29 endtask 30 endclass 31 32 classevent_component2extendsuvm_component; ...