蔣常斌 生曉坤 李 杰 宋澤明
(北京自動測試技術研究所,北京 100088)
隨著半導體技術的發展,集成電路制程工藝從深亞微米發展到納米級,晶體管集成度的大幅提高使得芯片復雜度增加,單個芯片的功能越來越強。二十世紀90年代ARM 公司成立于英國劍橋,主要出售芯片設計技術的授權。采用ARM技術知識產權( IP 核)的微處理器,即ARM 微處理器,已遍及工業控制、消費類電子產品、通信系統、網絡系統、無線系統等各類產品市場,基于ARM 技術的微處理器應用約占據了32 位RISC 微處理器七成以上的市場份額。ARM芯片的廣泛應用和發展也給測試帶來了挑戰,集成電路測試一般采用實際速度下的功能測試,但半導體技術的發展使得測試開發工程資源按幾何規律增長,自動測試設備(ATE)的性能趕不上日益增加的器件I/O速度的發展,同時也越來難以滿足ARM等微處理器測試所用的時序信號高分辨率要求,因而必須不斷提高自動測試設備的性能,導致測試成本不斷攀升。此外,因為ARM芯片的復雜度越來越高,為對其進行功能測試,人工編寫測試向量的工作量是極其巨大的,實際上一個ARM芯片測試向量的手工編寫工作量可能達到數十人年甚至更多。本文針對ARM Cortex內核的工作原理,提出了一種高效的測試向量產生方法,并在BC3192測試系統上實現了對ARM Cortex-M3內核微處理器的測試。
集成電路測試主要包括功能測試和直流參數的測試,微處理器的測試也包括功能和直流參數測試兩項內容。微處理器包含豐富的指令集,而且微處理器種類繁多,不同微處理器之間很難有統一的測試規范。為了使測試具有通用性,我們有必要對微處理器的測試建立一個統一的模型,如圖1所示。芯片測試系統為被測微處理器提供電源和時鐘,并能夠模擬微處理器的仿真通信接口來控制微處理器工作,同時配合仿真時序施加激勵向量,從而達到測試目的。

圖1 微處理器測試模型
按微處理器仿真通信接口大致分兩類,一類是具有仿真接口(如JTAG)的微處理器,一類是沒有仿真接口的微處理器,對于配備類似JTAG接口的微處理器,測試儀通過仿真一個JTAG接口對被測芯片進行功能或參數測試。沒有配備仿真調試接口的芯片,可以根據芯片的外部接口和引導方式選擇測試模型。
大多數的微處理器都提供了跟蹤調試接口,例如最常用的JTAG接口,Cortex-M3內核除了支持JTAG調試外,還提供了專門的指令追蹤單元(ITM)。JTAG(Joint Test Action Group,聯合測試行動小組)是一種國際標準測試協議(IEEE 1149.1兼容),主要用于芯片內部測試。現在多數的高級器件都支持JTAG協議,如ARM、DSP、FPGA器件等。標準的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時鐘、數據輸入和數據輸出線。JTAG最初是用來對芯片進行測試的,因此使用JTAG接口測試微處理器具有很多優點。
用JTAG接口對微處理器進行仿真測試,是通過測試系統用測試矢量模擬一個JTAG接口實現對微處理器的仿真控制,其核心是狀態機的模擬,圖2所示為測試系統使用的JTAG TAP控制器的狀態轉換圖。

圖2 JTAG TAP控制器的狀態轉換圖
通過測試儀來模擬狀態轉換就可以實現JTAG通信控制。JTAG在物理層和數據鏈路層具有統一的規范,但針對不同的芯片仿真測試協議可能略有差異。為了使測試模型具有通用性,我們對測試模型的JTAG接口做了一個抽象層,如圖3所示。圖中抽象層將類型多樣的控制函數轉化成芯片能識別的數據流來控制被測芯片的工作狀態。

圖3 JTAG接口的抽象
針對沒有配備仿真調試接口的微處理器,可以利用引導功能實現對微處理器的測試。因沒有配備仿真調試功能,不能實現仿真測試。因此針對這一類的微處理器測試中,需要在芯片中加載測試代碼。大多數的微處理器芯片都具有上電引導功能,可以利用引導功能將測試代碼加載到微處理器中,進而實現功能和直流參數測試。而對于內部配備FLASH的微處理器可以先將測試代碼下載到片內FLASH中,以實現對微處理器的功能和參數測試。
為了實現對微處理器的測試控制,通常,測試系統利用微處理器的片上通信接口與片上測試程序通信,互相配合完成功能和參數測試。
ARM Cortex-M系列微處理器主要用于低成本和低功耗領域,如智能測量、人機接口設備、汽車和工業控制系統、大型家用電器、消費性產品和醫療器械等領域。圖4為Cortex-M系列微處理器的簡要框圖。

