石 超,王 健,來金梅
(復旦大學 專用集成電路與系統(tǒng)國家重點實驗室,上海 201203)
基于BIST方法的新型FPGA芯片CLB功能測試方法
石 超,王 健,來金梅
(復旦大學 專用集成電路與系統(tǒng)國家重點實驗室,上海 201203)
新型FPGA普遍使用了6輸入查找表以實現可編程邏輯,如Xilinx公司的Virtex 5系列、Ultrascale系列等.由于I/O數量有限,針對這些芯片的CLB功能測試,可選擇ILA級聯測試法并利用位流回讀進行故障定位,但由于CLB存在路徑互斥,覆蓋所有故障所需配置較多,而位流回讀較為緩慢,限制了定位速度.BIST測試法通過直接檢測CLB的輸出來發(fā)現故障,所需配置數量少于ILA級聯法,但需要將測試激勵傳遞到所有BUT導致端口負載大,布線存在困難.本文提出了一種將ORA中閑置資源配置為鎖存器鏈,以便傳遞測試激勵的方法.該方法降低了端口負載.同時利用剩余的邏輯資源建立掃描鏈,大幅加快了故障定位速度.在Xilinx 7系列FPGA上的實驗結果表明,與其他文獻所用測試方案比較,測試所需配置次數由30次降低到26次,故障定位所需時間在2.4MHz時鐘驅動下可達61.35ns.
現場可編程門陣列; 可編程邏輯塊; 功能測試; 內建自測試
隨著電子技術的發(fā)展,現場可編程門陣列(Field Programmable Gate Arrays, FPGA)芯片已經被廣泛應用于通信、互聯網、航空航天等諸多領域.對其進行功能進行測試的需求也水漲船高.可編程邏輯塊(Configurable Logic Block, CLB)是FPGA芯片中最基本的可編程結構,被用于實現各種組合與時序邏輯功能,十分重要.其與互連資源、可編程輸入/輸出塊(Input/Output Block, IOB)共同組成了FPGA的可編程功能.以較低的成本對CLB中功能進行測試,自然成為了FPGA測試的一項重點.
CLB的測試主要難點在于CLB陣列規(guī)模龐大,而IOB數量不足,以Xilinx 7系列芯片為例,其CLB數量最大可達102700個,而IOB僅960個[1].為了用有限的IOB輸入測試激勵并獲取其響應,測試中一般采用重復邏輯陣列(Iterative Logic Array, ILA)級聯法或內建自測試(Built-In Self-Test, BIST)法進行.
ILA級聯[2]測試法通過構建輸入與輸出完全相同的ILA單元,并將其以鏈狀級聯.若1個ILA單元出現故障,故障響應會被后續(xù)ILA單元傳遞出來.文獻[3]采用ILA級聯法對Xilinx 7系列芯片的CLB1進行了功能測試.通過在ILA鏈輸入輸出端分別設置了測試激勵生成和結果分析電路.解決了傳統(tǒng)ILA級聯測試法輸出結果不直觀的缺陷,自動化程度高,便于布線.但ILA級聯測試法由于需要構成數據通路,而CLB內數據路徑存在互斥,測試所需配置數量較多.而當ILA鏈上存在多個故障時,前級的故障可能導致后級無法接受到完整的測試激勵,導致故障被掩蓋.另外,文獻[3]采用基于JTAG的部分位流回讀進行故障定位,無法使用高速時鐘,定位速度較慢.
BIST測試法將FPGA內的邏輯資源配置為測試激勵生成器(Test Pattern Generators, TPG)、輸出響應分析(Output Response Analyzers, ORA)和被測單元(Blocks Under Test, BUT)3部分,由TPG向BUT輸入測試激勵.以ORA單元分析BUT的響應.完成1組測試后,交換BUT、ORA、TPG的功能,即可覆蓋FPGA中所有CLB資源.BIST測試法不需要形成數據通路,只需要保證被測模塊能接收測試激勵,同時其響應可以被ORA所分析即可,故BIST測試法所需配置數量較少.而BIST測試法直接輸出測試結果,具有IOB占用少,不易發(fā)生故障互相掩蓋的情況,測試結果直觀,測試設備簡單等優(yōu)點.在XC-4000與Spartan1時代BIST測試法就被應用于CLB測試中[4].但傳統(tǒng)BIST測試法需要將測試激勵傳輸到每個BUT單元,布局密度高,測試激勵信號負載大,布線成功率低.
為了減少測試配置數量,加快故障定位,本文提出了一種基于數據比較的BIST測試法的測試方法,該方法將ORA中閑置的可配置觸發(fā)器配置為鎖存器鏈進行測試激勵傳遞,大幅減少信號負載,解決了BIST測試法布線上的困難.同時利用片內邏輯資源構成掃描鏈,能夠采用高頻時鐘驅動,大幅提高了故障定位速度.
Xilinx 7系列FPGA是Xilinx公司推出的新一代FPGA產品,涵蓋了低功耗,高性能,SOC等多種應用場合,正越來越多的應用到各種電子設備中.本文選擇了Xilinx 7系列FPGA作為研究對象,開發(fā)適用于新型FPGA芯片的功能測試方案.
Xilinx公司新型FPGA的CLB模塊由2個Slice組成,其結構如圖1所示,每個Slice都通過開關矩陣接入全局與局部互連資源中,大量CLB以陣列形式分布于FPGA芯片內,與互連資源配合行使多種邏輯功能.
圖1 CLB的基本邏輯單元AFig.1 Logic circuit A of CLB
圖2 CLB的結構[5]Fig.2 Structure of CLB[5]
每個Slice可以分為A,B,C,D 4個相似的基本邏輯模塊,其中模塊A如圖2所示,主要由6輸入LUT,可配置觸發(fā)器(可以配置為2個觸發(fā)器或1個鎖存器使用),進位邏輯和擴展邏輯模塊,以及可編程MUX和其他控制電路組成.針對CLB的功能測試,即可以進一步細化為對上述4大模塊中每1個電路元件的功能測試,關于元件的具體測試細節(jié),將在下文詳述.
另外,Xilinx 7系列FPGA中的CLB可以分為Slice L與Slice M 2種.Slice M中的LUT還可配置為分布式存儲器(RAM)和移位寄存器(Shift Register),其相關邏輯如圖2中灰色部分所示.
圖3 ORA單元基本結構Fig.3 Diagram of ORA circuit
ORA單元的基本結構如圖3(見第490頁)所示.其中LUT通過配置組成3個同或門并將其結果相與,最多能夠比較2個BUT的3組輸入.恰能覆蓋A,AQ,AMUX這3個信號.若被測的2個BUT均無故障,則每組的2個輸入相同,LUT輸出為1,反之,其中1個BUT存在故障導致2個BUT各組輸入不相同,則LUT輸出為0.該結果通過CLB中的進位鏈向外傳遞,最終輸出.ORA單元同時也對進位鏈功能進行測試.
在FPGA中,由于內部互連的扇出能力有限,難以將測試激勵傳遞到每一個BUT.本文將ORA中閑置的可配置觸發(fā)器資源配置為鎖存器鏈,如圖3所示,將測試激勵傳遞到BUT中,由于每個鎖存器只需驅動10個BUT,激勵信號的負載大大縮小,布線成功率明顯提高.
為了方便故障定位,本文使用了掃描鏈方法以獲取每一個ORA單元的具體輸出,其結構如圖4所示.當SCAN_ctrl=0時,掃描鏈接受并匯總一個Slice的4個ORA單元輸出.當SCAN_ctrl=1時,即可通過1個時鐘將掃描鏈的結果掃出加以分析.
傳統(tǒng)BIST測試法通常一次將CLB陣列中1/2的CLB配置為BUT,資源消耗大,測試激勵負載高,布線成功率低,也無法在CLB中實現TPG模塊與定位.由于新型FPGA芯片多采用6輸入LUT,測試效率很高.即使一次只將1/3的CLB配置為BUT,重復3次.雖然總配置數量有所增加,但仍少于ILA級聯法,卻能使布局布線成功率大幅提升.同時陣列中剩余的邏輯資源可配置為掃描鏈與TPG模塊,有利于測試覆蓋和故障定位.
故障定位的主要目的在于定位FPGA芯片中故障所處的位置,對于FPGA來說,如果故障的CLB可以被定位,則可通過約束禁止對該CLB進行布局.芯片仍可正常使用.本文使用了掃描鏈方案進行故障定位.正常測試時,掃描鏈會檢測每一個ORA單元的輸出.而TPG、BUT與ORA模塊的陣列連接關系如圖5所示.采用這種連接方式,除非一行中所有BUT發(fā)生了相同故障,否則該故障都能被ORA所檢測到[4].但同一行BUT發(fā)生相同故障概率極低,故障之間很難互相掩蓋,解決了ILA級聯法后級不能接到完整測試激勵可能有故障被掩蓋的問題.
圖4 掃描鏈單元基本結構Fig.4 Diagram of scan chain
圖5 BIST測試法點路關系Fig.5 Structure of BIST circuit
當采用圖5所示的布局方式時,若一個BUT中發(fā)生了故障,則應有2個ORA的輸出結果為0,找出這2個ORA所共同檢測的BUT即為故障的BUT.由于3組配置中所有CLB必然會被配置為BUT和ORA一次,3組配置測試完畢后總能定位到故障的CLB.
如1.1節(jié)所述,一個Slice主要包括LUT、可配置觸發(fā)器、進位邏輯與擴展邏輯和可編程MUX與數據通路組成,部分Slice M還可以將LUT配置為分布式RAM和移位寄存器.這些模塊結構各異,其故障模型與測試原理需要逐一討論.
1) LUT模塊: LUT本質上是一個只讀的RAM,通常存在固定故障、斷開故障、轉換故障、譯碼故障[6].其中斷開故障可視為固定型故障進行分析[7].轉換故障可視為特殊的固定故障利用測試激勵覆蓋.文獻[8]提出了一種采用K+1種配置即可覆蓋K輸入LUT所有固定故障和移碼器故障的測試方案.針對6輸入LUT,采用最少7個配置即可覆蓋所有上述故障.
實際測試中,每個Slice的4個LUT輸入相同測試激勵,因此采用不同配置以產生不同的輸出.各LUT所需具體配置如表1所示,符合文獻[8]的要求.
2) 可配置觸發(fā)器模塊: Xilinx 7系列FPGA的可配置觸發(fā)器模塊既可以作為一個鎖存器,也可以配置為2個觸發(fā)器.對該模塊測試主要考慮其能否正確存儲與接受數據,是否被正確的時鐘邊緣觸發(fā),能否被正確的置位、使能,是否擁有正確的初值等.該模塊測試的關鍵在于覆蓋可所有功能組合并保證A5FF輸出能正確被ORA檢測.
表1 Slice L功能測試配置Tab.1 Configurations for test of Slice L
3) 數據通路與可編程MUX模塊: 數據通路,主要指CLB內部互聯和外部端口,一般只考慮固定故障.可編程MUX的故障與LUT譯碼器類似,有未選、選錯、多選等故障,結合文獻[8]的思想,在多個配置遍歷MUX取址,保證所有配置下必有一個測試激勵使得MUX未選中端輸入與選中端不同,即可覆蓋MUX的故障.
4) 進位鏈與擴展邏輯模塊: 進位鏈與擴展邏輯由大量可編程MUX、不可編程MUX和XOR門組成.對于不可編程MUX和XOR門等簡單的邏輯門,只需要對其輸入端遍歷所有輸入,再將輸出與該邏輯門的真值表進行比較,即可檢測其是否存在故障.
5) 分布式RAM與移位寄存器: Xilinx 7系列FPGA中,約有1/3至1/2的Slice中可以將LUT配置為分布式RAM和移位寄存器,稱為Slice M.只需將其他Slice L配置為ORA、TPG和掃描鏈,即可通過各類測試算法完成對分布式RAM和移位寄存器的測試
對于BIST測試法來說,由于其采用直接向BUT模塊輸入測試激勵,并檢測輸出響應的方法,因此BUT單元設計的關鍵在于保證被測電路的輸入可以遍歷所需測試響應,而輸出信號可以被ORA檢測到.在此基礎上,針對不同電路模塊的測試應盡可能整合起來以減少配置總數.通過統(tǒng)籌規(guī)劃,測試單個Slice L的故障需要至少7個配置,如表1所示.采用上述7個配置后,Slice L中的邏輯資源除進位鏈輸入與輸出外,均得到了覆蓋.而進位鏈輸入與輸出的功能在ORA模塊中進行測試.
分布式RAM有多種配置模式,但大多由多個LUT與CLB資源組合構成,對于單個LUT只需測試3種配置即可.Slice M中的LUT還可以被配置為32-bit或16-bit移位寄存器.若分布式RAM和移位寄存器的存儲單元或讀譯碼器存在故障,則LUT測試階段即可測出,因此對分布式RAM的故障測試集中在寫入階段,包括寫入故障和寫譯碼器故障,采用March C算法能夠做到有效覆蓋[6].而分布式RAM實際上共享同一個寫譯碼器,因此完成一次March C測試后,其他配置只需采用MATS+算法測試其寫入能力即可.分布式RAM和移位寄存器測試需要5個配置,如表2所示.
表2 分布式RAM與移位寄存器功能測試配置表Tab.2 Configuration of distributed RAM and Shift Register
對Xilinx 7系列CLB中的所有功能進行了測試.測試配置的開發(fā)基于Xilinx官方提供的門級模型[5],對其功能配置和數據通路進行了故障模擬[9],同時在LUT等模塊采用行為級故障模型.在各模塊中逐一注入故障并進行功能仿真,將仿真后將結果與無故障模型的結果進行比較,即可判斷注入的故障是否可以被檢測出,便于統(tǒng)計,進位鏈、擴展邏輯、數據通路和可編程MUX歸類一并歸類為DATA PASS類故障.仿真結果如圖6所示.可見遍歷所有12個配置后,單個CLB的功能故障被完全覆蓋.
本文采用了xc7z010芯片與ZYBO開發(fā)版構筑了模擬測試平臺并進行了測試驗證,模擬測試平臺如圖7所示,上電后,將所有開關撥下,并持續(xù)按動測試時鐘按鈕,若芯片在當前配置下無故障,則LED0維持亮起,遍歷整個測試激勵,若期間測LED0沒有熄滅,說明芯片無故障.反之若LED0熄滅,說明發(fā)現故障.此時開關0撥上,并反復按動掃描鏈時鐘按鈕掃出各ORA的結果進行分析,結合測試配置即可進行故障定位.
圖6 CLB測試故障覆蓋率Fig.6 Fault coverage of CLB test
圖7 基于ZYBO的測試驗證平臺Fig.7 Test platform based on ZYBO
使用2.2節(jié)介紹的ZYBO開發(fā)板為載體,將全部26個配置下載并測試后,測試結果均成功通過.
衡量FPGA功能測試成本的主要因素為測試時間.基于xc7z010芯片的單個測試配置測試用時如表3所示.其中,測試位流為實際生成的位流文件大小,測試激勵遍歷所需時鐘周期和配置為BUT的Slice數量由實際測試配置得到,測試時鐘最大工作頻率與掃描鏈時鐘最大工作頻率通過Vivado工具的STA分析功能得到(該頻率實際上仍較為保守,是電路維持時序正確的最大頻率).根據上述數據即可計算出下載用時、測試激勵遍歷用時與掃描鏈掃出用時.3者相加即為一個配置測試所需時間.
表3 xc7z010芯片實際測試數據統(tǒng)計Tab.3 Summary of the test on chip xc7z010
觀察表3可以發(fā)現,FPGA測試時間主要由下載時間決定,而下載時間受下載方式、位流數量與位流大小的影響.因此,若下載方式與位流大小相同,減少測試位流數量能夠有效降低測試的時間成本.
與文獻[3]所用ILA級聯測試法的對比如表4所示,可以看到,本方案配置次數由30個減少到了26個,定位所需時間由毫秒級大幅縮減到61ns,無論用于FPGA的出廠測試,還是高可靠性FPGA的部分測試,都有一定的實用意義.
表4 本文測試方法與ILA級連測試方法對比Tab.4 The comparison between ILA and BIST method
本文研究了一種采用BIST測試方法對于新型FPGA芯片CLB模塊進行功能測試的方案.通過將CLB陣列劃分為3等分,一次將CLB總數的1/3配置為BUT的方式,減少了布線難度,提高了布線的成功率,充分發(fā)揮了BIST測試法的高效率.同時通過內置掃描鏈進行故障定位,定位速度高于位流回讀方法,并且不依賴特定電路結構,通用性較高.該方法在Xilinx公司7系列FPGA芯片上進行了實踐,將測試所需配置數量由30個減少到26個.
該測試方法主要適用于采用高輸入LUT的的FPGA芯片.Xilinx公司自Virtex5系列以上的新型FPGA芯片(如7系列、UltraScale系列)均采用6輸入LUT,本文使用的測試方法對這種由高輸入查找表組成的新型FPGA芯片測試中有廣闊的應用前景.
[1] XILINX INC. 7 Series FPGAs Data Sheet: Overview[EB/OL]. 2016, http:∥www.xilinx.com.
[2] HUANG V K, LOMBARDI F. An Approach to Testing Programmable/Configurable Field Programmable Gate Arrays [J].VLSITestSymposium, 1996,14: 450-455.
[3] MODI H, ATHANAS P. In-System Testing of Xilinx 7-Series FPGAs: Part 1-logic [C]∥Proceedings-IEEE Military Communications Conference MILCOM. Tampa, FL, USA: IEEE Press, 2015: 477-482.
[4] STROUD C, LEACH K, SLAUGHTER T. BIST for Xilinx 4000 and Spartan series FPGAs: a case study [C]∥Proceedings: International Test Conference 2003. Charlotte, NC, USA: IEEE Press, 2003: 1258-1267.
[5] XILINX INC. 7 Series FPGAs Configurable Logic Block[EB/OL]. 2016, http:∥www.xilinx.com.
[6] 馮軍宏,簡維廷,劉云海.SRAM故障模型的檢測方法與應用 [J].中國集成電路,2008(11): 65-68+94.
[7] FAN X, MOORE W, HORA C,etal. Stuck-open fault diagnosis with stuck-at model [C]∥Proceedings: European Test Symposium, 2005. Tallin, Estonia: IEEE Press, 2005: 182-187.
[8] LU S K, WU C W. A novel approach to testing LUT-based FPGAs [C]∥Proceedings: International Symposium on Circuits and Systems, 1999. Orlando, Florida, USA: IEEE Press, 1999: 173-177.
[9] TOUTOUNCHI S, LAI A. FPGA test and coverage [C]∥Proceedings: International Test Conference 2002. Baltimore, MD, USA: IEEE Press, 2002: 599-607.
ANewBuilt-InSelf-TestMethodforFunctionalTestofConfigurableLogicBlocksinModernFPGAs
SHIChao,WANGJian,LAIJinmei
(StateKeyLaboratoryofASICamp;Systems,FudanUniversity,Shanghai201203,China)
The modern FPGAs have begun to use 6-input look-up tables to perform configurable logic, such as Xilinx’s Virtex-5 series, Ultrascale series and so on. Due to the limited number of IOB ports, most approaches choose the ILA based method for the functional test of these chips’ CLB module, and use read-back techniques for fault isolation. Unfortunately some of the data-paths are exclusive in CLB; So ILA methods usually cost more configurations, while read-back is quite slow. The Built-In Self-Test(BIST) methods directorially check the output pins of CLBs, which reduce the number of configurations. But BIST methods should transfer test benches signals to ever BUT, which leads to massive fan-out and make it difficult to route the design. This paper presents a new BIST method which use the free resource in ORAs to form latch chains to transfer test benches. This method is able to decrease the fan-out of I/O ports. And the remaining logic resources are configured to form a scan-chain for faster fault isolation. The BIST method is tested on a Xilinx 7 series FPGA chips. Compared with the former works, the number of configurations is reduced from 30 to 26, and the cost of fault isolation is reduced to 61.35 ns with a 2.4 MHz clock.
field programmable gate arrays(FPGA); configurable logic block(CLB); functional test; built-in self-test
0427-7104(2017)04-0488-07
2017-03-15
石 超(1990—),男,碩士研究生;王 健,男,工程師,通信聯系人,E-mail: wjian@fudan.edu.cn.
TN407
A