FPGA 重復(fù)配置和測(cè)試的實(shí)現(xiàn)
從制造的角度來(lái)講,FPGA測(cè)試是指對(duì)FPGA器件內(nèi)部的邏輯塊、可編程互聯(lián)線、輸入輸出塊等資源的檢測(cè)。完整的FPGA測(cè)試包括兩步,一是配置FPGA、然后是測(cè)試FPGA,配置FPGA是指將FPGA通過(guò)將配置數(shù)據(jù)下載編程使其內(nèi)部的待測(cè)資源連接成一定的結(jié)構(gòu),在盡可能少的配置次數(shù)下保證FPGA內(nèi)部資源的測(cè)試覆蓋率,配置數(shù)據(jù)稱為T(mén)C,配置FPGA的這部分時(shí)間在整個(gè)測(cè)試流程占很大比例;測(cè)試FPGA則是指對(duì)待測(cè)FPGA施加設(shè)計(jì)好的測(cè)試激勵(lì)并回收激勵(lì),測(cè)試激勵(lì)稱為T(mén)S。
通常來(lái)說(shuō),要完成FPGA內(nèi)部資源的完整測(cè)試需要針對(duì)不同的待測(cè)資源設(shè)計(jì)多種配置圖形,多次下載到FPGA,反復(fù)施加激勵(lì)和回收測(cè)試響應(yīng),通過(guò)對(duì)響應(yīng)數(shù)據(jù)的分析來(lái)診斷故障。因此,用于FPGA測(cè)試的儀器或系統(tǒng)的關(guān)鍵技術(shù)在于:如何加快單次配置的時(shí)間,以節(jié)省測(cè)試過(guò)程中的配置時(shí)間開(kāi)銷;如何實(shí)現(xiàn)自動(dòng)重復(fù)配置和測(cè)試,將FPGA較快速度的在線配置和快速測(cè)試結(jié)合起來(lái)。
由于一般的集成電路自動(dòng)測(cè)試儀ATE為通用IC測(cè)試設(shè)計(jì),但FPGA測(cè)試有上述特殊性,在芯片功能測(cè)試之前必須對(duì)其進(jìn)行特定的配置,否則芯片是不具備內(nèi)部電路結(jié)構(gòu)的,內(nèi)部資源將無(wú)法測(cè)試,而通用的ATE要完成測(cè)試步驟中的配置功能時(shí),需要以人工或通過(guò)電腦專門(mén)編程修改配置數(shù)據(jù)生成測(cè)試系統(tǒng)可執(zhí)行的測(cè)試激勵(lì)形式進(jìn)行配置,且如果配置數(shù)據(jù)較多,這個(gè)轉(zhuǎn)換過(guò)程將可能比較復(fù)雜,易用性不強(qiáng),無(wú)法高效地用于FPGA器件的測(cè)試中,需要對(duì)FPGA測(cè)試設(shè)計(jì)專用的測(cè)試平臺(tái)以滿足其配置測(cè)試需求。
我們?cè)O(shè)計(jì)的系統(tǒng)實(shí)現(xiàn)了快速重復(fù)配置和測(cè)試的功能,配置數(shù)據(jù)可以直接引用EDA軟件生成的位流文件而不需要像ATE一樣轉(zhuǎn)換成繁雜的測(cè)試激勵(lì)形式,相較于ATE有一定的優(yōu)勢(shì),對(duì)FPGA測(cè)試有一定的使用價(jià)值。
FPGA可重復(fù)配置和測(cè)試系統(tǒng)結(jié)構(gòu)概述
系統(tǒng)框圖如圖1所示。
圖1 可重復(fù)配置測(cè)試系統(tǒng)結(jié)構(gòu)框圖
系統(tǒng)功能的實(shí)現(xiàn)包括軟件和硬件兩部分。硬件部分包含PCI橋接芯片、FPGA1中的數(shù)據(jù)接口模塊、配置模塊、測(cè)試模塊和被測(cè)FPGA。軟件部分包含對(duì)實(shí)現(xiàn)FPGA配置部分的代碼和實(shí)現(xiàn)FPGA測(cè)試部分的代碼。FPGA1中的各硬件模塊通過(guò)EDA軟件以JTAG接口固化FPGA1中,其中FPGA1中的配置模塊負(fù)責(zé)接收來(lái)自PC方軟件發(fā)送的配置數(shù)據(jù),并產(chǎn)生對(duì)被測(cè)FPGA的配置時(shí)序,完成配置步驟,測(cè)試模塊負(fù)責(zé)發(fā)送測(cè)試激勵(lì)和回收被測(cè)FPGA的響應(yīng)數(shù)據(jù),等待PC方軟件的回收。
系統(tǒng)軟硬件交互流程
整個(gè)系統(tǒng)通過(guò)軟硬件的數(shù)據(jù)交互實(shí)現(xiàn)對(duì)被測(cè)FPGA的自動(dòng)配置和測(cè)試的流程,軟硬件交互的流程從圖2可以體現(xiàn):系統(tǒng)啟動(dòng)后,首先需要開(kāi)始對(duì)被測(cè)FPGA進(jìn)行數(shù)據(jù)配置,由軟件向硬件發(fā)送配置開(kāi)始指令,硬件接收指令后對(duì)被測(cè)FPGA產(chǎn)生配置開(kāi)始的時(shí)序,告訴被測(cè)FPGA準(zhǔn)備接收配置數(shù)據(jù)。當(dāng)軟件查詢到配置模塊中的狀態(tài)寄存器值代表等待數(shù)據(jù)時(shí)開(kāi)始發(fā)送配置數(shù)據(jù)。配置數(shù)據(jù)發(fā)送完成后,軟件通過(guò)讀取配置模塊的狀態(tài)寄存器值判斷配置是否成功,決定是否可以開(kāi)始測(cè)試。如果配置成功,軟件則開(kāi)始向被測(cè)FPGA發(fā)送測(cè)試激勵(lì)數(shù)據(jù)并讀回測(cè)試響應(yīng)保存在電腦中,由軟件對(duì)測(cè)試響應(yīng)進(jìn)行分析決定是否需要進(jìn)行下一次配置和測(cè)試流程。如果需要,在一定的延時(shí)之后軟硬件將回復(fù)初始狀態(tài),并選擇新的配置數(shù)據(jù)和測(cè)試數(shù)據(jù),開(kāi)始新一輪的配置后測(cè)試流程。
圖2 FPGA芯片自動(dòng)重復(fù)下載自動(dòng)測(cè)試系統(tǒng)軟硬件交互流程圖
軟硬件數(shù)據(jù)交互的通路是PCI總線,軟件向FPGA1發(fā)送指令或數(shù)據(jù)時(shí),軟件通過(guò)PCI應(yīng)用編程接口函數(shù)將數(shù)據(jù)放到PCI總線上,PCI橋接芯片將較為復(fù)雜的PCI接口信號(hào)轉(zhuǎn)化為相對(duì)簡(jiǎn)單的Local Bus數(shù)據(jù)信號(hào),由FPGA1中的接口模塊接收并產(chǎn)生相應(yīng)的動(dòng)作。而軟件向FPGA1讀取數(shù)據(jù)的通路則相反。圖3和圖4分別是軟件在VC++6.0環(huán)境中斷點(diǎn)調(diào)試發(fā)送指令和軟件向FPGA1發(fā)送指令時(shí)由嵌入式邏輯分析儀SignalTAP II捕捉到的指令數(shù)據(jù)和接口模塊波形。
圖3 VC++6.0環(huán)境中斷點(diǎn)調(diào)試指令發(fā)送
圖4 嵌入式邏輯分析儀SignalTAP II波形
圖4中ADS_N、BLAST_N、LWORD_N、LHOLD、LHOLDA是Local Bus的接口信號(hào),ConfigEnd和ConfigStart是分別代表配置結(jié)束和配置開(kāi)始的標(biāo)志寄存器,LA是接口的地址信號(hào),用于模塊中控制寄存器的尋址,LD是接口的數(shù)據(jù)信號(hào),用于指令數(shù)據(jù)的發(fā)送和數(shù)據(jù)的回收。
以配置開(kāi)始指令的發(fā)送為例,從圖3圖4兩圖中可以看出軟硬件交互過(guò)程中的指令發(fā)送方式,在VC++中單步調(diào)試,發(fā)送一個(gè)開(kāi)始指令0x01到配置命令寄存器地址0x01,通過(guò)硬件模塊的接口動(dòng)作,用嵌入式存儲(chǔ)器SignalTap II中捕捉到LA的數(shù)據(jù)為1h,LD上的數(shù)據(jù)為1h后ConfigStart寄存器置高,配置開(kāi)始。
配置速度測(cè)試實(shí)驗(yàn)
軟硬件具體方案設(shè)計(jì)完畢后,軟件在Visual C++6.0環(huán)境下實(shí)現(xiàn)并調(diào)試。硬件在QuartusII7.1軟件下編譯。
為了對(duì)比基于PCI總線的FPGA高速配置方案與基于ByteBlasterII JTAG下載電纜的速度性能,首先使用QuartusII7.1軟件采用JTAG方式對(duì)FPGA2配置5次,計(jì)算每次下載所示時(shí)間,得到如表1中所示的數(shù)據(jù);再使用本系統(tǒng)中基于PCI總線的配置功能對(duì)FPGA2配置5次,軟件會(huì)自行計(jì)算總的下載時(shí)間,得到如表1中所示的數(shù)據(jù):
從表1的數(shù)據(jù)對(duì)比中可以看到,基于PCI總線的自動(dòng)下載配置方式要比基于JTAG電纜的下載配置方式提高超過(guò)20倍的速度,如果使用基于JTAG電纜對(duì)某大容量的FPGA下載需要近20分鐘的話,使用PCI下載方式則只需不到1分鐘的下載時(shí)間,具有明顯的速度優(yōu)勢(shì),大大節(jié)省了FPGA測(cè)試中的數(shù)據(jù)配置時(shí)間。
總結(jié)
該FPGA芯片測(cè)試平臺(tái)具有以下特點(diǎn):
(1)針對(duì)FPGA測(cè)試的特點(diǎn):需要重復(fù)對(duì)待測(cè)FPGA配置,設(shè)計(jì)了FPGA在線配置模塊和自動(dòng)測(cè)試模塊,從概念上初步實(shí)現(xiàn)了自動(dòng)重復(fù)下載和重復(fù)測(cè)試的功能,為FPGA自動(dòng)化測(cè)試尋找到一個(gè)好方法;
(2)利用軟件的靈活性提高了測(cè)試系統(tǒng)中具有可觀察性好和可控制性強(qiáng)的優(yōu)勢(shì);利用硬件結(jié)構(gòu)上并行度高、速度快的優(yōu)勢(shì)提高了測(cè)試的效率;
(3)相較于專業(yè)的ATE設(shè)備,該系統(tǒng)軟件可控性更強(qiáng),配置數(shù)據(jù)更方便。