基于導(dǎo)航接收機(jī)的DSP外設(shè)存儲器行進(jìn)測試技術(shù)
DSP作為電子系統(tǒng)中數(shù)字運(yùn)算的核心,所操作數(shù)據(jù)的正確性是系統(tǒng)正常運(yùn)行的基本保證。以導(dǎo)航接收機(jī)中的DSP應(yīng)用為例,捕獲跟蹤、信號解調(diào)、電文格式轉(zhuǎn)換、多徑抑制、抗干擾等實(shí)時任務(wù)每時每刻都在進(jìn)行比特信息的交互。作為系統(tǒng)數(shù)據(jù)的中轉(zhuǎn)站,存儲器的任何物理故障都有可能導(dǎo)致系統(tǒng)出現(xiàn)嚴(yán)重的異常。因此,需要一種快速有效的存儲器測試算法對DSP外設(shè)存儲器進(jìn)行實(shí)時功能驗(yàn)證和檢測,確保器件沒有物理故障[1]。本方法專門針對存儲器中AF、SAF、SOF、TF、CF故障的檢測,如圖1中虛線框內(nèi)所示。
在已有的故障檢測算法中,Checkerboard算法的測試向量類似于國際象棋中黑白相間的棋盤格,使用0-1間隔的測試序列寫入存儲器,運(yùn)行時間為O(N),但故障覆蓋率較低[2]。Galpat算法遍歷了每個比特對其他比特的影響,可以檢測所有非鏈接的靜態(tài)故障,但運(yùn)行時間為O(N2)[3]。在現(xiàn)有工藝條件下,完成一片兆字節(jié)容量的存儲器的Galpat測試需要幾百年。行進(jìn)算法是工業(yè)中經(jīng)常使用的存儲器測試算法,如MATS++、March X、March C-等[4],其運(yùn)行時間為O(N),具有較高的故障覆蓋率,但通常不能覆蓋所有靜態(tài)非鏈接故障。
本文在考慮存儲器靜態(tài)非鏈接故障的基礎(chǔ)上,以字作為基本檢測單元,提出了一種可以檢測所有SAF、TF、AF、SOF、CF故障的行進(jìn)測試方案,其運(yùn)算量為(11N+5v)/u+2N,其中,每個字為u比特,u=2v。
1 故障模型與定義
本文采用文獻(xiàn)[2]通用的術(shù)語定義。
1.1 術(shù)語定義
為了方便描述以字作為基本檢測單元的故障檢測方法,補(bǔ)充定義以下術(shù)語:
· u:一個字的比特數(shù),u=2v(v為非負(fù)整數(shù))。
· P:u比特的測試向量字。
· P0:全0測試向量字。P0=bu…b2b1,bu=…=b2=b1=0。
· M:某個基于比特的行進(jìn)測試算法,由一系列行進(jìn)序列組成。
· MP:M對應(yīng)的基于字的行進(jìn)測試算法,P是u比特的測試向量字。
1.2 存儲器故障模型
存儲器靜態(tài)非鏈接故障包括單個單元故障和耦合故障。
(1)單個單元故障
單個單元故障包括:SAF、SOF、AF和TF,其分類及檢測序列如表1所示。
(2)耦合故障 [!--empirenews.page--]
耦合故障是一個單元的邏輯值受另一個單元的影響。包括:①CFin故障(inversion Coupling Fault)是指單元i翻轉(zhuǎn)會導(dǎo)致單元j翻轉(zhuǎn);②CFid故障(idempotent Coupling Fault)是指單元i翻轉(zhuǎn)會導(dǎo)致單元j的邏輯值為某個定值(0或1);③CFst故障(state Coupling Fault)是指單元i賦值為某個定值時,會導(dǎo)致單元j的邏輯值為某個定值(0或1)。耦合故障列表如表2所示。
2 基于字的行進(jìn)算法
2.1 基于比特的行進(jìn)與基于字的行進(jìn)
基于比特的行進(jìn)會遍歷所有的比特單元,而基于字的行進(jìn)則是遍歷所有的字單元。對于N比特的存儲器,兩種行進(jìn)方式的差異如表3所示。
目前大多數(shù)存儲器讀寫操作是基于字的。對于N比特存儲器,如果一個字為u比特,則對于相同的行進(jìn)序列,基于字的行進(jìn)與基于比特的行進(jìn)相比,測試時間減少到原來的1/u;基于字的行進(jìn)測試缺點(diǎn)在于故障檢測率會下降,需要更多的測試向量字來提高故障檢測率。
2.2 字中耦合故障和字間耦合故障
耦合故障分為字中耦合和字間耦合兩種情況,如圖2所示。字中耦合故障是指同一個字內(nèi)的兩個比特i和j,比特i的狀態(tài)變化或操作會引起比特j邏輯值故障;字間耦合故障是指比特i和j分別處于兩個不同的字中,比特i的狀態(tài)變化或操作會引起比特j邏輯值故障。
由圖2可以看出,如果M可以檢測出所有的CF故障,則MP0可以檢測出所有的字間耦合故障,但通常只能測出一部分字中耦合故障。
2.3 基于字的故障檢測
為了能夠檢測出所有的SAF、TF、AF、SOF、CF故障,考慮以字為基本檢測單元,采用下面的行進(jìn)序列進(jìn)行故障檢測:
其中:
存儲器共N比特,每個字為u比特,u=2v。 [!--empirenews.page--]
P0=bu…b2b1,則bu=…=b2=b1=0
PAj=bu…b2b1,則當(dāng)i mod 2j>2j-1時,bi=1,i=1,2,…,u。
PBj=bu…b2b1,則當(dāng)i≤j時,bj=1;當(dāng)i>j時,bi=0。
結(jié)論1:M0可以檢測所有的SAF、TF、AF故障,以及所有的<↑;→>、<↓;→>、<;←>、<↑;←>、<↓;←>、<;←>、<↑;>、<↓;>、<↑;1/0>、<↓;0/1>、<0;0/1>、<1;1/0>故障。
證明:M0對應(yīng)的基于比特的行進(jìn)算法為March C-。March C-可以檢測出所有的SAF、TF、AF、CFin、CFst、CFid[4],因此M0可以檢出所有的SAF、TF、AF、字間CFin、字間CFst、字間CFid。下面考察M0對字中CF故障的檢測。
由于M0包含行進(jìn)序列因此可以檢測出字中耦合比特由0翻轉(zhuǎn)為1引起因此可以檢測出字中耦合比特由1翻轉(zhuǎn)為0引起的<↓;0/1>、<0;0/1>故障;又因?yàn)镸0經(jīng)歷了寫0寫1又寫0的兩次比特反轉(zhuǎn)操作,所以可以檢測出所有的單向翻轉(zhuǎn)CFin故障(包括<↑; →>、<↓;→>、<;←>、<↑;←>、<↓;←>、<;←>)和單次翻轉(zhuǎn)CFin故障(包括<↑;>和<↓;>)。結(jié)論1得證。
結(jié)論2:March-CW(即M0+M1)可以檢測所有的SAF、TF、AF、SOF、CFid、CFst故障,以及除了<;>之外的所有CFin故障。
證明:由于M1包含行進(jìn)序列因此M1可以檢測出所有SOF故障。
由于M1包含行進(jìn)序列),使用了0-1間隔的測試向量字,因此可以檢測出所有奇位比特反轉(zhuǎn)對偶位引起的<↑;1/0>、<↓;0/1>、<0;0/1>、<1;1/0>字中耦合故障,以及所有偶位比特反轉(zhuǎn)對奇位引起的上述故障。M1其他行進(jìn)序列所使用測試向量字0-1之間的間隔按2的冪次增加,因此可以檢測出所有奇位比特反轉(zhuǎn)對奇位引起的<↑;1/0>、<↓;0/1>、<0;0/1>、<1;1/0>字中耦合故障,以及所有偶位比特反轉(zhuǎn)對偶位引起的上述故障。所以M1可以檢測出所有<↑;1/0>、<↓;0/1>、<0;0/1>、<1;1/0>字中耦合故障。
結(jié)合結(jié)論1,結(jié)論2得證。
結(jié)論3:M0+M1+M2可以檢測所有的SAF、TF、AF、SOF、CF故障。
證明:M2行進(jìn)序列所使用測試向量字遍歷了字中的每一個比特可能引起的故障,因此M2可以檢測出所有的字中耦合故障。
結(jié)合結(jié)論2,結(jié)論3得證。
3 分析與應(yīng)用
3.1 運(yùn)算量分析
運(yùn)算量是存儲器實(shí)時檢測的重要衡量指標(biāo),如表4所示。
由表4可以看出,在具有相同故障檢測能力的前提下,M0+M1+M2的檢測時間遠(yuǎn)小于、March-17N和Galpat;當(dāng)u較大時,M0、M0′、March-CW、M0+M1+M2的檢測時間會大大縮短。 [!--empirenews.page--]
3.2 實(shí)例應(yīng)用
對1 MB的RAM,一個字由32 bit組成,則u=32、v=5,50 MHz的總線讀寫速率,DSP處理速度按500 MHz計算。使用上述檢測算法對DSP外設(shè)存儲器進(jìn)行實(shí)時功能驗(yàn)證和檢測,結(jié)果如表5所示。
可見,M0+M1+M2可以在2 s內(nèi)完成1 MB存儲器的檢測,故障覆蓋所有的SAF、SOF、TF、AF、CFin、CFst、CFid。M0+M1+M2的檢測時間雖然多于M0、M0′、March-CW,但它可以檢測的故障種類更多;M0+M1+M2可以檢測出所有能檢測出的故障,檢測時間從15 s降低到1.6 s。
本文考慮了存儲器所有的靜態(tài)非鏈接故障,提出了一種可以檢測所有SAF、TF、AF、SOF、CF的行進(jìn)測試方案,用于高效快速地完成DSP外設(shè)存儲器測試。
與March-CW、、March-17N進(jìn)行比較,結(jié)果表明,本文方法能檢測出March-CW遺漏的故障,且本文方法的運(yùn)算量為(11N+5v)/u+2N(其中,每個字為u比特,u=2v),速度遠(yuǎn)優(yōu)于的11N和March-17N的17N/u+10N。將該方法用于DSP外設(shè)存儲器功能驗(yàn)證中,在數(shù)秒內(nèi)完成了兆字節(jié)存儲器的檢測,從而可以實(shí)時完成DSP外設(shè)存儲器的資源驗(yàn)證。此外,該方法還可以擴(kuò)展應(yīng)用于其他嵌入式處理器的外設(shè)存儲器測試中。