帳號:
密碼:
最新動態
 
產業快訊
CTIMES / 文章 /
微處理器測試的SoC時代新挑戰
系統級晶片設計專欄(5)

【作者: 吳正一,黃俊郎】   2003年05月05日 星期一

瀏覽人次:【5401】

在現在的電子產業中,微處理器(microprocessor)的重要性無庸置疑。除了被用來當做電腦的中央處理單元(central processing unit;CPU)外,也是許多電子消費產品的大腦。自Intel 4004問世以來至今,隨著微處理器在晶片面積、性能與複雜度各方面的快速成長,其設計驗證(design verification)與生產測試(manufacturing testing)的難度也隨之增加。本文的主題為微處理器的生產測試技術,內容將涵括目前主要的測試策略、在系統晶片(System on Chip;SoC)時代所面臨的新挑戰以及可能的解決之道。


微處理器模型

如(圖一)所示,吾人可將微處理器分割為處理器(processor)與記憶體兩部份,而前者又可更進一步分為控制單元(control unit)與資料通道(datapath)。一般而言,資料通道包含對資料進行各種數學、邏輯運算的電路與存放暫時運算結果的暫存器;控制單元則為一有限狀態機器(finite state machine;FSM),根據指令對資料通道送出適當的控制信號;記憶體則儲存軟體程式與資料。


和一般的數位電路相比,微處理器最大的不同在於其高度的可程式性(programmability)-由儲存在記憶體的軟體程式決定所執行的任務。除此之外,微處理器通常會有較高的電路複雜度與性能要求。因此,將針對一般數位電路所發展的測試技術或方法直接運用在微處理器上經常會有效率過低、無法滿足規格(如性能或晶片面積)等問題。


《圖一 微處理器模型》
《圖一 微處理器模型》

微處理器測試

生產測試的主要目的在於決定生產過程有無問題。依據激發、偵測電路瑕疵的理念不同,微處理器測試圖樣(test pattern)可分為功能(functional)測試圖樣與結構性錯誤(structural fault)測試圖樣。前者讓待測微處理器執行所設計的功能以確定其可以正常運作無誤;後者則分析電路結構(一般為邏輯閘階層),找出可以激發電路瑕疵並使其錯誤效應能被觀察到的電路輸入圖樣。測試圖樣的品質是由錯誤涵蓋率(所偵測到的結構性錯誤比例)的高低與所須的測試時間長短來決定。


以下我們將就處理器部份的功能與結構性錯誤測試作進一步的說明。(記憶體測試與邏輯電路測試截然不同,有興趣的讀者可參考[1]。)


功能測試

微處理器的功能測試圖樣的來源主要有二;其一為微處理器發展過程中,設計者為檢查設計是否正確所寫的功能驗證程式(通常包含所有的指令與一些運算元的組合)。由於是由設計者提供,將這些功能驗證程式用在生產測試並不會增加任何測試圖樣產生的負擔。另一個功能測試圖樣的來源則是測試工程師為確保測試品質能達到要求所產生的功能測試程式。功能測試主要的限制與缺點如下:


  • (1)手動產生的測試程式,其品質的好壞與設計者或測試工程師的經驗相關性太大。


  • (2)功能驗證或測試程式通常是以高階的硬體描述(如Verilog或VHDL等高階描述語言)為基礎產生,其品質評斷的標準通常為程式碼函蓋率(code coverage),很難據以推算吾人真正關心的錯誤涵蓋率。


  • (3)完全的功能測試,雖然可以涵蓋所有的結構性錯誤,由於所須的測試時間太長(如果可能的話),並不可行。



由於功能測試可以在微處理器的工作速度下執行(亦即at-speed testing),因此能偵測到一些只影響系統時序(timing)而不會造成邏輯錯誤的電路瑕疵。所以雖然有上述問題,功能測試圖樣仍為微處理器生產測試不可或缺的一部份。


結構性錯誤測試

由於現有的自動測試圖樣產生器(Automatic Test Pattern Generation;ATPG)技術並無法處理像微處理器這麼複雜的循序電路(sequential circuit),可測試性設計(Design-for-Testability;DfT)已成為微處理器結構性測試的必要手段。目前,藉由加入完全或部份掃瞄鍊(full or partial scan chain)以增加記憶體元件(flip-flop or latch)的可控制性與與可觀察性的方法,可以使現有的自動測試圖樣產生器能產生高錯誤涵蓋率的測試圖樣,是最廣為採用的方法。例如,在昇陽的UltraSparc中,幾乎所有的單元都使用完全掃描(惟一的例外使用部份掃描);IBM的500 MHz CMOS S/390與超微(AMD)的K6微處理器皆採用完全掃描設計。


