張 鍵, 鮑宜鵬
(中科芯集成電路有限公司, 江蘇 無錫 214072)
在工業控制、安防、物聯網、消費類電子等諸多領域,MCU 的應用處處可見。 隨著智能時代的來臨和安全意識的提升,MCU 的設計更加復雜化、 高集成化,為了保證MCU 產品的質量, 測試設計是MCU 芯片必不可少的設計內容。
MCU 芯片的可測性設計面臨測試電路安全性能差、可靠性低、易測性差、硬件資源緊張、測試成本高等問題。 許多實驗指出,電路規模每增加1 個數量級,測試生成時間將增大3 個數量級[1]。 由此可見,必須將測試電路的安全性、可靠性、易測性、復用性、低成本性等要求納入設計規范, 通過附加硬件或者改變電路結構,使所設計的電路易于測試。
本文通過研究傳統的測試結構及其局限性,提出了一種新的測試架構,其測試電路在安全性、可靠性、易測性、復用性、低成本性上有所增強,在與合理的測試策略相結合后,對CKS32F0XX 芯片進行了整體測試。
測試一般分為功能測試和制造測試[2]。 MCU 芯片的測試項目主要有模擬模塊、I/O、存儲器、數字內核。模擬模塊主要有HSE、LSE、HSI、ADC 等模塊,I/O 主要測試芯片的引腳功能與性能, 存儲器是指FLASH、SRAM 等存儲器件,數字內核是指MCU 的數字邏輯電路。
傳統的MCU 測試架構如圖1 所示, 是將被測模塊的輸入輸出信號直接連接到芯片的引腳上,加上測試模式的使能與選擇信號構成的一種測試架構。PIN0、PIN1、PIN2、PIN3 為測試模式選擇信號,TEST_EN 為測試模式使能信號。
采用圖1 的測試架構會產生以下問題。 首先,在對芯片進行測試時,芯片的狀態不能確定,可能導致芯片的測試結果不正確。 其次,客戶可能因為誤操作進入了芯片的測試模式、 對芯片造成不可逆的損害,例如對Flash 的信息塊進行操作, 從而導致芯片重要信息丟失。 最后,芯片引腳資源使用較多,而外圍管腳數量有限[3],不能在有限的管腳上實現測試的可控性與可觀察性。 同時,引腳資源的使用與測試機采用site的最多數量有關,較多引腳的使用將使得芯片只能用較少site 進行測試,從而增加了測試時間。
MCU 改進后的傳統測試架構如圖2 所示,雖然使用的引腳數減少,但是其安全性與可靠性依然得不到保障。 首先圖2 中的測試碼生成電路沒有密鑰判定單元,不具有安全性;其次,在測試時電路狀態不能確定,不具有可靠性;最后測試碼沒有充分應用,測試碼沒有當成輸入信號在使用,只用在控制邏輯上。

圖1 MCU 傳統測試架構

圖2 MCU 改進后的傳統測試架構
測試代價主要分為測試生成代價和測試碼置入代價[4]。 采用傳統測試結構,滿足不了復雜MCU 芯片的可測性設計要求,故需要采用新的測試架構。
測試碼生成電路如圖3 所示, 上述測試碼生成電路包括N 位計數器、M 位移位寄存器、 測試模式鎖定單元、密鑰判斷鎖定單元和輸出選擇單元。 其中,進入測試的輔助信號包括復位信號PIN0、 第一引腳信號PIN1、第二引腳信號PIN2、第三引腳信號PIN3 和加電復位信號Lvr, 所述復位信號PIN0 在低電平時有效,第一引腳信號PIN1 用于屏蔽復位信號, 第二引腳信號PIN2 用于生成測試碼的數據輸入, 第三引腳信號PIN3 用于生成測試碼的時鐘輸入, 加電復位信號Lvr用于芯片內部的加電復位,保證了芯片在內部加電復位完成后,進入測試模式時整個芯片系統處于復位狀態,只有被測試的電路工作,從而保證了測試的可靠性。

圖3 測試碼生成電路
測試碼最高位MST 或復位信號PIN0 作為測試碼的輸出條件,如果MST 為0,且PIN1 為0,則輸出測試碼的復位值Reset Value。 在設置測試碼最高位為1 時,芯片進入相應的測試模式,此時芯片外部系統復位信號可以為0,也可以為1。 芯片外部系統復位信號為0 時,可以在芯片系統復位狀態下測試功能模塊;芯片外部系統復位信號為1 時, 可以在芯片系統正常工作狀態下測試功能模塊。 這就方便了芯片在測試模式與正常工作模式之間的切換, 同時利用這樣的特點,也可以測試芯片外部系統復位信號。
改進后的測試架構如圖4 所示, 被測單元的測試模式控制由測試碼生成電路提供,同時測試輸入信號可根據電路的易測性及易調試性,靈活地選擇測試輸入信號由測試碼還是引腳控制。

