劉 軍,王秀云,任福繼
1.合肥工業大學 計算機與信息學院,合肥230009
2.合肥工業大學 計算機與信息學院 情感計算與先進智能機器安徽省重點實驗室,合肥230009
3.德島大學 工學院 智能信息系,日本 德島7708502
隨著半導體技術的進步,芯片的特征尺寸不斷縮小,互聯線延遲和功耗的增加使得傳統的摩爾定律已經很難繼續發展下去[1]。為了解決以上問題,以TSVs(Through Silicon Vias)為核心的2.5D 集成技術應運而生。基于TSVs 轉接板的2.5D 集成電路能夠將多個芯片在轉接板上直接互連[2-3],縮短了芯片之間的互連線長度,降低了延遲與功耗,增加了帶寬,被廣泛認為是突破摩爾定律的有效途徑[4-5]。
2.5 D 集成電路已有實際的產品投向市場。Xilinx與臺積電合作,利用轉接板技術,推出了2.5D FPGA 產品Virtex-7 2000T[6],如圖1所示。在轉接板中包含了大量的水平連接線和垂直連接線[7]。水平連接線連接各個微凸點(microbumps),垂直連接線連接微凸點、TSVs及C4 凸點(C4 bumps)。如果轉接板中的某條連接線出現開路或短路故障,即使堆疊在轉接板上的芯片是無故故障的,也會導致整個集成電路的失效,成本損失很大。因此,在2.5D集成電路中對轉接板測試至關重要。

圖1 Xilinx's基于轉接板的FPGA產品Virtex-7
轉接板測試有三個階段:綁定前(pre-bond)、綁定中(mid-bond)和綁定后(post-bond)。在轉接板的綁定中或綁定后測試時,芯片已經被安裝在轉接板上,利用這些芯片可以實現對轉接板上互連線的測試[7-13]。而在綁定前測試時,由于沒有任何其他芯片堆疊在轉接板上,只能通過數量有限的C4凸點來施加測試激勵和獲取測試響應,以實現對互連線的測試。而轉接板上大部分互連線并沒有與C4 凸點相連。針對這部分互連線,必須通過可測試性設計的方法才能進行測試[14-16]。
針對轉接板綁定前的測試,文獻[14]提出使用測試探針(test probes)和導電玻璃處理器(electrically con‐ductive glass handler)分別連接在轉接板的上側和下側,實現對轉接板的綁定前測試。該方法易于實現,但是只能測試TSVs,并不能對轉接板中的互連線進行測試。文獻[15]提出在待測試轉接板上連接輔助轉接板,利用輔助轉接板提供的額外連接線使待測試轉接板上相互分離的互連線連接,以測試互連線的開路和短路故障。但文獻[15]方案需要使用兩塊輔助轉接板(開路和短路故障測試分別需要一塊輔助轉接板),增加了測試成本。文獻[16]在文獻[15]的基礎上提出了使用一塊輔助轉接板來測試待測試轉接板中互連線的開路和短路故障,以減少測試成本,但文獻[16]方法的故障覆蓋率很低。為了提高轉接板的故障覆蓋率,減少測試時間,降低測試成本,本文提出了僅使用一塊輔助轉接板對綁定前待測試轉接板中的互連線進行開路和短路故障測試的新方案。所提方法首先使用鄰接矩陣求極大獨立集的方法將待測試轉接板中的互連線進行分組,每個分組內的互連線之間不會發生短路故障。然后在輔助轉接板上布置導線,實現互連線的組內連接。接著在輔助轉接板上布置熔絲,將互連線進行組間連接形成可以對開路故障進行測試的測試路徑。為最大化測試路徑的數量,并且減少所需的熔絲數量,提出了有效的分組間熔絲連接策略進行組間互連。測試時,首先進行開路故障測試。開路故障可以并行的一次測試完成,有效地減少了測試時間。開路故障測試完成后,接著將熔絲熔斷,進行短路故障測試。與已有的方案相比,本文提出的測試方案有效地提高了轉接板測試的故障覆蓋率,使開路和短路故障覆蓋率達到100%,減少了測試時間,同時也減少了所需要的輔助轉接板數量,有效降低了測試成本。
文獻[15]提出的使用輔助轉接板與待測試轉接板連接進行測試的方法如圖2所示。圖2中待測試轉接板上U1 到U17 為 微 凸 點,D1 到D8 是C4 凸 點。在 測 試時,ATE(Auto Test Equipment)的探針只能探測C4 凸點,而微凸點由于其尺寸太小不能直接探測。待測試轉接板中虛線的部分代表TSVs。本文中將TSVs 看作互連線的一部分,統一進行測試。輔助轉接板上的U'1 到U'17是與待測試轉接板相對應的微凸點。圖3是圖2中待測試轉接板上各互連線的拓撲結構圖,圖3 中大球表示C4凸點,小球表示微凸點,實線表示待測試轉接板上的互連線。

