视频信号处理系统中运动估计加速器模块基于SystemVeri_第1页
视频信号处理系统中运动估计加速器模块基于SystemVeri_第2页
视频信号处理系统中运动估计加速器模块基于SystemVeri_第3页
视频信号处理系统中运动估计加速器模块基于SystemVeri_第4页
视频信号处理系统中运动估计加速器模块基于SystemVeri_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、硕士研究生学位论文题目:视频信号处理系统中运动估计加速器模块基于SystemVerilog语言的验证姓 名: 方芳 学 号: 10548399 院 系: 信息科学技术学院 专 业: 电子与通信工程 研究方向: SoC设计 导师姓名: 王新安 副教授 二00八 年 六 月北京大学硕士学位论文 版权声明版权声明任何收存和保管本论文各种版本的单位和个人,未经本论文作者同意,不得将本论文转借他人,亦不得随意复制、抄录、拍照或以任何方式传播。否则,引起有碍作者著作权之问题,将可能承担法律责任。北京大学硕士学位论文 摘要摘要本文对视频信号处理系统中运动估计加速器模块的功能实现算法进行了一定程度的分析与研究

2、,通过分析当今业界主要应用的验证技术,结合公司的实际情况选用了先进的验证方法,在EDA工具的支持下对运动估计加速器模块进行了全面的功能性验证。文中还详细剖析了芯片验证环境,这是一个运用SystemVerilog语言的仿真环境,利用总线功能模型(BFM)实现总线操作,使得验证在事务级(transaction level)进行,大大提高了验证的效率及可复用性。本文针对运动估计加速器模块设计了足够的验证case,覆盖了模块的各项功能,并运用SystemVerilog搭建了高效的验证平台,通过Perl脚本对整个验证架构中进行仿真管理与控制,实现了对C_model的实时调用、输入参数的随机生成以及输出数

3、据的实时比对等自动化功能。此外还与其他验证工程师合作搭建了视频信号处理系统的联合仿真平台,该平台实现了视频信号处理中所有模块的系统级验证。此外,对视频信号处理系统还进行了FPGA验证,作为对基于仿真的验证的有效补充。网表(netlist)设计完成以后还进行了post-layout simulation(后仿真),对芯片设计部门而言是流片前签发的最后一个环节。本文还通过先进的EDA工具及芯片仿真环境的支持,对运动估计加速器模块代码覆盖率进行了统计分析。对运动估计加速器模块的验证通过了展讯公司模块验证的评审流程,被认为是充分的。实践表明,本文所采用的验证方法和结构是适合SC8800E芯片项目开发的

4、,具有灵活性好、效率高、可复用性强等优点。关键词:系统级芯片,SystemVerilog,SystemVerilog验证方法学I北京大学硕士学位论文 AbstractAbstractSystemVerilog based verification of MEA module in video signal processing systemFang Fang (Electronic and communication)Directed by Wang XinanIn this paper, the MEA module algorithm is analyzed and researched

5、to some extent. In addition,through studying the popular verification techniques in IC industry,the whole functional verification for MEA module in TD-SCDMA/GSM chip SC8800E is completed, with the use of advanced verification methodology and the support of EDA tools. The verification environment pla

6、tform in the chip level for MEA is also detailed in this paper. This is a multi-language simulation environment using Verilog, SystemVerilog, etc. The bus function is implemented by using the reusable BFM (Bus Functional Model), so that the verification work can carry out at the higher level more ef

7、ficiently.Also, in this paper, there are enough test cases designed for MEA module verification, which aim at covering all the features of the design. The verification platform is described using SystemVerilog, and Perl script is used to control the whole simulation in the verification structure, so

8、 that reference model in C_model can be called on the fly, the input parameters can be generated randomly and the output data can compared with the expected data automatically. Besides, with the other verification engineers team work, a simulation platform for image signal processing system has been

9、 built up. This platform implemented the system level verification of all ISP modules. Moreover, the verification of MEA module is also implemented with FPGA verification as an effective supplementary of simulation-based verification. After the design of netlist, post-layout simulation is also done,

10、 which is the last sign-off step before taping the chip out for chip design department.With the support of advanced EDA tools and chip level verification environment, in this paper, the code coverage analysis and statistic job for MEA module are also done. The MEA module verification has passed the

11、quality review flow for module verification in Spreadtrum Communications, Inc. All those indicate that the verification method and structure described in this paper are highly flexible,efficient,and reusable,thereby suitable for application in SC8800E chip project development.Keywords: SoC (System-o

12、n-Chip), SystemVerilog, VMM for SystemVerilog (Verification Methodology Manual for SystemVerilog)III北京大学硕士学位论文 目录目录摘要IAbstractII目录IV图目录VIII表目录IX第一章 绪论11.1课题背景11.2本文的主要工作及贡献21.3章节安排3第二章 视频信号处理系统中运动估计加速器模块的算法及其硬件实现概述42.1运动估计简介42.2算法简介34基于块的运动估计5整像素的运动估计5模式选择6半像素搜索6预测模式选择7快速搜索算法72.3硬件实现102.4本章小结11第三章 S

