一篇很好的关于功能验证、时序验证、形式验证、时序建模的论文

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

FF-DX半定制/全定制混合设计流程中
功能与时序验证
摘要
随着集成电路的规模和复杂度不断增大,验证的作用越来越重要。

要在较短的时间内保证芯片最终能正常工作,需要将各种验证方法相结合,全面充分地验证整个系统。

FF-DX是一款高性能定点DSP,为了在提升芯片性能的同时,缩短设计周期,降低开发成本,采用了半定制/全定制混合设计的方法,对RTL级代码进行优化改进,对处理器内核的执行单元采用全定制设计实现。

混合设计的复杂性,给验证工作带来了巨大的挑战。

本文针对半定制/全定制混合设计的特点,提出并实现了一套半定制/全定制混合设计流程中功能和时序验证的方法。

论文从模拟验证、等价性验证和全定制设计的功能验证三个方面对FF-DX的分支控制部件进行功能验证。

对于模拟验证中激励的产生,采用了手工生成和伪随机生成相结合的方法,并通过覆盖率评估,使设计的代码覆盖率达到98%。

对于全定制模块,采用了NC-Verilog模拟器和功能模型提取工具TranSpirit相结合的新方法,提高了验证效率。

论文还研究了运用形式验证的方法对RTL级和RTL级以及RTL级和门级网表进行等价性验证。

为了进一步保证RTL级设计和对应的全定制设计模块之间功能的等价性,设计了一个能同时考察两种设计的验证平台,以此来提高工作效率。

论文介绍了FF-DX地址计算部件的时序建模和静态时序分析方法。

在静态时序分析之后,将SDF文件中的延时信息反标到逻辑网表中,通过动态时序验证进一步保证设计的时序收敛。

论文还结合工程任务,设计实现了验证过程中使用的几种辅助工具,大大提高了验证的效率,减少了人工参与带来的失误。

运用上述验证方法对FF-DX功能部件进行验证,取得了较好的效果,缩短了验证周期,提高了验证效率。

主题词:半定制/全定制混合设计,功能验证,形式验证,时序验证,时序模型,静态时序分析,辅助工具
ABSTRACT
The complexity and size of the modern VLSI has been increasing dramatically, which present a significant challenge for verification. In order to ensure proper function of the design, various methods need to be used to verify the entire system sufficiently.
FF-DX, a high-performance fix-point DSP our group designed, has adopted several design methods to enhance performance, as well as cut down design cycle and lower the cost. The most featured one is what we called blended methodology which mixes semi-custom and full-custom design methods together. Nevertheless, this methodology has led to a huge challenge to verification because of the complexity it brings in. In this dissertation, based on the characteristics of the blended methodology, we propose a flow for functional and timing verification, with the novel idea of combining full-custom and semi-custom verification methods.
We verify the branch control function unit in three aspects, simulation verification, equivalence verification, together with functional verification in the full-custom designs.
A blended methodology is introduced to generate the testbench for functional verification, which combines both manual and pseudo-random methods, and after evaluation, the code coverage rate is 98%. We also adopt a new methodology of combining the NC-Verilog simulator with functional model extractor TranSpirit for full-custom block ,and it speed up verification efficiency. Besides, we studied equivalence verification, a formal verification methodology which is used for RTL-RTL and RTL-gate design. To guarantee the functional equivalence between RTL design and full-custom design further, we design a testbench which can verify the two designs at the same time and it can greatly improve efficiency.
This paper introduces a methodology of timing modeling and STA in FF-DX core. After STA, we backanotate the delay info into the logical netlist, then the timing closure could be assured further by another dynamic timing analysis.
To meet the requirement of out project, we design several tools which are used in verification. These tools greatly enhance the efficiency of verification, as well as reduce the man-made errors.
We use the above methods to finish verification of the core module of FF-DX, which effectively shorten design cycle, and speed up verification efficiency.
Key Words:Semi-custom/Full-custom Mixed Design, Functional Verification, Formal Verification, Timing Verification, Timing Model, Static Timing Analysis, Aiding Tool
第一章绪论
当今集成电路技术的高速发展以及所取得的巨大成就,使得集成电路系统的规模和复杂度日趋提高,以微处理器为代表的集成电路技术已经对整个社会产生了广泛地影响,成为信息社会的支柱产业之一。

目前,单个微处理器芯片上可以集成数以亿计的晶体管,要避免如此庞大的电路出现设计错误是一项非常严峻的挑战,因此验证逐渐成为开发投入的主要部分。