圖2 輔助轉接板和待測試轉接板

圖3 轉接板互連線拓撲結構圖
為描述方便,在文獻[15]中將連接微凸點或C4凸點的一條或多條線段稱為線網(net)。如圖3中連接D2和U7 的線段就稱為一個線網。將僅連接微凸點的線網稱為U-U(Up-to-Up)線網,如連接U3 和U12 的線網被稱為U-U 線網。將微凸點與C4凸點連接起來的線網稱為U-D(Up-to-Down)線網,如連接D2 和U7 的線網被稱為U-D線網。
在對待測試轉接板進行測試時,需要將輔助轉接板與待測試轉接板對應的微凸點堆疊在一起,如U1 需要與U'1進行堆疊。通過輔助轉接板上提供的額外互連結構,使待測試轉接板上的U-U 線網連接到U-D 線網上,形成可以通過C4凸點施加測試激勵和獲取測試響應的測試路徑,例如,圖2 中線網U8-U13,由于U8 和U13 都沒有與C4 凸點相連,無法直接進行測試。但當在輔助轉接板上布置導線后,可以形成測試路徑D2-U7-U'7-U'8-U8-U13-U'13-U'16-U16-D7,該測試路徑包含D2 和D7兩個C4凸點,因此可以對線網U8-U13進行開路故障測試。其中Ux-U'x或U'x-Ux表示兩個轉接板上對應微凸點之間的連接,Ux-Uy(U'x-U'y)表示待測試(輔助)轉接板上的U-U線網。
本文提出的基于輔助轉接板和熔絲的測試方法流程如圖4 所示。該方法首先使用鄰接矩陣求極大獨立集的方法將待測試轉接板上的互連線分組,并在輔助轉接板上布置導線將這些互連線進行組內連接。然后使用熔絲連接策略將各分組進行組間連接。實際測試時,先進行開路故障測試,然后將熔絲熔斷進行短路故障測試。下面詳細介紹各個過程。