13、oC验证方法学简介123.1 SoC设计挑战12系统设计方法412深亚微米效应13集成133.2 SoC验证流程133.3 常用验证技术分类5 615静态技术15仿真技术16硬件加速和原型验证163.4 验证平台策略173.5 本章小结19第四章 SystemVerilog语言简介214.1 SystemVerilog的特征21接口(interface)22全局声明和语句22时间单位和精度22抽象数据类型23断言244.2 SystemVerilog验证方法学介绍1324验证面临挑战24验证技术25产生带约束随机仿真25覆盖率驱动验证26断言274.3 基于SystemVerilog的验证平台

14、架构28分层验证平台结构28自顶向下和自底向上29结果检查30覆盖率驱动验证执行31使用形式分析32产生可重用验证IP324.4 本章小结33第五章 MEA验证平台及流程345.1 验证环境介绍34芯片验证环境34模块验证平台的顶层结构365.2 MEA模块验证平台的结构规划37验证方法与总体结构37仿真架构的设计385.3 MEA模块验证平台的设计实现38待测功能列表38配置文件39数据文件40文件列表41编程指南41回归分析425.4 基于SystemVerilog的总线功能模型425.5 与模块相关的顶层验证43描述的中断处理程序43模块间联合仿真445.6 FPGA验证455.7 后仿

15、真455.8 覆盖率分析46工具Coverage Metrics简介46仿真脚本47覆盖率统计报告475.9 本章小结48第六章 结论与展望49参考文献51北京大学学位论文原创性声明和使用授权说明52致谢53VI北京大学硕士学位论文 图目录图目录图2.1 运动估计5图2.2 双线性插值方式7图2.3 DS算法的搜索方式9图2.4 MEA的硬件架构10图3.1 SoC设计及验证流程14图3.2 高级分层的验证平台结构图19图4.1 自动测试相对于直接测试有更高效率26图4.2 分层验证平台结构29图4.3 高层次验证平台单元更早验证事务级模型30图4.4 具有通用接口协议验证IP重用到新项目33

16、图5.1 MEA验证平台总体结构37图5.2 MEA模块仿真架构38VII北京大学硕士学位论文 表目录表目录表5.1 仿真控制脚本sim_design.pl的常用选项35表5.2 运动估计加速器模块的待测功能列表39表5.3 配置文件参数设置描述40表5.4 验证平台文件列表41表5.5 运动估计加速器模块代码覆盖率统计报告47VIII 北京大学硕士学位论文 正文视频信号处理系统中运动估计加速器模块基于SystemVerilog语言的验证第一章 绪论1.1 课题背景TD-SCDMA是时分同步码分多址(time-division, synchronous code division multip

17、le access)的简称。这是我国自主提出并得到ITU(International Telecommunication Union)及3GPP(3 Generation Partnership Project)承认的第三代移动通信国际标准,也是百年电信史上的第一个中国标准。这一标准的提出,打破了国外发达国家对技术标准的垄断,为振兴通信行业,发展民族产业提供了契机1。TD-SCDMA是世界上第一个采用时分双工(TDD)方式和智能天线技术的公众陆地移动通信系统,也是唯一采用同步CDMA(SCDMA)技术和低码片速率(LCR)的第三代移动通信系统,它采用不需配对频率的TDD双工模式,以及FDMA/

18、TDMA/CDMA相结合的多址接入方式,同时使用1.28Mc/s的低码片速率,扩频带宽为1.6MHz2。随着无线带宽和手机处理能力不断的增强,手机已经从纯粹的语音通信发展到多媒体、娱乐终端等功能的数字个人娱乐和通信终端,这些新功能和新服务对手机设计带来极大的挑战。本课题从视频信号处理系统模块实现等多个方面阐述这些变革对手机设计带来的新要求和对应的解决方案。 展讯通信有限公司是国内主要的手机核心芯片开发商,目前,其自主研发的GSM/GPRS手机核心芯片已成功产业化,产品已涵盖了从普通手机到高档多媒体手机市场。展讯的客户不仅包括国内主流手机制造商在内的40余家企业,同时其产品还远销东南亚

