story · 2021年05月08日

动静结合,了解典型的UVM验证平台架构

典型的基于UVM 的验证平台(Testbench)通常会实例化DUT和UVM Testcase,以及完成DUT和UVM Testcase之间的链接。其中Testcase中的内容可以根据“静态”和”动态”两方面进行分类。

静态的内容,即在不同的测试用例中都保持不变的东西,也就是“验证环境”

动态的内容,即在不同的测试用例中会发生变化的东西,包括“配置”,“输入激励”

执行仿真回归时,仿真器会动态地实例化UVM Testcase,但是静态的验证环境只需要编译一次

通常我们也会有一个base test类,在此类的基础上进行扩展,通过不同的配置和sequence以覆盖不同的测试场景。

WeChat Image_20210508101503.png

UVM验证架构的一个典型特征就是分层,例如UVM Environment底下的 UVM
Agents, UVM Scoreboards ,并且一个系统级的UVM Environment也可以实例化多个IP级的UVM Environment,例如一个SoC的UVM Environment会实例化PCIe Environment, USB Environment, Memory Controller Environment等等

WeChat Image_20210508101526.png

UVM Agent组件下会实例化支持同一个事务类型的组件,UVM Sequencer、UVM Driver和UVM Monitor。

上述为UVM验证平台架构的静态部分,动态部分(配置和激励)都是通过验证平台和DUT进行作用的。

下面继续阐述这些组件各自的作用:

UVM Scoreboard的作用就是check。首先实现一个参考模型输出期望数据,然后将这个期望数据和DUT输出的实际数据进行比对,所以Scroreboard决定了我们参考模型的准确度、数据比对的完备性。

UVM Agent 体现面向对象编程良好的封装特征,将处理相同事务的各个组件捆绑在一起使用。

UVM Sequencer控制输入激励的发送,在行为上类似一个仲裁器或者管道。管道中流通的内容就是输入激励,即UVM Sequence。UVM Sequence属于动态的内容,从DUT的输入到输出期间就是其生命周期。

UVM Driver 和UVM Monitor是永远的翻译者,它们不生产内容,只做内容的二次转换。****UVM Driver将工程师方便控制的事务级激励转换成DUT能够识别的接口级或者信号级激励,在施加输入激励的同时可以增加更多的随机性,以覆盖更多的可能发生的应用场景。UVM Monitor相反,它的功能就是将DUT接口级或者信号级的输出转换成容易理解的事务级数据,即前面提到的实际数据,和期望数据进行比对。

到此,整个基本的验证回路就闭环了。

作者: Xin\_Xin\_Hu
原文链接:https://mp.weixin.qq.com/s/YMncPaW41UrvBE75f4FZag
授权转自数字芯片实验室公众号,请勿二次转载。

推荐阅读

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