摘要:基于對(duì)FPGA系統(tǒng)失效機(jī)理的深入分析,提出了軟件測(cè)試技術(shù)在FPGA測(cè)試中的應(yīng)用,并分析了其可行性;通過(guò)對(duì)比FPGA與軟件系統(tǒng)的異同,歸納出FPGA特有的測(cè)試要求,從而在軟件測(cè)試技術(shù)的基礎(chǔ)上針對(duì)FPGA的特點(diǎn)進(jìn)行改進(jìn),形成了一套實(shí)用的FPGA測(cè)試方法。
現(xiàn)場(chǎng)可編程門陣列(FPGA)的出現(xiàn)大大壓縮了電子產(chǎn)品研發(fā)的周期和成本,由于FPGA器件具有高密度、低功耗、高速、高可靠性等優(yōu)點(diǎn),在航空、航天、通信、工業(yè)控制等方面得到了大量應(yīng)用。隨著FPGA應(yīng)用領(lǐng)域的擴(kuò)展以及重要性和復(fù)雜程度的提高,其可靠性問題變得越來(lái)越突出,因此對(duì)FPGA系統(tǒng)的測(cè)試需求變得尤為迫切。
目前FPGA測(cè)試技術(shù)的研究主要集中于對(duì)FPGA芯片資源的測(cè)試,通過(guò)編程覆蓋FPGA所有的邏輯資源[1,2]和連接資源,驗(yàn)證每個(gè)單元基本邏輯功能的正確性,而無(wú)法對(duì)電路的整體行為進(jìn)行有效的驗(yàn)證。硬件描述語(yǔ)言(HDL)是FPGA電路設(shè)計(jì)的主要實(shí)現(xiàn)方式,和軟件一樣,HDL也是人腦思維的邏輯產(chǎn)物,同樣存在著不希望或不可接受的人為錯(cuò)誤。隨著設(shè)計(jì)復(fù)雜程度的提高,由HDL引入的缺陷成為影響FPGA可靠運(yùn)行的關(guān)鍵因素,對(duì)FPGA電路行為的測(cè)試成為提高系統(tǒng)質(zhì)量和可靠性的重要環(huán)節(jié)。
MIN Y.H.提出了在FPGA系統(tǒng)中進(jìn)行高層測(cè)試的必要性。高層測(cè)試即任何高于門級(jí)的測(cè)試,考慮的是高層描述,如HDL、狀態(tài)圖、功能塊圖等,通過(guò)高層測(cè)試發(fā)現(xiàn)設(shè)計(jì)中的缺陷,并在系統(tǒng)的開發(fā)階段充分考慮測(cè)試需求,指導(dǎo)系統(tǒng)設(shè)計(jì)。以此為基礎(chǔ),先后提出了一系列具體的實(shí)施方法,如層次化的測(cè)試方法、基于電路功能或結(jié)構(gòu)的測(cè)試方法、基于模擬的測(cè)試方法等。
1 研究背景
1.1 軟件測(cè)試技術(shù)概述
在IEEE的軟件工程標(biāo)準(zhǔn)術(shù)語(yǔ)中,軟件測(cè)試定義為使用人工和自動(dòng)手段來(lái)運(yùn)行或測(cè)試某個(gè)系統(tǒng)的過(guò)程,其目的在于檢驗(yàn)它是否滿足規(guī)定的需求或找出預(yù)期結(jié)果與實(shí)際結(jié)果之間的差別。
按照測(cè)試級(jí)別,軟件測(cè)試包括單元測(cè)試、部件測(cè)試、配置項(xiàng)測(cè)試、系統(tǒng)測(cè)試等;按照測(cè)試方法,軟件測(cè)試可分為動(dòng)態(tài)測(cè)試和靜態(tài)測(cè)試,動(dòng)態(tài)測(cè)試又可分為黑盒測(cè)試和白盒測(cè)試。靜態(tài)測(cè)試包括了代碼審查、靜態(tài)分析、代碼走查等測(cè)試類型;動(dòng)態(tài)測(cè)試包括邏輯測(cè)試、功能測(cè)試、性能測(cè)試、接口測(cè)試等測(cè)試類型。白盒測(cè)試通常采用以邏輯覆蓋衡量的結(jié)構(gòu)性測(cè)試技術(shù);黑盒測(cè)試通常采用包括功能分解、等價(jià)類劃分、邊界值分析等在內(nèi)的功能性測(cè)試技術(shù)。
1.2 FPGA系統(tǒng)的特點(diǎn)
FPGA作為可編程邏輯器件,通過(guò)編程的方式(如HDL)將通用芯片配置成用戶需要的硬件數(shù)字電路,F(xiàn)PGA和軟件系統(tǒng)具有相似的結(jié)構(gòu)和開發(fā)方式,HDL與軟件都是人腦思維邏輯的產(chǎn)物,具有相似的語(yǔ)法和失效機(jī)理。因此,將軟件測(cè)試的成熟技術(shù)用于FPGA測(cè)試,在理論和操作上均具有可行性。
但是,由于軟硬件系統(tǒng)本質(zhì)上的不同,F(xiàn)PGA和軟件系統(tǒng)在測(cè)試要求上存在一定的差異,表1從開發(fā)方式、代碼執(zhí)行順序、受硬件影響程度、執(zhí)行結(jié)果的隨機(jī)性以及應(yīng)用領(lǐng)域等方面,歸納了FPGA和軟件系統(tǒng)的不同之處。
2 FPGA特有測(cè)試要求
針對(duì)FPGA和軟件系統(tǒng)的差異,存在不同于軟件測(cè)試特有的測(cè)試要求,包括HDL代碼檢測(cè)要求、測(cè)試級(jí)別要求和時(shí)序測(cè)試用例設(shè)計(jì)要求等。
2.1 HDL代碼檢測(cè)要求
由于HDL代碼并行執(zhí)行并存在硬件環(huán)境的影響以及競(jìng)爭(zhēng)、冒險(xiǎn)等不確定結(jié)果,在白盒測(cè)試中具有不同于軟件測(cè)試的要求。一方面,不同于軟件的控制流和數(shù)據(jù)流,并行程序的時(shí)序和信號(hào)流是一對(duì)相互依存的信息,程序的邏輯狀態(tài)由二者共同確定。這就要求在測(cè)試中,既要依據(jù)信號(hào)流圖對(duì)組合邏輯進(jìn)行驗(yàn)證,還要依據(jù)時(shí)序圖分析時(shí)變信號(hào)的時(shí)序一致性。另一方面,硬件特征對(duì)運(yùn)行結(jié)果的影響也是代碼檢測(cè)中需要考慮的因素。在編碼規(guī)范的制定上,應(yīng)當(dāng)充分考慮并行程序的特點(diǎn),正確處理與硬件資源之間的關(guān)系,避免競(jìng)爭(zhēng)、冒險(xiǎn)等不確定結(jié)果的產(chǎn)生。
2.2 測(cè)試級(jí)別的要求
與傳統(tǒng)自底向上的電子設(shè)計(jì)技術(shù)不同,F(xiàn)PGA采用與軟件開發(fā)相同的自頂向下的設(shè)計(jì)方法。一個(gè)項(xiàng)目的開發(fā)過(guò)程,從系統(tǒng)的分解、RTL模型的建立、門級(jí)模型的產(chǎn)生,到最終的可以物理布線實(shí)現(xiàn)的底層電路,是一個(gè)從高抽象級(jí)別到低抽象級(jí)別的開發(fā)周期。在開發(fā)過(guò)程中,需要在每一階段分別進(jìn)行行為仿真、功能仿真、門級(jí)時(shí)序仿真等仿真驗(yàn)證,而在測(cè)試階段需要自底向上依次從門級(jí)、元件功能級(jí)到系統(tǒng)行為級(jí)進(jìn)行測(cè)試。
2.3 時(shí)序測(cè)試用例設(shè)計(jì)要求
FPGA的并行運(yùn)算和高響應(yīng)速度的特性,使其在對(duì)高速時(shí)序邏輯的處理中得到廣泛應(yīng)用。因此對(duì)FPGA系統(tǒng)功能、性能的測(cè)試中,不能僅僅局限于對(duì)穩(wěn)態(tài)輸入輸出的驗(yàn)證,還需要驗(yàn)證系統(tǒng)對(duì)時(shí)序信號(hào)的響應(yīng)及輸出量隨時(shí)間變化正確性的判斷。因此在測(cè)試用例的設(shè)計(jì)中,需要對(duì)系統(tǒng)輸入、輸出的時(shí)間變化趨勢(shì)進(jìn)行規(guī)定,并提供動(dòng)態(tài)輸出信號(hào)的判斷準(zhǔn)則,同時(shí)需要開發(fā)時(shí)序測(cè)試環(huán)境支持測(cè)試用例的執(zhí)行。
3 FPGA測(cè)試技術(shù)框架
3.1 測(cè)試級(jí)別
把抽象的實(shí)體結(jié)合成單個(gè)或統(tǒng)一實(shí)體的過(guò)程稱為綜合,F(xiàn)PGA系統(tǒng)的每一步開發(fā)過(guò)程都可以稱為一個(gè)綜合環(huán)節(jié),即將自然語(yǔ)言表示經(jīng)過(guò)自然語(yǔ)言綜合轉(zhuǎn)換為HDL算法表示,再通過(guò)行為綜合轉(zhuǎn)換在寄存器傳輸(RTL)級(jí),進(jìn)一步通過(guò)邏輯綜合轉(zhuǎn)換為邏輯門的表示,最終通過(guò)結(jié)構(gòu)綜合轉(zhuǎn)換為版圖表示。對(duì)于每一個(gè)綜合環(huán)節(jié),都對(duì)應(yīng)響應(yīng)的測(cè)試級(jí)別,F(xiàn)PGA測(cè)試的“V”模型如圖1所示。
與軟件測(cè)試一樣,在FPGA的開發(fā)階段,測(cè)試就扮演著驗(yàn)證和確認(rèn)的角色。但不同的是,F(xiàn)PGA的每一個(gè)綜合環(huán)節(jié)的輸出結(jié)果都是一種對(duì)設(shè)計(jì)的形式化表示方法,不但可以通過(guò)靜態(tài)的方法檢查驗(yàn)證,而且有強(qiáng)大的仿真工具能夠支持在開發(fā)階段對(duì)各個(gè)綜合環(huán)節(jié)進(jìn)行動(dòng)態(tài)仿真驗(yàn)證,這樣更有利于盡早發(fā)現(xiàn)缺陷,減少缺陷修改的成本。
而在測(cè)試階段,在真實(shí)環(huán)境下,自底向上依次進(jìn)行門級(jí)、單元級(jí)、元件級(jí)和系統(tǒng)級(jí)測(cè)試,以分別對(duì)門級(jí)模型、RTL模型、行為模型和系統(tǒng)需求進(jìn)行驗(yàn)證。
(1)門級(jí)測(cè)試:驗(yàn)證基本邏輯門的正確性。
(2)單元測(cè)試:FPGA的單元包括并行代碼塊,以及順序代碼中進(jìn)程、函數(shù)和過(guò)程。在這一級(jí)別的測(cè)試中,對(duì)RTL模型規(guī)定的各單元功能、邏輯、接口等逐項(xiàng)進(jìn)行測(cè)試。
(3)元件測(cè)試:在FPGA開發(fā)中,將具有一定功能和接口的電路封裝成的可復(fù)用單元稱為元件(component),通過(guò)對(duì)元件的例化和連接構(gòu)成具有更復(fù)雜功能的元件,直到構(gòu)成整個(gè)系統(tǒng)。在元件測(cè)試中,通過(guò)元件的輸入輸出接口,對(duì)元件的行為進(jìn)行驗(yàn)證。元件測(cè)試包括對(duì)元件集成的測(cè)試,從對(duì)最底層元件測(cè)試開始,是一個(gè)自底向上逐層集成的過(guò)程。
(4)系統(tǒng)測(cè)試:針對(duì)完整的FPGA系統(tǒng)的測(cè)試,驗(yàn)證FPGA系統(tǒng)對(duì)規(guī)定的功能、性能等需求的滿足性。
在FPGA系統(tǒng)開發(fā)過(guò)程中,邏輯綜合和結(jié)構(gòu)綜合過(guò)程基本通過(guò)綜合工具由計(jì)算機(jī)自動(dòng)完成,開發(fā)者主要是依據(jù)仿真結(jié)果進(jìn)行修改與優(yōu)化;而在自然語(yǔ)言綜合和行為綜合中,需要大量的人工介入,是缺陷引入的主要環(huán)節(jié),也是FPGA測(cè)試的重點(diǎn)。
3.2 測(cè)試類型
與軟件測(cè)試相同,F(xiàn)PGA測(cè)試可分為靜態(tài)測(cè)試和動(dòng)態(tài)測(cè)試。靜態(tài)測(cè)試包括文檔審查、代碼審查、靜態(tài)分析、代碼走查等類型。在代碼審查中,除了進(jìn)行軟件測(cè)試的相關(guān)檢查項(xiàng)外,還包括檢查代碼運(yùn)行時(shí)序的正確性、代碼的魯棒性和代碼的可綜合性。而在代碼走查中,需要沿程序的時(shí)序和信號(hào)流兩個(gè)相關(guān)維度,驗(yàn)證代碼的動(dòng)態(tài)執(zhí)行情況。
動(dòng)態(tài)測(cè)試不但沿用軟件測(cè)試中一般采用的邏輯測(cè)試、功能測(cè)試、性能測(cè)試、接口測(cè)試、強(qiáng)度測(cè)試、余量測(cè)試、安全性測(cè)試、恢復(fù)性測(cè)試、邊界測(cè)試、數(shù)據(jù)處理測(cè)試等,還包含F(xiàn)PGA系統(tǒng)特有的下載與配置測(cè)試、魯棒性測(cè)試等。
(1)下載與配置測(cè)試:測(cè)試系統(tǒng)是否能夠正確實(shí)現(xiàn)程序的下載和芯片的配置。一般需要進(jìn)行不同目標(biāo)芯片和編程方式的下載與配置測(cè)試,對(duì)可重構(gòu)FPGA系統(tǒng)重構(gòu)能力的測(cè)試。
(2)魯棒性測(cè)試:驗(yàn)證系統(tǒng)能否避免干擾和沖突得到穩(wěn)定而可靠的輸出測(cè)試,一般需要測(cè)試輸出電平的穩(wěn)定性、輸出邏輯的確定性及系統(tǒng)抗電磁干擾的能力。
3.3 測(cè)試方法與測(cè)試環(huán)境
白盒測(cè)試和黑盒測(cè)試是軟件測(cè)試中的兩大方法,在FPGA測(cè)試中同樣適用。除此之外,由于嵌入式邏輯分析儀的支持,使得灰盒測(cè)試在FPGA測(cè)試中具有很好的應(yīng)用前景。
(1)白盒測(cè)試是結(jié)構(gòu)性測(cè)試方法,根據(jù)代碼的內(nèi)部特征設(shè)計(jì)、選擇測(cè)試用例。FPGA的白盒測(cè)試一般在仿真環(huán)境下進(jìn)行,可分為代碼仿真、門級(jí)仿真和時(shí)序仿真。代碼仿真不考慮硬件特性,輸出理想情況下源代碼執(zhí)行結(jié)果,具有直觀、速度快的特點(diǎn),可以在設(shè)計(jì)的最初階段盡早發(fā)現(xiàn)問題;門級(jí)仿真是針對(duì)代碼綜合后生成的門級(jí)網(wǎng)表或是實(shí)現(xiàn)后生成的門級(jí)模型進(jìn)行的仿真,可以檢驗(yàn)綜合或?qū)崿F(xiàn)后對(duì)系統(tǒng)或模塊功能的滿足性。時(shí)序在門級(jí)仿真的基礎(chǔ)上加入時(shí)延文件即時(shí)序仿真,時(shí)序仿真能夠比較真實(shí)地反映邏輯的時(shí)延與功能,但對(duì)于邏輯量大的系統(tǒng)耗時(shí)較長(zhǎng)。
(2)黑盒測(cè)試是一種功能性測(cè)試方法,只測(cè)試產(chǎn)品對(duì)功能、性能等需求的滿足性,而不考慮產(chǎn)品的內(nèi)部結(jié)構(gòu)和處理過(guò)程。軟件測(cè)試中的測(cè)試方法和測(cè)試環(huán)境可以對(duì)FPGA中的組合邏輯進(jìn)行有效的測(cè)試。而對(duì)于時(shí)序邏輯,測(cè)試環(huán)境還包含了對(duì)動(dòng)態(tài)輸入、動(dòng)態(tài)數(shù)據(jù)采集的支持,以及對(duì)采集數(shù)據(jù)的比較分析。在測(cè)試用例的設(shè)計(jì)中,規(guī)定系統(tǒng)輸入、輸出隨時(shí)間變化的趨勢(shì),并對(duì)特殊的評(píng)價(jià)方法和通過(guò)準(zhǔn)則進(jìn)行定義。
(3)目前主流的FPGA開發(fā)工具都提供了嵌入式邏輯分析儀工具,使得灰盒測(cè)試成為了可能。嵌入式邏輯分析儀的原理是在FPGA真實(shí)運(yùn)行環(huán)境內(nèi)部,利用冗余的芯片資源,將預(yù)制的系統(tǒng)內(nèi)部信號(hào)實(shí)時(shí)通過(guò)接口輸出。這樣就可以在軟件真實(shí)運(yùn)行中,監(jiān)視軟件內(nèi)部的信號(hào)、變量和狀態(tài),避免了由于輸入輸出域信息丟失以及容錯(cuò)環(huán)節(jié)造成的代碼缺陷無(wú)法暴露的問題,提高了FPGA代碼的測(cè)試性[7]。
4 應(yīng)用實(shí)例
以軟件測(cè)試為基礎(chǔ)的FPGA測(cè)試技術(shù)已經(jīng)得到了成功的應(yīng)用。對(duì)某數(shù)字調(diào)制解調(diào)系統(tǒng)進(jìn)行了測(cè)試,該系統(tǒng)以Altera公司EP1C3T144芯片為宿主機(jī),采用VHDL語(yǔ)言編寫,實(shí)現(xiàn)了偏移四相相移鍵控(OQPSK)的調(diào)制、解調(diào)功能。
測(cè)試項(xiàng)目組對(duì)該系統(tǒng)在元件級(jí)、系統(tǒng)級(jí)進(jìn)行了測(cè)試,包括靜態(tài)分析、代碼審查、邏輯測(cè)試、功能測(cè)試、性能測(cè)試、邊界測(cè)試、魯棒性測(cè)試、安全性測(cè)試等測(cè)試類型,其中:
(1)靜態(tài)分析采用HDL Designer工具進(jìn)行了編碼規(guī)則檢查,共分析出違反編碼規(guī)則43處,其中2處存在代碼問題,得到了正確的修改,25處影響了代碼的可讀性和維護(hù)性,提出改進(jìn)建議,均進(jìn)行了相應(yīng)處理。
(2)代碼審查發(fā)現(xiàn)代碼問題4處,均為代碼和設(shè)計(jì)文檔不一致所造成,全部修改正確,并提出一處影響邏輯門資源使用效率的改進(jìn)建議。
(3)元件測(cè)試采用Altera Modelsim工具在仿真環(huán)境下進(jìn)行,共設(shè)計(jì)測(cè)試用例95個(gè),全部執(zhí)行通過(guò)。
(4)系統(tǒng)測(cè)試環(huán)境由任意波形發(fā)生器Agilent 33250A、邏輯分析儀Agilent 16902B和示波器Agilent MS09404構(gòu)成動(dòng)態(tài)測(cè)試環(huán)境,如圖2所示,設(shè)計(jì)測(cè)試用例48個(gè),其中33個(gè)規(guī)定了輸入、輸出信號(hào)的動(dòng)態(tài)時(shí)序,測(cè)試用例全部執(zhí)行通過(guò)。
經(jīng)過(guò)測(cè)試以及相應(yīng)的修改和回歸,該FPGA系統(tǒng)代碼質(zhì)量和可靠性得到了提高,系統(tǒng)功能、性能得到了驗(yàn)證。
軟件測(cè)試技術(shù)在FPGA測(cè)試中的成功應(yīng)用,有效解決了FPGA系統(tǒng)的測(cè)試問題。通過(guò)測(cè)試,提高了硬件描述語(yǔ)言的編寫質(zhì)量和系統(tǒng)的可靠性,并對(duì)FPGA的電路行為進(jìn)行了有效的驗(yàn)證。動(dòng)態(tài)測(cè)試時(shí)序測(cè)試用例的自動(dòng)生成,以及系統(tǒng)輸出波形與預(yù)期的自動(dòng)比較和判斷,將成為未來(lái)進(jìn)一步研究的重點(diǎn)。隨著FPGA系統(tǒng)在各關(guān)鍵領(lǐng)域的進(jìn)一步普及,以軟件測(cè)試為基礎(chǔ)的FPGA測(cè)試將具有更廣闊的應(yīng)用前景。