FPGA验证之SystemVerilog+UVM

 
 
数字芯片和FPGA的验证。主要是其中的功能仿真和时序仿真。

验证中一般要搭建一个完整的测试平台和写所须要测试用例。而verilog这种硬件描述语言是出于可综合成电路的目的设计出来的,因此它在书写测试平台和测试用例是不够方便的(测试平台和用例不须要综合成电路)。而SV正是因为它不须要知足可综合性,因此它变得很是灵活,它引入了面向对象语言的概念。在验证方面,若是说verilog是C语言的话,那SV就是C++,他不光有verilog的全部特性,还有自身面向对象的特性。若是你了解一点面向对象的概念的话,应该可以更好地理解其中的差别。

但说到底SV实际上只是一种语言,它撑不起如今芯片庞大的验证规模。就像英语,你光知道词汇和语法是不够的。你须要一种模版,来让行文变得容易、流畅和优美,来应付各类复杂的场景。SV这种语言之上的就是UVM、OVM等方法学。

说是叫方法学,其实UVM更像是一种库。你调用这种库的时候,就可使用库中各类写好的函数。更棒的是,你可使用它预设好的成熟的框架体系。这样大量的测试平台所须要的代码均可以复用,做为验证工程师,你只须要集中注意力去设计你所需的测试用例,考虑会发生故障的情形就能够了。

 
 
 
SystemVerilog,ASIC front end verification 本质上仍是仿真,须要提供输入。SV可以跟方便编写输入源,控制激励在不一样时钟周期的变化,C只是一个辅助处理特殊任务函数。 C/systemC不少状况下用来编写对照模型 计算对照参数,可是testbench仍是基于SV的,并且TB须要Fcov/ Assertion, SV更方便。工业界流行的验证方法UVM OVM在ASIC验证上大多数也是由SV实现的
 
 


C++的继承、多态是基础~SystemC是C++的一个类库,是在C++面向对象基础上实现了一个任务调度的kernel,再在其基础上构建interface/port/channel等数据结构,之上还有TLM2.0,scv2.0!由于sc自己就是C++,因此它与系统软件联合建模验证架构没有任何障碍~
SystemVerilog主要适用于模块级/IP级验证,但感受与上层软件衔接的流畅度没有SC好!虽然sv实现了UVM思想,但仍是没有充分体现UVM的统一二字~这一点有点硬伤~
SC的UVM库立刻就要推出了~后面就有得一瞧了~若是综合工具再给力一点,使用SC描述IC前段设计、验证的全部阶段也不是不可能~
其实学什么都是相通的~关键是要贴合项目去实践。若是有大量的项目来喂你,效果会很好~^_^




目前的IC验证都是用SystemVerilog语言+UVM验证方法学,C偶尔用来辅助编写参考模型或者进行软硬件协同仿真。因此学习SV和UVM就能够了,固然最好再学点Verilog的设计知识,这样验证工做会作的比较完善。
 
 
 
 
从刚接触System Verilog以及后来的VMM,OVM,UVM已经有不少年了,随着电子工业的逐步发展,国内对验证人才的需求也会急剧增长,这从各大招聘网站贴出的职位上也能够看出来,很多朋友可能想尽快掌握这些知识,自学是一个好办法,我结合本身的亲身经历和你们谈谈初学者如何能尽快入门,继而成为一名合格的IC验证师。
 
1.首先来谈谈仿真工具,无非就是Synopsys,Cacence Mentor三大公司的vcs, incisive, modelsim,其实还有些稍小一些公司象aldec公司的Riviera-PRO也不错,若是能接触到这些工具,再能有水平比较高的人提供一些指点就方便多了。若是手头没有工具,则要本身考虑在UNIX上安装合适的工具,这我就很少说了,你们都懂的,哈哈。若是你也不会或者不肯意安装工具那么能够去这里EDA-playground看看,能够在线直接仿真出结果,若是你的网速比较快,这也不失为一个好注意。
 
2.如今市面上的参考资料比前几年多多了,不能简单地说是参差不齐,至少要找到适合与本身当前状况的资料。不要东看看西瞅瞅,由于包含的内容太多了,当你搞懂这一块的时候另外一块可能忽略了或者遗忘了,因此最好认真专一于一两本书籍,千万不要贪多,我推荐如下几本:
若是Verilog基础很差,应该加紧学习,毕竟是SystemVerilog的基础,夏宇闻编写的Verilog数字系统设计教程是首选。首先accellera的UniversalVerification Methodology User's Guide仍是要读一读的,虽然写的不生动,毕竟只是一个说明书。有关SystemVerilog的书籍市面上很少,Synopsys 的chrisspear10年前所著的《SystemVerilog for Verification》如今看来依然不错。前几年Cadence的kathleenA Meade写了一本《A Practical Guide to Adopting the UniversalVerification Methodology(UVM)》,里面配有大量实际验证中的例子,颇有价值。这自己出版后反映不错,因此有了后来的另外一本书AdvancedVerification Topics主要介绍混合信号,低功耗,以及多语言验证问题,有兴趣的朋友能够参考一下。三大公司中的MentorGraphics也贡献了《VERIFICATION METHODOLOGY ONLINECOOKBOOK》。国内新出版的《UVM实战》也颇有影响,不过它的第二部也就是源代码部分实用性不大,就此我曾经询问过UVM的communitymember中的高人,他们都不推荐去研读代码,由于其中有很多东西涉及到各公司以及各大用户中的不少苟且之事,不少说不定下一版本就会更改甚至取消,和咱们使用UVM验证环境的工程师没有多大的关系。不少公司对设计工程师的assertion有要求,其实设计工程师本身写的断言每每比验证工程师更实用,《A Practial Guide for SystemVerilog Assertions》也有中文版,例子和翻译都不错。
 
3.我想鼓励初学者的是不要被厚厚的说明书给吓一跳,主要是掌握基础概念。SystemVerilog中除了受限随机,功能覆盖率等之外,数据类型,运算符,类的概念都和C++相似,这些也每每是面试中的重点。相比SystemVerilog,UVM中的内容要少些可是牵扯到很多面向对象设计中比较专业的问题象factory,callback等,这须要经过仔细分析代码来理解。总之,从基本概念入手不要妄图一会儿把全部问题都搞清楚,虽然不通过多年实际工做项目的考验是没法真正掌握这些内容的,可是不排除通过短时间的训练迅速得到敲门砖的可能。
 
4.其它资料,包括一些网站和论坛,像本站就有海量的资料,UVM的官方网站VerificationAcademy有UVM的介绍和视频,甚至还能够就一些比较专业的问题向committeemember咨询。
 
 
下面的连接是一个写的不错的基于UVM的FPGA验证例子,共勉http://www.cnblogs.com/bettty/p/5285785.html
相关文章
相关标签/搜索