王建超,陸 鋒,張凱虹
(1. 江南大學(xué)物聯(lián)網(wǎng)工程學(xué)院,江蘇 無錫 214122;2. 中國電子科技集團(tuán)公司第58研究所,江蘇 無錫 214035)
基于Virtex架構(gòu)的FPGA的靈活性和編程能力強(qiáng)?;赩irtex 架構(gòu)的 FPGA 由陣列式的可配置邏輯模塊(CLB)、輸入輸出等模塊組成。利用FPGA器件實(shí)現(xiàn)特定功能設(shè)計(jì)時(shí),內(nèi)部布線資源產(chǎn)生的延時(shí)將會(huì)對(duì)所設(shè)計(jì)的芯片速度產(chǎn)生很大的影響。基于Virtex架構(gòu)的FPGA 器件中對(duì)路由資源和布局布線在同一過程中進(jìn)行優(yōu)化。這一優(yōu)化過程減少了最大路徑的延時(shí),同時(shí)也提高了系統(tǒng)的速度[2]。
FPGA器件內(nèi)部可編程布線資源所占的晶體管數(shù)量是所有模塊中最多的,其故障發(fā)生率也是最高,因此對(duì)布線資源的測試是一個(gè)重要的研究領(lǐng)域。布線資源的測試是FPGA測試中的一個(gè)難點(diǎn),一般的思路都是把眾多的線段連成一條條總線,使用走步-l(walking-1)測試向量來測試,而使用BIST方法也層出不窮,這些方法達(dá)到了更少的編程次數(shù)和更高的覆蓋率。通常為了減少配置次數(shù),可編程布線資源采用把單長線和雙長線的測試壓縮到一起,以及手工連線的測試辦法。本文對(duì)基于Virtex架構(gòu)的FPGA布線資源采用通用方法的組合進(jìn)行測試,從而對(duì)布線資源達(dá)到全覆蓋測試。
可編程布線資源存在著多種故障模型,這些故障模型是對(duì)各類器件失效方式的描述,每一種故障模型都會(huì)影響器件的正常工作。可編程布線資源是由可編程布線點(diǎn)和線段組成。因此布線資源的故障模型可以分為兩類:線段的故障模型與可編程布線點(diǎn)的故障模型。它們的故障模型分別建立如下:
(1)線段的開路故障:金屬線斷開,不連續(xù)就會(huì)導(dǎo)致線的開路故障。
(2)線段的固定型故障:布線線短路到 VDD 或 GND將會(huì)導(dǎo)致線的固定1故障(SA-1)或固定0故障(SA-0)。
(3)線段的橋接故障:當(dāng)電路中兩根或兩根以上不相連的線短接在一起并形成線邏輯時(shí),對(duì)此缺陷用橋接故障(bridging fault)模型來描述。當(dāng)橋接故障涉及的連線多于兩條時(shí),則稱該故障為多重橋接故障。
(4)可編程開關(guān)的常開故障(stuck-on):常開故障會(huì)阻礙連接線間的信號(hào)傳輸。
(5)可編程開關(guān)的常閉故障(stuck-off):與常開故障相比,常閉故障并不會(huì)中斷連接線間的連接,類似于橋接故障。
線段的固定型故障和開路故障都會(huì)造成傳輸信號(hào)的不連續(xù),因此,這兩種故障都可以用傳輸0和傳輸1的方法檢測。線段的橋接故障可認(rèn)為在線段搭接處短路,當(dāng)使用連線傳輸相反邏輯時(shí),可觀察到故障,因此可以使用走步向量檢測橋接故障;可編程開關(guān)的常開故障會(huì)中斷信號(hào)的傳輸,那么可以觀察信號(hào)是否正確傳輸檢測該故障;對(duì)可編程開關(guān)常閉故障的檢測,可以觀察開關(guān)在兩種工作狀態(tài)下的輸出情況以檢測此故障。
與門可以測得線上(S-A-0)的故障,或門可以測得(S-A-1)的故障。
圖1 與、或故障測試
(1)與門測試方法:
把所有CLB中的LUT都設(shè)置為與門,xdl中將LUT的描述公式改為:
F:LUT4_inst[1]:#LUT:D=(A1×A2×A3×A4)
G:LUT4_inst[2]:#LUT:D=(A1×A2×A3×A4)
把每個(gè)slice的lut連接成每個(gè)slice作為8個(gè)輸入F1、F2、F3、F4、G1、G2、G3、G4,輸出給 X,Y。每 4個(gè)slice為一組,8輸入為4個(gè)輸入的公共輸入端口并接入到SWB上,4個(gè)slice的x、y輸出分別接到SWB的8端口上。XDL文件中用腳本處理,最終將8個(gè)輸入端口和8個(gè)輸出端分別接到IO上。將輸入端口設(shè)置為高電平,觀察輸出端口的電平變化,如果輸出端口輸出低電平,則線上出現(xiàn)了固定0故障(SA-0)。
(2)或門測試方法:
把所有CLB中的LUT都設(shè)置為或門,xdl將LUT的描述公式改為:
F:LUT4_inst[1]:#LUT:D=(A1+A2+A3+A4)
G:LUT4_inst[2]:#LUT:D=(A1+A2+A3+A4)
然后重復(fù)與門測試步驟,最后把輸入改為低電平,觀察輸出端口電平變化,如果輸出端口輸出高電平,則線上出現(xiàn)了固定1故障(SA-1)。6倍線和長線如上方法可以測得故障覆蓋率。
基于Virtex架構(gòu)的FPGA布線資源可分為4類,包括全局布線資源、長線資源、短線資源和分布式布線資源。全局布線資源用于電路內(nèi)部全局時(shí)鐘和全局復(fù)位/置位的布線;長線資源用以完成電路bank間的高速信號(hào)和第二全局時(shí)鐘信號(hào)的布線;短線資源用以完成基本邏輯單元之間的邏輯互聯(lián)和布線;分布式布線資源用于專有時(shí)鐘、復(fù)位等控制信號(hào)線。
FPGA的通用測試和統(tǒng)計(jì)方法有幾種。方法1:基于應(yīng)用的布線資源測試,非確定性方法,適用于一般用戶,難以達(dá)到較高的覆蓋率;方法2:手動(dòng)布線方法,確定性方法,適用于高級(jí)用戶,完全采用該方法需要耗費(fèi)大量的人力與時(shí)間,通常被用作方法1的補(bǔ)充;方法3:基于FPGA editor坐標(biāo)圖的腳本語言布線方法,確定性方法,適用于高級(jí)用戶,可讀性差,需要人工統(tǒng)計(jì)各PIP的坐標(biāo);方法4:基于xdl(Xilinx Design Language)語言的腳本語言布線方法,確定性方法,適用于高級(jí)用戶,可讀性好,需要xdl語言支持;方法5:基于配置文件的覆蓋率統(tǒng)計(jì)方法,確定性方法,適用于FPGA設(shè)計(jì)人員,需要設(shè)計(jì)人員提供配置文件與FPGA各資源的對(duì)應(yīng)關(guān)系;方法6:基于xdl語言的布線資源覆蓋率統(tǒng)計(jì)算法,確定性方法,適用于高級(jí)用戶,可讀性好,需要xdl語言支持。
其中前4種為測試方法,后2種為統(tǒng)計(jì)方法。統(tǒng)計(jì)方法雖然不是測試方法,但是它既可以給用戶提供直觀的測試覆蓋率,又可以指導(dǎo)測試人員設(shè)計(jì)有針對(duì)性的下一輪測試方案。本文對(duì)基于Virtex架構(gòu)的FPGA布線資源采用上述幾種方法的組合進(jìn)行測試,從而對(duì)布線資源達(dá)到全覆蓋測試。
基于Virtex架構(gòu)的FPGA其Interconnect(PSM)具有以下連接規(guī)則:(1)在同一方向(垂直方向或水平方向)兩條緊挨著的單線可通過一個(gè)可編程開關(guān)(PS)相連接;(2)位于同一個(gè)布線通道中的兩條十六進(jìn)制線之間必然存在一個(gè)PS;(3)長線可以通過PSM與十六進(jìn)制線相連接。總而言之,可以通過 PSM 使任意兩條布線線段相連接。
相鄰CLB間采用如圖2的邏輯,4路輸入信號(hào)構(gòu)成8組輸出,最終整個(gè)電路被配置為級(jí)數(shù)相等的移位寄存器鏈(由觸發(fā)器與查找表構(gòu)成),然后對(duì)六長線布線和六長線開關(guān)進(jìn)行測試。
圖2 六長線測試的CLB內(nèi)部邏輯
采用中間六長線的隔3轉(zhuǎn)向法進(jìn)行測試,具體路徑描述為:采用CLB的XQ/X/YQ/Y輸出信號(hào),經(jīng)H6Ei輸出;至RxCy+3后,轉(zhuǎn)V6Si輸出;至Rx+3Cy+3后,轉(zhuǎn)V6Si輸出;至Rx+3Cy后,轉(zhuǎn)V6Ni輸出;返回RxCy后,轉(zhuǎn)單長線,輸入RxCy+1的CLB之X/XQ/Y/YQ。
整體布局如圖3,采用蛇形結(jié)構(gòu),從而避免了R1C48與R2C1布線資源的遠(yuǎn)距離連接,因?yàn)檫@種遠(yuǎn)距離連接需要利用六長線進(jìn)行中轉(zhuǎn)或者直接利用六長線進(jìn)行連接。
然后撰寫verilog程序,并進(jìn)行rtl級(jí)仿真;撰寫用戶約束ucf程序(由perl語言程序產(chǎn)生);采用手動(dòng)布線或者基于FPGA editor坐標(biāo)圖的腳本語言布線方法,給出從左至右的6根布線,與從右至左的6根布線對(duì)應(yīng)的ncd文件;將上述ncd文件轉(zhuǎn)換為xdl文件;依據(jù)xdl文件中的布線描述,撰寫perl語言程序,修改ncd文件中的其它同規(guī)則布線;將修改后的xdl文件轉(zhuǎn)換為ncd文件,并將其余沒布線的連接關(guān)系,采用自動(dòng)布線方式進(jìn)行布線;依據(jù)修改后的ncd,產(chǎn)生布局布線后的門級(jí)仿真線網(wǎng)表,進(jìn)行門級(jí)仿真;門級(jí)仿真無故障后,載入測試系統(tǒng)進(jìn)行測試;撰寫perl語言覆蓋率統(tǒng)計(jì)程序,統(tǒng)計(jì)上述xdl程序的覆蓋率,從而對(duì)六長線進(jìn)行全覆蓋測試。
圖3 六長線測試整體布局圖
采用長線與TBUF同時(shí)測試的方案,這樣的做法可以降低測試向量的總體長度,對(duì)FPGA而言,還可以減少用于配置的時(shí)間總長度。但由于長線的輸入/輸出雖然有8種可能,但每次配置一旦確定1種可能,則其余7種不再允許輸入/輸出;所以測試水平長線,至少需要8段測試碼。同理,測試豎直長線,需要6段測試碼。由于水平長線與豎直長線可同時(shí)進(jìn)行測試,所以長線測試總共需要8段測試碼,實(shí)際配置后如圖4。然后對(duì)長線布線和長線開關(guān)進(jìn)行測試。
將用于測試TBUF的兩根輸入信號(hào)經(jīng)OMUX連接長線,然后再繞回TBUF。以列為單位,逐列掃描,進(jìn)行自測試,使長線資源測試達(dá)到全覆蓋。
圖4 長線測試布線圖
圖5 單長線測試整體布局圖
將每個(gè)PSM對(duì)應(yīng)的24根水平單長線分為3組,這樣使得每組8根與OMUX輸出的8根信號(hào)一一對(duì)應(yīng),從而確保布線與開關(guān)同時(shí)進(jìn)行測試。
整體布局如圖5,為了避免R1C48與R2C1布線資源的遠(yuǎn)距離連接,整體布局也是采用蛇形結(jié)構(gòu)。
本文通過對(duì)基于Virtex架構(gòu)FPGA布線資源的六長線、長線、單長線的測試技術(shù)研究,采用通用方法的組合進(jìn)行測試,測試程序可讀性好、可復(fù)用性高,對(duì)布線資源測試故障覆蓋率高、故障定位準(zhǔn)確。
[1]Ehsan A toof i an , Zainalabed in Navabi. A Test Approach for Look Up Table Based FPGAs [J]. Journal of Computer Science and Technology, 2006.
[2]Xilinx Data Book.Virtex-II Platform FPGA User Guide[Z].Xilinx Inc.November, 2007.
[3]Xilinx Data Book.Virtex-6 FPGA Configuration User Guide[Z]. Xilinx Inc.September, 2012.
[4]唐恒標(biāo),馮建華,等. 基于測試系統(tǒng)的FPGA邏輯資源的測試[J]. 微電子學(xué),2006.
[5]李文昌,萬理,等. 應(yīng)用于Virtex系列FPGA的IR-CLB資源的聯(lián)合測試和診斷[J]. 微電子學(xué)與計(jì)算機(jī),2014(01):31.
[6]周濤. SRAM型FPGA的測試技術(shù)研究[D]. 成都:電子科技大學(xué),2006. 5-7.