如何加速自动驾驶SoC芯片的功能安全验证

自动驾驶汽车是数十个高度复杂系统的集大成者,它将最先进的技术融入电子硬件、传感器、软件等。构思和设计这些系统无疑是当今工程师面临的最大挑战之一。唯一更大的挑战是让谨慎的公众相信这些自动化系统比预期更安全。根据美国汽车协会(AAA)最近的一项调查,71%的美国人表示害怕乘坐无人驾驶汽车。公众对自动驾驶的看法仍然是成功的最大障碍(图1)。

如何加速自动驾驶SoC芯片的功能安全验证_第1张图片

图1:赢得谨慎的公众的信任是自动驾驶汽车技术必须克服的最大障碍

自动驾驶汽车制造商需要展示他们开发的自动驾驶系统的各个方面的安全性和可靠性,从而建立与公众的信任,并平息他们的恐惧。除了软件外,为这些系统提供支撑的先进集成电路(IC)和SoC硬件也将成为关键问题。为此,汽车行业建立了一套专注于电气和电子系统安全的流程和标准,称为功能安全。

功能安全的目标是降低电气和电子元件因故障而发生失效的风险。在汽车行业,这些流程和要求已在ISO 26262标准中规范化。ISO 26262要求对电子设备进行随机硬件故障和系统故障测试。

系统性故障是指防止IC或SoC根据产品规格正常运行的故障。这些可能是设计错误、硬件/软件接口问题、误解或不完整的规范等等。随着时间的推移,IC行业积累了大量用于处理系统故障的知识、工具和流程。相比之下,该行业的经验较少,也没有能力发现和解决随机硬件故障。随机硬件故障是不可预测的,并且会随着IC的运行而发生。

ISO 26262要求芯片在发生随机硬件故障时继续工作或者失效安全。确保IC随机故障失效安全需要四个关键过程(图2):

· 生命周期管理:覆盖从计划到合规的功能安全生命周期。包括变更、配置、项目、需求、质量保证和审计/合规管理。生命周期管理过程在整个开发过程中持续开展。

· 安全分析:帮助设计人员了解设计如何因随机硬件故障而失效。故障模式和影响诊断分析(FMEDA)识别设计的潜在故障模式、故障率、每种模式将如何影响其功能,以及自动诊断将捕获每种故障模式的概率。然后,工程师进行安全差距分析,以确定达到其安全目标所需的安全改进。

· 安全设计:通过增强设计以减轻随机硬件故障造成的潜在故障。这是通过在设计中插入检测和纠正错误行为的安全机制来实现的,确保设计运行安全或者失效安全。

· 安全验证:通过故障注入过程验证一组故障度量指标,来证明设计是安全的。故障指标集包括单点和潜在故障指标(SPFM/LFM)以及诊断覆盖率(DC)。

如何加速自动驾驶SoC芯片的功能安全验证_第2张图片

图2:安全IC设计的四个关键过程

这些过程在闭环流程中运行,每个过程的结果都会通知下一步。这对于解决随机硬件故障和一次性构建安全的IC设计至关重要。我们简要讨论一下这些流程和高级验证技术,它们可以提高验证工程师在每个阶段的效率。

生命周期管理

ISO 26262包括设计变更、测试结果和安全指标的跟踪和管理指南。许多公司仍然依靠他们的工程师手动跟踪和收集这些信息。手动方法速度慢,容易在记录的数据中引入错误,并且无法将重要信息链接在一起,使得追溯变得困难。因此,工程师在为审计和评估创建必要的工作产品之前,会花时间将信息拼凑在一起。随着汽车IC的日益复杂,手动需求和合规性管理已不再足够。

需求驱动的验证流程对于在汽车IC业务中竞争的公司至关重要。应用程序生命周期管理(ALM)解决方案,通过为整个功能安全流程提供数字主干,来实现需求驱动的流程。ALM为工程师提供了证明关键汽车电子设备功能安全所需的信息,从而消除了手动收集这些数据的耗时过程。

