董天旭,王冰峰
(電子科技大學自動化工程學院,成都,611731)
傳統的分立元件測試儀,即專用分立元件測試儀,其測試程序通常固化于測試儀硬件中,能測試的器件類型和測試流程確定不變,因而使用范圍受到一定限制。為了克服這種弊端就需要實現一種通用分立元件測試儀,即可以根據不同的測試器件、不同的測試指標、甚至不同的測試順序,靈活的生成測試程序,并將其下載到測試儀硬件中實現相應測試目標。圖形化編程是通用分立元件測試儀實現的方法:只需要依次在測試儀人機交互界面創建測試項目、繪制測試流程圖、設置相應測試參數、編譯鏈接測試程序、下載運行即可完成自動測試功能;這種實現方式十分靈活,易于系統升級擴展,便于測試人員操作。
分立元件自動測試儀系統構成簡化圖如圖1所示。本文采用C#語言在集成開發環境Microsoft Visual Studio 2010完成人機交互界面設計;CPU板采用ARM作為中央處理器,其應用程序主體采用ARM Developer Suite 1.2設計完成。

圖1 分立元件自動測試儀系統構成簡化圖
根據分立元件自動測試儀的操作流程,圖形化編程的實現步驟包括:測試項目的創建、測試流程圖的繪制、測試程序的生成與編譯。
測試項目包括測試流程文件和測試項目文件。測試流程文件用于存儲測試流程的繪制信息,由AddFlow控件的相應指令自動生成;測試項目文件是用于存儲諸如:測試器件類型、測試器件型號、硬件配置、測試指標等測試信息的XML文檔;之所以采用XML文檔格式,是因為它是簡單文本格式,而且采用類似樹的層次結構來組織數據,使得數據的存儲和讀取十分便利。測試項目文件的XML文檔格式如下:

“Project”是XML文檔的根元素,數據信息均存儲在其子元素中。“Project”下面創建了子元素“工程信息”和“測試流程”。“工程信息”又包括:“器件類型”、“器件型號”、“通道定義”、“分選信息組定義”、“分選信息組選擇”、“分選機配置”、“測試指標”等子元素。“通道定義”用于存儲測試目標將要使用的測試板類型,測試板通道號,以及測試板所在的插槽號等;“分選信息組定義”用于存儲根據實際需要定義的一組或則多組分選信息,而“分選信息組選擇”用于存儲所選擇的分選信息組名稱。“分選機配置”用于存儲分選機的配置參數;“測試指標”則是根據測試目標中測試指標的測試順序對測試指標進行存儲。“測試流程”作為“Project”的子元素,其功能不同于測試流程文件:測試流程文件用于存儲測試流程圖的繪制信息,而“測試流程”元素用于存儲測試流程圖中作為節點的測試函數的參數設置等信息。
測試流程圖的繪制采用AddFlow控件實現。AddFlow是Lassalle Technologies開發的Windows Forms流程圖控件。AddFlow包含兩個重要子類:Node和Link,分別表示流程圖節點和連線。Node的Text屬性代表的是節點的文本內容,是能夠直接從流程圖獲取的信息,在本文中使用它作為節點的唯一標識符號;Link的Dst屬性代表的是Link的目標節點,在本文中使用它來遍歷流程圖,從而生成測試程序(需要說明的是本文實現的流程圖均是順序結構,這能夠滿足大多數分立元件的測試要求)。AddFlow又包括兩個重要方法:WriteXml和ReadXml,分別用于將流程圖繪制信息保存到測試流程文件以及從測試流程文件讀取流程圖繪制信息。
測試流程圖包括總體測試流程圖、各測試指標的測試流程圖。總體測試流程圖是根據測試順序,使用各個測試指標作為流程圖中的節點由人機交互界面自動繪制完成;測試指標的測試流程圖是由用戶根據其測試目標的需要,選擇相應測試函數作為節點來繪制完成的。因此需要設計測試函數相應的流程圖節點,其實現方式為(見圖2):創建一個工具箱,工具箱可以是一個簡單的窗口,其中包含了測試函數名稱列表;為每個測試函數設計相應的參數設置界面;繪制流程圖時,從工具箱選擇測試函數,添加相應節點到流程圖繪制區域;雙擊節點觸發其參數設置界面的顯示,界面加載時顯示節點默認參數或已設置參數,設置完成后,關閉即可。

