UVM学习——介绍



引言

本专栏的博客均与 UVM 的学习相关,学习参考:

 【1】UVM Tutorial

 【2】张强著,UVM实战 (卷 Ⅰ)

 【3】Download UVM (Standard Universal Verification Methodology)

本文就先介绍 UVM 的基本内容。


UVM 概念

UVM(Universal Verification Methodology,通用验证方法) 是一个全产业的标准,它使能了更快速的开发,验证环境的重用以及IP验证。

它是使用SV的语法和语义定义的一组类库,SystemVerilog (IEEE 1800),现在是一个IEEE标准。
UVM背后的主要思想是通过提供可以部署在多个项目的API架构来帮助公司开发模块化、可重用可扩展(推广)的 testbench 。
UVM主要来源于开放验证方法(OVM技术)和支持多个EDA供应商,像Synopsys,Cadence,Mentor and Aldec。UVM类库提供了通用的工具,比如配置数据库,TLM和组件层次结构除了数据自动化功能,如复制、打印和比较。它将在一个抽象层验证环境中的每个组件都有一个特定的角色。例如,驱动类的对象将只负责驱动设计中的信号,而监控只是监视的设计接口和不驱动接口信号。
下图显示了一个典型的验证环境是由扩展可用UVM类是用uvm_ *前缀。这些组件已经有必要的代码,让他们彼此之间的连接,处理数据包和与他人同步合作。

它还经历了许多修改,增加了新的功能,取消了一些旧的功能。UVM的参考手册可以在这里:Download UVM (Standard Universal Verification Methodology)获得,其中包含对类层次结构、函数和任务的描述。

这里对 UVM 资源的下载以及学习使用作如下说明:

1、点进去链接后,选择最新版本下载:

 2、下载完成后,得到一个名为 UVM-18002-2020-20tar.gz 的压缩包。需要通过 power shell 完成解压。(Win 10)

搜索 power shell:

 

然后打开应用。

 解压完成后,得到下面的文件:

 当然,如果不想麻烦,直接进我的粉丝交流群(文末有链接),我已经上传到群文件:

 

如果需要学习,建议直接打开下面所示的 网页文档:

 可以按照右边的索引,系统学习:

 

UVM 类的层级结构

UVM提供了一组基类,从中可以通过继承来构建更复杂的类,并向其添加验证环境所需的某些函数。例如,可以通过从UVM基类uvm_driver扩展来构建Wishbone协议的新驱动程序类。该协议的激励可以通过从uvm_sequence_item中进行扩展来编写。如何构建这个序列并传递给驱动程序由UVM框架内部处理。
uvm_void是所有类的基础,但它是空类.uvm_object是主要类,其中定义了打印、复制和比较同一类的两个对象的公共函数。

该层次结构中有两个分支。第一个分支包含定义验证组件的类,如驱动程序、监视器,其余的在图中显示为UVM_REPORT_OBJECT下的所有内容。第二个分支定义由验证组件使用和操作的数据对象,这些数据对象在图中显示为UVM_TRANSACTION下的所有内容

UVM类的 主要类别

UVM对象(Objects)   
UVM背后的想法是增强灵活性和重用代码,这样相同的测试台就可以以不同的方式配置来构建不同的组件,并提供不同的激励。建议从uvm_object中派生出这些新的用户定义的配置类。例如,可以构建一个配置类对象,使其具有定义必须如何构建测试台环境的某些设置。


UVM序列(Sequence)
UVM还引入了一个序列的概念,它只是一个实际激励设计的容器。如果你将不同的激励放到不同的序列中,它会增强重用和随机驱动这些序列的能力,以获得更多的覆盖率和验证结果。建议从uvm_sequence 继承所有新的用户定义的激励类。
每个序列都可以在其他序列中使用来创建不同的场景。例如,可以创建单独的序列,每个序列分别用于“读”和“写”事务。它们可以在其他序列中以随机模式用于执行R->W->R->W,或R->R->R->W,W->W->R->R和其他类似的模式。

UVM序列项(Sequence item)
必须驱动到DUT的数据对象通常被称为序列项,建议从 uvm_sequence_item 继承。例如,可以为APB事务定义一个序列项类,该事务定义了地址、写/读数据和访问类型,并将其发送到APB驱动程序,以将事务驱动到DUT。


