UVM:Universal Verification Methodology(通用验证方法学)
UVM:是建立在systemverilog平台上的一个库,提供了一系列的接口,让我们能够更方便的进行验证。

验证平台组成:
Driver:用来把不同的激励施加给DUT;
Monitor:用来检测DUT的输出;
Scoreboard:专门用来比较期望值与monitor检测到的DUT输出;
Reference model:输入跟DUT完全一样,它的输出送给scoreboard。用于和DUT的输出比较。

UVM验证平台的树形结构:

Driver负责给DUT发送数据,sequencer用于产生这些数据,一个sequencer通过启动一个sequence,从sequence获取数据,并把这些数据转交给driver。
Agent只是简单的吧driver、monitor、sequencer封装在一起。Agent对应的是物理接口协议,不同的接口协议对应不同的agent。在一个验证平台中通常会存在多个agent。
Env相当于一个特大容器,把所有的uvm_component都包含在其内部作为其成员变量。
实际验证平台:

类的定义与实例化:
类的定义:及编辑器写的:class A;……………….endclass
类的实例化:及A a_inst;a_inst = new();
类的定义相当于通知systemverilog仿真器,可能要用到这样一个类,类的实例化在于通过new(),来通知systemverilog仿真器开辟空间。一个类,只定义而不实例化,是没有任何意义。

Uvm_component和uvm_object::
Uvm_component特点:在new的时候,需要指定一个类型为uvm_component,名字是parent的变量:
Function new(string name,uvm_component parent);
在一般使用的时候,若在类A 中有uvm_component B,则在A中定义如下:
B=new(“B”,this);
完整UVM树:

uvm树根是uvm_top。
Uvm_component的另外一个特点是它具有phase自动执行的特性。

Uvm_component的两大特性:
1、 通过在new的时候指定parent来形成一种树形的组织结构
2、 有phase的自动执行特点

UVM中常用类的继承关系:

除了driver、monitor、agent、model、scoreboard、env之外全部用uvm_object。

常用的uvm_component:
Uvm_driver:所有driver都要派生uvm_driver。Driver的功能主要就是向sequencer索要sequence_item(transaction),并把sequence_item里的信息驱动到DUT的接口上。相当于完成了transaction级别到DUT能够接受的pin级别信息的转变。

Uvm_monior:所有monitor都要派生子uvm_monitor。Monitor从DUT的pin上接收数据,并且把接收到的数据转换成transaction级别的sequence_item,并把转换后的数据发送给scoreboard,供scoreboard比较。

Uvm_sequencer:所以的sequencer都要派生自uvm_sequencer。其功能1就是组织管理sequence,当driver要求数据时,他就把sequence生成sequence_item转发给driver。

Uvm_scoreboard:一般的scoreboard都要派生自uvm_scoreboard。其功能就是比较reference model和monitor分别发送来的数据,根据比较结果判断DUT是否正确。

Reference model:reference model直接派生自uvm_component。其作用就是模仿DUT,完成与DUT相同的功能,可以直接使用systemverilog的特性,或者可以通过DPI等接口调用其它语言来完成与DUT相同功能。

Uvm_agent:所以agent都要派生自uvm_agent。只是把driver和monitor封装在一起,根据参数来决定是只实例化monitor还是要实例化driver和monitor。

Uvm_env:所有env都要派生自uvm_env。把验证平台固定不变的component封装在一起。这样在要跑不同case时,只要在case中实例化一个env就可以。

Uvm_test:所有的case都要派生自uvm_test。Case之间差异很大,所以从uvm_test派生出来的类各不同。任何一个派生的case都要实例化env,只有这样才能正常传数。

常用uvm_object:
Uvm_sequence_item:所有的transaction要从uvm_sequence_item派生。

Uvm_sequence:所有的sequence要从uvm_sequenc派生一个。Sequence就是sequence_item的组合。Sequence和sequencer直接打交道。当driver向sequencer索要数据时,sequencer会转而向sequence要数据,当sequence发现有sequence_item时,则将数据传输过来。

Config:所有config一般直接从uvm_object派生。Config的主要功能就是规范验证平台的行为方式。

Uvm_phase:派生自uvm_object,其作用是控制uvm_component的行为方式。

