荐 言:
本文节选自书籍第九章关于芯片功能安全架构的描述。更多内容可以点击下方链接了解。
正 文:
不管是芯片的安全架构设计,还是下游相关系统的安全架构设计,在安全方面无非都是要应对产品开发过程中的两类失效,即随机硬件失效和系统性失效。
接下来谈一谈芯片功能安全架构设计在硬件层面的一些考量。
注:下文提到的芯片泛指处理器级的 III 类硬件器件。
#01
芯片的硬件安全设计要求参考
微控制器的硬件安全设计通常通过“安全岛”(Safety Island)来实现。安全岛是一个被广泛使用的概念,类似于我们日常在十字路口等红绿灯时所在的专门为行人建设的等候区。它能隔离人流和车流,避免车辆失控撞向行人。芯片中的安全岛也是专门设计的独立片区,用于实现安全相关功能。如今,许多用于安全关键领域的芯片通常会标明其具备安全岛机制。
一般地,芯片上专门用于某个具有特定属性(如安全属性)的子系统或内核,都可以用 “ Island”的概念来命名,主要强调局部设计的“独立性”和“特殊性”。而用于配套实现芯片专有功能安全的专属存储单元、供电模块、外设、通信总线等一系列 IP 的集合可以统称为 “安全岛”。在“岛上”可以相对独立地执行安全相关的任务,安全岛就是这样一个为软件提供安全任务执行的物理环境。
安全岛通常独立于芯片的其他系统和内核,需要配备独立的电源域、单独的计算单元,内部模块和内存必须具备物理隔离机制、高优先级的中断机制,甚至配有专门的安全诊断单元,以便实时诊断“岛上”出现的问题,并进入相应的安全状态。
接下来从最小系统出发,谈一谈芯片安全岛的实现方式。
双核锁步(DCLS)架构是一种片上冗余集成电路架构。ISO 26262 并未针对片上冗余集成电路架构单独提出要求,但 IEC 61508-2 对带片上冗余的集成电路特定架构提出了相关要求。
为了在同一个半导体衬底上使用片上冗余,IEC 61508-2 提出了一系列要求。使用单个半导体衬底可以实现具有硬件故障裕度大于零的子系统(片上冗余)。在这种情况下,应满足所有下方的要求,并且 E/E/PE 系统和集成电路的设计应满足这些要求。
1 )本系列条款描述的集成电路功能安全可声明的最高安全完整性等级限制为 SIL3。
2)不能通过组件的组合来增强系统能力。
3)为了避免共因失效,需要考虑温度升高(例如,由随机硬件故障引起)的影响。
4)应该为集成电路衬底的每个通道和每个监视组件(如看门狗)建立独立的物理块。这 些物理块应该包括键合线和引脚。每个通道也应该有独立的输入和输出,而不应该经过另一个通道。
5)应采取适当措施,避免电源故障引起的危险失效,包括共因失效。电源故障包括但不限于:
噪声。
通过供电线路传播的扰动。
非同步电源接通,可能引起诸如闩锁效应或高冲击电流等问题。
短路导致的过多电流消耗。
6)独立物理块之间的最小距离应足够,以免造成块之间的短路和串扰。
7)独立物理块相邻线之间的短路和串扰不应导致功能安全的失效。
8)无论使用何种集成电路设计工艺,衬底都应接地。
10)在检测到带有片上冗余的集成电路故障时(通过诊断测试、检验测试或其他方法),应该采取特定的行动来保持安全状态。
11 )每个通道的最小诊断覆盖率应大于 60%。在监视组件仅执行一次的情况下,该组件的最小诊断覆盖率也应大于 60%。
12)如果看门狗是必要的(例如,通过程序序列监视和确保必要的诊断覆盖率或安全失效分数)一个通道不应该被用作另一个通道的看门狗,除非使用功能多样化的通道。
13)在没有额外安全裕度的情况下测试电磁兼容性时,集成电路执行的功能不应该被干扰。
14)在有额外安全裕度的情况下测试电磁兼容性时,功能安全(包括集成电路)应符合 IEC 61326-3-1 中定义的 FS 准则。
15)对于与外部异步数字信号连接的数字输入端口,应当采取适当的措施来避免振荡引起的危险失效,例如,可以采用多级时钟同步来分别引入信号。
16)应该分析共用资源的潜在共同,如边界扫描电路和特殊功能寄存器组等。
17)以上要求 1 ~ 15 列出的共因引发源主要用于带有片上冗余的集成电路,也应考虑 GB/T 20438 指定的其他相关共因引发源。
由于双核锁步架构属于片上冗余架构,为了降低相关失效的影响,一般需要采取以下措施。
( 1 )物理多样性
核心硬件在空间上是分开的,至少相隔 100µm,形 成物理上的“隔离带”,在有些芯片中称为“ Safety Lake”。