圖4 測試方案流程圖
將互連線進行分組的目的是為了測試短路故障。短路故障會在兩個或多個線網之間產生一條低阻路徑。當兩個或多個線網間存在短路故障,對其中一個線網施加測試信號,則另外的線網將會接收到相同的信號。在綁定前的轉接板中,由于只能通過C4 凸點施加測試激勵和獲取測試響應,因此只能檢測U-D線網間的短路故障(對一個U-D 線網施加測試激勵,檢測其他的U-D 線網是否能接收到相同的信號),而U-U 線網間以及U-U與U-D 線網之間的短路故障無法檢測。因此為了檢測所有的線網間是否存在短路故障,需要將U-U 線網與U-D線網通過輔助轉接板進行連接。
但將U-U 線網、U-D 線網間進行連接在一起,有可能會降低短路故障覆蓋率。例如將兩個U-U 線網N1、N2 和 一 個U-D 線 網N3 連 接 在 一 起,則 會 造 成N1 與N2、N1 與N3、N2 與N3 之間的短路故障無法檢測,從而降低了故障覆蓋率。
為了不降低故障覆蓋率,本文的思路是將待測試轉接板上的線網劃分到不同的分組中,每組內至少包含一個U-D線網,并且同一組內的任意兩個線網之間都不會存在短路故障。分組完成后,將位于同一組內的線網通過輔助轉接板連成一個新的線網。這樣就形成了多個新的線網,測試時就測試這些新的線網間是否存在著短路故障。
因為分組數越多,在輔助轉接板上所需要的連線就越少。因此,為了減少連線,分組時要求每組中僅包含一個U-D線網。
本文使用鄰接矩陣求極大獨立集的方法對線網進行分組。此方法首先將各線網之間的關系用鄰接矩陣的形式表示。若兩線網間不會發生短路故障,則矩陣的對應位置為“0”;若兩線網間有可能發生短路故障,則矩陣的對應位置為“1”;各線網自身與自身的關系用“0”表示。為了使得每組中僅有一個U-D 線網,需要假設各U-D 線網之間都會發生短路故障。因為同一個分組內的線網不會發生短路故障,通過這種假設就可以保證每個分組內只含有一個U-D線網。
形成鄰接矩陣后,對此矩陣通過若干次平移變換轉化為標準型,得到極大獨立集。線網分組算法的具體過程如下所示。
輸入:待測試轉接板布線信息。
輸出:分組結果。
步驟1根據線網信息形成鄰接矩陣。
步驟2將鄰接矩陣通過平移變換為標準型,得到極大獨立集,將極大獨立集中的線網劃分為一組。
步驟3判斷是否仍有U-U 線網未被劃分到某分組中。若有,則執行步驟4;若沒有,轉向步驟5。
步驟4將已經分組的線網從鄰接矩陣中刪除,得到新的鄰接矩陣,轉向步驟2。
步驟5判斷是否仍有U-D線網沒有分組,若有,每個U-D線網單獨作為一組。
步驟6算法結束。
下面以圖3 中待測試轉接板上各線網為例,來闡述線網分組算法的過程。為了方便描述,圖3 中的U-D 線網用對應的C4 凸點表示,即8 個U-D 線網分別用D1 到D8表示;三個U-U線網分別表示為:UU1=U3-U12,UU2=U8-U13,UU3=U15-U9-U10。
首先將各線網之間的關系轉換為鄰接矩陣,如式(1):

將矩陣式(1)中的UU3 和D3 項作平移變換得矩陣式(2):

矩陣式(2)是標準形式,從而可知UU1、UU2、D3 是鄰接矩陣的極大獨立集。因此,將UU1、UU2、D3 劃分為一組。由于此時仍有UU3 沒有分組,因此將UU1、UU2、D3從矩陣中刪除,得到新的鄰接矩陣(3):

將矩陣式(3)中的D1 和D2 項作平移變換得矩陣式(4):

矩陣式(4)是標準形式,因此得到極大獨立集UU3、D2,將UU3、D2 線網劃為一組。這時所有U-U 線網都已經劃分到各組中,但仍有U-D 線網D1、D4、D5、D6、D7、D8沒有分組,將每個U-D線網單獨作為一組。因此最后的分組結果為{UU1,UU2,D3},{UU3,D2}、{D1}、{D4}、{D5}、{D6}、{D7}、{D8}。
分組完成后,通過在輔助轉接板上布置導線將線網進行組內連接,如圖5 所示。圖中的虛線表示輔助轉接板中布置的導線。

圖5 組內連接
從圖5 可以看出,組內連接后各分組將組成新的線網,并且每個新的線網都是U-D 線網。為了與圖3 中最初的線網相區別,本文將圖5 中的線網稱為二級線網,將圖3 中的線網稱為一級線網。并且為方便描述,本文余下部分將會把二級U-D線網內部的微凸點省略掉,形成等價的二級U-D 線網,如圖6 所示。與圖5 相比,圖6中省略掉了U9、U3、U12、U13這四個微凸點。