在一个开发项目组中,验证人员应该超过设计人员,某些复杂设计中能够达到二至三个验证人员对应于一个设计人员的比例,而且时间消耗也非常大,据统计,在芯片项目研发中,60%-70%的时间花在验证上[1]。

如何高效准确地保证芯片功能的正确性和性能达到指标是验证人员和设计人员共同面临的挑战。

1.1 课题研究背景及意义
全球信息产业的持续、高速发展,特别是计算机、通信、信息家电等重点整机产品的迅猛发展,极大促进了集成电路设计技术的更新换代。

伴随着当今微电子技术和纳米技术的长足进步,集成规模已经达到可以把数千万个晶体管集成到拇指盖大小的硅片上。

同时,芯片的性能也与日俱增,目前时钟频率最高的处理器是IBM公司推出的POWER6[2],其性能已达到4.7GHz。

面对如此复杂而庞大的设计,如果仅仅使用在某个工艺下采用基于标准单元的半定制设计方法来提升芯片的性能就显得力不从心,而如果采用全定制的设计方法,其中的每个晶体管的尺寸、形状及其在芯片中的位置都要经过严谨的考虑,虽然性能得以保证,但需要消耗大量的时间和人力[3]。

因此,半定制和全定制相结合的混合设计方法很自然的成为复杂、高性能设计的首选。

这种方法基于半定制设计,而关键路径上对性能和功耗要求较高的部件采用全定制设计,既能有效提升系统的性能,又能缩短开发时间,降低开发成本。

但是,由于半定制设计与全定制设计的特殊性,使其在验证流程及方法上有很多不同,因此,如何将两种设计方法有机结合起来,是验证工程师面临的重大挑战。

图1.1(a)所示的是在传统的ASIC芯片设计中采用的半定制设计方法,灰框中表示设计流程中对应的验证工作。

整个验证流程包括:
⏹验证计划:设计开始时制定验证计划,规范设计流程中每一步的验证工作
均按照计划执行;
⏹系统级验证:验证系统设计建立的行为级模型是否满足功能规范;
⏹功能模拟:验证RTL级设计的功能正确性;
⏹形式验证:验证RTL级设计与综合后门级网表的功能等价性;
⏹后仿真和时序验证:物理设计阶段进行后仿真进一步确保功能正确,并通
过静态时序分析验证系统是否满足时序要求;
⏹投片后验证:对工艺厂商生产出的芯片验证其功能,确保投片前后的功能
保持一致。

全定制的设计与验证流程如图1.1(b)所示,主要包括:
⏹电路设计阶段采用特定的电路结构实现指定的功能,需要对电路设计的功
能和性能进行验证以满足功能规范及性能指标;
⏹版图设计阶段绘制对应电路结构的版图,同时进行设计规则检查、电气规
则检查以及版图与原理图对照检查;
⏹版图设计完成后,提取带寄生参数的网表进行版图后时序检查,验证版图
设计是否达到性能指标;
⏹同半定制设计流程一样,需要对生产出来的芯片进行功能验证。

通过对两者流程的对比可以看出,全定制验证与半定制验证在设计方法、验证方法上都有很大的区别。

因此,如何将两种设计方法相结合以保证整个芯片功能正确并且达到性能指标,是验证工作的重点和难点。

(a)半定制设计流程(b)全定制设计流程
图1.1 半定制和全定制设计流程
目前,作者所在的课题组正在进行一款高性能DSP芯片FF-DX的研制工作。

采用半定制/全定制混合设计的方法,在基于标准单元综合的基础上,对芯片中的寄存器文件和功能部件采用全定制设计。

因此,在半定制/全定制混合设计模式下的验证流程及方法,是我们必须要面临和解决的难题,而验证工作的难度和复杂度都值得深入研究。

1.2相关验证技术的研究
为了确保一款芯片能够正常的运转以及性能达到指标,我们在设计过程中需要对功能和时序两方面进行充分的验证。

所谓功能验证就是证明设计功能正确性的过程。

传统的功能验证分为模拟验证和形式验证两大类。

模拟验证的过程是:首先编写测试生成需要的激励,然后将产生的输入激励同时施加于待测设计和参考模型,记录待测设计和参考模型对应的输出,通过比对输出是否一致,判断待测设计的运作是否正确,同时将其模拟运行状况记录下来,通过覆盖率统计工具进行分析,可以获得验证的覆盖率。

形式验证是一种无向量的验证方法。

也就是说,它不使用传统的激励—响应机制,而是采用系统的、智能的数学分析来判断某个设计在所有的输入或状态条件下是否能按预期的情形工作。

