FPGA软件验证技术(上)
高性能MCU的FPGA原型验证系统研究与平台实现

高性能M C U的F P G A原型验证系统研究与平台实现贺龙龙,杨立新,牛彬,黎金旺,张彦欣,李猛(北京智芯微电子科技有限公司,北京102200)摘要:本文研究并实现了一种基于C o r t e x A7核的高性能M C U在F P G A原型阶段的验证平台㊂该设计研究可以针对高性能M C U芯片或其F P G A原型验证阶段的软硬件验证环境快速搭建,通过交互式㊁软硬件协同的方式对M C U芯片各个模块功能进行实时㊁可靠的功能验证㊂高效的F P G A原型验证可以提高M C U研发速度㊁缩短验证时间㊁提高验证效率㊁及时发现芯片设计的缺陷㊁缩短芯片研发周期㊂关键词:F P G A原型;高性能M C U;芯片验证;F P G A验证中图分类号:T N492文献标识码:AR e s e a r c h a n d I m p l e m e n t a t i o n o f F P G A P r o t o t y p e V e r i f i c a t i o n S y s t e m f o r H i g h P e r f o r m a n c e M C UH e L o n g l o n g,Y a n g L i x i n,N i u B i n,L i J i n w a n g,Z h a n g Y a n x i n,L i M e n g(B e i j i n g S m a r t c h i p M i c r o e l e c t r o n i c s T e c h n o l o g y C o m p a n y L i m i t e d,B e i j i n g102200,C h i n a)A b s t r a c t:T h i s p a p e r s t u d i e s a n d i m p l e m e n t s a v e r i f i c a t i o n p l a t f o r m o f h i g h-p e r f o r m a n c e M C U b a s e d o n C o r t e x-A7c o r e i n F P G A p r o t o-t y p e s t a g e.T h e d e s i g n r e s e a r c h c a n q u i c k l y s e t u p t h e s o f t w a r e a n d h a r d w a r e v e r i f i c a t i o n e n v i r o n m e n t o f t h e h i g h-p e r f o r m a n c e M C U c h i p o r i t s F P G A p r o t o t y p e v e r i f i c a t i o n s t a g e,a n d p e r f o r m r e a l-t i m e a n d r e l i a b l e f u n c t i o n a l v e r i f i c a t i o n o f t h e f u n c t i o n s o f e a c h m o d u l e o f t h e M C U c h i p t h r o u g h i n t e r a c t i v e a n d s o f t w a r e-h a r d w a r e c o l l a b o r a t i o n.T h e e f f i c i e n t F P G A p r o t o t y p e v e r i f i c a t i o n c a n i m p r o v e M C U R&D, s h o r t e n v e r i f i c a t i o n t i m e,a n d i m p r o v e v e r i f i c a t i o n e f f i c i e n c y.I t c a n f i n d d e f e c t s i n c h i p d e s i g n i n t i m e a n d s h o r t e n t h e c h i p d e v e l o p m e n t c y c l e. K e y w o r d s:F P G A p r o t o t y p e;h i g h-p e r f o r m a n c e M C U;c h i p v e r i f i c a t i o n;F P G A v e r i f i c a t i o n0引言微控制单元(M i c r o c o n t r o l l e r U n i t,M C U)在嵌入式系统中占据核心位置㊂随着时代的发展,M C U正在从工业控制㊁汽车电子㊁家电行业过渡到智能行业及物联网行业,因此M C U将为嵌入式产品提供更高的性能㊁更多面化的功能㊂而M C U芯片的研发周期较长,在研发过程中,验证环节占的比重越来越大,对于高性能M C U来说更是如此,开发一种可以提高高性能M C U芯片在F P G A 阶段验证效率的验证平台,对于整个M C U芯片的研发具有极为重要的意义㊂1系统概述本文介绍了一套基于C o r t e x A7内核的高性能M C U在F P G A阶段的原型验证平台的设计和实现㊂该验证系统具有功能完善㊁可靠性高㊁易扩展㊁易移植等特点,可以提高M C U的验证效率,缩短芯片研发周期㊂通过移植后可以直接应用到芯片中,加快后期流片样品芯片的验证工作㊂以C o r t e x A7为核心的高性能M C U具有更强大的功能㊁更全面的外围设备接口㊁更高的总线速度㊁更大的存储空间,在特定的嵌入式应用和市场需求中具有强大的竞争力㊂本研究设计F P G A平台上所能实现的M C U模块包含U S B O T G2.0㊁E MA C㊁D D R㊁P WM㊁U A R T㊁T i m e r㊁R T C㊁N A N D㊁S P I㊁q S P I㊁WD T㊁G P I O㊁C R C㊁A E S㊁E C C㊁S H A㊁D MA㊂本设计的F P G A验证所使用的硬件由S2C 公司的S i n g l e E V7硬件板㊁U S B P H Y子板㊁GMA C P H Y 子板以及自研的通用接口子板组成㊂本F P G A原型验证的总体结构示意图如图1所示㊂2硬件环境搭建F PG A S i n g l e E V7L o g i c M o d u l e的主要架构如图2所示㊂该模块的I/O接口分为三种类型:D e d i c a t e d I/O㊁G T I/O㊁D D R3S O D I MM I/O㊂和本设计验证相关的I/O为D e d i c a t e d I/O和D D R3S O D I MM I/O㊂D e d i c a-t e d I/O通过S a m t e c120p i n C o n n e c t o r与各子板连接, D D R3S O D I MM I/O通过S O D I MM S o c k e t与内存条连接㊂图1 本F P G A原型验证总体结构示意图图2 S i n g l e E V 7L o gi c M o d u l e 通用架构3 软件架构设计与实现软件架构分为两部分,一部分为类B o o t R o m 的引导程序设计与实现,另一部分为测试程序t e s t c d l 的设计与实现㊂3.1 软件环境搭建基于C o r t e x A 7核的软件程序开发不能通过K e i l 软件实现,目前K e i l 所支持的芯片核不包括C o r t e x A 系列㊂本设计使用的软件环境为E c l i p s e ㊁g c c a r m ㊁C y g w i n 环境㊂E c l i p s e 为编程工具,g c c a r m 为编译器,C y gw i n环境具有在W i n d o w s 下使用g c c 进行编译的接口功能㊂将g c c a r m 和C y g w i n 安装后的目录配置到E c l i ps e 的B u l i d s o p t i o n 项的P A T H 中,在E c l i ps e 的t o o l c h a i n s 中选择C y gw i n G C C ,b u i l d e r 使用G n u M a k e B u i l d e r ㊂E c l i p s e 版本为官方网站的e c l i p s e c p p ma r s 2w i n 32x 86_64.z i p 或以上版本,另外E c l i ps e 需要J a v a 的支持,本设计使用的版本为j d k 12.0.1_w i n d o w s x 64_b i n .z i p ,安装完以上工具后Ec l i ps e 环境就搭建好了,但是需要对A r m C o r t e x A 7进行编译,所以还需要A R ME m b e d d e d 的工具链,本设计使用g c c a r m n o n e e a b i5_32016q 120160330w i n 32.z i p ,可以在官网上搜索下载,进行配置后使用㊂与工具配合的还需要C y gw i n 64,通过下载s e t u p x86_64.e x e 进行安装,并下载完整的p a c k a g e ,最后设置相关P A T H ㊂相关的P A T H 设置如图3所示㊂图3 软件环境P A T H 设置通过配置软件环境后,可以对C o d e 进行编译,完成编译后会生成对应的b i n 文件,完成环境搭建后的编译结果如图4所示㊂3.2 引导程序模块设计与实现本设计中的引导程序的作用与B o o t R o m 类似,用于初始化芯片时钟㊁堆栈㊁R AM 等操作,用于向验证程序t e s t c d l 跳转㊂本验证设计中引导程序的执行程序为0地址,验证程序使用的存储地址为0x 4600000㊂引导程序的流程图如图5所示㊂程序上电启动时先进行r a m ㊁s t a c k 等的初始化操作,关闭c a c h e 和MMU ,进行中断向量表的设置,关闭F I Q 和I R Q 中断,初始化O T P ㊁P L L ㊁WD T ㊁全局变量,最后程序跳转到t e s t c d l 中,运行t e s t c d l 的验证程序㊂本模块是为了体现高性能M C U 软硬件的完整性而图4软件环境配置成功后的结果图5 引导程序流程图设计的,如果只是为了验证也可以不要此引导程序,将该部分内容整合到t e s t c d l 的程序中㊂3.3 测试程序t e s t c d l 的架构设计与实现测试程序t e s t c d l 的主要功能是通过U a r t 2接收到测试指令进行指令分发,对应的子模块进行下一级菜单式的选择,最后通过模块特定的测试命令进行相应的功能测试,通过内部寄存器的状态位或者其他指示位的判断,程序通过打印验证结果信息,并返回上一级菜单㊂主程序框架图如图6所示㊂本测试程序软件引入程序模块化思想㊂将硬件驱动程序与测试程序c a s e 库分离,方便代码的移植和维护㊂在硬件驱动库及测试c a s e 代码中分别再次进行模块化处理,保证每一个I P 都有自己对应的软件模块㊂硬件驱动程序是硬件I P 的接口,测试程序c a s e 只有通过这个接口才能操作硬件动作,没有硬件驱动程序,硬件将无法工作㊂该部分程序可以封装库函数,可以A P I图6 主程序架构框图接口的形式提供给用户使用㊂测试程序c a s e 是基于驱动程序,针对各个模块的特定功能而开发的测试程序,对F P G A 设计中的各个模块进行功能和性能验证㊂该部分在实际使用时可以根据实际应用场景移植为应用程序㊂软件程序结构实际如图7所示㊂图7 软件程序结构实图由于F P G A 与实际电路存在区别,因此本验证系统在F P -G A 阶段验证的是数字模块,但一个良好的系统设计会在后期轻松加入模拟模块㊂本验证系统包含的数字模块包括U S BO T G 2.0㊁E MA C ㊁D D R ㊁P WM ㊁U A R T ㊁T i m e r ㊁R T C ㊁N A N D ㊁S P I ㊁q S P I ㊁WD T ㊁G P I O ㊁C R C ㊁A E S ㊁E C C ㊁S H A ㊁D MA ㊂各个模块的功能验证设计就不在本文论述了㊂通过此F P G A 验证系统的设计可以实现高性能M C U 的软硬件协同验证㊂高M C U 软硬件协同验证是在M C U 进行流片制造之前,验证嵌入式软件在硬件上是否正确运行㊁硬件是否能正常工作的一种过程㊂通过P C 进行测试程序的编写㊁编译,通过J l i n k 将编译后的程序下载到验证板的存储模块㊂C o r t e x A 7核读取并执行存储模块中的指令,控制各个模块的工作,验证人员此时可以对模块的设计是否符合要求进行判断㊂4 验证结果4.1 程序的编译下载建立正确的软件环境后,可以对所编写的验证代码和程序引导代码进行编译,并生成对应的b i n 文件㊂通过正确的J l i n k 连接后,J l i n k 可以在F P G A 检测到C o r t e x A 7核,并通过J T A G 接口与F P G A 建立连接㊂通过J l i n k 的l o a d b i n 命令将b i n 文件下载到对应的地址后,通过J l i n k 的 s e t p c 和 g命令使程序运行㊂J l i n k 的指令序列使用如下:"c o n n e c t ",e n t e r ,u n t i l l "C o r t e x A 7i d e n t i f i e d ."s h o w."l o a d b i n /b o o t _r o m _201115_4C D L .b i n 0"(f u l l pa t h )"l o a db i n /t e s t _cd l .b i n 4600000"(f u l l pa t h )"s e t pc 0""g"4.2 外设模块程序通过J l i n k 下载并执行后,程序正确运行后,会通过U a r t 2打印提示信息,由使用者通过U a r t 2进行各个模块的验证选择㊂通过串口查看程序正确运行的结果信息如图8所示㊂图8 通过串口查看程序正确运行的结果信息经验证,各个模块均能正常产生波形和数据,U S BO T G 2.0㊁E MA C ㊁D D R ㊁P WM ㊁U A R T ㊁T i m e r ㊁R T C ㊁N A N D ㊁S P I ㊁qS P I ㊁WD T ㊁G P I O ㊁C R C ㊁A E S ㊁E C C ㊁S H A ㊁D MA 这些模块I P 功能正常㊂通过串口的交互性输入及串口提示信息可以大大提高各个模块的验证效率㊂当出现错误或者指令参数出现问题后,能正常产生提示,功能验证通过后会有相应的s u c c e s s 提示,以WD T 为例的验证结果如图9所示㊂图9 W D T 为例的验证结果5 结 语针对传统的普通M C U 验证系统手段不易直接应用于高性能M C U 的验证,且验证方法繁琐㊁验证结果表现不明确㊁误差大,本研究提出并设计了基于C o r t e x A 7核的高性能M C U 在F P G A 阶段的原型验证系统的实现方法,以及该系统的编译调试方法㊂验证结果表明,采用本设计提出的编译调试方法容易对C o r t e x A 7核的芯片进行编程及下载,通过串口进行各个模块的命令式的输入,各模块验证的实现结果与预期相符,其验证的效率㊁验证结果的表达及精准度都有提高,最终实现了一套基于C o r t e x A 7核与F P G A 的高性能M C U 功能验证系统,具有一定的优势㊂参考文献[1]唐志敏.高端处理器芯片的技术趋势与可持续发展[J ].电子产品世界,2017,24(4):2729.[2]J a n i c k B e r g e r o n ,A n d r e w N i g h t i n ga l e .V e r i f i c a t i o n m e t h o d o l -o g y m a n u a l f o r s y s t e m v e r i l o g [M ].N e w Y o r k :S p r i n ge r S c i -e n c e +B u s i n e s s M e d i a I n c ,2006.[3]陈大科.一种采用F P G A 实现C o r t e x M 0I P 核验证的方法[J ].微电子学与计算机,2018,35(3):135139.[4]范学仕,刘云晶.一种M C U 可测性优化设计[J ].电子与封装,2018,18(8):2832.[5]王欣宇.M C U 技术及市场发展趋势分析[J ].集成电路应用,2019,36(10):13.贺龙龙(中级工程师),主要从事芯片集成电路的F P G A 验证和芯片样品验证系统的设计与实现㊂(责任编辑:薛士然 收稿日期:2020-09-28)意法半导体携手微软利用S T M 32C u b e 生态系统推进智能物联网设备开发意法半导体(S TM i c r o e l e c t r o n i c s ,简称S T )与微软签署促进智能家电控制器和物联网设备(I o T )开发的合作协议㊂使用S TM 32微控制器(M C U )的开发人员现在可以利用M i c r o s o f t A z u r e R T O S (实时操作系统)提供的即用型服务来管理应用程序㊂S TM 32C u b e 开发生态系统整合开发工具和软件,全程支持客户项目开发,完全支持M i c r o s o f t A z u r e R T O S ,实现无缝连接㊂在包括产品原型和量产商品在内的S TM 32微控制器上,合法部署的M i c r o s o f t A z u r e R T O S 映像免许可使用费㊂意法半导体微控制器事业部副总裁R i c a r d o d e S a E a r p 表示:S TM 32和A z u r e R T O S 这次合作是强强联合,可以让客户更好地释放创造力㊂有了我们的解决方案,客户在将高性能㊁功能丰富㊁可靠㊁安全的富有想象力的新型物联网产品推向市场时会比以往任何时候都更轻松㊁更快速㊂微软A z u r e I o T 业务集团副总裁S a m G e o r ge 表示: 将A z u r e R T O S 整合为智能互联设备设计人员的首选平台是我们的使命,作为M C U 市场的全球领导者,S T 是我们达成这一使命的重要合作伙伴㊂此外,用户可以通过S TM 32C u b e 开发工具访问与我们的A z u r e I o T 平台无缝集成的A z u r e R T O S ,这为I o T 端点和边缘设备上云变得更简单㊁便利㊂ 资源丰富的S TM 32C u b e 生态系统为用户提供免费的开发工具㊁软件模块和软件扩展包,可以处理从选择合适的设备㊁初始化项目,到代码编写㊁烧录㊁测试以及按需缩放和移植设计的所有开发工作㊂作为一个好评最多的M C U 开发生态系统,S TM 32C u b e 结合丰富的产品组合,是S TM 32M C U 产品家族成功的关键㊂目前S TM 32产品家族已有1000余款产品,涵盖各种处理性能㊁集成功能和封装尺寸㊂S TM 32C u b e 生态系统还具有各种嵌入式软件库,以及100多个由S T 和合作伙伴开发的软件包㊂现在A z u r eR T O S 的加入将进一步加快最终应用的开发速度㊂意法半导体和微软之间的合作使客户可以利用A z u r e R T O S 的丰富服务,满足轻巧的智能互联网设备的开发需求㊂双方合作包括内存占用空间很小的适合深度嵌入式应用的A z u r e R T O S T h r e a d X 实时操作系统,还包括F i l e X F A T 文件系统㊁N e t X 和N e t X D u o T C P /I P 网络协议栈以及U S B X U S B 协议栈㊂。
FPGA简介