圖6 組內連接后等價的U-D線網
在輔助轉接板上布置熔絲將二級線網連接起來,是為了測試互連線的開路故障。對互連線開路故障進行測試的原理是在互連線的一端施加測試激勵,在另一端接收測試響應。若接收到的測試響應與測試激勵相同,則說明互連線無開路故障,否則互連線存在開路故障。在綁定前的轉接板上,由于只能通過C4 凸點施加測試激勵和獲取測試響應,為了檢測一條測試路徑中的互連線是否存在開路故障,此測試路徑至少要包含兩個C4凸點,即至少存在兩個U-D線網。
由于分組連接后形成的二級線網都是U-D線網,每個二級線網都含有一個C4 凸點,因此只要將兩個或多個二級線網連接在一起就能夠構成一條可以進行開路故障檢測的測試路徑。各二級線網間的連接是通過在輔助轉接板上布置熔絲實現的,以便開路故障測試完成后,接著將熔絲熔斷,不會影響短路故障的測試。
由于在線網中存在著大量的扇出,在構建測試路徑時需要避免由于信號沖突而造成的開路故障覆蓋率降低的問題。信號沖突是由于二級線網不同扇出的輸入信號重新匯聚到一點,導致部分互連線的開路故障無法檢測,如圖7(a)所示。圖7(a)將四個二級U-D 線網連成一條測試路徑,在D1 處施加測試激勵,D2 至D4 處獲取測試響應。假設只有U3 與e 之間的連線存在開路故障,而U4 與D2 之間不存在開路故障。由于D2 接收U3和U4 點的信號,此時,D2 可以接收到正確的響應信號,從而導致U3-e 之間的開路故障無法檢測。若采用圖7(b)的連接方式,則不會存在信號沖突,就可以檢測到所有互連線的開路故障。為避免信號沖突,需要滿足如下的條件:若兩個二級線網需要進行連接,則這兩個二級線網只能通過一根熔絲進行連接。如圖7(a)中,二級U-D 線網D1和D2間有兩根熔絲連接,從而導致了信號的沖突。而在圖7(b)中,二級線網D1和D2中只有一根熔絲相連,則沒有產生信號沖突。

圖7 信號沖突與無信號沖突示意圖
除了信號沖突會造成開路故障覆蓋率降低外,連接的方法也會造成故障覆蓋率的降低,如圖8所示。

圖8 不同連接方法示意圖
在圖8(a)的連接方式中(D1 處施加測試激勵,D3、D4 處獲取測試響應),二級線網D2 未能接入測試路徑,從而導致其開路故障無法測試,造成故障覆蓋率的降低。而在圖8(b)的連接方式中,所有的二級線網都可以測試。造成圖8(a)這種現象的原因是由于單扇出二級線網(扇出為1 的二級線網)數量不足,無法與所有的多扇出二級線網(扇出大于1 的二級線網)的微凸點相連。為避免圖8(a)這種現象,本文采用的方法是首先將多扇出二級線網進行連接,從而減少所需的單扇出二級線網數量。如在圖8(b)中,首先將多扇出二級線網D1和D2進行連接,在本例子中將微凸點U2和U3進行連接。這樣連接后,多扇出二級線網中僅余下U1和U4需要與單扇出二級線網進行連接,從而減少了所需的單扇出二級線網的數量。
在使用熔絲連接二級線網時,需要考慮的另一個問題是如何盡可能多地構建可以并行測試的測試路徑,以減少熔絲的數量,如圖9 所示。針對圖9 中的六個二級U-D 線網,圖9(a)只構建了一條測試路徑(可以在D1處施加測試激勵,在D2至D6這五個點獲取測試響應),需要使用五根熔絲。而圖9(b)構建了三個可以并行測試的測試路徑(在C4 凸點D1、D3 和D5 處施加測試激勵,在D2、D4 和D6 處獲取測試響應),僅用了三根熔絲。圖9(a)與圖9(b)相比,雖然使用的熔絲數量減少了,但由于圖9(b)的三條測試路徑可以并行測試,因而這兩種連接方式的測試時間是相同的。

