基于UVM实现随机测试的先进方法

时间:2022-08-05 06:44:34

基于UVM实现随机测试的先进方法

摘要:随机设计越来越复杂,受约束的随机化测试方法已成为验证的发展趋势。本文以数据流交叉模块的验证为例,介绍如何基于UVM验证方法学构建受约束的随机化测试平台,其主要内容包括:UVM验证平台的建立、受约束的随机的实现、功能覆盖率的实现、自动检查结构等方面。

关键词:定向测试;随机测试;受约束的随机;功能覆盖率;UVM

中图分类号:TP311 文献标识码:A文章编号:1007-9599 (2011) 20-0000-01

Advanced Methods to Achieve Random Testing on UVM

Hong Ruihuang,Wang Feng,Tang Xiong,Liang Jie

(ZTE Corporation,Shenzhen518055,China)

Abstract:As designs grow larger,it becomes more difficult to create a complete set of stimuli needed to check their functionality.The solution is to create test cases automatically using constrained random tests(CRT).In this paper,we take data switch module for example,describes how to build constrained random test platform base on UVM verification methodology,its main contents include:UVM Test-bench establishment,implementation of constrained random,functional coverage achieved,automatically checks and so on.

Keywords:Directed test;Random test;Constrained-random;Function coverage;UVM

一、问题的提出

功能测试(验证)按激励的产生方式来分,可以分为定向测试(Direct Test)和随机测试(Random Test)。随着设计规模越来越大,要产生一个完整的激励集来验证设计的功能也会变得越来越困难,采用受约束的随机测试方法(Constrained Random Test,CRT)将成为验证的趋势。

二、解决思路

面对这么庞大的配置空间,编写足够多的定向测试集已不可能了,解决的方法是采用受约束的随机测试方法自动产生测试集,通过约束,让它只产生有效的、随机的配置。要使用随机测试,首先要解决好以下几个问题:(1)UVM验证平台的搭建;(2)受约束的随机配置;(3)功能覆盖率;(4)自检查结构。

三、实践情况

(一)UVM验证平台

UVM(Universal Verification Methodology)是目前业界统一的一种验证方法学[1]。根据项目验证要求搭建的UVM验证平台如下图所示,下面结合数据流交叉模块的验证平台对UVM的事务(UVM Transaction,下文中的Transaction和Sequence属于这个范畴)和组件(UVM component,下文中的Agent、Sequencer、Driver、Monitor属于这个范畴)进行简单描述:

(二)受约束的随机。数据流交叉模块的随机化测试中的关键点之一是实现交叉配置的随机化,并且是受约束的随机,所以首先必须要了解配置地址和数据的结构。

约束条件的实现方法如下:(1)配置地址的生成,直接定义一个函数按half_axc、chip、UDP接口顺序生成即可。(2)配置值的随机化,实现的思路是逐个UDP接口进行配置,配置每一个UDP时,启动一次randomize的过程,要求产生的配置值合,384个时隙的配置值不重复。

首先,定义一个深度为2880的数组congif_data[],按half_axc、chip、CPRI光口顺序产生2880个有效配置值(不连续);

其次,定义一个深度为2880的数组itr[],它的值作为指针指向config_data[],该数组利用包含randc变量的辅助类来产生一个随机数组,取值范围0~2879,并且数组各单元的值各不相同;

最后,当配置交叉时,以itr数组前384个随机值为地址,取出config_data[]中相应的配置值,然后通过UVM_do_with传递到sequencer。

(三)功能覆盖率。功能覆盖率是用来衡量哪些设计特性已经被测试程序测试过的一个指标。下面介绍数据流交叉模块的功能点定义、收集的实现方法以及测试进度的衡量方法:1.功能点定义:根据数据流交叉的设计规范,需要定义的功能覆盖点(cover point)包括配置地址的各个字段,以及配置值中的各个字段,理论上如果要对交叉表的全部配置情况进行覆盖率统计的话,要将上面定义的所有cover point进行交叉(cross),即定义一个交叉仓来存储所有的组合。2.覆盖率收集:在本例中,我们要收集的是CPU接口输出的配置,因此定义当CPU接口的写操作作为cover point,并通过perform_coverage(UVM定义的覆盖率收集函数)收集覆盖率。3.测试进度:在数据流交叉模块的验证中,经过900多次随机配置过程,报出的功能覆盖率如下所示,可以看出各个单独定义的功能点,均已覆盖(cfg_abus_udp_num为95%,是因为不使用udp9这个编号),而且定义交叉仓的覆盖率也达到100%,仿真进程可以停止。

图4:功能覆盖率报告

(四)自检查结构的实现。验证人员还需要设计一个自检查结构,通常是使用记分板(scoreboard)或参考模型来实现自检查结构。我们使用参考模型+Monitor(数据采样+比较)来实现自检查的功能:首先,按设计规格书自己编写一个参考模型,参考模型的输出理论上与DUT完全一致,以便在仿真过程中,实时与DUT进行比较。其次,进行数据采样及比较,在CPU配置交叉表期间不进行自检查。

四、总结

随机化的验证平台的一个随机运行前需要较长的时间,但是回报却很高。(1)一旦CRT验证平台建立完成之后,测试的大部分工作将由计算机完成,效率将会明显提高;(2)CRT验证平台建立之后,回归测试变得很容易;(3)在复杂的设计当中,CRT测试容易发现意想不到的bug;(4)借助方法学的帮助,建立更多的验证通用IP(VIP),建立CRT验证平台的时间也会缩短。

参考文献:

[1]Accellera,Universal Verification Methodology(UVM)1.1 User’s Guide,May 2011.

[2]Chris Spear,SystemVerilog for Veification:Springer,2008.

[作者简介]洪瑞煌,中兴通讯股份有限公司,逻辑验证工程师,硕士,主要研究方向无线通讯基带系统设计;王峰,中兴通讯股份有限公司,系统工程师,硕士,主要研究方向无线通讯系统设计和架构设计;唐雄,中兴通讯股份有限公司,通讯系统架构师,本科,主要研究方向无线通讯系统设计和架构设计;梁杰,中兴通讯股份有限公司,逻辑开发工程师,硕士,主要研究方向无线通讯基带系统设计。

上一篇:校园网安全解决方案的分析与设计 下一篇:对开展知识本体模型自动构建方法的研究课题的...