UVM实战笔记(一)

发布于:2022-12-21 ⋅ 阅读:(486) ⋅ 点赞:(0)

第一章 UVM概述

1.1 验证是什么
现代IC(Integrated circuit,集成电路)前端的设计流程如下图:
在这里插入图片描述

通常IC设计是从一份需求说明书开始的,这份需求说明书一般来自于产品经理。从需求说明书开始,IC工程师会把它们细化为特性列表。设计工程师根据特性列表,将其转化为设计规格说明书,在这份说明书中,设计工程师会详细阐述自己的设计方案,描述清楚接口时序信号,使用多少RAM资源,如何进行异常处理等验证工程师根据特性列表,写出验证规格说明书。在验证规格说明书中,将会说明如何搭建验证平台,如何保证验证的完备性,如何测试每一条特性,如何测试异常情况等

1.2 验证在现代IC流程中的位置

验证是服务于设计的

1.3 验证验什么

验证主要保证从特性列表到RTL转变的正确性,包括但不限于以下几点:

  • DUT的行为表示是否与特性列表要求一致。
  • DUT是否实现了所有特性列表中列出的特性
  • DUT对于异常状态的反应是否与特性列表和设计规格说明书中的一致,如中断是否置起。
  • DUT是否足够稳健,能够从异常状态回复到正常的工作模式

1.4 验证的语言

就目前来说两种通用的设计语言:Verilog(以下简称V)和VHDL。V由于其易用性,在IC设计领域占据了主流地位

基于V的验证语言主要有以下三种:

  • V:验证方面最大的问题是功能模块化随机化验证上的不足,这导致更多的是直接测试用例而不是随机的测试用例。
  • SystemC(一下简称SC):可以笼统的将IC分为两类,一类是算法需求比较少的,如网络通信协议;另一类是算法需求非常复杂的,如图形图像处理等。对算法要求非常高的设计在使用V编写代码之前,会使用C或者C++建立一个算法模型,即参考模型。在验证时需要把此参考模型的输出与DUT的输出相比,因此需要在设计中把基于C++/C的模型集成到验证平台中。SC本质上是一个C++的库,这中天然的特性使得它在算法类的设计中如鱼得水。SC最大的优势在于它是基于C++的
  • Systemverilog(以下简称SV):它是一个V的扩展集,可以完全兼容V。起源2002,2005成为IEEE的标准。面向对象的编程语言(OOP),同时还为验证提供了一些独有的特性,如约束,功能覆盖率。与SC的对比中,SV提供了DPI的接口可以把C/C++的函数导入SV代码中。与C++相比,SV语言本身提供了内存管理机制,用户不用担心内存泄漏问题。同时SV还支持系统函数($system),可以直接调用外部的可执行程序。

1.5 什么是UVM

基于SV的验证方法学(可以简单理解为验证平台的框架)中,目前主要有以下三种:

  • VMM(Verification Methodology Manual):Synopsys在2006年推出的,集成了寄存器解决方案RAL(Register Abstraction Layer)。
  • OVM(Open Verification Methodlogy):Candence和Mentor在2008年推出的,从一开始就是开源的。引入了factory机制,功能非常强大,但是没有寄存器解决方案,这是他最大的短板
  • UVM(Universal Verification Methodology):正式版是在2011年2月由Accellera推出的,得到了Synopsys,Mentor和Candence的支持。UVM几乎完全继承了OVM,同时由采纳了Synopsys在VMM中的寄存器解决方案RAL。

在决定一种验证方法学的命运时,有三个问题:EDA厂商支持么?现在用的公司多么?有更好的验证方法学出现了么?

1.6 V和UVM的标准

IEEE Verilog标准有两个,一个是1995,一个是2001,一个是2005。2001版标准与2005版标准相差不大。

UVM:2013年发布UVM1.1d,目前最新的是2014年发布的UVM1.2。(PSS新的验证标准?待补充

1.7 学了UVM之后能做什么

验证工程师

  • 如何用UVM搭建验证平台,包括sequence,factory,callback,寄存器模型等
  • 一些验证的基本常识
  • UVM的一些高级功能,如何灵活使用sequence,factory机制等
  • 如何编写代码才能保证可重用性

设计工程师

  • 了解验证平台

参考资料:

UVM实战(卷I)张强 编著 机械工业出版社


网站公告

今日签到

点亮在社区的每一天
去签到