story · 2020年06月09日

数字IC验证系列之UVM概述

覆盖驱动验证

UVM提供了实现覆盖驱动验证(coverage-driven verification ,CDV)的框架。 CDV结合了自动测试向量生成,自检查和覆盖率收集,显著地缩短了用于验证设计时间。

CDV流程与传统的定向测试流程不同。CDV从验证目标开始,创建一个生成测试向量的测试平台并将其发送给DUT。将覆盖率监视器添加到测试平台中以测量验证进度并确定未验证的功能。添加Checker以识别错误的DUT行为。

仿真在实现覆盖模型和测试平台之后启动。

可以在测试平台的基础结构上,添加约束以尽快达到验证目标。

CDV环境支持定向和随机约束测试。在编写耗时的定向测试去验证复杂的场景之前,先让随机约束测试完成大部分工作。

基于抽象层次的测试平台(不依赖于实现细节),更具可读性和可重用性。

测试平台和环境

UVM测试平台由称为验证组件(verification components)的可重用验证环境组成。

下图显示了具有三个接口验证组件的验证环境示例。
69.jpg

验证组件

数据(Transaction):数据表示被测设计(DUT)的输入。在测试平台中,使用SystemVerilog随机约束数据,以创建大量有意义的数据和最大化覆盖率。

Driver(BFM):Driver模拟DUT的逻辑。Driver反复接收数据并将其驱动到DUT。例如,控制读/写信号,地址总线和数据总线。

Sequencer:sequencer是一种激励发生器,用于提供给Driver数据。在sequencer中向数据项添加约束,用于控制随机值的分布。

Monitor:Monitor对DUT信号进行采样但不驱动DUT。 Monitor收集覆盖率信息,检查DUT输出是否满足协议规范。Monitor收集事务(数据)。Monitor从总线中提取信号信息并翻译成可供其他组件使用的事务。一般还会在Monitor打印跟踪信息。

Agent:Sequencers, drivers, and monitors可以独立重用,但这需要了解每个实体的名称,配置和连接。 为了减少验证工程师的工作量和知识需求,UVM建议验证环境开发人员创建更多抽象容器agent。 agent封装了driver,sequencer, and monitor,可以驱动和监视DUT。

agent应该是可配置的,以便它们可以是active或者passive。 Active agents驱动事务。 Passive agents仅监控DUT。

Environment:Environment是top-level的验证组件。它包含一个或多个agents,以及其他组件。
69.jpg

UVM可以提供了验证流程和测试平台基础架构,用户只需要用特定于IP的组件替换一些现有的组件。

UVM类库提供了许多验证所需的功能,下图中的每个组件都是派生自相应的UVM类库的组件。
69.jpg
使用这些基类增加了代码的可读性,因为每个组件的角色都是由其父类预先确定的。

本文转载自公众号:芯片数字实验室
原文链接:
https://mp.weixin.qq.com/s/\_a71IuilEX9JONLKbrd86g
未经作者同意,请勿转载!

推荐阅读
想了解更多内容,欢迎关注芯片数字实验室专栏
推荐阅读
关注数
12313
内容数
219
前瞻性的眼光,和持之以恒的学习~
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息