新闻  |   论坛  |   博客  |   在线研讨会
想学IC验证,但不知道要学学些什么,请问,IC验证从入行到精通语言学哪些东西,需要懂哪些知识点?
IC那些事儿 | 2020-11-30 18:49:32    阅读:156   发布文章

验证使用的语言五花八门,很难统计出到底有多少种语言曾经被用于验证,且验证这个词是从什么时候开始独立出现的也有待考证。

验证是服务设计的,目前来说,有两种通用的设计语言:Verilog和VHDL。伴随着IC的发展,Verilog由于其易用性,在 IC设计领域占据了主流地位,使用VHDL的人越来越少。基于Verilog的验证语言主要有如下三种。

第一Verilog:

Verilog是针对设计的语言。Verilog起源于20世纪80年代中期,并在1995年正式成为IEEE标准,即IEEE Standard 1364TM—1995。其后续版本是2001年推出的,与1995版差异比较大。很多Verilog仿真器中都会提供一个选项来决定使用1995版还 是2001版。目前最新的标准是2005年推出的,即IEEE Standard 1364TM—2005,它与2001版的差距不大。验证起源于设计,在最 初的时候是没有专门的验证的,验证与设计合二为一。考虑到这种现状,Verilog在其中还包含了一个用于验证的子集,其中最典 型的语句就是initial、task和function。纯正的设计几乎是用不到这些语句的。通过这些语句的组合,可以给设计施加激励,并观测 输出结果是否与期望的一致,达到验证的目的。Verilog在验证方面最大的问题是功能模块化、随机化验证上的不足,这导致更多 的是直接测试用例(即direct test case,激励是固定的,其行为也是固定的),而不是随机的测试用例(即random test case,激励 在一定范围内是随机的,可以在几种行为间选择一种)。笔者亲身经历过一个使用Verilog编写的设计,包含有6000多个测试用 例。假如使用SystemVerilog,这个数字至少可以除以10。

第二SystemC:

IC行业按照摩尔定律快速发展,晶体管的数量越来越多,整个系统越来越复杂。此时,单纯的Verilog验证已经 难以满足条件。1999年,OSCI(Open SystemC Initiative)成立,致力于SystemC的开发。通常来说,可以笼统地把IC分为两类, 一类是算法需求比较少的,如网络通信协议;另一类是算法需求非常复杂的,如图形图像处理等。那些对算法要求非常高的设计在使用Verilog编写代码之前,会使用C或者C++建立一个算法模型,即参考模型(reference model),在验证时需要把此参考模型 的输出与DUT的输出相比,因此需要在设计中把基于C++/C的模型集成到验证平台中。SystemC本质上是一个C++的库,这种天然 的特性使得它在算法类的设计中如鱼得水。当然,在非算法类的设计中,SystemC也表现得相当良好。SystemC最大的优势在于它 是基于C++的,但这也是它最大的劣势。在C++中,用户需要自己管理内存,指针会把所有人搞得头大,内存泄露是所有C++用户 的噩梦。除了内存泄露的问题外,SystemC在构建异常的测试用例时显得力不从心,因此现在很多公司已经转向使用 SystemVerilog。

第三SystemVerilog:

它是一个Verilog的扩展集,可以完全兼容Verilog。它起源于2002年,并在2005年成为IEEE的标准,即IEEE 1800TM—2005,目前最新的版本是IEEE 1800TM—2012。SystemVerilog刚一推出就受到了热烈欢迎,它具有所有面向对象语言的 特性:封装、继承和多态,同时还为验证提供了一些独有的特性,如约束(constraint)、功能覆盖率(functional coverage)。由 于其与Verilog完全兼容,很多使用Verilog的用户可以快速上手,且其学习曲线非常短,因此很多原先使用Verilog做验证的工程师们 迅速转到SystemVerilog。在与SystemC的对比中,SystemVerilog也不落下风,它提供了DPI接口,可以把C/C++的函数导入 SystemVerilog代码中,就像这个函数是用SystemVerilog写成的一样。与C++相比,SystemVerilog语言本身提供内存管理机制,用户 不用担心内存泄露的问题。除此之外,它还支持系统函数s y s t e m , 可 以 直 接 调 用 外 部 的 可 执 行 程 序 , 就 像 在 L i n u x 的 s h e l l 下 直 接 调 用 一 样 。 用 户 可 以 把 使 用 C + + 写 成 的 参 考 模 型 编 译 成 可 执 行 文 件 , 使 用 system,可以直接调用外部的可执行程序,就像在Linux的shell下直接调 用一样。用户可以把使用C++写成的参考模型编译成可执行文件,使用systemLinuxshell使C++使system函数调用。因此,对于那些用Verilog写成的设计来 说,SystemVerilog比SystemC更受欢迎,这就类似于用C++来测试C写成的代码显然比用Java测试更方便、更受欢迎。无论是对算 法类或者非算法类的设计,SystemVerilog都能轻松应付。

在这里插入图片描述

了解→

就业、面试、课程、未来职业规划@小编

喜欢你就分享,有想法、有疑问@私信我,实在不行还可以在评论区讨论......


*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。

参与讨论
登录后参与讨论
推荐文章
最近访客