数字验证学习笔记——UVM学习3 核心基类

一、核心基类

UVM世界中的类最初都是从一个uvm_void根类(root class)继承来的,而实际上这个类并没有成员变量和方法。
uvm_void只是一个虚类(virtual class),还在等待将来继承于它的子类去开垦。在继承与uvm_void的子类中,有两个类,一个为uvm_object类,另外一个为uvm_port_base类。
在uvm世界的类库地图中除过事务接口(transaction interface)类继承于uvm_port_base,其它所有的类都是从uvm_object类一步步继承而来的。

从uvm_object提供的方法和相关的宏操作来看,它的核心方法主要提供与数据操作的相关服务:

  • Copy
  • Clone
  • Compare
  • Print
  • Pack/Unpack
    在SV模块的学习中,我们懂得了什么是句柄拷贝和对象得拷贝。因此,无论是copy或者clone,都需要确保在操作过程中需要有source object 和 target object。

域的自动化(field automation)
uvm通过域的自动化,使得用户在注册uvm类得同时也可以声明今后会参与到对象拷贝、克隆、打印等操作得成员变量。

数字验证学习笔记——UVM学习3 核心基类_第1张图片
uvm_object_utils_begin(box) 域的自动化声明 uvm_object_utils_end
数字验证学习笔记——UVM学习3 核心基类_第2张图片

拷贝(copy)

在uvm的数据操作中,需要对copy和clone加以区分。
前者默认创建好了对象,只需要对数据进行拷贝。
后者会自动创建对象,并对source object进行数据拷贝,再返回target object句柄。
无论是copy还是clone,都需要对数据进行复制。
数字验证学习笔记——UVM学习3 核心基类_第3张图片
数字验证学习笔记——UVM学习3 核心基类_第4张图片
上述的copy中数据成员中含有句柄,是copy句柄本身,还是创建新的对象,copy句柄指向的对象?
因为同时class box在注册打开了`uvm_field_object,所以是深copy,创建新的对象,至于color和diameter没有拷贝过去,是因为ball在注册中关闭了color的copy,同时自动执行了do_copy。
数字验证学习笔记——UVM学习3 核心基类_第5张图片

比较(compare)

数字验证学习笔记——UVM学习3 核心基类_第6张图片
数字验证学习笔记——UVM学习3 核心基类_第7张图片

打印(print)

数字验证学习笔记——UVM学习3 核心基类_第8张图片
数字验证学习笔记——UVM学习3 核心基类_第9张图片
默认的uvm_default_printer是uvm_table_printer

打包和解包(pack&unpack)

数字验证学习笔记——UVM学习3 核心基类_第10张图片

你可能感兴趣的:(验证学习,UVM,学习)