uvm_object_registry uvm_facroty的单例模式实现 使用factory机制创建类实例 create_object_by_type override相关的4个函数 set_type_override_by_type 总结 工厂(factory)机制 工厂机制作为设计模式(design pattern)中的一种并不是uvm独有的,但却作为一个重要的概念被uvm引入实现了。 “工厂”表示一个负责创建其他...
new是OOP自带属性,create是UVM override属性,可以理解成create比new更进阶~ create是用factory模式来construct对象,在factory中注册过的uvm_object扩展类或是uvm_component 扩展类都可以用create,这样做的好处是在testcase里面可以override. new是什么时候都可以用的。 只有与UVM基本类相关的类才可以使用create方法,相当于...
uvm_object类是所有UVM类的基类。在UVM实战中描述得比较恰当,相当于分子,是各种物质、动物植物的基本组成部分。 UVM世界中所有事物都具有的属性和方法就可以在uvm_object类中进行声明,例如create, copy, pack/unpack, compare, print等等。 在我们的验证环境中,无法实例化一个uvm_object类的对象,因为它是一个virtual...
其实,uvm_component本身也是继承自uvm_object的,其具体的继承关系如下图所示。 从图上给可以看出,除了driver, monitor, agent, model, scoreboard, env, test之外的几乎所有类本质都是uvm_object。uvm_component相比uvm_object多出来的功能有两点:一是增加了new函数的parent参数,使其可以构成UVM树的结构;二是有phase...
(如果是根据 name创建实例,则调用create_component_by_name函数,通过 name在关联数组 m_teyp_names索引到 type_id::me,再调用 type_id::me中的 create_componet函数。对于 object的创建,和 component类似,使用 facotry中的 create_object_by_type/name创建。
static function T create(string name , uvm_component parent , string context=""); 1. 2. 3. 4. uvm_object 在实例化过程中,可以指定 parent 组件,也可以不指定;但是 uvm_component 在实例化过程中必须指定,只有指定了 parent 组件,该子 compoent 才能成功的挂载于 uvm_tree 中。
staticfunctionTcreate(stringname , uvm_componentparent,stringcontext=""); uvm_object 在实例化过程中,可以指定parent组件,也可以不指定;但是 uvm_component在实例化过程中必须指定,只有指定了 parent 组件,该子 compoent 才能成功的挂载于 uvm_tree 中。
2.1.1 uvm_object_registry(T, S) 上文中的type_id实际上是参数化的类,两个参数可以看成是哈希的key-value。在这个参数化的类的get()函数中,通过uvm_factory的register函数将它自己注册,或者说将这个哈希放到一个全局的登记表格中去了。 顺带一提另一个经常看见的函数create()。它的作用也很简单,即根据给定...
3.1.7 uvm_component与uvm_object的二元结构 3.2 UVM的树形结构 3.2.1 uvm_component中的parent参数 3.2.2 UVM树的根 3.2.3 层次结构相关函数 3.3 field automation机制 3.3.1 field automation机制相关的宏 3.3.2 field automation机制的常用函数 *3.3.3 field automation机制中标志位的使用 ...
uvm_field_int(vlan_info3, UVM_ALL_ON)'uvm_field_int(vlan_info4, UVM_ALL_ON)end'uvm_field_int(ether_type, UVM_ALL_ON)'uvm_field_array_int(pload, UVM_ALL_ON)'uvm_field_int(crc, UVM_ALL_ON | UVM_NOPACK)'uvm_field_int( is_vlan, UVM_ALL_ON | UVM_NOPACK)'uvm_object_utils...