英伟达推动 Ada 和 SPARK 进入无人驾驶汽车

时间:2025-06-05来源:eeNEWS

AdaCore 和 Nvidia 已经为 Ada 和 SPARK 编程语言开发了一个开源参考流程,用于安全关键汽车软件,特别是自动驾驶汽车。

该流程能够在 Nvidia DriveOS 操作系统上更快地开发 ISO26262 软件。Nvidia 使用 SPARK 开发了 DriveOS,并为其 DRIVE AGX 硬件上的应用程序开发了认证流程。

基于 Ampere GPU 架构和 ARM Cortex A78AE 内核的 AGX-Orin 芯片,正被包括沃尔沃、梅赛德斯-奔驰、捷豹路虎、通用汽车、极氪和吉利以及现在丰田(世界上最大的汽车制造商)等汽车制造商使用。

基于 Blackwell 架构、搭载 NeoverseV3AE 核心的 AGX-Thor 芯片,预计今年晚些时候开始用于自动驾驶。中国电动汽车制造商比亚迪、自动驾驶巴士制造商 WeRide、沃尔沃、 卡车制造商 Aurora、大陆集团和理想汽车都在使用这款芯片。


DriveOS 芯片在 1 月份通过了 TUD SUD 的 ASIL-D 认证,采用了名为 Halos 的 AI 安全框架。

“自动驾驶的时代已经到来,我们将与人工智能在制造、企业以及汽车模拟和设计方面合作,”英伟达 CEO 黄仁勋表示。“我们已经从事自动驾驶汽车研究超过十年了。”

参考流程是向前迈进的关键一步,包括符合汽车认证标准 ISO-26262 最高完整性级别的软件组件。使用 SPARK 需要建立一种开发流程,该流程利用 Ada 形式语言的正式方法和其 SPARK 子集的其他安全特性。

AdaCore 和 Nvidia 决定将参考流程作为一个开放且不断发展的文档发布,使整个行业能够采用 Ada 和 SPARK。

“这对从事软件定义汽车开发的开发者来说是一个重要的转折点,”AdaCore 首席产品与营收官 Quentin Ochem 告诉 eeNews Europe。

“独特之处在于 Nvidia 的方法。通过采用 Ada 和 SPARK 并公开发布其 ISO 26262 合规性文档,他们正在重塑这些责任的处理方式。Nvidia 没有让开发者负担隔离的、抽象的合规活动,而是将这些考虑因素尽可能接近开发者的主要工件:代码本身。这符合将验证、可追溯性和需求直接集成到开发流程中的趋势,使正确性成为代码库的特性,而不仅仅是单独的过程。”

“传统上,开发者不得不身兼数职——除了编写代码,他们还常常发现自己承担了 QA 工程师、验证工程师甚至需求工程师的责任,”他补充道。

“像汽车这样的安全关键领域,受 ISO 26262 等标准的管辖,需要严格的可追溯性、正确性的证据和形式化保证——这些责任远远超出了传统软件工程的范围。”

他还指出,英伟达决定开源认证工件是一个关键举措。

“也很少见看到主要技术提供者如此程度地开放其内部安全认证流程。英伟达的 ISO 26262 文档可以即用型使用,这是一个大事——它为其他汽车软件团队提供了一个具体、实用的起点。它降低了开发者和公司构建安全认证车辆软件的门槛,而无需重新发明轮子。”

ISO-26262 参考流程可在 nvidia.github.io/spark-process/ 上获得,并且任何人都可以自由使用或定制这些语言。

ISO26262 流程

本文档定义了一个基于 SPARK 的、符合 ISO-26262 标准的流程,用于开发安全关键车辆软件单元的子集,达到 ASIL D 级,并降低 ASIL 等级。

该流程专门适用于完全使用 Ada 编程语言开发的软件单元,但面向的是部分或全部 Ada 代码符合 SPARK 子集的软件单元。虽然该流程的一些元素,例如所需的 Ada 编译器警告设置,可能适用于一般的安全关键 Ada 软件开发,但混合使用 Ada 与其他语言(如 C、C++或汇编语言)的软件单元不能使用该流程进行开发。

该流程涵盖了与语言子集、软件单元设计、软件单元实现以及软件单元验证相关的 ISO 26262 要求和目标。此外,该流程还涵盖了与软件接口规范中表达的安全要求相关的 ISO 26262 要求和目标。

这个过程支持并行进行形式化验证和非形式化验证。根据此过程开发的单个软件单元可以全部进行形式化验证,全部进行非形式化验证,或者部分进行形式化验证和部分进行非形式化验证。

“简而言之,这一举措有助于消除开发者对安全认证的神秘感,并为更健壮和高效的软件定义车辆架构铺平道路,”Ochem 说。

采用一种新的编程语言涉及部署新环境、培训团队适应新的形式化规范、调整编程模式以及其他许多问题。然而,从流程的角度来看,编程语言在很大程度上是可以互换的,但 Ada 和 SPARK 则是一个不同的故事。

将其视为一种语言转变是一种可能性,这无疑会在传统的开发过程中产生价值。然而,这会错失该技术带来的关键机会,即能够将开发过程转变为以验证驱动的过程,从而以比传统方法更严格和更具成本效益的方式展示软件特性。

Ada 语义旨在最小化漏洞风险,并最大化直接定义在源代码中的语义信息。SPARK 使用这些属性来避免常见漏洞,并允许定义附加属性以替代动态测试进行形式化验证。

在 SPARK 中,可以保证变量初始化、无缓冲区溢出、数据范围等基本属性,或者更一般地说,避免出现防御性代码,但它也提供了定义更高级要求的方法,这些要求可以以布尔断言的形式表达,并且可以正式证明实现是正确的,而无需运行任何测试。

以形式化验证为目标的代码开发对开发过程中的各个层面都有影响。以这种方式开发软件可能是一个漫长的迭代过程,存在遗漏技术某些关键方面的风险。

参考流程旨在允许新采用者跳过这一点,并从已经过当局审查和行业实验的既定流程开始。它不是用来“照搬不照”,而是作为适合每个组织具体情况的定制流程的起点。

然而 Nvidia 指出,该流程不包括软件架构设计规范,如何将现有的 C/C++软件单元移植到基于 SPARK 的流程中,或并发性或软件安全分析。


关键词: 英伟达 自动驾驶 Ada

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版