UVM概述及uvm_component和uvm_object(一)相关推荐

  1. 14. UVM概述【路】【uvm红宝书】

    https://www.bilibili.com/video/BV1hy4y1p74x?spm_id_from=333.999.0.0 14.1 概述 verilog 静态例化

  2. 芯片漫游指南(1)-- UVM世界观

    目录 1 uvm中的学习内容 2 类库地图 3 工厂机制 3.1 工厂的意义 3.2 工厂提供的便利 3.3 覆盖方法 4 核心基类 4.1 uvm_object 4.2 域的自动化 4.3 拷贝(c ...

  3. UVM交互式调试库:缩短调试周转时间

    摘要: 与其他硬件验证语言(Hadware Verfication Languages,HVL)(例如Specman e)不同,在System Verilog(SV)模拟中是不原生支持交互式调试功能的 ...

  4. uvm 形式验证_uvm面试题

    1.uvm_component与uvm_object之间的区别和联系? uvm_component类:是用于构成UVM仿真平台的组件,可组成树形结构,在bulid_phase中创建,之后整个仿真周期内 ...

  5. uvm 形式验证_UVM基础

    uvm_component与uvm_object 1. 几乎所有的类都派生于uvm_object,包括uvm_component. uvm_component有两大特性是uvm_object所没有的: ...

  6. uvm 形式验证_6.小白学uvm验证 - 寄存器模型

    写过 verilog 硬件代码的同学应该都知道 DUT 会包含很多寄存器,它们是模块间交互的接口,其用途大致可以分为两类: a. 通过读出寄存器当前的值获取 DUT 当前的状态,该类寄存器称为状态寄存 ...

  7. UVM中的TLM通信

    UVM中的TLM通信 1.TLM简介 TLM:Transaction Level Modeling(事务级建模),它是一个独立于语言的一个标准,常用于系统建模,加速软硬件协同开发.在芯片开发中,常配合 ...

  8. UVM学习笔记—快速入门篇

    UVM指的是验证方法学,是学习数字验证的入门课程.它是至关重要的,有不少人往IC验证方向发展的,多多少少都会去了解UVM.但UVM并不是简单的翻个书就可以学会的,还是要掌握学习方法或者跟着老师学习的. ...

  9. 02、UVM工厂机制

    一.工厂机制的意义 工厂机制也是软件的一种典型设计模式,UVM工厂的存在就是为了更方便地替换验证环境中的实例或者注册了的类型,同时工厂的注册机制也带来了配置的灵活性. 这里的实例或者类型替代,在UVM ...

最新文章

  1. Debussy的安装
  2. iOS关于自定义rightBarButtonItem
  3. 解决方案:Error:Execution failed for task ‘:app:compileDebugAidl‘. > aidl is missing
  4. iOS手势之pinch
  5. 使用ABAP代码提交SAP CRM Survey调查问卷
  6. Ext入门学习系列(二)弹出窗体
  7. 网页在线播放器 ····
  8. 九某草 X站cms 渗透篇
  9. 国产艾莫讯仿西门子S7-200PLC控制步进电机程序
  10. 为什么学小易显示服务器开小差,学小易搜题APP
  11. 够哦了下攻击力开房间的发的goole
  12. Redis数据结构Set应用场景--黑名单校验器、京东与支付宝抽奖、微博榜单与QQ群的随机展示、帖子点赞、关注与粉丝、微关系计算、HyperLogLog的入门使用
  13. 英文面试:自我介绍篇
  14. 【基础框架-SSM】Maven_进阶
  15. 操作系统——MFC实现进程创建和通信4
  16. 车间追溯系统究竟是什么?
  17. 使用c#实现爬虫技术
  18. 学了一手屠龙之术--K型热电偶
  19. 学习总结 --- 生成树协议STP
  20. 某型武器系统测试工装研制

热门文章

  1. Loggernet软件新手入门(一)
  2. java微信公众号JSAPI支付以及所遇到的坑
  3. 《软件供应商手册:SBOM的生成和提供》解读
  4. 【树莓派3B+】【HASS.IO环境下的相关配置】一、YR天气
  5. rnss和rdss的应用_科学网-北斗RNSS和RDSS-陈超的博文
  6. 报错:“java.lang.RuntimeException:Some file crunching failed,see logs for details”
  7. OpenCV这么简单为啥不学——1.4、基础标识绘制(绘制线line函数、rectangle函数绘制四边形、circle函数绘制圆形、putText函数绘制文字、putText绘制中文文字)
  8. 学习班级班干部投票专用代码
  9. 【架构】Lambda架构
  10. sai绘制木质感吉他和上色教程