控制/MCU
集成电路 (IC) 是所有现代安全系统的根本。集成电路提供逻辑,控制传感器,从很大程度上看,其本身就是传感器。集成电路驱动最终元件以实现安全状态,它们是软件运行的平台。半导体内部的高集成度可以简化系统级实现,其代价是IC内部复杂性增加。这种集成会减少器件数量,改善系统可靠性,并为提高诊断覆盖率和缩短诊断测试间隔创造机会——所有这些都是以安全性适中为代价的 [NK1] 。有人可能会认为,由于复杂性增加,这种高集成度是一件坏事。然而,虽然集成电路复杂性提高,但在模块和系统层面上可以大大简化。令人吃惊的是,过程控制、机械、电梯、变速驱动器和有毒气体传感器都有相应的功能安全标准,但关于集成电路却没有专门的功能安全标准。相反,相关要求和知识是零散地分布在IEC 61508和其他B级、C级标准中。本文为解读现有半导体功能安全标准提供指导。
通常,集成电路按照 IEC 61508 或 ISO 26262 标准进行开发。另外,二级和三级标准中有时还会有其他要求。只有按照功能安全标准进行开发和评估,才能让人放心这些复杂的集成电路足够安全。当编写 IEC 61508 时,其针对的是定制系统,而不是开放市场批量生产的集成电路。本文将回顾并评论集成电路的已知功能安全要求。虽然本文集中讨论 IEC 61508 及其在工业领域的应用,但很多内容都与汽车、航空电子和医疗等应用有关。
功能安全是安全性的一部分,与系统在需要的时候是否有把握执行安全相关任务有关 [NK2] 。功能安全不同于其他被动形式的安全,如电气安全、机械安全或本质安全。
功能安全是一种主动形式的安全。例如,它能确保马达以足够快的速度关闭,防止对打开防护门的操作员造成伤害,或者当有人在附近时,机器人会降低运行的速度和力度。
主要功能安全标准是 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 并阅读这些标准的人都不会对其内容感到过于吃惊。
在安全系统内,当系统运行时,执行关键功能安全活动的是安全功能。安全功能定义了实现或保持安全所必须执行的操作。典型的安全功能包含输入子系统、逻辑子系统和输出子系统。通常,这意味着对潜在的不安全状态进行检测,并且基于检测到的值做出决定,如果认为有潜在危险 [NK3] ,则指示输出子系统将系统置于已定义的安全状态。
图 1.功能安全标准示例。
不安全状态存在到实现安全状态的时间至关重要 [NK4] 。例如,安全功能可能包括如下器件:一个传感器用来检测机器上的防护装置是否打开,一个 PLC 用来处理数据,以及一个具有安全扭矩关闭输入的变速驱动器,它在 [NK5] 插入机器中的手可能接近运动部件之前关闭电机。
SIL 代表安全完整性等级,是表示需要将风险降至何种程度才能达到可接受水平的手段。根据 IEC 61508 标准,安全等级有 1、2、3、4 四级,从一个级别到下一个级别,安全性会提高一个数量级。机器和工厂自动化场景中不会看到 SIL 4,因为一般情况下,这种场合中遭受危险的人员通常不会超过一个。SIL 4 针对的是数百甚至数千人可能受到伤害的核能和铁路等应用。还有其他功能安全标准,例如汽车使用 ASIL(汽车安全完整性等级) A、B、C 和 D,以及 ISO 13849 标准。其性能等级 a、b、c、d 和 e 可以对应到 SIL 1 至 SIL 3 尺度。
表 1.各应用领域安全等级的粗略对应
笔者不相信单个 IC 可能有超过 SIL 3 的安全水平。但值得注意的是,IEC 61508-2:2010 附录 F 中的表格显示了一个 SIL 4 列。
功能安全对 IC 开发提出了三项关键要求。下面研究这些要求。
IEC 61508 是一个全生命周期模型,涵盖了从安全概念到需求采集、维护,直至最终物料处理 [NK6] 的所有阶段。不是所有这些阶段都与集成电路相关,甄别哪些阶段有关需要培训和经验。IEC 61508 为 ASIC 提供了一个V模型,另外还有审查、审核及其他要求,它代表了一个体系,虽然不能保证安全,但过去已证明它能产生 [NK7] 安全的系统和 IC。
由于更改故障 [NK8] 集成电路的成本很高,所以大多数 IC 制造商已经建立严格的新产品开发标准。对于小几何尺寸工艺,仅仅一套掩膜的成本就可能超过 50 万美元。这种情况加上长交货期,迫使集成电路设计商不得不实施严格的开发流程和优良 [NK9] 的检查与验证阶段 [NK10] 。功能安全的一大区别在于,不仅必须实现安全性,还要证明安全性,即使是最好的IC制造商也需要在其正常开发流程之上添加安全流程,以确保合规性的适当证据得以创建并存档 [NK11] 。
开发流程引入的故障称为系统故障。这些故障只能通过设计变更来解决。与需求采集相关的故障、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,并且了解其应用和现场故障率,那么他可以宣称其“经过实际验证”。对于集成电路设计者或制造商来说,作出这种宣称要困难得多,因为他们一般不太了解最终应用或将现场故障单元返回给他们进行分析的百分率的含义 [NK12] 。
所有软件错误都是系统性的,因为软件不会老化。任何片内软件都应考虑 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 开发的核工业安全功能。
IEC 61508 以 PFH (每小时危险故障平均频率)或 PFD (需要时发生故障的概率)的形式提出了可靠性要求。这些限制与成年人因自然原因而死亡的风险,以及人们认为工作或处理日常业务不应显著增加这一风险的想法有关。SIL 3 安全功能的最大 PFH 为 10–7/h,或者每 1000 年约有一次的危险故障率。表示为 FIT (故障次数/每运行十亿小时的故障率)的话,即为 100 FIT。
鉴于典型的安全功能有一个输入模块、一个逻辑模块和一个执行器模块,并且 PFH 预算必须分配给所有三个模块,所以某一 IC 的 PFH 完全可能是个位数 (《10 FIT)。可以使用冗余架构来提高这些数字,若有两个 100 FIT 结构,则每个可以提供相同的置信度,使模块可靠性达到 10 FIT (受常见原因故障 (CCF) 限制)。然而,冗余会消耗大量空间和能量,并增加成本。
ADI 公司之类的 IC 制造商在网站上提供其所有已发布 IC 的基于加速寿命测试的可靠性信息。此信息有时会不被重视,因为这种可靠性评估是在人为条件下于实验室中完成的。推荐使用行业标准,如 SN 295003 或 IEC 623804,但这些标准有一些问题:
•它们预测 99% 置信度下的可靠性,IEC 61508 仅要求 70% 置信度下的数据,因此标准偏悲观。
•它们将随机故障模式和系统故障模式混为一谈。根据 IEC 61508 的规定,应以不同方式处理这些故障模式。
•它们不是经常更新。
•它们未考虑不同供应商之间的质量差异。
SN 29500 之类的标准说明的是片内晶体管的可靠性。如果使用两个 IC (每个有 50 万个晶体管)来实现安全功能,每个 IC 的 FIT 为 70,那么整个系统的 FIT 为 140。但是,如果用一个含 100 万个晶体管的 IC 来替代这两个 IC,那么这一个 IC 的 FIT 只有 80,减少了 40% 以上。
IC 内部的软错误往往被忽略。软错误不同于传统的可靠性预测,因为一旦断电再通电,软错误就会消失。引起软错误的原因是空间中的中子或封装材料中的α粒子,它们撞击片内RAM单元或触发器 (FF),改变其中存储的值。ECC (双比特错误检测和单比特错误校正 [NK13] )可用来检测并无缝纠正 RAM 中的错误,但代价是速度降低和片内错误增多。奇偶校验增加的开销更少,但系统设计人员需要解决错误恢复问题。如果不使用奇偶校验或 ECC 技术,则软错误率可能会比传统硬错误率高出多达 1000 倍 (IEC 61508 提供的RAM数值为 1000 FIT/MB)。用于解决实现逻辑电路的 FF (触发器)中软错误的技术不那么令人满意,但看门狗定时器、计算中的时间冗余以及其他技术可提供帮助。
无论产品有多可靠,有时候还是会出事。容错性承认这一现实并予以解决。容错性主要包含两方面。一个是使用冗余,另一个是使用诊断。这两方面都承认 [NK14] ,无论 IC 的可靠性或 IC 开发流程有多好,故障难免会发生。
冗余可以是相同的或不同的,可以在片内或片外。IEC 61508-2:2010 的附录 E 提供了一组技术来证明,已经采取了充分的措施来支持关于数字电路使用相同冗余的片内冗余性声明。附录E似乎是针对双锁步微控制器的,针对以下方面的片内独立性没有给出任何指导:
•模拟和混频信号集成电路
•模块与其片内诊断之间
•采用不同冗余的数字电路
但在某些情况下,可以针对这些情况对附录E加以灵活解释。附录 E 中有一个有意思的内容是 βIC 计算,其衡量片内常见原因故障。通过它可以判断间隔是否足够,前提是常见原因故障的来源所代表的 β 小于 25%,这与 IEC 61508-6:2010 的表格中的 1%、5% 或 10% 相比是较高的。
诊断是集成电路真正可以大放异彩的领域。片内诊断可以:
•通过设计来适应片内模块的预期故障 [NK15] 模式
•不增加 PCB 空间,因为外部引脚需求有限
•以高速率运行(诊断测试间隔极小 [NK16] )
•无需冗余器件来通过比较进行诊断
这意味着片内诊断可以最大限度地减少系统成本和面积。一般而言,诊断是多种多样的(有不同实施方式),取决于其监控的片内项目[NK17] ,因此它们不太可能以与被监控项目[NK18] 相同的方式和同时发生故障。当故障确实发生时[NK19] ,它们遇到的很可能是同样的问题(常常与EMC、电源问题和温度过高有关),哪怕诊断功能是在单独的芯片上实现。虽然该标准不包含此要求,但存在与使用片内电源监视器和看门狗电路有关的问题,而这些是最后的诊断手段。[NK20] 某些外部评估人员会坚持将此类诊断放在片外。
一般来说,对较简单集成电路的诊断将由远程微控制器/DSP 控制,测量在片内完成,但结果发送到芯片外进行处理。
IEC 61508 要求最低级别的诊断覆盖率[NK21] ,用 SFF (安全失效系数[NK22] )给出,其考虑安全故障和危险故障,与忽略安全故障的 DC (诊断覆盖率)相关但不同。已实施诊断的成功程度可以使用量化 FMEA 或 FMEDA 来衡量。但是,在 IC 中实施的诊断也可以覆盖 IC 外部的器件,IC 内的项目 [NK23] 可以通过系统级诊断来覆盖。当 IC 开发人员执行 FMEDA 时,必须假定 IC 开发人员一般不知道最终应用的细节[NK24] 。在 ISO 26262 术语中,这被称为 SEooC (脱离背景的安全要素[NK25] )。对于要利用 IC 级 FMEDA 的最终用户,他们必须确信上述假设对其系统仍然成立。
虽然 IEC 61508-2:2010 的表 A.1 (实际上是表 A.2 至 A.14)就 IC 失效提供了很好的指导,分析 IC 时应予以考虑,但 IEC 60730:2010 5 的附录 H 就该主题提供了更好的论述。
开发用于功能安全系统的集成电路有几种方案。标准中没有要求只能使用符合标准的集成电路,而是要求模块或系统设计人员确信所选的集成电路适用于目标系统。
可用方案包括:
•方案 1:完全依照 IEC 61508 标准进行开发,使用外部评估和安全手册
•方案 2:依照 IEC 61508 标准进行开发,无外部评估,但有安全手册
•方案 3:依照半导体公司的标准开发流程进行开发,但会发布安全数据手册
•方案 4:依照半导体公司的标准流程进行开发 [NK26]
注意:未依照 IEC 61508 开发的器件,其安全手册可能被称为安全数据手册或类似名称,以避免与遵照安全手册开发的器件发生混淆。
对于半导体制造商来说,方案1成本最高,但对模块或系统设计商来说可能最有利。拥有这样一个器件,其中集成电路安全概念中显示的应用与系统的应用相匹配,可以降低模块或系统进行外部评估时遇到问题的风险。SIL 2 安全功能的额外设计工作量可能在 20% 或更多。即使没有功能安全,半导体制造商通常也已经实施了严格的开发流程,而且额外工作量可能会更多。
方案 2 节省了外部评估的成本,但其他方面的影响相同。如果客户无论如何都要让模块/系统进行外部认证,并且集成电路是该系统的重要组成部分,那么此方案是合适的。
方案 3 最适合于已经发布的集成电路,提供安全数据手册可以让模块或系统设计人员获得其在更高级别上进行安全设计所需的额外信息。这包括如下信息:所用实际开发流程的详细信息,集成电路的 FIT 数据,任何诊断的详细信息,以及制造现场的 ISO 9001 认证证据等。
然而,方案 4 仍然是开发集成电路最常用的方法。使用此类器件开发安全模块或系统,将需要额外的器件和开支用于模块/系统设计,因为这些器件没有充分的诊断能力,需要双通道架构以资比较,而不是单通道架构。若没有安全数据手册,模块/系统设计人员还需要做出保守的假设,并将集成电路视为黑盒子。
此外,半导体公司需要制定自己对标准的解释,笔者自己的公司为此开发了内部文件 ADI61508 和 ADI26262。ADI61508 采用了 IEC 61508:2010 的七个部分,并根据集成电路开发解释了相关要求。
有时候,集成电路可以依照 SIL 3 的所有系统要求进行开发。这意味着 IEC 61508-2:2010 表 F.1 针对 SIL 3 的所有相关项目都得到遵守,并且所有设计评审和其他分析都按照 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。
除了几乎全部安全功能都由集成电路实现的情况之外,很难为半导体指定 SFF、DC 或 PFH 限值。以 SFF 为例,SIL 3 要求 SFF 大于 99%,这适用于完整安全功能,而不只是集成电路。如果集成电路为 98%,仍然可以利用它来实现 SIL 3 安全功能,但系统的其他部分需要实现更高的覆盖率以进行补偿。集成电路的安全手册或安全数据手册需要公布 λDD、λDU 和 λ 以用于系统级 FMEDA。
理想情况下,IC要求是在系统级分析中导出的,但通常情况并非如此,开发实际上是一个 SEooC (参见 ISO 26262,脱离背景的安全要素[NK27] )。在 SEooC 的情况下,IC 开发者需要假设 IC 在系统中将会如何使用。然后,系统或模块设计者必须将这些假设与实际系统进行比较,以确定 IC 的功能安全性对系统是否足够。这些假设可以决定诊断是在IC上实施,还是在系统级实施,并因此影响IC级特性和功能。
系统的安全性与保密性密不可分。目前,IEC 61508 或 ISO 26262 中与保密性有关的唯一指导是让读者参考 IEC 62443 系列 6。但是,IEC 62443 似乎更多地是针对较大的组件,例如整个 PLC 组件,而不是单个 IC。好消息是,功能安全标准中消除系统故障的大部分要求也适用于保密性。没有任何参照是很有趣的,因为在某些情况下,硬件可以提供硬件信任根和类似 PUF (物理上不可克隆的功能)的功能,这对于安全性和保密性十分重要。
现有 IEC 61508 涵盖了从集成电路开发到炼油厂的一切。虽然针对机械和过程控制等领域有专门的行业专用标准,并且 IEC 61508 第二版中有关于集成电路的一些指导,但针对集成电路并无专用标准。缺乏具体要求导致要求被任意解释,因此不同客户和外部评估人员的期望之间可能出现冲突。
这意味着,各行业将倾向于按照更高层次的标准对集成电路提出行业特定的要求。这样的要求已经可以在 EN 50402 7 等标准中看到,但最特别的是 ISO 26262的2016 版草案 8 中,其中新增的第 11 部分专门处理集成电路。
全部0条评论
快来发表一下你的评论吧 !