设计者可以有两种选择,即检查所期望的特性是否总是发生或者检查不期望的特性永远不会发生。

模拟验证与形式验证最显著的差别在于,前者需要输入向量而后者不需要,或者说,基于模拟的验证是输入驱动,而形式验证是输出驱动。

这两种验证方法的特点如图1.2所示:
图1.2 模拟验证与形式验证的输出空间的透视
从图中来看,基于模拟的验证是对单个点进行验证,而形式验证是对设计空间中组成的点进行验证[4]。

时序验证是对电路的时序特性进行分析,检查设计是否满足性能要求,其主要分析对象是电路中的路径延时和时钟信号的脉冲宽度。

时序验证一般可以通过动态模拟和静态分析两种方式实现。

基于动态模拟的方法是指从电路的描述中抽象出模型,然后对该模型施加外部激励,得到输出结果,根据某种延时模型和I/O 信号,设计者能够计算出电路的延时信息。

基于静态分析的方法与基于动态模拟的方法截然不同,其最显著的特点就是与输入激励无关,能够根据电路的拓扑结构,对所有的时序路径进行分析[5]。

静态时序分析只能分析逻辑的时序,不能分析逻辑组成的功能。

如果要验证逻辑功能,那么必须要使用动态模拟。

下面对目前主要的验证策略作一下简要介绍。

(1)自顶向下的验证:
设计完成
图1.3 自顶向下的验证流程图
图1.3是自顶向下的验证策略,由于抽象层次越高,验证的复杂度越大,因此,在这种策略下验证者周而复始地发现问题,再由设计者不断修改错误,反复迭代,通常导致较差的验证效率。

(2)自底向上的验证:
图1.4所示的自底向上的验证目前在业界最为流行,其验证收敛性好、效率高,但难点是需要在模块层次开发相应的测试环境和测试激励。

其中:
0、1级测试:由设计者负责,进行比较仔细的模块验证,在提交给验证者时要通过代码质量检查,还要通过测试覆盖率检查(100%)。

2级测试:验证系统存储器的映射和模块间互连的正确性。

3级测试:验证整个芯片的系统功能。

设计完成
图1.4 自底向上的验证流程图
)基于平台的验证:
(3
图1.5显示的是基于平台的验证流程图,这种策略适用于验证在已有的平台上开发出衍生类设计,并且已有的设计平台已经通过验证,验证的内容主要是基本的开发平台和新增加的IP模块之间的连接。

(4)基于系统接口驱动的验证
图1.6基于系统接口驱动的验证方法
如图1.6所示,基于系统接口驱动的验证系统设计阶段为每个设计模块建立了接口模型,在验证模块F时,利用模块A、B、C、D的接口模型和真实的设计混合建立测试环境以提高仿真速度。

1.3课题的主要内容
FF-DX是本校自主设计的一款高性能定点DSP,其时钟频率600MHz,每周期可执行8条32位指令,8位运算性能达4800MMAC,平均功耗小于2W。

如此高频率的DSP芯片设计,在全国尚属首例。

为实现对FF-DX的全面、准确的功能与时序验证,本课题完成了以下研究工作:
1) 半定制/全定制混合设计模式下的功能验证流程
FF-DX内核采用半定制/全定制混合设计流程,但是目前对于混合验证的方法还不是很完善,尤其是对于全定制设计的功能验证的效率还很低。

因此,本文根据半定制/全定制混合设计的特点,提出一套在该模式下功能验证的流程,同时对全定制设计的功能验证提出一种新的验证方法。

2) 半定制/全定制混合设计模式下的形式验证解决方案
由于RTL级设计的复杂性和全定制设计的特殊性,本文对RTL级设计之间和RTL级与电路级之间的等价性验证进行了详细的讨论。

3) 全定制宏单元静态时序分析方法
FF-DX内核全定制宏单元包含大量的动态电路,大大增加了时序分析的难度,本文对包含动态电路的全定制宏单元设计的时序模型建立和时序分析提供了解决方案。

4) 动态时序验证
为实现电路延时信息的反标,将SDF文件的所有时序信息反标到逻辑网表,实现了精确逻辑模拟,本文研究了使用布局布线后得到的延时信息,进行更加准确的动态时序验证。

5) 辅助工具的开发
为配合FF-DX验证各个阶段的工作,提高验证工作的效率,本课题开发了一系列的辅助验证工具。

1.4论文的组织结构
论文共分为六章,各章组织如下:
第一章是绪论部分,主要分析了课题研究的背景及意义,介绍了微处理器相关验证技术,并阐述了课题研究的主要内容及所做的工作。