圖4 Cortex-M3內核框圖
ARM Cortex-M3內核搭載了若干種調試相關的特性。最主要的就是程序執行控制,包括停機(halting)、單步執行(stepping)、指令斷點、數據觀察點、寄存器和存儲器訪問、性能速寫(profiling)以及各種跟蹤機制。Cortex-M3的調試系統基于ARM最新的CoreSight架構,雖然內核本身不再含有JTAG接口,但是提供了調試訪問接口(DAP)的總線接口。通過DAP可以訪問芯片的寄存器,也可以訪問系統存儲器,并且可以在內核運行的時候訪問,這就對芯片的測試提供了接口支持。集成Cortex-M3內核的微處理器一般提供一個調試端口(DP)與DAP相連,目前可用的調試端口包括SWJ‐DP,既支持傳統的JTAG調試,也支持新的串行線調試協議。Cortex-M3內核還能掛載一個嵌入式跟蹤宏單元(ETM)。ETM可以不斷地發出跟蹤信息,這些信息通過跟蹤端口接口單元(TPIU)送到內核的外部,對于外部集成再跟蹤信息分析儀的ARM芯片,可把TIPU輸出的已執行指令信息捕捉到,并且送給芯片測試系統。
用自動測試設備(ATE)測試ARM芯片是一種傳統的測試技術,其優點是可以靈活編制測試向量,專注于應用相關的功能模塊和參數。但是由于ARM芯片的功能與應用有相當的復雜性,因此對測試系統所具有的能力也要求較高。這就要求測試設備本身必須要具備測試各種不同功能模塊的能力,包含對邏輯、模擬、內存、高速或高頻電路的測試能力等等。同時測試系統最好是每個測試通道都有自己的獨立測試能力,避免采用資源共享的方式,以便能夠靈活運用在各種不同的測試功能上。所以常規的ARM芯片測試設備往往要求相當高的配置才能應對測試需求。
測試的含義非常廣泛,就ARM芯片測試而言,可以定義多種類型的測試,不同類型的測試需要產生不同類型的測試向量。而測試向量生成的方法,雖然可以人工編制,但多數情況需要由測試向量生成工具(ATPG)生成,才能產生比較完備的測試集。本文介紹的ARM芯片測試方法,借助對應的ARM芯片開發工具產生測試代碼,再由專用的測試向量生成工具生成測試向量。這種方法的優點是能針對ARM芯片應用開發人員關心的測試集合產生測試向量,因而比較高效,測試成本也能控制在比較低的水平上。此外,可以借助大量的ARM芯片應用軟件來轉碼,能大幅減少工作量。缺點是不容易用算法來實現自動生成完備的測試代碼。

圖5 測試向量生成器
圖5為ARM芯片測試向量生成器。測試代碼一般可以從ARM芯片開發例程中獲得,測試向量通過編譯器編譯成ARM芯片可執行代碼,然后與激勵向量和期望向量混合生成完整的ARM芯片測試向量。ARM芯片測試向量生成工具通過時間參數來確定測試代碼、激勵向量與期望向量之間的時序關系,ARM芯片時間參數可從芯片手冊中獲得。測試向量生成后,通過BC3192集成開發環境下載到測試系統圖形卡中,啟動測試程序,激勵向量依序施加到被測ARM芯片的輸入端口,同時對輸出端進行監測比較獲得測試結果。綜上,測試向量的產生是ARM芯片測試的核心,本文所述測試向量生成器通過輸入ARM芯片可執行代碼和芯片時間參數來產生測試邏輯,具有易用、高效的特點,現已用于多個ARM Cortex內核微處理器的測試中。
本文通過分析ARM Cortex-M3內核的工作原理和跟蹤調試方法,利用通用的ARM集成開發環境,結合BC3192V50測試系統的測試向量生成器,能夠快速高效產生基于ARM Cortex-M3內核的微處理器測試向量,進而完成功能和直流參數測試。本案所述方法同樣適于其他微處理器的測試。
[1]楊廣宇.SoC 測試的發展趨勢及挑戰[J].半導體技術,2003,28(5):24-26.
[2]吉國凡,趙智昊,楊嵩等.基于ATE的FPGA測試方法[J].電子測試,2007,(12):43-46.
[3]談穎莉.戎蒙恬.SoC 芯片設計與測試[J].半導體技術,2007(11):11-16.
[4]Joseph Yiu.The Definitive Guide to the ARM Cortex-M3,2007
[5]Jaehoon Song,Piljae Min,Hyunbean Yi et al.Design of Test Access Mechanism for AMBA-Based System-ona-Chip[C].//VLSI Test Symposium(VTS),2007 IEEE ;Berkeley,CA.2007:375-380.
[6]JAKUB DALECKI,TOMASZ TALASKA,RAFAL DLUGOSZ et al.A new,low cost,precise measurement card for testing of ultra-low cower analoa ASICs[J].Elektronika,2011,52(12):32-4.
[7]Zorian Y,Marinissen E J,Dey S.Testing embedded -core based system chips[J].IEEE Co微處理器ter,1999,32(6):52 - 60.