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