验证技术的发展历程
这是我们作为一名合格验证人员装B必备,如下图所示:
2000年:Verisity Design(现在的Cadence公司)引进了Verification Advisor(vAdvisor)采用了e语言,包含了激励的产生,自动比对的策略,覆盖率模型。e语言是面向对象语言,这是业界开始使用面向对象语言 进行测试平台的建立。
2002年:Verisity公司公布了第一个验证库——e可重用方法学(eRM)。
2003年:Synopsys公司公布了可重用验证方法学库(RVM),这个方法学采用了Synopsys公司的vera语言。
2006年:Mentor公司公布了高级验证方法学(AVM)。这个方法学主要是采用了OSCI SystemC的事务抽象层方法学(TLM)标准,它是用SystemVerilog和SystemC两种语言实现的。
2006年:Synopsys公司推出了验证方法学手册(VMM),这个是RVM从vera语言过度到SystemVerilog的方法学。
2007年:Cadence公司推出了通用可重用验证方法学(URM),主要是从eRM从E语言过度到SystemVerilog的方法学,同时加入了TLM接口,工厂模式替换,配置机制,策励类等。
2008年:Cadence公司和Mentor公司共同推出了OVM
2010年:Synopsys公司推出了VMM1.2,基本上沿用了OVM的TLM通信机制,并采用了TLM2.0(OSCI最新的标准),采用OVM提出的implicit phase,并且将验证流程继续细化,工厂模式替换机制,建立类层次(建立parent关系)。并且在此基础上,提出了vmm_timeline的概念,方便各个phase之间实现跳转,增加phase或删除phase。增加了rtl_config等概念。Synopsys公司也随即宣布最新版本的VCS 同时支持UVM。
2010年:ACCELLERA采用了OVM作为基础,推出了UVM验证方法学。同时引入了VMM的callbacks一些概念。作为业界方法学统一的一个雏形。
2011年2月:Accellera通过了通用验证方法学1.0版,并得到三大厂商(Cadence,Synopsys和Mentor Graphics现英飞凌)的共同支持。此后Accellera陆续推出了UVM1.1, UVM1.1a,UVM1.1b,UVM1.1c,UVM1.1d这几个版本。2014年6月,Accellera有推出了通用验证方法学1.2版。目前UVM最新版是UVM-1800.2-2017-1.0(版本号命名都变了哈)
UVM(Universal Verification Methodology) UVM几乎完全继承了OVM,同时又采纳了Synopsys在VMM中的寄存器解决方案RAL。UVM继承了OVM和VMM的优点,克服了各自的缺点,代表了验证方法学的发展方向。
- UVM介绍
UVM是一个以SystemVerilog为主体的验证平台开发框架,验证工程师利用其可重用组件可以构建具有标准化层次结构和接口的功能验证环境。
UVM是一个库,在这个库中,几乎所有的东西都是使用类(class)来实现的。类是面向对象编程语言中最伟大的发明之一,是面向对象的精髓所在。
使用UVM的第一条原则是:验证平台中所有的组件都应该派生自UVM中的类。当要实现一个功能时,首先应该想到的就是从UVM的某个类派生出一个新的类,类中可以有成员变量,也可以有函数和任务,通过成员变量、函数或任务实现所期望的功能。
对于验证方法学来说,分层的测试平台是一个关键的概念。虽然分层似乎会使测试平台变得更复杂,但它能够把代码分而治之,有助于减轻工作负担,而且重复利用效率提升。基于UVM的验证平台可以类似分为五个层次:信号层、命令层、功能层、场景层和测试层:
- 如何学习UVM
UVM1.2版本包含121个文件,311个类。从经验来说,我们搭建一个普通的UVM验证环境,大约需要编写10个文件,20个类左右。这里分享一下对初学者的个人建议:
第一阶段-基础:
学习UVM之前, 熟悉SV是必须的,关于SV的系统学习首推“绿皮书”。工作中“asic-world”这个网站可以作为我们的查询手册。
第二阶段-学习:
有了SV的基础和OOP的思想,我们就可以开始学习UVM了(很多人入门是看《UVM实战》-张强著 )。这时我们需要了解UVM构架,各种component, phase管理机制等。最好配合实例代码一边看书一边敲代码做练习。
第三阶段-应用:
当然我们有的朋友会说:"我现在的公司还没有用UVM来搭环境呀,怎么应用啊?" 但是,没有条件我们可以创造条件呀! 网上这么多开源的IP,找一个自己感兴趣的,把自己当成验证主管,自己玩儿呗。或者把已经做过的项目再用UVM搭一遍(别说你没时间哦~
第四阶段-研究:
这个时候你已经是熟手,并能够独立搭建复用性很强的UVM环境了。这时可以去看看UVM源码,帮助同事解决实际工作中的各种问题。研究一下UVM代码自动生成,UVMF是什么等等
评论 (0)