1.1 UVM是什么?
1.1.1 验证在现代IC流程中的位置
现代IC前端的设计流程如图所示:
通常的IC设计从一份需求说明书开始,IC工程师会把它细化为特性列表;设计工程师根据特性列表,将其转化为设计规格说明书,在这份说明书中设计工程师会详细阐述自己的方案, 描述清楚接口时序信号、使用多少RAM资源、如何进行异步处理等;验证工程师根据特性列表,写出验证规格说明书,将会说明如何搭建验证平台、如何保证验证完备性、如何测试每一条特性、如何测试异常等;
当设计说明书完成后,设计人员开始用verilog将特性列表转换为RTL代码;验证人员则开始使用验证语言,搭建第一个测试用例(test case);当RTL代码完成后,验证人员开始验证这些代码(DUT design under test)的正确性;
1.1.2 验证的语言
验证是服务于设计的,现在通常有两种设计语言:verilog和 VHDL;verilog由于其通用性在IC设计领域占据了主导地位,基于verilog的验证语言主要有:
(1)verilog: verilog是针对设计的语言, verilog在验证方面的最大不足是功能模块化、随机化验证上的不足,这导致更多的是直接测试用例(激励是固定的,其行为也是固定的),而不是随机测试用例(激励在一定范围内是随机的);
(2)systemC:其本质上是一个C++库,在C++中用户需要自己管理内存,指针会把人搞得头大;
(3)system verilog:它是一个verilog的扩展集,可以完全兼容verilog;其具有所有面向对象语言的特性:封装、继承和多态;同时还为验证提供了一些独有的特性,如约束、功能覆盖率;
1.1.3 何谓方法学
有了system verilog后是不是足以搭建一个验证平台了呢?答案是肯定的,只是很难;就像汉语是优秀的语言一样,自古以来无数的名人基于它创造了很多优秀的篇章,在这些篇章的基础上,作家通常引用几句就会使自己的文章出彩,这些优秀的篇章就是汉语言的库;同样system verilog作为一门优秀的语言,但如果仅仅使用它来进行验证是远远不够的,有很多直接的问题需要考虑,如:验证平台有哪些基本组件,各个组件之间如何进行连接和通信,每个组件的行为有哪些等等....从UVM的角度讲,方法学只是一个库!!
1.2 学了UVM之后能干什么?
1.2.1 验证工程师
1.2.2 设计工程师
在IC设计领域,验证与设计不分家;