IDEA Confidential
11
FPGA的优势
稳定性
软件工具提供了编程环境,FPGA电路是真正的编程“硬”执行过 程。 基于处理器的系统往往包含了多个抽象层,可在多个进程之间 计划任务、共享资源。 驱动层控制着硬件资源,而操作系统管理内 存和处理器的带宽。 对于任何给定的处理器内核,一次只能执行一 个指令,且基于处理器的系统时刻面临着严格限时的任务相互取占 的风险。 而FPGA不使用操作系统,拥有真正的并行执行和专注于 每一项任务的确定性硬件,可减少稳定性方面出现问题的可能。
IDEA Confidential
24
FPGA开发流程
配置下载 通过编程器(programmer)将布局布线后的配置文件下载至FPGA中, 对其硬件进行编程。配置文件一般为.pof或.sof文件格 式,下载方式包 括Active Serial Programming(主动)、Passive Serial(被动)、 JTAG等方式。
IDEA Confidential
16
FPGA开发流程
RTL级HDL描述
设计方法:自下而上与自上而下两种方式。 自下而上:由最底层的元器件开始,从基本子系统去构建大系统的 电路设计模式是我们最初进行电路设计的一种基本方法。这种由底向 上的设计方式是电子线路初期频频采用的方法,在电路不太复杂、层 次比较简单的设计中,它是一种非常行之有效的方法。但随着电路越 来越复杂,这种方法则会存在着较大的弊病。这就是,纵然每个子系 统的设计分别满足各自的要求,系统的整体性能指标却往往得不到保 障。
20
FPGA开发流程
综合
将RTL级HDL语言翻译成由与、或、非门等基本逻辑单元组成的门级 连接(网表),并根据设计目标与要求(约束条件)优化所生成的逻 辑连接,输出门级网表文件。
FPGA资源占用分析(重要)

