基于VMM实现的网络接口验证

时间:2022-09-10 06:09:16

基于VMM实现的网络接口验证

摘 要:网络接口是网络芯片的重要组成模块。基于vmm实现了一个网络接口验证环境,并就其参考模型(RM)的设计与验证环境的重用性进行了较为详细的阐述。该验证环境实现了所验证网络接口模块的零缺陷交付,达到了理想的覆盖率结果。就芯片已经成功流片且样片测试通过。

关键词:VMM; 参考模型; 重用性设计; 网络接口; 覆盖率统计

中图分类号:TN919文献标识码:A

文章编号:1004-373X(2010)15-0125-03

Verification of Network Interface Based on VMM

LIANG Pu, WANG Xin-an

(Key Lab of Integrated Micro-system Science & Engineering Applications, Shenzhen Graduate School of Peking University, Shenzhen 518055, China)

Abstract: Network interface is an important module in a network chip. A network interface verification environment realized on the basis of VMM is introduced in this paper. The reference module design and the reusability of the verification environment are elaborated. The zero-defect delivery of the verified network interface module was implemented by the verification environment. The ideal coverage rate was achieved. The chip passed all the tests.

Keywords: VMM; reference model; reusability design; network interface; statistics of coverage rate

0 引 言

随着设计规模的不断扩大,设计的复杂度也呈指数级上升,从而验证工作的难度也越来越大。业界普遍认可当前验证工作已经占到了整个项目工作量的70%以上。与之相对应的,前期的RTL代码验证也愈来愈重要,对于大规模SoC设计如果在回片测试中发现重大缺陷意味着巨大的时间损失与金钱损失。大量的经验表明全面细致的RTL代码验证可以及早发现代码中隐藏的缺陷,极大缩短项目开发周期,降低项目开发的后期风险。

模拟验证使用计算机软件模拟RTL级电路的运行,易于实现各种复杂的应用场景,并可生成精确的仿真波形,是各种验证方法中最直接、发现缺陷最快的,并且模拟验证还可以在代码编写阶段与设计人员配合实现迭代开发。尽管FPGA仿真验证与形式验证凭其优势已在验证工作中占有了一定的地位,但是模拟验证始终是验证工作中最重要的组成部分。同时业界也一直为提高模拟验证的效率进行着验证方法学的研究。

作者承担的验证工作是验证一款网络芯片中支持Utopia Level2[1],GMII[2],Posphy Level2三种网络接口协议与芯片私有特性的网络接口模块。网络侧接口是网络芯片中重要的组成部分,其对网络协议的支持直接决定了一个网络芯片的成功与否。网络协议一直在不断被更新,网络芯片也在不停随之升级。本文的工作正是基于以上前提实现了一个网络侧接口的验证环境,该验证环境的重用性强,不仅支持上述协议,还可以轻松地增加对新协议的支持或对同种协议的升级。在系列芯片开发中使用此验证环境可有效减少后续开发对网络侧接口验证的资源投入。

1 验证架构及实现

1.1 验证环境设计

VMM是Synopsys推出的基于SystemVerilog语言的验证方法学。VMM从以OpenVera语言为基础的RVM发展而来,它的优点是:代码的可重用性强,验证的自动化程度高,可以有效保证验证的质量。VMM验证方法学在当今SoC设计领域已有广泛应用,为ASIC产品项目进度的提升提供了很大的帮助[3]。VMM库包括一系列的标准基本类,主要有vmm_data,vmm_atomic_gen,vmm_xactor,vmm_xactor_callbacks,vmm_channel,vmm_env,vmm_log等。通过对这些基本类的继承与重载,可构造出灵活多样的验证环境。

本文使用VMM实现的验证环境由命令层与执行层两部分组成,如图1所示。

TestCase是命令层的主体,也是验证人员控制仿真如何进行的惟一接口。在TestCase中定义三部分内容:定义随机测试与直接测试,定义验证级别,定义验证方法。

图1 验证环境结构

随机测试与直接测试联合使用是一种高效的验证方法[4]。随机测试可以减少人为因素的干扰,能有效提高验证工作的效率和可靠性。随机测试对验证环境提出的要求是既要覆盖全面又要符合设计的规格特性。本文的验证环境使用VMM提供的数据基类(vmm_data)实现数据与事件的约束。下例是对网络协议类型选择的约束实现:

Class Spec_Sel extends vmm_data;