圖9 測試路徑熔絲數比較
綜上所述,為提高開路故障的覆蓋率,最大化并行測試路徑的數量,本文提出的二級線網間的熔絲連接算法如下所示。
輸入:m 個多扇出二級線網,其扇出數量分別為MS1,MS2,…,MSm,以及n個單扇出二級線網。
輸出:并行的測試路徑。
步驟1使用m-1根熔絲,將m 個多扇出二級線網連接在一起。連接時,若兩個二級線網需要進行連接,則這兩個二級線網只能連接一根熔絲。


步驟4將余下的單扇出二級線網兩兩連接,即每兩個單扇出二級線網形成一條測試路徑;若最后余下一個單扇出線網沒有連接,則任選一個二級線網與其連接。
步驟5算法結束。
分組間熔絲連接算法的完整過程可分為三部分,首先進行的是多扇出線網間的連接,然后進行多扇出線網與單扇出線網間的連接,最后進行單扇出線網間的連接。步驟1 將m 個多扇出線網進行連接,為避免信號沖突,連接這些多扇出線網需要使用m-1根熔絲。由于每根熔絲連接兩個微凸點,步驟1 執行完成后,多扇出線網中還有個)微凸點未連接。步驟2和步驟3 是進行多扇出線網與單扇出線網的連接。根據單扇出二級線網數量n 與)的大小關系,分別執行步驟2 和步驟3,形成一條測試路徑。若多扇出線網與單扇出線網連接后,單扇出線網還有剩余,則執行步驟4。在步驟4 中,每兩個單扇出二級線網連接在一起形成一條測試路徑。
根據熔絲連接算法,可以得到構建的測試路徑的數量TP 為:

根據測試路徑的數量可以進一步得到所需熔絲的數量:

下面以圖6 作為熔絲連接算法的輸入,講述算法的連接過程。在圖6 中,二級線網D4 和D6 為多扇出二級線網,其余的為單扇出二級線網。步驟1 就是將多扇出二級線網D4 和D6 進行連接,為避免信號沖突,只能使用一根熔絲。本例子中將微凸點U11 與U10 進行連接,如圖10所示。步驟1執行完成后,多扇出二級線網中還有三個微凸點U4、U2 和U15 未連接。單扇出線網的數量為6,大于3,因而執行步驟3。在步驟3 中,U4、U2 和U15 分別與單扇出二級線網的微凸點U14、U7 和U8 相連。步驟3 執行完成后,還剩余三個單扇出二級線網。在步驟4 中,將U6 與U16 連接形成一條測試路徑。對于余下的最后一個單扇出二級線網,其微凸點U17可以與任何其他的微凸點相連,本例子中將其與U16進行連接,至此算法結束。最終的連接結果如圖10所示。

圖10 組間熔絲連接算法舉例
在圖10 中構建了兩條可以并行測試的路徑。一條測試路徑以C4 凸點D4 作為測試激勵的輸入,D6、D1、D2 和D3 處獲取測試響應;另一條以D5 作為測試激勵輸入端,D7和D8處獲取測試響應。
當輔助轉接板上的熔絲和導線都連接好后,將輔助轉接板與待測試轉接板連接,對待測試轉接板進行開路和短路故障測試。
首先測試開路故障,如圖10 所示,在D4 和D5 處同時施加測試激勵,若其他任何一處C4 凸點未接收到響應信號,則說明待測試轉接板上存在開路故障。當開路故障測試完成后,將所有熔絲熔斷,進行短路故障測試。如將圖10中的熔絲熔斷,得到圖6。圖6中有八組線網,首先在D1 處施加測試激勵,在D2 至D8 處獲取響應信號。若D2 至D8 中任何一點可以獲取到與測試激勵相同的響應信號,則說明待測試轉接板上的互連線間存在短路故障。然后再依次在D2 點至D8 處分別施加測試激勵,每次施加測試激勵時都需要觀察其他C4 凸點是否有響應信號。總共需要進行八次施加測試激勵和觀察測試響應。
本文將所提出的方法應用到七塊待測試轉接板上,分別與文獻[15]和[16]比較了開路故障覆蓋率、短路故障覆蓋率和測試時間,同時也給出了本文方法構建的并行測試路徑的數量及使用的熔絲數量。表1 是七塊待測試轉接板的參數。第一列是待測試轉接板的名稱,第二列至第五列是每塊待測試轉接板上U-D線網數量、U-U線網數量、線網的最大扇出以及多扇出線網數量。在實驗中,每個線網在待測試轉接板上的位置及扇出數都是隨機生成的。

