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