m_global_pool是uvm_pool #(KEY, T)类型的静态类,通过静态方法get_global_pool可以获得唯一的实例。uvm_queue #(T)和uvm_pool#(type KEY=int, T=uvm_void)类似,实现一个class-based dynamic queue. # uvm_pool.svh class uvm_pool #(type KEY=int, T=uvm_void) extends uvm_object; const static st...
uvm中用到uvm_object_string_pool的地方有uvm_event_pool、uvm_barrier_pool等。 uvm_pool直接派生自uvm_object,实现了一个动态关联数组的基类,可根据需求对稀疏数组进行定位、传递及存储。uvm_pool实现的主要方法有: 序号 方法 描述 1 get_global_pool 返回global pool,为空的话先new再返回 2 get 返回指定key...
uvm_event_pool::get_global_pool(),该函数返回一个全局的uvm_event_pool句柄,可以通过get函数获取到输入字符串对应的uvm_event句柄,在uvm_event_pool中uvm_event都有唯一对应的字符串。 uvm_event_pool gep; uvm_event fred; gep = uvm_event_pool::get_global_pool(); fred = gep.get("fred"); 参考...
get_global_pool()的源代码如上,结合uvm_event_pool的成员pool和m_global_pool——其中pool是从uvm_pool中继承过来的,而KEY和T正是传递的类型参数,string和uvm_event——可以知道,调用get_global_pool()会返回一个类型为uvm_event_pool的句柄,句柄指向的对象是全局并且单例的。也就是说两个initial块中两次调用...
uvm_event_poolevents_pool; 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"); ...
(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对象不存在...
(2)两个initial块中调用get_global_pool返回同一个uvm_event_pool类型对象的句柄; (3)通过uvm_event_pool.get(“ev”)可以得到一个名字为”ev”的uvm_event对象的句柄;如果名字为"ev"的uvm_event对象不存在,会在第一次调用get_global()函数时创建这样一个对象。
uvm_queue/uvm_pool/uvm_barrier_pool/uvm_event_pool/uvm_object_string_pool uvm_pool是一个模板类,该模板内维护了一个与特定类型一致的全局数组,该数组内记录了T类型的对象可以通过key类型的变量进行检索。 1.static protected this_type m_global_pool;//在get_global_pool ()中实例化,建立了一个全局的对...
通过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_pool#(string,int)drv_pool;//1、建立uvm_pool资源池 virtual protected task run_phase(uvm_phase phase); super.run_phase(phase); //event_pool drv_pool = drv_pool.get_global_pool();//2、创建实例,然后共享item drv_pool.add("aa",10);//3、往资源池中增加元素 ...