概念简介
百度对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验证平台的架构长相非常相似,统一的格局,减少了工程师代码风格各异性,增强了代码可读性,这样统一的规划,阅读维护和管理起来,都会非常轻松。
参考:
- https://mp.weixin.qq.com/s?__biz=MzUyNzA2MDA0OQ==&mid=2247550241&idx=1&sn=748dc65f50608211538e175b8033855e&chksm=fa07181fcd70910976ce13152890c7d104f427ff9e2e25e11db9f83d65ee5cb4176fa4524466&scene=27