• 数字验证学习笔记——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)

    在这里插入图片描述

  • 相关阅读:
    3712. 根能抵达的点
    链接装载与库:第六章——可执行文件的装载与进程
    Mac环境安装和使用supervisor
    SecureCRT默认使用root用户连接CentOS7
    Maven安装
    Python超入门(5)__迅速上手操作掌握Python
    深入理解C语言中的Setjmp和Longjmp
    如何设计一条大型PLC生产线系统
    vscode优化使用体验篇(设置 | 插件)
    深度学习——BRNN和DRNN
  • 原文地址:https://blog.csdn.net/qq_32100199/article/details/128164469