• 614.50 KB
  • 2022-09-27 发布

视频信号处理系统中运动估计加速器模块基于systemverilog语言的验证

  • 63页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档由用户上传,淘文库整理发布,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,请立即联系网站客服。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细阅读内容确认后进行付费下载。
  4. 网站客服QQ:403074932
硕士研究生学位论文题目:视频信号处理系统中运动估计加速器模块基于SystemVerilog语言的验证姓名:方芳学号:院系:信息科学技术学院专业:电子与通信工程研究方向:SoC设计导师姓名:王新安副教授二00八年六月\n北京大学硕士学位论文版权声明版权声明任何收存和保管本论文各种版本的单位和个人,未经本论文作者同意,不得将本论文转借他人,亦不得随意复制、抄录、拍照或以任何方式传播。否则,引起有碍作者著作权之问题,将可能承担法律责任。\n北京大学硕士学位论文摘要摘要本文对视频信号处理系统中运动估计加速器模块的功能实现算法进行了一定程度的分析与研究,通过分析当今业界主要应用的验证技术,结合公司的实际情况选用了先进的验证方法,在EDA工具的支持下对运动估计加速器模块进行了全面的功能性验证。文中还详细剖析了芯片验证环境,这是一个运用SystemVerilog语言的仿真环境,利用总线功能模型(BFM)实现总线操作,使得验证在事务级(transactionlevel)进行,大大提高了验证的效率及可复用性。本文针对运动估计加速器模块设计了足够的验证case,覆盖了模块的各项功能,并运用SystemVerilog搭建了高效的验证平台,通过Perl脚本对整个验证架构中进行仿真管理与控制,实现了对C_model的实时调用、输入参数的随机生成以及输出数据的实时比对等自动化功能。此外还与其他验证工程师合作搭建了视频信号处理系统的联合仿真平台,该平台实现了视频信号处理中所有模块的系统级验证。此外,对视频信号处理系统还进行了FPGA验证,作为对基于仿真的验证的有效补充。网表(netlist)设计完成以后还进行了post-layoutsimulation(后仿真),对芯片设计部门而言是流片前签发的最后一个环节。本文还通过先进的EDA工具及芯片仿真环境的支持,对运动估计加速器模块代码覆盖率进行了统计分析。对运动估计加速器模块的验证通过了展讯公司模块验证的评审流程,被认为是充分的。实践表明,本文所采用的验证方法和结构是适合SC8800E芯片项目开发的,具有灵活性好、效率高、可复用性强等优点。关键词:系统级芯片,SystemVerilog,SystemVerilog验证方法学I\n北京大学硕士学位论文AbstractAbstractSystemVerilogbasedverificationofMEAmoduleinvideosignalprocessingsystemFangFang(Electronicandcommunication)DirectedbyWangXinanInthispaper,theMEAmodulealgorithmisanalyzedandresearchedtosomeextent.Inaddition,throughstudyingthepopularverificationtechniquesinICindustry,thewholefunctionalverificationforMEAmoduleinTD-SCDMA/GSMchipSC8800Eiscompleted,withtheuseofadvancedverificationmethodologyandthesupportofEDAtools.TheverificationenvironmentplatforminthechiplevelforMEAisalsodetailedinthispaper.Thisisamulti-languagesimulationenvironmentusingVerilog,SystemVerilog,etc.ThebusfunctionisimplementedbyusingthereusableBFM(BusFunctionalModel),sothattheverificationworkcancarryoutatthehigherlevelmoreefficiently.Also,inthispaper,thereareenoughtestcasesdesignedforMEAmoduleverification,whichaimatcoveringallthefeaturesofthedesign.TheverificationplatformisdescribedusingSystemVerilog,andPerlscriptisusedtocontrolthewholesimulationintheverificationstructure,sothatreferencemodelinC_modelcanbecalledonthefly,theinputparameterscanbegeneratedrandomlyandtheoutputdatacancomparedwiththeexpecteddataautomatically.Besides,withtheotherverificationengineers’teamwork,asimulationplatformforimagesignalprocessingsystemhasbeenbuiltup.ThisplatformimplementedthesystemlevelverificationofallISPmodules.Moreover,theverificationofMEAmoduleisalsoimplementedwithFPGAverificationasaneffectivesupplementaryofsimulation-basedverification.Afterthedesignofnetlist,post-layoutsimulationisalsodone,whichisthelastsign-offstepbeforetapingthechipoutforchipdesigndepartment.WiththesupportofadvancedEDAtoolsandchiplevelverificationenvironment,inthispaper,thecodecoverageanalysisandstatisticjobforIII\n北京大学硕士学位论文AbstractMEAmodulearealsodone.TheMEAmoduleverificationhaspassedthequalityreviewflowformoduleverificationinSpreadtrumCommunications,Inc.Allthoseindicatethattheverificationmethodandstructuredescribedinthispaperarehighlyflexible,efficient,andreusable,therebysuitableforapplicationinSC8800Echipprojectdevelopment.Keywords:SoC(System-on-Chip),SystemVerilog,VMMforSystemVerilog(VerificationMethodologyManualforSystemVerilog)III\n北京大学硕士学位论文目录目录摘要IAbstractII目录IV图目录VIII表目录IX第一章绪论11.1课题背景11.2本文的主要工作及贡献21.3章节安排3第二章视频信号处理系统中运动估计加速器模块的算法及其硬件实现概述42.1运动估计简介42.2算法简介[3]42.2.1基于块的运动估计52.2.2整像素的运动估计52.2.3INTRA/INTER模式选择62.2.4半像素搜索62.2.516x16/8x8预测模式选择72.2.6快速搜索算法72.3硬件实现102.4本章小结11第三章SoC验证方法学简介123.1SoC设计挑战123.1.1系统设计方法[4]123.1.2深亚微米效应133.1.3IP集成13VI\n北京大学硕士学位论文目录3.2SoC验证流程133.3常用验证技术分类[5][6]153.3.1静态技术153.3.2仿真技术163.3.3硬件加速和原型验证163.4验证平台策略173.5本章小结19第四章SystemVerilog语言简介214.1SystemVerilog的特征214.1.1接口(interface)224.1.2全局声明和语句224.1.3时间单位和精度224.1.4抽象数据类型234.1.5断言244.2SystemVerilog验证方法学介绍[13]244.2.1验证面临挑战244.2.2SystemVerilog验证技术254.2.3产生带约束随机仿真254.2.4覆盖率驱动验证264.2.5断言274.3基于SystemVerilog的验证平台架构284.3.1分层验证平台结构284.3.2自顶向下和自底向上294.3.3结果检查304.3.4覆盖率驱动验证执行314.3.5使用形式分析324.3.6产生可重用验证IP324.4本章小结33第五章MEA验证平台及流程34VI\n北京大学硕士学位论文目录5.1验证环境介绍345.1.1SC8800E芯片验证环境345.1.2模块验证平台的顶层结构365.2MEA模块验证平台的结构规划375.2.1验证方法与总体结构375.2.2仿真架构的设计385.3MEA模块验证平台的设计实现385.3.1待测功能列表385.3.2配置文件395.3.3数据文件405.3.4文件列表415.3.5编程指南415.3.6回归分析425.4基于SystemVerilog的总线功能模型425.5与模块相关的顶层验证435.5.1SystemVerilog描述的中断处理程序435.5.2模块间联合仿真445.6FPGA验证455.7后仿真455.8覆盖率分析465.8.1VCS工具CoverageMetrics简介465.8.2仿真脚本475.8.3覆盖率统计报告475.9本章小结48第六章结论与展望49参考文献51北京大学学位论文原创性声明和使用授权说明52致谢53VI\n北京大学硕士学位论文图目录图目录图2.1运动估计5图2.2双线性插值方式7图2.3DS算法的搜索方式9图2.4MEA的硬件架构10图3.1SoC设计及验证流程14图3.2高级分层的验证平台结构图19图4.1自动测试相对于直接测试有更高效率26图4.2分层验证平台结构29图4.3高层次验证平台单元更早验证事务级模型30图4.4具有通用接口协议验证IP重用到新项目33图5.1MEA验证平台总体结构37图5.2MEA模块仿真架构38VII\n北京大学硕士学位论文表目录表目录表5.1仿真控制脚本sim_design.pl的常用选项35表5.2运动估计加速器模块的待测功能列表39表5.3配置文件参数设置描述40表5.4验证平台文件列表41表5.5运动估计加速器模块代码覆盖率统计报告47VIII\n北京大学硕士学位论文正文视频信号处理系统中运动估计加速器模块基于SystemVerilog语言的验证第一章绪论1.1课题背景TD-SCDMA是时分-同步码分多址(time-division,synchronouscodedivisionmultipleaccess)的简称。这是我国自主提出并得到ITU(InternationalTelecommunicationUnion)及3GPP(3GenerationPartnershipProject)承认的第三代移动通信国际标准,也是百年电信史上的第一个中国标准。这一标准的提出,打破了国外发达国家对技术标准的垄断,为振兴通信行业,发展民族产业提供了契机[1]。TD-SCDMA是世界上第一个采用时分双工(TDD)方式和智能天线技术的公众陆地移动通信系统,也是唯一采用同步CDMA(SCDMA)技术和低码片速率(LCR)的第三代移动通信系统,它采用不需配对频率的TDD双工模式,以及FDMA/TDMA/CDMA相结合的多址接入方式,同时使用1.28Mc/s的低码片速率,扩频带宽为1.6MHz[2]。随着无线带宽和手机处理能力不断的增强,手机已经从纯粹的语音通信发展到多媒体、娱乐终端等功能的数字个人娱乐和通信终端,这些新功能和新服务对手机设计带来极大的挑战。本课题从视频信号处理系统模块实现等多个方面阐述这些变革对手机设计带来的新要求和对应的解决方案。 3\n北京大学硕士学位论文正文展讯通信有限公司是国内主要的手机核心芯片开发商,目前,其自主研发的GSM/GPRS手机核心芯片已成功产业化,产品已涵盖了从普通手机到高档多媒体手机市场。展讯的客户不仅包括国内主流手机制造商在内的40余家企业,同时其产品还远销东南亚等地。展讯还积极开展中国自己的第三代移动通信标准TD-SCDMA的手机核心芯片研发工作,于2004年6月成功开发了世界首颗TD-SCDMA手机基带处理芯片SC8800D,这是我国集成电路设计及无线通讯行业的重大突破。本课题结合展讯公司第二代TD-SCDMA/GSM双模基带系统芯片SC8800E项目,在项目设计开发过程中完成了对运动估计模块的验证工作。运动估计模块是展讯公司第二代TD-SCDMA手机基带系统芯片视频信号处理系统中的一个子块,用来预测下一帧图像以减少需传输的数据量、加快视频的播放速度,因而是影响视频信号处理质量的关键。1.1本文的主要工作及贡献验证一直是集成电路设计中非常关键的一环,特别在集成电路设计进入SoC(即片上系统:System-on-Chip)时代的今天,对于超大规模、包含大量嵌入式软件的SoC芯片而言,这一过程与以往相比需要耗费更多的时间和精力。目前在工业界,芯片的功能验证能力还远远落后于设计能力,往往成为大规模芯片设计的瓶颈。因此研究适用于SoC时代的先进高效的验证方法,对于提高验证效率、加速验证流程,以及加快产品面世步伐具有重要意义。本文的主要工作是对SC8800E芯片中MEA(即运动估计加速器:MotionEstimationAccelerator)模块进行全面的功能性验证。通过Verilog语言来完成该模块的RTL描述并实现其功能,通过归纳MEA模块的功能和模块设计接口,分析了当前IC设计业界主要应用的验证方法,并结合展讯公司的项目开发实际情况,采用SystemVerilog作为主要验证语言,为MEA算法的硬件实现模块搭建一个设计灵活且可配置的自动化验证平台,通过实时调用RM模型(即参考模型:ReferenceModel),即公司算法部门提供的C_model算法模型,实现运算参数的随机产生,输入数据的实时生成,以及输出数据的实时自动比对。该平台主要是采用SystemVerilog验证语言和Perl脚本语言,集成在展讯公司ASIC部门验证组的SC8800E芯片验证环境中,通用仿真工具VCS实现Verilog与SystemVerilog的联合仿真,从而验证了MEA在各种可能模式下的工作,验证中利用了SystemVerilog3\n北京大学硕士学位论文正文的面向对象特性和包括时序在内的强大功能,实现了将验证抽象层次提高到事务级(transactionlevel),提高了验证效率;还使用了SystemVerilog描述的中断处理程序,实现了系统级的模块验证。为了达到覆盖到全部的功能和绝大部分代码的目标,在详细分析了模块的功能以及于设计人员充分沟通之后,针对每一项功能设计与之对应的不同类型的验证case(即验证用例),验证结束后得出的覆盖率报告统计表明了验证的全面性。此外,为了更好的保证MEA模块的功能正确性,也在快速原型验证(rapidprototyping)方面也做了一定的工作。在芯片流片之前,为了保证时序无误,将版图布局布线后的寄生参数提取出来,反标到设计的网表(netlist)上进行后仿真(post-layoutsimulation)。借助先进的验证语言和EDA工具,借鉴新的验证方法,本文成功地采用上述验证平台和手段实现了对MEA模块的充分验证,并进行了覆盖率分析。1.1章节安排本文第2章对视频信号处理系统中运动估计加速器模块的算法及其硬件实现进行了介绍。第3章主要介绍目前IC业界占主流地位的SoC验证方法学理论,随后的第4章简要介绍了新的建模和仿真语言SystemVerilog。第5章详细阐述了基于芯片验证顶层环境的MEA验证平台及流程,包括芯片验证环境介绍、模块验证平台的结构规划及具体设计实现、基于SystemVerilog的验证和后仿真,并对MEA模块的代码覆盖率进行了一定的统计分析,给出了覆盖率统计报告。最后,第6章总结了本文的结论以及展望,随后是参考文献。3\n北京大学硕士学位论文正文第二章视频信号处理系统中运动估计加速器模块的算法及其硬件实现概述2.1运动估计简介手机基带芯片的视频信号处理系统在视频编码这个通路主要是处理从摄像头传过来的视频流。其中运动估计用来确定和消除存在于视频流中不同图片之间的时间冗余。当运动估计搜索是根据过去方向的图片,那么被编码的图片称为“P帧图片”,当搜索是根据过去和将来两种方向的图片,那么被编码的图片被称为“B帧图片”。运动估计是去除视频序列相邻帧之间冗余信息的有效方法,对整个视频编码效果有重要的影响。运动估计使用于帧间编码方式时,通过参考帧图像产生对被压缩图像的估计。运动估计的准确程度对帧间编码的压缩效果非常重要。如果估计作的好,那么被压缩图像与估计图像相减后只留下很小的值用于传输。运动估计以宏块为单位进行,计算被压缩图像与参考图像的对应位置上的宏块间的位置偏移。这种位置偏移是以运动向量来描述的,一个运动向量代表水平和垂直两个方向上的位移。运动估计时,P帧和B帧图像所使用的参考帧图像是不同的。P帧图像使用前面最近解码的I帧或P帧作参考图像,称为前向预测;而B帧图像使用两帧图像作为预测参考,称为双向预测,其中一个参考帧在显示顺序上先于编码帧(前向预测),另一帧在显示顺序上晚于编码帧(后向预测),B帧的参考帧在任何情况下都是I帧或P帧。2.2算法简介[3]在MPEG-4视频编码中,运动估计相当耗时,对编码的实时性影响很大,53\n北京大学硕士学位论文正文因此这里特别强调快速算法。2.2.1基于块的运动估计运动估计方法主要有像素递归法和块匹配法两大类,前者复杂度很高,实际中应用较少,后者则在H.263和MPEG中广泛采用。块匹配法即在参考帧中搜索一块与目前的宏块最相符的16x16的点。参考帧就是的当前帧的前一帧的重构帧。在参考帧的搜索范围内、以相当于当前宏块所在的位置为中心,搜索到的最接近匹配标准的16x16区域即被认为是“最优匹配”。图2.1运动估计由于计算简单、不需要乘法运算,因此绝对误差和(SumofAbsoluteDifference,SAD)准则是最被广泛采用的匹配准则。其中,Cij和Rij分别是当前帧和参考帧中的相同的点。2.2.2整像素的运动估计8x8块和16x16块的向量都由相同的搜索算法得出。8x8块的向量只比16x16块的向量多了很少一部分计算。53\n北京大学硕士学位论文正文在计算8x8块的向量时,作为比较用的SAD16(0,0)必须要先减去一个值:其中,NB=在当前宏块中的像素个数。拥有最小的SAD16的(x,y)的(x,y)点将作为16x16块整像素点的运动向量(MotionVector,MV)。相应的SAD是SAD16(x,y)。同样地,拥有最小的SAD8(x,y)的(x,y)点将分别作为4个8x8块的运动向量。宏块中8x8块的SAD:其中0指定验证的case名,即此次仿真跑的是哪一个case-frbm表明验证中使用了ARM侧的BFM总线模型描述-MEA表示所验证的为MEA模块,调用子模块脚本MEA.pl进行仿真前/后处理-wfsdb保存fsdb格式的波形-covMEA对MEA模块相关RTL文件进行该次仿真的覆盖率统计分析-covrpt与上一选项配合使用,在最后一个case回归完成后生成覆盖率统计报告-post表明此次仿真为后仿真,需编译网表文件-sdf与上一选项配合使用,表明使用的sdf文件53\n北京大学硕士学位论文正文5.1.2模块验证平台的顶层结构SC8800E芯片采用了在芯片整体验证环境(TestHarness)内通过集成各模块验证平台完成验证工作的验证平台结构。对于集成入TestHarness的各模块验证平台,其DUT(被测设计)都是整个芯片的设计代码(SC8800E_top),对模块的验证主要通过只编译以模块缩写关键字为前缀的各模块验证平台文件,仅对待测模块进行相应的激励驱动和响应观测来实现的。例如对MEA模块验证平台,由于在环境中运行仿真,所以DUT为整个芯片,但在模块验证平台中通过AMBA总线功能模型仅对MEA模块相关寄存器和memory(数据存储器)进行操作,关注的信号也仅为MEA模块相关的,而且仅开启MEA模块的clock(时钟)以及与MEA模块相关的系统时钟,其它不相关联的模块时钟保持系统上电时的default(默认)状态,通常为关。也就是说对模块验证平台的实现而言,可以认为其DUT仅为待测模块而非整个芯片。在芯片测试环境中采用芯片顶层作为DUT的好处是:所有模块的验证都调用了整个芯片的代码,更接近实际工作环境;同时可以充分验证模块间的互联,以及便于进行多模块的联合仿真;这样也利于各验证工程师对验证环境的顶层结构及总线模型等的复用。与直接采用各模块作为DUT的模块验证平台相比,对需要多人协作的系统规模达千万门级的手机芯片开发而言这无疑是一个更实用更有效的方法。但由于每次仿真时需要编译整个芯片的代码文件,在实际运用中往往出现仿真速度较慢,且易受服务器资源限制等问题。为此,环境中特别作了改进,将ARM和DSP侧的部分模块放空,即仅保留这些模块顶层接口的描述部分,实践证明这样的改进能使编译速度得到一定程度的提高。Testharness位于最顶层,与一般的验证平台相同,它将实例化DUT(SC8800E_top),以及使用SystemVerilog或Jeda语言构建的验证平台,并完成生成系统时钟、调用芯片初始化过程和Dump仿真波形等功能。如果是进行后仿真,调用sdf反标函数的动作也在此处完成。53\n北京大学硕士学位论文正文5.2MEA模块验证平台的结构规划5.2.1验证方法与总体结构结合本文第三章对SoC验证方法学的介绍,本验证平台是结合了基于周期的仿真器、基于事务的验证、快速原型系统验证、物理验证与分析及代码覆盖状况分析等技术一个层次化的验证平台。作为对算法模块的功能性验证,如果要用一句话概括本验证平台的基本任务,就是对于同样的配置和输入文件,通过仿真验证保证相同激励的情况下算法部门提供的C_model参考模型和ASIC部门RTL电路设计具有一致的输出结果。图5.1是本验证平台的总体结构示意图,体现出了该平台是混合了SystemVerilog、Verilog、C_model和Perl脚本等多种语言的仿真平台。图5.1MEA验证平台总体结构图中的TestFile即验证用例,主要包含MEA模块相关的算法参数和控制参数的配置,详见本文5.3.3小节;DataFile主要是MEA模块相关的数据文件,详见本5.3.4小节。BFM采用的是SystemVerilog描述的AMBA总线模型结构,是验证平台与待测设计(DUT)间的接口,在本文5.4小节中有详细介绍。DUT的信号和相关数据监测与比对主要由Monitor完成。RM是算法部门提供的用C写的参考模型,与DUT具有相同的算法结构并能实现同样的功能。整个仿真过程是在perl脚本控制下进行的,其中主要包括上一小节中介绍的环境控制脚本(sim_design.pl),以及模块仿真控制脚本(MEA.pl),该脚本在下一小节将进行详细介绍。53\n北京大学硕士学位论文正文5.2.2仿真架构的设计本验证平台对模块的验证是嵌入SC8800E芯片验证环境中实现的,因而是系统化的模块验证,所设计的仿真架构实现如图5.2所示。其中,MEA模块仿真脚本(MEA.pl)主要用于生成平台所需的部分随机参数,调用C_model参考模型,以及提供C_model参考模型和SystemVerilog验证平台间必要的文件格式转换。它与环境中的仿真控制脚本(sim_design.pl)相结合,实现运动估计加速器模块整个仿真验证过程的控制与实现。图5.2MEA模块仿真架构5.3MEA模块验证平台的设计实现5.3.1待测功能列表搭建模块验证平台的关键是全面了解待测模块的设计及其待测功能,并从验证角度列出详细的FeatureList(功能列表),这是对模块进行充分验证的基础。53\n北京大学硕士学位论文正文表5.2运动估计加速器模块的待测功能列表1支持基于块和宏块的运动估计2支持4个8x8块的MV预估3支持最大帧的尺寸为496x4964.1对CIF格式的图像来说,Y方向的最大搜索范围为一帧范围内的-15到+15行4.2对QCIF格式的图像来说,Y方向的最大搜索范围为一帧范围内的-15到+15行5.1支持钻石搜索(DS)算法5.2支持最小邻近搜索(NNS)算法5.3支持半像素搜索6支持两种工作模式:运动估计和匹配参考数据输出7运动估计处理可以由软件自动控制5.3.2配置文件配置文件(TestFile)的作用是提供模块验证所需的各个参数配置。一个TestFile对应一个测试用例(TestCase),设计不同的case只修改TestFile即可,模块验证平台无需改动。这样的文件激励作为验证分层结构的最顶层,与Test层相对应,很好地体现了验证环境的复用性。在SC8800E芯片验证环境中,sim_design.pl的其中一个功能是将于各个模块对应的按统一结构和命名规则存放的TestFile(default.cfg)拆分到当前的工作目录,并按其首行所示的模块名重新命名该文件,供模块预处理脚本或验证平台使用。对MEA验证平台,default.cfg文件被拆分为MEA_cfg.txt文件,再由MEA.pl进行适用于C_model模型和SystemVerilog验证平台使用的文件格式转换和部分参数的随机生成,如表5.3所示。下面将详细介绍TestFile中的文件参数设计。MEA_cfg.txt文件主要是经MEA.pl转换后为C_model模型所用,其参数设置如下:53\n北京大学硕士学位论文正文表5.3配置文件参数设置描述编号参数名详细描述1data_format设定视频图像的格式(CIForQCIF)2frm_row_size设定每一帧的行数3frm_col_size设定每一帧的列数4pred_mv_source设定predictedMV的来源5search_rangex设定x方向的搜索范围6search_rangey设定y方向的搜索范围7mea_sad_thres设定最大SAD值8max_search_step设定最大的搜索步数9auto_en设定是否需要流水线运作10prediction_en设定是否需要预设MV11mea_test设定是否需要只算一个点的SAD(测试用)12mode_4mv_en设定是否需要计算每个8x8块的MV采用该函数生成了大量的参数,分别对应各宏块(MacroBlock,MB)的各项参数,具体名称此处不一一列出。这些参数加上表5.3中包含的参数,将通过脚本MEA.pl整合入同一个文件MEA.cfg,供验证平台实现MEA模块寄存器的相应配置。5.3.3数据文件本平台涉及到的数据文件主要是输入输出数据及存入RAM中各像素数据,为了便于C_model文件模型和验证平台的文件共享,在与系统部门的沟通后规定了统一的文件名及数据存放结构,即对所有的数据文件都按每行32位16进制数据的格式存放。由于这些都是内部数据文件,此处不进行详细描述。53\n北京大学硕士学位论文正文5.3.4文件列表本小节列出MEA验证平台的相关代码,其中未列出C_model模型代码,以及与.cpp文件对应的.sv头文件。表5.4验证平台文件列表类型存放路径文件名TestFile../VastData/SC8800E/vec/tc_MEA*SystemVerilogMonitor../SC8800E/env/SC8800E_top/sysv/monitorMEA_monitor.svSingleTester../SC8800E/env/SC8800E_top/sysv/testertst_MEA_reg_1.svMEA_cfg_1.svMEA_frbm_2.svMEA_chk_2.svSystemVerilogUtilites../SC8800E/env/SC8800E_top/sysv/utilsMEA_cfg_1.svMEA_frbm_2.svMEA_chk_2.svMEA_test_3.sv../SC8800E/env/SC8800E_top/sysv/includeMEA_port.hMEA_defines.h5.3.5编程指南本验证平台的搭建可以认为是从一个软件工程师的角度进行的,从产生激励到获取输出响应的整个过程都与芯片实际使用时软件的编程流程相同。激励驱动流程如下:1.将所有寄存器初始化。2.将存放中间数据的memory清零。3.配置MEA模块的各项系数。53\n北京大学硕士学位论文正文4.启动MEA。5.3.6回归分析验证是一个与设计交互的过程,各个模块发现问题后都会及时通过修改设计来解决,而设计一旦修改后原则上所有的case都需要重新验证。这就要求验证平台能够提供快速的验证及回归(Regression)手段。运动估计的验证平台由于嵌入SC8800E芯片验证环境中,故能很方便地通过简单的可执行脚本语句实现大量case连续仿真的自动进行,不需要人工干预,这对后期的回归工作,特别是进行代码覆盖率统计的全部case回归是非常方便的。下面是进行回归分析时的一个仿真脚本简单示例。sim_design.pl–tcMEA_1_1–frbm_full–frbm–fsdb;sim_design.pl–tcMEA_2_1–frbm_full–frbm–fsdb;….5.4基于SystemVerilog的总线功能模型通常对于模块化的验证平台,其激励驱动和输出探测都是直接通过模块接口进行的,与系统中的其他模块无关。本验证平台虽然只是针对运动估计加速器模块的验证,但由于嵌入了SC8800E芯片顶层验证环境中,故可以看作是系统级的模块验证。VSP系统具有符合标准AMBA总线协议的AHBSlave接口,并通过AHBM桥与ARM相连接,因此要访问MEA模块内部的寄存器和存储器,或系统中其它相关模块的寄存器,必须通过总线功能模型完成。SystemVerilog将并发、定时时间和数据类型等重要概念引入C++,从而扩展了Verilog的功能,使其适用于对硬件进行系统级建模描述。本验证平台采用了SystemVerilog描述的总线功能模型(BusFunctionalModel,BFM53\n北京大学硕士学位论文正文)来模拟标准AMBA总线协议,使其能像运行在处理器上的软件一样,通过BFM来访问相关的地址空间。由于BFM的封装性,总线操作被简化为过程调用,使验证可以在更高抽象层次进行,避免了繁琐的底层信号赋值等。BFM代码的可重用性和模块化结构使其可以封装成IP,既可以适用于多个模块的验证平台,也能在不同的项目中复用,对提高验证效率、缩短产品开发时间具有重要的意义。该总线功能模型最初是基于ARM公司提供的FRBM(FileReaderBusModel)模型而来。FRBM模型能方便快速的模拟AHB行为,但它不是标准的Verilog程序,使用起来也较为繁琐。后来经过展讯ASIC组工程师的修改成为纯Verilog代码,使其能在仿真时被实例化,从而代替ARM核,不仅可以方便的嵌入环境,还能通过简单的Verilogtask调用方便地实现了各种类型的总线操作。SC8800E项目中,由于部分模块采用SystemVerilog描述,故在此基础上又开发了SystemVerilog描述的FRBM模型,将总线操作封装为函数,方便SystemVerilog描述的验证平台使用。5.5与模块相关的顶层验证5.5.1SystemVerilog描述的中断处理程序在模块验证平台中,对中断信号的检测通常是模块级别的,即观测该模块接口处输出的中断信号。由于本验证平台嵌入了芯片验证环境,DUT为整个芯片代码,即可以认为是在系统级的模块验证,此时只关注模块级中断显然是不够的。为了更接近系统工作的真实情况,平台中需要探测经ARM核处理后的中断响应。这一处理过程是通过其内部的中断处理单元来实现的,该模块的输入为ARM侧系统中的数十个中断源。鉴于SC8800E芯片验证是一个运用了多种语言的混合仿真环境,其中主要是位于ARM侧的几个模块采用了SystemVerilog作为验证语言,本文作者为这些模块编写了一个SystemVerilog描述的通用中断处理程序模板,主要进行的工作是通过对中断处理器的配置,将模块中断映射到中断处理器的几个对应输出端口,即处理后的中断,用于在各模块验证平台中替代其模块级的中断进行检测。该程序仅供单个模块使用,故未讨论多个中断源同时出现的情况。本模块通过设置与SystemVerilog描述的总线模型(frbm)相同的模板参数,将各子模块验证平台中已有对象frbm的地址作为参数传递给函数,从而实现模板内利用frbm进行读写操作,即能对中断控制模块进行配置。53\n北京大学硕士学位论文正文各模块验证平台中对其的具体使用过程如下:1.实例化arm_int_proc。2.配置ARM侧的中断控制器。3.判断arm_int_proc.int_proc_done相应位是否为1,如是则进行后续操作并清模块中断。5.检测模块内部中断是否被清掉,例:arm_int_proc.step_2(arm_int);再判断arm_int_proc.arm_proc_done对应位是否为0,是则中断程序完成。5.5.2模块间联合仿真MEA模块除了具有标准AMBA总线接口外,还与VSP系统其他模块之间有同步的通信接口,在模块验证平台中,这些接口激励都是由平台自己模拟产生并施加的,并非系统工作时的真实情况。且系统集成工程师也可能在顶层互连时出错,此时为了能使验证更加真实充分,有必要搭建模块间的联合仿真平台,对各模块间的互连情况和接口时序正确性进行验证。作为千万门级的手机芯片,在现有的设计流程下无法对整个芯片系统建立一个统一的系统级验证平台。SC8800E芯片中针对视频处理系统(VSP)开发了一个简化的联合仿真平台,主要用于VSP的系统级验证。VSP系统验证的主要步骤描述如下:1.初始化过程,根据需要配置各个模块的相关寄存器。2.调用C_model参考模型。3.VSP系统进行事件调度,生成相关的控制信号,调度各个子模块并为其施加激励。4.模拟中断处理过程,这一过程将触发输出数据的读取和比对工作。该平台是用SystemVerilog描述的独立于各模块验证平台的联合仿真平台,由于涉及的几个模块都采用了基于SystemVerilog的验证平台,故通过对其功能函数等部分的复用能使联合仿真平台更快速地搭建起来。与单个模块的验证平台相比,多模块的参与及软硬件的协同使得仿真过程变得更加复杂,也更接近系统工作时的真实情况。53\n北京大学硕士学位论文正文5.6FPGA验证SC8800E芯片运动估计加速器模块除了进行以仿真为主的验证以外,还运用了快速原型验证技术进行有力补充。一个原型验证系统主要由电脑主机及开发软件、测试电路板、示波器等组成,它是硬件加速的验证,将设计中的一部分或者全部映射到可编程逻辑,通常是FPGA(即现场可编程门阵列:FieldProgrammableGateArray)中,运用真实的处理器核来驱动待测模块。FPGA验证工程师编写简单的驱动程序,编译成二进制代码后通过某种计算机外部总线(如串口)下载到测试板进行调试。在大规模SoC芯片中,FPGA验证并不能代替仿真,通常作为辅助手段进行,因为它容易受到芯片规模、复杂的时钟设计以及库单元等方面的限制,且调试时需要从综合后的网表中抓取信号,每重新抓取一次都需要重新综合配置,对于大的设计已无法体现其速度优势。VSP模块的FPGA验证主要挑选了20个case进行调试,case的选取主要是考虑到各种不同的工作模式,全部在调试板上通过验证。5.7后仿真由于RTL级的仿真主要是验证功能正确性,并未考虑连线延时和寄生效应等因素对时序的影响,故芯片流片前还需要进行后仿真。即将版图布局布线后的寄生参数提取出来,反标到经过综合工具生成的网表上进行仿真。系统仿真控制脚本sim_design.pl为后仿真设计了两个开关选项-sdfmax和-sdfmin,分别对两种情况进行了验证:max表示对最坏情况的验证,即芯片工作在低电源电压且高温和工艺偏差最大的情况下,主要验证建立时间(setuptime)是否满足时序要求;min表示对最好情况的验证,即高电源电压且低温和工艺偏差最小,主要验证保持时间(holdtime)是否满足时序要求。后仿真的结果,特别是对那些在RTL设计过程中时序余量比较小的数据通路,将影响设计人员甚至整个工程团队对芯片流片成功的信心,因而在芯片开发过程中往往是个不可或缺的环节。由于网表文件非常庞大,运动估计加速器模块的后仿真只选取了一个typical53\n北京大学硕士学位论文正文case(即典型用例),分别对上述两种情况进行了验证,结论是时序满足要求。仿真脚本示例如下:sim_design.pl–tcMEA_3_3–frbm_full–frbm–fsdb–post–sdfmin;sim_design.pl–tcMEA_3_3–frbm_full–frbm–fsdb–post–sdfmax;5.8覆盖率分析模块的验证是否满足了预期要求,仅仅有各个case是否通过的信息是不够的,我们需要对更为量化的标准,即代码覆盖率进行统计。运动估计加速器模块的代码覆盖率是通过VCS自带的代码覆盖率分析工具CoverageMetrics进行统计分析的。5.8.1VCS工具CoverageMetrics简介VCS工具自带的CoverageMetric是一个功能强大的代码覆盖率分析工具,它能对仿真过程进行监测和评估,并可以通过指定对RTL代码中的哪一部分进行统计,即不关注那些无需进行覆盖率统计的代码(如memory的bist模块部分),从而提高验证效率。除此之外,在验证平台及设计代码已经基本稳定并进入全部case的回归阶段,该工具可以记录并保存每次仿真的相关信息,并在全部case仿真完成后将这些中间数据对代码覆盖率的贡献累加起来,生成一个最终的代码覆盖率统计报告。该工具还能自动将没有覆盖到的行标示出来,方便验证人员和设计人员进行分析和改进。此外,它还支持图形界面的使用。CoverageMetrcs工具可以提供对如下几种覆盖率指标的统计[16]:lLineorstatementcoverage:表明仿真过程中DUT的代码中行和语句的覆盖情况,即区分出哪些得到执行,哪些没有执行。lPath/Conditioncoverage:表明DUT代码中数据通路和条件语句的覆盖情况。lTogglecoverage:表明DUT代码中信号的0到1和1到0的翻转情况。lFSMcoverage:表明DUT内状态机中各个状态的覆盖情况。lBranchcoverage:表明仿真过程中DUT代码中的分支覆盖情况。Verilog中的分支包括“if-else语句”、“case语句”和三元操作符“?:”。53\n北京大学硕士学位论文正文5.8.2仿真脚本此处给出进行回归分析和代码覆盖率统计的一个仿真脚本示例:sim_design.pl–tcMEA_1–frbm_full–frbm–fsdb–covMEA;sim_design.pl–tcMEA_2–frbm_full–frbm–fsdb–covMEA;…..sim_design.pl–tcMEA_3–frbm_full–frbm–fsdb–covMEA-covrpt;5.8.3覆盖率统计报告运动估计各子模块的代码统计报告如下表所示。表5.5运动估计加速器模块代码覆盖率统计报告Sub-Modulelinepathconditionbranchtogglemea_top100%100%100%100%83.14%mst_clk_gate100%————100%87.62%mea_slave100%100%100%100%89.53%mea_ctl99.83%93.05%100%100%86.51%mem_ctl99.32%95.91%100%100%87.22%bilinear99.28%92.06%100%98.76%88.17%linear_x99.71%94.32%100%94.02%79.84%linear_y97.96%91.41%100%99.68%81.09%pe_array99.67%94.59%100%95.93%88.59%main_master99.82%88.76%100%99.43%92.76%uv_master92.43%93.86%100%92.21%86.13%intra_sad93.84%95.72%100%93.74%88.27%经过与设计人员的核对,未覆盖到的行主要是case语句中的default分支以及状态机设计中预留的实际中无法触及的情况。这份报告仅为一个参考,实际情况下要得到100%的覆盖率是很难的,也是不现实的。本课题已在展讯公司通过了模块验证方面的评审流程,结论认为其功能覆盖率是足够全面的。53\n北京大学硕士学位论文正文5.9本章小结作为本文的核心内容,本章节在前述章节的基础上详尽的描述了基于芯片顶层验证环境的运动估计加速器模块验证平台的开发工作。首先在第一小节中SC8800E芯片的验证环境进行了介绍,包括模块验证平台在环境中的顶层结构介绍,这些内容主要来自于ASIC验证组提供的芯片验证计划,它是根据公司的实际情况和具体项目的需求所制定出来的,并经过了实践检验。接下来在第二小节中概述了运动估计验证平台的实现方法和总体结构,并给出了仿真架构设计的示意图,体现了其仿真的流程实现。接下来对运动估计加速器模块验证平台的开发进行了详细介绍。先从验证角度列出了模块待测功能,在此基础上采用SystemVerilog作为验证语言,给出了平台的实现框架设计示意图,并对所定义的各个类的功能和层次关系进行了描述。此外,配置文件的参数设计和数据文件的统一格式要求也是实现这一可复用的自动化验证平台的关键。第三小节中还给出了验证平台相关代码的文件列表,以及从软件工程师角度提供的编程指南。除此之外,由于验证是一个与设计反复进行交互的过程,当验证平台和电路设计代码基本稳定之后,还需要进行回归分析。该验证平台所采用的基于SystemVerilog的总线事务模型及其提供的几个主要功能函数在第四节中进行了描述。由于本验证平台嵌入了芯片验证环境,可以方便地进行顶层相关的验证,在第五小节中介绍了相关内容,包括用SystemVerilog描述的中断处理程序,以及VSP系统所有模块的联合仿真平台。除了基于仿真的验证,MEA模块还采用了FPGA验证进行辅助,并在布局布线前进行了后仿真以保证设计时序在更接近实际情况时还能正确实现。本章的最后一个小节,主要是利用VCS工具CoverageMetrics对运动估计加速器模块进行的多种类型的代码覆盖率统计分析,并给出了该工具所生成的覆盖率百分比数据。本验证平台经过展讯公司对模块验证方面的评审流程,结论是对该模块的验证是足够充分的。SC8800E芯片目前已进入流片后的芯片测试阶段,即对该模块的验证是siliconproved的。53\n北京大学硕士学位论文正文第六章结论与展望在展讯通信公司自行研制开发的第二代TD-SCDMA/GSM双模手机基带系统芯片SC8800E中,将其用更为优化的算法,更少的memory实现硬件电路进行实现,本课题主要着眼于对这一芯片中运动估计加速器的验证,作为整个芯片项目开发的一部分,顺利完成了任务,经过代码覆盖率统计分析认为达到了预期的目标,并通过了公司内部的相关评审流程。对运动估计加速器模块的验证主要是基于仿真的功能验证,除此之外,还进行了快速原型验证以增强了设计人员及工程团队的信心,布局布线以后还进行了更接近实际情况的后仿真来确保时序满足要求。目前,该芯片已经流片成功,在经过后期的测试和软件平台开发等工作后将作为展讯公司的新产品面世。由于验证语言与软件开发语言类似,不需要考虑可综合性,因而其运用显得更为灵活,这就产生了大量的仿真技术和方法,以及各种专用的验证方法。如何根据实际情况基于一种规范的验证方法学进行策略的规划和技术的选用,对保证设计的正确性,缩短产品开发时间,提高产品质量具有非常重要的意义。本文之所以选用SystemVerilog作为验证语言,一方面是由于展讯公司ASIC部门原本采用的Jeda验证语言在实际运用中已经越来越无法满足SoC验证的要求,希望通过对SC8800E项目中某些模块,主要是新增模块的验证进行试验性的探索,以便于日后将旧有的验证平台进行转换,使整个验证工作更加科学规范;另一方面,出于对新技术、新的方法学内容的关注,加上EDA工具供应商的大力宣传和技术支持,使得对SystemVerilog语言的研究变得必要。53\n北京大学硕士学位论文正文通过本文的工作,证明了基于这种结构和方法的验证具有功能强大、配置灵活、效率高等优点。但个人认为,SystemVerilog的最大优势在于其强大的系统级建模能力,这一特点在采用该语言完成整个系统规划和细分、RTL设计及验证的流程中,才能更充分地体现出来,但由于硬件设计人员长期以来一直使用Verilog硬件描述语言,要实现这一流程就目前公司的实际情况而言几乎可以认为是不现实的。同时,由于受到项目开发的实际情况限制,本文并没有将SystemVerilog所有的验证标准库运用到验证平台中,虽然也顺利完成了验证任务,但要更灵活地使用这门语言,最大限度地配合EDA工具的支持发挥出语言类库以及验证方法学的优势,还有待在后续的项目开发中进行探索和研究。此外,本文5.5.2小节中所介绍的联合仿真平台,如果能够在后续项目的开发过程中进行深入研究和不断完善,使其能更真实有效地模拟整个视频信号处理系统的仿真过程,更充分地验证各模块间的调度关系、时序接口以及数据通路,并进行接口数据的观测和比对,对芯片的设计验证而言必将具有重大的意义。53\n北京大学硕士学位论文参考文献参考文献[1]李小文等。TD-SCDMA——第三代移动通信系统、信令及实现,人民邮电出版社,2003[2]谢显中。TD-SCDMA第三代移动通信系统技术与实现,电子工业出版社,2005[3]葛翔。SC8800EMEADesignSpec.,展讯通信有限公司内部文档[4]魏少军。SOC设计方法学,电子产品世界,2001,06[5]PrakashRashinkar,PeterPaterson,LeenaSingh.System-on-a-chipVerificationMethodologyandtechniques.KluwerAcademicPublishers,2002[6]曾繁泰,陈美金。EDA工程方法学,清华大学出版社[7]DavidDempsterMichaelStuart.VerificationMethologyMannualTechniquesforVerifyingHDLDesigns.TeamworkInternational,2002[8]徐英伟,刘佳。SOC功能验证的特点和方法,微处理机,2006,02[9]孟维佳,杨军。基于受限随机矢量生成的功能验证,电子器件,2005,01[10]ReferenceVerificationMethodologyUserGuide,version8.6.4,Synopsys,Inc.April2005[11]SystemVerilog3.1aLanguageReferenceManual,www.systemverilog.org[12]IEEEStd.1800-2005SystemVerilog,IEEE,2005[13]JanickBergeron,WritingTestbenchesUsingSystemVerilog,Springer,2006[14]VerificationMethodologyManualForSystemVerilog,Synopsys,Inc.2005[15]VCSMXuserguide,Synopsys,Inc.200553\n北京大学硕士学位论文北京大学学位论文原创性声明和使用授权说明北京大学学位论文原创性声明和使用授权说明原创性声明本人郑重声明:所呈交的学位论文,是本人在导师的指导下,独立进行研究工作所取得的成果。除文中已经注明引用的内容外,本论文不含任何其他个人或集体已经发表或撰写过的作品或成果。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本声明的法律结果由本人承担。论文作者签名:日期:年月日学位论文使用授权说明本人完全了解北京大学关于收集、保存、使用学位论文的规定,即:l按照学校要求提交学位论文的印刷本和电子版本;l学校有权保存学位论文的印刷本和电子版,并提供目录检索与阅览服务,在校园网上提供服务;l学校可以采用影印、缩印、数字化或其它复制手段保存论文;l因某种特殊原因需要延迟发布学位论文电子版,授权学校□一年/□两年/□三年以后,在校园网上全文发布。(保密论文在解密后遵守此规定)论文作者签名:导师签名:日期:年月日53\n北京大学硕士学位论文致谢致谢经过近三年的学习,我硕士阶段的学习已接近尾声。值此毕业论文完成之际,谨向给予我指导、关心和帮助的老师、同学、朋友、亲人表示最衷心的感谢。首先要感谢的是我的导师王新安副教授,感谢他在三年的研究生生涯中对我无私的帮助和指导。虽然三年中我有一半的时间都在上海实习,但是王老师还是时常通过邮件和电话与我交流、对我指导。还要感谢陈红英老师、连志斌老师、封君老师,以及在北大深圳SoC实验室曾经一起做项目的各位同学、师兄、师姐,在实验室的半年多的时间让我受益匪浅。其次要感谢展讯通信有限公司给予了我参加公司手机芯片验证的机会,给我的学习和工作提供了一个很好的平台。感谢我所工作的ASIC组所有成员的支持和帮助,没有他们的指导和建议,我的研究和工作将无法顺利完成。还要感谢系统部门、算法部门、平台部门的各位,工作中遇到跨部门的问题时经常要麻烦他们。还有Synopsys公司的支持工程师王磊,SystemVerilog是一种很新的语言,所以在运用该语言验证的过程中经常遇到一些问题,部门内的同事解决不了时就要请教他,非常感谢他的帮助。感谢各位任课老师在学习中对我的帮助和指导。我的本科学的并不是微电子,没有你们的指导,我进不了微电子的大门。最后,感谢关心和爱护我的父母和家人,是他们为我创造了学习深造的良好机会,同时给我物质和精神上的极大支持和鼓励。53

相关文档