19、等地。展讯还积极开展中国自己的第三代移动通信标准 TD-SCDMA 的手机核心芯片研发工作,于2004年6月成功开发了世界首颗TD-SCDMA手机基带处理芯片SC8800D,这是我国集成电路设计及无线通讯行业的重大突破。本课题结合展讯公司第二代TD-SCDMA/GSM双模基带系统芯片SC8800E项目,在项目设计开发过程中完成了对运动估计模块的验证工作。运动估计模块是展讯公司第二代TD-SCDMA手机基带系统芯片视频信号处理系统中的一个子块,用来预测下一帧图像以减少需传输的数据量、加快视频的播放速度,因而是影响视频信号处理质量的关键。1.2 本文的主要工作及贡献验证一直是集成电路设计中非常关键

20、的一环,特别在集成电路设计进入SoC(即片上系统:System-on-Chip)时代的今天,对于超大规模、包含大量嵌入式软件的SoC芯片而言,这一过程与以往相比需要耗费更多的时间和精力。目前在工业界,芯片的功能验证能力还远远落后于设计能力,往往成为大规模芯片设计的瓶颈。因此研究适用于SoC时代的先进高效的验证方法,对于提高验证效率、加速验证流程,以及加快产品面世步伐具有重要意义。本文的主要工作是对SC8800E芯片中MEA(即运动估计加速器:Motion Estimation Accelerator)模块进行全面的功能性验证。通过Verilog语言来完成该模块的RTL描述并实现其功能,通过归纳

21、MEA模块的功能和模块设计接口,分析了当前IC设计业界主要应用的验证方法,并结合展讯公司的项目开发实际情况,采用SystemVerilog作为主要验证语言,为MEA算法的硬件实现模块搭建一个设计灵活且可配置的自动化验证平台,通过实时调用RM模型(即参考模型:Reference Model),即公司算法部门提供的C_model算法模型,实现运算参数的随机产生,输入数据的实时生成,以及输出数据的实时自动比对。该平台主要是采用SystemVerilog验证语言和Perl脚本语言,集成在展讯公司ASIC部门验证组的SC8800E芯片验证环境中,通用仿真工具VCS实现Verilog与SystemVeri

22、log的联合仿真,从而验证了MEA在各种可能模式下的工作,验证中利用了SystemVerilog的面向对象特性和包括时序在内的强大功能,实现了将验证抽象层次提高到事务级(transaction level),提高了验证效率;还使用了SystemVerilog描述的中断处理程序,实现了系统级的模块验证。为了达到覆盖到全部的功能和绝大部分代码的目标,在详细分析了模块的功能以及于设计人员充分沟通之后,针对每一项功能设计与之对应的不同类型的验证case(即验证用例),验证结束后得出的覆盖率报告统计表明了验证的全面性。此外,为了更好的保证MEA模块的功能正确性,也在快速原型验证(rapid protot

23、yping)方面也做了一定的工作。在芯片流片之前,为了保证时序无误,将版图布局布线后的寄生参数提取出来,反标到设计的网表(netlist)上进行后仿真(post-layout simulation)。借助先进的验证语言和EDA工具,借鉴新的验证方法,本文成功地采用上述验证平台和手段实现了对MEA模块的充分验证,并进行了覆盖率分析。1.3 章节安排本文第2章对视频信号处理系统中运动估计加速器模块的算法及其硬件实现进行了介绍。第3章主要介绍目前IC业界占主流地位的SoC验证方法学理论,随后的第4章简要介绍了新的建模和仿真语言SystemVerilog。第5章详细阐述了基于芯片验证顶层环境的MEA验

24、证平台及流程,包括芯片验证环境介绍、模块验证平台的结构规划及具体设计实现、基于SystemVerilog的验证和后仿真,并对MEA模块的代码覆盖率进行了一定的统计分析,给出了覆盖率统计报告。最后,第6章总结了本文的结论以及展望,随后是参考文献。3第二章 视频信号处理系统中运动估计加速器模块的算法及其硬件实现概述2.1 运动估计简介手机基带芯片的视频信号处理系统在视频编码这个通路主要是处理从摄像头传过来的视频流。其中运动估计用来确定和消除存在于视频流中不同图片之间的时间冗余。当运动估计搜索是根据过去方向的图片,那么被编码的图片称为“P帧图片”,当搜索是根据过去和将来两种方向的图片,那么被编码的图

25、片被称为“B帧图片”。运动估计是去除视频序列相邻帧之间冗余信息的有效方法,对整个视频编码效果有重要的影响。运动估计使用于帧间编码方式时,通过参考帧图像产生对被压缩图像的估计。运动估计的准确程度对帧间编码的压缩效果非常重要。如果估计作的好,那么被压缩图像与估计图像相减后只留下很小的值用于传输。运动估计以宏块为单位进行,计算被压缩图像与参考图像的对应位置上的宏块间的位置偏移。这种位置偏移是以运动向量来描述的,一个运动向量代表水平和垂直两个方向上的位移。运动估计时,P帧和B帧图像所使用的参考帧图像是不同的。P帧图像使用前面最近解码的I帧或P帧作参考图像,称为前向预测;而B帧图像使用两帧图像作为预测参