雖然可以幫助達到高錯誤涵蓋率,掃瞄鍊由於採用序列式的(serial)測試圖樣輸入與捕捉資料輸出,使得測試時間顯著地增加。為了縮短測試時間並減少對外部自動測試儀器(automatic test equipment;ATE)的依賴,在晶片上加入測試圖樣產生器(test pattern generator)或測試反應分析器(test response analyzer)的內建自我測試(Built-In Self-Test;BIST)設計,採用度也有日漸升高的的趨勢。


大部份的內建自我測試技術以線性回授移位暫存器(linear feedback shift register, LFSR)來產生pseudo-random測試圖樣,而以MISR(multiple input signature register)來壓縮測試回應,並且以掃瞄鍊為傳送測試圖樣與測試回應的媒介(亦即內建自我測試並不會取代掃瞄練)。對邏輯電路而言,因為pseudo-random圖樣的錯誤涵蓋率通常低於自動測試圖樣產生器產生的測試圖樣,接受度尚不高。(IBM的S/390用了256000個自我測試圖樣達到95%的靜態錯誤涵蓋率。)不過,對大容量的內嵌式記憶體而言,內建自我測試似乎是惟一的有效解決方案,在Digital的Alpha 21164、超微的K6與IBM S/390均有記憶體自我測試功能。


以掃瞄鏈為基礎的結構性錯誤測試,除了測試時間長之外,還有以下問題:


  • (1)此方法無法連續地供應測試圖樣(測試圖樣是序列式地輸入掃瞄鍊),因此無法直接用來偵測與系統時序相關的錯誤。


  • (2)在測試過程中,功率消耗可能會數倍於正常工作模式。



這些測試時間、功率與測試效率的問題,在SoC設計中將會更為嚴重。在複雜的SoC設計中,內嵌式微處理器必須與其它的智財核心(IP core)分享有限的測試資源(如晶片接腳、測試時間等),傳統的測試方法將會導致過高的測試成本。因此,以結構性錯誤為目標的自我測試程式產生技術,最近又開始吸引學術界與工業界的注意。


結構性錯誤導向的測試程式產生技術

(圖二)所示為以結構性錯誤導向的微處理器測試程式產生方法的概念性流程圖。其輸入包含低階的結構描述(如邏輯閘階層的電路描述)、錯誤模型(fault model)與高階的硬體描述(HDL description)、指令集(instruction set)。和功能測試不同的是,這個測試程式產生器(test program generator)須要有低階的電路描述與錯誤模型來找出可以激發或觀察電路瑕疵的指令。結構性錯誤模擬器(structural level fault simulator)則是用來決定錯誤是否被偵測到,並評估測試程式的錯誤涵蓋率。


由於是針對結構性錯誤來產生測試程式,此測試技術結合了功能測試與結構性測試的優點:


  • (1)所產生的測試程式可以在微處理器的額定速度下執行,因此可以用來偵測動態錯誤。


  • (2)沒有測試時功率消耗劇增的問題。


  • (3)測試程式是以結構性錯誤為標的,與生產測試的目標相同。




《圖二 結構性錯誤導向測試程式產生流程》
《圖二 結構性錯誤導向測試程式產生流程》

結構性錯誤測試程式合成

接下來下以一假想的微處理器中ALU的結構性錯誤為例,介紹產生測試程式的可能方法。(圖三)為示為待測ALU與和其相鄰的單元。其中A與B為ALU的運算元輸入;C共有三個信號,分別對應到ALU可以執行的加、減與對A的反相運算(此三個控制信號在任何時間僅有一個為1,亦即one-hot encoding);D為運算結果。測試程式產生步驟如下:


  • (1)以ALU為待測電路,使用ATPG產生可偵測目標錯誤的測試圖樣。在此步驟中,吾人必須藉由修改ALU或ATPG使C為one-hot encoding。假設ATPG產生之測試圖樣為(A,B,C)=(00001111,00111111,010)。


  • (2)C=010對應的是減法,因此實現此測試圖樣首先要將00001111寫入AC,執行減法運算(B值來自記憶體),再將運算結果存入記憶體以觀察錯誤是否存在。


  • (3)對應的程式片段為:(MEM[X]指記憶體位址X)



《公式一》
《公式一》

(4)執行錯誤模擬,將偵測到的錯誤自錯誤列移去。


(5)重複步驟1至4,直到錯誤列成為空集合或已達到預計的錯誤涵蓋率。


(6)將所合成的各個程式片段結合(必要時可以加入分析或壓縮測試結果的子程式),便得到生產測試程式。


(7)最佳化此測試程式以減少所須記憶體空間或執行(亦即生產測試)時間。


此測試程式可以被存在微處理器的非揮發性記憶體上(non-volatile memory),或在生產測試過程中由自動測試儀器寫入待測微處理器的記憶體中。測試程式執行完畢後,吾人檢查所儲存的測試回應值是否正確以判斷晶片是否有結構性錯誤。