图 1 双核锁步物理多样性结构
一个核相对于另一个在物理结构上进行翻转并旋转 90°。 图 1 展示了双核锁步物理多样性结构。
(2)电源多样性
每个核都有一个专用电源环。
(3)时间多样性
一个核相对于另一个核运行有延迟(例如 2 个时钟周期),包括一个输入延迟和一个输出延迟,以确保同步。
CPU 时钟域被分成两个时钟树,这样时钟通过两条独立的路径被传递到两个 CPU。
#02
芯片的供电安全
供电模块是一个典型的相关失效引发源(DFI)。在芯片设计过程中出于安全考虑,需要为内核逻辑电路和 I/O 逻辑电路提供独立的电源轨(包括模数转换器(ADC)、闪存泵和振荡器);同时配备相应的电压监控模块来监控各电源轨的功能异常。
安全芯片内部通常设计有嵌入式电压监控器,该监控器能够检测电源电压的超出范围(OV/UV)情况。当电源电压远高于或低于额定值时,电压监控器将内部驱动上电复位引脚,确保处理器保持在安全运行状态。当电源电压在正常范围内时,电压监控器不会触发处理器复位。
1. 芯片供电安全设计的原因
供电模块在芯片内部属于通用基础设施且具有共用性,一般芯片中所有功能模块都需要供电才能运行,而不同模块需要的工作电压各不相同。如何避免不同模块间用电串扰的影响是芯片设计过程中的安全考量之一。通常,为了消除或减轻其引发共因失效的影响,通常为芯片冗余内核和 I/O 逻辑电路提供独立的供电模块。
提到相关失效,这里先介绍一下该术语的基本概念。
- 相关失效( Dependent Failure):不具有统计独立性的失效,即失效组合发生的概率不等于所有考虑的独立失效发生概率的乘积。
简单理解,相关失效是指两个或多个独立事件的失效起因存在一定关联性,且导致这种关联的原因可能多种多样。比如,小王和老李在同一办公室工作,某天小王开始咳嗽、流鼻涕,出现感冒症状。隔天,老李也出现了感冒症状。这种情况下,小王和老李都出现感冒症状的事件具有一定的关联性。
导致失效的相关性或关联方式不同,相关失效包括共因失效和级联失效。
- 共因失效( Common Cause Failure ,CCF):由于共同原因,两个或多个部件在同时或短时间内进入故障状态。
其因失效可以由单一事件或根本原因(如偶然原因、不可分配原因、噪声、自然模式等)引起,如图 2 所示。
同样拿上面小王和老李的故事来举例说明。小王和老李在同一间办公室办公,小王感冒后没多久老李也出现了感冒症状,小王和老李都出现了感冒症状这事都要归因于流感病毒,所以是流感病毒导致小王和老李发生的“共因失效”。
共模失效(Common Mode Failure ,CMF)是共因失效的一个子集。冗余通道中两个或多个(不一定相同)元件中随机故障的重合导致功能安全方面相同的错误行为。
图 3 展示了两个不同但冗余的通道内的两个元件,其中一个根本原因导致两个不同的故障(故障 1、故障 2),导致两个元件和两个通道发生相同失效(Failure C)。由于两个通道中都发生了相同的失效,功能安全比较器机制无法检测到失效。

