UVM-什么是UVM方法学

概念简介

百度对UVM的解释如下:

通用验证方法学(Universal Verification Methodology, UVM)是一个以SystemVerilog类库为主体 的验证平台开发框架,验证工程师可以利用其可重用组件 构建具有标准化层次结构和接口的功能验证环境

UVM bench结构

自上而下首先是testbench,中间是interface,底下是DUT。

test即testcase,表示测试用例,testbench中,最外层是testcase(图中缩写为),是验证平台运行的起点,严格来说testcase不属于testbench,一个成世俗的验证平台为了测试dut的功能,会产生很多testcase。

env即environment,是验证平台的最顶层模块,被实例化在testcase中,当运行一个testcase,build phase会动态构建env组件。env包含angent和scoreboard等组件,完成agent和scoreboard之间的通信信道连接。

agt即agent,表示代理模块,作用类似于sub env,包含了sequencer,driver和monitor组件,构建完这些组件后会链接seqencer和diriver之间的通信信道,monitor连接到agent的通信端口上。

sequencer是产生激励的组件,激励是依附于sequence产生的,一个sequencer可以产生不同的seqence,不同的seqence产生不同激励,如长度固定的数据包,长度随机的数据包,读命令的数据包,故意出错的数据包等等,不同testcase可以选取不同的seqence,运行在seqencer组件中,产生符合测试者意图的激励,并传输给driver。

drv即dirver,表示驱动,它将seqencer产生的激励转化为驱动信号,由interface驱动到dut中。

mon即monitor,采集dut信号,封装为transaction,传输到其他组件,如scoreboard中进行比较

agent中还可以包含config,用来存储和控制agent的配置信息。agent还可以有active agent和passive agent之分,前者通常是master agent,包含向dut输送激励,和从dut采集输出两部分内容,即包括了sequencer,driver和monitor三个组件。passive agent则是slave agent,不驱动dut,只用来收集dut的输出,也就是只有monitor,不包含sequencer和driver。通常开发agen时通过设置一个变量,决定当前是active还是passive。

scb即sorerboard,表示记分板组件,将dut输出和期望值比对。期望值可以直接从monitor采集获取,driver获取,或者引入reference model对原始激励进行转化,从而和dut输出进行对比。reference model可以用system verilog,c等语言编写。自动比对是大规模回归测试的前提条件。

UVM层次

最上层是测试(test)层,由各种testcase组成,接下来是场景(scenario)层,由产生激励的sequencer构成,第三层是功能(function)层,包括scoreboard等组件,第四层是命令(command)层,由driver和monitor这种和interface打交道的组件构成,最底下是信号(signal)层,这一层是通过interface和dut进行交互。这几个层次各司其职,相互配合,实现了一个面向高层建模的可重用验证平台。

systemverilog类库

这些类库一方面包括了各种组件的基础代码,如uvm_driver,uvm_scoreboard,验证工程师通过扩展这些源代码,就可以为各种项目开发组件,搭建验证平台,另一方面这些类库包含了各种内建的函数,例如copy,compare,这些通用函数帮助我们减少工作量,节省开发时间。

可重用组件的意思是同个agent可以运用在不同规模的验证平台上,也可以在不同项目中随意移动。

以uart为例,在ip级验证中,验证平台可以长成这样:

在soc级验证中,除了uart,还有cpu,memory等外设,此时我们就可以把uart agent移过来,interface重新连接下就可以复用了:

uvm按照组件开发,组件的独立性强,可重用性高,层次化的验证平台格局使得各种uvm验证平台的架构长相非常相似,统一的格局,减少了工程师代码风格各异性,增强了代码可读性,这样统一的规划,阅读维护和管理起来,都会非常轻松。

参考:

  1. https://mp.weixin.qq.com/s?__biz=MzUyNzA2MDA0OQ==\&mid=2247550241\&idx=1\&sn=748dc65f50608211538e175b8033855e\&chksm=fa07181fcd70910976ce13152890c7d104f427ff9e2e25e11db9f83d65ee5cb4176fa4524466\&scene=27
相关推荐
hh1992031 个月前
systemverilog中的DPI-C用例介绍
c语言·systemverilog·dpi-c
Amd7944 个月前
Vue第三方库与插件实战手册
vue·echarts·d3.js·数据处理·pwa·验证·chart.js
逍遥xiaoy4 个月前
SystemVerilog测试框架示例
systemverilog·uvm
谷公子的藏经阁4 个月前
设计模式在芯片验证中的应用——迭代器
设计模式·systemverilog·uvm·芯片验证·design pattern
网络研究院4 个月前
生物识别技术存在的问题及需要考虑的关键事项
人工智能·问题·风险·身份·隐私·验证·生物识别
wjh776a685 个月前
基于PCIE4C的数据传输(三)——使用遗留中断与MSI中断
linux·fpga开发·systemverilog·xilinx·pcie
wjh776a687 个月前
【RS422】基于未来科技FT4232HL芯片的多波特率串口通信收发实现
fpga开发·verilog·systemverilog·xilinx·rs422
Hongke_PharmDep8 个月前
如何实现冻干机和产品全生命周期的验证和监测?
验证·冻干·冷冻干燥·温度分布验证·冻干机
一只迷茫的小狗9 个月前
systemverilog/verilog文件操作
systemverilog
小邦是名小ICer9 个月前
7.2 uvm_resource_db in UVM
uvm