26、考,称为双向预测,其中一个参考帧在显示顺序上先于编码帧(前向预测),另一帧在显示顺序上晚于编码帧(后向预测),B帧的参考帧在任何情况下都是I帧或P帧。2.2 算法简介3在MPEG-4视频编码中,运动估计相当耗时,对编码的实时性影响很大,因此这里特别强调快速算法。 基于块的运动估计运动估计方法主要有像素递归法和块匹配法两大类,前者复杂度很高,实际中应用较少,后者则在H.263和MPEG中广泛采用。块匹配法即在参考帧中搜索一块与目前的宏块最相符的16x16的点。参考帧就是的当前帧的前一帧的重构帧。在参考帧的搜索范围内、以相当于当前宏块所在的位置为中心,搜索到的最接近匹配标准的16x16区域即被认为

27、是“最优匹配”。图2.1 运动估计由于计算简单、不需要乘法运算,因此绝对误差和(Sum of Absolute Difference, SAD) 准则是最被广泛采用的匹配准则。其中, Cij和Rij分别是当前帧和参考帧中的相同的点。 整像素的运动估计8x8块和16x16块的向量都由相同的搜索算法得出。8x8块的向量只比16x16块的向量多了很少一部分计算。在计算8x8块的向量时,作为比较用的SAD16(0, 0)必须要先减去一个值:其中, NB = 在当前宏块中的像素个数。拥有最小的SAD16的(x, y)的(x, y)点将作为16x16块整像素点的运动向量(Motion Vector, MV

28、)。相应的SAD是SAD16 (x, y)。同样地,拥有最小的SAD8(x, y)的(x, y)点将分别作为4个8x8块的运动向量。宏块中8x8块的SAD :其中 0<K<=4 是在宏块范围内的8x8块的个数。接下来的规则是,SADinter = min(SAD16(x, y), SADKx8)。8x8块的搜索并不是用完全搜索,而是在以16x16块的向量为中心、2 个像素的搜索窗内搜索。 INTRA/INTER模式选择在整像素的运动估计之后,编码器将选择在编码时用INTRA 或者INTER 预测。在决定INTRA还是INTER时需计算以下这些参数:其中,NC是宏块内的像素个数。当以

29、下条件满足时,将选择INTRA 模式:A < (SADinter-2*NB)如果用到了SAD16(0, 0),该值应该是如前所述减过以后的值。如果选择了INTER 模式,将继续在该点附近作半像素的运动搜索。 半像素搜索在16x16块和8x8块的向量计算中会用到半像素搜索。它用到了前一个重构宏块的亮度分量。搜索范围是目标矩阵的1半像素。对于16x16块的搜索来说,零向量SAD,即SAD(0, 0),需要减NB/2+1。半像素值通过图2.2所示的插值方式得出,即双线性插值。参数rounding_control 的值由宏块头的rounding_type 位给出。注意在填补区域外面的点不能用于插

30、值。图2.2 双线性插值方式16x16/8x8预测模式选择16x16模式的最小SAD(如果是(0, 0)点则已经减去NB/2+1):SAD16(x, y)8x8模式的整个宏块的SAD:其中,0<K<=4 是在宏块范围内的8x8块的个数 。接下来的规则是:如果就选择8x8预测模式,否则就选择16x16预测模式。 快速搜索算法最简单、最可靠的方法是全搜索法(Full Search, FS),但计算量太大,不便于实时实现。因此快速搜索法应运而生,主要有交叉搜索法、二维对数法和钻石搜索法,其中钻石搜索法被MPEG-4校验模型(Verification Model, VM)所采纳,下面详细介

31、绍。 钻石搜索(Diamond Search, DS)法以搜索模板形状而得名,具有简单、鲁棒、高效的特点,是现有性能最优的快速搜索算法之一。其基本思想是利用搜索模板的形状和大小对运动估计算法速度及精度产生重要影响的特性。在搜索最优匹配点时,选择小的搜索模板可能会陷入局部最优,选择大的搜索模板则可能无法找到最优点。因此DS算法针对视频图像中运动矢量的基本规律,选用了两种形状大小的搜索模板。如图2.3所示。(a)所示的模板称为大钻石搜索模板(Large Diamond Search Pattern, LDSP),有9个搜索点;(b)所示的模板称为小钻石搜索模板(Small Diamond Sear

32、ch Pattern, SDSP),有5个搜索点。首先计算LDSP中每个点的SAD,下一步如何做取决于哪一个点的SAD最小。如果LDSP的中心点的SAD最小,那么下一步就是计算SDSP中每个点的SAD并找出最小的那个点。如果是在LDSP边缘上的某个点的SAD最小,那么那个点将成为新的LDSP的中心,并且继续搜索。直到本次搜索SAD最小的那个点出现在的LDSP的中心,接着就以这个最小误差点为中心,以SDSP为新的搜索模板进行最后一轮搜索,并将最后一轮搜索中SAD最小的那个点作为最佳匹配点。由于LDSP步长大,因而搜索范围广,可实现粗定位,使搜索不会陷于局部最小,当粗定位结束后,可认为最优点就在L