圖4 MCU 改進后測試架構
增加測試模式不需要增加硬件資源,通過在不同的測試階段采用不同的測試模式,可以減少總體的測試時間,降低成本。 同時,使用較少的引腳還可以實現在測試平臺上能夠使用更多site 對多個芯片進行同時測試,大大減少了測試時間,降低了測試成本。
綜上所述, 改進后的測試架構測試的可靠性、安全性、易測性、復用性、低成本性均有了較大提高。
在設計時,除了考慮測試成本外,還要求必須便于測試分析[5]。 在實際測試中,既需要輸入信號能夠靈活變化,同時要求輸出信號易于觀察。由于MCU 測試機臺的性能不同,所以在設計可測性時,需要考慮到使用性能不一的測試機對芯片測試的情況,例如對于某些測試機臺,測試的時鐘頻率不能超過20 MHz,故測試頻率時就需要設計時鐘分頻, 再輸出到引腳上,如圖5 所示,HSI48 模擬模塊是芯片內部晶振時鐘,輸出48 MHz 的頻率,故必須設計分頻邏輯,最后才能輸出到引腳PA3 上。
HSI48 易受芯片工藝制程及外界溫度等的影響,CAL 信號可以用來對HSI48 進行粗調,TRIM 信號用來對環境的影響進行細調。 芯片測試的HSI48 的值需要進行校準,經過不斷調整CAL 與TRIM,才能將頻率調整到目標頻率,調整的值寫入Flash 信息塊中。 基于以上原因,HSI48 的測試需要靈活調試, 故此時HSI48 的輸入信號可以選擇使用引腳控制。 同時為了節約量產的測試成本,便于在應用板調試,設計了圖6所示的測試結構,它的控制信號比較簡單,只要打開HSI48 的使能位,就能從芯片引腳上輸出測試結果。

圖5 HSI48 測試結構示意圖

圖6 HSI48 簡化測試結構示意圖
中測(CP)是圓片級的測試,一般測試Flash 等存儲器,成測(FT)是芯片封裝后的測試,是測試的最后一道工序。根據以上2 種測試結構,HSI48 的測試采用以下測試策略,CP 測試使用圖5 的測試結構, 而FT測試使用圖6 的測試結構,以節約整體的測試時間,降低測試成本。
在芯片的設計中,可測試性的設計成本是芯片額外的成本, 可測試性的邏輯電路占用了芯片面積。HSI16 測試結構如圖7 所示,在圖5 與圖7 中,使用了同一個分頻器,在PB5=PB4=PB3=0 時,選擇HSI16 進行分頻, 并輸出到PA3 引腳上, 在PB5=PB4、PB3=1時,選擇HSI48 進行分頻,并輸出到PA3 引腳上。這里不僅對PA3 引腳進行了復用,同時對分頻器進行了復用,以降低測試生成代價,節約了測試成本。
對于MCU 芯片, 并不需要對所有I/O 進行性能測試, 要對I/O 進行歸類, 每類選擇一個I/O 測試即可,以降低測試碼置入代價[4]。然而,對于I/O 的某些性能參數每一顆芯片都必須測試,例如VIH、VOH、VOL、VIL等。

圖7 HSI16 測試結構示意圖
現在的MCU 芯片中,嵌入式存儲器一般有2 種,分別為RAM 與Flash,有時可占到芯片一半以上的面積[4],在CKS32FXX 芯片中存儲器占了40%的面積,由此可見對于存儲器測試的重要性。 一般存儲器端口的信號較多,所需引腳資源較多,客戶對于儲存器的容量要求增大,導致外部設備對嵌入式存儲器的測試變得越來越困難,測試成本越來越高。 內建自測試方法通過在芯片內部設計少量的邏輯電路對存儲器進行測試,既節約了引腳資源,便于MCU 較少引腳封裝進行測試,又節約了測試時間。 CKS32FXX 芯片中所集成的SRAM 是單端口SRAM, 每塊SRAM 為32 kB,總容量達到96 kB,如果分開測試需要3 個測試控制器, 浪費硬件資源。 通過采用MBIST 工具Mentor/tessent15.2, 將多個RAM 集成到一起統一測試,既節約測試引腳,又減少了芯片面積,SRAM BIST生成如圖8 所示,3 塊SRAM 存儲器采用同一個測試控制器。

圖8 SRAM BIST 生成
CKS32FXX 芯片中所集成的Flash 采用自檢模塊,對Flash 的全讀、全寫、全擦等基本功能進行測試,在FT 測試中節約了大量的時間。
數字內核是MCU 芯片重要的組成部分, 通常采用掃描的可測試設計技術, 商業EDA 工具基本都支持掃描鏈,CKS32FXX 芯片設計中采用Synopsys/tx16.03 軟件,按照不同電壓域生成了4 條覆蓋率達98.69%的測試模式,供測試機測試使用。
為了測試電路,必須生成測試模式,而測試向量生成也需要根據不同情況進行調整。 圖9 采取RZ 采樣模式,即采樣時鐘與時鐘是同一頻率,這樣的好處是可以減少測試向量置入測試機的時間,ppa4 為輸入時鐘,test_vec_clk 為采樣時鐘。 圖10 采取的為NRZ采樣模式,即采樣時鐘與時鐘是偶數倍頻,這樣的好處是測試機容易調試,時序不會漂移。
由于模擬模塊多采用仿真模型進行仿真,而仿真模型不一定準確,導致測試向量并非真實情況,這時就需要根據情況編寫測試向量,如ADC、DAC 等模擬模塊的測試。

圖9 RZ 采樣模式

圖10 NRZ 采樣模式
隨著MCU 的設計愈加復雜化、高集成化,為保證產品的質量,測試設計越來越重要,可測性設計的意義在于它以盡可能小的代價獲得盡可能高的測試質量,本文中的測試結構與策略在CKS32FXX 芯片中實現,CKS32FXX 是40 萬門、 采用UMC 55 nm 工藝實現的MCU 芯片,中測單顆測試時間為2.94 s,成測單顆時間為1.7 s, 采用J750 測試機, 單個測試成本約0.45 元,符合設計目標,在實際應用中具有推廣價值。