APP下载

集成电路功能验证方法

2010-09-23席筱颖

科技传播 2010年23期
关键词:测系统自测覆盖率

席筱颖

江苏信息职业技术学院,江苏无锡 214153

集成电路功能验证方法

席筱颖

江苏信息职业技术学院,江苏无锡 214153

本文首先介绍几种传统的验证方法并剖析其优缺点,然后针对基于仿真的功能验证引入提高验证效率的方法。从生成高质量测试向量和检测验证程度的完备性两方面介绍如何提高验证效率。

功能验证;基于覆盖率的方法;测试矢量

0 引言

随着半导体技术的发展,芯片设计的规模和复杂度也不断增加。设计者在缩短设计周期同时,还要尽可能保证芯片设计的正确性,其关键的问题是设计验证问题。目前,验证所花费的时间大约占集成电路设计周期的70%~80%。正确性验证已经逐渐成为大规模集成电路设计的主要瓶颈。当前验证面临的挑战主要有以下几个方面:

1)巨大的验证空间;

2)验证环境的可重用性;

3)验证结果的数据一致性检查;

4)验证工作结束的标志。

1 传统的功能验证

目前,采用的验证测试方法主要有3类:基于参数的验证测试,基于结构的验证测试,和基于功能的验证测试。

功能验证不考虑电路的结构,只考虑电路的功能流程,在验证因果设计方案时是非常有用的。其仿真结果得到的测试向量还可以应用在检验生产厂家的产品上。目前针对微处理器的功能验证可分为基于形式验证的方法和基于仿真的验证方法。

1.1 基于仿真的验证

基于仿真的验证又称模拟验证,其验证过程是将验证用的激励向量加载到待测系统上进行运行,通过结果比较来验证待测系统的功能正确性。根据仿真结果检验方式的不同,大致可分为协同仿真和自测检验两类[1]。

1)协同仿真。协同仿真的方法是将激励信号同时赋给待测系统和参考模型,并比较两个系统的输出是否一致,判断待测系统的运作是否正确。理论上,协同仿真的测试向量可以是任意代码。在实现时,协同仿真的测试激励信号往往是系统以前版本积累下来的测试向量、应用程序或标准的Benchmark等。因此协同仿真的测试向量集更大,可验证的逻辑更广。在获得待测系统响应输出的同时将待测系统的模拟运行状况记录下来,通过覆盖率统计工具进行分析,还可以获得验证的覆盖率[3]。

2)自测检验。自测检验的方法是把带有自测性质的测试向量作为激励信号输入到设计方案中,由运行结果体现系统行为。其测试向量包括两部分内容:执行某一特定功能的代码和对系统行为的判断。

1.2 基于形式的验证

基于形式的验证不采用传统的激励——响应机制,是一种无向量的验证方法。形式验证主要通过数学分析的方法来判断某个设计是否在所有的输入或状态条件下能按预期的情况工作[3]。形式验证将需要检测的某个功能或设计缺陷抽象为一个公式或数学表达式,然后将整个电路系统也用数学方法抽象为某个或某组数学表达式,最后用数学的方法来证明前者是否满足后者。

1.3 基于断言的验证

基于断言的验证(Assertion-Based Verification)是一种半形式验证方法,其中断言是一种主动性的注释,能够监控信号、预测行为和禁止行为。在RTL级的验证中正确应用基于断言的验证方法最为有效。

目前,形式验证的研究和开发应用还不完善,尚不能作为一种验证方法独立使用。因此,基于仿真的功能验证方法仍为当前普遍使用的验证技术。

2 提高功能验证效率的方法

基于仿真的功能验证的方法是在输入端将加载激励信号,收集输出端的响应信号,并对此做出分析。可见,如何产生高质量的测试激励和如何判断待测系统验证程度成为功能验证的两个关键问题。

2.1 测试向量的生成

测试向量的生成主要有3种方法:手工编写、伪随机生成和针对流水线模型生成。手工编写测试向量的方法具有较强的针对性,编写的测试向量较为精简,对于系统中一些诸如边角情况等不易验证的功能点进行验证是十分有效的。但这种方法需要耗费大量人力和时间,无法满足大规模集成电路验证的要求。