表1 待測試轉接板的參數
表2 是文獻[15]與本文方法的比較,表2 中第二列和第三列分別給出了本文方法構建的并行測試路徑數量以及使用的熔絲數量。后面幾列分別是測試時間、開路故障覆蓋率以及短路故障覆蓋率的比較。
從表2 可以看出,本文測試方法與文獻[15]測試方法的開路故障覆蓋率和短路故障覆蓋率均為100%。但在文獻[15]中,測試開路故障和短路故障分別需要一塊輔助轉接板,共需兩塊輔助轉接板。而本文僅需一塊輔助轉接板,所需的硬件開銷較小。此外,本文所提方案有效地減少了開路故障和短路故障的測試時間。從表2中也可以看出,本文方案的測試時間減少了49.6%~53.5%。這是因為在本方案中所構建的測試路徑,可以并行地測試互連線的開路故障。但文獻[15]方法所構建的多條測試路徑存在著重疊部分,即部分線網會在多條測試路徑中出現,因而不能夠并行測試,增加了測試時間。
表3 是本文方法與文獻[16]方法的比較。表3 中第二至第四列是開路故障覆蓋率的比較。第五至第七列是短路故障覆蓋率的比較。第八至第九列是測試時間的比較。
文獻[16]的方法也僅用了一塊輔助轉接板,與本文方法使用的輔助轉接板數量相同。但本文方法的開路故障覆蓋率和短路故障覆蓋率均達到了100%,要顯著地高于文獻[16]。這是因為文獻[16]的方法會導致很多U-U 線網及多扇出線網中的部分扇出無法連接到開路和短路故障的測試路徑中,使得故障覆蓋率低。文獻[16]方法的開路故障覆蓋率最高為82.7%,最低僅為55.8%;短路故障覆蓋率最高為77.5%,最低僅為54.5%。此外,從表3 中也可以看出,本文方案的測試時間有所增加。這是因為在文獻[16]中,有部分線網未能連入開路、短路故障的測試路徑,所構建的測試路徑數量少,所以測試時間也較少。
本文提出了在一塊輔助轉接板上布置導線和熔絲對綁定前轉接板中的互連線進行開路和短路故障測試的新方案。該方案首先對待測試轉接板上的互連線進行分組,每組內的互連線不會發生短路故障。然后在輔助轉接板上布置導線,將這些互連線進行組內連接。接著再使用熔絲連接算法,進行組間連接,并最大化并行測試路徑數量,以減少所需的熔絲數量。測試時,首先檢測開路故障。當開路故障檢測完成后,將所有熔絲熔斷,再進行短路故障檢測。實驗結果表明,與使用兩塊輔助轉接板的文獻[15]測試方案相比,本文提出的方案不僅降低了測試成本,還減少了49.6%~53.5%的測試時間。與使用一塊輔助轉接板的文獻[16]相比,本文方案的測試時間雖略有增加,但有效地提高了開路和短路故障覆蓋率,使得開路故障覆蓋率最大提高了79.2%,短路故障覆蓋率最大提高了83.5%。

表2 文獻[15]與本文測試方法比較

表3 文獻[16]與本文測試方法比較