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