其他分享
首页 > 其他分享> > UVM 基础入门(一)

UVM 基础入门(一)

作者:互联网

UVM 基础入门

一、框架

框架一

img

构成环境的组件都从uvm_component类继承而来,这是因为它们都从uvm_component类继承了phase机制,都会经历各个phase阶段。常见组件如下:

框架二

img

框架三

在这里插入图片描述

二、各组建关系

component与object是UVM中最基本的两个概念

uvm_object是UVM中最基本的类,几乎全部的类都是由uvm_object类派生出来,其中包含uvm_component。

uvm_object 提供的核心方法主要提供与数据操作的相关服务,CopyCloneComparaPrintpack/unpack

uvm_component有两大特性是uvm_object所不具备的。

img

三、uvm_object类

类的预定义

预定义uvm_object的相关扩展类,以便在uvm_object的相关方法中调用:

typedef class uvm_report_object;
typedef class uvm_object_wrapper;
typedef class uvm_objection;          // uvm_object类中未使用
typedef class uvm_component;          // uvm_object类中未使用
typedef class uvm_status_container;

类的方法

类的声明

virtual class uvm_object extends uvm_void;
endclass

变量声明

  // 静态变量,决定是否使能UVM中的播种机制,影响全局的reseed()方法;
  static bit use_uvm_seeding = 1;
  
  // 局部变量,通过new函数将类的实例化名传递给该变量,变量对子类及外部不可见;
  local string m_leaf_name;

  // 局部变量,使用new()函数实例化类时,m_inst_count自动加1并传递给该局部变量,用于返回实例化id,变量对子类及外部不可见;
  local int m_inst_id;

  // 静态局部变量,用于返回实例化次数,该局部变量对子类可见,对外部不可见;
  static protected int m_inst_count;

  static uvm_status_container __m_uvm_status_container = new;
  
  // 查找表,用于copy()函数的实现;
  local static uvm_object uvm_global_copy_map[uvm_object];

方法声明

extern function new (string name="");
    
extern function void copy (uvm_object rhs);

extern virtual function void do_pack (uvm_packer packer);

extern function int unpack (ref bit  bitstream[],
                             input uvm_packer packer=null);
//其他见UVM参考手册

方法的实现

function uvm_object::new (string name="");
  m_inst_id = m_inst_count++;
  m_leaf_name = name;
endfunction

Mr.翟的博客

UVM学习之:uvm_object类

标签:printer,入门,packer,rhs,object,基础,uvm,copy,UVM
来源: https://blog.csdn.net/weixin_43830240/article/details/110830263