目前主流的 FPGA 仍是基于查找表技术的,已经远远超出了先前版本的基本性能, 并且整合了常用功能(如 RAM、时钟管理 和 DSP)的硬核(ASIC 型)模块。如 图 1-1 所示(注:图 1-1 只是一个示意图,实际上每一个系列的 FPGA 都有其相 应的内部结构),FPGA 芯片主 要由 6 部分完成,分别为:可编程输入输出单元、 基本可编程逻辑单元、完整的时钟管理、嵌入块式 RAM、丰富的布线资源、内嵌 的底层功能单元和内嵌专用硬件 模块。
查找表(Look-Up-Table)简称为 LUT,LUT 本质上就是一个 RAM。目前 FPGA 中 多使用 4 输入的 LUT,所以每一个 LUT 可以看成一个有 4 位地址线的 的 RAM。当 用户通过原理图或 HDL 语言描述了一个逻辑电路以后,PLD/FPGA 开发软件会自 动计算逻辑电路的所有可能结果,并把真值表(即结果)事先写入 RAM,这样, 每输入一个信号进行逻辑运算就等于输入一个地址进行查表,找出地址对应的内 容,然后输出即可。
如前所述,FPGA 是由存放在片内的 RAM 来设置其工作状态的,因此工作时需要 对片内 RAM 进行编程。用户可根据不同的配置模式,采用不同的编程方式。FPGA 有如下几种配置模式:
并行模式:并行 PROM、Flash 配置 FPGA; 主从模式:一片 PROM 配置多片 FPGA; 串行模式:串行 PROM 配置 FPGA; 外设模式:将 FPGA 作为微处理器的外设,由微处理器对其编程。
2. 可配置逻辑块(CLB)
CLB 是 FPGA 内的基本逻辑单元。CLB 的实际数量和特性会依器件的不同而不同, 但是每个 CLB 都包含一个可配置开关矩阵,此矩阵由 4 或 6 个输入、一些 选型 电路(多路复用器等)和触发器组成。 开关矩阵是高度灵活的,可以对其进行 配置以便处理组合逻辑、移位寄存器或 RAM。在 Xilinx 公司的 FPGA 器件中,CLB 由多个(一般为 4 个或 2 个) 相同的 Slice 和附加逻辑构成,如图 1-3 所示。 每个 CLB 模块不仅可以用于实现组合逻辑、时序逻辑,还可以配置为分布式 RAM 和分布式 ROM。
《基于深度学习的交通标志识别方法及FPGA验证》范文

