收稿日期:!""#$"%$"&;修返日期:!""#$"#$!#
基金项目:国家“’(%”计划资助项目(!""!))*+*"#");国家自
然科学基金资助项目((&’&(!,"$*)
基于覆盖率的功能验证方法!
解咏梅*,!,张- 珩*,!,张福新*,!
(*. 中国科学院 计算技术研究所,北京 *"""’";!. 中国科学院 研究生院,北京 *"""%&)
摘- 要:随着半导体技术的发展,验证已经逐渐成为大规模集成电路设计的主要瓶颈。首先介绍传统的功能验
证方法并剖析其优缺点,然后引入传统方法的一种改进———基于覆盖率的验证方法,最后介绍了基于覆盖率的
验证方法在一款通用微处理器功能验证中的实际应用。
关键词:功能验证;协同仿真;自测检验;基于覆盖率的方法
中图法分类号:/0%&*. &- - - 文献标识码:)- - - 文章编号:*""*$%(&,(!"",)"*$""!%$"!
12345674$85934: );;526<= 9: >?:<@92:6A B459C9<6@92:
DEF G2:7$H49*,!,+I)JK I4:7*,!,+I)JK >?$L9:*,!
(*. !"#$%$&$’ () *(+,&$%"- .’/0"(1(-2,*0%"’#’ 3/45’+2 () 6/%’"/’#,7’%8%"- *"""’",*0%"4;!. 6/0((1 () 9:45&4$’,*0%"’#’ 3/45’+2 () 6/%;
’"/’#,7’%8%"- *"""%&,*0%"4)
!"#$%&’$:M9@= @=4 8434A2;H4:@ 2C N4H9<2:8?<@25 @4<=:2A27O,3459C9<6@92: 9N P4<2H9:7 @=4 H6Q25 P2@@A4:4<R 2C A6574 N<6A4 9:$
@4756@48 <95<?9@ 84N97:S /=9N 65@9<A4 9:@528?<4N N43456A <2:34:@92:6A 6;;526<=4N 9: C?:<@92:6A 3459C9<6@92:,@=4: 6:6AOT4N 6:8
<2H;654N 6AA @=4N4N @4<=:9U?4N’395@?4 6:8 CA6VS W6N4 2: 6: 6H4A9256@92: :6H48 <2345674$85934: 6;;526<= 9N 9H;25@48 6:8 9@ 9N
;56<@9<6AAO 6;;A948 9: 6 74:456A$;?5;2N4 H9<52;52<4NN25 C?:<@92:6A 3459C9<6@92: 84N97:S
()* +,%-#:>?:<@92:6A B459C9<6@92:;12$X9H?A6@92:;X4AC$<=4<R9:7;12345674$85934: );;526<=
- - 验证是保证集成电路设计正确性的关键。目前,验证所花
费的时间大约占集成电路设计周期的 Y"Z [ ’"Z。随着半导
体技术的发展,集成电路的设计规模按照摩尔定律增长,验证
已经逐渐成为大规模集成电路设计的主要瓶颈[*]。
!" 传统功能验证方法及其优缺点
!# !" 传统功能验证方法
- - 根据仿真结果检验方式的不同,传统功能验证方法大致可
以分为协同仿真和自测检验两类。协同仿真方法(图 *)是将
用户产生的各种测试向量作为激励信号,同时输入设计方案和
参考系统中,并比较两个系统的响应,以此来验证设计方案的
正确性。参考系统是独立于设计方案的可执行模型,被称为
K2A84: \284A,参考系统往往比设计方案更抽象。
- - 自测检验则是把带有自测性质的测试向量作为激励信号
输入设计方案中,由程序的运行结果体现系统的行为。自测检
验的测试向量包括两部分:执行某一特定功能的代码和对系统
行为的判断。
!# $" 优点
- - 协同仿真的测试向量容易获得,其测试向量理论上可以是
任意代码,前提是要保证设计方案与参考系统在接口上保持一
致。在具体实现时,协同仿真的测试向量通常是系统以前的版
本积累下来的测试向量、应用程序或者标准的 W4:<=H65R 等。
因此,协同仿真的测试集都比较大,可以遍历的系统状态也比较
多,所以它可以验证更多的逻辑。自测检验的优势在于其验证效
率非常高,因为它可以准确地证明系统某一特定功能的正确性。
!# %" 不足
- - 协同方针的不足主要表现在两方面:!仿真时间往往都比
较长;"参考系统的正确性难以保证。因为它既可以是完全正
确的系统,也可以是假定正确的系统。参考系统本身不可靠,
主要表现在两方面:!参考系统可能与设计方案的功能定义文
档不符;"参考系统比设计方案更抽象,两个系统的状态集之
间不存在一一对应关系。自测检验的测试向量大都是针对系
统的某些功能,由 ]/^ 设计者和验证人员共同编写的测试程
序。然而人工编写大规模自测程序往往是不可能的,所以自测
检验更适用于证明局部逻辑。传统验证方法的一个共同缺点
是只能反映发现问题的数目,而无法反映验证的程度并进行调
整。所谓验证的程度就是指哪部分逻辑已经被验证过,哪部分
逻辑还有待于进一步验证。因此,需要在验证流程中引入反馈
环节,以便根据已做的工作来指导以后的验证。
$" 基于覆盖率的方法
- - 基于覆盖率的方法[!]是在模拟过程中增加一个新环
节———覆盖率检验,它把覆盖率作为评价模拟完整性的标准以
指导是否进一步产生测试向量,只有达到预期的覆盖率时才会
停止模拟过程。其验证流程如图 ! 所示。基于覆盖率的方法
常常与自动生成测试向量的方法[%,#]结合在一起使用。
- - 覆盖率评估准则[,]有很多,其中包括功能覆盖准则、代码
覆盖准则、翻转覆盖准则和 >X\ 覆盖准则等。代码覆盖准则
·%!·第 * 期 - 解咏梅等:基于覆盖率的功能验证方法 -
万方数据
主要包括行覆盖准则、分支覆盖准则和路径覆盖准则等。到目
前为止,还很难给出每种评估准则与其发现错误能力之间的定
性关系,应该采用哪种评估准则只能依靠经验来判断。功能覆
盖准则是目前普遍认可的全面的覆盖率评估准则,因为它的评
估开销比较小,其含义比较明确,而且很多商业工具都支持功
能覆盖率分析。
!" #$ 测试向量
! ! 基于覆盖率方法的测试向量通常是采用随机的方法自动
生成。为了加速反馈过程,自动生成的测试向量需要满足一定
的约束条件。在定义约束条件时,必须同时兼顾覆盖率模型和
系统的功能定义文档两方面,不满足功能定义文档的覆盖率模
型和约束条件都应该被去掉。
!" !$ 实现
! ! 基于覆盖率方法实现的关键在于覆盖率定义、测试向量产
生和仿真结果检验三方面。前面谈到了在定义覆盖率时应该
严格遵循系统的功能定义文档,所有不可能出现的状态和状态
转换都应该被去掉。目前,普遍采用随机的方法自动产生测试
向量。我们可以对任何一个输入端口施加随机激励,只要保证
随机激励的宽度与相应输入端口的宽度相等。然而这往往不
够,尤其是检查边界值覆盖率的时候,因此有必要修改自动产
生激励的策略,分段随机法就是其中之一。顾名思义,分段随
机法就是将每个随机激励划分成若干个分量,然后在分量的层
次上进行随机激励,因此,它可以有效地提高边界值的覆盖率。
分段遵循以下两点:!把某个输入端口分成若干段,每一段的
宽度都应该比较小,而且需要特殊考虑的某几位应该被划分成
一个独立的段。"对每一段施加随机激励,并将所有的随机激
励拼成整个端口的随机激励。本文 "# " 节介绍了分段随机法
在浮点乘除模块覆盖率验证中的应用实例。仿真结果检验是
基于覆盖率方法的难点。因为覆盖率的方法只是对模拟验证
提供了一个量化的分析,表明当前所做的验证工作的程度,可
是它不能证明系统的行为是正确的,甚至不能发现设计中存在
的错误。所以必须借助某种途径来证明覆盖率分析过程中系
统的行为是否正确,目前普遍采用两种方法:!模拟过程采用
协同仿真的方法进行,比较两个系统每个时钟周期的响应,其
优点是比较准确;"对设计方案和参考系统施加相同的激励,
但只在模拟结束后比较寄存器的值和内存的值,其优点是模拟
速度比较快。
!" %$ 实现效果
! ! 基于覆盖率的方法是模拟和证明的一种折中。覆盖率分
析不是一种独立的方法,必须依附于模拟过程,但它为模拟的
完整性提供了量化的分析。覆盖率分析的意义在于增强设计
者的信心,但是覆盖率分析无法证明系统的正确性,也就是说
$%%&的覆盖率并不等于 $%%&没错。
%$ 基于覆盖率的验证方法的实际应用
%" #$ 模拟仿真平台和覆盖率评估平台
我们采用 ’()*+,(,公司的 -.’ /# % 作为模拟仿真平台,并
且以 ’()*+,(,公司的 -012作为覆盖率评估平台。
%" !$ 覆盖评估准则
! !($)功能覆盖准则。功能覆盖率分析需要 134 设计者和
验证人员协作完成。首先由 134设计者提出需要被覆盖的测
试点和覆盖率指标,然后验证人员根据 134 设计者提供的信
息建立覆盖率模型并设法产生测试向量进行覆盖率分析。最
后,验证人员收集分析的结果并向 134 设计者进行反馈。我
们在进行功能覆盖率分析时发现导致功能覆盖率不高的原因
主要有两个:!验证人员在建立覆盖模型时没有考虑到某些状
态和状态转换虽然在理论上是合法的,然而实际上却是不可能
出现的,所以,去掉那些状态和状态转换不会影响覆盖率分析
的效果。"有些测试点的触发条件非常复杂,一般的测试向量
很难覆盖这种测试点,这时往往需要手工编写测试向量,人为
地产生触发条件。
(5)行覆盖准则和分支覆盖准则。我们在进行行覆盖评
估和分支覆盖评估时发现每个模块的行覆盖率都是 $%%&,而
分支覆盖率却在 67& 8 $%%&之间不等。这说明行覆盖率是
分支覆盖率的一个乐观的上界,也就是说分支覆盖评估包括行
覆盖评估。
%" %$ 分段随机法
! ! 下面以单精度浮点数的产生为例介绍分段随机法的分段
过程。随机产生的单精度浮点数只需满足一个约束条件,即
9000 :7; 标准。很多工具都提供了随机函数,所以很容易得
到一个这样的数,但是有时必须要考虑产生某些特殊值的情
形,如 <=)*>?@ABC=D,9)EB)BF(,G)@),’)@) 和 H=>*,这往往不是直
接调用随机函数就能办到的。可以从三种不同粒度来产生一
个单精度浮点数:
! !($)直接调用随机函数产生一个 "5 位的随机数。
! !(5)将 "5 位的单精度浮点数分成 ’BI)J0K+ 和 L>@MF 两部
分,如图 " 所示。’BI)J0K+ 和 L>@MF 分别调用随机函数产生两
个随机数、N 位 ’BI)J0K+和 5" 位 L>@MF。
"$ 5" 55 %
’BI)J0K+ L>@MF
将 "5 位的单精度浮点数分成两部分
"$ "% 5" 55 %
’BI) 0K+ L>@MF
"5 位的单精度浮点数被分成三部分
"% 5: 5/ 5"
0K+JO 0K+JA
0K+被细分成 0K+JO和 0K+J$ 两部分
55 5$ 5% $N $/ $7 $5 $$ 6:! ;" ! ! %
L$ L5 L" L; L7 L/ L:
L>@MF被细分成 L$,L5,L",L;,L7,L/ 和 L: 七部分
将 "5 位的单精度浮点数分成十部分
图 "! 对 "5 位单精度浮点数分段
(")将 "5 位的单精度浮点数分成十部分。首先分成 ’BI),
0K+和 L>@MF三大部分;然后分别对 0K+ 和 L>@MF 进行细分,从
每部分的最低位开始,每 ; 位作为一个随机段。(下转第 56 页)
·;5· 计算机应用研究 5%%7 年
万方数据
标明该地质剖面的方向,!"#$%$"&属性标明该地质剖面的位置。
下面的标记表示该剖面垂直于 !轴,在 !轴上的截距为 ’((。
) ) * +,-+./ ,-0$"& 1 23!456782 #,9 1 2’: ;<02 <"#$%$"& 1 ’(( =
) )(>)通过 ?@A7时序文件描述地质剖面间的串行和并行关
系,但不使用布局文件。如下时序文件描述了三个并行剖面:
) ) * <+, =
) ) * +,-+./ ,-0$"& 1 23!456782 #,9 1 2B’((: ;<02 <"#$%$"& 1 ’(( =
) ) * +,-+./ ,-0$"& 1 23!4567C2 #,9 1 2D’((: ;<02 <"#$%$"& 1 ’(( =
) ) * +,-+./ ,-0$"& 1 23!4567E2 #,9 1 2F’((: ;<02 <"#$%$"& 1 ’(( =
) ) * G <+, =
) )(.)客户端采用 3<-&67技术显示这些剖面。由于 3<-&67
通过视点变换来旋转、平移和缩放图像,在进行这些操作时,地
质服务器无须重新计算和传输地质剖面。当移动其中的某一个
剖面时,地质服务器只需计算和传输变化的剖面,如让 !方向的
剖面顺序移动 .帧,地质服务器返回的 ?@A7时序文件为
) ) * #-H =
) ) * +,-+./ ,-0$"& 1 23!456782 #,9 1 2B’(’: ;<02 <"#$%$"& 1 ’(’ =
) ) * +,-+./ ,-0$"& 1 23!456782 #,9 1 2B’(>: ;<02 <"#$%$"& 1 ’(> =
) ) * +,-+./ ,-0$"& 1 23!456782 #,9 1 2B’(.: ;<02 <"#$%$"& 1 ’(. =
) ) * G #-H =
) ) 3<-&67将缓存 "方向和 #方向的剖面,只顺序刷新 ! 方
向的剖面。增量式解决方案将旋转、平移和缩放操作从地质服
务器转移到 ?@A7 客户端完成。地质服务器只需计算和传输
发生变化的剖面,从而有效降低了地质服务器的资源消耗量和
网络带宽占用量。
!" 结束语
) ) 远程地质模型系统实现了地质数据的远程共享和互操作。
地质用户不仅可以浏览远程服务器上的一种地质属性数据
(图 I),还可以对比显示同一地质区域的不同地质属性数据
(图 ’),以及地质属性数据的三维切片显示和立体显示(图
J)。通过编辑存储在客户端的 ?@A7布局文件,用户还能根据
需要改变显示布局。然而,地质服务器资源分配策略和地质运
算结果的缓存策略还需进一步优化。此外,还要研究在网络条
件较差的情况下,如何保证客户端、?@A7服务器和地质服务器
之间的通信可靠性。
图 I) 一种地质属性数据
参考文献:
[’] K,--/L"M- N O N,,$% &’: P& 4Q-,0$&0 A&/R#%,D ?%+&/+,/ S", 6-"T
#9$-&9-# U+%+ 4B9V+&0-[ W]: !,"9--/$&0# "S !-%,"L-RQ W"Q<R%-,
W"&S-,-&9-,?!4 >XX>Y,’ZZ>: JZTIX:
[>] KL+DL"9[ O 4,$% &’: AQ<L-Q-&%+%$"& "S + \",L/ \$/- \-] ?-,M-, S",
%V- 3$L +&/ 6+# A&/R#%,D[W]: !,"9--/$&0# "S !-%,"L-RQ W"Q<R%-,
W"&S-,-&9-,?!4 .(>’X,’ZZY: >^.T>^Z:
[.] 刘俊青,陆现彩,徐士进,等:基于 8@7 的地质信息共享与交换
模型[N]_ 物探化探计算技术,>((’,>.(>):’J(T’JY_
[X] 3<-&\",[#: V%%<:G G ‘‘‘: L09: 9"Q: 9& G "<-&‘",[# G[4K G 37]:
[Y] ?D&9V,"&$F-/ @RL%$Q-/$+ A&%-0,+%$"& 7+&0R+0-(?@A7 >: ()?<-9$S$T
9+%$"&: V%%<:G G ‘‘‘: ‘.: ",0 G aO G >((( G \UT#Q$L>(T>((((Z>’ G[4K G
37]:
[J] ?@A7TU3@: V%%<:G G ‘‘‘: ‘.: ",0 G aO G #Q$LT/"Q[4K G 37]:
作者简介:
闫艳,硕士研究生,研究方向为计算机图形图像、网络多媒体技术;马殿
富,教授,博士生导师,研究方向为图形图像处理、海量信息处理和网络
计算。
(上接第 >X 页)4B< 被分成两部分:X 位 4B<bV 和 X 位 4B<bL;
c,+9%被分成七部分:c’,c>,c.,cX,cY,cJ 和 cI。分段过程如
图 . 所示。因为单精度浮点数的第 >> 位可以用来区别 d&+&
和 ?&+&,所以我们选择将 c’ 和 c> 分成两部分,而不是合并成
一个随机段。像这样对随机段进行细化,直到可以通过设置权
重来影响随机产生的单精度浮点数。
我们在浮点乘除模块分别采用上述三种方法来产生浮点
运算的两个源操作数,得到的功能覆盖率依次是 YJe,JYe和
ZXe,通过调整权重可能会得到更高的覆盖率。
!" 结论
) ) 本文首先介绍了几种传统的功能验证方法并剖析了其优
缺点,然后引入了一种带反馈的验证方法———基于覆盖率的方
法,最后介绍了基于覆盖率的方法在一款通用微处理器功能验
证中的实际应用。
参考文献:
[’] P 4M+&#,P ?$L]R,%,$% &’: cR&9%$"&+L f-,$S$9+%$"& "S 7+,0- P?AW#
[W]: !,"9--/$&0# "S %V- .Y%V U-#$0& PR%"Q+%$"& W"&S-,-&9-,?+&
c,+&9$9",W+L$S",&$+,g?P,PW@ !,-##,’ZZ^: JY(TJYY:
[>] @ K-&;+Q$&,$% &’: P ?%R/D $& W"M-,+0-TU,$M-& a-#% 6-&-,+%$"&[W]:
!,"9--/$&0# "S %V- .J%V U-#$0& PR%"Q+%$"& W"&S-,-&9-,5-‘ 3,L-+&#,
7"R$#$+&+,g?P,PW@ !,-##,’ZZZ: ZI(TZIY:
[.] P PV+,"&,U 6""/Q+&,$% &’: a-#% !,"0,+Q 6-&-,+%$"& S", cR&9%$"&+L
f-,$S$9+%$"& "S !"‘-,!W !,"9-##",# $& AK@[W]: !,"9--/$&0 "S .>&/
U-#$0& PR%"Q+%$"& W"&S-,-&9-,?+& c,+&9$#9",W+L$S",&$+,g?P,
PW@ !,-##,’ZZY: >IZT>^Y:
[X] N ?V-&,N P],+V+Q: P Oa7 P]#%,+9%$"& a-9V&$HR- S", !,"9-##", @$T
9,"+,9V$%-9%R,- f+L$/+%$"& +&/ a-#% 6-&-,+%$"&[ N]: N"R,&+L "S 4L-9T
%,"&$9 a-#%$0:aV-",D +&/ P<<L$9+%$"&,>(((,(J):JIT^’:
[Y] ? a+#$,+&,$% &’: W"M-,+0- @-%,$9# S", cR&9%$"&+L f+L$/+%$"& "S h+,/T
‘+,- U-#$0&#[ N]: A444 U-#$0& +&/ a-#% "S W"Q<R%-,#,>((’,’^
(X):.JTXY:
作者简介:
解咏梅(’ZI^T),女,硕士研究生,主要研究方向为通用微处理器设计
及验证;张珩(’),男,博士研究生,主要研究方向为通用微处理器
设计及验证;张福新(’ZIJT),男,博士研究生,主要研究方向为通用微
处理器设计及性能评估。
·^>· 计算机应用研究 >((Y 年
万方数据