董宜平,謝文虎,李 光
(中國(guó)電子科技集團(tuán)公司第58研究所,江蘇無(wú)錫214035)
基于Virtex 4 FPGA的全覆蓋二倍線(xiàn)內(nèi)建自測(cè)試*
董宜平,謝文虎,李 光
(中國(guó)電子科技集團(tuán)公司第58研究所,江蘇無(wú)錫214035)
隨著集成電路技術(shù)的發(fā)展,高集成度和高復(fù)雜度的器件不斷出現(xiàn),大規(guī)模集成電路的測(cè)試技術(shù)成為重要的研究方向。自建內(nèi)測(cè)試方法是一種有效的系統(tǒng)級(jí)大規(guī)模集成電路FPGA測(cè)試方法。提出了一種基于Xilinx公司Virtex-4(V4)系列芯片全覆蓋的FPGA二倍線(xiàn)內(nèi)建自測(cè)試方法,該方法采用腳本生成Xilinx設(shè)計(jì)語(yǔ)言(XDL),對(duì)V4芯片二倍線(xiàn)進(jìn)行全局布線(xiàn),然后進(jìn)行FPGA配置,施加測(cè)試向量,從而對(duì)固定故障或者橋接故障進(jìn)行測(cè)試。同時(shí)給出了基于XC4VLX100芯片的實(shí)際測(cè)試結(jié)果,驗(yàn)證了該測(cè)試方法的正確性。
XDL;內(nèi)建自測(cè)試;測(cè)試向量;全局布線(xiàn);二倍線(xiàn)
可編程邏輯器件FPGA,具有開(kāi)發(fā)周期短、成本低、風(fēng)險(xiǎn)小、集成度高、靈活性強(qiáng)且便于電子系統(tǒng)維護(hù)和升級(jí)的特點(diǎn),因此成為了數(shù)字芯片的主流,被廣泛應(yīng)用在通信、控制、視頻、信息處理、消費(fèi)電子、互聯(lián)網(wǎng)、汽車(chē)以及航空航天等諸多領(lǐng)域。在FPGA被使用之前需要進(jìn)行充分的測(cè)試,以保證FPGA器件的可靠性。
對(duì)FPGA進(jìn)行功能測(cè)試可分為3個(gè)主要步驟:首先,給FPGA配置內(nèi)建測(cè)試向量;其次,在配置完成后需要根據(jù)內(nèi)建測(cè)試向量在相應(yīng)的引腳加外部測(cè)試向量集;最后,通過(guò)觀察輸出引腳的現(xiàn)象來(lái)分析判斷芯片的好環(huán)。
本文介紹一種基于XDL(Xilinx Design Language)語(yǔ)言的FPGA內(nèi)建測(cè)試向量的編寫(xiě)方法。第一部分概述了本文研究的內(nèi)容及意義。第二部分描述Xilinx FPGA XC4VLX100的結(jié)構(gòu)。第三部分介紹了布線(xiàn)資源測(cè)試的主要故障類(lèi)型。第四部分介紹了XDL(Xilinx design language)語(yǔ)言及如何利用XDL進(jìn)行二倍線(xiàn)自建內(nèi)測(cè)試等。第五部分給出了使用XDL生成的布線(xiàn),施加測(cè)試向量的具體測(cè)試方法。第六部分為全文總結(jié)及研究展望。
圖1所示為Xilinx公司基于Virtex系統(tǒng)架構(gòu)的xc4vlx100的FPGA,包括IOB (Input/output Block)、CLB(configurable Logic Block)、CLB的互聯(lián)開(kāi)關(guān)盒(Swith Box,SB)等?;谝陨霞軜?gòu)的FPGA,IOB的物理位置位于左側(cè)和右側(cè)。
圖1 Xilinx xc4vlx100架構(gòu)
圖2所示為FPGA內(nèi)部SB的內(nèi)部接線(xiàn)盒架構(gòu),包括二倍線(xiàn)起始(E2Begin,W2Begin,N2Begin,S2Begin),二倍線(xiàn)終止(E2End,W2End,N2End,S2End),六倍線(xiàn)起始(E6Begin,W6Begin,N6Begin,S6Begin),六倍線(xiàn)終止(E6End,W6End,N6End,S6End)。
圖2 FPGA xc4vlx100內(nèi)部Swith Box的接線(xiàn)
在FPGA芯片中,布線(xiàn)資源占據(jù)FPGA芯片面積的大部分(50%~90%),是FPGA資源中發(fā)生故障概率最高的部分,所以布線(xiàn)資源的測(cè)試非常重要。布線(xiàn)資源的故障一般有:(1)線(xiàn)段的固定型(stuck at)故障;(2)線(xiàn)段的開(kāi)路(stuckopen)故障;(3)線(xiàn)段間的橋接故障。
FPGA器件的測(cè)試,簡(jiǎn)單來(lái)說(shuō)就是把FPGA器件配置成相應(yīng)的測(cè)試電路,用多次配置來(lái)覆蓋所有的資源,然后對(duì)每項(xiàng)配置施加特定的測(cè)試向量。好的布線(xiàn)資源的測(cè)試方法是在盡可能高的故障覆蓋率下,通過(guò)最少的編程次數(shù)和測(cè)試向量對(duì)布線(xiàn)資源進(jìn)行測(cè)試。
本文提供的測(cè)試方法針對(duì)二倍線(xiàn)布線(xiàn)資源故障,依據(jù)XDL規(guī)范自主布線(xiàn),把一個(gè)方向(南北或者東西)的所有二倍線(xiàn)串聯(lián)起來(lái),從而通過(guò)一次配置,就能夠判斷那根二倍線(xiàn)是否有故障。通過(guò)多次配置進(jìn)行二分法排除,可以確定哪一行或者哪一列的二倍線(xiàn)出現(xiàn)故障。
4.1 XDL基本格式
XDL語(yǔ)言是xilinx公司開(kāi)發(fā)的一種全功能物理層設(shè)計(jì)語(yǔ)言。由4個(gè)聲明構(gòu)成了對(duì)整個(gè)文件和電路的描述,這4個(gè)聲明分別是design聲明、module聲明、Instance聲明和net聲明。
Design聲明在XDL必須存在,并且只能存在一次。該聲明包括一個(gè)全局的設(shè)計(jì)名稱(chēng)以及目標(biāo)FPGA的部分名稱(chēng)。Design的格式如下:
design"V4test"xc4vlx100ff1148-10 v3.2;
Module聲明是一系列instance和net的結(jié)合,通常在硬宏(hard macros)里使用。本文不涉及。
Instance聲明以關(guān)鍵詞’inst’開(kāi)頭,元件類(lèi)型主要有CLB、IOB、TBUF等幾種類(lèi)型,放置元件關(guān)鍵詞placed,所在的tile,即所在的分區(qū)。對(duì)XC4VLX100 CLB_x1y0的Instance進(jìn)行配置的實(shí)例格式如下:
inst"INST_X0Y0""SLICEM",placed CLBX1Y0 SLICE_X0Y0,
cfg " BXINV::#OFF BYINV::#OFF BYINVOUTUSED::#OFF BYOUTUSED::#OFF CEINV::#OFF
CLKINV::#OFF COUTUSED::#OFF CY0F:: #OFF CY0G::#OFF CYINIT::#OFF DIF_MUX::#OFF
DIGUSED::#OFF DIG_MUX::#OFF DXMUX: :#OFF DYMUX::#OFF F:LUT4_inst[8449]:#LUT:D= (A4)
F5USED::#OFF FFX::#OFF FFX_INIT_ATTR: :#OFF FFX_SR_ATTR::#OFF FFY::#OFF
FFY_INIT_ATTR::#OFF FFY_SR_ATTR:: #OFF FXMUX::#OFF FXUSED::#OFF F_ATTR::#OFF
G:LUT4_inst[8450]:#LUT:D=(A4)GYMUX:: #OFF G_ATTR::#OFF REVUSED::#OFF
SHIFTOUTUSED::#OFF SLICEWE0USED:: #OFF SLICEWE1USED::#OFF SRFFMUX::#OFF
SRINV::#OFF SYNC_ATTR::#OFF WF1USED::#OFF WF2USED::#OFF WF3USED::#OFF
WF4USED::#OFF WG1USED::#OFF WG2USED::#OFF WG3USED::#OFF WG4USED:: #OFF
XBMUX::#OFF XBUSED::#OFF XMUXUSED::#OFF XUSED::0 YBMUX::#OFF YBUSED::#OFFYMUXUSED::#OFF YUSED::0";
Net聲明由net、輸入 (inpin)、輸出(outpin)、PIP (Programmable Interconnect Point)共4部分組成。一個(gè)從IOB引入一根輸入線(xiàn)到CLB_X1y0的F1的Net聲明如下:
net"IOB0inLine0",
outpin"IOB0in"I,
inpin"INST_X1Y1"F1,;
4.2 使用XDL生成二倍線(xiàn)測(cè)試布線(xiàn)
使用XDL生成二倍線(xiàn)的測(cè)試布線(xiàn)分成4個(gè)步驟,步驟一將IO的輸入接入到二倍線(xiàn)的輸入,或者將前一行或者前一列的二倍線(xiàn)輸出接入到二倍線(xiàn)的輸入。步驟二利用每行或者每列中的某個(gè)CLB進(jìn)行中繼,將IO的輸入經(jīng)過(guò)Slice引入到二倍線(xiàn)中,同時(shí)將同行或者同列不同方向的二倍線(xiàn)首尾相接。步驟三將同方向的二倍線(xiàn)按照行或者列進(jìn)行首尾相接。步驟四所示是將二倍線(xiàn)的輸出連接到下一行或者下一列的輸入,將相鄰行或者相鄰列的二倍線(xiàn)進(jìn)行首尾相接,或者將二倍線(xiàn)的輸出連接到IOB的輸出上。
圖3 FPGA二倍線(xiàn)測(cè)試步驟
下面以0號(hào)二倍線(xiàn)(E2begin0和W2begin0)為例,如圖3所示,每個(gè)步驟對(duì)應(yīng)的XDL net如下:
步驟一將IOB連接到二倍線(xiàn)的一個(gè)slice輸入F1,其中INST_IOB0in為XC4VLX100的IOB AM25, INST_X1Y1為slice X1Y1:
net"IOB0inLine0",
outpin"IOB0in"I,
inpin"INST_X1Y1"F1,;
步驟二、三實(shí)現(xiàn)的 XDL net如下,其中INST_X0Y0為Slice x0y0,INST_X1Y1為Slice x1y1:
net"netrow0WELine0",
outpin"INST_X1Y1"X,
inpin"INST_X0Y0"G4,
pip CLB_X1Y0 X_PINWIRE3 ->BEST_LOGIC_OUTS3_INT,
pipINT_X1Y0BEST_LOGIC_OUTS3->E2BEG0,
pip INT_X0Y0 E2END0->E2BEG0,
pip INT_X2Y0 E2END0->E2BEG0,
……
pip INT_X70Y0 E2END0->E2BEG0,
pip INT_X72Y0 E2END0->E2BEG0,
pip INT_X3Y0 W2END0->W(wǎng)2BEG0,
pip INT_X5Y0 W2END0->W(wǎng)2BEG0,
……
pip INT_X69Y0 W2END0->W(wǎng)2BEG0,
pip INT_X71Y0 W2END0->W(wǎng)2BEG0,
pip INT_X0Y0 W2END0->W(wǎng)2BEG0,
pip INT_X1Y0 E2END0->IMUX_B0,
pip CLB_X1Y0 IMUX_B0_INT->G4_PINWIRE0,
pip CLB_BUFFER_X36Y0 CLB_BUFFER_ IE2MID0->CLB_BUFFER_E2MID0,
pip CLB_BUFFER_X36Y0 CLB_BUFFER_ W2END0->CLB_BUFFER_IW2END0,
pip L_TERM_INT_X0Y0 L_TERM_INT_ W2BEG0->L_TERM_INT_E2MID0,
pip R_TERM_INT_X72Y0 R_TERM_INT_ E2MID0->R_TERM_INT_W2END0,
;
net"netrow0EWLine0",
outpin"INST_X0Y0"Y,
inpin"INST_X0Y0"F4,
pip CLB_X1Y0 Y_PINWIRE0->BEST_LOGIC_ OUTS4_INT,
pipINT_X1Y0BEST_LOGIC_OUTS4->W(wǎng)2BEG0,
pip INT_X0Y0 E2END0->E2BEG0,
pip INT_X2Y0 W2END0->W(wǎng)2BEG0,
……
pip INT_X70Y0 W2END0->W(wǎng)2BEG0,
pip INT_X72Y0 W2END0->W(wǎng)2BEG0,
pip INT_X3Y0 E2END0->E2BEG0,
pip INT_X5Y0 E2END0->E2BEG0,
……
pip INT_X69Y0 E2END0->E2BEG0,
pip INT_X71Y0 E2END0->E2BEG0,
pip INT_X1Y0 W2END0->IMUX_B8,
pip CLB_X1Y0 IMUX_B8_INT->F4_PINWIRE0,
pip CLB_BUFFER_X36Y0 CLB_BUFFER_ IE2BEG0->CLB_BUFFER_E2BEG0,
pip CLB_BUFFER_X36Y0 CLB_BUFFER_ W2MID0->CLB_BUFFER_IW2MID0,
pip L_TERM_INT_X0Y0 L_TERM_INT_ W2MID0->L_TERM_INT_E2END0,
pip R_TERM_INT_X72Y0 R_TERM_INT_ E2BEG0->R_TERM_INT_W2MID0,
;
這里面有 4個(gè)轉(zhuǎn)角,其中 pip L_TERM_ INT_X0Y0L_TERM_INT_W2BEG0->L_TERM_ INT_E2MID0為最左側(cè)西向向東向的轉(zhuǎn)角,pip R_TERM_INT_X72Y0 R_TERM_INT_E2MID0 ->R_TERM_INT_W2END0為最右側(cè)東向向西向的轉(zhuǎn)角,pip L_TERM_INT_X0Y0 L_TERM_INT_W2MID0 ->L_TERM_INT_E2END0為最左側(cè)西向東轉(zhuǎn)角,pip R_TERM_INT_X72Y0 R_TERM_INT_E2BEG0 ->R_TERM_INT_W2MID0為最右側(cè)東向西轉(zhuǎn)角。
步驟四的實(shí)現(xiàn)為將本行首尾相接的二倍線(xiàn)輸出連接到下一行的輸入,其中INST_X1Y3為下一行的slice X1Y3:
net"netrow0line0Out",
outpin"INST_X0Y0"X,
inpin"INST_X1Y3"F1,;
依此方法,逐步生成整個(gè)FPGA的二倍線(xiàn)南北方向或者東西方向的布線(xiàn)。
4.3 根據(jù)測(cè)試布線(xiàn)生成rbt文件
通過(guò)腳本或者C語(yǔ)言寫(xiě)程序,生成整個(gè)FPGA的二倍線(xiàn)南北或者東西方向的布線(xiàn)XDL后,調(diào)用XDL命令XDL-xdl2ncd生成NCD文件,然后用FPGA Editor打開(kāi),調(diào)用auto route功能,把所有的二倍線(xiàn)首尾連接好。然后再調(diào)用bitgen生成rbt文件。
完整的XC4VLX100的FPGA東西向的二倍線(xiàn)NCD部分圖如圖4所示,包括全部的E2begin0~E2begin9,W2begin0~W2begin9。
生成RBT文件后,對(duì)FPGA XC4VLX100進(jìn)行配置,然后對(duì)輸入側(cè)對(duì)應(yīng)E2Begin0~E2Begin9的IOB施加測(cè)試向量。如果對(duì)0號(hào)線(xiàn)(E2begin0)進(jìn)行測(cè)試,則施加(1,0,0,0,0,0,0,0,0,0)的測(cè)試向量,然后在對(duì)應(yīng)輸出端的 IOB觀察輸出結(jié)果。如果輸出為(1,0,0,0,0,0,0,0,0,0),則0號(hào)線(xiàn)無(wú)故障,如果輸出不為(1,0,0,0,0,0,0,0,0,0),則0號(hào)線(xiàn)有故障,記錄輸出結(jié)果。然后對(duì)0號(hào)線(xiàn)再施加(0,1,1,1,1,1,1,1,1)的測(cè)試向量,如果輸出為(0,1,1,1,1,1,1,1,1),則0號(hào)線(xiàn)無(wú)故障,如果輸出不為(0,1,1,1,1,1,1,1,1),則0號(hào)線(xiàn)有故障,記錄輸出結(jié)果。
綜合輸出結(jié)果,故障類(lèi)型初步判斷為:
(1)輸出結(jié)果始終為(0,0,0,0,0,0,0,0,0,0),0號(hào)線(xiàn)固定0故障或斷路故障;
圖4 完整的東西向二倍線(xiàn)布線(xiàn)部分圖
(2)輸出結(jié)果始終為(1,0,0,0,0,0,0,0,0,0),0號(hào)線(xiàn)固定1故障或斷路故障;
(3)0號(hào)線(xiàn)位置為0,其他位置出現(xiàn)了1,或者0號(hào)線(xiàn)位置為1,其他位置出現(xiàn)了0,則為橋接故障。
判斷出二倍線(xiàn)故障后,通過(guò)二分法將IOB輸入端、IOB輸出位置進(jìn)行變化,則可以定位哪一行或者哪一列出現(xiàn)了故障。
通過(guò)直接寫(xiě)XDL,進(jìn)行二倍線(xiàn)東西方向或者南北方向直接布線(xiàn)的方式,通過(guò)一次配置就能判斷出二倍線(xiàn)東西方向或者南北方向是否有故障,而且故障覆蓋率為100%。這種方法同樣可以擴(kuò)展到能夠首尾相接的六倍線(xiàn)。
[1]Christian Beckhoff,Dirk Koch,Jim Torresen.The Xilinx Design Language(XDL):Tutorial andUse Cases[J].
[2]M Renovell,Y Zorian.Different Experiments in Test Generation for XILINX FPGAs[J].ITC INTERNATIONAL TEST CONFERENCE,2000,32(2):854-862.
[3]Mehdi Baradaran Tahoori,Subhasish Mitra.Fault Grading FPGA Interconnect Test Configurations[J].ITC INTERNATIONAL TEST CONFERENCE,2002,22(2):608-617.
[4]Soft Test Inc.The Fundamentals of Digital Semiconductor Testing[P].Version 2.03,1999.
[5]OReilly.Learning Perl 5th Edition[P].2008,7.
[6]http://china.xilinx.com[EB/OL].
[7]成飛.基于ATE的FPGA測(cè)試 [D].上海:復(fù)旦大學(xué),2011,4.
[8]王世穎.基于ATE的百萬(wàn)門(mén)級(jí)FPGA測(cè)試方法的研究[D].成都:電子科技大學(xué),2012,2.
[9]張秀均,陳誠(chéng),孟祥媛.一種用perl編寫(xiě)Xilinx的FPGA內(nèi)建測(cè)試向量的方法[J].電子與封裝,2014,14(3):18-20.
A Full-Coverage Double-line BIST Method for Vertex 4 FPGA
DONG Yiping,XIE Wenhu,LI Guang
(China Electronic Technology Group Corporation No.58 Research Institute,Wuxi 214035,China)
The rapid development of Integrated circuit has been increasingly bring about highly integrated and complicated device.The test technology is becoming more and more important.Built in selfttest(BIST)is an effective system-level test method for FPGA.A BIST method based on Vertex 4 for full coverage of FPGA double lines is presented in this paper.At first,XDL language written in script is used for global routing of V4 double lines.Then FPGA for test is configured,and test vector is added.The stuck and bridge fault then can be diagnosed according to the output.Then at the end the test result of XC4VLX100 is given.
XDL;BIST;test vector;global routing;double lines
TN407
A
1681-1070(2017)01-0019-05
董宜平(1983—),男,2006年?yáng)|南大學(xué)電子工程學(xué)院學(xué)士畢業(yè),2011年日本早稻田大學(xué)理工學(xué)院系統(tǒng)大規(guī)模集成電路專(zhuān)業(yè)工學(xué)博士,研究方向?yàn)榛贔PGA的高性能片上網(wǎng)絡(luò)NoC,2012年4月至2014年7月任職于日本日立制作所研究開(kāi)發(fā)中心,2014年8月起任職于中國(guó)電子科技集團(tuán)公司第58研究所,從事自主高性能大規(guī)模FPGA芯片的研發(fā)工作。
2016-7-26
江蘇省自然基金青年基金(BK20160202)