陈 鑫,施聿哲,白雨鑫,陈 凯,张智维,张 颖
(南京航空航天大学电子信息工程学院,南京 210016)
随着半导体工艺的不断发展,器件特征尺寸逐渐减少,激发单粒子翻转(Single Event Upset,SEU)效应所需的能量阈值呈几何级下降趋势。例如,65 nm工艺下器件发生电平翻转需6500个电荷,16 nm工艺下器件电平翻转仅需1000个电荷[1-2]。虽然电平错误翻转引发的软错误不会对电路造成永久性的破坏,但是由于发生的能量阈值较低,所以在所有单粒子效应造成集成电路工作失效的事件中,电平错误翻转效应引起的事件占有比例最高,为40%[3-4]。由此可见,软错误已经成为先进工艺下大规模数字集成电路在辐射环境中最为主要的失效模式,这极大地限制了集成电路在一些可靠性较高的领域尤其是富含高通量低能粒子的航天航空场景中的应用。为促进航空航天事业的快速发展,需要对集成电路功能软错误的敏感性进行充分的研究和评估。
在所有的评估手段中,空间环境实测的方式获得的数据最为准确,但航天器的发射次数和载荷都是有限的,实验机会少且价格昂贵。因此,更多的评估手段被开发出来,主要有辐照测试,软件仿真和现场可编程门阵列(Field Programmable Gate Array,FPGA)模拟等技术路线[5-8]。
辐照测试可以精确控制辐射强度和时间,相比于空间试验有着良好的可控性和灵活性。但是搭建辐照测试环境的开销依然非常庞大,具备辐照测试条件的单位也极少。此外,辐照测试需要批量测试,在测试过程中也极有可能损伤芯片,且芯片出错后也很难定位敏感节点,故一般只用于成品芯片的性能测试和最终测试。
软件仿真通过数学分析方法,将真实情况下单粒子效应对电路造成的影响转化为故障产生概率,故障持续时间和故障节点位置等故障模型参数,最后将故障注入到电路中[9-12]。软件仿真的优势在于模拟单粒子效应的灵活性,可从工艺级、器件级、晶体管级、门级和行为级各个层次对单粒子效应进行建模、仿真和分析。但随着电路规模的增加,软件仿真计算过程的时间开销也在显著增加,诸如开关级模拟的时间爆炸问题[13]。
相对于软件仿真技术,FPGA模拟单粒子翻转效应的实现成本更低,评估速度更快,更适合用于快速评估集成电路对单粒子翻转效应的敏感程度。具体实现方式主要有FPGA重配置注入故障,扫描链注入故障和旁路电路注入故障3种。FPGA重配置注入故障是基于FPGA的重配置功能,在运行过程中,动态修改FPGA的配置信息以实现注入故障。扫描链注入故障是复用可测性设计的扫描链结构,将故障写至扫描链的入口,控制扫描链的数据进行串行移动,将故障准确写入待评估的寄存器中。旁路电路注入故障的实现原理和扫描链注入故障的实现原理类似,也是在原有的电路结构上添加附加电路,然后对电路注入故障以模拟单粒子翻转效应,但是消除了扫描链注入故障速度慢的缺点。
FPGA重配置注入故障、扫描链注入故障和旁路电路注入故障由于实现方式不一样,在评估速度、敏感点定位精度和使用电路规模等性能上也各有优劣。本文总结了FPGA重配置注入故障技术,讨论了扫描链注入故障技术,描述了旁路电路注入故障技术,对比了3种注入故障技术并对各类技术的发展方向进行了展望。
FPGA的配置信息包含了各类逻辑资源的配置状况、电压标准、连线情况和用户设计的使用情况[14]。借助配置控制指令,即可通过专用的配置读写接口(Internal Configuration Access Port,ICAP)访问FPGA的配置信息[15];同时也能将其中某一位数据进行翻转(如0到1或1到0),再把修改后的配置信息写回FPGA以实现故障注入;最后持续读取配置信息还可监控故障注入后对电路造成的影响。
基于重配置的故障注入流程如图1所示,按照配置范围的大小,FPGA重配置技术可以进一步分为全局重配置和部分重配置[16-17]。全局重配置对整个FPGA芯片进行重新配置。在配置过程中,FPGA由于原始配置信息被清除而处于非正常工作状态,直到配置信息重新完整写入,FPGA才能正确工作。因此,从时间轴上看,FPGA工作是不连续的。全局重配置的优势在于配置过程的实现十分简单,不需要分析待测电路所使用的硬件资源,同时其电路评估速度比软件仿真要快几个数量级。
图1 基于重配置的故障注入流程
全局重配置的方式也存在重大缺陷,由于每次故障注入时都需要重新配置全部信息,会引入一定的时间开销,而且时间开销和配置信息的大小成正比。以Xilinx Zynq 7020为例,配置文件的大小为32.5 Mbit,在工作频率为100 MHz时,单次配置全部配置信息所需时间为32 ms[18];如果对32.5 Mbit里每个比特位均进行一次故障注入测试,总计时间为284 h。
部分重配置则克服了以上缺陷,可选择部分配置信息进行重配置,未重配置的电路不受影响,对应的功能仍然可以正常运作。由于部分重配置大幅减少了读写的配置信息,可显著缩短重配置时间。文献[19]使用Xilinx Virtex系列FPGA作为测试平台,当以全局重配置模式对电路注入故障时,完成单次配置需要169.738 ms。而如果只修改和待测电路相关的8 frame配置信息,仅需0.424 ms。此外,对于FPGA设计的电路,FPGA的利用率一般不会达到100%,未使用的空闲配置位无需被注入故障,这可以进一步减少时间开销[20]。
基于重配置的故障注入技术的主要优势是基于FPGA的内部功能实现,因此不会对待测电路造成影响,不会产生额外的硬件资源开销,实现成本极低,可适用于大规模电路,且电路评估速度也较为理想。但也存在不足之处,主要体现在3个方面。其一是待评估的FPGA必须具备重配置功能,限制了FPGA硬件的选择范围。其二是每次执行故障注入时,需要访问、修改和重写配置信息,使得上位机和待评估FPGA之间会进行大量的数据交互,相对于FPGA电路的运行时间,交互过程产生的时间开销要高的多。以Xilinx Virtex系列FPGA为例,理论上配置全部比特位所需时间为9.9 ms,但实际通过计算机并口传输配置数据的过程需要20 s[21]。部分重配置减少了信息交互的数据量,提高了评估效率,但整体测试的时间开销中数据交互过程仍占有较大比例。其三是主流FPGA的配置信息是加密的,虽然FPGA重配置技术能够在电路中注入故障,但是电路出现故障后,由于无法解析主流FPGA的配置信息,所以很难定位到具体的电路节点,给加固设计带来了困难。
扫描链源于可测性设计。在可测性设计中,首先将寄存器替换为扫描寄存器,然后将多个扫描寄存器相连以形成扫描链结构,最后以移位寄存器的工作方式将测试激励写入扫描链的首端,或者将测试响应从扫描链的末端读出[22-23]。扫描寄存器的常规结构如图2所示,可视作在普通寄存器结构上添加了一个2选1数据选择器。扫描寄存器有两个工作模式,工作模式的切换由信号Scan_en决定。当Scan_en不使能时,扫描寄存器为正常工作模式,此时功能等同于常规的D寄存器,采样输入端D的电平并输出。当Scan_en使能时,寄存器切换为扫描模式,此时可通过Scan_in输入故障数据以模拟单粒子翻转效应[24]。
图2 扫描寄存器的结构
将当前扫描寄存器的输出端Q和下一级扫描寄存器输入端Scan_in连接起来,就构成了扫描链。扫描链结构如图3所示,基于扫描寄存器的结构和工作原理可推导出,Scan_en不使能时,电路正常工作。Scan_en使能时,可以通过移位将故障数据串行输入到任意寄存器的Scan_in端,最终实现对任意寄存器注入故障以模拟单粒子翻转效应。
图3 扫描链结构
在实现扫描链注入故障电路时,扫描链的结构不是固定的,不同的扫描链电路产生的资源开销和故障注入速度也不同。文献[23]设计了3种不同的扫描链电路来实现故障注入,其中开销最大的电路和开销最小的电路资源开销相差近3倍,但单次故障注入时间减少了数微秒,虽然速度区别不大,但在大规模电路测试中能节约的时间开销极为可观。因此测试人员可根据测试平台提供资源(寄存器和数据选择器等)的大小和实际可达到的注入速度权衡使用合适的扫描链电路。
扫描链技术的优势在于可适用于任意规模电路的测试,也可用于ASIC电路的评估,同时不受FPGA测试平台的限制。故障注入速度最快可达到微秒级别,相对于重配置技术有了进一步的提高。由于扫描链的插入对象可以是任意触发器,因此故障注入后电路敏感节点的定位精度也较高。其最主要的缺陷是会产生额外的资源开销,且额外开销会随着电路规模的增大而增加。此外,为了能够正确定位电路对单粒子翻转效应的敏感区域,串行移位时钟的频率还不能较高,这样使得扫描链串行移位的时间开销显得颇为可观,需要在扫描链长度和评估速度上做出折衷。
最后,值得指出的是,扫描链技术在故障数据传输过程中存在和重配置技术一样的问题。文献[24]中提到所设计扫描链的单次故障注入速度为1μs左右,但受串口传输的限制,每次故障激励数据的下发需要3.84 ms,因此接口的传输速率成为制约速度的主要因素。文献[22]中每次注入故障时需要主机和FPGA进行故障数据交互过程,频繁地通信导致故障注入速度偏慢。文献[23]针对数据通信过程进行了优化,将测试电路所需的故障激励数据一次性全部发送到FPGA的存储区,随后FPGA内部自动执行全部测试过程,主机和FPGA只需在起始阶段通信一次,减小了数据通信的时间开销,故障注入速度相对于文献[22]提高了2个数量级。
旁路电路技术的实现原理和扫描链技术类似,在原有的电路结构上添加附加电路来使电路能够模拟SEU效应[25-26]。以寄存器为例,在正常状态下寄存器保持其原本的功能,在故障注入模式下通过外部控制信号驱动附加电路从旁路修改寄存器的数值。
文献[27]介绍了一种旁路电路注入故障的电路结构,基于Xilinx Virtex-5的FPGA实现,带旁路电路的寄存器结构如图4所示。该电路在原本的寄存器结构上添加了3个查找表(Look-Up-Table,LUT)和额外的输入信号,修改寄存器的复位信号SR(Set/Reset)和翻转信号REV(REVerse)的输入值来实现故障注入功能。默认模式下寄存器对应的真值表如表1所示。
表1 默认模式寄存器真值表
图4中,输入信号inj为故障注入使能信号,Original_CE、Original_R和Original_S分别连接寄存器原始的时钟使能CE、复位Reset和置位Set信号。如果inj为0,该寄存器等同于普通的寄存器,而inj为1时,3个查找表就会根据寄存器的输出值Q生成相反的值并写入寄存器。
图4 带旁路电路的寄存器结构
文献[28]的电路修改方式更加简单,仅在原始寄存器结构上增加了一个异或门。替换前后的寄存器结构如图5所示。当故障注入信号Inject信号为高电平时,寄存器的输入端数据会发生翻转,而Inject信号为低电平时,寄存器的输入端数据保持原始状态。和文献[27]相比,区别在于故障注入时,文献[28]的寄存器数值一定会进行翻转,而文献[27]则可以模拟更加复杂的情况,因为单粒子翻转效应在作用于寄存器时有固定0、固定1和翻转3种情况,并不一定会导致翻转。但是,文献[28]的电路结构的资源开销比文献[27]小得多,具备一定的优势。
图5 替换前后的寄存器结构
文献[29-30]介绍了另一种旁路电路的实现方式,通过对电路综合后的网表进行修改,将原有的器件库全部替换成为附加故障注入功能的器件库,其中包括寄存器、随机存取存储器(Random Access Memory,RAM)、查找表、逻辑门以及乘法器等,更新后的网表的时序逻辑部分不会受到影响,只是添加了故障注入相关的组合逻辑模块。但其实现过程较为复杂,器件库的修改需要耗费大量的时间进行功能和时序验证。同时器件库和FPGA型号是紧密联系的,更替FPGA芯片将可能导致器件库无法使用,因此迁移性较差。
和扫描链技术相比,旁路电路技术省去了串行移位故障数据的过程,故障直接注入到待评估寄存器中,从而提高了故障注入速度。旁路电路同样可适用于任意规模电路,而且可以针对电路中的其他存储元件(LUT、RAM等)设计故障电路,适用范围更广,故障敏感节点的定位精度也高于扫描链。其主要缺陷会带来额外的资源开销,此外还可能增加关键路径的延时,对时序造成负面影响。
除了故障注入速度的差异,文献[31]同样提到了数据交互过程造成的庞大时间开销,文中基于RS232传输故障激励数据,传输速度配置为115 kbit/s,单次数据传输过程需花费14 ms,而故障注入执行过程仅占2 ms,因此导致故障注入速度偏慢。
FPGA模拟技术主要用于评估超大规模集成电路设计对单粒子翻转效应的敏感性。因此本文从评估速度、电路开销和敏感点定位精度3个方面进行对比,故障注入方式具体性能对比如表2所示。
表2 故障注入方式性能对比
FPGA模拟技术中的重配置技术存在速度瓶颈,虽然通过部分重配置可以显著提高效率,但是与修改电路结构的方式相比较,重配置技术故障注入速度稍慢。若基于扫描链去实现,其串行移位的故障注入模式会带来一定的时间开销。而旁路电路方式可使得电路即时响应故障,不会产生额外的时间开销。
在电路开销方面,由于重配置所需要的硬件电路都固化在FPGA芯片内部,所以额外需要的电路开销是最小的。考虑到扫描链可以复用可测性设计的扫描链结构,所以电路开销稍低。电路开销最大的是旁路电路,因为每个寄存器外围都需要配备译码选通电路和故障注入电路,但是随着FPGA的技术开发,单LUT电路能够实现的功能愈加复杂,其占用的电路开销比例也可以不断下降。
在敏感点定位精度上,由于配置文件格式不公开,多数研究采取随机注入或是遍历式注入,但是注入故障后难以在最初的原始设计文件中定位故障节点,这对评估工作非常不友好,难以指导后续的改进工作。由于扫描链是串行结构,定位需要依赖输入激励和输出响应的先后顺序,这会和评估速度形成互相制约的关系。因为如果注入速度过快,对准确采样高速输出响应的工作会提出很高的要求。旁路电路由于具有专用接口电路,因此即使在高速注入情况下,也能准确定位注入故障的位置。
重配置、扫描链和旁路电路3种方法的实现结构不一样,优化的思路也会有所不同。
重配置在评估速度上表现不佳,主要是由于上位机和FPGA之间频繁通信造成较大的时间开销。如何让测试激励以更快的速度配置到FPGA中是未来的提高方向。采用DDR缓存测试激励,以及采用类似Xilinx ZYNQ架构的芯片作为测试平台,都是可行的方式。在确定注入故障定位上,可行的思路有对比配置文件格式和配置后器件位置,对配置文件进行破解。但是需要按照电路版图结构从大到小逐次解析,并区分LUT、RAM等多种存储元件,工作量比较庞大[32],所以重配置技术的改善工作更适合FPGA设计厂商实施。
在有可测性设计的电路中,扫描链技术是非常合理的选择。但是,为了提高测试效率,如何压缩测试激励的数量,以及测试响应的高效对比,是扫描链技术未来的发展方向。此外,扫描链的电路结构也可以进行一定的优化,主要在提高运行速度和降低开销两方面进行针对性的改进,扩充可测性设计的研究范畴。
旁路电路的改进方向是进一步压低电路开销。这方面可以考虑相邻电路之间复用故障注入电路,从而降低电路开销。需要注意的是,旁路电路往往和测试平台的器件库密切相关,所以未来在设计电路时可以将电路修改方式设计成通用脚本,通过算法和器件库建立联系,从而增加其适用范围。
此外,由于3种方案的优势各不相同,未来的评估平台也可以结合多种方式。比如可利用旁路电路故障注入的准确性弥补重配置技术的精度缺陷,提高注入速度,同时也可以通过重配置技术避免旁路电路相关故障注入模块的资源开销。这样不仅平台的评估效率有所提高,评估电路的适用范围也变得更加广泛。
随着集成电路工艺迈入纳米时代,现有FPGA模拟技术面临的最大挑战是待评估电路规模过于庞大导致评估时间大幅增加。如何在设计资源允许的情况下,尽可能提高模拟SEU效应的故障注入速度,并尽可能确定待评估电路中SEU敏感区位置,是FPGA模拟SEU效应的重要研究方向。从上述内容可以看出,重配置、扫描链和旁路电路技术假以时日,均能在评估速度、电路开销和定位精度等性能指标上取得进展,使之更适合用于评估超大规模集成电路设计对单粒子翻转效应的敏感性。