航天器固态存储控制器是卫星的数据处理中心,负责接收、存储和传输卫星工程参数和有效载荷科学数据。航天器固态存储控制器使用现场可编程逻辑门阵列(FPGA)作为处理核心。FPGA是一种可编程的信息处理设备,通过改变配置信息来提供集成、高速、可靠性等多种功能,在航空航天领域得到了广泛的应用。但是,如果FPGA的程序存在不可见的缺陷(例如,由于外部异常输入而导致的内部功能模块状态系统异常运行),则会出现FPGA输出错误信号,从而导致整个系统功能故障。因此,需要对FPGA设计进行功能测试和计时测试。另外,由于航空航天工作可靠性和安全性的特殊要求,还需要裕度测试、安全测试、恢复测试、边界测试等[1]。
图1显示了现有的功能模拟测试平台模型。现有的功能仿真测试平台包括激励模块、测试大象设计和接收模块三部分。特点是结构简单,功能单一,没有统一的体系结构和标准,大部分是根据特定的模型任务开发的。这种“定制”测试平台存在通用性和可移植性差、可读性差、不利于管理等诸多缺点。为了解决这一问题,提出了以系统Verilog语言编写的板载固态存储控制器通用仿真测试平台体系结构。内部设计采用分层模型,内部接口和总线都使用ARM建议的高级外围设备总线标准(APB)。
1标准通用测试平台设计
1.1测试平台概述
基于Verilog HDL和VHDL语言开发的测试平台存在重复利用率低、开发效率低的问题,使用面向对象的专用验证语言System Verilog可以有效地解决这些问题。系统verilog充分吸收和借用了Verilog HDL、VHDL、System C和C等语言的特性,使您能够在更高的抽象级别测试和验证非常复杂的设计[2]。另外,测试平台体系结构必须通过模块化和标准化设计,提高测试平台的通用性,通过层次结构设计,提高测试平台的灵活性和稳定性。明确的层设计可以有效地定义层之间的接口,层与层之间的独立性使每个层能够在不影响其他层的情况下,使用最合适的技术来实现。
1.2层次结构设计
用于板载固态存储控制器设计的标准化通用模拟测试平台包括测试层、场景层、功能层、命令层、信号层等五层。层次通用测试平台体系结构如图2所示。
最底层是将测试中的设计连接到测试平台并完成模块信号对接的信号层。信号层上层是从功能层接收命令信息后,驱动总线上的命令作为要测试的设计的输入的命令层。接收单位收集待测试设计的激励响应输出,并根据命令分组。监视设备监视不受命令信号约束的独立信号,并且可以通过整个命令周期搜索这些信号的变化[3]。另外,如果程序中真的发生了“不应该发生”的事情,监视设备会发出警报。因此,监控设备与接收设备的交互可以更全面地监控测试过程中的状态变化,从而提高测试结果的可靠性。
功能层向下指向命令层。任务调度器单元在场景级别收到任务后,将任务拆分为多个单独的命令。这些命令被发送到驱动装置时,将同时发送到检查装置。检验单位将实际测试大象设计的激励响应与预测单位的理想响应结果进行比较。通过分析检查单位的数据,可以确定在当前工作中要测试的设计是否满足预期的设计要求。
根据场景层测试层的激励约束,在实际工作中模拟各种场景。发生单位的组件根据要测试的设计进行不同的适应性更改,但基本模块由信号源和数据源组成。信号源根据上层的约束信息生成适当的激励信号,并控制数据源开始向要测试的设计发送数据。
测试层是整个测试平台的顶层,输入单元用于向测试平台发送产生激励的约束。功能覆盖范围可以衡量测试计划中所有测试的进展。
2航天器固态存储控制器通用测试平台的实现
2.1测试平台架构设计
基于层次通用测试平台体系结构,结合工程模型工作要求,构建了板载固态存储控制器通用仿真测试平台(见图3)。
Th3CkTuTMDOoQvpV3%2B71ql2To%3D&index=2" width="640" height="554"/>通用测试平台中各模块接口均使用APB总线标准进行封装,并增加APB总线接口模块进行平台内各模块及测试平台与待测设计间通信。此外,增加参数配置模块,其可对发生单元中的数据源和激励源以及驱动单元中的时钟和复位模块进行配置。测试平台内嵌有参数可配置的Flash模型、SDRAM模型以及MRAM模型。通过参数配置模块可以对Flash模块等进行配置。其中,Flash模型设计采用分层结构,最底层由8 Gbit的基本单元组成,支持主存储区和空余区的读写,支持读、写和擦除等时间参数设置和初始坏块设置,以该基本单元为基础进行级联扩展,可实现不同存储容量、存储速率以及叠装构型的Flash器件的阵列模拟。
测试平台的各项参数配置需在测试开始前完成,即测试前向参数配置模块输入配置参数,完成对Flash阵列模型及其他模块的配置。对待测设计进行测试时,由测试输入模块向测试平台注入约束条件,发生单元根据收到的约束条件产生相应的激励源,激励信号经任务调度单元分别加载到检验单元和待测设计。同时数据源根据约束条件开始向任务调度单元发送数据。任务调度单元接收到待测任务信息后将待测任务信息下发到驱动单元。驱动单元生成驱动配置文件,调配各个模块向待测设计输入数据及相应的时钟复位信号。待测设计在接收到激励输入和数据后产生激励响应,接收单元对激励响应进行分类,随后将其送入到检验单元中的比较器。检验单元收到的激励输入被加载到参考模型中产生理想激励,随后比较器将理想激励与实际激励响应进行比较。通过对检验单元输出结果的分析就可以判断在当前约束条件下待测设计是否符合预期设计目标。功能覆盖率模块收集整个测试过程中的信息作为评价测试的充分性证据。
2.2 工程组织架构
通用仿真测试平台运行在仿真工具Que上,使用System Verilog语言开发。测试平台采用层次化组织架构,工程组织架构见图4。
测试工程组织架构为树状结构,顶层文件名为“Top_sim”,其中包含两个主要的一级结构:约束文件(Constri_files)和参数配置文件(Para_cfg)。约束文件包含数据输入约束(Data_in)和激励输入约束(Drive_in)两个二级结构。激励输入约束下分为直接测试(Direct)和随机测试(Random)两个三级结构[4]。直接测试可以保证测试验证过程有一定的复现性,而随机测试可以对待测设计进行更为充分的验证。参数配置文件(Para_cfg)用于对测试平台中相关模块进行配置以满足待测设计的要求。测试平台的执行脚本文件是采用TCL语言编写的扩展名为.do的文件,用于在测试时对工程文件进行自动组织与控制。
3 实验与应用
基于上述设计所开发的通用仿真测试平台已成功应用于XX-09型号卫星和XX-5A型号卫星数传FPGA的仿真测试。根据开发方提供的源程序以及《XX型号卫星数传FPGA需求规格说明》开展测试,测试流程图见图5。
首先运用代码检查工具对RTL级代码进行编码规则检查和代码审查,随后使用测试平台分别对待测设计进行功能仿真测试、对逻辑综合后网表文件开展门级仿真测试以及对布局布线后网表文件开展时序仿真测试。最后,使用静态时序分析工具和逻辑等效性检查工具对待测设计进行静态时序分析和逻辑等效性检查[5]。其中,功能仿真测试和门级仿真测试均在本文的通用仿真测试平台上完成。
以XX-09型号卫星为例,存储单元为两个64 Gbit NAND Flash叠装芯片并联构成的128 Gbit NAND Flash存储阵列,每个64 Gbit NAND Flash由8片8 Gbit的存储基片组成[6]。根据XX-09型号卫星任务数传FPGA任务书与需求规格说明,对数传FPGA开展功能需求分析及接口需求分析,共整理出82个功能相关测试子项,设计了415个测试用例,覆盖了功能测试、性能测试、时序测试、接口测试、安全性测试、余量测试、恢复性测试、边界测试、等效性检查共9种测试类型。仿真测试模块覆盖率和总体覆盖率结果见图6。功能仿真中对语句覆盖率和分支覆盖率进行分析,语句覆盖率达到91.5%,分支覆盖率达到97.4%,未覆盖原因为case条件语句中default分支不可达,经确认测试后功能正常。
对XX-5A和XX-09型号卫星数传FPGA分别采用传统仿真测试平台与本文仿真测试平台进行仿真测试,统计覆盖率与仿真周期数,结果见表1。
由表1知,传统仿真测试平台与通用仿真测试平台均可完成100%功能覆盖率,但通用仿真测试平台的仿真周期数是传统仿真测试平台的48%左右,而且具有更好的语句覆盖率和分支覆盖率。综上,本文所设计的仿真测试平台覆盖率性能良好并具有一定的通用性,相较于传统仿真测试平台可以有效缩短测试时间,并可以有效提高测试覆盖率。
4 结论
为解决传统测试平台通用性和继承性差、难升级、难维护等问题[7],提出了一种基于层次化结构设计的仿真测试平台架构,并在此基础上结合APB总线标准开发了星载固态存储控制器的通用仿真测试平台。利用该平台对两个卫星型号任务的数传FPGA进行了仿真验证测试,结果表明测试平台可以有效支持对不同型号星载固态存储控制器的仿真测试,相比于传统测试平台优化了测试流程并提高测试效率,具有很好的工程应用价值。
参考文献
[1] 周珊,杨雅雯,王金波.航天高可靠FPGA测试技术研究[J].计算机技术与发展,2017,27(3):1-5,11.
[2] 高虎,封二强,赵刚.基于Testbench的FPGA实物自动化测试环境设计[J].电子技术应用,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].电子技术应用,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].电子技术应用,2019,45(1):88-91.
[7] 陈琳娜,孟建熠,林志涛.面向串行总线的层次化UVM验证平台设计[J].传感器与微系统,2018,37(9):84-86,89.
作者信息:
张伟东1,2,3,董振兴1,2,朱 岩1,2,安军社1,2
(1.中国科学院 复杂航天系统电子信息技术国防科技创新重点实验室,北京100190;
2.中国科学院 国家空间科学中心,北京 100190;3.中国科学院大学,北京100190)