《UVM实战》——3.1节uvm_component与uvm_object

本文详细介绍了UVM中uvm_component和uvm_object的区别和联系。uvm_object是UVM的基础类,而uvm_component继承自uvm_object,具备树形结构和阶段执行特性。uvm_component常用于构建验证组件,uvm_object则用于非组件类,如sequence、transaction等。此外,文中列举了两者常用的派生类和相关宏的使用。
摘要由CSDN通过智能技术生成

本节书摘来自华章社区《UVM实战》一书中的第3章,第3.1节uvm_component与uvm_object,作者 张 强,更多章节内容可以访问云栖社区“华章社区”公众号查看

第3章
UVM 基 础
3.1 uvm_component与uvm_object
component与object是UVM中两大最基本的概念,也是初学者最容易混淆的两个概念。本节将介绍uvm_object与uvm_component的区别和联系。

3.1.1 uvm_component派生自uvm_object
通过对第2章搭建的验证平台的学习,读者应对UVM有了较直观的认识,不少读者会认为uvm_component与uvm_object是两个对等的概念。当创建一个类的时候,比如定义一个sequence类,一个driver类,要么这个类派生自uvm_component(或者uvm_component的派生类,如uvm_driver),要么这个类派生自uvm_object(或者uvm_object的派生类,如uvm_sequence),似乎uvm_object与uvm_component是对等的概念,其实不然。
uvm_object是UVM中最基本的类,读者能想到的几乎所有的类都继承自uvm_object,包括uvm_component。uvm_component派生自uvm_object这个事实会让很多人惊讶,而这个事实说明了uvm_component拥有uvm_object的特性,同时又有自己的一些特质。但是uvm_component的一些特性,uvm_object则不一定具有。这是面向对象编程中经常用到的一条规律。
uvm_component有两大特性是uvm_object所没有的,一是通过在new的时候指定parent参数来形成一种树形的组织结构,二是有phase的自动执行特点。图3-1列出了UVM中常用类的继承关系。
从图中可以看出,从uvm_object派生出了两个分支,所有的UVM树的结点都是由uvm_component组成的,只有基于uvm_component派生的类才可能成为UVM树的结点;最左边分支的类或者直接派生自uvm_object的类,是不可能以结点的形式出现在UVM树上的。


9917f269e7ac3c4d1478e4e905ef6891a7dbae2b

3.1.2 常用的派生自uvm_object的类
既然uvm_object是最基本的类,那么其能力恰恰也是最差的,当然了,其扩展性也是最好的。恰如一个婴儿,其能力很差,但是可以把其尽量培养成书法家、艺术家等。
到目前为止uvm_object依然是一个相当抽象的类。验证平台中用到的哪些类会派生自uvm_object?答案是除了派生自uvm_component类之外的类,几乎所有的类都派生自uvm_object。换个说法,除了driver、monitor、agent、model、scoreboard、env、test之外的几乎所有的类,本质上都是uvm_object,如sequence、sequence_item、transaction、config等。
如果读者现在依然对uvm_object很迷茫的话,那么举一个更加通俗点的例子,uvm_object是一个分子,用这个分子可以搭建成许许多多的东西,如既可以搭建成动物,还可以搭建成植物,更加可以搭建成没有任何意识的岩石、空气等。uvm_component就是由其搭建成的一种高级生命,而sequence_item则是由其搭建成的血液,它流通在各个高级生命(uvm_component)之间,sequence则是众多sequence_item的组合,config则是由其搭建成的用于规范高级生命(uvm_component)行为方式的准则。
在验证平台中经常遇到的派生自uvm_object的类有:
uvm_sequence_item:读者定义的所有的transaction要从uvm_sequence_item派生。transaction就是封装了一定信息的一个类,本书中的my_transaction就是将一个mac帧中的各个字段封装在

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值