初识UVM

What is UVM ?

SV是一门语言有自己的语法和结构,而UVM是SV类的结构框架,从中可以建立完整功能的testbench.简单来说,UVM就是由一系列基本类(类中定义了一系列的方法)组成的类库,SV的验证环境可以通过继承这些基本类来搭建.

Why do we need UVM ? 

UVM列举了一系列的指导准则用于testbench的搭建,这保证了不同验证团队之间、不同验证IP之间的统一.也就是说UVM制定了testbench的搭建标准,这有以利于testbench在不同的团队之间共享.

What is the UVM class hierarchy ? 

UVM提供了一系列的基类,通过继承这些基类可以定义更加复杂的类.例如,一个新的driver类可以通过继承uvm_driver类来定义.

uvm_void是所有类的基类,通常这个类是空的.uvm_object是主类,在这个类中通用方法例如print、copy等被定义.

在实际的UVM中,所有的类都派生自uvm_object或uvm_component组件全部派生自uvm_componentuvm_object与uvm_component不是等同的,后者派生自前者! 这说明了component具有object的全部特性,而component还具有自己独有的特性,主要包括两点:(1)通过在new方法中加入parent参数,来将组件添加到uvm树形组织结构中;(2)phase自动执行机制

注意,只有派生自uvm_component的组件才会出现在树形组织结构中!!

上面的层次图主要有两个分支,第一个主要包括验证的组件例如driver、monitor,它们都是uvm_report_object的子类;另一个是被验证组件接收的数据对象,它们都是uvm_transaction的子类.

UVM主要由以下种类构成:

(1)uvm_object

 核心类包含了常用的一些方法,所有的uvm_transaction和uvm_component都由继承它而来;在定义类时,除了组件以外,几乎所有的类都是派生自uvm_object;派生自uvm_object的类用uvm_object_utils宏在factory中注册

(2)uvm_transaction

用于产生和分析激励;

(3)uvm_component

component都是静态的,贯穿于整个simulation;

(4)UVM sequence

UVM引入了一个概念:sequence.它包含了输入到设计中的激励.用户所有新建的激励类都可以继承与uvm_sequencer类.

(5)UVM Sequence Items

要输入到DUT中的数据对象通常叫做sequence items,并且可以从uvm_sequence_item继承得到.

(6)Register Layer

设计通常要求控制那些可以被软件配置的寄存器,这对于SV来说是很复杂的,因为对于每个设计你都必须创建一个单独的类来保存和配置这些寄存器.而UVM提供了一系列的类来解决这个问题,这就是register model.

(7)TLM Connections

TLM用于各个component之间的通信.

(8)UVM Phases

这个下面再详细介绍.

 

  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值