33、DSP 周围8个点所围菱形区域中。然后再使用小钻石搜索模板来实现最佳匹配块的准确定位,以不产生较大起伏,从而提高运动估计精度。 通常,运动向量总是高度集中在搜索窗口的中心附近。这对于物体作缓慢运动的视频序列来说更加明显,因为静止块和缓慢运动块占主导地位。运动向量的中心偏移特性提示了在窗口内不用对所有的点进行搜索,只需要对窗口中心附近的那些点进行搜索就能快速搜索到最佳匹配块。因此,搜索模板都是以窗口中心为中心对称的,其形状和大小共同决定了搜索的速度和性能。在运用钻石搜索算法的时候,要注意下面三点:1. 所有的搜索点必须在搜索窗口内,当待搜索的点超过窗口的边界时,算法将不采用这些点。2. 在连续使

34、用LDSP进行搜索时,待搜索的点有部分重叠。若用前一个LDSP搜索得到的最小误差点位于LDSP的4个角之一时,则下一个搜索只需要在LDSP剩下的5个点进行;若出现在LDSP边上的中点,只需要在LDSP剩下的3个点进行搜索。这样就大大减少了搜索点数,从而大大提高搜索速度。3. 算法中并没有限制使用LDSP搜索的次数,这样可能会因等待最小误差点出现在模板的中心而使搜索次数大大增加。在这样的情况下,我们采用设置合适的搜索边框来强制搜索结束。图2.3 DS算法的搜索方式最小邻近搜索(Nearest Neighbours Search, NNS)是一种快速运动估计算法,它的计算复杂度较低,但是它在MPE

35、G-4格式中与全搜索的效果差不太多。在MPEG-4图像中,每个块或者宏块的运动向量是单独编码的。根据前面编码的相邻块的向量计算出一个预测向量,然后传送当前向量和预测向量之间的差值(MVD)。最小邻近搜索运用了实际向量与预测向量之间的联系,因此能将MVD减到最小。首先计算(0, 0)点的SAD,然后搜索的初始点将设在预测向量所在的点,并且计算周围的在钻石模板内的点的SAD。下一步如何做取决于哪一个点的SAD最小。如果是(0, 0)点或者处于钻石模板中心的点的SAD最小,那么搜索结束。如果是钻石模板边缘上的某个点的SAD最小,那么那个点将成为新的钻石模板的中心,并且继续搜索,直到本次搜索SAD最小

36、的那个点出现在钻石模板的中心。2.3 硬件实现图2.4 MEA的硬件架构3MEA作为slave挂在AHB总线上。VDB master从SDRAM读源帧或者参考帧的数据然后把它写入相应的buffer里。软件将会解析AHB slave里的寄存器信息,同时查询MEA的工作状态并将结果读回。为了使整个编码处理能流水线工作,Source Buffer和Out Buffer采用ping-pang buffer(即2个buffer相互toggle,也就是说1个buffer接收到数据之后,cpu来分析这个buffer数据时,toggle这个位,这样在来数据的时候,数据将放在第2个buffer里面,而不影响你的

37、第一个buffer的内容)。PE Array 模块包括8个处理单元,每一个都可以计算在一个搜索点上的5个SAD值(一个是16x16搜索模式下的SAD,另外四个是8x8搜索模式下的SAD)。当所有的处理单元都计算完之后,有最小SAD值的那个单元的ID和SAD值将会输出给MEA_CTL 模块。MEA_CTL模块负责把从PE Array得到的PE ID传给Reference Buffer中的二维地址并产生相应的控制信号给其他的模块。MEA_CTL模块采用两组地址计数器来产生Reference Buffer、Source Buffer和Out Buffer的地址。从Reference Buffer 传

