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

    文章

    4290

    浏览量

    62346
  • UVM
    UVM
    +关注

    关注

    0

    文章

    181

    浏览量

    19122
  • 类对象
    +关注

    关注

    0

    文章

    3

    浏览量

    1444

原文标题:​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测试平台”(5)连载...

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

    什么是uvmuvm的特点有哪些呢

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

    谈谈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

    UVMuvm_do简析

    uvm_do及其变体提供了创建、随机化和发送transaction items或者sequence的方法。
    的头像 发表于 06-09 09:36 4778次阅读
    <b class='flag-5'>UVM</b><b class='flag-5'>中</b>的<b class='flag-5'>uvm</b>_do<b class='flag-5'>宏</b>简析

    UVMuvm_config_db机制背后的大功臣

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

    如何用Verdi查看UVM环境的变量?

    我们常用的debug UVM的方法是通过打印log实现。有没有办法像 debug RTL代码一样将 UVM 变量拉到波形上看呢?答案是有的,下面让我们看看是怎么做到的。
    的头像 发表于 06-25 16:01 1598次阅读
    如何用Verdi查看<b class='flag-5'>UVM</b>环境<b class='flag-5'>中</b>的变量?

    UVMuvm_config_db机制背后的大功臣

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

    一文详解UVM设计模式

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

    行为型设计模式在UVM的应用

    接下来介绍行为型设计模式在UVM的应用。
    的头像 发表于 08-09 14:01 647次阅读
    行为型设计模式在<b class='flag-5'>UVM</b><b class='flag-5'>中</b>的应用

    UVM设计的sequence启动方式有哪几种呢?

    本篇介绍UVM的sequence,这是UVM中最基础的部分。对于前面介绍的uvm_callback, uvm_visitor等,很少被使用
    的头像 发表于 08-17 10:07 3920次阅读
    <b class='flag-5'>UVM</b>设计<b class='flag-5'>中</b>的sequence启动方式有哪几种呢?