UVM组件
所有主要的测试台组件都来自于相应的基类。例如,建议从 uvm_driver 继承所有新的用户定义的驱动程序类,并从 uvm_monitor 继承监控器类,等等。下表中给出了对每个UVM组件所执行的操作的简要描述。

寄存器层
数字设计支持可以由软件配置的控制寄存器,这在系统虚拟日志测试台中是非常具有挑战性的,因为对于每个项目,您必须构建一组单独的类来存储和配置这些寄存器。UVM有一组广泛的类,使该任务相对简单,并且属于被称为寄存器模型的东西。这在验证可以在各种SoC设计中重用的ip时非常有用。


TLM连接
另一个真正聪明的特性是使用了来自System C的TLM。TLM帮助以事务和类对象的形式在组件之间发送数据。它还带来了一种向听众广播数据包的方法,而不必创建特定的频道并附加。


UVM阶段
验证组件从其父类 uvm_component 继承的另一个主要特性是阶段性的。这使得每个组件在继续下一阶段之前相互同步。下一章将介绍各个阶段。每个组件都经过实例化的构建阶段,在连接阶段相互连接,在运行阶段消耗模拟时间,并在最后阶段一起停止。

 

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
学习uvm必看的书。 1. Overview.............................................................................................................................................. 1 1.1 Introduction to UVM.................................................................................................................. 1 1.1.1 Coverage-Driven Verification (CDV) ........................................................................ 1 1.1.2 Testbenches and Environments .................................................................................. 1 1.2 Verification Component Overview ............................................................................................ 3 1.2.1 Data Item (Transaction) .............................................................................................. 3 1.2.2 Driver (BFM) .............................................................................................................. 3 1.2.3 Sequencer .................................................................................................................... 3 1.2.4 Monitor ....................................................................................................................... 3 1.2.5 Agent ........................................................................................................................... 4 1.2.6 Environment ................................................................................................................ 4 1.3 The UVM Class Library............................................................................................................. 5 1.4 Other UVM Facilities................................................................................................................. 7 1.4.1 UVM Factory .............................................................................................................. 7 1.4.2 Transaction-Level Modeling (TLM) .......................................................................... 8 2. Transaction-Level Modeling (TLM) ................................................................................................... 9 2.1 Overview .................................................................................................................................... 9 2.2 TLM, TLM-1, and TLM-2.0 ...................................................................................................... 9 2.2.1 TLM-1 Implementation ............................................................................................ 10 2.2.2 TLM-2.0 Implementation ......................................................................................... 10 2.3 Basics ....................................................................................................................................... 10 2.3.1 Transactions .............................................................................................................. 10 2.3.2 Transaction-Level Communication .......................................................................... 11 2.3.3 Basic TLM Communication ..................................................................................... 11 2.3.4 Communicating between Processes .......................................................................... 12 2.3.5 Blocking versus Nonblocking ................................................................................... 13 2.3.6 Connecting Transaction-Level Components ............................................................ 13 2.3.7 Peer-to-Peer connections .......................................................................................... 14 2.3.8 Port/Export Compatibility ......................................................................................... 14 2.4 Encapsulation and Hierarchy ................................................................................................... 14 2.4.1 Hierarchical Connections .......................................................................................... 14 2.4.2 Connection Types ..................................................................................................... 16 2.5 Analysis Communication ......................................................................................................... 16 2.5.1 Analysis Ports ........................................................................................................... 16 2.5.2 Analysis Exports ....................................................................................................... 17 2.6 Generic Payload ....................................................................................................................... 18 2.6.1 Attributes .................................................................................................................. 18 2.6.2 Accessors .................................................................................................................. 19 2.6.3 Extensions ................................................................................................................. 20 2.7 Core Interfaces and Ports ......................................................................................................... 21 2.8 Blocking Transport................................................................................................................... 22 2.9 Nonblocking Transport ............................................................................................................ 22 2.10 Sockets ..................................................................................................................................... 24 2.11 Time ......................................................................................................................................... 26 2.12 Use Models............................................................................................................................... 28
Table of Contents Articles Introduction 0 Cookbook/Introduction 0 Cookbook/Acknowledgements 1 Testbench Architecture 2 Testbench 2 Testbench/Build 9 Testbench/Blocklevel 19 Testbench/IntegrationLevel 29 Component 39 Agent 42 Phasing 48 Factory 53 UsingFactoryOverrides 56 SystemVerilogPackages 62 Connections to DUT Interfaces 65 Connections 65 SVCreationOrder 71 Connect/SystemVerilogTechniques 73 ParameterizedTests 75 Connect/Virtual Interface 78 Config/VirtInterfaceConfigDb 86 Connect/VirtInterfacePackage 90 Connect/VirtInterfaceConfigPkg 93 Connect/TwoKingdomsFactory 97 DualTop 103 VirtInterfaceFunctionCallChain 106 BusFunctionalModels 108 ProtocolModules 111 Connect/AbstractConcrete 115 Connect/AbstractConcreteConfigDB 118 Configuring a Test Environment 126 Configuration 126 Resources/config db 131 Config/Params Package 134 Config/ConfiguringSequences 139 ResourceAccessForSequences 142 MacroCostBenefit 145 Analysis Components & Techniques 146 Analysis 146 AnalysisPort 149 AnalysisConnections 152 MonitorComponent 158 Predictors 161 Scoreboards 163 MetricAnalyzers 170 PostRunPhases 172 Matlab/Integration 175 End Of Test Mechanisms 183 EndOfTest 183 Objections 185 Sequences 188 Sequences 188 Sequences/Items 193 Transaction/Methods 195 Sequences/API 200 Connect/Sequencer 204 Driver/Sequence API 206 Sequences/Generation 213 Sequences/Overrides 221 Sequences/Virtual 223 Sequences/VirtualSequencer 231 Sequences/Hierarchy 237 Sequences/SequenceLibrary 242 Driver/Use Models 246 Driver/Unidirectional 247 Driver/Bidirectional 250 Driver/Pipelined 255 Sequences/Arbitration 267 Sequences/Priority 276 Sequences/LockGrab 277 Sequences/Slave 284 Stimulus/Signal Wait 290 Stimulus/Interrupts 294 Sequences/Stopping 301 Sequences/Layering 302 Register Abstraction Layer 308 Registers 308 Registers/Specification 315 Registers/Adapter 317 Registers/Integrating 321 Registers/Integration 327 Registers/RegisterModelOverview 332 Registers/ModelStructure 334 Registers/QuirkyRegisters 344 Registers/ModelCoverage 349 Registers/BackdoorAccess 354 Registers/Generation 357 Registers/StimulusAbstraction 358 Registers/MemoryStimulus 370 Registers/SequenceExamples 375 Registers/BuiltInSequences 382 Registers/Configuration 386 Registers/Scoreboarding 389 Registers/FunctionalCoverage 395 Testbench Acceleration through Co-Emulation 401 Emulation 401 Emulation/SeparateTopLevels 404 Emulation/SplitTransactors 410 Emulation/BackPointers 415 Emulation/DefiningAPI 419 Emulation/Example 422 Emulation/Example/APBDriver 430 Emulation/Example/SPIAgent 435 Emulation/Example/TopLevel 441 Debug of SV and UVM 444 BuiltInDebug 444 Reporting/Verbosity 455 UVM/CommandLineProcessor 460 UVM Connect - SV-SystemC interoperability 464 UvmConnect 464 UvmConnect/Connections 466 UvmConnect/Conversion 468 UvmConnect/CommandAPI 472 UVM Express - step by step improvement 476 UvmExpress 476 UvmExpress/DUT 481 UvmExpress/BFM 485 UvmExpress/WritingBfmTests 490 UvmExpress/FunctionalCoverage 498 UvmExpress/ConstrainedRandom 503 Appendix - Deployment 516 OVM2UVM 516 OVM2UVM/DeprecatedCode 527 OVM2UVM/SequenceLibrary 528 OVM2UVM/Phasing 530 OVM2UVM/ConvertPhaseMethods 535 UVC/UvmVerificationComponent 537 Package/Organization 548 Appendix - Coding Guidelines 555 SV/Guidelines 555 UVM/Guidelines 569 Appendix - Glossary of Terms 579 Doc/Glossary 579

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

在路上-正出发

哈哈,多少是个心意

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值