图 2 共因失效示意图

图 3 共模失效示意图
继续拿上面小王和老李的故事来举例说明。小王和老李在同一间办公室办公,受流感病毒的影响,两人都出现了发烧、咳嗽及鼻塞流鼻涕的症状,导致两人无法集中注意力办公,于是中断当前工作,都请假去了医院。这种情况下,流感病毒导致小王和老李发生了“共模失效”。
- 级联失效(CascadingFailure,CF):当系统中某个元件的局部故障波及互连元件,导致同一系统和同一通道内的另一个或多个元件发生故障时,就会发生级联失效。级联失效是非共因失效的相关失效。图4 展示了一个通道内的两个元件,单一的根本原因导致一个元件中的故障(故障1),从而导致某个失效(失效A)。然后,该失效级联到第二个元件,导致第二个故障(故障2),进而导致另一个失效(失效B)。

图 4 级联失效示意图
级联失效强调的是在同一系统、同一通道内的失效级联。接着上述小王和老李的故事来举例说明。小王和老李在同一间办公室工作,受流感病毒的影响,老李先是喉咙干痒导致咳嗽,接着出现严重鼻塞导致嗅觉失灵,还伴随间歇性的耳鸣导致听力下降,随着咳嗽不停病情加剧,出现了呼吸道感染导致咽喉肿痛,声带受损无法正常发声。在这种情况下,流感病毒导致老李身体中的耳、鼻、喉发生了“级联失效”。
2. 芯片供电安全设计示例
介绍完失效的相关概念后,接下来我们将结合示例说明在芯片设计过程中,针对供电模块可能导致的失效通常会采取哪些措施。
图 5 所示为处理器芯片内部组件示意图,加粗框部分是芯片内部的电压调节组件。
图 5 中的电压调节器(Embedded Voltage Regulator,EVR)被识别为芯片内部的共享资源,由该调节器通过内部其他供电网络向芯片内部其他组件供电。示意图中还显示了一个电压监控模块,以监控 EVR 的电压。
EVR 可以为处理器芯片内的每个硬件要素供电。
假设在按照功能安全标准要求开发过程中,有如下要求分配给了处理器芯片。
- MCU-REQ-2 :导致中央处理单元(CPU)输出错误的随机硬件故障,应在 20ms 内被检测到。
- MCU-REQ-2.1 :CPU 应由冗余 CPU 监控。CPU 和冗余 CPU 的输出通过硬件比较器在每个时钟周期进行比较。
- MCU-REQ-2.2 :当 CPU 和冗余 CPU 的输出不匹配时,应生成错误事件。
基于上述处理器内部组件模块对安全要求 MCU-REQ-2 实施 FTA,得到图 6 所示故障树。
根据上述 FTA 识别出的共享资源和冗余要素,得出该处理器中关于供电模块的相关失效分析,如图 7 所示。

图 5 处理器芯片内部组件示意图

图 6 处理器 FTA 示例 01

图 7 处理器供电模块 DFA 示例
根据上述 DFA 结果,在原有芯片架构的基础上增加了新的带隙监控元件,以降低与带隙漂移失效模式相关的失效风险。在考虑供电模块的安全因素后,架构上新增了相关安全模块 (见图 8 中浅灰色填充模块)。增强处理器芯片的内部架构如图 8 所示。
以上示例只是为了说明在芯片设计过程中如何考虑安全属性。通过示例可以看出,为了实现功能安全,芯片架构设计在哪些地方需要增加什么电路都要经过安全分析。从设计到实施,再到验证,都需要遵循标准流程,以确保安全完整性、一致性和可追溯性。

