文獻(xiàn)標(biāo)識(shí)碼: A
DOI:10.16157/j.issn.0258-7998.190327
中文引用格式: 張偉東,董振興,朱巖,等. 星載固態(tài)存儲(chǔ)控制器標(biāo)準(zhǔn)化通用仿真測(cè)試平臺(tái)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2019,45(7):117-120.
英文引用格式: Zhang Weidong,Dong Zhenxing,Zhu Yan,et al. Design of standardized universal simulation test platform for onboard solid state memory controllers[J]. Application of Electronic Technique,2019,45(7):117-120.
0 引言
星載固態(tài)存儲(chǔ)控制器是衛(wèi)星的數(shù)據(jù)處理中心,負(fù)責(zé)衛(wèi)星工程參數(shù)和有效載荷科學(xué)數(shù)據(jù)的接收、存儲(chǔ)與傳輸。星載固態(tài)存儲(chǔ)控制器使用現(xiàn)場(chǎng)可編程邏輯門陣列(Field Programmable Gate Array,F(xiàn)PGA)作為處理核心。FPGA是一種可編程的信息處理器件,可通過(guò)改變其配置信息實(shí)現(xiàn)不同功能,具有高集成度、高速、高可靠性等特點(diǎn),在航天領(lǐng)域內(nèi)得到了廣泛應(yīng)用。但是當(dāng)FPGA中的程序存在隱性缺陷時(shí),如因外部異常輸入導(dǎo)致的內(nèi)部功能模塊狀態(tài)機(jī)運(yùn)行異常時(shí),會(huì)導(dǎo)致FPGA輸出錯(cuò)誤信號(hào),進(jìn)而導(dǎo)致整個(gè)系統(tǒng)功能紊亂。因此需要對(duì)FPGA設(shè)計(jì)進(jìn)行功能測(cè)試和時(shí)序測(cè)試。此外,由于航天任務(wù)對(duì)可靠性和安全性的特殊要求,還需要對(duì)其進(jìn)行余量測(cè)試、安全性測(cè)試、恢復(fù)性測(cè)試以及邊界測(cè)試等[1]。
圖1所示為傳統(tǒng)功能仿真測(cè)試平臺(tái)模型。傳統(tǒng)功能仿真測(cè)試平臺(tái)由激勵(lì)模塊、待測(cè)設(shè)計(jì)和接收模塊三部分組成。其特點(diǎn)是結(jié)構(gòu)簡(jiǎn)單、功能單一,沒(méi)有統(tǒng)一的架構(gòu)和標(biāo)準(zhǔn),且大都是基于特定的型號(hào)任務(wù)所開發(fā)的。這種“定制式”的測(cè)試平臺(tái)存在很多弊端,如通用性和可移植性差、可讀性差、不利于管理等。為解決上述問(wèn)題,提出了一種基于System Verilog語(yǔ)言編寫的星載固態(tài)存儲(chǔ)控制器通用仿真測(cè)試平臺(tái)架構(gòu),其內(nèi)部設(shè)計(jì)采用層次化模型,內(nèi)部接口與總線均采用由ARM公司提出的高級(jí)外設(shè)總線標(biāo)準(zhǔn)(Advanced Peripheral Bus,APB)。
1 標(biāo)準(zhǔn)化通用測(cè)試平臺(tái)設(shè)計(jì)
1.1 測(cè)試平臺(tái)概述
基于Verilog HDL和VHDL語(yǔ)言開發(fā)的測(cè)試平臺(tái)存在重復(fù)利用率差、開發(fā)效率低等問(wèn)題,而采用面向?qū)ο蟮膶S抿?yàn)證語(yǔ)言System Verilog可以有效地解決這些問(wèn)題。System Verilog充分吸收和借鑒了Verilog HDL、VHDL、System C和C++等語(yǔ)言的特性,使其可以在更高的抽象層級(jí)上對(duì)高度復(fù)雜的設(shè)計(jì)進(jìn)行測(cè)試驗(yàn)證[2]。此外,測(cè)試平臺(tái)架構(gòu)應(yīng)采用模塊化和標(biāo)準(zhǔn)化設(shè)計(jì),從而使測(cè)試平臺(tái)具有更好的通用性,還應(yīng)采用層次化結(jié)構(gòu)設(shè)計(jì),以有效增強(qiáng)測(cè)試平臺(tái)的靈活性和穩(wěn)定性。明確的層次設(shè)計(jì)可以有效地定義各層之間的接口,層與層之間的獨(dú)立性也使得每一層可以采用其最合適的技術(shù)去實(shí)現(xiàn)而不影響其他層。
1.2 層次化結(jié)構(gòu)設(shè)計(jì)
星載固態(tài)存儲(chǔ)控制器設(shè)計(jì)的標(biāo)準(zhǔn)化通用仿真測(cè)試平臺(tái)包含5個(gè)層次:測(cè)試層、場(chǎng)景層、功能層、命令層和信號(hào)層,層次化結(jié)構(gòu)通用測(cè)試平臺(tái)架構(gòu)見圖2。
最底層為信號(hào)層,負(fù)責(zé)將待測(cè)設(shè)計(jì)連接到測(cè)試平臺(tái),完成模塊信號(hào)對(duì)接。信號(hào)層上層是命令層,驅(qū)動(dòng)單元接收來(lái)自功能層的命令信息后將總線上的命令驅(qū)動(dòng)到待測(cè)設(shè)計(jì)的輸入上;接收單元負(fù)責(zé)收集待測(cè)設(shè)計(jì)的激勵(lì)響應(yīng)輸出,并且按照命令進(jìn)行分組;監(jiān)視單元負(fù)責(zé)監(jiān)視那些不受命令信號(hào)約束的獨(dú)立信號(hào),其可穿越整個(gè)命令的周期來(lái)搜尋這些信號(hào)的變化[3]。另外,如果當(dāng)程序中 “不應(yīng)發(fā)生”的事情的確發(fā)生的時(shí)候,監(jiān)視單元將進(jìn)行報(bào)警。因此,監(jiān)視單元和接收單元的共同作用可以更加全面地監(jiān)控測(cè)試過(guò)程中的狀態(tài)變化,從而提高測(cè)試結(jié)果的可靠性。
功能層向下面對(duì)命令層。任務(wù)調(diào)度單元接收來(lái)自場(chǎng)景層的任務(wù)后,將任務(wù)分解成若干獨(dú)立的命令。這些命令在被送往驅(qū)動(dòng)單元的同時(shí)也會(huì)被送往檢驗(yàn)單元。檢驗(yàn)單元負(fù)責(zé)對(duì)比實(shí)際待測(cè)設(shè)計(jì)的激勵(lì)響應(yīng)與預(yù)測(cè)單元理想的響應(yīng)結(jié)果。通過(guò)對(duì)檢驗(yàn)單元中數(shù)據(jù)進(jìn)行分析就可以判斷當(dāng)前任務(wù)下待測(cè)設(shè)計(jì)是否符合預(yù)期設(shè)計(jì)要求。
場(chǎng)景層根據(jù)來(lái)自測(cè)試層的激勵(lì)約束,模擬實(shí)際任務(wù)中的各種場(chǎng)景。發(fā)生單元的組成部分根據(jù)不同的待測(cè)設(shè)計(jì)進(jìn)行不同適應(yīng)性更改,但基本模塊均由信號(hào)源和數(shù)據(jù)源組成。信號(hào)源根據(jù)上層的約束信息產(chǎn)生相應(yīng)激勵(lì)信號(hào),并控制數(shù)據(jù)源開始向待測(cè)設(shè)計(jì)發(fā)送數(shù)據(jù)。
測(cè)試層為整個(gè)測(cè)試平臺(tái)的頂層,其中輸入單元用來(lái)向測(cè)試平臺(tái)發(fā)送創(chuàng)建激勵(lì)的約束。功能覆蓋率可以衡量所有測(cè)試在測(cè)試計(jì)劃中的進(jìn)展。
2 星載固態(tài)存儲(chǔ)控制器通用測(cè)試平臺(tái)實(shí)現(xiàn)
2.1 測(cè)試平臺(tái)架構(gòu)設(shè)計(jì)
基于層次化結(jié)構(gòu)通用測(cè)試平臺(tái)架構(gòu),結(jié)合工程型號(hào)任務(wù)需求,搭建星載固態(tài)存儲(chǔ)控制器通用仿真測(cè)試平臺(tái),見圖3。
通用測(cè)試平臺(tái)中各模塊接口均使用APB總線標(biāo)準(zhǔn)進(jìn)行封裝,并增加APB總線接口模塊進(jìn)行平臺(tái)內(nèi)各模塊及測(cè)試平臺(tái)與待測(cè)設(shè)計(jì)間通信。此外,增加參數(shù)配置模塊,其可對(duì)發(fā)生單元中的數(shù)據(jù)源和激勵(lì)源以及驅(qū)動(dòng)單元中的時(shí)鐘和復(fù)位模塊進(jìn)行配置。測(cè)試平臺(tái)內(nèi)嵌有參數(shù)可配置的Flash模型、SDRAM模型以及MRAM模型。通過(guò)參數(shù)配置模塊可以對(duì)Flash模塊等進(jìn)行配置。其中,F(xiàn)lash模型設(shè)計(jì)采用分層結(jié)構(gòu),最底層由8 Gbit的基本單元組成,支持主存儲(chǔ)區(qū)和空余區(qū)的讀寫,支持讀、寫和擦除等時(shí)間參數(shù)設(shè)置和初始?jí)膲K設(shè)置,以該基本單元為基礎(chǔ)進(jìn)行級(jí)聯(lián)擴(kuò)展,可實(shí)現(xiàn)不同存儲(chǔ)容量、存儲(chǔ)速率以及疊裝構(gòu)型的Flash器件的陣列模擬。
測(cè)試平臺(tái)的各項(xiàng)參數(shù)配置需在測(cè)試開始前完成,即測(cè)試前向參數(shù)配置模塊輸入配置參數(shù),完成對(duì)Flash陣列模型及其他模塊的配置。對(duì)待測(cè)設(shè)計(jì)進(jìn)行測(cè)試時(shí),由測(cè)試輸入模塊向測(cè)試平臺(tái)注入約束條件,發(fā)生單元根據(jù)收到的約束條件產(chǎn)生相應(yīng)的激勵(lì)源,激勵(lì)信號(hào)經(jīng)任務(wù)調(diào)度單元分別加載到檢驗(yàn)單元和待測(cè)設(shè)計(jì)。同時(shí)數(shù)據(jù)源根據(jù)約束條件開始向任務(wù)調(diào)度單元發(fā)送數(shù)據(jù)。任務(wù)調(diào)度單元接收到待測(cè)任務(wù)信息后將待測(cè)任務(wù)信息下發(fā)到驅(qū)動(dòng)單元。驅(qū)動(dòng)單元生成驅(qū)動(dòng)配置文件,調(diào)配各個(gè)模塊向待測(cè)設(shè)計(jì)輸入數(shù)據(jù)及相應(yīng)的時(shí)鐘復(fù)位信號(hào)。待測(cè)設(shè)計(jì)在接收到激勵(lì)輸入和數(shù)據(jù)后產(chǎn)生激勵(lì)響應(yīng),接收單元對(duì)激勵(lì)響應(yīng)進(jìn)行分類,隨后將其送入到檢驗(yàn)單元中的比較器。檢驗(yàn)單元收到的激勵(lì)輸入被加載到參考模型中產(chǎn)生理想激勵(lì),隨后比較器將理想激勵(lì)與實(shí)際激勵(lì)響應(yīng)進(jìn)行比較。通過(guò)對(duì)檢驗(yàn)單元輸出結(jié)果的分析就可以判斷在當(dāng)前約束條件下待測(cè)設(shè)計(jì)是否符合預(yù)期設(shè)計(jì)目標(biāo)。功能覆蓋率模塊收集整個(gè)測(cè)試過(guò)程中的信息作為評(píng)價(jià)測(cè)試的充分性證據(jù)。
2.2 工程組織架構(gòu)
通用仿真測(cè)試平臺(tái)運(yùn)行在仿真工具QuestaSim10.4c上,使用System Verilog語(yǔ)言開發(fā)。測(cè)試平臺(tái)采用層次化組織架構(gòu),工程組織架構(gòu)見圖4。
測(cè)試工程組織架構(gòu)為樹狀結(jié)構(gòu),頂層文件名為“Top_sim”,其中包含兩個(gè)主要的一級(jí)結(jié)構(gòu):約束文件(Constri_files)和參數(shù)配置文件(Para_cfg)。約束文件包含數(shù)據(jù)輸入約束(Data_in)和激勵(lì)輸入約束(Drive_in)兩個(gè)二級(jí)結(jié)構(gòu)。激勵(lì)輸入約束下分為直接測(cè)試(Direct)和隨機(jī)測(cè)試(Random)兩個(gè)三級(jí)結(jié)構(gòu)[4]。直接測(cè)試可以保證測(cè)試驗(yàn)證過(guò)程有一定的復(fù)現(xiàn)性,而隨機(jī)測(cè)試可以對(duì)待測(cè)設(shè)計(jì)進(jìn)行更為充分的驗(yàn)證。參數(shù)配置文件(Para_cfg)用于對(duì)測(cè)試平臺(tái)中相關(guān)模塊進(jìn)行配置以滿足待測(cè)設(shè)計(jì)的要求。測(cè)試平臺(tái)的執(zhí)行腳本文件是采用TCL語(yǔ)言編寫的擴(kuò)展名為.do的文件,用于在測(cè)試時(shí)對(duì)工程文件進(jìn)行自動(dòng)組織與控制。
3 實(shí)驗(yàn)與應(yīng)用
基于上述設(shè)計(jì)所開發(fā)的通用仿真測(cè)試平臺(tái)已成功應(yīng)用于XX-09型號(hào)衛(wèi)星和XX-5A型號(hào)衛(wèi)星數(shù)傳FPGA的仿真測(cè)試。根據(jù)開發(fā)方提供的源程序以及《XX型號(hào)衛(wèi)星數(shù)傳FPGA需求規(guī)格說(shuō)明》開展測(cè)試,測(cè)試流程圖見圖5。
首先運(yùn)用代碼檢查工具對(duì)RTL級(jí)代碼進(jìn)行編碼規(guī)則檢查和代碼審查,隨后使用測(cè)試平臺(tái)分別對(duì)待測(cè)設(shè)計(jì)進(jìn)行功能仿真測(cè)試、對(duì)邏輯綜合后網(wǎng)表文件開展門級(jí)仿真測(cè)試以及對(duì)布局布線后網(wǎng)表文件開展時(shí)序仿真測(cè)試。最后,使用靜態(tài)時(shí)序分析工具和邏輯等效性檢查工具對(duì)待測(cè)設(shè)計(jì)進(jìn)行靜態(tài)時(shí)序分析和邏輯等效性檢查[5]。其中,功能仿真測(cè)試和門級(jí)仿真測(cè)試均在本文的通用仿真測(cè)試平臺(tái)上完成。
以XX-09型號(hào)衛(wèi)星為例,存儲(chǔ)單元為兩個(gè)64 Gbit NAND Flash疊裝芯片并聯(lián)構(gòu)成的128 Gbit NAND Flash存儲(chǔ)陣列,每個(gè)64 Gbit NAND Flash由8片8 Gbit的存儲(chǔ)基片組成[6]。根據(jù)XX-09型號(hào)衛(wèi)星任務(wù)數(shù)傳FPGA任務(wù)書與需求規(guī)格說(shuō)明,對(duì)數(shù)傳FPGA開展功能需求分析及接口需求分析,共整理出82個(gè)功能相關(guān)測(cè)試子項(xiàng),設(shè)計(jì)了415個(gè)測(cè)試用例,覆蓋了功能測(cè)試、性能測(cè)試、時(shí)序測(cè)試、接口測(cè)試、安全性測(cè)試、余量測(cè)試、恢復(fù)性測(cè)試、邊界測(cè)試、等效性檢查共9種測(cè)試類型。仿真測(cè)試模塊覆蓋率和總體覆蓋率結(jié)果見圖6。功能仿真中對(duì)語(yǔ)句覆蓋率和分支覆蓋率進(jìn)行分析,語(yǔ)句覆蓋率達(dá)到91.5%,分支覆蓋率達(dá)到97.4%,未覆蓋原因?yàn)閏ase條件語(yǔ)句中default分支不可達(dá),經(jīng)確認(rèn)測(cè)試后功能正常。
對(duì)XX-5A和XX-09型號(hào)衛(wèi)星數(shù)傳FPGA分別采用傳統(tǒng)仿真測(cè)試平臺(tái)與本文仿真測(cè)試平臺(tái)進(jìn)行仿真測(cè)試,統(tǒng)計(jì)覆蓋率與仿真周期數(shù),結(jié)果見表1。
由表1知,傳統(tǒng)仿真測(cè)試平臺(tái)與通用仿真測(cè)試平臺(tái)均可完成100%功能覆蓋率,但通用仿真測(cè)試平臺(tái)的仿真周期數(shù)是傳統(tǒng)仿真測(cè)試平臺(tái)的48%左右,而且具有更好的語(yǔ)句覆蓋率和分支覆蓋率。綜上,本文所設(shè)計(jì)的仿真測(cè)試平臺(tái)覆蓋率性能良好并具有一定的通用性,相較于傳統(tǒng)仿真測(cè)試平臺(tái)可以有效縮短測(cè)試時(shí)間,并可以有效提高測(cè)試覆蓋率。
4 結(jié)論
為解決傳統(tǒng)測(cè)試平臺(tái)通用性和繼承性差、難升級(jí)、難維護(hù)等問(wèn)題[7],提出了一種基于層次化結(jié)構(gòu)設(shè)計(jì)的仿真測(cè)試平臺(tái)架構(gòu),并在此基礎(chǔ)上結(jié)合APB總線標(biāo)準(zhǔn)開發(fā)了星載固態(tài)存儲(chǔ)控制器的通用仿真測(cè)試平臺(tái)。利用該平臺(tái)對(duì)兩個(gè)衛(wèi)星型號(hào)任務(wù)的數(shù)傳FPGA進(jìn)行了仿真驗(yàn)證測(cè)試,結(jié)果表明測(cè)試平臺(tái)可以有效支持對(duì)不同型號(hào)星載固態(tài)存儲(chǔ)控制器的仿真測(cè)試,相比于傳統(tǒng)測(cè)試平臺(tái)優(yōu)化了測(cè)試流程并提高測(cè)試效率,具有很好的工程應(yīng)用價(jià)值。
參考文獻(xiàn)
[1] 周珊,楊雅雯,王金波.航天高可靠FPGA測(cè)試技術(shù)研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2017,27(3):1-5,11.
[2] 高虎,封二強(qiáng),趙剛.基于Testbench的FPGA實(shí)物自動(dòng)化測(cè)試環(huán)境設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2018,44(4):48-51.
[3] FIERGOLSKI A.Simulation environment based on the universal verification methodology[J].Journal of Instrumentation,2017,12(1):C01001.
[4] 楊志勇,董振興,朱巖,等.星載高速大容量存儲(chǔ)器文件化壞塊管理設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2017,43(6):11-14.
[5] BIRLA S,SHARMA S,SHUKLA N K.UVM-powered hardware/software co-verification[J].Journal of Information and Optimization Sciences,2017,38(6):945-952.
[6] 林天靜,阮翔,劉春.基于Flash控制器的FPGA在線加載功能設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2019,45(1):88-91.
[7] 陳琳娜,孟建熠,林志濤.面向串行總線的層次化UVM驗(yàn)證平臺(tái)設(shè)計(jì)[J].傳感器與微系統(tǒng),2018,37(9):84-86,89.
作者信息:
張偉東1,2,3,董振興1,2,朱 巖1,2,安軍社1,2
(1.中國(guó)科學(xué)院 復(fù)雜航天系統(tǒng)電子信息技術(shù)國(guó)防科技創(chuàng)新重點(diǎn)實(shí)驗(yàn)室,北京100190;
2.中國(guó)科學(xué)院 國(guó)家空間科學(xué)中心,北京 100190;3.中國(guó)科學(xué)院大學(xué),北京100190)