第二章介绍了功能验证和时序验证的基本理论及其主要方法。

第三章详细介绍了FF-DX分支控制部件的功能验证方法,并深入研究了全定制设计功能验证的流程。

讨论了半定制/全定制混合验证中的形式验证解决方案。

第四章详细介绍了FF-DX地址计算部件的时序验证流程,深入研究全定制宏单元时序建模和时序分析,阐述了在完成静态时序分析后,如何反标延时信息并进行动态模拟。

第五章主要介绍为全定制时序建模以及功能验证等方面开发的辅助工具及其在课题中的应用。

第六章总结与展望:总结了本文所做工作,并指出进一步的研究方向。

第二章验证方法概述
本章分别从功能验证和时序验证两个方面详细介绍了IC设计的验证理论,以及验证的主要方法,并从验证方法学的角度上比较模拟验证和形式验证以及静态时序验证和动态模拟的特点。

2.1功能验证的主要方法
众所周知,功能验证在芯片的整个设计周期中占用的时间最多。

尽管目前有许多技术可用于减少验证时间,但最终应当如何选择却经常是令人迷惑并要付出高昂代价的。

目前的微处理器验证方法可分为两类:基于模拟的验证和形式验证。

模拟方法用模拟向量(随机生成或手工生成)或实际的应用程序对HDL描述的RTL模型进行模拟运行。

形式验证方法通过数学证明验证系统的正确性,一般用于规模不大的模块级设计验证[6]。

2.1.1 模拟验证
模拟验证在微处理器设计中非常重要。

在设计阶段早期,可通过高层次模拟进行性能预测和分析。

在设计阶段中期,模拟可用于软件算法开发和硬件求精。

在设计阶段后期,模拟用于确定设计是否满足性能目标,并验证硬件和软件的正确性。

不同模拟器在不同抽象层次对设计建模,层次越低,模拟速度越慢。

微处理器的典型层次包括算法层、体系结构层、寄存器传输层和逻辑层。

算法层是对系统执行算法或协议的描述。

体系结构层的设计者关心系统中主要功能块的定义和评价,体系结构级验证通常采用指令级模拟器,它可对实现细节进行抽象,模拟速度非常快,既可用于多种微结构的性能评价,又可作为详细设计的参考模型,还可供最终用户使用。

RTL级的目标是对系统中的所有部件建模,RTL级模拟器可以精确地对系统的并发性和资源竞争建模,尽管速度慢,RTL模拟器仍广泛用于检查系统的正确性。

由于性能和正确性验证对模拟周期都有很高的要求,使得在这个层次上的模拟速度成为决定系统设计质量的关键因素。

模拟器的类型可分为:事件驱动的模拟器、基于周期的模拟器和硬件加速器。

事件驱动的模拟器将事件定义为逻辑值的变化,设计中任何节点的变化将使模拟器调度事件,从而计算节点的扇出网络的变化,目前应用最广泛的模拟器Verilog_VCS、NC_Verilog、Verilog_XL等都是事件驱动模拟器。

基于周期的模拟器主要适用于纯同步逻辑,在同步电路中,状态部件在时钟的边沿改变值,因此只需计算电路在每个时钟周期的稳定状态,基于周期的模拟比事件驱动模拟快10-100倍,但只能进行纯功能验证,不能验证时序。

硬件加速器使用为模拟而设计的硬件,用实际的芯片代替
电路中的软模型进行模拟,比软件模拟器快10-100倍。

模拟验证方法的主要问题是:外加激励信号要由用户给出,模拟速度慢,验证微处理器很费时并要占用很多资源,要开发大量测试向量[7]。

模拟验证可以用如图2.1[8]的模型来表示:
图2.1 基于模拟验证的流程图
(一)验证基准
从图中可以看出,设计被置于一个验证基准之下,把输入激励施加于验证基准,我们从设计获得输出并将它与参考输出进行比较。

验证基准由支持设计的操作代码组成,有时也生成输入激励,同时把输出与参考输出进行比较。

(二)激励生成
输入激励可以在模拟之前产生,并在模拟时从数据库读出到系统设计,或者可以在模拟运行时生成。

针对特定功能和特征要求的输入向量称为定向测试。

由于定向测试在输入空间中偏向于设计者特别注意的区域,而错误经常会出现在那些设计者不注意的区域,因此,为了把注意力从特别关注的区域转移到其他区域,可以在采用定向测试的同时进行伪随机测试。

这些生成的伪随机测试可以是向量测试的邻近向量,所以,如果定向测试是在输入空间中的某些点,那么伪随机测试则围绕这些点进行扩展。