图 8 增强处理器芯片内部架构 01
#03
芯片的时钟安全
芯片内部的时钟管理逻辑电路通常包括时钟源和时钟生成逻辑电路,其中时钟生成逻辑电路包含锁相环(PLL)的时钟倍乘、时钟分配器和时钟分配逻辑电路。
针对时钟管理逻辑电路的组成模块,以某一安全微控制器为例,在芯片设计过程中通常会考虑以下检测电路,以应对时钟管理逻辑电路的各种可能失效模式。
( 1 )低功耗振荡器时钟检测器
低功耗振荡器时钟检测器(LPOCLKDET)是用于检测主时钟振荡器故障的安全诊断工具。LPOCLKDET 采用嵌入式高频、低功耗振荡器(HF LPO)。时钟检测电路的工作方式是检验某一个时钟(振荡器或者 HF LPO)在其余时钟上升沿之间的上升沿。结果表明,除了标记不正确、频率重复,电路也会由于瞬态情况发生故障。
(2 )PLL 差异检测
PLL 逻辑电路具有检测 PLL 输出时钟差异的嵌入式诊断功能。该差异由基准时钟和反馈时钟之间的相位锁定损失引起。错误响应和指示取决于系统模块内 PLL 控制寄存器的设计。
(3)双时钟比较器
一个或多个双时钟比较器(Dual Clock Comparator,DCC)被用于多用途安全诊断。DCC 可以用于检测不正确频率和时钟源之间的漂移。DCC 由两个计数器块组成,一个计数器块用作基准时基,另一个用作测试时钟。基准时钟和测试时钟均可由软件选择。基准时钟和测试时钟之间的时钟频率理论设计比例作为时钟频率的预期比率,两者实际测试值的比率与预期比率的偏差会生成一个错误信号。
(4)外部时钟输出监控(ECLK)
某些处理器芯片提供了将选定的内部时钟信号输出以进行外部监控的功能。通过编辑系统模块内的寄存器,软件可以对该特性进行配置。
处理器时钟电路模块是一个典型的通用基础设施模块,其随机硬件失效导致的相关失效也需要在芯片设计过程中加以考虑,如图 9 所示。继续以上述处理器内部组件示例为例,先通过实施 FTA 识别出相关失效引发源(DFI),然后基于识别的 DFI 开展相关失效分析。
根据图 9 的 FTA 识别出的时钟作为相关失效引发源,得到该处理器中关于时钟电路的相关失效分析,如图10中圈所示内容。
根据上述 DFA 结果,在原芯片架构的基础上增加新的振荡器元件,以降低与时钟漂移失效模式相关的失效风险。针对时钟模块考虑安全因素后,在架构上增设了相关安全模块(见 图 11 中的浅灰色填充模块)。增强处理器芯片的内部架构如图 11 所示。

图 9 处理器 FTA 示例 02

图 10 处理器时钟模块 DFA 示例 02

图 11 增强处理器芯片内部架构 02
#04
芯片的存储安全
在数据寻址、写入、存储和读取过程中会用到芯片的数字电路组件和存储器,以下将从这两方面来谈一谈芯片的存储安全。
1. 故障
( 1 )数字电路组件故障
芯片中的数字电路组件包括微控制器、片上系统(SoC)器件、专用集成电路(ASIC), 以及现场可编程门阵列(FPGA)等。
芯片的数字电路组件故障通常包括以下几种。
1 )永久性故障又称“硬错误 / 硬故障”,详细描述如下。
卡滞故障:电路中的故障特征是不管输入激励如何变化,节点保持在逻辑高( 1 )或逻辑低(0)的状态。
开路故障:将一个节点破坏成两个或多个节点,从而改变节点数量的电路故障。
桥接故障:指两个信号之间的意外连接。根据所使用的逻辑电路,可能产生“线或” 或“线与”的逻辑功能。该故障通常仅发生在物理上相邻的信号之间。
单粒子硬错误(Single Event Hard Error ,SHE):由单次辐射事件引起的不可逆变化, 通常涉及器件中一个或多个要素的永久性损坏。
2)瞬态故障(transient fault)也称“软错误 / 软故障”,详细描述如下。
单粒子瞬态脉冲(Single Event Transient ,SET):单个高能粒子穿过引起集成电路某节点瞬时电压漂移(例如,电压尖峰)。
单粒子翻转(Single Event Upset ,SEU):高能粒子穿过引发的信号翻转造成的软错误。
单比特位翻转(Single Bit Upset ,SBU):由单粒子引起的单个存储单元翻转。
多单元翻转(Multiple Cell Upset,MCU):单粒子引起集成电路中的多个比特位同时失效。错误位通常(但不总是)在物理上相邻。
多比特位翻转(Multiple Bit Upset,MBU):由单粒子引起的同一个半字节、字节或字中的两个或多个比特位错误。多比特位翻转不能通过简单的纠错码(ECC)进行校正(例如,单比特位错误校正)。
单粒子瞬态脉冲(SET)、单粒子翻转(SEU)、单比特位翻转(SBU)、多单元翻转(MCU) 和多比特位翻转(MBU)通常被称为“软错误”。之所以被称为“软错误”,是因为电路本身并未受到辐射的永久损坏。
(2)存储器故障
存储器故障可能因存储架构和存储技术而有所差异。半导体存储器的典型故障如表 1 所示。
表 1 存储器故障模型

