歐陽一鳴,齊 蕓,梁華國
(合肥工業大學計算機與信息學院 合肥 230009)
隨著集成電路的持續發展,SoC(system-on-chip)及相關的片上算法已經不能滿足有幾十億晶體管的芯片需求,出現了一系列的問題,如耗費大量的設計時間以及不能將設計映射到某種專用的體系結構上等,因此需要一種新的設計平臺來滿足這種需求。20世紀90年代末人們提出了一種全新的互連結構——片上網絡(network on chip,NoC)[1]。此平臺可以實現硬件通信結構、操作系統及開發工具的可重用。它不僅包括體系結構,還包括設計方法,并且體系結構中的資源可從幾十個到幾百個乃至上千個。NoC和SoC都是以IP復用為基礎的芯片設計方法。NoC的可擴展性、可測試性與SoC相比要更強[2]。集成電路規模的增大,使得芯片中的內核數目急劇增加,它的測試代價甚至遠遠超出了設計和生產代價。為了能夠使用最少的測試時間完成NoC的測試,需要對其中資源進行并行測試。然而,并行測試將帶來測試功耗的增加和測試資源的沖突,因此必須限制并行測試過程中的功耗和避免測試資源沖突。傳統的邏輯設計思想使得測試生成遇到了難以逾越的障礙,面對這一挑戰,根本的解決方法就是在進行系統設計時就充分考慮到測試的要求,即使用故障診斷的理論來指導系統設計,這就是可測性設計技術。它是以增加電路面積為代價、以實現較大幅度地降低測試難度為目的的測試思想。隨著NoC體系結構和設計方法的提出,NoC的測試問題也逐漸成為研究的熱點[3]。
2000年11月,瑞典皇家技術學院等提出了NoC概念,把NoC定義為在一塊芯片上實現的由交換開關互聯的計算資源、存儲資源以及I/O資源。資源節點之間的通信是通過交換開關將自帶尋址信息的數據包從源地址傳送到目的地址,因此NoC可以簡單理解為在單一芯片上實現的基于網絡通信的多處理器系統。其核心思想是借鑒并移植計算機網絡中的概念和方法,用于多個子系統(現有規模的SoC或者IP核)的集成。NoC采用分組交換技術替代傳統的總線通信方式,實現了計算與通信的分離,徹底解決了片上通信的瓶頸問題,并解決了時鐘同步問題。
NoC系統由資源節點、通信節點、通道和資源網絡接口組成。NoC的拓撲就是指NoC中各個節點的連接方式。NoC的拓撲通常分為以下兩類。
· 直接型網絡拓撲。在直接網絡中,資源節點直接通過網絡彼此連接。常見的直接型拓撲包括網狀拓撲、帶環網格等。
· 間接型網絡拓撲。在間接網絡中,節點處理器通過一個或更多的中間通信節點相互連接。Fat-Tree拓撲就是間接型網絡拓撲。
本文采用的網絡拓撲是最簡單的2D-Mesh結構,圖1所示就是一個4×4的2D-Mesh的NoC。

NoC測試主要包括NoC本身的測試(路由器與通道的測試)和IP核的測試。目前NoC測試的研究內容主要集中在測試外殼的設計、測試調度算法的設計和測試可靠性的研究3個方面。其中,測試外殼的設計主要是針對NoC中路由器和IP核的測試。它是通過具體的硬件電路設計,為要測試的具體部件(如路由器)加上這些設計好的硬件電路,這些附加的電路被人們形象地稱為測試外殼。根據ATE設備,對測試外殼中相關的電路進行相應的設計或改進,以達到將ATE產生的測試向量通過測試外殼送到測試電路內部的目的。
針對NoC通信架構本身(即互聯)的測試主要是指對路由器和通道的測試。對路由器測試的設計思路主要有兩種:一種是借助測試外殼的設計來達到測試的目的[4,5]。測試外殼設計的目的是為了能將ATE設備產生的測試向量通過測試外殼送到測試電路內部,并及時、正確地將測試響應反饋給ATE設備;另一種是在NoC中選取一個[6]或多個[7]路由器與 ATE相連作為 TAS(test access switch,測試訪問開關),通過一定的路由方法讓測試數據通過TAS在NoC中傳輸,然后依據一定的錯誤控制機制來報錯或糾錯。路由器的測試主要包括路由邏輯的測試和輸入輸出緩沖區(FIFO)的測試。由于路由邏輯結構簡單,測試較容易,因此路由器的測試主要是對FIFO的測試。對FIFO的測試主要有傳統的BIST測試和Split測試[8]兩種方法。對通道的測試的主要思想是將測試向量以多播/廣播的方式傳輸到鏈路上,并在接收端比較其測試響應。
[8]在給出多播方法之前,先給出了兩個假設條件。首先假設在路由器的測試過程中采用的是描掃測試,類似于參考文獻[9]中的測試設計,且其測試響應是可以在內部進行比較的,并將比較結果反饋給ATE設備。然后假設在測試路由器時所有片上與路由器相連的通道均是無故障的。
在圖2中,選擇一個路由器與ATE設備相連,這個路由器被稱為TAS。參考文獻[8]提出的多播測試方法是將ATE產生的測試向量以多播的方式向路由器網絡傳輸。如圖2所示,“M”標識的是已經測試的路由器,“T”標識的是當前被測路由器。測試由TAS開始,待TAS測試完畢,下一步則測試與TAS相鄰的路由器。這一步的測試數據從ATE設備經TAS向其相鄰的路由器轉發。一直重復這個過程直到全部路由器測試完畢為止。

