0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

UVM中的utility宏

芯片验证工程师 来源:芯片验证工程师 2023-03-30 09:39 次阅读

UVM中所有的对象都应该在factory 中注册, utility 宏就是用于将对象注册到工厂的。

Utility Macros

utils宏主要用于将object或 component 注册到工厂,它需要在每个从uvm_object派生的用户定义类中使用,包括所有类型的sequenceitems 和 components 。

ObjectUtility

所有直接从uvm_object或uvm_transaction派生的类都需要使用`uvm_object_utils宏进行注册。对于每个类,都必须显式定义new函数,并将类实例的名称作为参数

class ABC extends uvm_object; 
 
  // Register this user defined class with the factory 
  `uvm_object_utils(ABC) 
 
  function new(string name = "ABC"); 
    super.new(name); 
  endfunction 
endclass

Component Utility

所有直接或间接从uvm_component派生的类都需要使用`uvm_component_utils宏将它们注册到工厂。对于每个直接或间接从uvm_component派生的类,都必须显式定义new函数,并将类实例的名称和实例化此对象的父类的句柄作为参数。

class DEF extends uvm_component; 
 
  // Class derived from uvm_component, register with factory 
  `uvm_component_utils(DEF) 
 
  function new(string name = "DEF", uvm_component parent=null); 
    super.new(name, parent); 
  endfunction 
endclass

factory注册后的类对象创建

建议通过调用type_id::create()方法来创建所有类对象已促进验证平台的灵活性和可重用性。

class ABC extends uvm_object; 
  `uvm_object_utils(ABC) 
 
  function new(string name = "ABC"); 
    super.new(name); 
  endfunction 
endclass 
 
class base_test extends uvm_test; 
  `uvm_component_utils(base_test) 
 
  function new(string name = "base_test", uvm_component parent=null); 
    super.new(name, parent); 
  endfunction 
 
  virtual function void build_phase(uvm_phase phase); 
 
    // An object of class "ABC" is instantiated in UVM by calling 
    // its "create()" function which has been defined using a macro 
    // as shown above 
    ABC abc = ABC::create("abc_inst"); 
  endfunction 
endclass

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 函数
    +关注

    关注

    3

    文章

    3881

    浏览量

    61310
  • UVM
    UVM
    +关注

    关注

    0

    文章

    181

    浏览量

    18965
  • 类对象
    +关注

    关注

    0

    文章

    3

    浏览量

    1425

原文标题:​UVM中的utility宏

文章出处:【微信号:芯片验证工程师,微信公众号:芯片验证工程师】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    IC验证之UVM常用汇总分析(四)

    OVM过时的用法,使用纯净的UVM环境:`define UVM_NO_DEPRECATED除了上述通用的外,针对不同的仿真工具需要定义不同的
    发表于 12-02 15:24

    IC验证"一个简单的UVM验证平台"是如何搭建的(六)

    :这个driver的功能非常简单,只是向rxd上发送256个随机数据,并将rx_dv信号置为高电平。当数据发送完毕后,将rx_dv信号 置为低电平。上述代码还出现了uvm_info。这个
    发表于 12-04 15:48

    数字IC验证之“什么是UVM”“UVM的特点”“UVM提供哪些资源”(2)连载...

    uvm的事物级建模方便了工程师对事物进行建模,uvm的tlm通信机制方便实现各个组件之间的数据通信,使用uvm提供的可以方便的进行各种操作,比如实现factory机制,file的o
    发表于 01-21 16:00

    数字IC验证之“典型的UVM平台结构”(3)连载...

    。  我们一个直观的印象,就是uvm验证平台,它是分层的结构。图中的每一个巨型框都代表着平台的一个构成元素。这些元素呢,我们称为平台组建,下面来简单的分析一下。  从最底层上来看,agent 包含
    发表于 01-22 15:32

    数字IC验证之“构成uvm测试平台的主要组件”(4)连载...

    测试案例完成的。因此在构建env的时候,需要事先定义好配置接口,是env具有可配置性。  uvm不仅为验证工程师提供了测试平台的结构,而且在uvm的资源库当中。对于平台中的每一个组件啊都有一个对应
    发表于 01-22 15:33

    数字IC验证之“搭建一个可以运行的uvm测试平台”(5)连载...

    事物的控制,在智能代码前后有两个if语句,这里先不用管,它的功能是控制验证平台何时结束。  在来看看repeat语句当中的内容,repeat的语句中使用了uvm do这个uvm内建的
    发表于 01-26 10:05

    什么是uvmuvm的特点有哪些呢

    直观的印象,就是uvm验证平台,它是分层的结构。图中的每一个巨型框都代表着平台的一个构成元素。这些元素呢,我们称为平台组建,下面来简单的分析一下。从最底层上来看,agent 包含了driver,monitor和sequencer,其中driver ,monitor
    发表于 02-14 06:46

    请问一下在UVM的UVMsequences是什么意思啊

    UVM方法学,UVMsequences 是寿命有限的对象。UVM sequences从uvm_sequence_item基类扩展得到,uvm
    发表于 04-11 16:43

    sequence item实际应用应该包含哪些东西

    等。基于以上这些需求,在UVM类库提供的代码示例基础上,整理成以下一般框架,可用于指导日常开发。02 用户自定义方法在上面定义的sequence item框架,有一部分是Utility方法。这些方法
    发表于 09-23 14:42

    谈谈UVMuvm_info打印

      uvm_info的定义如下:  `define uvm_info(ID,MSG,VERBOSITY) \  begin \  if (uvm_report_enabled(VER
    发表于 03-17 16:41

    UVMseq.start()和default_sequence执行顺序

      1. 问题  假如用以下两种方式启动sequence,方法1用sequence的start()方法启动seq1,方法2用UVM的default_sequence机制启动seq2。那么seq1
    发表于 04-04 17:15

    我的第一个UVM代码——Hello world

    Ctrl-V!) 几点说明: 为了使用UVM库里的函数和定义,需要先import uvm_pkg和include uvm_macros。 在testbench的顶层(module
    发表于 11-03 10:18

    UVM学习笔记(一)

    driver应该派生自uvm_driver,而uvm_driver派生自uvm_component。
    的头像 发表于 05-26 14:38 884次阅读
    <b class='flag-5'>UVM</b>学习笔记(一)

    UVMuvm_config_db机制背后的大功臣

    本次讲一下UVM中的uvm_config_db,在UVM中提供了一个内部数据库,可以在其中存储给定名称下的值,之后可以由其它TB组件去检索。
    的头像 发表于 06-20 17:28 797次阅读

    一文详解UVM设计模式

    本篇是对UVM设计模式 ( 二 ) 参数化类、静态变量/方法/类、单例模式、UVM_ROOT、工厂模式、UVM_FACTORY[1]中单例模式的补充,分析静态类的使用,UVM中资源池的
    的头像 发表于 08-06 10:38 901次阅读
    一文详解<b class='flag-5'>UVM</b>设计模式