1. uvm_objection 和 uvm_component 基础 uvm_objection 和 uvm_component 是 uvm 中两大基础类,刚开始学习的时候,对两个东西认识不深,以为它们俩差不多,谁知道它两是一个是“爷爷”,一个是孙子的关系,两者贯穿整个 uvm 验证方法学。至于为什么要划分 uvm_object 和 uvm_component 呢,是因为前辈们在...
其实,uvm_component本身也是继承自uvm_object的,其具体的继承关系如下图所示。 从图上给可以看出,除了driver, monitor, agent, model, scoreboard, env, test之外的几乎所有类本质都是uvm_object。uvm_component相比uvm_object多出来的功能有两点:一是增加了new函数的parent参数,使其可以构成UVM树的结构;二是有phase...
一个简单的例子:uvm_component在整个仿真中是一直村子啊的,但是加入我们要发送一个transaction(激励)给DUT,此transaction(激励)可能只需要几毫秒就可以发送完,根本没有必要一直存在在整个仿真中。生命是多样化的,要既允许uvm_component这样的高级生命存在,也要允许transaction这种如流星一闪而逝的东西存在。
虽然uvm_component和uvm_object看似是有你无我,有我无你的对等关系。但从继承图中可以看出,其实,uvm_component是uvm_object的“孩子”。uvm_object是UVM中最最基本的类,工作中常用的类基本都是派生自uvm_object,uvm_void更是类的祖宗。而工作中UVM验证平台常见的组件,比如,uvm_agent,uvm_driver,uvm_monitor,uvm_...
如果读者现在依然对uvm_object很迷茫的话,那么举一个更加通俗点的例子,uvm_object是一个分子,用这个分子可以搭建成许许多多的东西,如既可以搭建成动物,还可以搭建成植物,更加可以搭建成没有任何意识的岩石、空气等。uvm_component就是由其搭建成的一种高级生命,而sequence_item则是由其搭建成的血液,它流通在各个高...
uvm_component类派生关系图 uvm_object 是一个相对简单的类,它主要提供了两大类的方法接口: 用于field_automation 机制的方法,如print, copy, pack 等; 用于鉴别身份的方法,如 get_name, get_type_name, get_full_name 等。 其中关于 field_automation 机制的一些代码相对比较复杂。这个留在后面讲述 field_autom...
Uvm_component和uvm_object:: Uvm_component特点:在new的时候,需要指定一个类型为uvm_component,名字是parent的变量: Function new(string name,uvm_component parent); 在一般使用的时候,若在类A 中有uvm_component B,则在A中定义如下: B=new(“B”,this); ...
UVM:3.1.1 uvm_component 派生自 uvm_object,1.uvm_object是UVM最基本的类,能想到的几乎所有类都继承自uvm_object,
1.uvm_object uvm_object是一个相对简单的类,它提供了一些基本的接口,如用于 field_automation 机制的 print,copy,pack 等,一些鉴别身份的,如 get_name,get_type_name,get_full_name 等。 2. uvm_component 对于uvm_component 来说,有两大特点,一是它是一种树形组织结构中的一个结点,在其 new 的时候都要...
UVM模型(二)之component,UVM模型(二)之componentComponent与object是UVM中两个最重要的概念。1.uvm_component中的parentUVM通过uvm_component来实现树形结构,所有的UVM树的节点都是一个uvm_component。每个uvm_component都有一个特点:他们在new的时候,需要指定一个