回读FPGA产品的通用仿真模型搭建与验证
2018-05-14陈恩耀陈云俞帆祝周荣刘国斌
陈恩耀 陈云 俞帆 祝周荣 刘国斌
摘要:为了提高仿真测试人员的工作效率,本文提出了一种通用的回读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.