《基于深度学习的交通标志识别方法及FPGA验证》篇一一、引言随着人工智能技术的快速发展,深度学习在交通标志识别领域的应用逐渐受到广泛关注。
交通标志识别是智能交通系统的重要组成部分,对于提高道路安全、辅助驾驶和自动驾驶技术具有重要意义。
本文提出了一种基于深度学习的交通标志识别方法,并利用FPGA(现场可编程门阵列)进行验证。
二、交通标志识别的重要性交通标志是道路交通设施的重要组成部分,它们为驾驶员提供了重要的道路信息和交通规则。
然而,由于道路环境的复杂性和多变性,传统的交通标志识别方法往往难以满足实际需求。
因此,研究基于深度学习的交通标志识别方法具有重要意义。
三、基于深度学习的交通标志识别方法1. 数据集准备:首先,需要准备一个包含各种交通标志的图像数据集。
数据集应包括不同类型、不同大小、不同背景和不同光照条件下的交通标志图像。
2. 模型选择与训练:选择合适的深度学习模型进行训练。
常用的模型包括卷积神经网络(CNN)、循环神经网络(RNN)等。
通过大量数据集的迭代训练,使模型能够学习到交通标志的特征和规律。
3. 特征提取与分类:在模型训练完成后,可以利用模型的输出进行特征提取和分类。
通过提取交通标志的形状、颜色、纹理等特征,实现交通标志的准确识别和分类。
四、FPGA验证1. 硬件平台设计:为了实现基于FPGA的交通标志识别系统,需要设计相应的硬件平台。
包括FPGA芯片、图像传感器、存储器等组件的选型和连接。
2. 软件算法实现:在硬件平台的基础上,需要编写相应的软件算法实现交通标志识别的功能。
利用高级编程语言(如C/C++)对深度学习模型进行优化和加速,使其能够在FPGA上高效运行。
3. 验证与测试:通过实际道路环境的测试,验证基于FPGA 的交通标志识别系统的性能和准确性。
比较系统在不同光照、不同背景和不同速度下的识别效果,评估系统的实时性和鲁棒性。
五、实验结果与分析通过实验验证了本文提出的基于深度学习的交通标志识别方法及FPGA验证的可行性。
SRAM型FPGA SEU缓解与验证技术分析

