SV通识5-2:UVM简介
为什么现在讲:
实验四、实验五、带着UVM思维考虑
实验四实验五mcdf阶段,DUT变大了,我们主要讲如何将验证结构extend,对mcdf进行扩展
一、UVM简介
1、概述
sv标准:2002—>2012—>2017
2011年:UVM发布(Universal Verification Methodology),各种M指的是Methodology
UVM是验证敲门砖
动态仿真,性能验证和效能验证都和动态仿真(功能验证)有关
动态仿真离不开硬件加速
静态
语言趋势
UVM吸取了各种M(AVM,OVM,UVM)的优点,且不绑定某一语言
为什么:验证方法注重可重用的类
底下一定要多画结构
UVM什么数字的都可以验
他就是库,基于SV提供的一系列方法类库,提供一系列基础类库,UVM提供的类库和基本的验证结构可以很快的构建起来验证平台
学习UVM的路线
mcdf相比mcdt来讲:大家共有channel和arbiter;mcdf多了个寄存器模块和Formatter模块,设计变复杂了
寄存器功能:配置功能、反应硬件状态,所以说既可写又可读,本身是硬件的一部分
UVM类库
P260页
分成了总共十大类:注意分类逻辑和处理场景
UVM类
按照类库地图可以分为以下几类:
- 核心基类:为什么克隆啊,自动定义的,自动的做比较,自动的打印
- 工厂(factory)类
- 事务(transactoin)和序列(sequence)类:SV中的事务和序列有机的组合起来
- 结构创建(structure creation)类
- 环境组件(environment component)类:SV里面的stimulator,monitor,driver,isdfsdtor,checker
- 通信管道(channel)类:mailbox(实验三里面讲过)
- 信息报告(message report)类:(实验四讲独立信息报告的包)
- 寄存器模型(register model)类:独立的我们不讲了
- 线程同步(thread synchronization)类:旗语等等
- 书屋接口(transaction interface)类:发送数据包两个mailBox接起来,为什么要有接口呢?
测试题
答案:BCD
二、UVM组件
1、概述
MCDF中的组件按功能分为:激励器(stimulator)、监视器(monitor)、检查器(checker)
uvm_component
是非常重要的核心类,环境的组件类
(1) 环境组件类
方框里面的都继承于uvm_component
- uvm_drivert:我们也学到了
- uvm_monitort:我们也学到了
- uvm_sequencer:不熟悉,承担了一部分generator的功能,目前我们的generator既要产生激励又要发送激励,sequener承担了发送激励的一部分,产生激励由另外一个类承担了
- uvm_agent:我们也学到了
- uvm_scoreboard:就是我们写的checker类
- uvm_env
- uvm_test
其中uvm_env和uvm_test的差别会体现在实验三和实验四里面
2、构建MCDF顶层验证环境:构建UVM最终结构图
目前这张图是我们到模块二的时候UVM应该是怎么样的形式
测试题
答案:ABCD
sequencer是agent里面的常客,产生激励在上图中看不到,因为此时产生激励不属于UVM的结构,属于动态的产生激励的过程,属于sequence(和sequencer就差了一个字母),我们后来学
三、UVM环境
1、phase机制
(1) 概述
我们讲完组件,就需要例化了吧,再进行组件之间的连接,最后运行
SV中我们通过new()函数没法解决一个重要问题,就是无法保证例化的先后关系,即在验证层次中没法保证先例化顶层,再例化下一层
我们必须小心的不断通过new()里面进行嵌套,这个连接也成为了问题,需要确保上层例化了再对底层进行连接
UVM可以事先进行配置,不用等待例化(即phase机制)
phase机制名词上解释是阶段机制,就是按照阶段进行
(2) phase机制函数表
在各个组件内部只需要去填充预定义好的方法,这些方法有的是函数、有的是任务
phase机制解决了,例化的先后关系,从而只需要在对应组件中定义需要的任务
(3) phase机制流程图
总共九个阶段:图中少了一个final阶段(其他的是除了黄色快的阶段与函数表一一对应)
不一定都要在每个组件中实现所有方法,只需要实现对你有帮助的,其他阶段不定义就是空置的
黄色部分先不讲
2、创建测试平台:流程图
测试题
答案:ABCD
函数是不消耗时间的所以B是对的,new函数也不消耗时间
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!