歐陽一鳴,齊 蕓,梁華國
(合肥工業(yè)大學(xué)計算機與信息學(xué)院 合肥 230009)
隨著集成電路的持續(xù)發(fā)展,SoC(system-on-chip)及相關(guān)的片上算法已經(jīng)不能滿足有幾十億晶體管的芯片需求,出現(xiàn)了一系列的問題,如耗費大量的設(shè)計時間以及不能將設(shè)計映射到某種專用的體系結(jié)構(gòu)上等,因此需要一種新的設(shè)計平臺來滿足這種需求。20世紀(jì)90年代末人們提出了一種全新的互連結(jié)構(gòu)——片上網(wǎng)絡(luò)(network on chip,NoC)[1]。此平臺可以實現(xiàn)硬件通信結(jié)構(gòu)、操作系統(tǒng)及開發(fā)工具的可重用。它不僅包括體系結(jié)構(gòu),還包括設(shè)計方法,并且體系結(jié)構(gòu)中的資源可從幾十個到幾百個乃至上千個。NoC和SoC都是以IP復(fù)用為基礎(chǔ)的芯片設(shè)計方法。NoC的可擴展性、可測試性與SoC相比要更強[2]。集成電路規(guī)模的增大,使得芯片中的內(nèi)核數(shù)目急劇增加,它的測試代價甚至遠遠超出了設(shè)計和生產(chǎn)代價。為了能夠使用最少的測試時間完成NoC的測試,需要對其中資源進行并行測試。然而,并行測試將帶來測試功耗的增加和測試資源的沖突,因此必須限制并行測試過程中的功耗和避免測試資源沖突。傳統(tǒng)的邏輯設(shè)計思想使得測試生成遇到了難以逾越的障礙,面對這一挑戰(zhàn),根本的解決方法就是在進行系統(tǒng)設(shè)計時就充分考慮到測試的要求,即使用故障診斷的理論來指導(dǎo)系統(tǒng)設(shè)計,這就是可測性設(shè)計技術(shù)。它是以增加電路面積為代價、以實現(xiàn)較大幅度地降低測試難度為目的的測試思想。隨著NoC體系結(jié)構(gòu)和設(shè)計方法的提出,NoC的測試問題也逐漸成為研究的熱點[3]。
2000年11月,瑞典皇家技術(shù)學(xué)院等提出了NoC概念,把NoC定義為在一塊芯片上實現(xiàn)的由交換開關(guān)互聯(lián)的計算資源、存儲資源以及I/O資源。資源節(jié)點之間的通信是通過交換開關(guān)將自帶尋址信息的數(shù)據(jù)包從源地址傳送到目的地址,因此NoC可以簡單理解為在單一芯片上實現(xiàn)的基于網(wǎng)絡(luò)通信的多處理器系統(tǒng)。其核心思想是借鑒并移植計算機網(wǎng)絡(luò)中的概念和方法,用于多個子系統(tǒng)(現(xiàn)有規(guī)模的SoC或者IP核)的集成。NoC采用分組交換技術(shù)替代傳統(tǒng)的總線通信方式,實現(xiàn)了計算與通信的分離,徹底解決了片上通信的瓶頸問題,并解決了時鐘同步問題。
NoC系統(tǒng)由資源節(jié)點、通信節(jié)點、通道和資源網(wǎng)絡(luò)接口組成。NoC的拓?fù)渚褪侵窷oC中各個節(jié)點的連接方式。NoC的拓?fù)渫ǔ7譃橐韵聝深悺?/p>
· 直接型網(wǎng)絡(luò)拓?fù)?。在直接網(wǎng)絡(luò)中,資源節(jié)點直接通過網(wǎng)絡(luò)彼此連接。常見的直接型拓?fù)浒ňW(wǎng)狀拓?fù)?、帶環(huán)網(wǎng)格等。
· 間接型網(wǎng)絡(luò)拓?fù)?。在間接網(wǎng)絡(luò)中,節(jié)點處理器通過一個或更多的中間通信節(jié)點相互連接。Fat-Tree拓?fù)渚褪情g接型網(wǎng)絡(luò)拓?fù)洹?/p>
本文采用的網(wǎng)絡(luò)拓?fù)涫亲詈唵蔚?D-Mesh結(jié)構(gòu),圖1所示就是一個4×4的2D-Mesh的NoC。
NoC測試主要包括NoC本身的測試(路由器與通道的測試)和IP核的測試。目前NoC測試的研究內(nèi)容主要集中在測試外殼的設(shè)計、測試調(diào)度算法的設(shè)計和測試可靠性的研究3個方面。其中,測試外殼的設(shè)計主要是針對NoC中路由器和IP核的測試。它是通過具體的硬件電路設(shè)計,為要測試的具體部件(如路由器)加上這些設(shè)計好的硬件電路,這些附加的電路被人們形象地稱為測試外殼。根據(jù)ATE設(shè)備,對測試外殼中相關(guān)的電路進行相應(yīng)的設(shè)計或改進,以達到將ATE產(chǎn)生的測試向量通過測試外殼送到測試電路內(nèi)部的目的。
針對NoC通信架構(gòu)本身(即互聯(lián))的測試主要是指對路由器和通道的測試。對路由器測試的設(shè)計思路主要有兩種:一種是借助測試外殼的設(shè)計來達到測試的目的[4,5]。測試外殼設(shè)計的目的是為了能將ATE設(shè)備產(chǎn)生的測試向量通過測試外殼送到測試電路內(nèi)部,并及時、正確地將測試響應(yīng)反饋給ATE設(shè)備;另一種是在NoC中選取一個[6]或多個[7]路由器與 ATE相連作為 TAS(test access switch,測試訪問開關(guān)),通過一定的路由方法讓測試數(shù)據(jù)通過TAS在NoC中傳輸,然后依據(jù)一定的錯誤控制機制來報錯或糾錯。路由器的測試主要包括路由邏輯的測試和輸入輸出緩沖區(qū)(FIFO)的測試。由于路由邏輯結(jié)構(gòu)簡單,測試較容易,因此路由器的測試主要是對FIFO的測試。對FIFO的測試主要有傳統(tǒng)的BIST測試和Split測試[8]兩種方法。對通道的測試的主要思想是將測試向量以多播/廣播的方式傳輸?shù)芥溌飞?,并在接收端比較其測試響應(yīng)。
[8]在給出多播方法之前,先給出了兩個假設(shè)條件。首先假設(shè)在路由器的測試過程中采用的是描掃測試,類似于參考文獻[9]中的測試設(shè)計,且其測試響應(yīng)是可以在內(nèi)部進行比較的,并將比較結(jié)果反饋給ATE設(shè)備。然后假設(shè)在測試路由器時所有片上與路由器相連的通道均是無故障的。
在圖2中,選擇一個路由器與ATE設(shè)備相連,這個路由器被稱為TAS。參考文獻[8]提出的多播測試方法是將ATE產(chǎn)生的測試向量以多播的方式向路由器網(wǎng)絡(luò)傳輸。如圖2所示,“M”標(biāo)識的是已經(jīng)測試的路由器,“T”標(biāo)識的是當(dāng)前被測路由器。測試由TAS開始,待TAS測試完畢,下一步則測試與TAS相鄰的路由器。這一步的測試數(shù)據(jù)從ATE設(shè)備經(jīng)TAS向其相鄰的路由器轉(zhuǎn)發(fā)。一直重復(fù)這個過程直到全部路由器測試完畢為止。
下面計算一下這種方法的測試數(shù)據(jù)包數(shù)和測試時間。在m×m的2D-Mesh的NoC中,令Tp為測試一個單獨路由器中的一個測試數(shù)據(jù)包的時間,Np為單個測試數(shù)據(jù)包經(jīng)過一個路由器的時間,所以第i步的測試時間Ti如下。
由于當(dāng)一個路由器測試完畢后,只向與其相鄰的X和Y兩個方向上的路由器發(fā)送測試數(shù)據(jù)包,所以可以用二叉樹的相關(guān)知識計算出總的測試數(shù)據(jù)包的數(shù)目K。
在整個m×m芯片的測試過程中,一共要測試(2m-1)步,所以總的測試時間為TMesh。
這種測試方法雖較單播測試方法減少了一定的測試時間,但是隨著芯片規(guī)模的增大,其測試時間與測試功耗將變得很大,如圖3所示,甚至達到無法接受的程度。另外,在這種方法中,第i+1步的測試,總要等第i步的所有路由器測試完畢后,才將測試向量轉(zhuǎn)發(fā)。雖然第i步路由器的測試是并行的,但在等待測試過程中,顯然我們可以將測試向量向下一步要測試的路由器轉(zhuǎn)發(fā),進一步提高測試的并行性。
NoC中路由器的主要作用是將片上數(shù)據(jù)進行路由,使其到達正確的目的IP核。我們可以將NoC中所有路由器的結(jié)構(gòu)看成是相似的,因而當(dāng)我們對片上路由器進行測試時,每個路由器的測試數(shù)據(jù)是相同的。另外,NoC中的數(shù)據(jù)傳輸通常采用蟲孔機制,即數(shù)據(jù)包是以微片的方式進行傳輸?shù)?,所以我們可以對上述多播方法進行改進以提高測試效率。
針對上述多播方法的缺陷,我們提出了兩種改進的測試方法。
方法1:由于NoC中所有路由器的結(jié)構(gòu)可以看作是相似的,因此可以用相同的測試向量對其進行測試。如圖4(a)所示,每當(dāng)TAS從ATE接收一個測試數(shù)據(jù)包時,先將該測試數(shù)據(jù)包注入本身的待測掃描電路中,然后將該測試數(shù)據(jù)包轉(zhuǎn)發(fā)給相鄰的待測路由器,而不是等待從TAS接收完所有的測試數(shù)據(jù)包并完成測試后,再將測試數(shù)據(jù)包進行轉(zhuǎn)發(fā)。其他的路由器也與TAS的操作相仿,也是對每個接收的測試數(shù)據(jù)包先進行注入,再進行轉(zhuǎn)發(fā)。這樣顯然減少了整個芯片的測試時間,提高了測試效率。但是,由于其測試包數(shù)與原來的多播方法下的測試數(shù)據(jù)包數(shù)相差不多,因此這種方法在測試功耗上并無太大的改進。
從圖4(a)中我們可以看到,每個路由器都會向自己相鄰的節(jié)點轉(zhuǎn)發(fā)測試數(shù)據(jù)包,所以中間節(jié)點會從不同的方向接收數(shù)據(jù)包,對每個數(shù)據(jù)包都會進行轉(zhuǎn)發(fā),這顯然造成了測試時間不必要的增加。并且,由于測試功耗與測試數(shù)據(jù)包數(shù)成正比[7],因此功耗將會增加。特別是當(dāng)芯片規(guī)模很大時,這種冗余數(shù)據(jù)包的轉(zhuǎn)發(fā)不僅會使測試時間和測試功耗增大,還極大地增加了測試路徑擁塞的可能性,因此我們對測試路徑進行了改進。
如圖 4(b)所示,TAS以及與TAS橫坐標(biāo)相同的路由器將測試數(shù)據(jù)包向X與Y兩個方向的相鄰路由器轉(zhuǎn)發(fā),其他路由器則只向X方向上的路由器進行轉(zhuǎn)發(fā)。這樣不但大大減少了冗余數(shù)據(jù)包的轉(zhuǎn)發(fā),減少了測試功耗,減小了產(chǎn)生擁塞的可能性,而且沒有增加測試時間。
對于方法1,隨著待測芯片規(guī)模的增大,測試數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑將變得越來越長,測試時間也將增加。為了進一步減少測試時間,我們提出了另一種改進的測試方法。
方法2:如圖5所示,在片上選擇對角的一對路由器作為TAS,待兩個TAS從ATE接收測試數(shù)據(jù)包后,再用方法1的測試方法進行測試,即同時從兩個對角的方向向片上注入測試數(shù)據(jù)包,這樣相當(dāng)于將整個片上的測試資源分成兩半進行并行測試。
這種方法雖然增加了一個與ATE相連的測試端口,但是能極大地縮短測試路徑,節(jié)約測試時間和測試功耗。
為了實現(xiàn)提出的測試方法,我們?yōu)槁酚善髟O(shè)計了特定的測試外殼架構(gòu),如圖6所示。測試外殼的設(shè)計與參考文獻[6]相似,主要由外殼控制(wrapper controller)模塊、數(shù)據(jù)包控制 (packet controller)模塊和一個比較器(comparator)組成。其中,外殼控制模塊用來控制路由器的工作模式,即根據(jù)測試包入口輸入的數(shù)據(jù)包的類型,在測試模式和正常模式之間進行切換。比較器負(fù)責(zé)將正確的測試響應(yīng)與捕獲的測試響應(yīng)按位進行比較,將比較結(jié)果送到外殼控制模塊。如果發(fā)現(xiàn)錯誤,則由外殼控制模塊進行報錯處理。即對比較器的結(jié)果進行分析,如果結(jié)果為1則表明出錯,就將當(dāng)前路由器的位置發(fā)送給ATE設(shè)備;如果為0,則表明無錯,不做任何輸出。數(shù)據(jù)包控制模塊的作用是對每個進入的測試數(shù)據(jù)包按一定的路由算法進行轉(zhuǎn)發(fā)。
我們的實驗是在m×m的2D-Mesh結(jié)構(gòu)的NoC中進行的。在方法1中,測試數(shù)據(jù)包數(shù)目很容易計算出來,計算公式如下。
在方法2中,由于是分兩部分進行并行測試,因此需要對這兩部分的測試數(shù)據(jù)包分別進行計算,然后進行累加,得到總的測試數(shù)據(jù)包數(shù),計算公式如下。
對比式(4)和(5)不難看出,方法 1和方法2中總的測試數(shù)據(jù)包數(shù)目相近,它們在數(shù)量上只相差1。圖7顯示上述兩種方法的測試數(shù)據(jù)包數(shù)都比多播方法減少了很多,并且芯片規(guī)模越大,這種優(yōu)勢越明顯。因為測試數(shù)據(jù)包數(shù)與測試功耗是成正比的,所以這兩種改進方法的測試功耗要比多播方法小得多。
在兩種改進的方法中,所有的測試數(shù)據(jù)包都是連續(xù)進行轉(zhuǎn)發(fā)的,而不是等待某個路由器接收完所有測試數(shù)據(jù)包并在測試完畢后再進行轉(zhuǎn)發(fā)的。即當(dāng)一個測試數(shù)據(jù)包到達某個路由器時,這個路由器在接收這個測試數(shù)據(jù)包后,隨即進行轉(zhuǎn)發(fā)。所以在某種意義上,對整個片上的路由器來說,測試和轉(zhuǎn)發(fā)是并行的。由此方法1的測試時間T如下。
將式(4)代入式(6)得到式(7)。
方法2是分兩部分并行進行測試的,且這兩部分的大小并不相等(所包含的路由器數(shù)目不同,測試所需的步數(shù)也不相等),所以方法2的總測試時間應(yīng)與這兩部分中大的測試時間相等。又由于在每一部分內(nèi)均是按方法1進行測試的,所以每一部分測試時間的計算與方法1相同。這樣得到方法2的測試時間如下。
從圖8我們可以看出,隨著芯片規(guī)模的增大,兩種改進方法的測試時間都比原來的多播方法顯著減少,方法2所需的測試時間最少。
由于片上網(wǎng)絡(luò)通信架構(gòu)中所有路由器的結(jié)構(gòu)可以看作是相似的,所以我們利用這個特性對多播方法進行了改進,并根據(jù)所提出的測試方法為路由器設(shè)計了特定的測試外殼架構(gòu)。實驗證明,隨著芯片規(guī)模的增大,這兩種改進的方法較多播測試方法減少了測試時間和測試包數(shù),提高了測試并行性。
參考文獻
1 高明倫,杜高明.NoC:下一代集成電路主流設(shè)計技術(shù).微電子學(xué),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