SRAM型FPGASEU缓解与验证技术分析郑㊀丹ꎬ胡胜旺ꎬ封㊀亮ꎬ崔红军(中国电子科技集团公司第三十二研究所测评中心ꎬ上海201808)摘㊀要:SRAM型FPGA产品在空间应用中易受单粒子翻转(SEU)影响而产生系统失效ꎮ分析了FPGA器件SEU的故障模式ꎬ并结合工程实践对三模冗余(TMR)技术㊁纠错编码(EDAC)技术㊁配置刷新技术三类FPGA单粒子效应缓解措施和基于故障注入的验证手段进行了研究和比较分析ꎬ阐述了不同技术的适用范围和优缺点ꎬ给从事空间应用系统的设计和测试人员提供参考ꎮ关键词:FPGAꎻ单粒子翻转ꎻ验证中图分类号:TP303㊀㊀㊀㊀㊀㊀文献标识码:A㊀㊀㊀㊀㊀㊀DOI:10.19358/j.issn.2096 ̄5133.2019.09.001引用格式:郑丹ꎬ胡胜旺ꎬ封亮ꎬ等.SRAM型FPGASEU缓解与验证技术分析[J].信息技术与网络安全ꎬ2019ꎬ38(9):1 ̄4ꎬ13.AnalysisofSRAM ̄basedFPGASEUmitigationandverificationtechnologyZhengDanꎬHuShengwangꎬFengLiangꎬCuiHongjun(The32rdResearchInstituteofChinaElectronicsTechnologyGroupCorporationꎬShanghai201808ꎬChina)Abstract:SRAM ̄basedFieldProgrammableGateArray(FPGA)productsarevulnerabletosingleeventupset(SEU)inspaceapplica ̄tionsꎬresultinginsystemfailure.ThispaperanalyzesthefailuremodeofSEUbasedonFPGAdevice.Combinedwithengineeringprac ̄ticeꎬthreekindsofFPGASEUmitigationmeasuresandfaultinjectionverificationmethodsarestudiedandcomparedforTripleModularRedundancy(TMR)technologyꎬErrorDetectingAndCorrecting(EDAC)technologyandconfigurationrefreshtechnology.Theapplica ̄tionscopeꎬadvantagesanddisadvantagesofthesedifferenttechnologiesarepresentedꎬprovidingreferencefordesignandtestpersonnelengagedinspaceapplicationsystem.Keywords:FPGAꎻSEUꎻverification0㊀引言现场可编程逻辑门阵列(FieldProgrammableGateArrayꎬFPGA)由于其灵活性和高计算能力ꎬ在嵌入式㊁网络㊁信息系统等领域中得到了广泛的应用ꎮ在航空航天应用中ꎬ传统上人们更倾向于使用对辐射高耐受性的反熔丝型FPGAꎮ近年来ꎬ由于低成本㊁高性能和飞行中的可重构性ꎬ基于静态随机存取存储器(StaticRandom ̄AccessMemoryꎬSRAM)的FPGA在空间嵌入式系统中的应用越来越受到关注ꎮ然而ꎬSRAM型FPGA由于其定义用户电路的配置存储区易受单粒子翻转效应(SingleEventUpsetꎬSEU)的影响ꎬ对辐射特别敏感ꎬ易引起系统失效ꎮ根据对商用飞机的问题统计ꎬ有20%的 不可重现 问题来源于SEU导致的软错误ꎮ2011年ꎬ美国联邦航空局DO ̄254认证文档第6节ꎬ明确要求在验证和确认阶段ꎬ能够验证目标系统SEU缓解对策的有效性[1]ꎮ2014年ꎬ波音等航电设备厂商ꎬ专门发布了针对SEU的航电设备安全性认证报告ꎮ美国联邦航空局(FederalAviationAdministra ̄tionꎬFAA)㊁欧洲航空安全局(EuropeanAviationSafetyAgencyꎬEASA)等监管机构也已经开始将单粒子防护设计和评价要求纳入工程化标准或适航要求ꎮ国内针对抗SEU设计需求分析和验证要求写入了国标㊁国军标规范:2017年5月31日发布的GB/T33781«可编程逻辑器件软件开发通用要求»ꎬ2018年8月1日发布的GJB9432«军用可编程逻辑器件软件开发通用要求»在需求分析阶段指出需针对抗状态翻转开展必要和可行性分析ꎬ并明确抗状态翻转技术方法ꎮ同期发布的GB/T33783«可编程逻辑器件软件测试指南»㊁GJB9433«军用可编程逻辑器件软件测试要求»在安全性测试中也明确要求 测试抗状态翻转措施的有效性 ꎮ本文基于SRAM型FPGA对三模冗余技术㊁纠错编码技术㊁配置刷新技术三类SEU缓解技术进行深入研究和分析ꎬ并从仿真验证与故障注入两种验证方法展开探讨ꎮ1㊀三模冗余技术三模冗余防护方法(TripleModularRedundan ̄cyꎬTMR)由于有工具支持㊁使用方便ꎬ因此是较常用的SEU缓解技术ꎮTMR建立硬件冗余结构ꎬ对关键电路复制三份ꎬ通过对三路输出结果表决来屏蔽任何一路的SEU故障ꎮFPGA厂商Xilinx推出RTL级的TMR设计工具TMRTool帮助实现基于综合后网表的三模冗余加固ꎮ目前国内可购买的TMRTool最高版本为9.2iꎬ支持XilinxV1~V5系列ꎬ适配ISE9.2及其之前的版本ꎮ此外ꎬ更简单经济的方式是使用带TMR功能的第三方综合工具ꎮ例如Men ̄torGraphics的综合工具PrecisionHi ̄Rel提供三模冗余功能ꎬ支持用户电路TMR插入ꎬ需做抗SEU加固设计的FPGA设计可通过关联第三方综合器实现TMRꎮLibero开发环境中适配Synopsys公司的Syn ̄plify/SynplifyPro综合器支持在模块或寄存器声明后添加三模冗余属性设置 /∗synthesissyn_radhardlevel="tmr"∗/ ꎬ完成模块级或寄存器级的三模冗余电路设计ꎮ考虑到资源开销ꎬ目前常用的三模冗余方式只对时序电路复制三份ꎬ三模前后对比如图1所示ꎬ图(b)中PS0_1㊁PS0_1_tmr2㊁PS0_1_tmr3为在图(a)基础上复制的三份电路ꎬPS0_1_maj为表决电路ꎮTMR对SEU引起的功能错误缓解效果较好ꎬ但逻辑资源开销较大ꎬ且三模冗余的引入对时序会造成一定影响ꎬ一般对关键寄存器或者关键模块进行三模冗余ꎮ对于空间应用领域使用较多的Xilinx器件ꎬ可通过厂商提供的TMRTool进行基于综合后网表的TMRꎬ结合刷新技术可防止SEU错误累积ꎻ对于Actel器件ꎬ可在RTL源码中添加TMR属性设定ꎬ实现综合后网表的三模冗余ꎬ后者在灵活性上更胜一筹ꎮ文献[2]分别基于Xilinx和Actel器件的TMR实现效果进行分析比较ꎮ2㊀纠错编码技术通过TMR加固的FPGA系统发生SEU后ꎬ关键电路的错误状态可能暂时不会传入下一级ꎬ但在系统长时间运行条件下ꎬ错误状态可能进行累积从而图1㊀基于时序逻辑TMR三模前后对比导致系统失效ꎮ引入纠错编码技术(ErrorDetectingAndCorrectingꎬEDAC)可对各模块关键信号实时监测ꎬ并将检测到的错误信号及时纠正ꎬ防止了空间辐照对系统的影响ꎮ具有单比特错误纠正㊁双比特错误检测(SingleErrorCorrection ̄DoubleErrorDe ̄tectionꎬSEC ̄DED)功能的汉明码EDAC技术已被证明是保护内部配置存储器和其他外部易失性存储器的有效方法ꎮ目前ꎬ用于加固的EDAC电路多通过线性分组码实现ꎬ在编码过程中生成待编码信息数据的校验位ꎬ校验位与数据一同存储ꎬ利用译码过程与编码过程中产生校验位的异或结果对错误进行纠正ꎮ从资源占用和性能考虑ꎬ相比于TMRꎬEDAC更适合防护RAM器件ꎬ纠错编码技术与TMR均属于用户电路加固技术[3]ꎮ文献[4]提出了TMR与EDAC相结合的技术ꎬ可纠正双比特错误ꎮ3㊀配置刷新技术针对SEU的SRAM型FPGA故障模式如图2所示:BRAM翻转故障将改变用户数据ꎬ可通过EDAC校验检测ꎻ组合逻辑故障㊁时序逻辑故障㊁互连关系故障将改变电路逻辑结果ꎬ可通过TMR方式缓解用户数据故障ꎮ但由于组合/时序逻辑及其内连关系由配置编程点决定ꎬ一旦配置区受SEU影响ꎬ直到原始配置位流重新载入到FPGA中用户数据才能恢复ꎮ且配置存储容量占FPGA存储资源的85%以上ꎬ因此需要结合配置刷新技术防止配置存储区的SEU效应ꎮ图2㊀SRAM型FPGA故障模式配置刷新是指系统配置成功后ꎬ按预定时间间隔或帧校验结果ꎬ将配置区数据重写入FPGAꎬ以消除已有SEU错误积累的方法ꎬ刷新的对象为FPGA内部CLB配置ꎮ配置刷新的基本流程为:回读数据帧 ̄>与原始帧数据比对 ̄>校正帧中的错误位 ̄>写回数据帧至FPGAꎬ如图3所示ꎮ图3㊀配置刷新流程㊀㊀配置刷新依赖于外部刷新或内部刷新电路ꎮ以Xilinx器件为例ꎬJTAG接口㊁SelectMAP接口为外部刷新ꎬ需要外部刷新电路通过FPGA外部引脚进行读写[5]ꎮ(1)使用JTAG接口占用外部引脚少ꎬ且具有其他配置接口中的最高优先级ꎬ甚至可以中断正在运行的重新配置过程ꎮ该接口以串行模式传输ꎬ最大速率为24Mb/sꎬ相对读取配置数据时间长ꎮ(2)SelectMAP为并行接口ꎬ读取配置数据时间短ꎬ占用FPGA外部引脚较多ꎬ对于高输出引脚利用率的应用是个缺点ꎮ(3)ICAP接口为内部刷新接口ꎬ使用内部刷新方式无需占用FPGA外部接口ꎬ读写配置寄存器时间短ꎬ配置速率可达3.2Gb/sꎮ目前ꎬ空间应用系统中常用的XilinxV2~V5系列器件多采用SelectMAP方式ꎬV7系列器件采用ICAP方式进行配置刷新ꎮ根据刷新方式不同ꎬ可分为全局复位刷新㊁盲刷新㊁配置回读刷新ꎬ其刷新过程和优缺点分析如表1所示ꎮ表1㊀配置刷新方式及优缺点刷新方式过程优点缺点外部刷新全局复位刷新定期拉低FPGA的复位管脚进行复位ꎬ实现上电重配置实现简单无纠错功能ꎬ且FPGA功能中断盲刷新/周期刷新从外部存储器读取原始数据 ̄>将数据按帧写入配置区 ̄>配置控制器执行配置刷新FPGA功能不受影响ꎬ控制逻辑简单需要外部存储区ꎬ不进行检测纠错ꎬ写入操作多ꎬ在写入过程中发生故障概率大配置回读刷新JTAG/SelectMAP顺序读取帧数据 ̄>执行CRC校验结果比对或直接比对 ̄>写回纠错后数据FPGA功能不受影响ꎬ发生出错时仅对单帧刷新纠错ꎬ写操作时间较短比盲刷新实现方式复杂ꎬ需要外部存储区内部刷新配置回读刷新ICAP通过ICAP接口回读帧数据 ̄>利用ECC算法检测错误 ̄>帧纠错 ̄>通过ICAP接口写回纠错后数据FPGA功能不受影响ꎬ无需外部存储器㊁配置控制器ꎬ不受外部引脚约束ꎬ读写配置寄存器时间较短内部刷新电路占用一定空间ꎬ依赖于刷新电路的稳定性4 验证技术验证SRAM型FPGA设计抗翻转措施有效性的手段通常包括辐射实验和故障注入ꎮ辐射实验成本高ꎬ实验周期长ꎬ目前国内能做模拟单粒子轰击的实验室不多ꎬ且辐射实验对发现问题难以定位故障点ꎮ故障注入方式具有周期短㊁成本低㊁可测试性高等优点ꎬ是评估SEU缓解措施有效性的一种重要手段ꎮ4.1㊀仿真环境下故障注入针对加固设计(如TMR)的仿真验证手段可通过门级仿真实现ꎬ门级仿真能够发现三模冗余失效㊁异常情况下状态机死锁㊁特殊用途寄存器被优化等问题ꎮ在针对综合后网表的门级仿真环境下模拟单比特或多比特翻转ꎬ能验证冗余设计的有效性ꎮ例如模拟关键模块的状态机寄存器出现单粒子翻转故障ꎬ通过仿真命令(如force)修改某一时刻的状态寄存器进入无效状态ꎬ查看仿真波形确定状态机是否能回到有效的状态ꎬ之后的状态机迁移是否正确ꎬ没有出现死锁ꎮ针对配置刷新的SEU缓解设计通常包括一个外部存储器存放原始配置位流ꎬ可参照图4的仿真测试验证框架对其进行验证ꎬ对加载控制㊁回读判定㊁刷新功能进行验证ꎬ仿真测试还能测试接口时序㊁重载时间㊁回读周期和刷新周期等ꎮ图中PROM仿真模型能模拟外部存储器(存放原始配置位流)的接口时序ꎮ配置区仿真模型存储配置数据ꎬ模拟selectMAP接口时序与被测件(DeviceUnderTestꎬDUT)交互ꎮ上电复位后ꎬDUT应能从PROM中读出配置数据实现加载过程ꎻ拉低PROG信号ꎬDUT应能从PROM中读出配置数据实现配置重载ꎮ图4㊀仿真测试验证框架FPGA特有的配置电路加载过程包括上电过程(设备上电㊁清配置区等)㊁配置位流加载过程(同步㊁设备ID检测㊁加载配置数据㊁CRC检测等)㊁启动过程ꎮ针对配置回读检测刷新设计的验证流程包括去除同步位㊁写回读指令㊁读取配置区位流和外部存储区原始配置位流㊁数据比较[6]ꎮ测试人员应关注回读配置数据与PROM数据一致时ꎬDUT是否不会重载ꎻ设置配置数据出现SEU错误ꎬ查看被测设计是否能检测到单比特或者多比特翻转ꎬ并在检测失败后能够控制接口时序进行PROM原始配置数据重载ꎮ4.2㊀配置存储器故障注入试验证工具XRTCFaultInjectorꎬ这也是当前业界使用的功能最齐全㊁最具代表性的FPGA故障注入测试系统ꎬ每分钟能自动测试1000+配置编程点ꎮ欧空局支持开发的FLIPPER工具能评估基于XilinxSRAM型FPGA的SEU和MBU(MultiBitsUpset)效应ꎮ此外ꎬ通过FLIPPER工具收集导致功能故障所需的配置存储器中随机注入故障概率分布ꎬ有助于定义配置刷新率ꎮ文献[7]中对FLIPPER与静态分析工具STAR进行实验对比ꎬ并提出可通过STAR工具产生用于故障注入的点ꎬ结合FLIPPER进行故障注入ꎬ评估加载用户应用的SRAM型FPGA设计SEU缓解措施是否有效ꎮ配置存储器故障注入已被广泛用于空间应用系统的失效率统计ꎬ以及加固设计的有效性评估上[8]ꎮ这类故障注入系统通常由三部分组成:用于控制故障注入过程的控制板(基于FPGA)㊁测试板(DUT)㊁用于在线调试的PCꎮ配置存储器故障注入流程如图5所示ꎮ图5㊀故障注入流程图配置存储器故障注入系统具有测试速度快㊁统计效率高等特点ꎬ但由于需要搭建额外电路结构ꎬ更适合于研制单位测试产品抗SEU特性ꎮ5㊀结论本文对针对易受软错误影响的SRAM型FPGA进行深入研究分析ꎬ阐述了三模冗余㊁纠错编码㊁配置刷新三种主流软错误缓解措施的原理和方法ꎬ以及基于故障注入的验证手段ꎮ随着FPGA在空间系统的广泛应用ꎬFPGA软件针对软错误缓解措施的技术和验证方法亟需加强ꎮ参考国内外研究现状ꎬ结合FPGA软件研制工作的实际特点ꎬ选择合理的加固或刷新手段ꎬ对于切实提高空间应用FPGA软件研制质量具有重要意义ꎮ参考文献[1]RTCA.DesignassuranceguidanceforairborneelectronichardwareꎬDO ̄254[S].WashingtonDC:RTCAIncꎬ2000.(下转第13页)dedSystems(SIES).IEEEꎬ2017[41]YITꎬZONGAꎬYUMꎬetal.Anti ̄debuggingframeworkbasedonhardwarevirtualizationtechnology[C].Interna ̄tionalConferenceonResearchChallengesinComputerScience.IEEEComputerSocietyꎬ2009.[42]QIZꎬLIBꎬLINQꎬetal.SPAD:softwareprotectionthroughanti ̄debuggingusinghardware ̄assistedvirtualiza ̄tion[J].JournalofInformationScienceandEngineeringꎬ2012ꎬ28(5):813 ̄827.[43]TANGZꎬLIMꎬYEGꎬetal.VMGuards:anovelvirtualmachinebasedcodeprotectionsystemwithVMsecurityasthefirstclassdesignconcern[J].AppliedSciencesꎬ2018ꎬ8(5):771.(收稿日期:2019 ̄06 ̄29)作者简介:吴极(1998-)ꎬ男ꎬ本科ꎬ主要研究方向:信息安全ꎮ王逍(1973-)ꎬ通信作者ꎬ男ꎬ硕士ꎬ讲师ꎬ主要研究方向:信息安全㊁网络安全ꎮE ̄mail:136868000@qq.comꎮ肖植灿(1997-)ꎬ男ꎬ本科ꎬ主要研究方向:信息安全ꎮ(上接第4页)[2]陈金秀ꎬ董超ꎬ王有政.空间FPGA系统的三模冗余设计[A].中国通信学会卫星通信委员会.第九届卫星通信学术年会论文集[C].中国通信学会卫星通信委员会:中国通信学会ꎬ2013:8.[3]李巍ꎬ刘栋斌.空间辐照环境下的FPGA可靠性设计技术[J].单片机与嵌入式系统应用ꎬ2011ꎬ11(10):12 ̄14. [4]于善鹏ꎬ占丰ꎬ姜连祥.基于FPGA的高可靠EDAC系统设计[J].质量与可靠性ꎬ2019(02):29 ̄33. [5]兰风宇.XilinxVirtex ̄7FPGA软错误减缓技术研究[D].哈尔滨:哈尔滨工业大学ꎬ2016. [6]祝周荣ꎬ姜丽梅ꎬ刘国斌ꎬ等.抗SEU动态刷新FPGA的仿真验证技术研究[J].数字技术与应用ꎬ2018ꎬ36(2):40 ̄42.[7]ALDERIGHIMꎬCASINIFꎬDᶄANGELOSꎬetalꎬSofterrorsinSRAM ̄FPGAs:acomparisonoftwocomplementaryap ̄proaches[P].9thEuropeanConferenceonRadiationandItsEffectsonComponentsandSystemsꎬRADECS2007ꎬ2007.[8]王忠明.SRAM型FPGA的单粒子效应评估技术研究[D].北京:清华大学ꎬ2011.(收稿日期:2019 ̄06 ̄14)作者简介:郑丹(1985-)ꎬ通信作者ꎬ女ꎬ硕士ꎬ高级工程师ꎬ主要研究方向:嵌入式软件与FPGA测试技术㊁FPGA设计验证体系ꎮE ̄mail:315054090@qq.comꎮ胡胜旺(1978-)ꎬ男ꎬ硕士ꎬ高级工程师ꎬ主要研究方向:嵌入式软件测试技术㊁FPGA设计验证体系ꎮ封亮(1977-)ꎬ男ꎬ学士ꎬ高级工程师ꎬ主要研究方向:软件测试方法与技术㊁软件测试项目管理ꎮ。
FPGA核心知识详解(3):那些让FPGA初学者纠结的仿真

