IC验证——UVM学习——验证平台中的组件
UVM验证平台可以看成是由多个模块组合在一起,通过把这些模块放在一起利用接口和DUT连接起来,从而最终实现验证的目的。如图为一个完整的UVM验证平台框图,下图中每一个组件(即UVM中的component)就是一个类。
这些模块不是简单的函数或者过程,而是一个个实实在在的对象文件,这些对象内部会包括一些function或者task等来协作完成整个验证平台的运行
sequence是产生transaction(事务)的组件,属于平台外的,但由于和testbench关系较大,所以一并讨论。
0. sequence组件
事务反生器,即产生transaction。transaction不能算是testbench中的组件,只是各组件间的数据流。
- 基类
- uvm_sequence_item
该类可以派生事务级的transaction类,这是使验证平台相互连通的重要组件。为了使transaction能随机化,需要给每个成员指定为rand。
transaction和driver类是不同的,它是有生命周期的,他在仿真的某一时间产生,经过driver驱动,在经过testbench中的参考模型处理,最终由scoreboard比较完成后,其生命周期结束。
- uvm_sequence
产生事务发生器,即派生出sequence,并可以在定义时产生一系列transaction对象(一般来说,一个sequence产生一种类型的transaction)。它不属于验证平台的部分,但是却能给验证平台提供激励。
- task
- body()
sequence中最重要的部分就是其中的task: body(),作用是产生和控制transaction。当一个sequence启动之后,会自动执行body中的代码。
- 宏
- `uvm_do(ptr)
该宏在UVM中比较常用,作用是:
(1)创建transaction对象,调用一次即产生一次对象,即产生完整地使平台运行的一个包。
(2)将其随机化
(3)最终将其送给sequencer。
ptr为指针,可通过该指针访问创建的事务对象。driver取走这个transaction后,uvm_do并不会立刻返回执行下一次uvm_do,而是等待在那里,直到driver返回item_done信号。
1. testcase
在testbench中首先需要创建一个测试案例,它用来实例化和配置environment,使env模拟不同的配置环境,执行不同的测试行为;指定测试的sequence
若一个功能点的testcase的env配置完成,则不能改动,若要改动或修复则需重新配置env。
2. environment组件
env组件可以将testbench中所有组件封装在一起,在该类中可以实例化多个agent,reference model,scoreboard等,并将其互连。
注意:一旦该组件定义完成,后续不得轻易对其更改,若更改须重新验证所有的testcase。因此在定义时最好事先配置好interface,使env就有可配置性。
- 基类
- uvm_env
可以派生出可以实例化testbench中各组件类的容器类。和driver一样,容器类在仿真中是一直存在的,可以使用uvm_component_utils宏来实现factory的注册
3. agent组件
agent中可以实例化sequencer,driver,monitor等组件,并将这些组件连接起来。
- 模式
- active
需要实例化sequencer、driver、monitor,连接sequencer和driver。
该状态是agent的默认状态,在代码中,is_active是agent内建的变量,默认值为UVM_ACTIVR。 - passive
该模式下只有monitor,因此没有驱动DUT的能力,但可以用来捕获DUT的输出信号并转化为transaction。
- 基类
- uvm_agent
4. sequencer组件
用来启动sequence,并将transaction对象发送给driver。绝大部分功能由UVM实现
- 基类
- uvm_sequencer(transaction)
作用:
(1)sequence在向sequencer发送transaction时,会先发一个请求,sequencer把这个请求放在一个仲裁队列中,并检测仲裁队列里是否有某个sequence发送transaction的请求
(2)检测driver是否申请transaction
5. driver组件
激励驱动,从sequencer接收transaction对象,并转化为DUT可接收的pin级信号,再按照DUT总线接口协议要求驱动DUT。
- 基类
- uvm_driver(transaction)
6. monitor组件
driver类负责把transaction级别的数据变成DUT的端口级别,并驱动给DUT;monitor的行为与其相对,用于收集DUT的端口数据,并将其转换为transaction交给后续的组件reference model,scoreboard处理。
monitor要通过TLM_port和其他组件相连。
- 基类
- uvm_monitor
7. reference model组件
模拟DUT的功能行为,根据输入的激励产生相应的结果,并交给scoreboard。
无直接调用基类,均由uvm_component扩展
8. scoreboard组件
比较reference model和DUT的输出结果是否一致,从而判断DUT的功能是否正确;同时可以将功能覆盖率收集嵌入到该组件中。
- 基类
- uvm_scoreboard
IC验证——UVM学习——验证平台中的组件相关推荐
- IC验证——UVM学习
UVM是一种基于Systemverilog的验证方法学,其特征是提供用于基本验证结构和可调用的基础类库,可让验证工程师快速搭建可靠的验证框架.UVM自定义的框架构建类和测试类能够帮助验证师减轻环境构建 ...
- UVM实战 卷I学习笔记2——为验证平台加入各个组件(1)
目录 1.加入transaction 2.加入env 3.加入monitor 4.封装成agent 开始引入reference model.monitor.scoreboard等验证平台的组件,在这些 ...
- UVM学习——搭建简单的UVM平台
引言 本专栏的博客均与 UVM 的学习相关,学习参考: [1]UVM Tutorial [2]张强著,UVM实战 (卷 Ⅰ) [3]Download UVM (Standard Universal V ...
- [附源码]Java计算机毕业设计SSM大学生学习交友平台
项目运行 环境配置: Jdk1.8 + Tomcat7.0 + Mysql + HBuilderX(Webstorm也行)+ Eclispe(IntelliJ IDEA,Eclispe,MyEclis ...
- UVM学习之路(5)— 完整的UVM验证平台
UVM学习之路(5)- 完整的UVM验证平台 一.前言 一个完整的UVM验证平台还应该加入寄存器模型,对应的设计文件中也应该存在寄存器及其控制端口, 通过该控制端口可以配置DUT中的寄存器. 二.设计 ...
- UVM学习之路(6)— 基于MCDF的验证平台
UVM学习之路(6)- 基于MCDF的验证平台 一.前言 MCDF即多通道数据整形器(Multi-Channel Data Formatter)可以将多个通道是数据经过打包后以数据包的形式发送出去,其 ...
- UVM学习之路(4)— 基本的UVM验证平台
UVM学习之路(4)- 基本的UVM验证平台 一.前言 一般我们将设计输出的文件称为DUT(Design Under Test),即待测设计,验证是来找出DUT中的bug, 这个过程通常是把DUT放入 ...
- #UVM# 搞清验证平台中的 uvm_top、uvm_test_top及module top的层次关系
[UVM] 1. UVM 方法学的测试平台构建框架关系 1.1 uvm_top 1.2 uvm_test_top 1.3 module top 1. UVM 方法学的测试平台构建框架关系 UVM 验证 ...
- 从0开始搭建基于UVM的验证平台 ----- phase0.0
从0开始搭建基于UVM的验证平台-----phase 0.0 0. Introduction 1. Creating simple test 2. Build your own test case 3 ...
最新文章
- mysql 常用操作命令
- 成功解决File frozen importlib._bootstrap, line 219, in _call_with_frames_removed ImportError: DLL lo
- pku 1925 Spiderman DP
- #include *.c文件的妙用
- mysql配置-django
- More Effective C++ (限制类的对象数量)
- 哟,2020 年了,用 Vue 做一个自己的小程序吧!| 原力计划
- appium自动化测试环境部署_Android
- PHP open_basedir配置未包含upload_tmp_dir 导致服务器不能上传文件
- 开发板Linux内核,芯灵思SinlinxA33开发板Linux内核workqueue(附实测代码)
- Vue webapp项目通过HBulider打包原生APP
- 【C语言开源项目】盘点 GitHub 上不错的 4 个C语言项目
- python语法简洁清晰、特色之一是强制用作为语句缩进_问道python之基础篇【一】 认识python...
- Springboot毕业设计毕设作品,网上图书商城系统 开题报告
- 计算机毕业设计android的云南旅游,美食攻略,产品预订app(源码+系统+mysql数据库+Lw文档)
- JavaScript弹出框、对话框、提示框、弹窗总结
- Hive秒数转成时分秒
- Revit API 开发周边:对 Element 进行 Reflection
- 大连工作后到外省就业要办的手续
- mobx+mobx-react