姚鼎,武翰
(中國船舶重工集團公司第七一六研究所,連云港 222006)
JTAG(Joint Test Action Group)是一種國際標準測試協議(IEEE 1149.1),主要用于芯片內部測試,目前主流的CPLD、FPGA、DSP等器件均已支持邊界掃描測試技術,區別于傳統接觸式測試,JTAG可以明顯提升測試效率,降低測試成本,因此JTAG技術現已在大規模集成電路測試與診斷中廣泛應用。本文基于JTAG測試技術的CPLD測試流程主要是:利用EDA專業軟件工具基于改良移步算法自動生成測試向量,然后通過USBBlaster下載電纜,將測試向量通過JTAG接口加載至待測CPLD中,同時依據測試項目要求選擇對應的測試模式,將測試響應向量與期望的向量進行分析處理從而得出判定結果。
JTAG測試實質上是在芯片每個引腳上增加一個邊界掃描單元(BSC),這些BCS以串聯的方式連接起來,形成了一條特殊的測試鏈。芯片正常工作時,數據流不會經過BSC,也就是不影響芯片的正常工作;當芯片處于測試邏輯時,內部邏輯工作停止,測試數據經測試鏈以串行移位的方式開始進入測試,并作用于芯片的I/O引腳,通過對這些I/O引腳的激勵/響應信號采集分析得出測試結果,邊界掃描測試電路的基本結構如圖 1所示。
圖1 邊界掃描基本結構圖
其中測試訪問端口(TAP)是JTAG的重要結構,主要是通過對 TMS 和 TCK 信號的采樣,將不同類型的寄存器連接到 TDI 與 TDO 之間,TAP端口描述如表1所示。
表1 測試訪問端口[1]
JTAG典型時序圖如圖2所示。
圖2 JTAG的一個典型時序圖
依據IEEE1149.1對JTAG接口的五個引腳的接法規定如下:
1)TDI必須上拉
TDI上拉電阻的選擇應參照器件的參數手冊,如果手冊中沒有具體的要求,一般選取4.7 K,但不能小于1 K。根據IEEE 1149.1標準,全“1”指令為旁路指令(BYPASS),而給JTAG接口裝入旁路指令不會影響該器件的正常工作,如果將TDI上拉,即使器件被錯誤裝入其他指令,也將轉換為旁路指令, 不會影響其正常工作。
2)TDO不用上拉/下拉
TDO懸空,在設計中應避免將TDO腳作為I/O腳。器件在進行指令移位和數據移位時TDO才有輸出,其他情況下均為高阻狀態。
3)TMS必須上拉
TMS上拉電阻的選擇可參照器件手冊,一般選取4.7 K。根據TAP控制器的十六狀態機原理可以知道,若TMS 在5個時鐘周期內連續保持高電平,則無論TAP控制器處于何種狀態,都將回到Test-Logic-reset狀態,此時器件正常工作。
4)TCK建議下拉
TCK采用上拉或下拉電阻的選擇應參照器件的參數手冊,若手冊未給出具體要求,則應進行下拉,一般下拉電阻選取1 K。JTAG器件的TDI和TMS都在TCK時鐘的上升沿有效,如果TCK下拉或上拉,將不會產生有效的TCK上升沿。但是請注意TCK下拉電阻至少要大于330 Ω,否則JTAG測試加載儀可能無法正確驅動TCK信號。
5)TRST必須下拉
TRST下拉電阻的選擇參照具體器件手冊,一般選取1 K。根據TAP控制器的十六狀態機工作原理,/TRST下拉,器件處于Test-Logic-reset狀態,不影響正常工作,因此通過JTAG進行測試時,必須首先將/TRST拉高才能進行。
綜上所述,JTAG測試引腳接法如圖3所示。
圖3 JTAG測試引腳接法示意圖
以上電阻的阻值是在VCC為5 V或3.3 V時確定的,VCC為2.5 V等電壓時電阻的阻值確定可參考器件手冊和以上電阻阻值并依據相同的原理進行確定,如果器件手冊有推薦的上拉或下拉電阻的阻值,則推薦以器件手冊的為準。
本文擬開發對象為Altera公司的MAX-7000CPLD,因此選擇利用Quartus Ⅱ將測試程序通過MasterBlaster串行/USB通信電纜下載至CPLD中,MasterBlaster串行/USB通信電纜USB接口與計算機相連,與PCB板相連的是標準的10針插座。JTAG引腳配置如圖4所示。
圖4 JTAG引腳配置圖
TAP控制器是整個JTAG電路實現的核心控制器,控制著測試過程中相關信號的傳遞和改變,其內部由一個16狀態的有限狀態機、控制邏輯和譯碼電路組成[2]。指令寄存器與各種數據寄存器的運行均由TAP控制器通過發出控制信號來控制,即在TCK上升沿采樣TMS信號用于控制TAP狀態轉移,其狀態轉移的翻轉邏輯如圖5所示。
TAP控制器內的狀態機有16個狀態,用于解釋串行輸入的TMS控制信號,且均在TCK上升沿進行轉變,圖5中箭頭上的“0”或“1”即表示在TCK上升沿采樣到的TMS值,兩豎列分別表示數據路徑和指令路徑,且均有7個狀態。TMS為“01”時,TAP控制器為“選擇數字寄存掃描”狀態;當TMS為“11”時則為“選擇指令寄存掃描”狀態;當TMS為連續5個(及以上)的TCK脈沖寬度信號時,TAP控制器則跳轉至“測試邏輯復位”狀態[3]。
圖5 TAP控制器的狀態轉換圖
測試向量生成算法非常多,有移步算法、等權值算法、計數補償算法等等,階段實際工作中,對測試結果有較高要求,需要重點考慮測試覆蓋率即測試向量的完備性,因此采用移步算法,同時對該測試向量生成算法進行進一步的優化。
在具體測試時,首先進行全0和全1的測試,判斷CPLD是否存在固定故障,并記錄存在的故障引腳。然后進行移步0的測試,若激勵與響應相等,表明沒有短路故障,本項測試結束,若第n個激勵與響應向量不等,則需判斷第n個測試向量的第n位是否為0,若是,則為線與故障,反之則為線或短路故障,同時繼續執行移步0測試,直至結束,并記錄存在的故障引腳,最后可根據移步0測試中存在的短路故障生成移步1的測試向量。因此當CPLD中的線網數為A時,移步0的測試向量個數也為A,若存在短路故障的線網個數為B,移步1測試向量個數為B 基于JTAG標準的邊界掃描測試一般的執行過程如圖6所示。首先解析和綜合測試程序開發過程中的描述文件,并通過專用EDA工具對測試算法進行仿真,同時將仿真信號轉換成測試軟件可識別的測試向量信息,然后利用JTAG轉換接口將測試向量加載至被測電路中,執行測試程序,將測試響應信息與期望值進行比較,從而完成最終的測試。 圖6 JTAG測試的執行過程 基于JTAG的測試流程首先必須進行完整性測試,只有完整性測試合格才能說明測試掃描鏈正常,完整性測試主要是對 TCK、TMS、TDI、TDO 四個進行檢測,確定TAP控制器各信號狀態,從而確定掃描鏈是否正常。而后可以進行功能及參數的測試,通過采樣激勵/響應信號,并進行分析,完成每項測試內容具體測試流程如圖7所示。 圖7 JTAG測試具體流程 本文主要從軟件設計方面詳細介紹了基于JTAG的CPLD測試配置方法,給出了JTAG測試的設計與實現過程,從而為下一步CPLD測試的工程實現奠定了基礎,有利于縮短CPLD的測試周期,降低測試成本。4 JTAG測試的設計與實現
5 結束語