38、过来的数据将会首先通过Bilinear模块做半取样插值(half sample interpolation)。Bilinear模块可做水平和垂直方向的插值。Linear_X只能做水平方向的插值,Linear_Y只能做垂直方向的插值,这两个都是工作在半取样搜索模式。Bilinear模块也有一个与AHB master的接口。INTRA_SAD模块负责计算在intra模式下的SAD值。计算过程分为两步:首先计算当前宏块的平均值,然后计算每个像素与平均值之间的差的绝对值。VDB MasterA模块读取从外部存储器传过来的参考帧的Y数据和源帧的Y、U、V数据,并且将它们分别写入Reference Buf

39、fer和Source Buffer以供接下来的操作。它有自己单独的时钟。.VDB MasterB模块读取从外部存储器传过来的参考帧的U、V数据并写入Reference UV Buffer。2.4 本章小结本章主要介绍了SC8800E芯片MEA模块采用的快速算法及其硬件实现。首先介绍了运动估计在整个视频信号处理系统中的位置和作用。其次介绍了在SC8800E芯片中的MEA芯片模块所采用的快速算法。最后给出了MEA的模块架构示意图,介绍了基于上述算法的运动估计模块的硬件实现,主要包括模块的顶层设计和接口分析。对验证对象的了解,是开展模块验证工作的基础。特别是像待测模块接口等方面内容,即便是对于完全的

40、黑盒验证而言,也是必不可少的。53第三章 SoC验证方法学简介3.1 SoC设计挑战集成电路制造工艺的进步使得将一个复杂的系统集成在一颗硅片上成为可能,而人们对电子产品的功能和性能的需求是永无止境的。在技术和市场的双重推动下,SoC(System-on-Chip,片上系统)设计技术应运而生。所谓SoC,简单的说就是将原来由许多芯片完成的功能,集中到一块芯片中完成。但SoC不是各个芯片功能的简单叠加,而是从整个系统的功能和性能出发,用软硬件结合的设计和验证方法,利用IP复用及深亚微米技术,在一个芯片上实现复杂的功能。 一般一个SoC芯片应该包括以下特性4:(1)实现复杂系统功能;(2)采用超深亚

41、微米工艺技术;(3)使用一个或数个嵌入式CPU或数字信号处理器(DSP);(4)大量的潜入式存储器,具备外部对芯片进行编程的功能;(5)大量采用第三方的IP核进行设计。SoC给集成电路设计带来了诸多挑战。SoC不再是单纯的ASIC,它是软硬件的联合体,强调的是系统性;SoC设计往往规模惊人,其采用的深亚微米(DSM)或超深压微米(VDSM)工艺使高层的设计必须兼顾后端物理实现。此外,低功耗、可测试性都成为SoC设计难点。4传统的集成电路设计基本上属于硬件设计的范畴,少数的软件(主要是一些微码)也往往通过固化的方法在芯片中实现。而在SoC设计当中,设计者必须面对一个新的挑战,那就是他不仅要面对复

42、杂的逻辑设计,而且要考虑软件,特别是那些可以改变芯片功能的外部应用软件的设计。尽管软件的加入在某种程度上加大了系统设计的工作量,但是软件的引入也会对系统代价的减少产生积极的作用。如何在软件和硬件设计中取得平衡,获得最优的设计结果是SoC设计方法学需要着力解决的问题。3.1.2 深亚微米效应对于设计而言,深亚微米效应造成的影响主要包括长导线引起的电压降(IR Drop)、信号串扰(crosstalk)、漏电流增加、互连主导延迟等等。这些效益使得设计收敛周期变长,难度增加。为此各大EDA厂商提出了“design for manufacture”的概念,并推出了一系列DFM工具。随着工艺特征尺寸的继

43、续下降,深亚微米效应将持续的困扰设计者,成为SoC设计中一个主要的挑战。IP集成SoC是基于IP的设计,IP核对于SoC设计非常重要,它包含两个方面的内容,首先是IP核的使用,其次是IP核的生成。IP核的使用绝不等同于集成电路设计中的单元库的使用,它所涉及的内容几乎覆盖了集成电路设计中的所有经典课题,包括测试、验证、模拟、低功耗等等。IP核的生成也绝非是简单的设计抽取和整理,它所涉及的设计思路、时序的要求、性能的要求等均需要人们重新审视我们已经熟知的设计方法。3.2 SoC验证流程验证是另一个难题。对于一个电子系统而言,验证渗透在设计的各个层次,验证的完备性直接关系到芯片流片(tape out

44、)成功与否,验证的工作量也直接影响到一个项目的开发周期。图3.1是一个自顶向下的SoC设计及验证流程:系统规范的制定者在系统级进行建模、仿真及验证,当系统性能达到预定指标后进行软硬件划分,软硬件划分的根据是已有的一些软件/硬件IP模块以及设计者经验。软硬件划分后硬件模块交由硬件设计者在RTL级建模并进行功能验证,RTL级的设计描述通过综合得到门级网表,网表通过仿真或者一些形式化验证工具得到验证。综合之后的网表将映射成标准单元进行布局布线,布局布线后需要进行一系列规则检查,如DRC、LVS等,并且还要提取寄生参数,分析时序,保证时序收敛。当然实际的SoC芯片还包括一些全定制单元,或者第三方IP等

