張 穎, 毛志明, 陳 鑫
(南京航空航天大學電子信息工程學院, 南京 211100)
自從1985 年賽靈思(Xilinx)公司發(fā)明了FPGA 以來,經(jīng)過35 年的高速發(fā)展,F(xiàn)PGA 因其器件性能高、尺寸小、成本低,已經(jīng)廣泛應用于航空、航天、通信、工業(yè)控制等各大領域[1]。
隨著FPGA 應用領域的擴展以及其重要性和復雜程度的提高, 其可靠性問題越來越突出, 對FPGA的測試需求變得尤為迫切,測試FPGA 的有關技術也得到相應的發(fā)展。 按測試對象FPGA 的工藝不同進行劃分,測試可分為反熔絲型FPGA 測試、閃存(Flash)型FPGA 測試和SRAM 型FPGA 測試, 其中SRAM型FPGA 為目前應用最廣泛的FPGA 類型,本文也主要討論SRAM 型FPGA 的測試。 FPGA 測試按應用場景需求的不同又可分為應用無關測試與應用相關測試。 應用無關測試為FPGA 的結構性測試,需要用偽窮舉的多次配置來覆蓋所有的資源,針對FPGA 內(nèi)部多種不同資源,采用相應的故障模型匹配特定的測試配置, 通過測試向量的施加和響應分析完成測試過程,多使用于面向制造的產(chǎn)品測試;在FPGA 器件配置完成、 具有特定功能后進行的測試是應用相關測試,由于器件的配置確定、相關功能確定,因此可以把FPGA 器件的應用相關測試看作類似于專用集成電路(ASIC)的測試。 本文對SRAM 型FPGA 的測試進行分析并探討總結相關的測試技術,最后對FPGA 測試技術的發(fā)展進行展望。
目前FPGA 芯片的工藝結構有3 種: 基于反熔絲結構, 基于Flash 結構和基于SRAM 結構。 反熔絲型FPGA 只能編程一次,編程之后成為固定邏輯器件,穩(wěn)定性較高,靈活性不足,測試主要是實現(xiàn)編程前的內(nèi)部各個結構單元的功能測試以及相應的參數(shù)測試[2-3]。Flash 型FPGA 是最近幾年發(fā)展起來的新型FPGA 實現(xiàn)工藝,具備反復擦寫和掉電后非易失性,靈活性和可靠性兼有,但目前成本偏高,還沒有達到大規(guī)模的應用,在航空航天領域使用較多,對Flash 型FPGA 的測試主要是檢測空間粒子輻射對其內(nèi)部各結構的翻轉(zhuǎn)失效影響[4-6]。 SRAM 型FPGA 具有反復可編程的能力,每次上電后需要重新加載配置文件,靈活性好但穩(wěn)定性略有不足,不過由于其成本相對較低,被廣泛應用在各個領域。本文將主要討論SRAM 型FPGA 的測試。
測試的首要問題是需要理解被測對象的內(nèi)部資源結構。 SRAM 型FPGA 通常由可編程邏輯單元(CLB)、可編程輸入輸出單元(IOB)、可編程互連資源(IR)、可編程資源和常用功能的硬核模塊[如塊隨機存取存儲器(BRAM)、時鐘管理器(DCM)、乘法器等]組成[7]。圖1 為Xilinx 公司某系列SRAM 型FPGA 架構圖,開關矩陣(SM)和邏輯塊之間的互連線都屬于IR 資源。
2.2.1 CLB 資源
CLB 是FPGA 內(nèi)最基本的可編程邏輯結構,每個CLB 內(nèi)部包含2 個片(slice),2 個片之間相互獨立,各自分別連接開關矩陣,與通用布線陣列相連。 片的內(nèi)部包含查找表(LUT)、觸發(fā)器、多路開關及進位鏈等資源,部分片內(nèi)部的LUT 可以配置成RAM 或移位寄存器,這種稱為SLICEM,其他的片則稱為SLICEL。
2.2.2 IOB 資源
圖1 某系列SRAM 型FPGA 內(nèi)部架構圖[8]
IOB 是除了CLB 模塊之外最重要的功能模塊。IOB 模塊的作用是完成內(nèi)部資源與外部封裝的連接,主要包括一個3 態(tài)輸出緩沖器,輸入緩沖器,以及3 個可被配置為觸發(fā)器或鎖存器的寄存器單元。 每個IOB控制一個封裝引腳,可以配置為輸入引腳、輸出引腳和雙向引腳。
2.2.3 IR 資源
除了CLB 和IOB 外,F(xiàn)PGA 還需要有豐富的互連資源??删幊袒ミB資源占據(jù)了SRAM 型FPGA 芯片超過60%的面積,主要形式包括開關矩陣和互連線。
2.2.4 硬核模塊資源
(1)BRAM
大多數(shù)SRAM 型FPGA 內(nèi)部都包含塊存儲模塊BRAM,用以彌補片上存儲資源的不足。塊存儲模塊可根據(jù)不同的設計需求被配置為不同深度和寬度結構的存儲器。
(2)時鐘管理器
數(shù)字時鐘管理器DCM 也是FPGA 內(nèi)部的重要資源,提供了一系列時鐘管理的功能。 DCM 具有3 種功能:內(nèi)部包含的延遲鎖相環(huán)可實現(xiàn)時鐘去歪斜,穩(wěn)定時鐘頻率;具有頻率綜合能力,包括倍頻、分頻等;可根據(jù)輸入時鐘產(chǎn)生相移時鐘信號。
(3)乘法器
SRAM 型FPGA 內(nèi)部的乘法器模塊可單獨使用,也可和BRAM 資源聯(lián)合使用,優(yōu)化邏輯設計,再加上CLB 資源,可完成數(shù)字信號處理器(DSP)的部分功能。
SRAM 型FPGA 測試分為應用相關測試和應用無關測試,本文將根據(jù)不同的測試類型進行測試技術的探討與總結。 測試方法結構如圖2 所示。
圖2 FPGA 測試方法結構
應用無關測試是從制造商的角度來完備地測試FPGA 內(nèi)部相關資源的結構和功能, 全球FPGA 市場基本上都被國外所占據(jù),國外擁有成熟的應用無關測試技術,而國內(nèi)在產(chǎn)品制造和相應軟件測試平臺開發(fā)上尚處于起步階段。 近些年出現(xiàn)不少關于應用無關測試的相關文獻,提出了針對不同功能部件或綜合調(diào)度的測試方法。
3.1.1 CLB 測試
(1)基于陣列的測試方法
該測試方法是通過外部的自動測試設備(ATE)對CLB 陣列以行或列為基礎施加測試向量的結構進行測試,陣列的組成方式可能并不相同。 在文獻[9-10]中實現(xiàn)基于CLB 陣列結構的混合故障模型檢測,在測試中假定整個FPGA 只有一個CLB 產(chǎn)生故障,通過編程將每一行的CLB 連接起來, 將前一個CLB 的輸出作為后一CLB 的輸入, 形成一維陣列從而對CLB 整體進行測試,該方法直接級聯(lián)CLB,實現(xiàn)簡單,但對測試配置程序要求較高, 需考慮故障與測試向量的傳遞,且由于FPGA 芯片輸出端口數(shù)量有限,該方法只能對少數(shù)的CLB 進行測試,不適合大量CLB 資源的測試;基于異或門級聯(lián)是對陣列結構的改進,把被測陣列相鄰行的CLB 資源配置為異或門級聯(lián)的電路,進行故障信息的傳輸,解決了故障信息傳遞的難題,這種改進型陣列測試方法由于需要有專門的CLB 來傳遞錯誤信息,因此會增加測試配置次數(shù),測試時間也會相應增多[11];基于與門和或門級聯(lián)可實現(xiàn)多CLB 資源多故障模型檢測,與異或門級聯(lián)方法類似,一行CLB 資源配置為被測,相鄰行CLB 資源傳輸故障信息,不同的是可進行多故障檢測,不會出現(xiàn)偶數(shù)故障單元將故障屏蔽的現(xiàn)象[12],其中文獻[13-14]研究了陣列測試中CLB 內(nèi)部資源查找表配置策略以更好地完成測試。
(2)基于內(nèi)建自測試的測試方法
基于內(nèi)建自測試(BIST)的方法,利用FPGA 芯片的可重復編程性,將FPGA 的CLB 資源部分配置為測試向量發(fā)生器(TPG)和測試輸出響應分析器(ORA),余下部分作為被測模塊(BUT),形成BIST 測試結構。測試過程中TPG 部分產(chǎn)生測試所需的測試圖形,并施加給BUT,ORA 對BUT 的輸出結果進行分析, 進而測試出故障。BIST 又分為測試FPGA 不工作狀態(tài)下的離線測試[15-21]和工作狀態(tài)下的在線測試[22-26]。
離線BIST 測試中, 測試須在被測電路退出原先工作狀態(tài)下進行,可用于工廠制造測試,但不能測試實時故障;在對部分電路測試完成后,需要重新配置測試電路,從而對剩余部分電路進行測試,因此需要較多的配置次數(shù),需要的配置時間也就增多了;離線測試實現(xiàn)也比較簡單,通常測試生成和測試響應的壓縮都采用一定形式的線性反饋移位寄存器。
在線BIST 測試包括并發(fā)和非并發(fā), 并發(fā)測試與電路的正常操作同時進行,非并發(fā)測試在電路的空閑狀態(tài)下進行; 在電路正常工作或空閑狀態(tài)下, 在線BIST 測試需要實現(xiàn)電路的測試切換, 實現(xiàn)難度較大,但耗時相對于離線BIST 測試較低, 且能測試動態(tài)實時故障,有效性較高。
離線BIST 測試中,文獻[15-16]提出陣列測試與BIST 結合實現(xiàn)流動測試, 將FPGA 的CLB 陣列配置為3 種電路:測試向量發(fā)生器、測試輸出響應分析器和被測模塊,形成BIST 測試結構。 每次測試結束,測試向量發(fā)生器和響應分析器進行角色互換,從而完成整個陣列的測試,達到減少配置次數(shù)的效果。 文獻[17]在此基礎上對BIST 配置數(shù)量所需的FPGA 邏輯資源進行了分析。 文獻[18]使用相同的測試結構測試CLB 資源,并考慮了CLB 內(nèi)部邏輯,如查找表、多路復用器等,且實現(xiàn)了相應配置的完備測試。 文獻[19]提出了一種基于聯(lián)合測試工作組(JTAG)的內(nèi)建自測試方法,同樣使用了上述測試結構, 通過JTAG 邊界掃描控制器控制BIST 的整個流程,實現(xiàn)多個故障CLB 的測試與定位, 并使用片內(nèi)DSP 資源作為測試向量生成器,減少了測試的資源消耗。文獻[20]中結合了BIST 結構和表決器結構,使用4 位計數(shù)器和異或門分別構成BIST結構的TPG 和ORA, 對LUT 進行窮舉測試;CLB 中的4 個LUT 在測試時,3 個LUT 作為黃金LUT,1 個作為被測對象, 通過對黃金LUT 和被測LUT 的輸出分析,可以檢測并定位每個CLB 查找表的任何單一固定故障。 文獻[21]使用BIST 方法,實現(xiàn)了對CLB 內(nèi)部進位鏈的測試, 文中使用有效的測試向量策略對FPGA 內(nèi)部所有的進位鏈進行了級聯(lián)測試, 防止了隨機測試或窮舉測試帶來的測試向量重復覆蓋問題。
在線BIST 測試中,文獻[22-25]使用了漫游BIST行或列以便實現(xiàn)在線測試,將整個FPGA 分為測試區(qū)和工作區(qū),將測試區(qū)內(nèi)的CLB 資源配置為BIST 結構進行測試, 測試區(qū)的測試完成后切換到下一個位置,直到覆蓋整個FPGA 的CLB 資源。 文獻[26]提出在一種保留SRAM 單元初始值的情況下,在FPGA 空閑狀態(tài)或是FPGA 正常工作狀態(tài)中斷時進行CLB 中SRAM 單元和多路復用器的在線非并發(fā)故障檢測方法。
3.1.2 IR 測試
(1)非內(nèi)建自測試
FPGA 內(nèi)部的IR 資源非常豐富,可編程開關矩陣的存在使得所有的互連線可以靈活地轉(zhuǎn)接。 非內(nèi)建自測試方法中,大多借助外部生成的測試向量對IR 資源進行測試,所以大多文獻在于研究如何配置IR 資源的測試結構以及相應的測試生成策略,以實現(xiàn)最少的配置次數(shù)和測試時間,達到最高的故障覆蓋率;而IR 資源故障列表的覆蓋完全與否取決于外部生成的測試向量,因而非內(nèi)建自測試的有效性一般。文獻[27-30]中討論了開關矩陣的測試配置方法,實現(xiàn)了以最少的測試配置次數(shù)測試相應的故障模型。 文獻[31]中提出通過創(chuàng)建反饋移位寄存器結構減少開關矩陣的測試配置數(shù)量從而加速互連測試的方法。 文獻[32]利用故障映射方法將FPGA 的互連資源故障映射到LUT 的輸出上,間接地測試和定位互連資源故障。 文獻[33]提出了一種基于JTAG 的局部重配置技術對IR 進行故障診斷, 實現(xiàn)在較短的配置時間內(nèi)達到100%互連故障覆蓋率。 文獻[34] 使用了測試CLB 陣列的方式,將CLB 配置為輸入等于輸出的形式, 從而級聯(lián)整個陣列,最終實現(xiàn)測試CLB 之間互連線的目的。 文獻[35]介紹了改進的福特-富爾克森算法在IR 測試中的應用,該算法將IR 結構模型轉(zhuǎn)化為流網(wǎng)絡,并將圖論應用于IR 流網(wǎng)絡,相較于以前的方法,改進的算法在時間復雜度上降低為原來的1/8。 文獻[36]提出一種基于可滿足性模理論(SMT)的應用無關測試場景的互連測試配置生成策略,針對由互連中的開路和短路故障組成的目標故障列表,實現(xiàn)了不降低故障覆蓋率的情況下最小化配置數(shù)量。
(2)內(nèi)建自測試
由于內(nèi)部IR 資源的豐富,對內(nèi)建自測試的研究不僅在于如何生成有效的測試向量從而覆蓋IR 資源的故障列表,還致力于對故障的精準定位。 文獻[37]對FPGA 內(nèi)可編程路由網(wǎng)絡進行了BIST 測試,檢測線網(wǎng)資源中的開路與短路,以及影響配置FPGA 互連的可編程開關的故障。 文獻[38]提出利用差錯控制編碼測試互連的BIST 方法, 使用6 種測試配置即可達到高故障覆蓋率。 文獻[39]使用基于在線BIST 的流動測試, 進行IR 資源故障的高分辨率測試和診斷。 文獻[40] 中使用BIST 實現(xiàn)對經(jīng)典開路短路故障以及橋接故障的100%故障覆蓋,并提供了故障定位信息。 文獻[41]中提出新的測試配置自動生成技術,使用8 種測試配置可實現(xiàn)布線通道以及可編程開關中的開路和橋接故障的100%覆蓋。 文獻[42]提出一種新的BIST結構, 基于自啟用的TPG 與增強的自配置開關矩陣,實現(xiàn)盡可能少的片外配置比特流下載,完成對路由資源的充分測試。 相較于非內(nèi)建自測試,內(nèi)建自測試研究的復雜性較高,但其測試結構是在內(nèi)部邏輯資源上實現(xiàn),相比于非內(nèi)建自測試的外部測試設備,其開銷代價較低。
3.1.3 硬核模塊資源測試
(1)存儲器測試
存儲器用于保存配置信息、 系統(tǒng)操作數(shù)據(jù)等,是FPGA 功能實現(xiàn)的重要部件。 應用無關嵌入式存儲器測試也叫離線存儲器測試,方法主要有3 種:存儲器直接存取測試、 宏測試以及嵌入式存儲器內(nèi)建自測試(MBIST)。 直接存取測試可以通過封裝引腳對嵌入式存儲器進行測試,但由于外圍管腳資源的限制,測試大容量的嵌入式存儲器基本不現(xiàn)實。 宏測試借助在FPGA 上實現(xiàn)的中央處理器(CPU) 對存儲器進行測試,在CPU 中將外部輸入的測試指令轉(zhuǎn)換為嵌入式存儲器的測試向量,然后通過芯片內(nèi)部的數(shù)據(jù)路徑施加測試,該方法適合于性能較高的嵌入式存儲器,但依賴于CPU 的存在。 MBIST 結構主要由地址發(fā)生器、數(shù)據(jù)發(fā)生器以及比較器構成, 能夠?qū)崿F(xiàn)多種測試算法,對存儲器的存儲單元進行不同順序的讀取和寫入測試,實現(xiàn)難度主要在于算法的研究;相應的開銷與內(nèi)建自測試相同,同樣是在內(nèi)部資源上實現(xiàn)對應的測試結構; 該方法能測試存儲單元中的各種故障類型,測試的有效性很高。 MBIST 由于其能夠?qū)崿F(xiàn)高效、低成本的測試,逐漸成為了存儲器測試的主流方案。 文獻[43-46]中提出了幾種MBIST 算法,其中March 算法使用最為廣泛,主要針對存儲器中的經(jīng)典故障,如固定0/1 故障、地址譯碼故障和瞬時故障,但在存儲器中的讀取故障檢測方面工作還很有限。 文獻[47]中采用優(yōu)化的March C 算法,將經(jīng)典故障與讀取故障同步處理, 借助BIST 技術對FPGA 嵌入式存儲器進行了內(nèi)存故障檢測,相比之前的方案縮短了約一半的測試時間。 在文獻[48]中介紹了在基于有限狀態(tài)機(FSM)的BIST 控制器中應用不同測試算法的靈活性。 文獻[49]設計了能夠在測試要求的低面積消耗下檢測存儲器中所有故障的基于FSM 的內(nèi)建自測試。 文獻[50]提出了一個有效的內(nèi)存測試設計,采用周期邊界元胞自動機(PBCA)結構實現(xiàn)March 算法,能夠在測試邏輯有缺陷的情況下,也能對存儲器中的故障給出正確的判斷, 其缺點是當存儲器沒有故障且測試邏輯固定為1時,無法給出正確的判斷。
(2)其他資源測試
除了重要的可編程資源以及存儲器等資源外,F(xiàn)PGA 內(nèi)部的硬核模塊資源也需要進行相應的故障檢測。 文獻[51]提出了基于單元故障模型和重復模式確定有效測試機的軟件仿真方法,可為不同位寬的乘法器BIST 測試提供簡便的測試集生成, 從而以較少的測試配置實現(xiàn)較高的故障覆蓋率。 文獻[52]中使用了BIST 技術,為DCM 產(chǎn)生的2 個不同時鐘設計了2 個計數(shù)器,實現(xiàn)了DCM 輸出時鐘的微小誤差檢測。
3.1.4 多資源測試
前面的研究大多是針對單獨的功能模塊進行的測試,而FPGA 內(nèi)資源眾多,需要對內(nèi)部資源進行整體完備性檢測,所以必須要考慮到內(nèi)部不同資源的結構特點與故障類型,分治法在進行多資源測試中使用較多。 文獻[53]中對CLB、IR 以及IOB 資源進行了測試研究,并搭建了軟硬件協(xié)同仿真測試平臺;在文獻[54-56] 中使用分治法分別對FPGA 內(nèi)部資源CLB、IR、RAM 等不同的資源提出了不同的故障模型, 并依據(jù)故障模型生成特定的測試配置和測試向量,對各功能模塊采用構建“ 一維陣列”進行測試;文獻[57]提出了基于BIST 的多資源聯(lián)合測試方法, 可對互聯(lián)資源和可編程資源同時進行測試;在文獻[58-59]中介紹并實現(xiàn)ATE 測試FPGA 內(nèi)部CLB、IR、IOB 等邏輯資源。
3.1.5 延遲測試
隨著FPGA 內(nèi)密度越來越大、功能越來越多的時鐘策略的存在, 延遲故障對FPGA 具有重要的影響。應用無關延遲主要存在于CLB 內(nèi)部邏輯電路與互聯(lián)資源中,文獻[60]中針對路由和邏輯資源中的延遲故障, 將FPGA 配置成若干個輸入的迭代邏輯陣列,使用振蕩器環(huán)路測試方法進行延遲檢測。 文獻[61]中提出測試延遲故障的BIST 方案,通過觸發(fā)器將LUT 輸出鏈接到下一個LUT 的輸入,以此來鏈接所有邏輯單元, 以便測試對稱FPGA 邏輯架構中所有的延遲故障。 文獻[62]中,為在2 個邏輯塊之間傳播的信號創(chuàng)建競爭條件,在被測路徑開始時同時產(chǎn)生的信號轉(zhuǎn)換會在被測路徑結束時同時生成, 從而完成2 個邏輯塊間的互連或路徑延遲故障測試。 文獻[63] 提出了測試LUT 中的延遲故障方案, 被測的LUT 鏈通過LUT 和觸發(fā)器交替形成,再結合BIST 結構能夠在LUT 輸出上檢測到最小延遲故障,從而完成FPGA 內(nèi)所有LUT中的延遲故障測試。
應用相關型測試是從使用者的角度來測試FPGA芯片,國內(nèi)FPGA 技術發(fā)展時間不長,F(xiàn)PGA 主要技術及專利處于國外壟斷狀態(tài),使用的FPGA 器件都依靠進口, 應用相關測試是保證FPGA 可靠性的最后防線。 應用相關測試不同于應用無關測試去完備地測試FPGA 內(nèi)部所有資源, 而是測試設計中所使用到的邏輯資源、IR 資源、存儲器以及設計中的路徑延遲。
3.2.1 邏輯資源
在文獻[64-65]中提出一種將配置所使用到的邏輯資源和IR 資源分開測試的應用相關測試策略,能夠?qū)崿F(xiàn)任意設計所使用到的IR 資源和邏輯資源測試,缺點是配置次數(shù)較多,且會改變原有設計的結構。 文獻[66]針對上述方法會改變原有設計的問題進行了優(yōu)化,通過使用冗余的互連資源和邏輯資源,對待測的資源進行最優(yōu)化測試路徑配置,實現(xiàn)測試配置與應用配置的共存。文獻[67]介紹了使用雙模冗余和BIST 的測試結構, 可實現(xiàn)映射電路的在線并發(fā)檢測以及重構自修復。
3.2.2 IR
文獻[68]提出通過修改設計中使用的邏輯塊的配置以實現(xiàn)單項功能,用于測試在FPGA 中實現(xiàn)的任意設計的互連中所有的可能故障。 文獻[69]提出的一種基于應用測試的配置生成算法,能大幅度減少互連測試配置的數(shù)量。 文獻[70]提出使用配置文件回讀方法,根據(jù)配置文件的格式對回讀回來的配置文件進行解析, 并與之前下載到FPGA 的配置文件進行比對,實現(xiàn)IR 的故障檢測與定位。 文獻[71]中基于可滿足性模理論的約束和沃爾什碼(Wlash)來生成測試配置,實現(xiàn)了對IR 故障測試的最小數(shù)量測試配置, 在此基礎上,文獻[72]使用布爾可滿足性(SAT)設計了適當?shù)募s束對IR 資源中的固定故障、不同類型的顯性橋接故障和反饋橋接故障進行了測試研究,最終實現(xiàn)了最少數(shù)量的測試配置和上述故障100%的覆蓋, 且該方法與技術無關,能適用于FPGA 中新出現(xiàn)的架構。
3.2.3 存儲器
應用相關的存儲器測試即為在線測試,存儲器在線測試研究是近十幾年開始的, 研究成果相對較少,文獻[73]基于時間冗余,提出使用系統(tǒng)寫入數(shù)據(jù)作為測試數(shù)據(jù)的測試方案,利用每次存儲器寫操作之后到下一次讀/寫操作之間的空余時間對該存儲空間進行測試;文獻[74-75]基于信息冗余,提出使用糾錯碼進行存儲器在線測試,實現(xiàn)存儲器可靠性的有效提高。
3.2.4 延遲
在文獻[76]中描述了基于BIST 的FSM 設計延時測試方法,并給出了時間消耗的計算方法。 文獻[77]中提出將設計電路中所有路徑按一定特征分組,選取同一組中全部路徑利用BIST 電路進行延遲測試。 文獻[78]提出一種新的延遲故障測試技術,通過一種算法將映射設計劃分為順序無環(huán)路子電路,并使用基于線性時間復雜度的算法調(diào)度互聯(lián)點的轉(zhuǎn)換周期進行序列測試向量的生成, 保證設計中所有路徑的100%穩(wěn)健路徑延遲覆蓋和100%的過度故障覆蓋。 文獻[79]面向應用的延遲故障測試方法中,將電路的關鍵路徑按邏輯級數(shù)進行排序,標記終端寄存器,并以之為根節(jié)點創(chuàng)建測試二叉樹,使用BIST 測試延遲,直至覆蓋所有關鍵路徑。
從上述研究內(nèi)容可以看出,應用相關測試的方法大多基于冗余或基于配置文件回讀。
基于冗余的方法分為基于硬件冗余、基于時間冗余和基于信息冗余等,基于硬件冗余是以犧牲面積為代價, 通過對部分被測電路的復制來提高測試的效率,實現(xiàn)起來較為簡單;而基于時間冗余是將執(zhí)行時間延長或差時采樣,減少了大量的面積消耗,但是只能檢測瞬態(tài)故障,對資源的永久故障無效;基于信息冗余主要是利用奇偶校驗碼或漢明碼等糾錯碼進行測試,多用于存儲器在線測試,缺點是需要引入額外的面積開銷,且新增的冗余存儲空間同樣存在可靠性問題。
基于配置文件回讀方法的實現(xiàn)是建立在硬件FPGA 支持動態(tài)寫入和讀出配置數(shù)據(jù)上, 該方法要求對配置數(shù)據(jù)的可操作性要非常靈活,可以在系統(tǒng)正常運行的情況下進行故障檢測以及后續(xù)的恢復操作。 基于配置文件回讀的整個過程不需要外部測試電路的協(xié)助,硬件開銷較小,但將讀回的配置文件與之前下載到FPGA 芯片的配置文件進行比較檢測時,時間開銷可能會稍多。
通過對以上FPGA 的測試進行研究,總結出相應主流測試方法的相關參數(shù)對比分析,結果如表1 所示。
從表1 可以看出,3 種應用無關測試中CLB 測試方法的覆蓋范圍和可擴展性都是比較高的。 其中,陣列測試方法復雜度中等,但需借助價格高昂的ATE 設備,因而開銷較高而有效性中等。 在線BIST 測試方法需在系統(tǒng)空閑或正常工作時實現(xiàn)測試,雖然復雜度較高,但開銷較小,因為其能實現(xiàn)動態(tài)故障的檢測,具有較高的有效性。 離線BIST 測試方法的復雜度較小,因為需多次下載配置文件,耗時較長,其開銷和有效性均為一般。測試IR 的2 種方法的覆蓋范圍和可擴展性也均較高。 非BIST 測試方法的開銷代價較高,而其復雜度和有效性均為中等;BIST 測試方法的開銷中等,其復雜度和有效性較高。 測試存儲器時,MBIST 方法基于各種算法實現(xiàn),復雜度較高且有效性較高,覆蓋范圍和可擴展性也是較高的。
表1 FPGA 檢測方法對比分析
應用無關測試基本上可歸納為基于冗余和配置文件回讀2 種方法,其中,基于冗余的方法復雜度低且有效性高,但覆蓋范圍和可擴展性都較低;而基于配置文件回讀的方法復雜性高,有效性中等,但其覆蓋范圍較高且開銷中等。
在SRAM 型的FPGA 測試中,無論是應用無關測試或是應用相關測試都包含測試矢量生成與施加,以及測試響應分析的步驟,早期的主流方法為基于ATE的測試方法,通過編程將FPGA 內(nèi)部資源與FPGA 輸入/輸出口連接,借助外部ATE 設備對FPGA 芯片輸入測試向量和對測試響應進行分析從而檢測故障。 但隨著FPGA 的制造工藝提高與邏輯復雜度提升,而封裝I/O 端口數(shù)量有限,利用ATE 對FPGA 測試難度越來越大,因此FPGA 的測試研究熱點轉(zhuǎn)向BIST。 基于BIST 的FPGA 測試不但具備較小的硬件花銷而且還能在線全速測試。 隨著FPGA 內(nèi)嵌模塊數(shù)量的增加,BIST 測試大多將各種模塊分開、分步測試。 測試其中一部分時,需假設另一部分無故障,較少將FPGA 內(nèi)部資源作為一個整體同時進行測試。 這種測試方式雖然對FPGA 內(nèi)部的資源測試較為充分,故障覆蓋率也較高,但測試的編程次數(shù)較多,測試時間開銷大。 隨著FPGA 重構技術的發(fā)展, 可以將重構技術應用到FPGA 測試中, 在測試時對測試模塊區(qū)域采用部分重構技術,減少測試時間,而且若通過重構技術對檢測到的故障電路進行隔離處理,將可以實現(xiàn)FPGA 的容錯。 FPGA 測試方法本身的研究將側重于較為通用的測試方案,實現(xiàn)測試集的精簡、測試次數(shù)的減少、故障率的提高以及低功耗的測試。
從上世紀FPGA 發(fā)明以來,多年的工藝與技術發(fā)展促成了如今FPGA 的廣泛應用。 FPGA 的可靠性問題也逐漸受到重視,面向FPGA 測試的研究也不斷得到發(fā)展。 從早期基于ATE 的測試集成, 到如今基于BIST 的結構測試以及FPGA 重構技術的參與等,都致力于對FPGA 內(nèi)部資源的故障進行完備性測試,從而對FPGA 的可靠性進行有效的評估。 毫無疑問,F(xiàn)PGA的測試研究成為了FPGA 研發(fā)、生產(chǎn)、使用的一個重要組成部分, 對FPGA 測試進行研究具有重大的意義。 對FPGA 測試的研究不會止步于簡單的測試,在這之后配合重構結構實現(xiàn)高效的在線測試會是研究的重要方向之一;完成測試之后如何恢復系統(tǒng)的正常工作,即容錯設計,也將是FPGA 測試發(fā)展的重要領域。此外,F(xiàn)PGA 的測試方法也可以與硬件安全設計相結合,為高可靠性的基于FPGA 的系統(tǒng)設計提供更高效的解決方案。