基于导航接收机的DSP外设存储器行进测试技术
扫描二维码
随时随地手机看文章
基于导航接收机的DSP外设存储器行进测试技术
DSP作为电子系统中数字运算的核心,所操作数据的正确性是系统正常运行的基本保证。以导航接收机中的DSP应用为例,捕获跟踪、信号解调、电文格式转换、多径抑制、抗干扰等实时任务每时每刻都在进行比特信息的交互。作为系统数据的中转站,存储器的任何物理故障都有可能导致系统出现严重的异常。因此,需要一种快速有效的存储器测试算法对DSP外设存储器进行实时功能验证和检测,确保器件没有物理故障[1]。本方法专门针对存储器中AF、SAF、SOF、TF、CF故障的检测,如图1中虚线框内所示。
在已有的故障检测算法中,Checkerboard算法的测试向量类似于国际象棋中黑白相间的棋盘格,使用0-1间隔的测试序列写入存储器,运行时间为O(N),但故障覆盖率较低[2]。Galpat算法遍历了每个比特对其他比特的影响,可以检测所有非链接的静态故障,但运行时间为O(N2)[3]。在现有工艺条件下,完成一片兆字节容量的存储器的Galpat测试需要几百年。行进算法是工业中经常使用的存储器测试算法,如MATS++、March X、March C-等[4],其运行时间为O(N),具有较高的故障覆盖率,但通常不能覆盖所有静态非链接故障。
本文在考虑存储器静态非链接故障的基础上,以字作为基本检测单元,提出了一种可以检测所有SAF、TF、AF、SOF、CF故障的行进测试方案,其运算量为(11N+5v)/u+2N,其中,每个字为u比特,u=2v。
1 故障模型与定义
本文采用文献[2]通用的术语定义。
1.1 术语定义
为了方便描述以字作为基本检测单元的故障检测方法,补充定义以下术语:
· u:一个字的比特数,u=2v(v为非负整数)。
· P:u比特的测试向量字。
· P0:全0测试向量字。P0=bu…b2b1,bu=…=b2=b1=0。
· M:某个基于比特的行进测试算法,由一系列行进序列组成。
· MP:M对应的基于字的行进测试算法,P是u比特的测试向量字。
1.2 存储器故障模型
存储器静态非链接故障包括单个单元故障和耦合故障。
(1)单个单元故障
单个单元故障包括:SAF、SOF、AF和TF,其分类及检测序列如表1所示。
(2)耦合故障
耦合故障是一个单元的逻辑值受另一个单元的影响。包括:①CFin故障(inversion Coupling Fault)是指单元i翻转会导致单元j翻转;②CFid故障(idempotent Coupling Fault)是指单元i翻转会导致单元j的逻辑值为某个定值(0或1);③CFst故障(state Coupling Fault)是指单元i赋值为某个定值时,会导致单元j的逻辑值为某个定值(0或1)。耦合故障列表如表2所示。
[!--empirenews.page--]
2 基于字的行进算法
2.1 基于比特的行进与基于字的行进
基于比特的行进会遍历所有的比特单元,而基于字的行进则是遍历所有的字单元。对于N比特的存储器,两种行进方式的差异如表3所示。
目前大多数存储器读写操作是基于字的。对于N比特存储器,如果一个字为u比特,则对于相同的行进序列,基于字的行进与基于比特的行进相比,测试时间减少到原来的1/u;基于字的行进测试缺点在于故障检测率会下降,需要更多的测试向量字来提高故障检测率。
2.2 字中耦合故障和字间耦合故障
耦合故障分为字中耦合和字间耦合两种情况,如图2所示。字中耦合故障是指同一个字内的两个比特i和j,比特i的状态变化或操作会引起比特j逻辑值故障;字间耦合故障是指比特i和j分别处于两个不同的字中,比特i的状态变化或操作会引起比特j逻辑值故障。
由图2可以看出,如果M可以检测出所有的CF故障,则MP0可以检测出所有的字间耦合故障,但通常只能测出一部分字中耦合故障。
2.3 基于字的故障检测
为了能够检测出所有的SAF、TF、AF、SOF、CF故障,考虑以字为基本检测单元,采用下面的行进序列进行故障检测:
其中:
存储器共N比特,每个字为u比特,u=2v。
P0=bu…b2b1,则bu=…=b2=b1=0
PAj=bu…b2b1,则当i mod 2j>2j-1时,bi=1,i=1,2,…,u。
PBj=bu…b2b1,则当i≤j时,bj=1;当i>j时,bi=0。
结论1:M0可以检测所有的SAF、TF、AF故障,以及所有的<↑;→>、<↓;→>、<;←>、<↑;←>、<↓;←>、<;←>、<↑;>、<↓;>、<↑;1/0>、<↓;0/1>、<0;0/1>、<1;1/0>故障。
证明:M0对应的基于比特的行进算法为March C-。March C-可以检测出所有的SAF、TF、AF、CFin、CFst、CFid[4],因此M0可以检出所有的SAF、TF、AF、字间CFin、字间CFst、字间CFid。下面考察M0对字中CF故障的检测。
由于M0包含行进序列因此可以检测出字中耦合比特由0翻转为1引起因此可以检测出字中耦合比特由1翻转为0引起的<↓;0/1>、<0;0/1>故障;又因为M0经历了写0写1又写0的两次比特反转操作,所以可以检测出所有的单向翻转CFin故障(包括<↑; →>、<↓;→>、<;←>、<↑;←>、<↓;←>、<;←>)和单次翻转CFin故障(包括<↑;>和<↓;>)。结论1得证。
结论2:March-CW(即M0+M1)可以检测所有的SAF、TF、AF、SOF、CFid、CFst故障,以及除了<;>之外的所有CFin故障。
证明:由于M1包含行进序列因此M1可以检测出所有SOF故障。
由于M1包含行进序列),使用了0-1间隔的测试向量字,因此可以检测出所有奇位比特反转对偶位引起的<↑;1/0>、<↓;0/1>、<0;0/1>、<1;1/0>字中耦合故障,以及所有偶位比特反转对奇位引起的上述故障。M1其他行进序列所使用测试向量字0-1之间的间隔按2的幂次增加,因此可以检测出所有奇位比特反转对奇位引起的<↑;1/0>、<↓;0/1>、<0;0/1>、<1;1/0>字中耦合故障,以及所有偶位比特反转对偶位引起的上述故障。所以M1可以检测出所有<↑;1/0>、<↓;0/1>、<0;0/1>、<1;1/0>字中耦合故障。
结合结论1,结论2得证。
结论3:M0+M1+M2可以检测所有的SAF、TF、AF、SOF、CF故障。 [!--empirenews.page--]
证明:M2行进序列所使用测试向量字遍历了字中的每一个比特可能引起的故障,因此M2可以检测出所有的字中耦合故障。
结合结论2,结论3得证。
3 分析与应用
3.1 运算量分析
运算量是存储器实时检测的重要衡量指标,如表4所示。
由表4可以看出,在具有相同故障检测能力的前提下,M0+M1+M2的检测时间远小于、March-17N和Galpat;当u较大时,M0、M0′、March-CW、M0+M1+M2的检测时间会大大缩短。
3.2 实例应用
对1 MB的RAM,一个字由32 bit组成,则u=32、v=5,50 MHz的总线读写速率,DSP处理速度按500 MHz计算。使用上述检测算法对DSP外设存储器进行实时功能验证和检测,结果如表5所示。
可见,M0+M1+M2可以在2 s内完成1 MB存储器的检测,故障覆盖所有的SAF、SOF、TF、AF、CFin、CFst、CFid。M0+M1+M2的检测时间虽然多于M0、M0′、March-CW,但它可以检测的故障种类更多;M0+M1+M2可以检测出所有能检测出的故障,检测时间从15 s降低到1.6 s。
本文考虑了存储器所有的静态非链接故障,提出了一种可以检测所有SAF、TF、AF、SOF、CF的行进测试方案,用于高效快速地完成DSP外设存储器测试。
与March-CW、、March-17N进行比较,结果表明,本文方法能检测出March-CW遗漏的故障,且本文方法的运算量为(11N+5v)/u+2N(其中,每个字为u比特,u=2v),速度远优于的11N和March-17N的17N/u+10N。将该方法用于DSP外设存储器功能验证中,在数秒内完成了兆字节存储器的检测,从而可以实时完成DSP外设存储器的资源验证。此外,该方法还可以扩展应用于其他嵌入式处理器的外设存储器测试中。