除了上述靠分析電路與指令集結構來合成測試程式的方法外,也有一些技術是採用隨機的方法來產生測試程式,而依靠錯誤模擬來決定是否已達到所要求的錯誤涵蓋率。


《圖三 待測ALU與和其相鄰的單元》
《圖三 待測ALU與和其相鄰的單元》

指令階層的可測試性設計

在上個例子中,待測微處理器的架構與指令集都很簡單,因此吾人可以很容易地找出ALU輸入信號值的限制──C為one-hot encoding,並合成實現ATPG測試圖樣的測試程式。然而,可以預見的是,隨著微處理器架構日益複雜,僅靠微處理器原有的指令集來偵測錯誤將會變得不可行或達不到所須的錯誤涵蓋率。解決此問題的方法之一為指令階層的可測試性設計。


指令階層的可測試性設計,其基本觀念係加入專門用於測試用途的指令(須配合適當的硬體改變),以降低合成測試程式的困難、提昇可達到的錯誤涵蓋率或減少測試時間。為達到上述目標,可能的測試指令有:


(1)增加記憶體元件(主要是狀態旗標)可控制性或可讀取性的指令。


(2)壓縮測試結果的指令。


與掃瞄鍊設計相比,加入測試指令同樣也須要修改微處理器電路,但卻有上述結構性錯誤測試程式技術的優點。


結語

隨著內嵌式微處理器的日漸複雜與普及,傳統的生產測試方法若無技術上的重大突破,可能會成為未來系統晶片產業的瓶頸。以結構性錯誤導向的測試程式加上指令階層可測試性設計的生產測試策略,既能在晶片的工作速度下進行,又有達到高錯誤涵蓋率的潛能,已引起許多國內外研究團隊的重視,是一個相當有希望的解決方案。


(作者為台大SoC中心研究教授)


<參考文獻


[1] R. D. Adams, High Performance Memory Testing - Design Principles, Fault Modeling, and Self-Test, Kluwer Academic Publishers, 2003.


[2] A. Carbine, and D. Feltham, "Pentium Pro Processor Design for Test and Debug," International Test Conference, pp. 294-303, 1997.


[3] D. K. Bhavsar, and J. Edmondson, "Alpha 21164 testability strategy," IEEE Design & Test of Computers, Vol. 14, No. 1, pp. 25-33, 1997.


[4] M. E. Levitt, "Designing UltraSparc for testability," IEEE Design & Test for Computers," Vol. 14, No. 1, pp. 10-17, 1997.


[5] T. D. Foote, et al., "Testing the 500-MHz IBM S/390 microprocessor," IEEE Design & Test of Computers, 1998.


[6] C. Stolicny, "Alpha 21164 manufacturing test development and coverage analysis," IEEE Design & Test for Computers, Vol. 15, No. 3, pp. 98-104, 1998.


[7] Z. Navabi, VHDL: Analysis and Modeling of Digital Systems, McGraw-Hill, 1993.


[8] J. Shen, and J. A. Abraham, "Native mode functional test generation for processors with applications to self test and design validation," International Test Conference, pp. 990-999, 1998.


[9] L. Chen, and S. Dey, "Software-Based Self-Testing Methodology for Processor Cores," IEEE Transactions on CAD of Integrated Circuits and Systems, Vol. 20, No. 3, pp. 369-380, March 2001.


[10] W. C. Lai, J. R. Huang, and K. T. Cheng, "Embedded-software-based approach to testing crosstalk-induced faults at on-chip buses," VLSI Test Symposium, pp. 204-209, 2001.


[11] P. Parvathala, K. Maneparambil, and W. Lindsay, "FRITS - A Microprocessor Functional BIST Method," International Test Conference, pp. 590-598, 2002.>


相關文章
第九屆盛群盃HOLTEK MCU創意大賽報告 低價位高功能數位舵機開發平台
comments powered by Disqus
相關討論
  相關新聞
» 數智創新大賽助力產學接軌 鼎新培育未來AI智客
» 豪威集團與飛利浦合作開發車內駕駛健康監測解決方案
» 格斯科技與筑波科技合作進行高階電池檢測
» Crucial擴展DDR5 Pro電競記憶體產品組合 為遊戲玩家提供更快速度
» 奧迪導入恩智浦UWB產品組合 實現免持汽車門禁


刊登廣告 新聞信箱 讀者信箱 著作權聲明 隱私權聲明 本站介紹

Copyright ©1999-2024 遠播資訊股份有限公司版權所有 Powered by O3  v3.20.2048.3.16.203.55
地址:台北數位產業園區(digiBlock Taipei) 103台北市大同區承德路三段287-2號A棟204室
電話 (02)2585-5526 #0 轉接至總機 /  E-Mail: webmaster@ctimes.com.tw