圖2 工具箱設計(上)、某函數參數界面設計(下)
單個測試指標的測試流程圖設計流程如圖3所示(其中用Item代表某項測試指標,用Func代表某個測試函數)。
測試程序包括測試流程代碼,測試函數定義代碼,通訊代碼等,它們共同包含在一個ARM Developer Suite工程中。除測試流程代碼外,其余代碼均由測試儀設計員在ARM Developer Suite中設計完成,且設計完成后固定不變。測試流程代碼則由人機交互界面根據用戶繪制的測試流程圖生成,所以根據測試目標的不同測試流程代碼是不同的、它是可改變的。測試流程代碼又包括測試流程定義代碼和測試流程調用代碼。測試流程定義代碼獲得流程如圖4所示。測試流程調用代碼的獲得方法類似定義代碼的獲得,甚至要簡單得多,其基本思想是在程序入口函數main_app內直接或則間接包含測試流程調用代碼即可。本文采用間接的方式,即事先在main_app函數內調用某個函數,而將測試流程調用代碼寫入到該函數定義的內部。

圖3 測試流程圖的設計流程
使用ARM Developer Suite開發ARM程序時,ADS工程編譯連接后產生以工程名稱命名的bin文件,該文件即是ARM運行所需要的二進制可執行文件。為了使得人機交互界面具備同樣功能,首先為測試程序的ADS工程制作Makefile文件(可以手動制作或使用mcp2make等小工具),然后調用Microsoft Visual Studio 2010的命令編譯器NMake.exe,執行相應命令即可完成ADS工程的編譯和鏈接(比如:nmake /f ADS工程名稱.mk all),從而獲得所需bin文件;將bin文件下載到作為測試儀中央處理器的ARM中即可實現相應的測試功能。

圖4 測試流程定義代碼
本文以NPN型三極管8050為示例,測試它的正向直流電流放大倍數HFE,其測試條件為VCE=1V、IC=800mA,合格條件為30<HFE<300,測試流程圖如圖5所示。

圖5 HFE測試流程圖
該流程圖中,UR_1表示用戶繼電器函數,用于搭建測試電路(繼電器矩陣為8×8);Delay_2表示延時函數;FV_3、FIMI_4表示施壓函數和輸出測量函數,用于提供測試條件和獲得測試值;Return_5表示返回值表達式,用于根據測試值計算出HFE值。
測試流程圖繪制完成后,工程文件中存儲的相關工程信息如下:

對測試程序進行編譯連接后,生成可執行文件,將其下載到測試儀硬件中,對單個8050進行100次重復測試(實驗條件下,測試儀未裝配分選機),測試儀正常工作并獲得其HFE值為78倍,即該測試指標合格。
實踐證明,該圖形化編程能夠使得分立元件自動測試儀根據實際需要,即根據不同的測試器件、不同的測試指標、不同的測試順序生成不同的測試程序完成相應測試功能,使得分立元件自動測試儀便于進行可測試器件類型的擴展,因為倘若測試程序固化于測試儀硬件中其可測器件類型同時也固定不變;該圖形化編程方式,較之ARM Developer Suite等集成開發環境,用戶不需要知道大量編程語言知識,也不需要知道測試函數的申明方式,只需要多次使用之后就能掌握如何生成正確的測試程序,從而降低了對使用人員的限制。但該實現方式也存在一定不足,比如目前僅完成了順序結構測試流程代碼的實現,因此,包含分支等復雜結構的流程圖的代碼實現,是進一步研究的內容。
[1]戴春翟,李曉靜,張侃諭.集成電路測試系統通用測試軟件的研究與設計[J].電子測量技術,2010,33(1):133-135.
[2]李旭剛. 集成電路測試系統軟件的設計及實現[J].電子測試,2010,9(9):6-9.
[3]Karli Watson, Christian Nagel. C#入門經典[M]. 齊立波 譯.5版.北京:清華大學出版社,2010.
[4]Bill Evjen, Jay Glynn. C#高級編程[M]. 李銘 譯.7版.北京:清華大學出版社,2010.
[5]范書瑞,趙燕飛,高鐵成. ARM處理器與C語言開發應用[M].北京:北京航空航天大學出版社,2008.
[6]David Hunter, Jeff Rafter, Joe Fawcett. XML入門經典[M].吳文國 譯.4版.北京:清華大學出版社,2009.
[7]Lassalle Technologies. AddFlow for .NET V2.2 Tutorial. http://www.lassalle.com ,2008.
[8]羅云彬.Windows環境下32位匯編語言程序設計[M]北京:電子工業出版,2009.