下面計算一下這種方法的測試數據包數和測試時間。在m×m的2D-Mesh的NoC中,令Tp為測試一個單獨路由器中的一個測試數據包的時間,Np為單個測試數據包經過一個路由器的時間,所以第i步的測試時間Ti如下。

由于當一個路由器測試完畢后,只向與其相鄰的X和Y兩個方向上的路由器發送測試數據包,所以可以用二叉樹的相關知識計算出總的測試數據包的數目K。

在整個m×m芯片的測試過程中,一共要測試(2m-1)步,所以總的測試時間為TMesh。

這種測試方法雖較單播測試方法減少了一定的測試時間,但是隨著芯片規模的增大,其測試時間與測試功耗將變得很大,如圖3所示,甚至達到無法接受的程度。另外,在這種方法中,第i+1步的測試,總要等第i步的所有路由器測試完畢后,才將測試向量轉發。雖然第i步路由器的測試是并行的,但在等待測試過程中,顯然我們可以將測試向量向下一步要測試的路由器轉發,進一步提高測試的并行性。

NoC中路由器的主要作用是將片上數據進行路由,使其到達正確的目的IP核。我們可以將NoC中所有路由器的結構看成是相似的,因而當我們對片上路由器進行測試時,每個路由器的測試數據是相同的。另外,NoC中的數據傳輸通常采用蟲孔機制,即數據包是以微片的方式進行傳輸的,所以我們可以對上述多播方法進行改進以提高測試效率。
針對上述多播方法的缺陷,我們提出了兩種改進的測試方法。
方法1:由于NoC中所有路由器的結構可以看作是相似的,因此可以用相同的測試向量對其進行測試。如圖4(a)所示,每當TAS從ATE接收一個測試數據包時,先將該測試數據包注入本身的待測掃描電路中,然后將該測試數據包轉發給相鄰的待測路由器,而不是等待從TAS接收完所有的測試數據包并完成測試后,再將測試數據包進行轉發。其他的路由器也與TAS的操作相仿,也是對每個接收的測試數據包先進行注入,再進行轉發。這樣顯然減少了整個芯片的測試時間,提高了測試效率。但是,由于其測試包數與原來的多播方法下的測試數據包數相差不多,因此這種方法在測試功耗上并無太大的改進。

從圖4(a)中我們可以看到,每個路由器都會向自己相鄰的節點轉發測試數據包,所以中間節點會從不同的方向接收數據包,對每個數據包都會進行轉發,這顯然造成了測試時間不必要的增加。并且,由于測試功耗與測試數據包數成正比[7],因此功耗將會增加。特別是當芯片規模很大時,這種冗余數據包的轉發不僅會使測試時間和測試功耗增大,還極大地增加了測試路徑擁塞的可能性,因此我們對測試路徑進行了改進。
如圖 4(b)所示,TAS以及與TAS橫坐標相同的路由器將測試數據包向X與Y兩個方向的相鄰路由器轉發,其他路由器則只向X方向上的路由器進行轉發。這樣不但大大減少了冗余數據包的轉發,減少了測試功耗,減小了產生擁塞的可能性,而且沒有增加測試時間。
對于方法1,隨著待測芯片規模的增大,測試數據包的轉發路徑將變得越來越長,測試時間也將增加。為了進一步減少測試時間,我們提出了另一種改進的測試方法。