(三)linter程序
在对设计进行模拟之前,通过运行一个linter程序能够检查静态错误或者潜在错误或者编码风格冲突。

linter程序不需要输入向量,因此能检测与输入激励无关的错误,例如:总线无驱动、门电路的输入悬空或某个模块初始化时端口宽度与
模块定义的端口宽度不匹配等。

(四)模拟
建立这些测试后,选择模拟器执行模拟过程。

模拟器可以是由事件驱动或者基于周期的软件,也可以是硬件模拟器。

(五)覆盖率度量
衡量一个设计的模拟验证的质量是否是该验证所提供的覆盖率。

衡量覆盖率的工具给出了代码覆盖率或者功能覆盖率的报告。

代码覆盖率是指已经由验证所运行过的代码的百分数。

功能覆盖率是指运行过的功能百分比。

利用覆盖率标准,设计者可以看到设计中未执行到的部分,并能为这些部分建立验证。

另一方面,用户可以去除对电路验证中重复覆盖的部分。

(六)错误跟踪与调试
当验证发现错误以后,可以把错误记录到错误跟踪系统,其进程即被跟踪。

然后根据设计规范调试设计,以修复错误。

(七)回归测试
为了保证修改后的设计与原始设计的等价性,必须保证修改后的设计仍然能够跑通原始设计已经跑通的所有测试,称为回归测试。

(八)修改控制
必须随时更新设计代码以保证增加新的功能和修改设计中的错误。

但是,当多个用户访问同一段代码时,可能造成数据丢失。

因此,设计代码要使用修改控制软件进行维护,该软件对多个用户的文件访问进行仲裁,并提供了一种机制,让所有设计者都可以看见最新的设计代码。

2.1.2 形式验证
形式验证是用数学方法表达系统的规范或系统的性质,并且根据数学理论来证明所设计的系统满足系统的规范或具有所期望的性质,在不能证明所期望的性质时,则可能发现设计错误。

形式验证克服了传统验证方法如模拟和测试的不足,实践证明,形式验证确实通过形式规范和证明增强了对系统的理解而发现了设计错误,或者通过形式化的自动验证发现了用其它方法不能发现的设计错误,而且它能做到对被验证模块100%的检测。

2.1.2.1 形式验证的分类
形式验证方法可分为三大类:等价性检验、模型检验和定理证明。

定理证明是可用的形式验证技术中最先进的,但仍须进一步研究。

模型检验是将一个设计与一组现存的设计所表现出的逻辑属性相比较,这些逻辑属性是设计规格的直接表述。

生成逻辑属性时,模型检验的使用要比等价性检验涉及得更多一些[9]。

在三种形式验证方法中等价性检验用得最为广泛,它用数学方法来验证参考设计与修正设计之间的等价性。

利用等价性检验工具可对这两种设计方案进行彻底的检验以保证它们在所有可能的条件下都有一致的功能。

另外如图2.2所示,还可以利用等价性检验来验证不同RTL级或门级实施方案的等价性[10]。

图2.2 设计在不同抽象级别的比较
等价性检验的主要任务是比较两种设计中相应的组合功能块。

进行该项检验时先将设计分成较小的比较点或关键点,然后评估一个设计中给定的比较点上的逻辑功能是否与另一个设计中对应的比较点或关键点的逻辑功能等价。

比较点可以是输出端口、寄存器、锁存器、黑盒输入pin或被驱动的线网等。

逻辑锥(logical cone)是一组可驱动比较点的信号,它有n个输入(基本输入,状态点)和一个输出(基本输出,状态点),也可以包含其他逻辑锥,如图2.3所示,最右边是一个输出端口,在等价性验证的过程中它将被作为一个比较点,与另一个设计中相应的对象进行比较,比较的过程实际上就是考察它们的逻辑锥是否等价。

所以对于不匹配的点,我们也可以通过对它们逻辑锥进行分析,来找出具体的原因。

因此,等价性检验包括:映射两种设计表述中的等价关键点、比较前面映射的关键点并将两种设计中任何不匹配之处标记、报告出来。

图2.3 逻辑锥示意图
2.1.2.2 形式验证的应用
形式验证方法有多种应用,可用来将一个设计在不同的抽取级别与参考设计比较,以对其进行验证,它在IC设计流程中的位置如图2.4所示:
图2.4 形式验证在IC设计流程中的位置
当RTL级设计在结构调整后,使用形式验证的方法把修改前后的代码进行等价性验证;。

相关文档
最新文档