芯片设计(IC)中的验证

来源:互联网 发布:行业软件互联网软件 编辑:程序博客网 时间:2024/05/09 12:13

通俗的讲,芯片设计的验证(Verification)就是验证所设计的逻辑代码是否符合预期的要求,是否符合原来定义好的规范(如对于一个H264解码芯片,就是验证其是否实现了H264 标准中的某部分规范,不一定是全部,因为H264分为很多profile,可能所要求的仅仅是实现某些profile)。

在现在的集成电路的验证中,主要有两种方法,一种是随机验证,另外一种是形式验证(Formal Verification)。随机验证就是通过大量的随机向量来验证测试是否符合要求(通常是将硬件的结果和软件的结果进行比较,或者通过断言比较)。形式验证的主要思想是通过使用形式证明的方式来验证一个设计的功能是否正确。形式验证可以分为三大类:等价性检查(Equivalence Checking)、模型检查(Model Checking)和定理证明(Theory Prover) 。

随着芯片规模的增大,芯片设计中验证需要的时间越来越长,占整个设计周期的比例越来越大。为了提高验证速度,出现个各种自动化的验证语言(如SystemVerilog等)和验证工具(这些验证工具大部分都支持随机验证)和各种验证方法学,如OVM和VMM。

VMM和OVM都是基于SV(SystemVerilog)的硬件验证的方法学,从本质上来讲,VMM和OVM的方法学是一致的,目的都是实现可重用性(reusable)以提高验证的效率。

VMM是由ARM和Synopsys提出的,OVM则是由Mentor和Candence共同提出的。因此使用Synopsys VCS进行仿真也就选择了VMM的验证方法,支持OVM的仿真工具自然就是Mentor和Candence的工具了。

VMM和OVM都是基于SystemVerilog(SV)的验证方法,而SV相对于传统的HDL语言来说,其最大的好处就是引入了面向对象编程的概念(Object Oriented Programming,OOP),OOP的概念基本上是可以跟{封装(Encapsulation)+继承(Inheritance)+多态(Polymorphism)}相等同的,至于封装、继承和多态,如果学过C++的人自然会明白。引入了OOP之后,SV便可以在更高的抽象层次进行仿真和验证。

在2010年,貌似又出现了一个新的验证方法,叫Universal Verification Methodology(UVM),UVM号称集成了两个验证方法的优点,具体可以看http://www.uvmworld.org/overview.php。

以上几种验证方法学的基本结构都差不多,可重用的实现的手段都是通过VIP(verification IP)实现的。这些VIP都是EDA工具提供或者单独购买的,通常是一些常见的协议或者标准的IP,如AXI总线IP,USB协议IP。这样的话,倘若设计一个使用了AXI总线作为输入输出接口的部件,通过验证工具检测待测设计AXI总线上的输入输出,并且和SystemVerilog描述的断言进行比较(只需描述里面出AXI总线接口外的行为,不用自己用SystemVerilog描述复杂AXI的行为,直接使用VIP就可以,节省了大量时间)。

并且这些验证方法学和EDA工具现在都提供了对覆盖率的支持,其基本的验证结构如下(其中灰色部分就是验证方法学所提供的支持):

 

原创粉丝点击