基于eRM建立自动化的验证平台
摘要:为了缩短SoC项目开发中前端验证的时间,实现自动化的可重用性验证环境平台,采用了eRM验证方法学,通过Sequence,BFM,Moni-tor,Scoreboard,Coverage等验证组件来实现此验证平台,并给出了基于此平台的一个应用实例,极大地提高了验证的效率和功能覆盖率。
关键词:验证时间;eRM;eVC验证平台;随机测试
集成电路已进入高速发展的阶段,半导体制造商极为成功的实现了摩尔定律的预期发展速度,为了缩短芯片上市时间,验证工程师必须保证芯片在流片前能得到很完备的验证。为了使日益复杂的项目达到理想的功能覆盖率,验证面临着巨大的挑战。eRM是一种基于e语言的验证方法学,通过Sequence,Bfm,Mkmitor,Scoreboard,Coverage等验证组件建立验证平台,可以对芯片进行Direct,Random等测试,并且可以很好地统计功能覆盖率,极大地据高了验证效率和生产率。
1 常用验证方法
从一个设计的功能验证来看,仅通过模块的接口界面(输入/输出信号端口)就完全可以验证器件的行为以及其实现的所有功能,否则该器件的属性就是不可控制的或是不可预测的。功能验证一般通过以下3种方法:黑盒法、白盒法、灰盒法。
黑盒法是指验证人员不需要用关心设计内部是如何实现的,所有的验证都可以通过接口完成,无需直接访问设计的内部状态。白盒法是是对设计的内部结构和实现具有完全的预测和控制能力,根据验证功能点可以迅速设置感兴趣的状态和输入激励,但不具备重用性。而灰盒法是介于二者之间,既有基于界面的验证组件,也有对内部状态控制和检查的组件,为提高验证效率和重用性,一般采用灰盒法。
2 eRM验证方法学
eRM验证方法学采用的是e验证语言,利用了e语言中的测试激励的生成、激励数据的驱动、输出结果的采样、输出响应的检查、功能覆盖率分析等组件,降低了验证过程中的人工干预,提高了验证的生产率。
2.1 eVC验证平台
eVC(e Verification Component)是基于eRM方法学的验证环境韵通称,eVC包括所有相关的验证组件,从编写测试激励到功能覆盖率的收集,从模块验证到系统验证,都可以通过eVC来实现。为了提高验证效率,验证人员都都会开发一个黄金eVC,在实际项目中只需要根据实际协议扩展该黄金eVC即可,在验证环境开发前期,节省了大量的代码。典型的eVC验证结构如图1所示。Agent是验证环境中最主要的验证组件,所有的验证组件一般都在Agent里例化,验证环境中的Agent一般相当于设计中的实体(由VHDL实现的设计)或输入输出信号端口(由Veri-log实现的设计)。在图1所示的eVC里,有2个Agent,RX Agent是从DUT信号端口收集数据,而TX Agent是指向DUT的信号端口发送数据。并且每个Agent都是按eRM方法学中的标准方式来构建的,Agent里一般包括以下组件:
Config:包括Agent的属性和行为,主要配置Agent的数量及其主动或被动的属性,一般由验证人员自主定义的。
Signals:该组件中定义了一些DUT的信号端口,验证环境通过这些端口可以访问DUT内部的所有信号。一般情况下,这些信号是以string类型来定义,并在信号前加sig_前缀,利用hdl_path()函数指定与其相连接的DUT信号。
Sequence:是指验证人员希望加载到DUT的数据流,利用sequence既可以定义不加任何约束的随机数据,也可以是某些特定的数据流。
Sequence Driver:此组件是连接BFM和sequence的纽带,将sequence生成的数据流发送到bfm,但不是直接驱动到DUT信号上,而是将数据打包为一个列表,然后由BFM加载到DUT中。
BFM:总线功能模型,该组件只能在Agent里例化,从图1中可以看出,BFM具有双端通道,不仅将Sequence Driver中传递的数据流加载到DUT的信号端口,而且可以取样需要检测的信号,和一般总线的功能相似。
Monitor:是一个被动组件,Monitor只能采样需要监测的DUT信号和输入数据,从图1中可以看出,Monitor只是单端通道,不能主动驱动信号。此外,Monitor可以监测DUT的输出响应,并对监测到感兴趣的信号发生变化时激活预定义的事件,通过此事件可以对当前输入的数据进行覆盖率统计以及对输出数据和信号的时序进行检查。
2.2 提高功能覆盖率的方法
为了提高验证的生产率和功能覆盖率,eRM提供了一套标准化的验证方法,典型的是测试激励采用随机(Random)验证和直接(Direct)验证方法。直接(Direct)验证法是指输入的激励是验证人员所期望的,相应的输出也是可以控制和实时监控的。但是直接测试方法不能验证正常功能以为的验证点,而且编写每条测试激励需要耗费大量的时间,一般只在验证前期调试验证环境或者发现DUT错误的时候才采用直接测试法来定位错误。随机验证法是为被验证子模块或系统产生一系列随机的输入序列。采用随机验证法可以发现一些设计人员没有预计到的但实际应用中会出现的情况,同时也能找出设计中很难发现的错误。此外,对于目前大多数设计来说,所有输入情况和内部状态的组合是无穷的,因此不可能将所有的情况都进行验证。解决此问题的办法就是有效的将直接验证法和随机验证法结合起来。eVC中提供的sequence可以很好地实现以上2种验证方法,在编写测试激励时,可以对Sequence加入任何的约束来产生测试数据。为了直观的看到功能覆盖率的情况,Spe-cman提供了图形化的覆盖率统计界面,每次验证完一条测试激励后,都可以生成一个覆盖率文件,当所有的测试激励验证完毕后,Specman一次读入所有的覆盖率文件,并且将每个功能点的覆盖率都是用百分比的框图来表示。
3 eVC验证平台的应用实例
下面通过一个应用实例来介绍如何基于eRM建立自动化验证平台,该实例中待测模块fifo是一个简单的存储模块,其验证平台如下图2所示。
- 基于Flotherm分析的光伏逆变器的散热设计(05-13)
- Acquired Data Solutions公司使用FlexMotion和LabVIEW为飞机组件测试建立无人测试站(06-14)
- 飞机执行器寿命测试(06-14)
- 智能卡的自动化测试平台设计(05-17)
- 基于数据驱动的自动化测试的研究和实现(06-12)
- 基于指针式电测仪表自动化检定系统设计(01-19)