FPGA 专家 18:FPGA 可靠性与 SEU——翻转、刷新、TMR
本文是
fpga/专家层第 21 篇。配置刷新机制依赖 PR/ICAP 原理,量产考虑见 FPGA 量产与烧录,功耗/温度边界见 功耗估计。
一、翻转的三类目标
| 目标 | 翻转后果 | 恢复方式 |
|---|---|---|
| CRAM 配置位 | 逻辑/布线被静默改变、复位无效 | 重配置/刷新(最危险) |
| BRAM/URAM 数据 | 数据错 | ECC/重写/复位 |
| FF/DSP 状态 | 状态机错误 | 复位/重同步 |
| 配置控制(SEFI) | 功能中断 | 重配置/重启 |
二、防护体系(互补使用)

- Scrubbing:ICAP 读回配置帧 ECC 校验,翻转载帧写回,业务不中断;周期按 MTBC 设;
- TMR:三份独立副本+每级表决器,防优化合并、防单点,资源约 3×;
- ECC/编码:BRAM ECC 纠单检双、状态机大汉明距离编码;
- 兜底:不可纠正错误→重配置/安全态/重启。
三、设计与验证要点
- 器件选择:航天可用反熔丝/Flash 型(配置非易失免疫)或空间级加固 SRAM;
- 量化:器件 FIT/MTBF 报告 × CRAM 位数 × 环境(海拔/纬度)估系统级率;
- 故障注入验证:人为翻转配置位,证明 TMR 表决/刷新纠正生效;
- TMR 副本物理隔离、表决器加固、不被综合合并;
- 功能安全(ISO26262/IEC61508):诊断覆盖率、安全机制文档化。
五、软错误物理与失效率预算:从 FIT 到系统可用性
设计防护前必须把“翻转”从恐惧变成可计算的量。单粒子效应来自封装材料 α 衰变和大气中子(次级宇宙线),SRAM 单元、触发器、锁存器乃至配置存储都可能被击中;工艺缩小使单比特临界电荷下降、总位数增加,地面器件的软错误绝对数量并不随代际下降。厂商以 FIT(每 10^9 设备小时的失效数)和 MTBF(平均无故障时间)发布数据,并区分静态软错误率(配置位)、BRAM/URAM、触发器、DSP 等贡献。系统级预算的做法是:取器件各资源在目标工艺/电压/温度下的 FIT,按设计实际使用的 CRAM 帧和存储位数折算(不用全部配置位都算——但配置位基数大,通常仍是主导项),再乘环境系数(海拔每升高约 1500~2000m 中子通量显著上升,航空巡航高度再高两三个数量级,纬度、太阳活动也有影响),得到设计的原始翻转率。
然后按防护机制推导残余失效率:TMR 把单点错误降为“两个副本在刷新窗口内同时翻转”的二阶事件(概率近似与窗口长度成正比),scrubbing 把错误驻留时间压缩到刷新周期;BRAM ECC 消除单比特、把双比特变为可检测的不可纠正错误。把残余 FIT 与系统要求对账:通信核心网设备常要求整机 FIT 低到几十以内并支持热维护,汽车安全相关部件按 ASIL 推导诊断覆盖率,航天则直接按轨道辐射环境重算并通常选加固器件。预算结果决定防护强度:是只看门狗+启动校验、轻量后台刷新、关键子系统 TMR,还是全片 TMR+快速刷新+冗余板卡。没有这一步,团队容易在地面低风险产品里过度设计,或在高可用设备里想当然。预算要文档化并随器件版本更新(厂商 FIT 数据修订时重算),它是后续所有机制参数(刷新周期、表决粒度、告警阈值)的依据。
六、Scrubbing 工程实现:SEM、刷新周期与无干扰设计
配置刷新的工程实现有三种来源:厂商软错误缓解 IP(SEM/SEM IP)、自研 ICAP 控制器、部分处理器平台内置的刷新服务。典型 SEM IP 工作在监控状态:周期性经内部配置访问口读回配置帧,对帧 ECC 校验(帧本身带校验位),发现单比特错误时定位帧地址并通过帧写回纠正;它同时输出分类状态(可纠正错误、不可纠正错误、致命错误)和计数/地址,供系统记录。刷新周期设计是核心参数:错误驻留时间越短,TMR 中两副本同时损坏和未防护逻辑错误暴露的概率越低。周期由目标残余 FIT 反算(结合 CRAM 总帧数和扫描带宽),常见地面高可用设计在数十毫秒到数百毫秒完成全片扫描;扫描带宽受配置时钟和 ICAP 宽度限制,大器件要核算。扫描可以连续循环或按风险加权(关键区更频繁)。
无干扰运行是落地难点:帧读回不影响业务,但帧写回理论上只改配置位、不触动状态,实际设计仍要遵守一系列规则——被刷新区域不能同时进行部分重配置;SEM 与正常配置口访问要互斥;关键状态不要仅依赖可能短暂不一致的组合输出(TMR 寄存器级表决解决这个窗口);刷新控制器自身的可靠性要单独考虑(它工作在同一 FPGA 上,通常用加固编码和看门狗互保)。对 BRAM 的刷新要与用户写入协调(读回纠错不能覆盖刚写入的新数据),通常启用硬件 ECC 而不是“重写内存”。不可纠正事件策略:多比特配置错误或 SEFI(配置控制器状态异常)无法透明修复,标准响应是保存现场状态/告警→触发全片重配置(或切换冗余板)→重建业务;重配置时间和数据丢失要写入系统故障模式分析。SEM 还提供故障注入接口用于验证,但注入逻辑在量产构建中必须可关闭,避免成为攻击面。
七、TMR 工程细节:副本独立性、表决器与同步
TMR 概念简单,工程实现全在“独立性”三个字。逻辑独立:三份副本必须被工具当作真正独立的网表,不能共享 LUT、不能因“逻辑等价”被综合去重;这要求专用 TMR 插入工具/流程(在综合后网表级复制,而不是靠手写三份 module——手写仍可能被优化合并)或严格的综合属性,并在网表审计中核对资源确实接近三倍。物理独立:三个副本应放置在器件的不同区域(Pblock 约束),避免局部缺陷、单一布局热点或多比特翻转(MBU,同一粒子造成相邻多位翻转)同时击中两个副本;现代器件相邻位在物理上已按设计打散,但区域级隔离仍显著降低共因概率。表决器独立与分布:单一全局表决器立刻成为新的单点,正确做法是寄存器级/局部表决——每个关键时序边界后插入加固表决器,使任一副本的错误在下一级前被掩码,不产生级联传播;表决器本身用多数逻辑的容错实现(三输入多数函数本身简单,可用三选一结构避免共模)。
时钟与复位的共因是最容易被忽视的失效:三份逻辑共用一个时钟树时,时钟缓冲/时钟线上的一次翻转或硬件故障影响全部副本,严格方案使用独立时钟资源或在成本允许时冗余时钟;复位树同理,至少要保证复位逻辑本身加固。输入同步:三个副本看到的外部输入要先经冗余/同步结构进入各自域,避免单个亚稳态或翻转同时污染三方;跨时钟域信号在每副本内独立同步。粒度策略:全片 TMR 三倍资源在大器件上常常不可行,常见折中是安全状态机、控制环、配置管理、表决和通信保护逻辑全 TMR,数据通路按风险选择性 TMR 或靠 ECC+协议重传;划分要在 FMEA(失效模式分析)中逐模块论证,不能只凭感觉。TMR 与刷新必须配套:只有 TMR 无刷新,错误累积最终两个副本翻转,且无法恢复;只有刷新无 TMR,纠正前的错误窗口仍会输出错误结果。两者组合(TMR 维持正确输出、刷新悄悄修复)才构成完整的“容忍+自愈”体系。
八、用户数据与状态保护:ECC、安全编码与接口防护
CRAM 之外,用户数据和状态的翻转同样要分层覆盖。BRAM/URAM ECC:开启原生 ECC 后每个 64 位(或厂商定义宽度)附加校验位,单比特在读出时透明纠正并给可纠正计数,双比特上报不可纠正中断;设计必须真的接这个中断——很多项目“开了 ECC 但没人看”,双比特错误被静默吞掉。ECC 不覆盖部分宽度使用场景(很窄的 RAM 实例可能不满足编码宽度),要查手册;写入侧要保证初始化也经过 ECC 编码。分布式 RAM/寄存器:关键标量(指针、长度、状态机状态)可以加奇偶位或打包进带校验的结构;大批量数据更适合协议层 CRC/重传。有限状态机加固:用 one-hot 加合法状态检测(非法编码即复位到安全态)或大汉明距离编码,使单比特翻转不会从一个合法态跳到另一个合法态;普通二进制编码中大量状态对只差一位,翻转即“合法跳变”无法检测。安全关键 FSM 的默认分支必须显式进入安全态,而不是综合掉。
指针、计数器、地址是高价值目标:DMA 指针翻转导致越界写,比单个数据样本错误严重得多;这些字段应做范围/对齐检查、双副本比较或 ECC 保护。接口侧:高速链路靠底层 CRC/FEC(专家 04)和上层序号/重传;经光纤/背板进入的数据天然可能带错误位,不能假设到达 FPGA 就是对的。时间相关失效:看门狗(窗口看门狗比普通喂狗更强,能检测喂得太快或太慢)和心跳监测“逻辑不再按预期运行”这类配置损坏;上电/重配后的配置 CRC 校验确保镜像本身完好。处理器协同:Zynq 类器件中 PS 软件也可崩溃或翻转,安全底线不要只放软件。防护设计的通用原则是纵深防御:ECC 管存储、编码管状态、TMR 管逻辑、刷新管配置、看门狗管死活、协议管数据,任何一层失效都有下一层兜底;在 FMEA 表里逐类翻转源走一遍“翻转→传播→检测→响应”,才能证明诊断覆盖率达到功能安全认证要求。
九、故障注入与认证:证明防护真的有效
防护机制最大的风险是“以为有防护”。TMR 工具插入是否成功、刷新能否真正纠正、表决器位置对不对、不可纠正中断是否有人响应——这些只能通过**故障注入(fault injection)**证明。三种层级:配置位注入通过 SEM IP 的注入接口或内部配置访问口,在选定配置帧中翻转单个/多个比特,观察系统行为——注入数万到数十万个随机点是标准做法,统计结果应满足:防护区内单点翻转不改变功能输出(TMR 有效)、刷新在目标周期内检测并纠正(计数与时间可验证)、注入到关键共享资源时系统进入已定义的安全响应;信号级仿真注入在仿真中强制内部寄存器/状态位翻转,验证状态机编码、ECC 解码、FSM 恢复路径,覆盖率远高于随机物理注入且可复现;板级系统注入则通过接口喂入错误数据、拉断链路、强制看门狗超时,验证端到端响应和恢复时间。
注入活动要有测试矩阵:资源类型(CRAM/BRAM/FF/DSP)、单比特/多比特、防护区/非防护区、运行负载(空闲/满负荷)、温度电压角,每种组合有明确预期结果(无影响/纠正/告警/安全态)和观测点。诊断覆盖率(DC)是 ISO 26262/IEC 61508 的核心指标,证据链包括 FMEA、注入覆盖率报告、残余错误率计算和响应时间测量。认证文档还要求:工具置信度(TMR/SEM 工具的鉴定或验证记录)、防护机制与安全目标的追溯矩阵、安全手册(集成者必须遵守的时钟、配置、监控要求)、现场 SEU 事件计数的回传机制。航空 DO-254 类项目还有更严格的器件管理(辐射数据、工艺变更监控)。即便不做正式认证,内部的注入回归也应在每次设计大改后重跑——防护逻辑同样会 bit rot,一次“无害重构”可能恰好破坏了副本隔离。
十、可靠性架构总览与决策清单
把防护技术组装成系统架构时,按风险等级有清晰的梯度。等级 0:地面普通商用——标准做法是启动配置 CRC、看门狗/超时复位、关键数据协议 CRC、(可选)轻量 SEM 监控只读计数;成本接近零,能处理配置镜像损坏和挂死。等级 1:高可用地面设备(通信、工业核心)——连续后台 scrubbing + 可纠正错误计数遥测、BRAM ECC 全启用、关键控制逻辑选择性 TMR、不可纠正错误触发受控重配或板卡切换、A/B 镜像保业务恢复。等级 2:安全认证(汽车/医疗/轨交)——FMEA 驱动的分区 TMR、安全状态机编码、完整故障注入证据、诊断覆盖率文档、与 R5 锁步或安全 MCU 的协同(见 专题 02)、响应时间可证明。等级 3:航空/航天——加固或反熔丝/Flash 器件(配置免疫)从器件层消除主要威胁,SRAM 器件则全 TMR+高速刷新+冗余系统,按轨道辐射重算 FIT,配合抗单粒子闩锁的电源限流和工艺筛选。
决策清单:器件 FIT 数据与环境系数是否已折算为系统级翻转率和 MTBF?CRAM、BRAM、FF/DSP 三类翻转是否各有对应措施?TMR 副本是否在网表层验证过独立性、物理隔离和表决器分布?刷新周期是否由残余 FIT 目标反算并有带宽核算?不可纠正/SEFI 的完整响应链(检测→现场保存→重配/切换→恢复→上报)是否定义并测试?ECC 中断和 SEM 状态是否接入软件健康管理?故障注入矩阵覆盖率和结果是否归档?现场 SEU 计数是否可读取以验证预算?防护机制自身(SEM 控制器、看门狗、配置存储)的共因失效是否分析?配置比特流是否加密认证以防防护被绕过(与 专家 24 衔接)?逐条回答后,SEU 防护就从“听说要加 TMR”的玄学变成了有预算、有机制、有证据的可靠性工程。
十一、器件路线与环境分级:SRAM、Flash、反熔丝的取舍
可靠性设计在选型阶段就已开始,器件工艺路线决定了威胁模型的上限。SRAM 型 FPGA(主流大容量高性能产品)配置存在易失存储器中,每次上电从 flash 加载,配置位对 SEU 敏感,需要本章的全套软件/架构防护;优点是容量、速率、生态和成本最优,地面绝大多数高可靠系统仍选它,靠 scrubbing+TMR+ECC 达到目标 FIT。Flash 型 FPGA 的配置存储在片上 Flash 开关中,掉电不丢失且对配置 SEU 基本免疫(用户 FF/RAM 仍可能翻转),启动快、配置链路简单,适合安全启动要求高、容量需求中等的工业/航空应用;代价是工艺节点和最高性能受限。反熔丝型一次性编程,配置物理不可改变,天然抗配置翻转,非易失且无启动加载过程,是航天和极端环境传统选择;代价是不可升级(或只能通过设计内冗余实现有限更新)、容量和单价受限。空间级加固 SRAM 是折中:经过工艺筛选和加固设计,配置翻转率降低且带增强刷新支持,配合 TMR 用于大容量卫星载荷。
环境分级建议:消费/室内地面设备以成本和功能为先,标准看门狗和启动校验足够;普通工业、通信现场按高可用等级做 scrubbing+ECC,选择性 TMR;车载/医疗/轨交按安全标准倒推诊断覆盖率(第九节);航空电子区分增压舱与非增压舱的中子通量;低轨到高轨、地球同步、深空按辐射分析选加固器件/反熔丝并做在轨刷新与遥测。还要考虑单粒子闩锁(SEL):高能粒子可能在 CMOS 中触发大电流,需要电源限流、电流监测和快速断电恢复设计,空间板级尤为重要。把“器件路线×环境×防护等级”做成项目立项时的一页决策表,可以避免后期在错误的器件上堆软件措施。
十二、可靠性遥测与现场数据闭环
防护机制是否有效,最终要靠现场数据回答。每台设备应持续上报一组最小遥测:SEM/scrubbing 周期完成次数、可纠正配置错误数与最近位置时间戳、不可纠正事件、BRAM ECC 单错/双错计数、看门狗超时与重配置次数、当前防护配置版本、结温与电压异常事件。这些计数器要有防回绕位宽、可清零语义(生产维护可清零但累计值另存)和设备序列号关联。后台汇聚后可以做三件事:验证 FIT 预算(实测翻转率与厂商数据/环境模型对比,海拔高的站点应明显更高),发现批次性异常(某批器件/某个温度区间错误率突增指向硬件问题),以及确认刷新窗口和 TMR 设计确实把不可纠正事件压到了目标值以下。没有遥测的防护是“信仰式设计”。
现场运维流程也要定义:单比特纠正事件属正常现象,记录即可;短时间同区域反复翻转要怀疑 flash 内容损坏或局部硬件问题,触发维护;不可纠正重配置事件要导出事故日志(配置版本、业务状态、温度)并自动恢复;冗余板卡切换要带健康史,反复故障的板卡退出轮换。升级流程与可靠性耦合:刷新用的正确配置帧必须来自当前活动且签名通过的版本,A/B 切换后 SEM 上下文要同步重建,避免用上一槽的校验数据。把遥测接入 MES/设备管理平台后,可靠性工程才形成“预算→设计→验证→现场→再预算”的闭环,而不是一次性的分析报告。
十三、一页纸总结与评审检查单
一页纸:威胁分配置位(静默改电路、复位无效、最危险)、用户存储数据、时序状态、功能中断四类;预算按器件 FIT×使用位数×环境算原始率,按 TMR/scrubbing/ECC 推残余 FIT 与可用性对账;防护是组合拳——scrubbing 周期读回纠配置(治本、不中断)、TMR 三独立副本加寄存器级表决(治标、保输出)、BRAM ECC 与安全 FSM 编码管数据状态、看门狗和受控重配兜底;TMR 必须工具化插入、物理隔离、时钟复位防共因,并与刷新配套;所有机制必须用配置位/信号级故障注入验证覆盖率和响应时间,安全认证还要 FMEA 与诊断覆盖率文档;器件路线(SRAM/Flash/反熔丝/加固)与环境分级在立项决定;遥测让防护可验证、可运维。
评审检查单:FIT 预算表和环境假设是否可追溯?刷新周期如何推导、扫描带宽是否够、与部分重配置是否互斥?SEM 不可纠正输出接到了什么响应链?三副本在网表和 Pblock 层如何证明独立?表决器位置图和单点清单?ECC 中断是否真的有处理?关键 FSM 是否可检测单比特跳转?故障注入矩阵覆盖资源类型和负载吗?重配置期间业务的安全状态和恢复时间定义了吗?防护自身(SEM、看门狗、配置存储)的共因分析?现场能读到哪些计数、告警阈值是什么?器件工艺路线与环境是否匹配?逐条打钩后,SEU 防护才从成本项变成产品可靠性承诺的一部分。
十四、地面设备的实用主义:何时真的需要 SEU 预算
并非每个产品都需要完整 TMR,防护过度同样是工程失败,最后给一个务实的决策路径。先估算原始配置翻转间隔:厂商可靠性工具按器件使用的 CRAM 位数、工作结温和环境(海拔/中子通量)给出 MTBC 数量级。若计算结果是“数百设备年一次配置翻转”,而产品是室内消费设备、可重启、错误后果轻微,看门狗+启动 CRC+远程升级就能覆盖剩余风险,把预算花在电源和测试上更有价值。若同一计算在高原机柜、高密度机房、长寿命通信设备上变成“每机群每年若干次非计划中断”,连续 scrubbing 加上关键状态 ECC 的性价比就很高,它们资源开销小且不改变时序。只有当错误后果涉及安全(保护动作、医疗、车载)或不可中断服务时,TMR 和认证级流程才成为必选项。
还要避免一个反向误区:FIT 是统计量,“我们从没遇到过”不是论证——没有计数器就无法知道是否遇到,许多莫名其妙的现场重启可能就是一次未记录的配置翻转后被看门狗恢复。因此即便选择轻量防护,也建议保留 SEM 可纠正计数和重配置原因记录,零成本获得现场证据。最终原则是让防护等级匹配风险计算和业务后果,并把计算、选择和遥测写进设计文档:这比在评审会上争论“FPGA 可不可靠”有效得多,也能在客户审计中给出可追溯答案。
常见坑对照
| 坑 | 后果 | 正确做法 |
|---|---|---|
| TMR 被综合优化合并 | 三副本变一份 | 专用工具/约束+物理隔离 |
| 只做 TMR 不刷新 | 多副本累积翻转失效 | TMR+scrubbing 配套 |
| 配置翻转靠复位修复 | 复位不动 CRAM | 重配置/帧刷新 |
| 表决器单点不加固 | 表决器翻就崩 | 每级表决+加固 |
| 刷新周期拍脑袋 | 错误窗口过大 | 按 FIT/MTBC 计算 |
| 不做故障注入 | 机制失效不知道 | 注入验证诊断覆盖率 |
相关与延伸
刷新实现:PR/ICAP;量产:量产与烧录。 安全:FPGA 安全(后续);汽车实时:Zynq R5 锁步。
总结
SRAM FPGA 的配置存储器(CRAM)在粒子辐射下可能被 SEU 翻转——最危险的是配置位翻转:LUT 功能/布线被静默改变且复位无效(复位只清 FF 不重配 CRAM),用户 BRAM/FF 数据翻转则可恢复;防护体系四件套互补使用:①scrubbing 配置刷新(SEM IP/ICAP 周期读回配置帧做 ECC 校验,翻转帧部分重写、业务不中断,治本);②TMR 三模冗余(三独立副本+每级多数表决容忍翻转维持功能,治标,资源约 3 倍,必须防综合合并、副本物理隔离);③BRAM ECC+大汉明距离状态编码保护用户数据;④不可纠正错误触发重配置/安全态兜底。TMR 和 scrubbing 必须配套(TMR 容忍、刷新修复,否则多副本累积翻转终失效),并用故障注入验证有效性。是否做看风险:航天/航空/汽车/医疗必须(TMR+刷新+ECC+认证文档,甚至选反熔丝/Flash 加固器件),地面高可用用轻量刷新+看门狗即可,量化按器件 FIT 率(Xilinx UG116)×CRAM 位数×海拔环境与可用性目标对账。