尤志強 羅奇鈞
摘要:通過改進IFDR碼,提出一種基于游程相等編碼的改進FDR(ERFDR)方法.首先,該方法不僅能同時對原測試集的0游程和1游程進行編碼,而且,當相鄰游程相等時還可以用較短的碼字來代替,從而進一步提高了壓縮率.其次,還提出針對該壓縮方法的測試集無關位填充算法,增強提出方法的壓縮效果.實驗結果表明,與FDR,EFDR,IFDR和ERLC相比較,本文提出的方法獲得了更高的壓縮率,降低了測試費用.
關鍵詞:全掃描測試;測試數(shù)據壓縮;無關位;FDR編碼
中圖分類號:TP302 文獻標識碼:A
文章編號:1674-2974(2016)02-0130-05
隨著超大規(guī)模集成(VLSI)電路制造工藝的不斷進步,越來越多的知識產權(IP)核被集成到一個系統(tǒng)芯片(SoC)上,與SoC相關的可測試性和測試方法問題被擺到了重要的位置.近十年來,如何降低測試成本,減少測試應用時間,降低測試功耗成為了研究的熱點問題.
數(shù)據壓縮技術能較好地解決這個問題,而編碼壓縮又是眾多壓縮方法中較好的一種.當前比較成熟的編碼壓縮方法有字典編碼[1]、游程編碼[2]、Huffman碼[3]、Golomb碼[4-5]、FDR碼[6]、EFDR碼[7-8]、IFDR碼[9]等.這些編碼壓縮方法充分利用了測試集中的無關位(X).FDR是一種變長0游程編碼,測試集中的X都被填充為0以增加0游程的長度,當測試集中1的個數(shù)較少時有較好的壓縮效果.EFDR碼和IFDR碼可以同時對0,1游程進行編碼,當測試集中1的個數(shù)較多時,也能取得較好的壓縮效果.然而以上方法均沒考慮等游程的情況.本文在IFDR上進行改進,提出一種基于游程相等的改進FDR(ERFDR),一方面能同時對0,1游程編碼,另一方面當相鄰游程相等時用較短的碼字來代替,以進一步提高壓縮率,減少測試應用時間.
1IFDR編碼
IFDR編碼是一種改進型FDR編碼(Improved FDR).該方法將原測試集看作連續(xù)的0游程和1游程,0游程和1游程共用同一套碼字,并規(guī)定0游程后接1游程,1游程后接0游程.若不是,即0游程后是0游程或者1游程后是1游程,編碼時在兩個相同游程中間添加一個“00”作為標識符.該方法默認從1游程開始編碼,若測試集第一位為0,則在編碼的過程中先必須加個“00”作為標識.表1給出了IFDR的編碼表,可以看出游程長度l和其所在組k的關系為:k=「log2(l+3)-1.前綴中1的個數(shù)和其所在組的關系為:k組的前綴為1k-10,表示有k-1個1再接一個0.對于任一組,前綴和尾部的長度是相等的,組前綴是用來區(qū)分該碼字所在的組(通過前綴的長度),尾部用來確定該碼字所在組中的位置.和FDR編碼表不同的是IFDR編碼表的A1組只包含一個游程長度,且沒有長度為0的游程.用IFDR對0游程和1游程編碼時共用同一套編碼.
為了進一步提高測試壓縮率,本文在IFDR基礎上進行改進,提出一種基于游程相等的改進FDR(ERFDR),編碼表見表2.與IFDR碼類似,ERFDR碼也能同時對0游程和1游程編碼,0游程和1游程共用同一套碼字,且默認從1游程開始編碼.考慮到相鄰游程類型相同的可能性較高,與IFDR碼不同,本文用一位“0”作為標識,則可多壓縮一位.代價是游程長度為2n+1-3的編碼增長2位,其中n為自然數(shù).當這種游程個數(shù)小于相鄰游程類型相同的游程個數(shù)的一半時,該編碼方式有效.可以預見,當測試集中確定位比例越低,該編碼方式越有效.進一步考慮到,每個游程的編碼都是從1開始,且不會連續(xù)出現(xiàn)兩個“0”標識符.我們可以用“00”標識相鄰兩個游程相等的情況,從而取得進一步的壓縮效果.在不發(fā)生混淆的前提下,本文用“0000” 標識相鄰游程類型相同且相等的情況.
總之,提出的方法有如下5個編碼原則:1)若測試集第一個游程為0游程,須加“0”作為標識;2)當相鄰游程類型相同但游程不相等時,在兩游程的編碼之間加“0”標識;3)當相鄰游程長度相等且類型不同時,后一個游程用“00”編碼;4)當相鄰游程長度相等且類型相同時,后一個游程用“0000”編碼;5)為了避免解碼時發(fā)生歧義,當出現(xiàn)連續(xù)3個游程長度相等時,則對第3個游程直接用編碼表編碼,而不使用原則3)和4)編碼.
3無關位的填充方法
大規(guī)模測試數(shù)據中無關位占95%以上,測試數(shù)據壓縮效果的好壞在一定程度上取決于對X的填充.本方法對0,1同時編碼,并充分利用游程長度和類型信息進一步提高測試壓縮率,在對無關位填充的過程中應遵循下列兩個基本原則:
1)盡量使用長游程編碼;
2)盡可能地讓相鄰游程相等.
例如:00XX00X00XXXXXXX11XX11XX10這樣一組測試數(shù)據,若在填充過程中僅僅遵循原則1),則填充后為00000000000000001111111110,用 表2編碼,結果為11100011 110011,共14位.若遵循上述兩原則:0000000000001 1111111111110,用本文的方法編碼為110111 00共8位,減少了6位,壓縮效果明顯改善.本文所用的填充算法(無關位填充算法)如下.
6)FSM控制dec1為高電平,控制k+1位計數(shù)器的減1操作,直到k+1位計數(shù)器的值為3(即0…011)時,out輸出為高電平,T觸發(fā)器的輸出翻轉.
7)當解碼完一個游程后,一直到bit_in為1之前,若bit_in共出現(xiàn)1個“0”,則令out為低電平,且v也為低電平0,表示輸出無效,同時也為下一個游程編碼做準備;出現(xiàn)兩個0時,即“00”,則置load為高電平,通過dload把寄存器的值載入k+1位寄存器中,轉到6);當出現(xiàn)“000”時(共3個時鐘周期),則在前2個時鐘周期置load為高電平,通過dload把寄存器的值載入k+1位寄存器中,轉到6),第3個時鐘周期令out為低電平,v且也為低電平0,表示輸出無效;出現(xiàn)“0000”時,令out為低電平,然后置load為高電平,通過dload把寄存器的值載入k+1位寄存器中,轉到6);當出現(xiàn)“00000”時,重復上述出現(xiàn)4個0的步驟,之后在最后一個時鐘周期令out為低電平,且v也為低電平.
5實驗結果
本文針對ISCAS89標準電路中較大的6個電路,采用mintest測試集在Visual C++平臺上實驗,得出的結果分別與Golomb碼、FDR碼、EFDR碼、IFDR碼以及ERLC[10]碼進行比較,實驗結果見表3.可以看到平均壓縮率均優(yōu)于其他方法,平均壓縮率比Golomb編碼方法提高了將近14%,比FDR和IFDR分別提高了6%和1.84%,比EFDR和ERLC也提高了0.5%.
6結論
本文在IFDR編碼方法的基礎之上進行改進,不僅能同時對0,1串編碼,而且當出現(xiàn)相鄰游程相等時,后一個游程用較短的碼字來代替,進一步提高壓縮率.實驗結果充分驗證了本文提出方法的有效性.該法簡單可行,解碼電路簡單,硬件開銷不高.
參考文獻
[1]TOUBA N. Survey of test vector compression technique [J]. IEEE Design &Test of Computer, 2006,23(4):294-303.
[2]JAS A, TOUBA N. Test vector decompression via cyclical scan chains and its application to testing core-based designs[C]//Proceedings of International Test Conference. New York: IEEE, 1998: 458-464.
[3]JAS A, GOSH-DASTIDAR J, NG M, et al. An efficient test vector compression scheme using selective Huffman coding[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2003, 22(6):797-806.
[4]CHANDRA A, CHAKRABARTY K. Test data compression and decompression based on internal scan chains and Golomb coding[J]. IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems, 2002,21(6):715-722.
[5]CHANDRA A, CHAKRABARTY K. System-on-a-chip test-data compression and decompression architectures based on Golomb codes[J]. IEEE Transactions on Computer Aided Design of Integrated Circuits and Systems, 2001, 20 (3):355-368.
[6]CHANDRA A, CHAKRABARTY K. Frequency-directed run-length(FDR) codes with application to system-on-a-chip test data compression[C]//19th IEEE Proceedings on VLSI Test Symposium. New York: IEEE, 2001: 42-47.
[7]EL-MALEH A, AL-ABAJI R. Extended frequency-directed run-length codes with improved application to system-on-a-chip test data compression[C]//Proceedings of 9th International Conference of Electronics, Circuits and Systems. New York: IEEE, 2002: 449-452.
[8]EL-MALEH A. Test data compression for system-on-a-chip using extended frequency directed ran-length code[J]. IET Computers & Digital Techniques, 2008,2(3):155-163.
[9]歐陽一鳴,郭文鵬,梁華國. 改進型FDR 碼對SoC 測試數(shù)據的壓縮及解壓[J].計算機應用研究, 2008,25(1) :174-177.
OUYANG Yi-ming, GUO Wen-peng, LIANG Hua-guo. Soc test data compression and decompression with improved FDR code[J]. Application Research of Computers, 2008, 25(1):174-177.(In Chinese)
[10]ZHAN W F, EL-MALEH A. A new scheme of test data compression based on equal-run-length coding (ERLC)[J]. Integration the VLSI Journal , 2012, 45(1): 91-98.