FPGA核心知识详解(3):那些让FPGA初学者纠结的仿真核心提示:对于FPGA初学者而言,如何正确了解并理解FPGA的仿真是关键。
应广大FPGA初学者和爱好者要求,编辑根据多名在FPGA领域有过多年工作经验的前辈介绍,特此为大家整理并分享以下关于FPGA各种仿真的简洁介绍。
若大家有任何需要补充的或本文有任何不当之处,欢迎在评论中加以说明。
同时也可加入FPGA技术交流群(QQ:263281510)跟大家一起探讨,更欢迎大家加入论坛参与互动。
初学者学习FPGA,必定会被它的各种仿真弄的晕头转向。
比如,前仿真、后仿真、功能仿真、时序仿真、行为级仿真、RTL级仿真、综合后仿真、门级仿真、布局布线后仿真等。
Quartus和Modelsim软件的仿真形式Quartus II有两种仿真形式:1、功能仿真;2、时序仿真。
Quartus II调用Modelsim的两种仿真形式为:1、RTL级仿真;2、Gate-level仿真。
以下内容均经过资料查证,详细如下:理解方法一当用quartus进行仿真时,分为功能仿真(al)和时序仿真(TIming);当用Modelsim-Altera时,分为功能仿真(RTL)、综合后仿真(post-synthesis)和布局布线仿真(Gate-level)。
其中,功能仿真又称为前仿真,布局布线仿真又称为后仿真。
注:此处的功能仿真(RTL)与1中的功能仿真(al)是不一样的,前者是HDL级仿真,后者是门级网表的功能仿真。
(1)当在quartus中调用Modelsim-Altera进行RTL仿真时(前提是在第三方仿真工具中选择Modelsim-Altera),步骤如下:a)编写源文件和测试文件;b)Assignment-》setTIng-》simulaTIon-》不选中run gate leve simulaTIon.。
..。
,选中nativelink-》添加测试文件,填写文件名;c)start analysiselabration;。
FPGA入门教程_ALTERA_Quartus_II__和_XILINX___ISE_CPLD入门教程_教案_VHDL_Verilog_例程讲解

