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