汽车SoC安全故障的自动识别(上):逻辑仿真和形式分析

   摘 要   

ISO26262要求根据集成电路在汽车电子系统中的影响(安全、检测到或未检测到),对随机硬件故障进行分类。一般来说,这种分类是通过专家判断和工具组合来进行的。然而,由于集成电路复杂度的不断增加,产生了巨大的故障空间,使得这种形式的故障分类容易出错且耗时。所以有需要一种自动化和系统化的方法,对SoC中的硬件故障进行分类。

本文的重点是识别安全故障,本文所提出的方法的是,利用覆盖度分析来识别安全故障,同时考虑应用程序的所有约束。然后对应用程序的行为进行建模,这样可以利用形式分析工具。我们用一个巡航控制系统的AutoSoC做为示例,对所提出的技术进行了评估。借助我们的方法,可以将 CPU、UART和CAN中的20%、11%和13%归类为安全故障。这种分类还可以将CPU和CAN模块的软件测试库的诊断覆盖率提高4%到6%,从而提高可测试故障覆盖率。

本专题连载共分为“上、下”两个篇章此文为该连载系列的“上”篇,主要通过较全面地阐述安全故障的背景知识,进而提出了应用相关的安全故障识别方法。

1、简介

复杂的硬件和软件系统越来越多的在安全相关环境中使用,例如汽车、飞机或医疗设备,为此人们引入了安全标准来估计和降低风险。这些风险包含了人身伤害或对人类整体健康的损害。因此,需要特殊的灾害轻减解决方案来应对这些在关键领域工作的系统。比如汽车行业,为了实现自动驾驶,部署在汽车中的SoC和应用程序的数量正在显著增加。现代汽车已经集成了100多个电子控制单元(ECU),以应对复杂应用带来的挑战,例如高级驾驶辅助系统(ADAS)。硬件和软件应用程序的复杂性在架构和功能层面上都提升了。

其中,硬件复杂度定义为单个SoC/芯片上集成了多少组件和模块。而软件复杂性,除了与功能及内部交互的部件数量有关,还与时间复杂性有关。此外,采用先进的集成电路(IC)技术,对汽车的安全提出了更大的挑战,因为诸如纳米电子老化、工艺变化或静电放电等多种现象会引入许多漏洞。因此,汽车行业制定了ISO26262道路车辆功能安全标准,以最大限度地降低与车辆中使用的电气和/或电子系统相关的风险。对于汽车应用,每个电子系统都必须检测并正确管理大部分运行过程中的故障,以避免危及人身安全的情况。为了确定哪些故障可能会干扰IC的安全关键功能,必须使用专家判断和工具组合分析,并根据故障在运行模式中的影响对故障进行分类。从这个角度来看,故障可以分为安全故障或危险故障。安全故障不会导致违反安全目标,而危险故障可能会导致与整个系统相关的故障,即产生危害。我们注意到,所有术语和定义均在ISO26262上下文中给出。安全故障包括位于应用程序未使用的IC部分的故障,以及被某些安全机制覆盖的故障。

显然,故障分类对于在运行模式下测试IC至关重要。该测试可以借助不同的解决方案来执行,包括可测试性设计(例如BIST)和基于软件自测(SBST)范式的软件测试库(STL)。在这两种情况下,安全故障的识别都是至关重要的,因为它使我们能够从初始(通常是巨大的)故障列表中删除安全故障,并将测试工作集中在剩余的故障上,比如可测试的故障。因此,识别安全故障可以更轻松地达到目标诊断覆盖率(DC),从而有助于实现安全要求,例如更高的汽车安全完整性等级(ASIL)。出于这些原因,产生了自动化、系统和全面的安全故障识别技术的需求。

图1总结了故障分类流程的影响,并参考了一个常用的案例。我们假设SoC在其生命周期内只运行单个软件(SW)应用程序,并使用STL作为安全机制。因此,必须计算该STL的DC,以证明它在目标设计中检测到一定程度的危险故障。在流程的第一步,没有任何分类,所有故障都是未知的,如图1所示。然后,执行初始分类以识别第一组结构安全故障,即从IC结构上就是安全的故障(例如,未连接到IC主要输入和/或输出的线路上的故障)。此外,可以使用任何自动模式测试生成(ATPG)或形式分析工具来识别这些类型的安全故障。但是,可能存在这些工具无法识别的其他安全故障,因此,在第一步之后仍有相当多的故障是未知的。而这些未知故障需要进一步分析,以检查其是否会影响安全关键功能。因此,使用STL进行故障仿真,以更好地对故障进行分类。在实践中,此步骤(在图1中命名为未优化分类)会产生不准确的结果,因为通常不可能详尽地评估所有可能的输入激励或激活所有应用程序的运行模式。可见,未检测到的故障可能对应于安全故障或危险故障。如图1所示,故障仿真以未知故障为目标,并将其分类为已检测到或未检测到。根据在目标设计上运行的工作负载,可能会观察到不可忽略的未检测到的故障数量。通常,所有未检测到的故障都被保守地归类为危险故障。出于这个原因,从故障仿真中收集到的数据可能无法代表设计运行行为,因为并非所有故障都可以准确分类。在此步骤中使用(1)计算DC,其中Detected是故障仿真中分类为可检测到且危险的故障数;Total是目标系统故障列表的大小;Safe是安全故障的数量。如果DC还不够,则必须改进测试,或者需要针对未检测到的故障进行额外的分类工作,即未检测到的故障的子集,以对其影响进行分类。专家通常根据他们的设计知识执行此步骤;但是,这容易出错且耗时。因此,未优化的分类意味着故障分类保守主义,仍有改进的空间。本文采用一种形式分析方法优化了故障分类(称为优化分类),如图1的第四条所示,其目标是识别更多安全的故障,减少未检测到的故障数量&#

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值