王 晴,王祗文,張櫟存
(1.航天科工空間工程發(fā)展有限公司,北京 100854;2.北京控制與電子技術(shù)研究所,北京 100038)
伴隨著集成電路技術(shù)的數(shù)字化程度越來越高[1],越來越多的電路板由FPGA、CPLD、DSP等大規(guī)模集成電路組成,這些體積小、集成度高的芯片為電路設計帶來了巨大便利[2]。與此同時,超大規(guī)模集成電路、表面貼裝等新技術(shù)也為電路的板級測試帶來諸多難題[3],傳統(tǒng)的測試方法包括探針測試方法、內(nèi)建自測試技術(shù)(BIST,Built-InSelf-Test)、邊界掃描測試技術(shù)。探針測試方法需要將物理測試探針置于被測電路的測試點上,從而開展電氣性能測試[4],工作準備流程繁瑣,且開發(fā)人員需要預留一定數(shù)量的測試點,隨著電路密度的不斷增加,絕大部分電路板采用多層設計,幾乎不可能設置足夠多的探針測試點來完成整個電路的測試覆蓋[5],而且探針屬于接觸時測量,測試過程中還有對電路板本身造成損壞的潛在風險。內(nèi)建自測試技術(shù)是在電路設計階段考慮電路設計完成后的測試問題,更傾向于電路的功能性測試,為測試階段節(jié)約了更多的測試時間,降低了成本,但是這種測試方法往往對電路本身的引腳故障測試覆蓋不足。邊界掃描測試技術(shù)作為一種大規(guī)模數(shù)字集成電路測試標準,提供了一整套標準、完整的電路測設方法,利用移位寄存器和測試向量來控制集成電路管腳的狀態(tài),通過邊界掃描鏈路實現(xiàn)對大規(guī)模集成電路全部管腳的控制,解決了高密度、高集成度數(shù)字電路板測試覆蓋不足的難題,實現(xiàn)了電路的功能測試、靜態(tài)測試、故障定位等[5]。本文從某數(shù)?;旌想娐窚y試入手,介紹了利用邊界掃描測試技術(shù)進行數(shù)?;旌想娐窚y試的設計方法,在不采用外部信號源、采集設備的情況下,最大限度實現(xiàn)電路板的測試覆蓋,有效降低的測試過程中的經(jīng)濟成本和時間成本,同時,也提高了測試效率。
邊界掃描(BS,boundary scan)測試技術(shù),簡稱邊掃,正式命名來源于IEEE/SNSI Standard 1149.1-1990(后簡稱IEEE 1149.1)[7-8],規(guī)定了利用邊界掃描進行測試所需要的硬件和軟件,為相關(guān)的測試設計提供了完整的指導規(guī)范[9]。IEEE 1149.1標準對于被測單元來講屬于非侵入式的測試方法,它不關(guān)心被測單元的內(nèi)部程序,測試過程中在不對被測單元的內(nèi)部程序做任何修改的情況下,僅依靠JTAG接口實現(xiàn)對邏輯電路各個引腳的控制。當前主流的FPGA、CPLD、DSP等集成電路均支持該規(guī)范,利用該規(guī)范,也能夠達到測試非邊界掃描期間的目的[10]。邊界掃描硬件結(jié)構(gòu)組成主要包括4部分:測試訪問接口(TAP)、測試訪問接口控制器、數(shù)據(jù)寄存器(DR)以及指令寄存器(IR)[11-14]。
1)測試訪問接口包括測試數(shù)據(jù)輸入(TDI)、測試數(shù)據(jù)輸出(TDO)、測試時鐘(TCK)、測試模式選擇(TMS)、信號復位(TEST),邊界掃描測試運行主要依靠該接口進行數(shù)據(jù)控制和操作。
2)TAP控制器作為一個含有16個工作狀態(tài)的有限狀態(tài)機,用于實現(xiàn)對測試訪問接口的控制。
3)數(shù)據(jù)寄存器由TAP控制器決定存放測試過程中的測試數(shù)據(jù)和結(jié)果,包括旁路寄存器和邊界寄存器。邊界寄存器首尾連接構(gòu)成鏈路,實現(xiàn)對芯片引腳的輸出控制;旁路寄存器為不需要測試的位置提供一條快捷通道,縮短不必要的測試時間。
4)指令寄存器包括串行/并行鎖存寄存器,用來定義數(shù)據(jù)寄存器的操作模式。
圖1 邊界掃描硬件結(jié)構(gòu)組成
PCI-410邊掃測試套件作為美國ASSET公司設計的一款JTAG控制器,具備高吞吐率、靈活配置和使用的特點,能夠用于規(guī)?;慨a(chǎn)測試以及需要多個JTAG端口同時測試的被測電路,可執(zhí)行邊界掃描測試軟件開發(fā)的測試任務或燒錄任務,支持掃描鏈路測試、互聯(lián)測試、Flash測試、存儲器測試、用戶自定義測試以及電路開短路測試等,依靠高速的TCK時鐘和并行測試燒錄能力,可作為大規(guī)模數(shù)字電路測試診斷的優(yōu)選解決方案。
PCI-410實物套件主要由PCI控制卡、4端口邊界掃描適配器以及相應的配套測試線纜組成。TCK測試時鐘最高運行速率可達50 MHz,適配器與PCI控制卡之間的有效距離最高可達15米,便于測試系統(tǒng)集成。一個邊界掃描控制平臺可以支持在一個工作站上同時安裝3塊PCI控制卡、單塊控制卡又可以同時支持2塊適配器,每塊適配器支持4個TAP邊掃接口,所以單個測試平臺可以支持的邊掃接口高達24個。根據(jù)需要可以對被測電路靈活配置,并將多塊不同的測試電路上的多個掃描鏈路串接成1條鏈路集中管理和測試,避免了過多的、非必要的鏈路管理。大規(guī)模量產(chǎn)測試時,也可以接多塊相同的被測電路,對其執(zhí)行相同的測試,并且JTAG接口的數(shù)據(jù)首發(fā)是并行的,可有效降低測試線路搭建、數(shù)據(jù)燒錄的測試時間。同時,為了支持非邊掃信號的測試需要,每個適配器還支持可獨立控制的20個離散I/O信號,每一路離散IO的電壓可通過軟件控制,且都配有終端可供靈活配置。
ScanWorks嵌入式軟件平臺是ASSET公司基于IEEE1149.1標準設計的邊掃測試集成開發(fā)環(huán)境,同時還支持IEEE1149.6標準,具有較廣的應用范圍??商峁┱淄暾碾娐钒暹厭邷y試方案,對被測電路開展在線編程、測試和調(diào)試,并生成測試測試覆蓋率報告[15-16]。ScanWorks軟件平臺可根據(jù)被測電路網(wǎng)表文件以及邊掃測試器件的BSDL模型文件,通過合理配置生成測試需要的測試矢量,在線燒錄數(shù)據(jù),對測試程序進行單步、連續(xù)運行調(diào)試和測試執(zhí)行。
通過ScanWorks軟件平臺進行測試程序開發(fā)前,有一些必要的準備工作需要提前了解:首先,確認被測電路板上的可編程器件是否含有JTAG接口,是否符合IEEE1149.1標準,都符合的情況下才可以進行邊界掃描測試開發(fā);其次,提前準備邊界掃描測試元件的BSDL模型文件,可以向芯片廠商官網(wǎng)下載或者向ASSET技術(shù)支持請求;再者,提前準備非邊掃器件的模型文件,便于互聯(lián)測試開發(fā);還有,被測電路板中如果含有CPLD,最好提前將內(nèi)部程序讀取保存,型號較老的元件有可能在邊掃測試時被擦除,導致電路板功能失效。
邊界掃描測試重點用于測試數(shù)字電路[17-19],主要包括鏈路測試、互連測試、Flash測試、存儲器測試以及用戶自定義測試,用戶自定義測試可以通過特殊設計,達到測試非邊界掃描器件以及放大器、AD/DA數(shù)?;旌想娐返哪康?。本文針對飛控系統(tǒng)某數(shù)?;旌峡刂齐娐钒宓慕M成特點和測試需求,在盡量不適用外部外側(cè)設備的條件下,滿足被測電路板所有重要測試節(jié)點的故障診斷需要,構(gòu)建如圖2所示的邊界掃描測試系統(tǒng),主要包括測試計算機、邊界掃描控制器、邊界掃描測試軟件、程控電源、測試適配板、被測電路板以及若干條配套測試線纜。其中,邊界掃描測試硬件選用PCI-410套件;邊界掃描測試軟件選用ScanWorks。
圖2 邊界掃描測試系統(tǒng)組成
計算機作為整個測試系統(tǒng)的控制中心,利用ScanWorks軟件完成邊界掃描測試工程的開發(fā)、功能測試項的執(zhí)行,用戶自定義測試的激勵發(fā)送和響應接收。PCI-410套件作為作為連接邊掃測試軟件和被測電路板的橋梁,用于將邊掃測試軟件生成的測試矢量下發(fā)到被測電路板以及測試數(shù)據(jù)的采集。程控電源用于系統(tǒng)供電以及測試的自動化運行。
對于含有模擬電路、很多沒有互聯(lián)模型的非邊掃器件的數(shù)?;旌想娐钒鍦y試,為了提高測試覆蓋率,關(guān)鍵技術(shù)是設計一套用于信號調(diào)理、邊掃器件互聯(lián)以及信號閉環(huán)的測試適配板,并通過用戶自定義腳本的方式實現(xiàn)沒有模型的無法進行互聯(lián)測試的元器件的功能測試。測試適配板主要用于完成如下四部分功能:1)作為程控電源信號的轉(zhuǎn)接接口,便于通過被測電路板供電連接器為被測電路板供電;2)信號調(diào)理,實現(xiàn)被測信號路由的電平匹配;3)為被測電路板對外輸入、輸出數(shù)字接口提供信號閉環(huán);4)設計邊掃器件及外圍DA、AD電路,為被測電路板模擬信號接口提供信號閉環(huán),最大程度覆蓋電路板可測節(jié)點。有了信號閉環(huán)回路,便于通過互聯(lián)測試和用戶自定義測試的方式,提高整個電路板的測試覆蓋。
被測驗證電路板采用飛控系統(tǒng)某數(shù)?;旌想娐方M成,所含芯片種類主要包括型號為XC4013E的FPGA、AD轉(zhuǎn)換器AD1674、模擬開關(guān)MAX306、運算放大器AD5962、電壓比較器LM139A、差分芯片MAX489、總線緩沖芯片54FCT244和54FCT245、存儲類PROM芯片27C512等。且電路板含有高密度連接器,許多信號通過該連接器輸入或輸出,單板測試含大量信號未閉環(huán)。該驗證電路板的邊界掃描測試需覆蓋所有主要芯片的信號路由通斷故障、影響板子正常使用的所有重要數(shù)字引腳的開短路等故障,并精確定位到具體信號傳輸路經(jīng)或者具體芯片引腳。
根據(jù)被測電路板的測試需求,設計邊界掃描測試系統(tǒng),其測試方案示意圖如圖3所示,通過合理設計適配板,完成數(shù)字電路測試、模擬電路測試以及連接器開環(huán)信號的測試。
圖3 驗證板測試方案示意圖
被測電路板的存儲器及其他信號閉環(huán)通路,可以直接開發(fā)測試程序,通過邊掃端口1控制XC4013E實現(xiàn)測試覆蓋。對于開環(huán)信號測試,根據(jù)被測電路板的信號類型和數(shù)量,適配板選擇可編程邏輯器件EPM7128SQI100作為邊界掃描主控元件,搭配外圍電路實現(xiàn)被測電路的測試需求覆蓋:
1)邊掃主控軟件ScanWorks導入被測板和適配板的網(wǎng)表文件和模型文件,通過配套硬件開發(fā)套件PCI-410控制被測板和適配板上的邊掃器件FPGA和CPLD,再通過可編程器件的接口控制,實現(xiàn)軟硬件接口的匹配;
2)EPM7128SQI100的部分IO引腳以信號調(diào)理或者直接的方式,通過適配板連接器連接至被測板連接器,實現(xiàn)被測電路板開環(huán)數(shù)字信號的測試;
3)針對被測電路多路運算放大器和AD的測試需要,適配板設置DA芯片、電流/電壓運算放大器、開關(guān)陣列等,通過邊掃端口2控制EPM7128SQI100,實現(xiàn)DA信號的輸出,進而通過開關(guān)陣列和連接器連接至被測電路AD采集通道,通過邊掃端口1控制XC4013E實現(xiàn)模擬信號的測試;
4)針對被測電路差分信號的測試需要,適配板設置相同的差分電路,單端信號接邊界掃描芯片,差分信號通過連接器連接至被測電路的差分通道;
5)放置供電連接器,直連程控直流電源的輸出通道,進而通過適配板連接器實現(xiàn)被測電路的供電。
為了完成被測電路板掃描鏈路完整性測試、互聯(lián)測試、存儲器測試、用戶自定義測試等測試需要,邊界掃描測試流程開發(fā)流程圖如圖4所示,依次為邊掃測試工程新建、網(wǎng)表文件和模型文件的導入、掃描鏈路測試程序開發(fā)、互聯(lián)測試程序開發(fā)、存儲器測試程序開發(fā);用戶自定義測試程序開發(fā)、測試程序的編譯和保存等。測試流程開發(fā)前,需要提前做一些準備工作:備好被測電路板和適配板的原理圖、網(wǎng)表文件、邊掃器件的BSDL模型、非邊掃數(shù)字器件的測試模型等。
圖4 邊界掃描測試流程開發(fā)流程
3.3.1 邊掃測試工程新建
工程新建用于為整個工程建立統(tǒng)一管理,同時導入和編譯邊掃器件的BSDL模型,為后續(xù)測試工作做準備,工程新建步驟如下:
1)啟動ScanWorks邊界掃描開發(fā)程序;
2)在彈出的軟件啟動向?qū)Ы缑鎲螕簟癱lose”→“Go to the interface”進入邊掃測試主界面,ScanWorks自動識別已連接到主機的邊掃開發(fā)套件PCI-410;
3)單擊菜單欄“project”→“new”,在新建工程對話框填入工程名稱以及存放路徑,進行工程創(chuàng)建;
4)填入工程設計名稱,并手動創(chuàng)建掃描鏈路:分別添加添加邊掃器件的BSDL模型7128sq100.bsd和xc4013e_pg223.bsd,并編譯檢查模型文件是否正確;
5)建立HGL1.hgl文件,包含上述的兩個BSDL文件,用于描述了測試板的邊界掃描器件以及掃描鏈路信息,并再次編譯,根據(jù)報告提示進行查看或修改,完成邊掃測試工程的建立,HGL1.hgl建立完成的界面如圖5所示。
圖5 新建成功的.hgl文件
3.3.2 網(wǎng)表和模型文件導入
ScanWorks軟件支持多個電路板的網(wǎng)表文件自動合并,便于多個電路板的掃描鏈路集中統(tǒng)一管理,提高了測試效率。網(wǎng)表和模型文件導入步驟如下:
1)軟件菜單欄單擊“design”→“netlist”;
2)分別導入被測板和適配板網(wǎng)表文件(也可以提前將被測板原理圖和適配板原理圖合并,導入一個統(tǒng)一的網(wǎng)表);
3)網(wǎng)表文件添加成功后進行編譯,根據(jù)報告提示進行查看或修改,完成網(wǎng)表文件的導入;
4)指定網(wǎng)表文件中那些的電源和地線網(wǎng)絡,測試時忽略該網(wǎng)絡的測試;
5)導入可以互聯(lián)測試的非邊掃器件模型文件,進行器件位號和模型的關(guān)聯(lián),并設置每個元器件的測試類型,如協(xié)議簇測試、忽略測試等,設置完畢后完成模型文件的導入。
3.3.3 掃描鏈路完整性測試程序開發(fā)
掃描鏈路完整性測試可以檢測邊掃框架的物理故障,比如測試總線、TAP控制器等。同時還可以驗證工程建立之初所描述的掃描鏈路順序是否正確。Scanworks自動產(chǎn)生鏈路測試集,通過之前的描述,來報告故障位置。掃描鏈路完整性測試開發(fā)步驟如下:
1)在Scanworks主界面下雙擊create an action欄下的scan path verify,彈出define scan path verify actions對話框;
2)在彈出的define scan path verify actions對話框中自動羅列測試工程新建過程中導入的兩個邊掃器件掃描鏈路,如圖6所示;
3)在Target Scan Path(s)中通過勾選左側(cè)復選框進行邊掃鏈路選擇,如果兩個同時勾選,軟件則會將被測板邊掃鏈路和適配板邊掃鏈路打包成同一個鏈路進行集中測試;
4)在Options中可以對要進行的邊界掃描測試項進行選擇,比如BYPASS、IDCODE、USERCODE、邊掃鏈路長度等;
5)單擊右上角的編譯按鈕,查看編譯報告,如果編譯失敗則根據(jù)報告窗口信息提示進行修改,直到編譯通過為止(有警告也算編譯通過),編譯通過后完成掃描鏈路完整性測試的開發(fā)。
圖6 掃描鏈路選擇
3.3.4 互聯(lián)測試程序開發(fā)
互聯(lián)測試允許測試邊掃器件互聯(lián)或者邊掃器件與非邊掃器件的互聯(lián),互聯(lián)測試可以檢測開路、短路、固高固低或者橋接故障。
實際的被測電路中,基本都存在大量的非邊掃器件,他們都會與邊掃器件構(gòu)成關(guān)聯(lián)。測試過程中,如果測試程序不能識別非邊掃器件,可以將其相關(guān)的網(wǎng)絡暫時掛起,互聯(lián)測試時忽略該網(wǎng)絡;如果提前準備好了非邊掃器件的模型文件,或者這些非邊掃器件只是一些簡單的緩沖器件、路由選擇器件,可以通過互聯(lián)測試中的簇測試進行測試?;ヂ?lián)測試開發(fā)步驟如下:
1)在Scanworks主界面下雙擊create an action欄下的interconnect,彈出define an interconnect action對話框;
3)此時define an interconnect action界面的model device和define constrains可能處于非激活狀態(tài)。進行編譯并查看編譯報告,如果編譯失敗則根據(jù)報告窗口信息提示進行修改,直到編譯通過為止(有警告也算編譯通過);
4)單擊model device打開device browser對話框,對非邊掃器件進行device type設置:電容設置為capacitor、電阻設置為resistor等;
5)關(guān)閉define an interconnect action對話框,在邊掃主界面可以看到一個名為interconnect1的互聯(lián)測試項,將邊掃控制的TAP1和TAP2端口分別連接至被測電路板和適配板即可執(zhí)行互聯(lián)測試。
3.3.5 存儲測試程序開發(fā)
由于被測存儲器件沒有找到測試模型,所以根據(jù)芯片手冊的時序邏輯,通過用戶自定義的方式進行測試開發(fā),測試步驟如下:
1)在Scanworks主界面單擊design→buses來進行測試總線定義,用于測試存儲器的地址寫和數(shù)據(jù)讀;
2)點擊new框,創(chuàng)建一個8位數(shù)據(jù)總線,并打開define a bus對話框進行數(shù)據(jù)總線與存儲器數(shù)據(jù)引腳的匹配設置,在bus manager界面為已經(jīng)定義的數(shù)據(jù)總線設置使能控制端;
3)點擊new框,創(chuàng)建一個12位地址總線,并打開define a bus對話框進行地址總線與存儲器地址引腳的匹配設置,在bus manager界面為已經(jīng)定義的地址總線設置使能控制端;
4)雙擊邊掃軟件主界面create an action下的macro,進行測試代碼的編輯,編輯完保存關(guān)閉;
5)在返回的define a macro action界面的target欄下選擇entire path,并進行編譯,查看編譯報告,如果編譯失敗則根據(jù)報告窗口信息提示進行修改,直到編譯通過為止(有警告也算編譯通過);
6)編譯通過后保存,完成存儲測試程序的開發(fā)。
3.3.6 用戶自定義測試
根據(jù)3.3.4節(jié)存儲器測試程序開發(fā)步驟,編寫macro專用測試代碼,實現(xiàn)被測電路板的運算放大器和AD等器件的測試。
測試程序開發(fā)完畢后,連接驗證板和邊界掃描控制器,利用Scanwork軟件進行測試程序執(zhí)行的步驟如下:
1)在Scanworks主界面單擊菜單欄TOOL→select hardware,選擇測試臺邊掃仿真器件PCI-410;
2)通過程控直流電源給被測板和適配板供電;
3)給被測板加電后選擇邊掃工程文件下的action,單擊buile-run,執(zhí)行測試并查看結(jié)果。
為了便于測試程序的自動化運行,通過主控計算機專用測試軟件,對Scanwork軟件進行二次集成開發(fā),自動調(diào)用程控直流電源進行供電,自動調(diào)用邊界掃描測試程序執(zhí)行并上傳測試結(jié)果。被測電路板最終測試報表如圖7所示:第1~3項為電路板供電測試,首先判斷電路板正常工作的功率是否滿足要求;第4~5項為被測電路板和適配板上的邊掃器件的掃描鏈路測試,檢查邊掃器件是否有故障;第6項為互聯(lián)測試,檢查邊掃器件互聯(lián)和邊掃器件與有模型的非邊掃器件的互聯(lián),判斷互聯(lián)測試的元器件有無開短路、固高固低或者橋接等故障;第7~42項為用戶自定義測試,通過編寫測試腳本檢查沒有模型的非邊掃器件的功能是否正常;第43項為存儲器測試。每一項測試記錄均設定測試結(jié)果的合格判據(jù),自動給出測試結(jié)果,可為電路板功能測+ 試和故障診斷提供有力支撐。
圖7 被測電路板測試報表
為了進一步驗證測試程序的有效性,通過人為焊接方式制造了3處XC4013E的IO引腳短路故障、1處存儲器地址引腳短路故障和1處總線緩沖芯片的開路故障。通過測試程序執(zhí)行,均成功檢測出故障并定位故障位置,進一步驗證了邊界掃描測試系統(tǒng)設計的正確性。
本文提出的邊界掃描測試系統(tǒng)設計方法,適用于不利用外部信號源、信號采集設備的條件下,僅依靠主控計算機、邊界掃描測試軟件、邊界掃描硬件套件以及供電電源,通過設計專用測試適配板開展被測電路的全流程測試。通過實際測試,驗證了設計的可行性,為數(shù)字電路板和簡單的數(shù)?;旌想娐钒宓臏y試提供了實用的測試方法和手段,具有很好的應用價值。不足之處在于,對于較為復雜的非邊掃器件和模擬器件的測試,需要依靠用戶對器件的清晰把握并編寫用戶自定義測試代碼,對其本身的技術(shù)能力要求比較高。