UVM概念介绍

UVM验证平台的典型结构
典型的UVM验证平台一般即例化DUT和UVM类库并配置其中的连接关系。UVM动态例化,可以一次编译完成多个测试用例的测试。

UVM TEST
UVM TEST是UVM的顶层Component组件,主要完成例化和配置顶层env,并通过env调用sequence产生激励从而给到DUT。

一般情况下,会有一个基本的base_test用于对env的例化以及其他共同的UVM元素组件的生成例化。然后其他的test则继承该base_test并有针对性地配置env或者选择不同的sequence来测试。

UVM Environment
UVM env主要用于将UVM组件进行有关联的分层。一般在env里例化agent、scoreboard,设置是其他的env,顶层的env用于封装用来对DUT测试的环境。

UVM Scoreboard
Scb主要用于检查DUT的行为功能是不是符合预期。通过agent的analysis port来接收DUT的输入和输出的transaction。将输入transaction灌入到reference model来产生期望的结果,然后与DUT实际的输出结果作比较。

UVM Agent
agent用于对一些UVM组件进行分层和连接,主要用于完成DUT的接口。

一个典型的agent包括一个用于管理激励序列的sequencer,一个用于施加激励到DUT接口的driver,以及一个用于监测DUT接口的monitor,另外还可能包括一些如覆盖率收集、协议检查等。

在这里插入图片描述
agent可以工作在active和passive两种模式下,前一种用于产生激励,后一种则只是监测接口并不具备控制能力。

UVM Sequencer
sequencer用于从sequence中选择控制transaction序列,类似一个仲裁器。简单说主要用于控制transaction。

UVM Sequence
sequence是用于产生激励的object。

UVM Driver
driver从sequencer中获取transaction的sequence并将其驱动到DUT的接口上,这里使用TLM端口来完成。这里涉及到抽象层数据转换成具体的端口信号。

UVM Monitor
monitor采样DUT接口信号并将其送到验证平台的其他组件来作分析。类似driver,同样涉及到抽象数据和具体数据的转换。为了实现上述功能,通常monitor有用于访问DUT的接口并且通过TLM analysis port来广播产生的transaction。

monitor可以在内部对产生的事务做一些处理,比如覆盖率收集、检查、日志记录等,也可以将这些事务的处理由一个专用的组件来完成。

UVM类库
UVM提供了构建强大验证平台的库文件,包括类、宏工具等。
component被封装和例化,并且被一些可扩展的phase来控制和实现,这些phase是由基类库定义的。

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值