原文:Functional Safety for Integrated Circuits
作者:Tom Meany
翻译:刘辉 邓彦辉
译文审核:徐铱铱
集成电路(ICs)是所有现代安全系统的根本。集成电路提供逻辑,控制传感器,从很大程度上看,其本身就是传感器。集成电路驱动最终元件以实现安全状态,它们是软件运行的平台。半导体内部的高集成度可以简化系统级实现,其代价是IC内部复杂性增加。这种集成会减少器件数量,改善系统可靠性,并为提高诊断覆盖率和缩短诊断测试间隔创造机会——所有的这些都是为了达到安全的同时成本可接受。有人可能会认为,由于复杂性增加,这种高集成度是一件坏事。然而,虽然集成电路复杂性提高,但在模块和系统层面上可以大大简化。令人吃惊的是,过程控制、机械、电梯、变速驱动器和有毒气体传感器都有相应的功能安全标准,但关于集成电路却没有专门的功能安全标准。相反,相关要求和知识是零散地分布在IEC 61508和其他B级、C级标准中。本文为解读现有半导体功能安全标准提供指导。
➡(约6800字,25钟阅读)
01
简介
通常,集成电路按照IEC 61508或ISO 26262标准进行开发。另外,二级和三级标准中有时还会有其他要求。只有按照功能安全标准进行开发和评估,才能让人放心这些复杂的集成电路足够安全。当编写IEC 61508时,其针对的是定制系统,而不是开放市场批量生产的集成电路。本文将回顾并评论集成电路的已知功能安全要求。虽然本文集中讨论IEC 61508及其在工业领域的应用,但很多内容都与汽车、航空电子和医疗等应用有关。
02
功能安全
功能安全是安全性的一部分,用以应对安全相关系统的可靠性需求。功能安全不同于其他被动形式的安全,如电气安全、机械安全或本质安全。
功能安全是一种主动形式的安全。例如,它能确保马达以足够快的速度关闭,防止对打开防护门的操作员造成伤害,或者当有人在附近时,机器人会降低运行的速度和力度。
03
ASIL分解诠释与实践
主要功能安全标准是IEC 61508 1 。该标准的第一版于1998年出版,第二版于2010年出版,并于2017年开始更新至第三版的工作,可能的完成日期是在2022年。自从1998年公布IEC 61508第一版以来,基本IEC 61508标准已针对不同领域进行适应性修改,例如汽车(ISO 26262)、过程控制(IEC 61511)、PLC (IEC 61131-6)、IEC 62061(机械)、变速驱动器(IEC 61800-5-2)以及其他许多领域。此类标准有助于对非常宽泛的IEC 61508进行解释以便用于这些受到更大限制的领域。
一些功能安全标准,例如ISO 13849和D0-178/D0-254,并非衍生自IEC 61508。尽管如此,任何熟悉IEC 61508并阅读这些标准的人都不会对其内容感到过于吃惊。
在安全系统内,当系统运行时,执行关键功能安全活动的是安全功能。安全功能定义了实现或保持安全所必须执行的操作。典型的安全功能包含输入子系统、逻辑子系统和输出子系统。通常,这意味着对潜在的不安全状态进行检测,并且基于检测到的值做出决定,如果认为有潜在危害,则指示输出子系统将系统置于已定义的安全状态。
图1.功能安全标准示例
从不安全状态出现到进入安全状态所用的时间至关重要。例如,安全功能可能包括如下器件:一个传感器用来检测机器上的防护装置是否打开,一个PLC用来处理数据,以及一个具有安全扭矩关闭输入的变速驱动器,改驱动器应该在插入机器中的手可能接近运动部件之前关闭电机。
04
安全完整性等级
SIL代表安全完整性等级,是表示需要将风险降至何种程度才能达到可接受水平的手段。根据IEC 61508标准,安全等级有1、2、3、4四级,从一个级别到下一个级别,安全性会提高一个数量级。机器和工厂自动化场景中不会看到SIL 4,因为一般情况下,这种场合中遭受危险的人员通常不会超过一个。SIL 4针对的是数百甚至数千人可能受到伤害的核能和铁路等应用。还有其他功能安全标准,例如汽车使用ASIL(汽车安全完整性等级)A、B、C和D,以及ISO 13849标准的PL(性能等级)从PLa到PLe。这些等级可以对应到SIL 1至SIL 3级别。
表1.各应用领域安全等级的大致对应关系
作者不相信单个IC可能有超过SIL 3的安全水平。但值得注意的是,IEC 61508-2:2010附录F中的表格显示了一个SIL 4列。
05
三项关键要求
接下来的章节介绍的是功能安全对集成电路(IC)开发提出的三个关键要求。
要求1—遵循严格的开发流程
IEC 61508是一个全生命周期模型,涵盖了从安全概念到需求采集、维护,直至最终废弃处理的所有阶段。不是所有这些阶段都与集成电路相关,甄别哪些阶段有关需要培训和经验。IEC 61508为ASIC提供了一个V模型,另外还有审查、审核及其他要求,它代表了一个体系,虽然不能保证安全,但过去已证明它能指导我们设计制造出安全的系统和IC。
由于更改有缺陷的集成电路的成本很高,所以大多数IC制造商已经建立严格的新产品开发标准。对于小几何尺寸工艺,仅仅一套掩膜的成本就可能超过50万美元。这种情况加上长交货期,迫使集成电路设计商不得不实施严格的开发流程和进行严谨的检查与验证。功能安全的一大区别在于,不仅必须实现安全性,还要证明安全性,即使是最好的IC制造商也需要在其正常开发流程之上添加安全流程,以确保用来证明合规性相应的证据得以创建并存档。
开发流程引入的故障称为系统故障。这些故障只能通过设计变更来解决。与需求采集相关的故障、EMC鲁棒性不足和测试不充分就是此类故障。
IEC 61508-2:2010的附录F列出了一系列专门测量,IEC委员会专家认为这些测量适合用于集成电路开发。表F.2适用于FPGA和CPLD,表F.1适用于数字ASIC。这些测量分为R(推荐)或HR(强烈推荐)两类,具体取决于SII,某些情况下还提供了备选技术。对于拥有良好开发流程的IC供应商来说,其中的要求很少会让人感到意外,但SIL 3的99%故障覆盖率要求是有挑战性的,尤其是对于小型数字或混合信号器件,其中很多电路位于模块的外围。该标准第二版中的要求仅适用于数字IC,但许多要求也可应用于模拟或混合信号IC(ISO 26262的下一版本将包含类似表格,并有针对模拟和混合信号集成电路的版本)。
除表F.1和表F.2外,还有一些介绍性文字也提供了一些见解。例如,这个介绍性文字说允许使用经过实际验证的工具,在复杂度相似的项目中使用18个月是合理的时间长度。这意味着并不需要应用IEC 61508-3关于工具的全部要求。
如果模块/系统设计者过去曾成功使用某一IC,并且了解其应用和现场故障率,那么他可以宣称其"经过实际验证"。对于集成电路设计者或制造商来说,作出这种宣称要困难得多,因为他们一般不太了解最终应用或拥有完备的现场失效器件收集、失效分析流程及数据。
软件
所有软件错误都是系统性的,因为软件不会老化。任何片内软件都应考虑IEC 61508-3的要求。通常,片内软件可能包括微控制器/DSP的内核/引导程序。但在某些情况下,微控制器/DSP可能包含一个由IC制造商预编程的小型微控制器来实现一个逻辑块,而不是使用状态机。该预编程的微控制器软件还需要符合IEC 61508-3的要求。应用级软件通常是模块/系统设计者的责任,而不是IC制造商的责任,但IC供应商可能需要提供编译器或低级驱动程序等工具。如果这些工具用于安全相关应用软件的开发,那么IC制造商需要为最终用户提供足够的信息,以满足IEC 61508-3:2010第7.4.4条中的工具要求。
作者也使用C语言和其他很多编程语言做过编程。作者还做过少量Verilog编程。Verilog及其姊妹语言VHDL是用于设计数字集成电路的两种代表性硬件定义语言(HDL)。一个有趣的问题是HDL是否是软件,但现在遵循IEC 61508-2:2010附录F就足够了。在实践中,作者发现如果遵循附录F,那么结合IEC 61508的其他要求(生命周期阶段等),HDL是否是软件的问题并不重要,因为开发者最终仍要完成所有必需的任务。一个值得注意的相关标准是IEC 62566 2,它处理的是利用HDL开发的核工业安全功能。
要求2—固有可靠性
IEC 61508以PFH(每小时危险故障平均频率)或PFD(需要时发生故障的概率)的形式提出了可靠性要求。这些限制与成年人因自然原因而死亡的风险,以及人们认为工作或处理日常业务不应显著增加这一风险的想法有关。SIL 3安全功能的最大PFH为10–7/h,或者每1000年约有一次的危险故障率。表示为FIT(故障次数/每运行十亿小时的故障率)的话,即为100 FIT。
鉴于典型的安全功能有一个输入模块、一个逻辑模块和一个执行器模块,并且PFH预算必须分配给所有三个模块,所以某一IC的PFH完全可能是个位数(<10 FIT)。可以使用冗余架构来提高这些数字,若有两个100 FIT结构,则每个可以提供相同的置信度,使模块可靠性达到10 FIT(受常见原因故障(CCF)限制)。
假设一个典型的安全功能有一个输入模块、一个逻辑模块和一个执行器模块,并且PFH预算必须跨所有三个块分配,那么给定IC的PFH完全有可能为个位数(<10 FIT)。冗余架构可以用于允许更高的失效率值,这样两个100 FIT的IC,通过限制CCF(共因失效),每个都可以为一个可靠性为10 FIT的IC提供等效的置信度。然而,冗余会消耗大量的空间和能量,并增加成本。
IC制造商如Analog Devices在analog.com/reliabilitydata等网站上提供基于加速寿命测试的所有发布IC的可靠性信息。这种方法不被赞同,因为其可靠性评估是在人工条件下的实验室中完成的。相反,建议使用行业标准,如SN 295003或IEC 62380。然而,这些标准有一些问题:
手册预测的可靠性为99%置信水平,而IEC 61508只要求70%置信水平的数据,因此该标准是保守的。
手册混合了随机和系统故障模式。根据IEC 61508的规定,这些将被区别对待。
手册不经常更新。
手册不考虑供应商之间的质量差异。
像SN 29500这样的标准确实证明了片上晶体管的可靠性。如果使用两个包含500k个晶体管的集成电路来实现一个安全功能,那么它们的FIT为70,而系统的FIT为140。然而,如果用一个100万个晶体管的集成电路取代这两个集成电路,那一个集成电路的FIT只有80,减少了40%以上。
Soft errors(软错误,瞬态失效)在集成电路中经常被忽略。软误差与传统的可靠性预测不同之处在于,一旦功率循环,Soft errors就会消失。它们是由来自太空的中子粒子或来自包装材料的α粒子撞击片上RAM电池或触发器(FF) 而改变存储值引起的。ECC (双比特错误检测和单比特错误纠正) 可用于检测和无缝纠正RAM中的错误,但以降低速度和更高的片上错误为代价。奇偶校验增加了较少的开销,但让系统设计人员解决错误恢复问题。如果奇偶校验或ECC技术不使用,Soft errors率可以超过传统的硬错误率高达1000倍(IEC 61508为RAM提供了1000 FIT/MB的数字)。用于解决用于实现逻辑电路的FF(触发器)中的Soft errors的技术并不令人满意,但看门狗定时器、计算中的时间冗余和其他技术可以提供帮助。
要求 3—容错能力
无论产品多么可靠,有时还是会发生不好的事情。故障容错接受这一现实,然后解决它。实现故障容错包含两个主要因素。一个是使用冗余,另一个是使用诊断。两个因素都说明,无论集成电路的可靠性或用于开发集成电路的开发过程有多好,故障都会发生。
冗余可以是相同的,也可以是不同的,它可以是片内的,也可以是片外的。IEC 61508-2:2010附录E提供了一套技术来证明已经采取了足够的措施来支持使用非多样化冗余的数字电路的片上冗余要求。附件E的目标似乎是双锁步微控制器,没有给出关于片内独立性的指南。
模拟和混合信号集成电路
在相关项与其片内诊断之间
采用多样性冗余的数字电路
然而,在某些情况下,附件E可以为这些情况做出聪明的解释。附件E中一个有趣的项目是βIC计算,这是对片内的共因失效的测量。如果共因失效的β值小于25%,与IEC 61508-6:2010表中的1%、5%或10%相比,该β值较高,则可以做出充分分离的判断。
诊断是集成电路真正能发挥作用的领域。片内诊断可以
设计以适应片上块的预期故障模式
由于对外部引脚的要求有限,不增加PCB空间
高速率运行(最小诊断测试间隔)
通过比较消除了对冗余部件的需求来实现诊断
这意味着片内诊断可以最小化系统成本和面积。一般来说,诊断的设计与其在芯片内监视的部分是多样的(不同的实现),所以诊断部分与正在监视的部分不太可能以同样的方式和同时失效。当诊断部分这样实现时,诊断部分与正在监视的部分很可能会面临相同的问题(通常与EMC、电源供应问题和温度过高有关),即使诊断是在单独的芯片中实现的。虽然标准没有包含这一要求,但仍存在使用片内电源监视器和看门狗电路作为最后的诊断手段的问题。一些外部评估人员会坚持使用片外电源监视器和看门狗电路诊断。
一般来说,简单集成电路上的诊断将由远程微控制器/DSP控制,测量在芯片上完成,但结果在芯片外运送处理。
IEC 61508要求最低诊断覆盖率为SFF(安全故障分数),它考虑了安全和危险故障,与DC(诊断覆盖率)相关但不同,DC忽略了安全故障。可以使用量化的FMEA或FMEDA来衡量实施诊断的成功程度。然而,IC内部实现的诊断也可以覆盖IC外部的组件,IC内部的部分可以由系统级诊断覆盖。当IC开发人员执行FMEDA时,必须假定IC开发人员通常不知道最终应用程序的细节。在ISO 26262术语中,这被称为SEooC(脱离上下文的安全要素)。对于使用IC级FMEDA的最终用户,他们必须满足IC的假设仍然适用于他们的系统。
虽然IEC 61508-2:2010的表A.1(以及表A.2到A.14)对分析集成电路时应该考虑的IC故障给出了很好的指南,但IEC 60760:2010的附件H对该主题给出了更好的讨论。
06
集成电路的开发方案
开发用于功能安全系统的集成电路有几种选择。标准中没有要求只使用符合标准的集成电路,而是要求模块或系统设计者自己符合,所选择的集成电路是适合在他们的系统中使用的。
可用的选项包括:
完全符合IEC 61508标准,附有外部评估和安全手册
符合IEC 61508标准开发,无需外部评估,并附有安全手册
按照开发半导体公司的标准开发流程开发,但发布安全数据表
按照半导体公司的标准流程开发
注:对于不符合IEC 61508标准的部件,安全手册可以称为安全数据表或类似的名称,以避免与符合安全手册标准的部件混淆。
选项1对半导体制造商来说是最昂贵的选择,但也可能为模块或系统设计者提供最有利的选择。在集成电路的安全概念中显示的应用与系统的应用相匹配的组件,可以减少模块或系统的外部评估出现问题的风险。SIL2安全功能的额外设计工作量可以达到20%甚至更多。额外的工作量可能会更高,除非半导体制造商通常已经拥有了一个严格的开发流程,即使没有功能安全。
选项2节省了外部评估的费用,但在其他方面的影响是相同的。这种选择适用于客户无论如何都要获得模块/系统外部认证,而集成电路是该系统的重要组成部分的情况。
选项3最适用于已经发布的集成电路,其中提供安全数据表可以使模块或系统设计者获得更高级别安全设计所需的额外信息。这包括使用的实际开发过程的详细信息、集成电路的FIT数据、任何诊断的详细信息以及生产现场的ISO 9001认证证据。
然而,选项4仍将是开发集成电路最常见的方法。使用这些组件来开发安全模块或系统将需要额外的组件和模块/系统设计的费用,因为组件将没有足够的诊断需要双通道体系结构与单通道体系结构进行比较。如果没有安全数据表,模块/系统设计者还需要做出保守的假设,并将集成电路视为一个黑盒子。
此外,半导体公司需要制定自己的标准解释,作者自己的公司为此开发了内部文件ADI61508和ADI26262。ADI61508采用了IEC 6158:2010的七个部分,并从集成电路开发的角度解释了要求。
07
SIL 2/3 开发
有时集成电路可以根据SIL 3开发出所有的系统要求。这意味着符合IEC 61508-2:2010 SIL 3表F.1的所有相关项目,所有设计评审和其他分析都是按照SIL 3水平进行的。然而,硬件指标可能只适合SIL 2。这样的电路可以被识别为SIL 2/3或更典型的SIL M/N,其中M表示在硬件指标方面可以声明的最大SIL级别,N表示在系统需求方面可以声明的最大SIL级别。两个SIL 2/3集成电路可以用来实现SIL 3模块或系统,因为在硬件指标方面,两个SIL 2项目的并行升级组合到SIL 3,但在系统需求方面,每个项目已经在SIL 3。如果集成电路只有SIL 2/2,将两个这样的集成电路并联仍然不能使它成为SIL 3,因为它最多只能是SIL 3/2。
理想情况下,集成电路需求应该是通过系统层面分析推导得出的,但通常情况并非如此,开发实际上是一个SEooC(参见ISO 26262)或脱离上下文的安全元素。在SEooC的情况下,IC开发人员需要对IC将如何在系统中使用做出假设。然后,系统或模块设计者必须将这些假设与他们的真实系统进行比较,以确定IC的功能安全性是否足以满足他们的系统。这些假设可以决定诊断是在集成电路上实现还是在系统层面实现,从而影响集成电路层面的特性和功能。
08
Security安全
一个系统不可能是安全的,除非它也是严密保护的。目前,IEC 61508或ISO 26262中与Security相关的唯一指南是让读者参考IEC 62443系列。然而,IEC 62443似乎更针对较大的组件,如整个PLC组件,而不是单个IC。好消息是,功能安全标准中消除系统故障的大部分要求也适用于Security。缺乏任何引用是有趣的,因为在某些情况下,硬件可以提供信任的硬件根和功能,如PUF(物理上不可克隆的功能),这对safety和Security很重要。
09
维度的三大阶段
现有的IEC 61508涵盖了从开发集成电路到炼油厂的方方面面。虽然在机械和过程控制等领域有专门的行业特定标准,而且在IEC 61508修订版2中对集成电路有一些指南,但没有专门针对集成电路的标准。缺乏具体的需求使得需求容易被解释,因此在多个客户和外部评估人员的期望之间可能会产生冲突。
这意味着各部门将倾向于在其更高水平的标准中对集成电路作出特定的要求。这些要求已经在EN 50402、7等标准中体现出来,但在ISO 262628的2016年草案中体现得最为明显,其中新增的第11部分专门涉及集成电路。
作者希望定于2021年左右出版的IEC 61508修订版3将扩展和澄清集成电路的指导。作者有幸成为IEC TC65/SC65A MT61508-1/2和MT 61508-3的一员,因此将有机会参与到这些工作中来。也许在未来的修订中会有第8部分专门针对半导体,以便在各个部分之间保持一致,从而开发出满足所有部分要求的集成电路。
即便如此,该标准也不太可能包含IC制造商设计具有功能性安全要求的IC所需的全部内容。与Security、EMC等相关的需求仍然需要从系统应用知识中获得。