方法2:如圖5所示,在片上選擇對角的一對路由器作為TAS,待兩個TAS從ATE接收測試數據包后,再用方法1的測試方法進行測試,即同時從兩個對角的方向向片上注入測試數據包,這樣相當于將整個片上的測試資源分成兩半進行并行測試。
這種方法雖然增加了一個與ATE相連的測試端口,但是能極大地縮短測試路徑,節約測試時間和測試功耗。
為了實現提出的測試方法,我們為路由器設計了特定的測試外殼架構,如圖6所示。測試外殼的設計與參考文獻[6]相似,主要由外殼控制(wrapper controller)模塊、數據包控制 (packet controller)模塊和一個比較器(comparator)組成。其中,外殼控制模塊用來控制路由器的工作模式,即根據測試包入口輸入的數據包的類型,在測試模式和正常模式之間進行切換。比較器負責將正確的測試響應與捕獲的測試響應按位進行比較,將比較結果送到外殼控制模塊。如果發現錯誤,則由外殼控制模塊進行報錯處理。即對比較器的結果進行分析,如果結果為1則表明出錯,就將當前路由器的位置發送給ATE設備;如果為0,則表明無錯,不做任何輸出。數據包控制模塊的作用是對每個進入的測試數據包按一定的路由算法進行轉發。
我們的實驗是在m×m的2D-Mesh結構的NoC中進行的。在方法1中,測試數據包數目很容易計算出來,計算公式如下。

在方法2中,由于是分兩部分進行并行測試,因此需要對這兩部分的測試數據包分別進行計算,然后進行累加,得到總的測試數據包數,計算公式如下。

對比式(4)和(5)不難看出,方法 1和方法2中總的測試數據包數目相近,它們在數量上只相差1。圖7顯示上述兩種方法的測試數據包數都比多播方法減少了很多,并且芯片規模越大,這種優勢越明顯。因為測試數據包數與測試功耗是成正比的,所以這兩種改進方法的測試功耗要比多播方法小得多。
在兩種改進的方法中,所有的測試數據包都是連續進行轉發的,而不是等待某個路由器接收完所有測試數據包并在測試完畢后再進行轉發的。即當一個測試數據包到達某個路由器時,這個路由器在接收這個測試數據包后,隨即進行轉發。所以在某種意義上,對整個片上的路由器來說,測試和轉發是并行的。由此方法1的測試時間T如下。


將式(4)代入式(6)得到式(7)。

方法2是分兩部分并行進行測試的,且這兩部分的大小并不相等(所包含的路由器數目不同,測試所需的步數也不相等),所以方法2的總測試時間應與這兩部分中大的測試時間相等。又由于在每一部分內均是按方法1進行測試的,所以每一部分測試時間的計算與方法1相同。這樣得到方法2的測試時間如下。

從圖8我們可以看出,隨著芯片規模的增大,兩種改進方法的測試時間都比原來的多播方法顯著減少,方法2所需的測試時間最少。


由于片上網絡通信架構中所有路由器的結構可以看作是相似的,所以我們利用這個特性對多播方法進行了改進,并根據所提出的測試方法為路由器設計了特定的測試外殼架構。實驗證明,隨著芯片規模的增大,這兩種改進的方法較多播測試方法減少了測試時間和測試包數,提高了測試并行性。
參考文獻
1 高明倫,杜高明.NoC:下一代集成電路主流設計技術.微電子學,2006,36(4):461~466
2 Zhang Lei,Han Yinhe,Li Huawei,et al.Fault tolerance mechanism in chip many-core processors.Tsinghua Science and Technology,2007,12(21)
3 Tenhunen A,Jantsch H.Networks on chip.Boston:Kluwer Academic Publishers,2003
4 Amory1 M A,Briao E.A scalable test strategy for network-onchip routers.In:International Test Conference,Austin,2005
5 Tran X T,Thonnar Y.A design-for-test implementation of an asynchronous network-on-chip architecture and its associated test pattern generation and application.In:International Symposium on Networks-on-Chip,Newcastle University,2008
6 Hosseinabady M,Banaiyan A.A concurrent testing method for NoC switches.In:Design Automation&Test in Europe,Munich,2006
7 Sedghi M,Koopahi E,Alaghi A.An NoC test strategy based on flooding with power,test time and coverage considerations.In:InternationalConference on VLSIDesign,Hyderabad,2008
8 Grecu C,Pande P,Baosheng Wang.Methodologies and algorithms for testing switch-based NoC interconnects.In:International Symposium on Defect and Fault Tolerance in VLSI Systems,Washington,2005:238~246
9 Nahvi M,Ivanov A.Indirect test architecture for SoC testing.IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems,2004,23(7):1128~1142
10 Sedghi M,Alaghi A,Koopahi E,et al.An HDL based platform for high level NoC switch testing.In:Asian Test Symposium,Beijing,2007:453~458