45、。由该图可见,SoC的验证流程主要划分为3个阶段:系统验证、芯片功能级的验证及后端的物理验证。系统验证主要由系统的制定者进行,仿真在事务层或者消息层进行,采用的语言主要是C/C+及matlab等。功能验证是芯片开发中所需时间最长、耗费人力最多的一个过程,为此工业界不断提出新的方法学,并开发了众多的语言、工具、平台来指导并加速这个流程。这个阶段的工具非常庞杂,语言也各具特色,验证者应该根据待验模块的特点及拥有的资源,选择合适的工具、语言、方法。后端的物理验证在工艺特征尺寸不断缩小的今天越来越重要。图3.1 SoC设计及验证流程5图3.1所示的SoC设计-验证流程也反映了这样一个问题:在系统设计阶

46、段,系统的仿真在事务级或更高的消息层进行,而芯片的验证在RTL级或更低层次进行。从系统到软硬件的映射主要由系统工程师根据个人经验及相关资源来决策。一般系统工程师只能对软硬件的性能需求进行一个大致的估计,而一旦估计不足,在后期软件设计阶段表现出性能缺陷,会给整个项目带来极大的损失。另外,除了系统工程师所做的一些仿真测试,当硬件成型后,硬件的某些模块也需要联合在一起协同仿真,而仿真的调度又需要软件来指挥这种系统级验证平台(system level testbench)对验证者的知识结构及平台构筑经验都提出了很高的要求,不仅极难建立,并且仿真速度也会很慢。是否存在一种更有效的、更快的验证方式呢?这也

47、许需要从方法学本身和设计流程入手。电子系统级设计方法(ESL)就是为了解决上述SoC设计与验证流程中系统工程师与软硬件工程师之间沟通困难的问题而提出的。它是一种基于平台的设计及验证方法:在系统设计阶段借助于一种称之为事务级模型的抽象模型建立系统的虚拟平台,系统架构甚至软件都可以在该平台中得到验证,该平台还可以作为以后的系统级验证平台,并复用先前的系统测试向量。3.3 常用验证技术分类5 6常用的验证技术主要分为以下三类: 静态技术静态技术是指利用计算机辅助工具对设计进行的规则检查和设计正确性分析。它既包括常用的软件代码检查比如lint检查等,也包括在设计的不同抽象层次间迁移时所需做的一致性检查

48、如Formality,以及静态时序分析STA、后端的物理版图规则检查DRC、LVS等。这类技术的特点是使用工具自动的分析设计,不需要从外部输入向量。静态技术的优点是快速并且完全自动化,但是这类技术不包含功能检查,对于验证来说是不完备的,并且有时静态技术并不能完全的保证所验证规则的正确性。以时序分析为例,静态时序分析工具如Prime Time能够分析出比如setup/hold时间是否满足晶圆代工的要求,得出设计的大致工作频率。但是很难保证布局布线后线延迟不会对各个信号的协调性产生影响。所以在在深亚微米工艺条件下,为保证时序的收敛,后仿真这一动态技术仍然非常重要。 仿真技术所谓仿真,就是从电路的描

49、述抽象出模型,然后将外部激励信号或数据施加于此模型,通过观察该模型在外部激励信号的作用下的响应来判断该电路系统是否实现预期的功能。仿真是工业界广泛用到的验证手段。根据内部仿真算法的差异,仿真器包括基于周期的(cycle-based)仿真器和基于事件(event-based)的仿真器。基于周期的仿真器是将组合逻辑换算成一组数学表达式,然后在每个周期的开头按照该表达式来更新时序单元的值,这种仿真器每个周期只进行一次值的更新,特点是仿真速度快,但只能仿真单一时钟的同步设计,并且不能进行时序检查。基于事件的仿真器则有一套复杂的调度算法,它按照事件去触发进程,事件的调度严格按照设计所指定的仿真时间或规则

50、进行,所以它能仿真异步设计及检查时序,是对真实设计的一个较准确模拟。但是它速度慢,一般工业界提供的仿真器支持上述两种仿真机制以及它们的混合仿真。仿真包括若干层次,随着设计规模日益增大,功能仿真主要在寄存器传输级(RTL)进行,而后仿真(post-layout simulation)则主要用于对时序进行确认。 硬件加速和原型验证不论是静态技术还是动态仿真,都是借助于计算机自动化工具对设计的检查和功能模拟。这种模拟有时候不能给予验证者足够的信心,并且对于大规模的设计来说速度有时不能忍受。于是各种专用硬件或者软硬件联合的平台被开发出来以加速验证流程。这种技术的特点是设计的一部分或者全部被映射到可编程

