1 引言 FPGA的出現大大縮短了集成電路設計的周期,使產(chǎn)品上市的時(shí)間大大縮短,并減少了設計成本。FPGA的應用越來(lái)越廣泛,并且其市場(chǎng)份額也越來(lái)越大。但是逐漸擴大的芯片規模和更加復雜的芯片結構,給測試帶來(lái)了越來(lái)越大的困難,測試成本大大增加,如何降低測試成本是很多商家和研究者共同面對的一個(gè)問(wèn)題。有關(guān)FPGA測試的研究有很多。 FPGA主要由可編程邏輯資源,可編程連線(xiàn)資源,可編程輸入輸出資源組成。其中連線(xiàn)資源占芯片面積的60%以上,并且隨著(zhù)器件規模增大,連線(xiàn)也越來(lái)越復雜,其出現故障的可能性很大,所以連線(xiàn)資源測試在FPGA測試中扮演了一個(gè)很重要的角色。芯片測試包括故障檢測、故障診斷和故障冗余。故障檢測只檢測芯片中有沒(méi)有故障,如果芯片中有故障就把此芯片扔掉;故障診斷不僅要檢測芯片中是否有故障,還要確定故障的位置和類(lèi)型;而故障冗余是指,對于有故障的芯片采取一定的方法使得芯片可以繼續使用,而不至于浪費?梢钥吹,故障檢測是故障診斷的基礎,而故障冗余又以故障診斷為前提,在本文的設計中,故障檢測及故障診斷都可以支持,只要設計好需要的測試配置就可以了。 對于連線(xiàn)資源測試,出現了很多種方法,大致分為三類(lèi):(1)非內建自測試方法(Non—BIST),利用專(zhuān)有的測試儀器對芯片進(jìn)行配置并加測試向量對芯片進(jìn)行測試;(2)利用芯片內部可編程邏輯資源對連線(xiàn)資源進(jìn)行測試,這是內建自測試方法(BIST),在芯片內部通過(guò)配置可編程邏輯資源自動(dòng)產(chǎn)生測試向量,并且對測試結果進(jìn)行判斷。以上兩種方法都是利用FPGA的可編程特性對芯片進(jìn)行測試的;(3)利用可測試設計方便芯片進(jìn)行測試,通過(guò)一定的硬件消耗,在芯片內部加上一定的輔助電路,使得測試比較方便、快速。本文提出的方法屬于第三類(lèi)方法。 與ASIC測試不同,FPGA測試需要將測試需要的配置下載到芯片中,然后加測試向量對芯片進(jìn)行測試,其測試時(shí)間主要由編程下載的時(shí)間來(lái)決定,所以編程下載時(shí)間決定了測試的成本,很多研究者通過(guò)減少測試配置數目來(lái)減少測試時(shí)間,從而降低測試成本。 本文的出發(fā)點(diǎn)不是通過(guò)減少測試配置數目來(lái)減少測試時(shí)問(wèn),而是從另外一個(gè)角度對測試開(kāi)關(guān)盒連線(xiàn)資源時(shí)間的減少進(jìn)行了研究。通過(guò)一定的硬件消耗大大減少了編程下載的時(shí)間,降低了測試成本。 2 基于SRAM的FPGA結構簡(jiǎn)介 FPGA通常有三個(gè)基本的組成部分,即可編程邏輯單元((Sonfigurable Logic Block,以下簡(jiǎn)稱(chēng)CLB)、可編程輸入輸出單元(Input and Output Block,以下簡(jiǎn)稱(chēng)IOB)及可編程連線(xiàn)資源。通常CLB包含組合邏輯部分和時(shí)序邏輯部分,組合邏輯一般包括查詢(xún)表(Look—up Table)和相關(guān)的多路選擇器(Multiplexer)。而時(shí)序邏輯部分包含觸發(fā)器(DFF)和一些相關(guān)的多路選擇器。IOB則提供了FPGA內部和外部的一個(gè)接口,連線(xiàn)資源則提供CLB與IOB之間以及各CLB之間的通訊。 FPGA芯片的基本結構如圖1其原因所示,現在的FPGA芯片結構越來(lái)越復雜,但都包含這些基本的組成部分。開(kāi)關(guān)盒(Switch Box,以下簡(jiǎn)稱(chēng)SB)將水平和豎直連線(xiàn)資源進(jìn)行切換。連接盒(Connection Box,以下簡(jiǎn)稱(chēng)CB)連接CLB的輸入輸出到連線(xiàn)資源中。在FPGA芯片中,由于連線(xiàn)資源比較復雜,所以測試花費時(shí)間會(huì )很長(cháng)。其中把開(kāi)關(guān)盒抽出來(lái)可以構造開(kāi)關(guān)盒資源圖,其中包括開(kāi)關(guān)盒內部的可編程開(kāi)關(guān)以及開(kāi)關(guān)盒之間的連接線(xiàn)段,如圖2(a)所示。 FPGA開(kāi)關(guān)盒資源模型包括m×m個(gè)SB以及相鄰的SB之間連接開(kāi)關(guān)盒的k條連接線(xiàn)段,其中SB內部的連接關(guān)系如圖2(b)所示。其中粗線(xiàn)代表一個(gè)NMOS管作為傳輸管,用來(lái)控制線(xiàn)段的連接,傳輸管的開(kāi)和閉由編程信息來(lái)控制,編程信息存儲在SRAM單元中。SB內部有很多傳輸管,其中兩條線(xiàn)段之間有傳輸管相連的,稱(chēng)為可連接線(xiàn)段,沒(méi)有傳輸管的,稱(chēng)為不可連接線(xiàn)段。圖2(c)是抽象的開(kāi)關(guān)盒連接關(guān)系,其中四個(gè)方向分別為T(mén),B,L,R,黑點(diǎn)表示此方向的連接線(xiàn)段的集合,每條連接線(xiàn)段可以另外三條連接線(xiàn)段連接,這三條連接線(xiàn)段分別位于其他三個(gè)方向,其中的數字表示傳輸管的編號。比如3,表示左邊的連接線(xiàn)段連接上邊的連接線(xiàn)段。 在FPGA連線(xiàn)資源中,主要包含連接線(xiàn)段,傳輸管和CB中的連線(xiàn)資源。連接盒一般和邏輯資源放在一起進(jìn)行測試,本文著(zhù)重于開(kāi)關(guān)盒連線(xiàn)資源的測試。 3 測試所需要的配置 3.1 測試采用的故障模型 1)線(xiàn)段開(kāi)路故障,線(xiàn)段在制造過(guò)程中中間斷開(kāi),不能正常傳輸信號,輸出端的狀態(tài)固定; 2)線(xiàn)段的固定O故障,不管輸入信號是0還是l,線(xiàn)段總固定在0狀態(tài); 3)線(xiàn)段的固定l故障,不管輸入信號是0還是1,線(xiàn)段總固定在1狀態(tài); 4)傳輸管的固定0故障,也就是常開(kāi)故障,SRAM編程信息不能改變此開(kāi)關(guān)的狀態(tài); 5)傳輸管的固定l故障,也就是常閉故障,SRAM編程信息不能改變此開(kāi)關(guān)的狀態(tài); 6)線(xiàn)段的橋接故障,兩條線(xiàn)段之間短路,當分別在橋接的兩條金屬線(xiàn)上加相反的信號時(shí),因為橋接兩線(xiàn)的輸出信號是相同的。 3.2 測試所需配置 在測試之前,需要將配置信息下載到FPGA芯片中,然后施加測試矢量進(jìn)行測試。本文以[3]中的配置為例說(shuō)明此可測性設計,在此采用Wilton開(kāi)關(guān)盒結構,配置原理與[3]一樣。測試配置如圖3所示。 上述的7種配置中同一個(gè)SB內編號相同的開(kāi)關(guān)的狀態(tài)都是一樣的。配置中SB旁邊的數字表示SB內需要閉合的傳輸管的編號。圖中SB的編號Smn,其中:S00:處于奇行奇列的SB;S01:處于偶行奇列的SB;S10:處于奇行偶列的SB;S11:處于偶行偶列的SB。編號相同的SB在同一個(gè)測試配置中狀態(tài)是完全一樣的。如果對故障進(jìn)行診斷,需要配置1到配置6。 1)配置l和配置2能夠診斷任何單個(gè)線(xiàn)段開(kāi)路故障、線(xiàn)段固定故障和線(xiàn)段橋接故障; 2)配置l、2、3、4、5和配置6能夠診斷任何編號為3、6的單個(gè)傳輸管固定O故障; 3)配置1、2、3、4、5和配置6能夠診斷任何編號為2、5的單個(gè)傳輸管固定0故障; 4)配置3、4、5和配置6能夠診斷任何編號為4、1的單個(gè)傳輸管固定0故障; 5)配置l(或配置2)、配置3和配置4能夠診斷任何編號為l的單個(gè)傳輸管固定1故障; 6)配置1(或配置2)、配置3和配置4能夠診斷任何編號為4的單個(gè)傳輸管固定1故障; 7)配置3、4、5和配置6能夠診斷編號為2、3、5、6的單個(gè)傳輸管固定1故障。 如果僅僅是進(jìn)行故障檢測,配置1、2和配置7就夠了。 4 移位寄存器鏈測試方法 由于FPGA規模越來(lái)越大,編程SRAM單元數量巨大,下載測試配置的時(shí)間就非常大。在測試中,需將配置下載到芯片中,然后加測試矢量對連線(xiàn)資源進(jìn)行測試,但是在下載的過(guò)程中,也同時(shí)將邏輯資源的編程數據下載到了芯片中,這種下載對測試連線(xiàn)資源是沒(méi)有用的,所以這部分時(shí)間對連線(xiàn)資源測試來(lái)說(shuō)是多余的。 從圖2的開(kāi)關(guān)盒連接關(guān)系和圖3中的測試配置可以看出,在一個(gè)開(kāi)關(guān)盒內部編號相同的開(kāi)關(guān)狀態(tài)是一樣的,所以在這種情況下就可以在開(kāi)關(guān)盒內部增加6個(gè)觸發(fā)器,每個(gè)觸發(fā)器的輸出端連接到相同編號的所有傳輸管上,并且將所有的觸發(fā)器連接成多條移位寄存器鏈,這樣在配置的時(shí)候就可以將事先設計好的配置數據通過(guò)移位寄存器鏈下載相對應的開(kāi)關(guān)盒內SRAM單元中,每個(gè)觸發(fā)器可以并行配置與其相連的SRAM單元,時(shí)間又可以節省很多。如圖4所示。各信號意義如下: 1)DATA IN:將設計好的編程數據通過(guò)移位寄存器移位到相對應的位置上; 2)DATA 0UT:移位鏈的輸出端; 3)TEST CONTROL:控制芯片為測試狀態(tài)或正常工作狀態(tài)。當其為1時(shí),所有的測試控制NMOS管都閉合,將觸發(fā)器的輸出寫(xiě)到相應的SRAM單元中;而當其為0時(shí),所有的測試控制NMOS管都斷開(kāi),芯片處于正常工作狀態(tài),測試電路和工作電路完全斷開(kāi),不會(huì )影響芯片的正常工作; 4)NEXT:連接到另外一個(gè)開(kāi)關(guān)盒的DATA IN,將所有的觸發(fā)器連接成多條移位寄存器鏈; 5)CLOCK:時(shí)鐘控制端,控制數據的移位。其他的一些輸入控制端沒(méi)有列出。 測試方法:比如要實(shí)現圖3中測試配置3,因為在這個(gè)配置中,開(kāi)關(guān)盒S00需要將編號為1、3、6的傳輸管閉合,所以此開(kāi)關(guān)盒寄存器的配置為101001,開(kāi)關(guān)盒S10,S11需要將編號為4的傳輸管閉合,其需要的配置為000100,而開(kāi)關(guān)盒Sol將閉合傳輸管l、2、5,所以其配置為110010,所以對于配置3中的9個(gè)開(kāi)關(guān)盒來(lái)說(shuō),需要的配置序列為:101001,000100,10100l;1 100lO,000100,110010;101001,000100,101001。 在測試的時(shí)候分別將6種配置的測試序列分別通過(guò)下載端口下載到芯片中,實(shí)現測試需要的配置對開(kāi)關(guān)盒進(jìn)行測試。 三種常用的SB結構如圖5所示。 這三種結構中,同樣一個(gè)方向的一個(gè)連接線(xiàn)段可以和其他三個(gè)方向的一個(gè)線(xiàn)段相連接,只是連接的線(xiàn)段編號不同,不過(guò)對應的配置還是一樣的。以上的設計同樣可以應用于這三種開(kāi)關(guān)盒結構。 如果是不規則的SB結構,可以通過(guò)設計需要的測試配置來(lái)決定需要增加的觸發(fā)器數目,在測試配置中,盡可能使SB內的狀態(tài)相同的傳輸管多一些。一個(gè)基本的原則就是,在一個(gè)SB內部所有可以配置成同樣狀態(tài)的開(kāi)關(guān)都可以利用一個(gè)觸發(fā)器來(lái)進(jìn)行下載。 如何測試芯片內部增加的電路呢?因為移位鏈有一個(gè)輸出端DATA OUT,可以通過(guò)此輸出端來(lái)驗證移位鏈的正確性。對于傳輸管可以配合開(kāi)關(guān)盒的測試來(lái)對其進(jìn)行測試。如果下載以后功能正確則傳輸管沒(méi)有常開(kāi)故障。下載一定功能電路以后,將TEST CONTROL信號置0狀態(tài),即將所有的傳輸管斷開(kāi),然后下載一個(gè)編程數據和之前相反的位流文件,如果功能未改變說(shuō)明傳輸管沒(méi)有常閉故障。 5 結果 以下從三個(gè)方面來(lái)說(shuō)明此可測性設計的特點(diǎn): 1)測試時(shí)間比較 首先定義幾個(gè)參數,假定芯片的規模是N×N個(gè)邏輯單元,即有N行和N列邏輯單元。 NSB=N2:芯片中開(kāi)關(guān)盒的個(gè)數 PS8:一個(gè)開(kāi)關(guān)盒內部編程開(kāi)關(guān)的數目 NCLB:芯片中CLB的個(gè)數 PCLB:一個(gè)CLB內部的編程開(kāi)關(guān)的數目 NCB:芯片中CB的個(gè)數 PCB:一個(gè)CB內部的編程開(kāi)關(guān)數目 T:編程下載的時(shí)鐘周期 Nconfig:測試需要的配置數目 利用傳統的測試方法測試SB互連資源時(shí),需要將測試設計的配置數據下載到芯片中,此配置的編程數據包含了芯片內部所有編程SRAM的編程信息,所以在下載的時(shí)候同樣將測試用不到的CLB,CB內部的編程信息也下載進(jìn)去了,但是這部分的下載對測試SB是沒(méi)有用的,所以時(shí)間就浪費了。傳統的測試方法需要的時(shí)間為: 利用本文提出的可測性設計方法,測試數據僅僅對SB內部的SRAM單元進(jìn)行配置,而且是并行的,這樣就大大減小了測試SB連線(xiàn)資源配置需要的時(shí)間,在設計中可以實(shí)現N條移位鏈,利用這種方法測試需要的時(shí)間TNEW=6xNxNconfigxT 對于上述芯片的條件,測試時(shí)問(wèn)比較如表1所示。 2)硬件的消耗*估 假設設計中使用的DFF內有30個(gè)MOS管,所以在設計中每個(gè)SB消耗的MOS管數目為6x30+PSB,而SB中邏輯資源包含的MOS管數目為PSBx6+NBUF,其中PSBx5是SRAM單元含有的MOS管數目,PSB是SB內傳輸管的數目,NBUF是SB Buffer中包含的MOS管數目。而在FPGA芯片中一般SB中邏輯資源占芯片面積的28%,所以硬件消耗的面積百分比:0.28x(6x30+PSB)/(PSBx6+NBUF)。 在本文設計的FPGA芯片中,其中只有一種開(kāi)關(guān)盒。每個(gè)開(kāi)關(guān)盒內部Buffer含有的MOS管數目為912個(gè),所以如果在芯片中加入可測性移位鏈所消耗的面積百分比:是0.28x(6x30+216)/(216x6+912)=5.27%,消耗的面積可以接受。 由以上可以看出,文獻方法在測試的過(guò)程中需要利用傳統的方法下載測試少數種子配置,需要時(shí)問(wèn)較多,可以看到本文提出的方法遠遠比文獻改進(jìn)很多,消耗的硬件僅稍有增加。對于文獻采用的方法,需要的測試時(shí)問(wèn)與本文方法可相比較,但它的硬件及內部控制比較復雜,并且測試需要相應的一些外部設備來(lái)判斷是否為測試需要的配置。而本文提出的方法則比較簡(jiǎn)單,而且測試需要的時(shí)間和硬件面積的增加達到了一個(gè)比較好的平衡。 3)對芯片的影響 此可測性設計不會(huì )對芯片的正常工作產(chǎn)生影響,因為在芯片正常工作的時(shí)候,測試電路完全與芯片內部電路分開(kāi)。所以對于芯片使用者來(lái)說(shuō)不存在性能方面的問(wèn)題。 6 結論 本文提出在FPGA芯片內插入多條移位寄存器鏈的方法,可使測試開(kāi)關(guān)盒連線(xiàn)資源的時(shí)問(wèn)比傳統的測試方法和已有的一種方法時(shí)間上減少了99%以上,大大降低了測試的時(shí)間,降低了測試成本,并且消耗的硬件面積比大約在5%左右,在可接受的范圍內。 |