2011-8
FPGA介绍
何为FPGA?
FPGA(Field-Programmable Gate Array),即现 场可编程门阵列,它是在PAL、GAL、CPLD等可编 程器件的基础上进一步发展的产物。它是作为专用 集成电路(ASIC)领域中的一种半定制电路而出现 的,既解决了定制电路的不足,又克服了原有可编 程器件门电路数有限的缺点
Verilog HDL 的抽象级别
语言本身提供了各种层次抽象的表述,可以用详细 程度有很大差别的的多层次模块组合来描述一个 电路系统。 行为级:技术指标和算法的Verilog描述 RTL关级:具体的晶体管物理器件的描述
Verilog HDL 的抽象级别
设计复杂数字系统的工具 和手段
两种硬件描述语言 : Verilog VHDL
有哪几种硬件描述语言? 各有什么特点?
Verilog HDL - 较多的第三方工具的支持 - 语法结构比VHDL简单 - 学习起来比VHDL容易 - 仿真工具比较好使 - 测试激励模块容易编写
Verilog HDL 的发展历史
两者建模能力的比较
行为级 的抽象
系统级
SystemVerilo g
算法级
VHDL Verilog
寄存器传输级
逻辑门级 VITAL
开关电路级
VerilogHDL 与 VHDL 建 模 能 力 的 比 较
Verilog HDL有什么用处?
在各种抽象层次上描述数字电路
测试各种层次数字电路的行为 设计出正确有效的复杂电路结构
数字信号处理系统的实现
非实时系统: 通用的计算机和利用通用计算机改装的设备,主要 工作量是编写 “C” 程序。输入/输出数据大多为文 本 。 实时系统: 信号处理专用的微处理器为核心的设备,主要工作 量是编写汇编程序。输入/输出数据大多为数据流, 直接用于控制 。
EDA技术及应用—Verilog HDL版(第三版) (1)