51、逻辑器件中,激励直接加到这种“真实的硬件”上,通过分析其响应来检查功能。这种验证技术仿真速度非常快,并且由于FPGA技术的进步,建立一套原型验证系统所需成本大为降低。在SoC时代,这种技术正日益受到青睐。3.4 验证平台策略验证是对设计正确性的检验,它的一个主要内容是功能验证。这需要验证平台(Testbench)的支持。验证者在验证平台里将测试向量加到待验证模块(Design Under Test, DUT),通过分析响应来检查结果正确与否。无论什么样的验证平台,总要解决如下问题:怎样施加激励?如何比对数据?验证到什么程度停止?这些问题代表了主要的平台策略:激励策略、比对策略、驱动策略。一个高

52、级的验证平台首先要求激励是分层的,标准的总线时序被封装成事务级模型(Transactor),多个总线事务的集合可以构成一次数据传输的抽象(比如连续的写总线可以构成一次memory 的数据传输),不同的数据传输组合起来构成了激励的一个分支。这种分层次的激励方式可以最大程度的复用底层的总线事务,优化激励的结构及降低其复杂性。自动数据比对是验证平台的主要比对策略,尤其是对于算法型的模块尤其如此。RTL模块的输出会在仿真结束之前被收集,与嵌入在平台中的黄金模型(golden model)或黄金数据(golden data)的结果进行比对,比对的结果会打印出来以标志这一次仿真的正确与否。对于规模越来越大

53、、功能越来越复杂的电子系统而言,即使对内部某个子模块施加激励也很难穷举所有情况,那如何知道设计是否得到了充分的验证呢?覆盖率是目前唯一的验证指标。但是该指标很难量化使得基于覆盖率的验证难以做到自动化。一般来说,覆盖率分为代码覆盖率和功能覆盖率7,而代码覆盖率则包括行覆盖率(line coverage)、状态机覆盖率(fsm coverage)、条件覆盖率(condition coverage)、分支覆盖率(branch coverage)等等,这类指标可以由工具自动统计,但是它们含金量低,即使能达到100%的覆盖率也不能说明设计得到了充分验证,一般要求这类指标能达到一个较高的值(90%)以作为

54、参考。功能覆盖率比较真实的反映了验证的质量,但是功能的定义需要人的参与,验证者可能需要花费大量的精力去分析功能的细节且反映到验证平台中。在SoC设计中这种功能的分析量化难度更大,SoC中的模块往往是高度可编程的,它们的功能与软件紧密结合,传统的验证方法很难使得在硬件成型之前使这种软件驱动的抽象功能得以验证。在平台的结构上,大多数验证平台采取的是一种定向测试(Direct test)的结构8。所谓定向测试是一种点到点的测试,它是由验证者根据对设计本身的理解从外部施加合理的激励,然后检查结果是否与预期相符合。当这种“合理的激励”很多时,验证者不能穷举,也就很难发现一些可能的“边界情况”(corne

55、r case)。还有一种验证平台称之为“智能验证平台”9,它是以覆盖率分析去驱动伪随机激励的产生。这种伪随机激励施加了恰当的约束,对于设计来说是合理的输入。这种激励方式实际上是对整个激励向量空间随机抽样,通过覆盖率指标去保证样本容量与分布具有足够的可信度和代表性。这类验证平台对于一些存储器的测试或一些需要遍历穷举的模块的验证非常有用,但它不是万能的,当约束条件太多或者太复杂时,建立这种约束机制的难度可能远远超过建立一个简单验证平台的难度,所以此时使用这种平台结构是不可取的。图3.2是一个分层验证平台的结构图10。Test主要关注所要验证的功能,也就是说各种不同的“情况”(case)。对于流程的

56、评审者来说,他们最终关注的就是Test所覆盖的case。在实际的高级验证平台中,每一个case会对应一个配置文件,该文件包含一些可读性很强的配置值,这些配置值用来区别各个case。Generator就是根据这种不同的配置值,来产生不同的激励分支。这种激励分支是trasaction的集合,它将不同的trasaction组装起来,构成一个完整的仿真激励过程。Transactor负责产生各个transaction,这些transaction通过driver转换成周期及位精确的激励加到DUT(Design under test)上。因此driver的组成主要是一系列总线周期模型(BFM)或模拟的自定义总线模型。Monitor是对DUT端口或者内部信号的监测,监测的结果会反馈给checker,checker会根据这种结果做一些相应的处

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论