数字验证学习笔记——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_object_utils_begin(box) 域的自动化声明 uvm_object_utils_end
在这里插入图片描述

拷贝(copy)

在uvm的数据操作中,需要对copy和clone加以区分。
前者默认创建好了对象,只需要对数据进行拷贝。
后者会自动创建对象,并对source object进行数据拷贝,再返回target object句柄。
无论是copy还是clone,都需要对数据进行复制。
在这里插入图片描述
在这里插入图片描述
上述的copy中数据成员中含有句柄,是copy句柄本身,还是创建新的对象,copy句柄指向的对象?
因为同时class box在注册打开了`uvm_field_object,所以是深copy,创建新的对象,至于color和diameter没有拷贝过去,是因为ball在注册中关闭了color的copy,同时自动执行了do_copy。
在这里插入图片描述

比较(compare)

在这里插入图片描述
在这里插入图片描述

打印(print)

在这里插入图片描述
在这里插入图片描述
默认的uvm_default_printer是uvm_table_printer

打包和解包(pack&unpack)

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值