(转载)验证方法学的历史及比较
2000年, Verisity Design(现在的Cadence Design System公司)引进了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年,ACCELLERA采用了OVM作为基础,推出了UVM验证方法学。同时引入了VMM的callbacks一些概念。作为业界方法学统一的一个雏形。
2010年,Synopsys公司推出了VMM1.2,基本上沿用了OVM的TLM通信机制,并采用了TLM2.0(OSCI最新的标准),采用OVM提出的implicit phase,并且将验证流程继续细化,工厂模式替换机制,建立类层次(建立parent关系)。并且在此基础上,提出了vmm_timeline的概念,方便各个phase之间实现跳转,增加phase或删除phase。增加了rtl_config等概念。Synopsys公司也随即宣布最新版本的VCS 同时支持UVM。
从现在的角度看待UVM和VMM1.2。无论最终是哪个胜出,可以看出现在业界验证方法学的趋势:
1、系统建模,业界主流标准是采用ESL模型,用SystemC语言,可以做性能评估。采用TLM标准接口,可以将SystemC模型无缝对接到验证平台中,做参考模型。
2、对每个验证组件建立parent关系,使得控制更加方便,利于自动顶层环境自动调用各个组件的phase。建立这种parent关系,还有利于工厂模式替换组件中的配置或事务。
3、为某种功能的不同组件建立子环境(UVM采用agent的方式,VMM1.2采用sub_env的方式),子环境的各个组件可以配置打开或关闭。
4、采用工厂模式替换,可以在编译阶段,将环境中的配置、事务、场景等。
5、提供API,可以在运行阶段修改环境中的参数(UVM在基类提供,VMM1.2通过vmm_opts提供)。
6、环境中的各种事务处理器组件,采用callbacks的方式,注入错误或收集覆盖率。
7、提供寄存器抽象层,通过脚本的方式,自动的生成寄存器扫描读写等验证组件。(VMM提供了RAL,UVM声称以后会提供相应的机制)。
8、环境的流程可以控制,比如增加或删除验证流程中的phase,控制各个phase之间的跳转(VMM提供了vmm_timeline,UVM声称以后会提供相应的机制)
上面所提的业界验证方法学趋势,1~5是Cadence和Mentor公司在OVM提出的。而6~7是Synopsys公司在 VMM1.1中提出的,而8是VMM1.2增加的特性。VMM1.2继承了OVM的优点之后,已经具备了上述所有功能,而UVM在The future of UVM提出了会增加类似ral和vmm_timeline的功能。
现在的角度比较UVM和VMM1.2,其优缺点主要体现在以下几个方面:
1、UVM是accellra组织推出的以后验证方法学统一的标准,主要框架采用了ovm的框架,现在还没出正式版本。继承了OVM的优点,VMM的优点继承还不够。而VMM1.2在继承了ovm的优点之后,并且做了改进和加强,其功能暂时会优于UVM。
2、由于UVM是推出的验证方法学的新的标准,所以,不用考虑兼容问题,架构会比较清晰。源代码可读性会比较强,而VMM1.2 既要考虑到与VMM1.1兼容,又要考虑新的特性,而VMM1.1和VMM1.2甚至看起来是两个完全不一样的流程,所以显得架构凌乱,代码可读性差。
3、UVM方法学更多的提出了验证平台如何配置,配置类应该怎么规划,如何在系统验证中可重用具体方法和思路。VMM方法学更多的提出了模块验证中层次的划分,验证流程中各个阶段应该干什么事情,错误的注入等等。这些方法和思路,在UVM的库和VMM的库都可以比较方便的使用。都搭建验证平台具有很好的指导意义。
参考文献:
[1] 验证方法学的历史及比较. http://blog.csdn.net/mikiah/article/details/7837771.
++++++++++++++++++++++++++++++++++++++++++
注:UVM目前最新的版本是2014年6月发布的UVM1.2版本
++++++++++++++++++++++++++++++++++++++++++