数字芯片和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
 
 

FPGA验证之SystemVerilog+UVM的更多相关文章

  1. ( 转)UVM验证方法学之一验证平台

    在现代IC设计流程中,当设计人员根据设计规格说明书完成RTL代码之后,验证人员开始验证这些代码(通常称其为DUT,Design Under Test).验证工作主要保证从设计规格说明书到RTL转变的正 ...

  2. SOC芯片的FPGA原型验证

    FPGA验证在SOC设计非常重要,一般而言,做一些RAM和FIFO的替换以及相应代码转换.具体分下面几步: 1 替换RAM,FIFO和时钟 RAM和FIFO控制器需要RAM的接口都放在了设计顶层,方便 ...

  3. 入行数字IC验证的一些建议

    0x00 首先,推荐你看两本书,<"胡"说IC菜鸟工程师完美进阶>(pdf版本就行)本书介绍整个流程都有哪些岗位,充分了解IC行业的职业发展方向.<SoC设计方法 ...

  4. FPGA做正则匹配和网络安全,究竟有多大的优势?

    FPGA做正则匹配和网络安全,究竟有多大的优势? 西电通院专用集成电路课程学习 云导播 网络安全已经被提升为国家战略的高度,高校里面的新增的一级学科,去年9月份,中央网信办.教育部公布了“一流网络安全 ...

  5. 对比 Verilog 和 SystemVerilog 中的基本数据类型

    作为引子,首先来看一段描述,该段介绍了SystemVerilog对比Verilog在RTL设计和建模时的新特性之一(logic数据类型),然后下文我再展开对比介绍Verilog和SystemVeril ...

  6. 数字IC设计工程师的知识结构

    刚毕业的时候,我年少轻狂,以为自己已经可以独当一面,庙堂之上所学已经足以应付业界需要.然而在后来的工作过程中,我认识了很多牛人,也从他们身上学到了很多,从中总结了一个IC设计工程师需要具备的知识架构, ...

  7. Xilinx DCM 使用---- 输出频率问题

    最近在使用Xilinx FPGA验证项目,使用DCM将50M晶振分频得到20M时钟.但是下载代码到板子上验证,发现板子完全不工作. 然后 测量时钟,发现根本就没有20M时钟.查找资料,以及跟以前项目对 ...

  8. 通过文件读写方式实现Matlab和Modelsim的联合仿真

    虽然Modelsim的功能非常强大,仿真的波形可以以多种形式进行显示,但是当涉及到数字信号处理的算法的仿真验证的时候,则显得有点不足.而进行数字信号处理是Matlab的强项,不但有大量的关于数字信号处 ...

  9. 【CPU微架构设计】分布式多端口(4写2读)寄存器堆设计

    寄存器堆(Register File)是微处理的关键部件之一.寄存器堆往往具有多个读写端口,其中写端口往往与多个处理单元相对应.传统的方法是使用集中式寄存器堆,即一个集中式寄存器堆匹配N个处理单元.随 ...

随机推荐

  1. Python-选择器Xpath,Css,Re

    正则表达式(特殊字符) ^ 开头 '^b.*'----以b开头的任意字符 $ 结尾 '^b.*3$'----以b开头,3结尾的任意字符 * 任意长度(次数),≥0 ? 非贪婪模式,非贪婪模式尽可能少的 ...

  2. ApowerMirror投屏(手机投屏电脑、电脑投屏到手机)

    使用步骤    1. 亲测 使用Apowersoft ApowerMirror v1.4.2.zip版本      2.Apowersoft ApowerMirror v1.4.2.zip 解压安装 ...

  3. 微信小程序:将中文语音直接转化成英文语音

    作者:瘟小驹    文章来源<微信小程序个人开发全过程> 准备工作: 准备工具:Eclipse.FileZilla.微信开发者工具.一个配置好SSL证书(https)的有域名的服务器 所需 ...

  4. Mysql基本架构及查询流程

    mysql体系结构简单概述: Connectors:接入方,支持协议很多 Management Serveices & Utilities:系统管理和控制工具例如:备份恢复,mysql复制集群 ...

  5. LayUi前端框架删除数据缓存问题(解决删除后刷新页面内容又会显示问题)

    form.on('submit(mySearch)', function(data){ table.reload('userTable', {//就会读取后台数据,重新加载: page: { curr ...

  6. IT行业中文资源网址集绵

    1. IT网址:https://github.com/ityouknow/awesome-list 2.后端架构师网址:https://github.com/xingshaocheng/archite ...

  7. IP地址分类(A类 B类 C类 D类 E类)

    IP地址分类(A类 B类 C类 D类 E类) IP地址由四段组成,每个字段是一个字节,8位,最大值是255,, IP地址由两部分组成,即网络地址和主机地址.网络地址表示其属于互联网的哪一个网络,主机地 ...

  8. js的逆向解析

    过程: 知道如何寻找登录的接口 知道如何确定js的位置 知道如何观察js的执行过程 知道js的执行方法 1. 确定网站的登录的接口登录的form表单中action对应的url地址通过抓包可以发现,在这 ...

  9. Spring AOP概念理解

    1.我所知道的aop 初看aop,上来就是一大堆术语,而且还有个拉风的名字,面向切面编程,都说是OOP的一种有益补充等等.一下子让你不知所措,心想着:怪不得很多人都和我说aop多难多难.当我看进去以后 ...

  10. docker - 容器lxc

    容器:是在用户空间进行隔离的组件叫做容器 常用的容器有lxc ----libcontainer---runc 需要隔离的资源有: Rootfs:每个容器对应的一个目录做为根目录 User: Hostn ...