第2章 大规模可编程逻辑器件
(4) 封装代码。如Altera公司的EPM7128SLC84中的LC, 表示采用PLCC封装(Plastic Leaded Chip Carrier,塑料方形扁 平封装)。PLD封装除PLCC外,还有BGA(Ball Grid Array, 球形网状阵列)、C/JLCC(Ceramic /J-Leaded Chip Carrier,)、 C/M/P/TQFP(Ceramic/Metal/Plastic/Thin Quard Flat Package)、 PDIP/DIP(Plastic Double In line Package)、PGA(Ceramic Pin Grid Array)等,多以其缩写来描述,但要注意各公司稍有差 别,如PLCC,Altera公司用LC描述,Xilinx公司用PC描述, Lattice公司用J来描述。
第2章 大规模可编程逻辑器件
2.1.1 PLD的发展进程
最早的可编程逻辑器件出现在20世纪70年代初,主要是 可编程只读存储器(PROM)和可编程逻辑阵列(PLA)。20世 纪70年代末出现了可编程阵列逻辑(Programmable Array Logic,简称PAL)器件。20世纪80年代初期,美国Lattice公 司推出了一种新型的PLD器件,称为通用阵列逻辑(Generic Array Logic,简称GAL),一般认为它是第二代PLD器件。 随着技术进步,生产工艺不断改进,器件规模不断扩大,逻 辑功能不断增强,各种可编程逻辑器件如雨后春笋般涌现, 如PROM、EPROM、EEPROM等。
第2章 大规模可编程逻辑器件
采用ISP技术之后,硬件设计可以变得像软件设计那样灵活 而易于修改,硬件的功能也可以实时地加以更新或按预定的 程序改变配置。这不仅扩展了器件的用途,缩短了系统的设 计和调试周期,而且还省去了对器件单独编程的环节,因而 也省去了器件编程设备,简化了目标系统的现场升级和维护 工作。