{

rand enum Spec_Tpye;

rand enum Spec_Level;

rand enum Trans_Err_Level;

rand int Complex_Level;

}

在这个简单的例子中当协议(Spec_Level)确定后,其他的变量都会根据类(Spec_Sel)中定义的约束(Constraint)进一步随机产生。但是此款芯片内部功能的配置参数却是彼此约束,没有一个是绝对独立的。因此简单的约束无法让仿真软件计算出结果,而会陷入死循环。本文的验证环境根据芯片的特性与应用场景定义了一个场景变量Situation_Mode作为强相关参数随机的基础,即根据应用场景确定部分参数,进而再产生所有的参数。随机测试关注是否覆盖到芯片的全部功能特性,而直接测试关注芯片特定功能的性能与设计风险。验证环境中直接测试的思想以传统的时序验证为基础,定义一个Timing_Define基类,这个基类实现时序的抽象描述,验证人员仅需要在TestCase中重载该基类并增加需要的时序段描述即可。这样的实现方式有效减少了验证人员花费在时序编写上的时间。

Command将命令层行为要求转译为执行层的行为实现,由全局配置类Env_cfg与各级行为控制类Env_tranxactor组成。Env_cfg是一个数据类,验证环境中的所有组件在例化时都会被传入这个类,从而在TestCase中实现对整个验证环境的行为控制。

执行层的功能包括激励产生,驱动DUT,监测DUT输出,收集覆盖率信息[5],产生参考数据,检查DUT输出并输出统计数据。执行层的验证方法主要有参考模型比对,断言检查与代码覆盖率统计。在设计代码尚不稳定时主要使用前两种方法,在代码稳定后则加入覆盖率统计并减少断言检查。这样的安排是出于验证效率的考虑,每一种验证方法的使用都需要消耗相应的资源(内存空间与时间)。合理利用有限资源也是验证工程师必须要考虑权衡的。

1.2 参考模型(RM)设计

参考模型是验证环境中最重要的组成部本。本文验证环境中的参考模型使用SystemVerilog实现。SystemVerilog语言简洁,类似于C++,从而可以从较高的抽象级别描述DUT的行为。使用面向对象编写的参考模型具有易封装,代码重用性高与抽象层次高的优点。编写参考模型需要验证人员对DUT的规格特性具备详尽深入的了解,在此基础上验证人员才可以制定出一个高效的验证策略。对于简单的算法与协议类设计可以采用黑盒测试,而对于较为复杂设计则需要采用灰盒测试。

一般的数字电路验证的内容主要为算法与协议。这类验证内容具有很强的可预见性,即已知输入数据与算法或协议便可以计算出DUT的输出。由此计算出的结果可以直接与DUT的输出数据进行一对一的比较,从而验证DUT的正确性。作者所验证的DUT并非一个纯粹的协议与算法电路,其设计规格中存在大量的时序强相关功能,并且这些特性直接影响DUT的稳定性,某些特定的时序条件会使存在缺陷的DUT异常挂死。因此本文的验证环境在参考模型中加入了时序考虑。

参考模型中的时序考虑有两种实现方式:全面覆盖与部分预估。

参考模型根据数据激励与条件约束产生一系列的参考结果保存在比较缓冲区中,比较器将DUT的输出数据与比较缓冲区中的参考结果依次比对,如图2所示。本验证环境使用全面覆盖的方法验证时序敏感元素较少的设计模块,实现这类电路的参考模型计算量较小,生成的参考结果也较少,从而比对的效率高。对于时序敏感元素较多的设计模块若使用全面覆盖的方式会使参考模型的算法复杂度呈指数级增加,需要验证人员为此投入大量的时间,并且生成的参考结果数量也非常庞大。所以本验证环境对于时序敏感元素较多的设计模块采用部分预估的方法实现其参考模型。参考模型仅预估致命性高、出现概率高的结果。这种方法是验证效率、资源消耗与缺陷命中率的折衷。部分预估法根据综合考量后的约束计算出部分参考结果,如果最终DUT的输出结果不在参考结果中则比较器会产生缺陷报告,进而验证人员根据缺陷报告为DUT另外设计直接测试的TestCase。使用部分预估减少了验证人员在编写参考模型时的时间投入,提高了验证效率。

图2 时序类设计的检查方式

1.3 重用性设计

验证环境的重用性体现在两个方面:一是不同电路设计间的重用;二是模块级到系统级验证的重用[6]。