安全分析

有了生命周期管理解决方案,证明功能安全的第一步是安全分析。安全架构师通常首先通过创建故障模式和影响诊断分析(FMEDA)来识别设计的故障模式,然后计算设计的基础失效率 (FIT),并估计单点故障和潜在故障指标(SPFM/LFM)。然后,安全架构师可以探索需要提高安全性的设计领域,并确定适当的安全机制以满足目标安全等级(图3)。
如何加速自动驾驶SoC芯片的功能安全验证_第3张图片

图3:安全分析确定了设计的故障模式和合适的安全机制

在改进设计后,安全分析期间生成的指标将作为安全验证阶段比较的基准。此类分析应在设计的架构级别进行,以生成最准确的数字,从而增加在第一次创建安全IC的可能性,进而节省成本高昂且耗时的迭代。

安全设计

既然工程师已经制定了让他们的设计更安全的计划,那么根据安全分析,下一步就是在设计中插入安全机制。先进的解决方案能够将安全机制自动插入RTL,以实施运行时设计强化技术(即ECC、CRC、奇偶校验、重复、复制)。这些机制是基于硬件的,直接解决永久和瞬态单点故障。然后,工程师可以插入逻辑和内存内置自测(LBIST/MBIST)结构,以及用于这些引擎运行的控制器。这些片上测试可以识别现场发生的潜伏故障,从而提高汽车芯片的长期安全性和可靠性。

安全验证

最后,必须通过观察其出现故障时的行为方式,来验证改进的芯片设计是否安全。安全验证从使用安全分析阶段生成的故障列表开始。然后,故障仿真用于将这些故障注入设计,产生一组新的故障度量,以证明在安全设计期间插入的安全机制的有效性。

故障仿真用于验证设计中识别的大部分故障。在RTL级别,IC设计的所有网络、寄存器和端口都可能存在故障。再往下一层,门级网表的故障可能会多很多倍,达到数百万。考虑安全指标会进一步增加潜伏故障的数量。此外,汽车SoC包含数字和模拟/混合信号电路的混合,增加了潜伏故障数量,并且需要可以跨数字和模拟/混合信号模块执行故障注入的解决方案。

为了保持仿真时间可控,工程师使用一系列技术来缩小故障活动或故障列表的范围,这被称为故障优化。一个例子是故障抽样,随机选择数千个故障样本。这减少了在安全验证期间需要激活的故障数量。

对于大多数功能,没有必要针对所有可能的故障验证设计的安全性。但是,安全关键组件需要全面验证,以确保它们完全没有错误。即使是在相对平常的验证中实现这种级别的验证,也会很快超出仿真的能力。

因此,在安全关键设计中使用形式验证已广受欢迎,因为它通过大幅减少输入条件实现了所需的验证级别。形式验证设计“广度优先”,自动考虑所有可能的输入条件。从这里开始,形式验证可以分析给定初始条件下可达到的所有状态集。结果是一组最坏情况的安全指标,这些指标说明了设计中所有可能的故障。

除了通过形式化技术优化故障列表外,容量更大的验证引擎还可以进一步缩短验证时间。硬件仿真以兆赫(MHz)的速度在硬件设计中执行测试,比仿真快几个数量级。这使得系统验证能够在芯片设计在流片之前开始,并提供对硬件设计的全面可见性,以实现高效调试。此外,仿真支持安全关键型汽车应用的故障注入、监控和结果分析。

无人时代的功能安全

在尽早进入市场的巨大压力下,汽车初创公司、老牌原始设备制造商和系统公司将需要一套先进的验证工具来按时满足这些严格的安全要求。当他们面对令人印象深刻的复杂芯片时,验证团队将依靠强大的生命周期管理流程、自动化以及模拟、仿真和形式化技术的组合来确保无人系统IC的安全性。

你可能感兴趣的:(安全,自动驾驶,汽车,功能测试)