基于軟件測試技術(shù)的FPGA測試研究
與軟件測試一樣,在FPGA的開(kāi)發(fā)階段,測試就扮演著(zhù)驗證和確認的角色。但不同的是,FPGA的每一個(gè)綜合環(huán)節的輸出結果都是一種對設計的形式化表示方法,不但可以通過(guò)靜態(tài)的方法檢查驗證,而且有強大的仿真工具能夠支持在開(kāi)發(fā)階段對各個(gè)綜合環(huán)節進(jìn)行動(dòng)態(tài)仿真驗證,這樣更有利于盡早發(fā)現缺陷,減少缺陷修改的成本。
而在測試階段,在真實(shí)環(huán)境下,自底向上依次進(jìn)行門(mén)級、單元級、元件級和系統級測試,以分別對門(mén)級模型、RTL模型、行為模型和系統需求進(jìn)行驗證。
(1)門(mén)級測試:驗證基本邏輯門(mén)的正確性。
(2)單元測試:FPGA的單元包括并行代碼塊,以及順序代碼中進(jìn)程、函數和過(guò)程。在這一級別的測試中,對RTL模型規定的各單元功能、邏輯、接口等逐項進(jìn)行測試。
(3)元件測試:在FPGA開(kāi)發(fā)中,將具有一定功能和接口的電路封裝成的可復用單元稱(chēng)為元件(component),通過(guò)對元件的例化和連接構成具有更復雜功能的元件,直到構成整個(gè)系統。在元件測試中,通過(guò)元件的輸入輸出接口,對元件的行為進(jìn)行驗證。元件測試包括對元件集成的測試,從對最底層元件測試開(kāi)始,是一個(gè)自底向上逐層集成的過(guò)程。
(4)系統測試:針對完整的FPGA系統的測試,驗證FPGA系統對規定的功能、性能等需求的滿(mǎn)足性。
在FPGA系統開(kāi)發(fā)過(guò)程中,邏輯綜合和結構綜合過(guò)程基本通過(guò)綜合工具由計算機自動(dòng)完成,開(kāi)發(fā)者主要是依據仿真結果進(jìn)行修改與優(yōu)化;而在自然語(yǔ)言綜合和行為綜合中,需要大量的人工介入,是缺陷引入的主要環(huán)節,也是FPGA測試的重點(diǎn)。
3.2 測試類(lèi)型
與軟件測試相同,FPGA測試可分為靜態(tài)測試和動(dòng)態(tài)測試。靜態(tài)測試包括文檔審查、代碼審查、靜態(tài)分析、代碼走查等類(lèi)型。在代碼審查中,除了進(jìn)行軟件測試的相關(guān)檢查項外,還包括檢查代碼運行時(shí)序的正確性、代碼的魯棒性和代碼的可綜合性。而在代碼走查中,需要沿程序的時(shí)序和信號流兩個(gè)相關(guān)維度,驗證代碼的動(dòng)態(tài)執行情況。
動(dòng)態(tài)測試不但沿用軟件測試中一般采用的邏輯測試、功能測試、性能測試、接口測試、強度測試、余量測試、安全性測試、恢復性測試、邊界測試、數據處理測試等,還包含FPGA系統特有的下載與配置測試、魯棒性測試等。
(1)下載與配置測試:測試系統是否能夠正確實(shí)現程序的下載和芯片的配置。一般需要進(jìn)行不同目標芯片和編程方式的下載與配置測試,對可重構FPGA系統重構能力的測試。
(2)魯棒性測試:驗證系統能否避免干擾和沖突得到穩定而可靠的輸出測試,一般需要測試輸出電平的穩定性、輸出邏輯的確定性及系統抗電磁干擾的能力。
3.3 測試方法與測試環(huán)境
白盒測試和黑盒測試是軟件測試中的兩大方法,在FPGA測試中同樣適用。除此之外,由于嵌入式邏輯分析儀的支持,使得灰盒測試在FPGA測試中具有很好的應用前景。
(1)白盒測試是結構性測試方法,根據代碼的內部特征設計、選擇測試用例。FPGA的白盒測試一般在仿真環(huán)境下進(jìn)行,可分為代碼仿真、門(mén)級仿真和時(shí)序仿真。代碼仿真不考慮硬件特性,輸出理想情況下源代碼執行結果,具有直觀(guān)、速度快的特點(diǎn),可以在設計的最初階段盡早發(fā)現問(wèn)題;門(mén)級仿真是針對代碼綜合后生成的門(mén)級網(wǎng)表或是實(shí)現后生成的門(mén)級模型進(jìn)行的仿真,可以檢驗綜合或實(shí)現后對系統或模塊功能的滿(mǎn)足性。時(shí)序在門(mén)級仿真的基礎上加入時(shí)延文件即時(shí)序仿真,時(shí)序仿真能夠比較真實(shí)地反映邏輯的時(shí)延與功能,但對于邏輯量大的系統耗時(shí)較長(cháng)。
(2)黑盒測試是一種功能性測試方法,只測試產(chǎn)品對功能、性能等需求的滿(mǎn)足性,而不考慮產(chǎn)品的內部結構和處理過(guò)程。軟件測試中的測試方法和測試環(huán)境可以對FPGA中的組合邏輯進(jìn)行有效的測試。而對于時(shí)序邏輯,測試環(huán)境還包含了對動(dòng)態(tài)輸入、動(dòng)態(tài)數據采集的支持,以及對采集數據的比較分析。在測試用例的設計中,規定系統輸入、輸出隨時(shí)間變化的趨勢,并對特殊的評價(jià)方法和通過(guò)準則進(jìn)行定義。
(3)目前主流的FPGA開(kāi)發(fā)工具都提供了嵌入式邏輯分析儀工具,使得灰盒測試成為了可能。嵌入式邏輯分析儀的原理是在FPGA真實(shí)運行環(huán)境內部,利用冗余的芯片資源,將預制的系統內部信號實(shí)時(shí)通過(guò)接口輸出。這樣就可以在軟件真實(shí)運行中,監視軟件內部的信號、變量和狀態(tài),避免了由于輸入輸出域信息丟失以及容錯環(huán)節造成的代碼缺陷無(wú)法暴露的問(wèn)題,提高了FPGA代碼的測試性[7]。
4 應用實(shí)例
以軟件測試為基礎的FPGA測試技術(shù)已經(jīng)得到了成功的應用。對某數字調制解調系統進(jìn)行了測試,該系統以Altera公司EP1C3T144芯片為宿主機,采用VHDL語(yǔ)言編寫(xiě),實(shí)現了偏移四相相移鍵控(OQPSK)的調制、解調功能。
測試項目組對該系統在元件級、系統級進(jìn)行了測試,包括靜態(tài)分析、代碼審查、邏輯測試、功能測試、性能測試、邊界測試、魯棒性測試、安全性測試等測試類(lèi)型,其中:
(1)靜態(tài)分析采用HDL Designer工具進(jìn)行了編碼規則檢查,共分析出違反編碼規則43處,其中2處存在代碼問(wèn)題,得到了正確的修改,25處影響了代碼的可讀性和維護性,提出改進(jìn)建議,均進(jìn)行了相應處理。
(2)代碼審查發(fā)現代碼問(wèn)題4處,均為代碼和設計文檔不一致所造成,全部修改正確,并提出一處影響邏輯門(mén)資源使用效率的改進(jìn)建議。
(3)元件測試采用Altera Modelsim工具在仿真環(huán)境下進(jìn)行,共設計測試用例95個(gè),全部執行通過(guò)。
(4)系統測試環(huán)境由任意波形發(fā)生器Agilent 33250A、邏輯分析儀Agilent 16902B和示波器Agilent MS09404構成動(dòng)態(tài)測試環(huán)境,如圖2所示,設計測試用例48個(gè),其中33個(gè)規定了輸入、輸出信號的動(dòng)態(tài)時(shí)序,測試用例全部執行通過(guò)。

經(jīng)過(guò)測試以及相應的修改和回歸,該FPGA系統代碼質(zhì)量和可靠性得到了提高,系統功能、性能得到了驗證。
軟件測試技術(shù)在FPGA測試中的成功應用,有效解決了FPGA系統的測試問(wèn)題。通過(guò)測試,提高了硬件描述語(yǔ)言的編寫(xiě)質(zhì)量和系統的可靠性,并對FPGA的電路行為進(jìn)行了有效的驗證。動(dòng)態(tài)測試時(shí)序測試用例的自動(dòng)生成,以及系統輸出波形與預期的自動(dòng)比較和判斷,將成為未來(lái)進(jìn)一步研究的重點(diǎn)。隨著(zhù)FPGA系統在各關(guān)鍵領(lǐng)域的進(jìn)一步普及,以軟件測試為基礎的FPGA測試將具有更廣闊的應用前景。本文引用地址:http://dyxdggzs.com/article/191084.htm
評論