对于电路设计间的重用本验证环境重点针对网络协议的升级进行了重用性设计,使用VMM层次化搭建验证环境的特性将大部分环境组件设计为完全重用。对于升级的协议或者特别的接口设计,验证环境仅需要对参考模型(RM)、驱动接口和激励生成器(Generator)进行修改,修改方式为从既有基本类派生新类或者通过环境组件中使用vmm_callback定义的task实现新功能的注入。原有的TestCase中除部分针对性的直接测试用例(如时序特性测试用例)外均可以完全重用。

对于模块级到系统级验证的重用,本验证环境从系统级到模块级都设计了统一的数据类型,各模块级的验证环境都采用相同的层次化结构,各模块级的参考模型设计有统一的对外数据通道用于在系统时实现模块级参考模型的级接。在进行系统级验证时只需要把各模块的验证环境例化在一个系统级验证环境内并按层次级联便实现了系统级验证环境。并且此验证环境可以同时支持RTL级仿真与网表级仿真,仅需要在执行方针时定义用于区分的参数即可。

2 验证结果

该验证环境采用覆盖率统计结果作为最终交付条件,其中DUT的行覆盖率达到100%,条件覆盖率达到98%,状态机覆盖率达到100%。

网络接口模块的验证工作包括模拟仿真验证与FPGA仿真测试。国内的验证技术尚不成熟,绝大多数国内公司都把FPGA测试作为产品设计必不可少的质量保证[7]。作者的验证工作结果为:FPGA仿真中发现的设计缺陷仅占所有已发现缺陷的3.4%;使用作者设计的验证环境后实际综合耗时相对于计划用时共节约21%,且所节约时间均为初期预留给FPGA测试所用。在FPGA测试发现的缺陷中仅有一个为规格不明确引入的功能设计缺陷,且可通过软件规避,而其余缺陷均为FPGA测试所使用的Memory模型引入的缺陷。由此可见模拟仿真在功能验证上完全可以取代FPGA仿真测试,节省不必要的时间与人力成本投入。

作者负责验证的网络芯片已经成功流片。在MPW样片测试中,网络接口模块达到零缺陷。另外在Pilot版本的芯片中网络接口模块新增约一倍的新规格,而使用本验证环境,仅使用4周就完成了模块新增特性的验证,之后仅两周就实现了缺陷的收敛。

3 结 语

介绍了基于VMM实现的一个网络侧接口模块的验证环境。该验证环境验实现了DUT的零缺陷交付,并且在后续升级版本中凭借其出色的重用性保证了Pilot版本芯片的交付,节约了宝贵的时间。此验证环境可以作为同类芯片的验证IP使用,对于设计同类系列化产品的团队,使用该验证环境可以有效提高产品的开发效率。

另外FPGA的逻辑单元数量有限,测试大规模SoC芯片需要耗费大量时间与硬件资源。而一个设计完善的模拟仿真验证环境完全可以取代FPGA在SoC芯片开发中的作用,有效提高开发效率,并节约成本。

参考文献

[1]ITU-T. ATM Bounding G.998.1[S]. [S.l.]: ITU-T, 2005.

[2]IEEE. Std 802.3[S/OL]. [2006-07-26]. /.

[3]BERGERON Janick. Writing testbench using system verilog[M]. New York: Springer Science Business Media, Inc. Publishers, 2006.

[4]KEAVENEY Martin, MCMAHON Anthony, O′KEEFFE Niall. The development of advanced verification[J]. environment using system verilog, 2008(6): 47-51.

[5]WU Ying-pan, YU Li-xin, LAN Li-dong, et al. A cove-rage-driven constrant random-based functional verification method of memory controller[C]. The 19th IEEE/IFIP International Symposium on Rapid System Prototyping. [S.l.]: The ATM Technical Committee, 1995.

[6]侯秋菊,沈海华.IP可重用的AMBA AXI总线验证平台设计与实现[J].计算机工程与设计,2008,29(7):1713-1715,1753.

[7]边计年.集成电路设计验证方法与技术[C]//第五届中国测试学术会议论文集.北京:[出版者不详],2008.

[8]ITU-T. PTM Bounding G.998.2[S]. [S.l.]: ITU-T, 2005.

上一篇:基于FPGA及DDS技术的USM测试电源的设计 下一篇:基于FPGA的UART设计与实现