当辐射事件引起足够的电荷干扰,导致低能量的半导体存储单元、寄存器、锁存器或触发器的数据状态发生扭转或翻转时,软错误就会发生。
2. 故障防护措施
针对数字电路组件和存储器的故障,标准给出了故障防护措施及可实现的典型诊断覆盖率,如表 6-9 所示。
现代安全微控制器芯片中通常会部署相关电路,以检测并纠正存储器中的位错误。内存保护单元(MPU)是现代安全微控制器芯片中专门用于实施内存分区和隔离的安全电路模块, 防止不同数据存储区域的未授权访问。
#05
芯片的温度监控
应用半导体技术的芯片在适宜温度下功能和性能表现最佳。通常,高温会导致芯片不可逆损坏,而低温引起的功能异常往往是可恢复的。异常温度(尤其是高温)不仅会导致芯片工作异常,还会加速老化,影响芯片寿命,同时增加系统功耗,降低整个系统的可靠性。因此,在芯片设计过程中通常会考虑温度的影响。对于功能安全来说,温度作为一种环境应力,是典型的失效引发源,所以实施安全设计芯片时基本会在芯片内部部署温度传感器来监控芯片的内部温度。通常情况下,微控制器中的每个核都会部署一个专有的温度传感器来监控核温。当检测到温度超出预设的范围值(如 -40℃~ 150℃)时,温度传感器会输出一个温度状态信号,芯片会进入 Fail-safe 状态并输出一个故障信号给上层系统。
在芯片内部部署温度传感器以监控核温属于探测措施。在实际的芯片设计过程中,除了探测类的安全措施外,我们还会同步考虑预防措施,比如芯片的散热设计。类似于白色家电的综合能效指标,功耗也是衡量芯片性能的重要参数。芯片内部的散热设计不仅能降低功耗、提升性能,还有助于满足芯片的安全和完整性要求。以下是一些常见的芯片散热技术,仅供参考。
- 增加散热层:在芯片封装中增加散热层,将芯片产生的热量传递至封装表面,再通过散热器将热量散发出去。散热层可以采用金属、陶瓷等导热材料。
- 热管技术:热管是一种高效的传热元件,可以在较小的空间内传递大量热量。在芯片内部,可以将热管与芯片的散热区域连接,将热量快速传递到热管的另一端,再通过散热器散发出去。
- 热设计优化:通过优化芯片的热设计,减少热阻和集中规划散热路径,提高散热效率。 例如,合理布局芯片内部的发热元件、优化芯片的散热通道、提高封装材料的导热性能等。
微控制器架构内部还部署了许多其他硬件安全措施。想要深入了解,建议结合芯片安全手册进行学习,并将其映射到标准的相关要求中,这可能是实现芯片功能安全设计的最便捷方式。
下一篇,我们将介绍“芯片功能安全架构设计 —— 软件层面”,欢迎关注!
文章转载自公众号:汽车电子与软件
作者:王伟峰
原文链接:https://mp.weixin.qq.com/s/DjMMYNfZv8ghPT4nhe5oDA