另一种生成测试向量的方法是伪随机方法。所谓的伪随机是指在给定的约束条件下,大量生成任意组合的随机序列。该技术已成为当前研究的重点,许多EDA厂商开发了相应的辅助工具集,如Cadence公司开发的TestBuilder等。通过伪随机的方法产生的激励既满足特定条件,又可实现充分的随机性,具有一定的可控性,大大节省了编写测试激励的时间。但由于其随机性,会产生冗余向量,降低了验证的效率。

针对流水线模型生成激励的方式主要是在引起流水线冲突的条件下,验证流水线冲突是否得到解决,其针对性强,效率较高。但无法验证由非流水线冲突引起的设计错误,验证的完备性较差。

通过以上3种方法的比较可以看出,对设计系统的验证单独使用某一种方法产生测试激励不能达到验证要求。所以在实际应用中,应根据待测系统的具体情况合理运用3种方法生成高效的测试向量,有效减少冗余向量,达到提高验证效率的目的。

2.2 验证完备性的度量

基于仿真的功能验证方法由于受验证时间和电路复杂程度的限制,无法穷举所有的激励向量,因此验证程度是否完备成为验证的另一个关键问题。

图1 基于覆盖率的验证流程

传统的验证方法只能反映发现问题的数目,无法体现验证程度,因此验证人员无法把握验证进度,这使得待测系统验证的目的性不明确。因此,要想提高验证的有效性,需要引入一个反馈环节来监视并提高验证的完备性。图1显示引入覆盖率作为反馈环节的验证流程。通过覆盖率的分析来确定是否需要增加或调整测试向量,以达到理想的验证目的。

覆盖率技术按对验证充分性衡量的不同标准,可分为:代码覆盖率,分支覆盖率,条件表达式覆盖率,路径覆盖率,信号翻转率,功能点覆盖率等。各种评估准则各有优点和局限性,很难给出每种评估准则与其发现错误能力之间的定性关系。而实际应用中,单独使用某个覆盖率准则并不能充分体现验证程度。为了更有效地衡量验证的程度,需要把几种覆盖率结合起来。如代码覆盖反映HDL代码被运行的彻底程度,功能覆盖则从系统的角度来指示哪些功能被测试到,哪些功能没测试到。几种覆盖率高度互补,可以达到很好的验证效果。

3 结论

本文介绍了几种传统的功能验证方法并剖析了其优缺点,并针对基于仿真的功能验证提出解决提高验证效率的方法。采用多种测试向量生成方式相结合和在验证过程中引入覆盖率作为衡量验证程度完备性的反馈,从而大大提高验证过程的效率。

[1]解咏梅,张珩,张福新.基于覆盖率的功能验证方法[J].计算机应用研究,2005(1):23-28.

[2]张蓓莉.微处理器基于功能覆盖率的伪随机验证方法[J].计算机与信息技术,2006(4):59-60.

[3]任宇,王以伍.VLSI设计中一种新型的功能验证方法[J].微计算机信息,2006.

[4]刘卓军,吴尽昭.集成电路验证技术[J].中国基础科学,2007(11):11-13.

[5]顾震宇,虞志益,沈泊,章倩苓.基于仿真的32位RISC微处理器的功能验证方法[J].小型微型计算机系统,2004,25(4):752-756.

TN4

A

1674-6708(2010)32-0137-02

猜你喜欢

测系统自测覆盖率
民政部等16部门:到2025年村级综合服务设施覆盖率超80%
我国全面实施种业振兴行动 农作物良种覆盖率超过96%
4个表现自测经络是否畅通
知识点自测
基于喷丸随机模型的表面覆盖率计算方法
防洪非工程措施设计实例——嘉兴市水文巡测系统项目设计
电快速瞬变脉冲群对核测系统的影响及对策
基于广域量测系统的电力系统综合负荷辨识模型的研究
三维标测系统指导下射频消融治疗房颤的护理观察
基于覆盖率驱动的高性能DSP指令集验证方法