陳恩耀 陳云 俞帆 祝周榮 劉國斌
摘要:為了提高仿真測試人員的工作效率,本文提出了一種通用的回讀FPGA產(chǎn)品的仿真模型。在該模型中,仿真測試人員可以根據(jù)不同型號的產(chǎn)品進(jìn)行參數(shù)配置,對回讀的設(shè)計代碼進(jìn)行仿真。仿真結(jié)果表明,該模型可以適用于絕大多數(shù)的回讀產(chǎn)品,仿真測試結(jié)果正確,并且可以有效提高仿真測試效率,避免測試人員對各個回讀FPGA產(chǎn)品進(jìn)行模型的重復(fù)搭建。
關(guān)鍵詞:FPGA;回讀產(chǎn)品;通用仿真模型
中圖分類號:TN791 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2018)02-0110-03
在航天FPGA產(chǎn)品的設(shè)計中,如果設(shè)計師使用的是Xilinx芯片,為了防止宇宙中單粒子翻轉(zhuǎn),相應(yīng)的回讀FPGA產(chǎn)品同時被設(shè)計。回讀FPGA產(chǎn)品一般使用Actel系列的芯片,例如A54SX32A、A54SX72A等芯片。由于被回讀的Xilinx芯片種類繁多,包括XQVR300、XQR2V3000、XC4VSX55等等[1],相應(yīng)的回讀FPGA產(chǎn)品代碼也樣式各異,因此給測試工作帶來較大的難度。本文研究一種通用的仿真模型,適用于大多數(shù)回讀FPGA產(chǎn)品的測評工作。
本文第2節(jié)介紹通用回讀FPGA測試平臺的構(gòu)件;第3節(jié)介紹可配置的回讀產(chǎn)品仿真平臺的具體實現(xiàn)方法;第4節(jié)介紹仿真測試結(jié)果與分析;第5節(jié)給出結(jié)論。
1 通用回讀FPGA測試平臺的構(gòu)件
對于一個通用的回讀測試平臺,基本要素包括Xilinx FPGA的回讀模型,一個PROM的模型,可能還包括一些CPU的模型和其它外設(shè)模型。回讀模型的工作原理是:上電后,開始進(jìn)行加載操作,回讀產(chǎn)品將原先置于PROM中的Xilinx FPGA bit文件加載到Xilinx FPGA中,加載完成之后,進(jìn)行回讀操作。一方面從Xilinx FPGA內(nèi)部讀回配置區(qū)數(shù)據(jù),一方面從PROM中讀取加載數(shù)據(jù),當(dāng)從PROM中讀出的數(shù)據(jù)與Xilinx FPGA 配置區(qū)讀回的數(shù)據(jù)一致時,表明回讀校驗正確。當(dāng)從PROM中讀出的數(shù)據(jù)與Xilinx FPGA 配置區(qū)讀回的數(shù)據(jù)有至少1bit不一致時,回讀產(chǎn)品發(fā)出prog脈沖,對Xilinx FPGA進(jìn)行重新加載。這樣每隔一定的時間,進(jìn)行回讀操作,可以有效防止Xilinx FPGA在太空中發(fā)生單粒子翻轉(zhuǎn)的情況。
由于設(shè)計師使用的Xilinx芯片種類繁多,即使對于相同的芯片,設(shè)計方訪問和操作的Xilinx FPGA內(nèi)部的寄存器也不盡相同。測評人員如果對于每一款產(chǎn)品均搭建測試激勵,必然消耗大量的時間。對于型號任務(wù)重,項目周期短的測試人員來說,在短時間內(nèi)能夠按時按質(zhì)的完成測評項目無疑是一項艱巨的任務(wù)。而由于測評人員測評水平各異,也不能保證所有測評人員搭建的測試平臺能完全滿足要求,因此回讀FPGA產(chǎn)品的通用仿真模型的搭建迫在眉睫。本文提出一個通用回讀測試平臺的搭建模型,如圖1所示。在一個通用回讀測試平臺中,可以通過sel_fpga信號選擇需要模擬的被回讀FPGA產(chǎn)品的型號,通過sel_prom信號選擇需要模擬的對FPGA進(jìn)行配置的PROM芯片型號。通過簡易的配置,可以完成回讀產(chǎn)品仿真模型的初步搭建。
2 可配置的回讀產(chǎn)品仿真平臺的具體實現(xiàn)方法
與Xilinx FPGA回讀功能的接口一般為SelectMap接口或者是JTAG接口,本文搭建的平臺是基于型號中使用較多的SelectMap接口下的回讀產(chǎn)品,基于JTAG接口下的回讀產(chǎn)品仿真平臺類似,只是接口有區(qū)別,狀態(tài)機(jī)寫法不一致,將后續(xù)進(jìn)行研究。
可配置的回讀產(chǎn)品仿真平臺的可配置內(nèi)容包括兩部分,通用FPGA 模型可配置與通用PROM模型可配置。
(1)通用FPGA 模型可配置又包括芯片可配置與訪問的寄存器可配置:
1)芯片可配置。本設(shè)計針對不同款FPGA的型號設(shè)計了1個片選參數(shù)sel_fpga,即針對不同款被回讀的芯片,根據(jù)芯片手冊要求,相應(yīng)地配置回讀幾部分?jǐn)?shù)據(jù)、回讀數(shù)據(jù)的幀長度和回讀數(shù)據(jù)幀數(shù)。例如當(dāng)參數(shù)sel_fpga指向XCV300(XQVR300)系列芯片時,仿真平臺只提供1部分回讀程序,一共回讀2474個frame和1個pad幀,一共207900個字節(jié)。當(dāng)參數(shù)sel_fpga指向XC2V3000 (XQR2V3000)系列芯片,仿真平臺提供3部分回讀,第1部分回讀CLB、IOI等,包括1287 個frames與 1個pad frame,第2部分回讀第1部分最后1幀,包括1個frames,第三部分讀取BRAM INT,包括132個frames和1個pad frame[2]。 Xilinx fpga的各款芯片具體回讀方案如表1所示[1][2][3][4]:
2)訪問的寄存器可配置。不同的設(shè)計師會增加對不同的寄存器的訪問以確認(rèn)被回讀的芯片能正常運行,當(dāng)校驗芯片能正常運行之后,開始進(jìn)行回讀操作。這類可配置的寄存器有CMD、FAR、FDRI等寄存器。仿真平臺通過解析回讀產(chǎn)品的訪問指令,配置如表2所示的各個寄存器,配置寄存器的原代碼如表3所示。
(2)通用PROM模型可配置:通過對sel_prom信號的選擇,根據(jù)芯片手冊要求,對接口時序的參數(shù)進(jìn)行配置。通過完成對FPGA 模型的配置與PROM模型的配置,通用回讀FPGA產(chǎn)品的仿真模型也同時完成了搭建。
3 仿真測試結(jié)果與分析
本文實驗選用的回讀FPGA產(chǎn)品型號為ACTEL公司A54SX 32A,被回讀的Xilinx FPGA型號為XQVR300-4CB228V,回讀設(shè)計人員對該回讀FPGA的設(shè)計除了最基本的回讀功能外,還增加了SEFI檢測功能,包括對FAR寄存器的檢測和狀態(tài)寄存器的檢測。
3.1 考慮整個回讀流程
在整個回讀流程中,設(shè)計師增加對FAR寄存器的檢測和狀態(tài)寄存器的檢測。
(1)FAR寄存器的檢測:首先向FAR寄存器寫數(shù)據(jù),寫完從FAR寄存器中讀回數(shù)據(jù),如果等待16個時鐘周期,從被回讀芯片返回的busy信號沒有跳變?yōu)榈?,則認(rèn)定發(fā)生了SEFI。
(2)狀態(tài)寄存器(STAT)的檢測:當(dāng)回讀產(chǎn)品認(rèn)定未發(fā)生SEFI后進(jìn)行狀態(tài)寄存器的校驗,即讀狀態(tài)寄存器,如果狀態(tài)寄存器的第4/5/6/7位任意一位返回0,則認(rèn)定發(fā)生了SEFI[4]。
通用測試平臺正好能夠契合設(shè)計需求,當(dāng)回讀設(shè)計軟件發(fā)出寫FAR寄存器后,測試平臺通過對數(shù)據(jù)包的解析,F(xiàn)AR寄存器更新為待寫入的值。當(dāng)回讀產(chǎn)品發(fā)出讀FAR寄存器的指令后,平臺將FAR寄存器的值返回給回讀FPGA產(chǎn)品;當(dāng)回讀設(shè)計軟件發(fā)出讀狀態(tài)寄存器的指令后,平臺將狀態(tài)寄存器的值返回給回讀FPGA產(chǎn)品;從而完成了回讀設(shè)計軟件對寄存器的操作要求。當(dāng)回讀FPGA產(chǎn)品判定被回讀的FPGA未發(fā)生SEFI后,開始發(fā)出指令進(jìn)行回讀操作。由于被回讀的芯片型號為XQVR300-4CB228V,因此只有1次回讀操作,一共回讀2474個CLB幀和1個pad幀,每幀長度為84個字節(jié),一共回讀207900個字節(jié)。
3.2 通用回讀仿真模型的仿真和測試
為了驗證本測試模型的準(zhǔn)確性,我們采用VCS 仿真工具,對被測回讀FPGA產(chǎn)品進(jìn)行仿真測試。
在進(jìn)行FAR檢測時,回讀產(chǎn)品向幀地址寄存器寫入數(shù)據(jù)32h00ec8300,寫完之后發(fā)出指令回讀該寄存器,由圖3可知,回讀產(chǎn)品從仿真模型中讀回該數(shù)據(jù),存入寄存器far_reg。經(jīng)比對,讀回的數(shù)據(jù)與寫入的數(shù)據(jù)一致,表明FAR校驗成功。
當(dāng)FAR校驗成功后,開始進(jìn)行狀態(tài)寄存器檢測,狀態(tài)寄存器讀回的數(shù)據(jù)為8h0f,存入寄存器stat_reg,表明狀態(tài)寄存器檢測成功。
當(dāng)FAR校驗與狀態(tài)寄存器校驗成功后,開始進(jìn)行回讀操作,當(dāng)Xilinx芯片配置信息最后1bit發(fā)生翻轉(zhuǎn)后,error_cnt計數(shù)器加1,系統(tǒng)在3.06S后重新發(fā)出約120ms的prog低電平脈沖,使回讀FPGA產(chǎn)品對被回讀芯片進(jìn)行重新加載。該過程表明回讀校驗功能正確,回讀產(chǎn)品可以有效防止Xilinx FPGA芯片的單粒子翻轉(zhuǎn)狀況。
4 結(jié)語
本文提出了一種回讀FPGA產(chǎn)品的通用仿真模型的搭建方法。首先介紹了通用回讀FPGA產(chǎn)品的測試平臺的構(gòu)件,之后介紹了可配置的回讀產(chǎn)品仿真平臺的設(shè)計方法,最后通過選取型號軟件驗證了該平臺可以準(zhǔn)確進(jìn)行回讀FPGA產(chǎn)品的仿真測試工作。測試結(jié)果表明,該通用仿真模型能滿足絕大多數(shù)型號回讀產(chǎn)品的需求,能提高測試人員的效率,保證測試質(zhì)量,并且給回讀產(chǎn)品的設(shè)計人員提供了參考。
參考文獻(xiàn)
[1]Virtex-II Platform FPGA User Guide-UG002( v2.0)[EB /OL].2005-03-23.
[2]Correcting Single-Event Upsets in Virtex-II Platform FPGA Configuration Memory -XAPP779(v1.1)[EB /OL].2007-02-19.
[3]Correcting Single-Event Upsets in Virtex-4 Platform FPGA Configuration Memory -XAPP988(v1.0)[EB /OL].2008-03-13.
[4]Correcting Single-Upsets in Virtex-4 FPGA Configuration Memory-XAPP1088(v1.0)[EB /OL].2009-10-05.