孫潔朋,魏建民,閆 華,叢紅艷
(中國電子科技集團(tuán)公司第五十八研究所,江蘇無錫214072)
一種FPGA芯片中DSP模塊的內(nèi)建自測(cè)試方法
孫潔朋,魏建民,閆 華,叢紅艷
(中國電子科技集團(tuán)公司第五十八研究所,江蘇無錫214072)
提出了一種針對(duì)Xilinx Virtex-4/5系列FPGA芯片中嵌入式數(shù)字信號(hào)處理器(DSP)的內(nèi)置自檢測(cè)試(BIST)和故障診斷方法。該方法可以對(duì)DSP電路中乘法器和加法器進(jìn)行有效的測(cè)試,縮短測(cè)試時(shí)間,減少工作量。同時(shí)通過更改DSP的配置信息來實(shí)現(xiàn)全芯片DSP的功能測(cè)試,提高了DSP模塊的測(cè)試故障覆蓋率。
內(nèi)置自檢測(cè);乘法器測(cè)試;加法器測(cè)試;DSP;FPGA;Virtex-4
目前為止已經(jīng)開發(fā)了用于現(xiàn)場(chǎng)可編程門陣列(FPGA)中一些可配置邏輯塊(CLB)、存儲(chǔ)模塊(BRAM)、時(shí)鐘模塊(CMT)等資源的測(cè)試及故障率診斷方法,但是,對(duì)于嵌入式數(shù)字信號(hào)處理器(DSP)內(nèi)核的測(cè)試,除了基本的性能和功能測(cè)試,對(duì)于故障覆蓋率方面的測(cè)試所做的工作還很少。Virtex-4和Virtex-5芯片中都嵌入了DSP內(nèi)核、DSP主要乘法器、加法器和一些邏輯單元,用于執(zhí)行復(fù)雜的數(shù)字信號(hào)處理運(yùn)算。由于電路的復(fù)雜性,想要使故障覆蓋率達(dá)到99%比較困難,尤其是乘數(shù)器和加法器的測(cè)試,因此我們的目標(biāo)是開發(fā)一個(gè)Xilinx FPGA系列芯片中DSP內(nèi)核的BIST方法,用于DSP的故障診斷。這也是本文重點(diǎn)研究的內(nèi)容。
在本文中,我們以Virtex-4系列FPGA芯片為例,提出了一種用于DSP的BIST方法,提高DSP模塊的測(cè)試故障覆蓋率。
Virtex-4 FPGA的基本架構(gòu)如圖1所示。
由圖1可知,芯片由可編程的CLB列、輸入/輸出塊(IOB)、存儲(chǔ)塊BRAM和數(shù)字信號(hào)處理模塊DSP構(gòu)成[1]。不同Virtex-4 FPGA系列(LX、SX或FX)的CLB、IOB、BRAM和DSP的行數(shù)和列數(shù)不同。圖1中的DSP是一個(gè)DSP title,包含兩個(gè)DSP slice,其結(jié)構(gòu)如圖2所示。
圖1 Virtex-4 FPGA的基本架構(gòu)
圖2 DSP slice結(jié)構(gòu)圖
每個(gè)DSP Slice都有一個(gè)后接多路復(fù)用器的2輸入乘法器和一個(gè)3輸入加法器/減法器。對(duì)于加/減法單元,其可以實(shí)現(xiàn)不同的加/減邏輯組合。其公式為:
式(1)中P是輸出端口,X、Y和Z是多路復(fù)用器。根據(jù)OPMODE的設(shè)置來決定X、Y、Z的選擇結(jié)果。CIN項(xiàng)為進(jìn)位輸入,SUBTRACT控制加或減,將其設(shè)置為0則為加法,1為減法[2]。這個(gè)結(jié)構(gòu)就是2級(jí)CLA加法器,如圖3所示。
圖3 2級(jí)CLA加法器結(jié)構(gòu)圖
DSP的乘法器實(shí)現(xiàn)原理,官方數(shù)據(jù)給的較少。查閱相關(guān)資料,同時(shí)基于面積和性能分析得出結(jié)論,即乘法器的實(shí)現(xiàn)是采用Booth編碼乘法器。
在文獻(xiàn)[3]中,作者提到Virtex-4中的DSP內(nèi)核是由線性反饋移位寄存器(LFSR)生成,可以采用偽隨機(jī)激勵(lì)來測(cè)試,但沒給出具體的測(cè)試算法或測(cè)試程序來測(cè)試DSP中的加法器和乘法器,也沒有提到能檢測(cè)到的故障率覆蓋范圍。
在文獻(xiàn)[4]中,作者采用Booth/Wallace樹的方法來測(cè)試乘法器,提高故障覆蓋率。如圖4所示,該方法使用8位二進(jìn)制計(jì)數(shù)器,生成測(cè)試方案所需要的任何數(shù)據(jù),可以適應(yīng)任何位寬的乘法器并獲取故障覆蓋99%的范圍[4]。
圖4 乘法器結(jié)構(gòu)圖
一種方法是4×4算法,其中4個(gè)最高有效位(MSB)組成乘法器一輸入端口,4個(gè)最低有效位(LSB)組成另一輸入端口,用8位計(jì)數(shù)器的高低4位組成輸入激勵(lì),然后重復(fù)運(yùn)行。另一種方法為5×3算法,5個(gè)MSB位組成Booth編碼乘法器的一個(gè)輸入端口,3個(gè)LSB組成另一個(gè)端口。然而,我們不知道哪兩個(gè)乘數(shù)輸入端口與Booth編碼相關(guān)聯(lián)。因此,無法證明5×3算法是最好的測(cè)試方法。
為了提高測(cè)試覆蓋率,我們采用5×3和3×5兩個(gè)測(cè)試算法相結(jié)合的方法來確保我們?cè)趦蓚€(gè)測(cè)試序列之中將5個(gè)MSB應(yīng)用到了Booth編碼端口。這雖然會(huì)使測(cè)試時(shí)間加倍,但也只是增加了從256到512的測(cè)試向量的數(shù)量,測(cè)試時(shí)間不算太長。表1所示為不同算法的乘法器覆蓋率,這些算法適用于任何位寬的乘法器。
表1 乘法器測(cè)試覆蓋率
加法器的實(shí)現(xiàn)原理同樣是基于資料和理論分析,確定采用超前進(jìn)位加法器(CLA)來實(shí)現(xiàn)。
在文獻(xiàn)[5]中,作者給出了超前進(jìn)位加法器(CLA)的BIST方法,即通過測(cè)試模式發(fā)生器(TPG)產(chǎn)生2×(N+1)個(gè)測(cè)試向量序列來測(cè)試1個(gè)N位加法器。TPG由1個(gè)N+1位移位寄存器、N個(gè)異或門、N個(gè)XNOR門和逆變器組成。然而通過研究測(cè)試,該方案并不能保證故障覆蓋率達(dá)到100%,還需要兩個(gè)額外的測(cè)試項(xiàng)來檢測(cè)缺失的測(cè)試向量。為了提高測(cè)試故障覆蓋率,這里對(duì)TPG進(jìn)行簡單修改來產(chǎn)生這兩個(gè)缺失的向量,如圖5所示,通過用觸發(fā)器代替環(huán)形計(jì)數(shù)器中的逆變器,并使用觸發(fā)器的Q-bar輸出提供給環(huán)形計(jì)數(shù)器。對(duì)TPG的這種微小修改產(chǎn)生了2×(N+2)個(gè)測(cè)試載體序列,使得加法器測(cè)試實(shí)現(xiàn)了100%的故障覆蓋率。
圖5 加法器測(cè)試架構(gòu)
DSP的BIST方案是兩個(gè)TPG將相同的測(cè)試模式和激勵(lì)同時(shí)發(fā)送到DSP Title,每個(gè)TPG驅(qū)動(dòng)DSP Title中相同位置的DSP slice,以方便進(jìn)行級(jí)聯(lián)模式的測(cè)試。這里將每個(gè)DSP Title中底部的DSP slice用s0表示,頂部用s1表示。每個(gè)DSP slice的輸出結(jié)果都進(jìn)行兩次比較,如圖6所示,從而形成兩個(gè)圓形比較鏈,一條鏈比較DSP的s0部分,另一條比較DSP的s1部分。因此,每個(gè)DSP slice的輸出都是由兩個(gè)輸出相應(yīng)分析系統(tǒng)(ORA)來監(jiān)測(cè),并與不同title類型同一位置slice的兩個(gè)ORA的輸出進(jìn)行比較。這解決了級(jí)聯(lián)測(cè)試時(shí)使用循環(huán)比較的問題,減少了測(cè)試時(shí)間,同時(shí)使用多個(gè)TPG也克服了TPG測(cè)試向量缺失的問題。
圖6 DSP BIST架構(gòu)
在BIST序列結(jié)束時(shí),ORA的內(nèi)容可以通過寄存器來進(jìn)行回讀。但是,我們關(guān)注的是ORA是否檢測(cè)到故障及有故障時(shí)檢測(cè)到的內(nèi)容。因此,我們利用CLB中的邏輯資源,設(shè)計(jì)一個(gè)重復(fù)的判決器,在BIST結(jié)束時(shí),提供1 bit的信息指示pass/fail,使得存儲(chǔ)器回讀流程簡化,因?yàn)镕PGA中的DSP模塊是重復(fù)的單元,由于重復(fù)單元出現(xiàn)重復(fù)故障的概率較高,而這里的測(cè)試結(jié)構(gòu)又是比較測(cè)試結(jié)果,為避免重復(fù)故障帶來的測(cè)試問題,根據(jù)現(xiàn)有的測(cè)試條件,設(shè)計(jì)如下的測(cè)試結(jié)構(gòu),如圖7所示,這樣既可以減少無故障BIST序列的總測(cè)試時(shí)間,又可以避免重復(fù)故障帶來的問題。
圖7 ORA的實(shí)現(xiàn)框圖
圖7中,golden1和golden2為機(jī)臺(tái)測(cè)試中預(yù)先設(shè)定的模型。判斷時(shí)必須3條通路都正確才能輸出高電平,否則就說明某個(gè)或多個(gè)DSP單元有故障。
DSP的BIST序列與DSP陣列大小無關(guān),在進(jìn)行DSP測(cè)試時(shí),激勵(lì)將達(dá)到所有的DSP輸入端,通過反復(fù)更新配置重新進(jìn)行測(cè)試,直到所有向量都被測(cè)試到。
DSP的BIST序列主要有3種模式——乘法器、加法器和級(jí)聯(lián),如表2所示。
在代碼設(shè)計(jì)時(shí),每個(gè)BIST序列為1024個(gè)時(shí)鐘周期,分為4組,每組256個(gè)時(shí)鐘周期(表中的“ccs”)。測(cè)試模式根據(jù)設(shè)計(jì)要求輸入到DSP slice中。
乘法器的BIST測(cè)試,通過設(shè)計(jì)計(jì)數(shù)器,采用5×3和3×5測(cè)試算法,將計(jì)數(shù)器的高5或高3位作為一個(gè)乘法器輸入端口,低3或低5位作為另一端口,經(jīng)過4組時(shí)鐘周期的運(yùn)算,完成乘法器BIST的測(cè)試。
表2 BIST測(cè)試序列
兩級(jí)CLA加法器的BIST測(cè)試,同樣是在4組時(shí)鐘周期中交替更換配置模式,有所不同的是,在每組周期內(nèi),一半時(shí)間測(cè)試第一級(jí)加法器(見圖3),另一半時(shí)間測(cè)試第二級(jí)加法器。由于C端口是加法器和累加器中唯一的48位外部輸入端口,需要在兩個(gè)時(shí)鐘周期里加載每一個(gè)測(cè)試矢量到加法器中。在每組時(shí)鐘周期里,在第一個(gè)時(shí)鐘周期,97位測(cè)試矢量通過Y或Z多路復(fù)用器加載到累加器寄存器中,可以測(cè)試到該模式下的輸出P(見公式1)。在第二時(shí)鐘周期,通過C端口輸入48位測(cè)試向量,通過Y或Z多路復(fù)用器,而P位中的48位向量寄存器反饋到X或Z多路復(fù)用器,CIN或SUBTRACT的值加載到加法器上,完成一次加法器測(cè)試。以此類推,完成所有加法器測(cè)試項(xiàng)。
每個(gè)DSP title中的兩個(gè)DSP slice都可以與相鄰的DSP級(jí)聯(lián)(除了最底層和最頂層的DSP slice)。測(cè)試模式參考表2,其中P0表示s0,P1表示s1,方法和加法器類似,這里不再贅述。
根據(jù)設(shè)計(jì)方案開發(fā)了DSP的BIST verilog測(cè)試代碼,用CLB資源產(chǎn)生激勵(lì),生成移位寄存器、計(jì)數(shù)器和ORA,驅(qū)動(dòng)DSP以完成DSP的各項(xiàng)測(cè)試。這里以Virtex-4的xc4vlx25為例,其他型號(hào)的芯片只需用腳本處理一下程序文件即可使用。代碼完成后綜合產(chǎn)生ncd文件。為檢驗(yàn)程序設(shè)計(jì)的正確性,在上機(jī)臺(tái)測(cè)試前先進(jìn)行仿真,圖8所示分別為加法器和乘法器仿真結(jié)果圖。
圖8 乘法器和加法器仿真結(jié)果
由圖8可知,ORA結(jié)果為1,即pass。然后根據(jù)ncd文件生成RBT文件,轉(zhuǎn)成適合機(jī)臺(tái)的測(cè)試碼進(jìn)行測(cè)試。機(jī)臺(tái)測(cè)試設(shè)備及測(cè)試板如圖9所示。
圖9 機(jī)臺(tái)測(cè)試設(shè)備及測(cè)試板
在機(jī)臺(tái)上測(cè)試,導(dǎo)出的測(cè)試數(shù)據(jù)如圖10所示。
由圖10可知,測(cè)試結(jié)果通過(代碼pass時(shí)會(huì)直接跑下一個(gè)代碼,fail時(shí)會(huì)停頓,后面直接給出錯(cuò)誤數(shù)據(jù)),由于V4和V5系列芯片的DSP架構(gòu)大致相同,因此該BIST方法同樣適用于Virtex-5芯片的DSP BIST。
圖10 機(jī)臺(tái)測(cè)試結(jié)果
本文給出了DSP的一種BIST方案,通過闡述乘法器和加法器原理,給出DSP的相關(guān)測(cè)試方案,開發(fā)代碼并在機(jī)臺(tái)上測(cè)試通過,說明該方案的可行性及有效性,既提高了DSP模塊的測(cè)試故障覆蓋率,也為以后類似的乘法/加法器等復(fù)雜電路測(cè)試提供一種有效的測(cè)試方法。
[1]Virtex-4 User Guide.UG070(v1.5)[P].Xilinx,Inc,2006.
[2]Xtreme DSPfor Virtex-4 User Guide[P].UG073(v2.1),Xilinx,Inc,2005.
[3]A Sarvi,J Fan.Automated BIST-based diagnostic solution for SOPC[C].Proc Int Conf on Design&Test of Integrated Systems in Nanoscale Technology,2006:263-267.
[4]D Gizopoulos,A Paschalis,Y Zorian.Effective Built-In Self-Test for Booth Multipliers[J].IEEE Design&Test of Computers,1998(15):105-111.
[5]Mary D Pulukuri,Charles E Stroud.On Built-In Self-Test for Adders[J].Theory&Applications,2009(25):343-346.
A New Method of Built-In Self-Test of DSP in FPGAs
SUN Jiepeng,WEIJianmin,YAN Hua,CONG Hongyan
(China Electronics Technology Group Corporation No.58 Research Institute,Wuxi 214072,China)
In the paper,a new method of Built-In Self-Test(BIST)for testing and diagnosing the embedded digital signal processors(DSPs)in Xilinx Virtex-4/5 series Field Programmable Gate Arrays(FPGAs)is presented.The method can effectively test the multiplier and adder in the DSP circuit,shorten the test time and reduce the workload.Meanwhile,the function test of the whole chip DSP can be realized by changing the configuration information of the DSP,and the test fault coverage of the DSP module is improved.
built-in self-test;multiplier test;adder test;digital signal processor;field programmable gate array;Virtex-4
TN407
A
1681-1070(2017)10-0009-04
2017-5-12
孫潔朋(1987—),男,河南鞏義人,碩士,助理工程師,現(xiàn)從事FPGA芯片的驗(yàn)證和測(cè)試工作。