• 验证方法学的发展历程及比较


    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的库都可以比较方便的使用。都 搭建验证平台具有很好的指导意义。

    本文转载自网络

  • 相关阅读:
    projecthashing
    Windows 环境 gRPC环境搭建
    gitlab 适配性问题
    对 Golang 简洁架构实战的理解,以及 Golang 开源项目包定义的解惑
    Golang 关于百分比,小数点为数的问题
    Golang net/http 库日常 http 请求操作
    解决mysql建立事件时出现 “Cannot proceed because system tables used by Event Scheduler were found damaged at server start” 的错误
    如何在Linux安装Wine
    Public key for *.rpm is not installed
    从 IClassFactory 为 CLSID 为 {AA40D1D6CAEF4A56B9BBD0D3DC976BA2} 的 COM 组件创建实例失败,原因是出现以下错误: c001f011。
  • 原文地址:https://www.cnblogs.com/zeushuang/p/3024442.html
Copyright © 2020-2023  润新知