基于VMM的流量管理芯片验证
2010-05-13刘燕,王京梅,张帆,兰中文
刘 燕,王京梅,张 帆,兰中文
摘 要:流量管理芯片的验证是目前业界的热点与难点,验证工程师们一直在努力寻找用于流量测量的较好方法。采用System Verilog 语言,基于Synopsys公司最新推出的验证方法学VMM,提出一种用于流量管理芯片验证的分层次验证环境。该环境对流量测量方法进行重点研究,放弃采用参考模型的传统验证思路,提供一种参考基准可变,时间窗位置可移,长度可调的,可在不同设计间高度重用的流量检测机制。该验证环境及验证方法在海思半导体某流量管理芯片开发过程中的成功应用,保证了芯片开发质量,缩短了项目开发周期,为其他同类芯片的开发提供了强有力的支持。
关键词:VMM;流量管理;芯片;验证
中图分类号:TN407文献标识码:A
文章编号:1004-373X(2009)12-015-04
Verification of Traffic Managing Chip Based on VMM
LIU Yan1,WANG Jingmei1,ZHANG Fan2,LAN Zhongwen1
(1.State Key Laboratory of Electronic Thin Films and Integrated Devices,University of Electronic Science and Technology of China,Chengdu,610054,China;
2.Hisilicon Technologies Co.Ltd.,Shenzhen,518129,China)
Abstract:The verification of traffic managing chip is currently the hotspot and difficulty in this field.Verification engineers have been trying their best to find a better way to traffic measurement.Adopting System Verilog,based on VMM library supplied by Synopsys,one layered verification environment is presented.Focusing on the research of traffic measurement,abandoning the traditional verification thought with RM,the environment provides one traffic check mechanism,in which reference benchmark is variable,time window is movable and time length is adjustable.Successful application of the verification environment and methods introduced in this article in traffic managing chip in Hisilicon not only shorten the period and assure the quality but also strongly supportd the development of congeneric chips.
Keywords:VMM;traffic managing;chip;verification
0 引 言
随着半导体集成技术的飞速发展,SoC的集成规模日益庞大,集成功能日益复杂。芯片验证在芯片研发中所占的比例越来越重,占据了整个研发周期的70%以上[1]。芯片验证已成为整个芯片流程中的瓶颈,验证的完备性和验证效率的提高成为验证的难点,也是目前验证的主要研究方向。
Synopsys是实现高复杂的SoC设计。最新推出VMM验证方法学[2],基于System Verilog语言。System Verilog具有面向对象语言的抽象数据结构[3],相对于E语言、TCL、C/C++等验证语言,System Verilog的特殊性在于它将设计和验证组合成同一种语言[4],从而使环境实现更加简单,结构更清晰,维护性更强。VMM以其清晰的分层架构体系,便于维护和扩展的优势越来越受到各公司的重视。瑞萨科技采用Synopsys的VCS功能验证解决方案开发复杂的SoC,并选定了VMM方法集,用于验证其重要的Super Hyway总线片上互连架构[5]。中科院计算所采用VMM验证方法实现AXI总线系统的验证[6]。
1 VMM介绍
Synopsys提供的VMM不仅是一套验证方法,更是一种实现。其中,提供VMM库供用户在VCS环境下使用。VMM库包括一系列的标准基本类,主要有vmm_data,vmm_atomic_gen,vmm_xactor,vmm_xactor_callbacks,vmm_channel,vmm_env,vmm_log等。通过对这些基本类的继承与过载,可构造灵活的验证环境。
2 流量管理芯片介绍
流量管理芯片通过对网络中数据流量的合理规划和有效控制实现对现有网络资源的合理利用,从而控制网络拥塞,是网络中实现QoS的核心。上行流量管理芯片的结构如图1所示,芯片将由转发引擎接收的报文切割为交换网识别的定长信元,以信元为粒度进行调度,最终将信元输出到交换网。其中,信元调度部分是芯片中实现QoS的核心,主要通过各种调度算法进行流量的分配,提供基于优先级的精确带宽分配。优先级间采用WFQ[7]进行调度,固定包长误差小于5%,混合包长误差大于3%。
图1 流量管理芯片的结构
3 验证工作及验证策略
根据前面对流量管理芯片的介绍,验证工作主要关注以下几方面:
(1) 各级调度实现合理。优先级间WFQ调度实现合理,各优先级获得的带宽在允许的误差范围之内。
(2) 报文处理正确。报文进行正确的切割、缓存,最终输出正确的信元到交换网。
(3) 同一队列的信元不能出现乱序、覆盖、丢弃等现象。
其中,对于调度合理性的测试,由于各种流量调度算法实现复杂,要建立其参考模型十分困难且意义不大。于是,毅然放弃了传统采用参考模型的思路,而选择流量检测机制指导仿真验证。流量检测的基本思想为:检测各队列在指定时间窗内接收的流量,将各队列的流量检测值与预期值进行比较,从而判断流量分配是否合理。通过将DUT的输出与参考模型的输出进行比较来判断报文处理的正确性。对于信元乱序、覆盖、丢弃等的检测,通过在仿真环境中添加自动检测功能,并将检测结果打印输出,从而提高仿真环境检测和观察的自动化程度,进而提高验证效率。
4 验证环境的搭建
为完成芯片规格的验证,搭建了图2所示的验证环境,整个验证环境分为4个层次:信号层、过渡层、命令层、测试层。其中,信号层是验证环境的最底层,为DUT提供信号级的连接,与DUT接口以及各种协议相关,主要包含Driver,Monitor等各BFM。在整个验证环境中,信号层起着过渡层与DUT之间桥梁的作用。过渡层包含除信号层以外的其他验证组件。由于信号层的存在,过渡层不需要关心DUT的具体时序,完全采用抽象的数据结构,从而可提高验证环境的重用度和可维护性。命令层主要封装了底层的一些命令以及各种表项配置函数,供测试层调用。测试层是验证环境的最高层,主要包含各测试用例,通过调用命令层封装的各种命令、函数,完成对验证的控制,不用关心验证环境的具体实现,从而可以使环境使用者与搭建者完全独立开来。
图2 分层次的验证环境
在介绍了验证环境的分层结构以后,再来介绍如何利用VMM的基本函数库完成环境中各验证组件的构建并进行正常的仿真。
4.1 激励和激励发生器
Generation是验证环境的激励,主要定义源地址、目的地址、优先级、报文长度等各种报文信息,并提供根据报文信息产生报文数据的方法。Generation对vmm_data类继承和过载得到报文基本类basepacket,再通过对basepacket继承和过载得到vlan_packet,mpls_packet等各种报文类。为便于ScoreBoard自动比较结果,对报文进行随机约束[8],将报文id和信元id固定填充到报文净荷部分。
Generator是验证环境的激励发生器,根据TC指定产生各种数据包,并将报文发送到输出通道。采用vmm的基元发生器类生成Generator。通过宏调用`vmm_atomic_gen(basepacket,“类描述信息”),产生basepacket_atomic_gen基元发生器类。通过对该基元发生器的变量randomized_obj和stop_after_n_insts赋值,指定发包类型和发包数量。当启动该基元发生器时,就会产生指定数目的指定类型报文,并将报文自动放入输出通道。
4.2 驱动器和监视器
Driver是验证环境的驱动器,将Generator产生的报文转化为DUT的时序信号以驱动DUT。Monitor是验证环境的监视器,完成与Driver相反的操作,将DUT的输出转化为信元并发送到ScoreBoard。Driver和Monitor都由vmm_xactor类继承得到。该验证环境中的其他验证组件如RM,ScoreBoard等也由vmm_xactor继承而来。这些组件的所有功能都在main方法中实现,它们的启动和停止分别通过调用函数start_xactor和stop_xactor完成。由于System Verilog对Verilog 2001完全兼容,验证环境只用一种语言就能实现与DUT的无缝衔接[9],从而使环境实现更简单且维护性更强。同时,采用System Verilog的接口机制将Driver与DUT,DUT与Monitor之间的信号进行封装。这样可以提高DUT与验证环境的抽象层次,使环境具有更好的扩展性和重用性。
4.3 参考模型
RM是验证环境的参考模型,以与DUT相同的方式将报文切割为信元,并将信元发送到ScoreBoard。作为参考模型,RM的正确实现显得尤为重要。RM没有DUT那样严格的时序要求,它的处理由Generator产生抽象数据包,这使得用System Verilog编写比用verilog编写更加简洁,灵活,正确性更高。同时,由于DUT由设计人员编写,RM由验证人员编写,通过将DUT的输出与RM的输出进行对比的方式判断DUT功能的正确性,可以提高验证结果的可靠性,并进一步提高验证效率。
4.4 流量检测组件
Tm_tck是验证环境定义的用于流量检测的callback类[10]。采用callback对流量检测功能进行回调封装可以提高验证环境的重用度和可维护性。在Tm_tck中主要定义get_cell,traffic_check和report_traffic三个虚拟方法。get_cell提取信元的长度、队列号、信元序号等信息,traffic_check在指定的时间窗内检测各队列接收的报文数和字节数,report_traffic根据报文数和字节数以及时间窗长度计算各队列的流量,并打印流量信息。traffic_check提供3个输入变量,即参考队列号qcheck、起始检测点num_start、结束检测点num_end。当调用traffic_check函数时,就以qcheck队列收到第num_start个信元为时间窗起点,收到第num_end个信元为时间窗终点。通过设置不同的输入变量,可以改变参考基准、时间窗位置以及时间窗长度。
4.5 记分板
ScoreBoard是验证环境的记分板,主要完成信元正确性检测,信元乱序、覆盖、丢弃检测,流量检测,仿真结束条件检测等功能。验证环境中ScoreBoard的自动化程度直接决定了仿真验证的效率。自动化程度高且检测机制完善的ScoreBoard可以极大地缩短观测和定位问题的时间,从而提高验证效率。
ScoreBoard首先取出RM的输出信元,用于提取信元队列号、包id、信元id等信息。将{包id,信元id}作为信元标识,区分队列号以信元标识为索引将信元存入联合数组rm_cell[*],再取出Monitor的输出信元,提取信元队列号信息,区分队列号将信元压入队列mon_cell$。
在进行信元正确性判断时,遍历所有队列号,从非空mon_cell中弹出信元,以信元标识为索引查询rm_cell。若rm_cell中不存在对应地址的信元或者信元内容不相等都判断为错误信元。对于错误的信元,打印出错误信息。
在进行信元乱序、覆盖、丢弃等判断时,遍历所有队列号,从非空mon_cell中依次弹出信元,将相邻两信元的信元标识比较。若出现前面信元标识大于后面信元标识,则判断两信元间出现乱序。若相邻两信元标识相等,则说明两信元间出现重叠。遍历所有队列号,将rm_cell与mon_cell中的信元个数比较,若前者信元个数大于后者,则说明DUT有信元丢失现象。将出现乱序、覆盖的信元以及丢弃信元的队列号和信元丢弃个数打印输出。
在进行流量检测时,直接调用Tm_tck的流量检测任务完成各队列的流量检测功能。
在检测仿真结束条件时,检测DUT丢弃报文数、输出报文数、RM输出报文数,当DUT输出报文数加丢弃报文数等于RM输出报文数时,仿真结束条件成立。
4.6 断言和覆盖率
为了提高仿真中观察和定位问题的速度以及验证的效率和完备性,在环境中添加了断言[11]和覆盖率属性[12]。通过在设计模块对外接口的关键位置上设置断言,可以有效地提高观察和定位设计错误的能力。此外采用代码覆盖率和功能覆盖率手段进行辅助验证。代码覆盖率包括行覆盖率、条件覆盖率、状态机覆盖率等,主要用于检测RTL代码的执行情况,并由VCS自动收集。根据代码覆盖率提供的代码覆盖情况,可以对代码实现的正确性和冗余度进行分析,并有针对性地添加用例,最终达到行覆盖率100%,条件覆盖率90%,状态机覆盖率100%的标准。对没有达到标准的需要分析原因,给出解释。功能覆盖率需要定义覆盖率点和覆盖率组,主要检测芯片功能点的覆盖情况,不仅检测单一的功能点,还检测功能点间的耦合。根据功能覆盖率提供的信息,进行定向用例补充,最终达到100%的覆盖标准。
4.7 验证环境
VMM提供了用于实现验证环境的基本类vmm_env。vmm_env提供的基本函数和方法使环境的搭建到仿真的完成只需9步操作,业界称为“vmm九步曲”。这9步操作分别对应gen_cfg,build,reset_dut,cfg_dut,start,wait_for_end,stop,cleanup,report等9个任务和方法。
本环境在对这9个方法进行继承的同时,对build,start,wait_for_end,stop,report等方法进行过载。在build中将上述各验证组件通过接口、通道、mailbox等连接成图2所示的验证环境,在start中调用各组件的start_xactor启动组件,在wait_for_end中调用ScoreBoard的仿真结束函数,等待仿真结束。在stop中调用各组件的stop_xactor停止组件,在report中调用Tm_tck的report_traffic打印各队列的流量信息。
5 验证的实现
在完成验证环境的搭建以后,为了测试优先级间WFQ调度的精度,分别测试输入报文在固定短包(64 B)、混合短包(64~256 B随机)、混合长短包(64~1 518 B随机)、混合长包(1 300~1 518 B随机)、固定长包(1 518 B)时8个优先级间的调度情况。当以优先级1为基准时,优先级间WFQ调度的误差如图3所示。从测试误差分析,优先级间WFQ调度满足固定包长误差大于5%、混合包长误差小于3%的要求,且混合包长误差小于固定包长,满足芯片设计规格。
图3 优先级间WFQ调度误差
为了测试调度的合理性,还测试了优先级间WFQ调度与其他调度的耦合,优先级间WFQ调度关系的动态修改,以及同时修改优先级间WFQ调度关系和其他调度关系的情况。严格执行发现问题、定位问题、解决问题、回归用例等操作流程。最终保证代码通过所有用例的测试,且达到了代码覆盖率和功能覆盖率标准。
6 结 语
这里介绍了VMM 的基本函数库,在对流量管理芯片主要功能进行分析的基础上,分析验证的策略,描述如何利用VMM的基本函数完成流量管理芯片验证中各验证组件的构建、验证环境的搭建以及进行正常的仿真。在验证环境的基础上,实现芯片优先级间WFQ调度的成功验证。经过分析可以看出,借助接口功能、断言和覆盖率属性搭建的分层次验证环境结构清晰、灵活性强、扩展性好、重用度高,能够极大地提高验证效率和验证的完备性。针对流量管理芯片的验证方法和验证策略能有效地指导芯片的仿真验证,采用callback封装的流量检测组件,不仅能保证芯片的成功验证,还可为我公司同类芯片完全重用,从而大大缩短同类产品的开发周期,降低开发成本,加快面市进度。
参考文献
[1]杨逸轩,傅兴华.VMM在AVS解码芯片验证中的应用[J].电脑知识与技术,2007(24):85-87.
[2]Janick Bergeron,Eduard Cerny,Alan Hunter,等.System Verilog 验证方法学[M].夏宇闻,杨雷,陈先勇,等译.北京:北京航空航天大学出版社,2007.
[3]Ravi Surepeddi.System Verilog for Quality of Results (QoR)[J].IEEE Computer Society,2008.
[4]葛立伟.SystemVerilog设计和验证的统一语言[Z].电子工程专辑,2003.
[5]夏宇闻.System Verilog 简介[J].中国集成电路,2006(2):40-50.
[6]张珩,辜帆.VMM验证方法在AXI总线系统中的实现Verification IP应用一例[J].中国集成电路,2007(6):19-23.
[7]钟山,岳祥.WFQ流量调度算法研究[J].光通信研究,2006(5):16-18.
[8]杨鑫,徐伟俊,陈先勇,等.System Verilog中的随机化激励[J].中国集成电路,2007(10):37-41.
[9]Han Ke,Deng Zhongliang,Shu Qiong.Verification of AMBA Bus Model Using System Verilog[A].IEEE Proceedings of the Eighth International Conference on Electronic Measurement and Instruments[C].2007.
[10]Janick Bergeron.Modeling Usable & Reusable Transactors in SystemVerilog[A].IEEE Proceedings of the 18th International Conference on VLSI Design Held Jointly with 4th International Conference on Embedded Systems Design[C].2005.
[11]Kausik Datta,Das P P.Assertion Based Verification Using DVL[A].IEEE Proceedings of the 17th International Conference on VLSI Design[C].2004.
[12]Runshan Yang,Liji Wu,Jun Guo.The Research and Implement of an Advanced Function Coverage Based Verification Environment[J].IEEE ASIC,2007:1 253-1 256.
作者简介 刘 燕 女,1983年出生,硕士研究生。主要从事网络芯片的验证工作。