uvm_component 存在于验证的整个过程中,其中存在的组任何组件( component )均不会被析构(释放内存空间),uvm_object 可以在验证的过程中任何时刻被实例化和析构 为了使用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_object很迷茫的话,那么举一个更加通俗点的例子,uvm_object是一个分子,用这个分子可以搭建成许许多多的东西,如既可以搭建成动物,还可以搭建成植物,更加可以搭建成没有任何意识的岩石、空气等。uvm_component就是由其搭建成的一种高级生命,而sequence_item则是由其搭建成的血液,它流通在各个高...
uvm_component: 在build_phase之后就一直存在于整个仿真周期。通过interface连接到DUT或者通过TLM port连接到其他uvm_component。通过configure机制和phase机制控制uvm_component的层次结构和仿真行为。 uvm_object: 从一个uvm_component生成,然后传递到另一个uvm_component之后就会消失。不会连接到任何组件,也不存在phase机制...
UVM很明显吸收了这种哲学,分类,然后分别管理。想象一下,加入UVM中不分uvm_object与uvm_component,所有的东西都是uvm_object,那么该是多么恐怖的一件事?这相当于我们直接与分子打交道,费时费力,不易于使用。 systemverilog作为一门编程语言,相当于是提供了最基本的原子,其使用起来相当麻烦。为了减少这种麻烦,我们有了...
虽然uvm_component和uvm_object看似是有你无我,有我无你的对等关系。但从继承图中可以看出,其实,uvm_component是uvm_object的“孩子”。uvm_object是UVM中最最基本的类,工作中常用的类基本都是派生自uvm_object,uvm_void更是类的祖宗。而工作中UVM验证平台常见的组件,比如,uvm_agent,uvm_driver,uvm_monitor,uvm...
component与object是UVM中两大最基本的概念,也是初学者最容易混淆的两个概念。uvm_object是UVM中最基本的类,读者能想到的几乎所有的类都继承自uvm_object,包括uvm_component。 uvm_component有两大特性是uvm_object所没有的: 通过在new的时候指定parent参数来形成一种树形的组织结构 ...
UVM框架设计方法中的层次化结构主要体现在两个组件类:uvm_object和uvm_component上。uvm_object主要用于构建uvm_sequence,而uvm_component则用于组建验证环境的树形结构,区别于uvm_object。UVM框架中的phase机制、config_set机制依赖于这种层次化的树形结构,每个组件都有自己的hierarchy路径。在uvm_component...