1. 课程导入与验证工程全景

在自动驾驶量产开发中,NVIDIA DRIVE 平台承担的是“车载计算与软件运行基座”的角色:它向下连接传感器、执行器与整车网络,向上承载感知、定位、预测、规划、控制等自动驾驶软件栈,并通过 DriveOS、CUDA、TensorRT、DriveWorks 等软件组件提供实时计算、推理加速与中间件能力。换句话说,算法团队在 PC 上训练出的模型,最终必须落到 DRIVE 平台的算力、内存、时延与安全约束之内,才能成为可上车的功能。而 SIL(Software-in-the-Loop,软件在环)与 HIL(Hardware-in-the-Loop,硬件在环)联合验证,正是连接“算法可运行”与“整车可交付”之间的关键工程环节。

SIL 验证的核心,是在不依赖真实 ECU 硬件的条件下,把自动驾驶软件栈(或其关键模块)运行在宿主机或服务器上,用虚拟传感器、虚拟车辆动力学和场景仿真器构造闭环。它回答的问题是:软件逻辑在给定输入下是否正确、稳定、可复现。HIL 验证则把真实的 DRIVE 计算平台(或其中的 SoC、板卡、接口)接入测试台架,由实时仿真机提供传感器数据、车辆总线信号与故障注入,回答的问题是:真实硬件在真实时序、真实接口和真实负载下,是否仍能满足功能与安全要求。两者不是替代关系,而是互补关系:SIL 负责“快速、大规模、可回归”,HIL 负责“真实、闭环、可追溯”。

从项目流程看,一个典型的 DRIVE 平台自动驾驶项目通常经历如下阶段:需求与场景定义 → 软件架构与接口设计 → SIL 模块级/系统级验证 → 代码集成与持续回归 → HIL 台架集成验证 → 实车标定与路测 → 版本冻结与释放。SIL/HIL 联合验证贯穿其中,尤其在“软件集成后、实车之前”这一区间承担主要质量门禁作用。其价值可以概括为三点:第一,把大量缺陷拦截在实车之前,降低路测风险与成本;第二,把场景、参数、结果固化为可重复执行的资产,支撑版本迭代回归;第三,为功能安全与预期功能安全(SOTIF)提供可追溯的验证证据。

角色分工上,SIL/HIL 联合验证通常涉及以下角色:系统工程师负责定义验证范围、接口与通过准则;仿真工程师负责场景搭建、传感器模型、车辆动力学与仿真环境维护;软件工程师负责被测软件的可测试性改造、接口适配与问题定位;HIL 台架工程师负责实时机、IO 板卡、总线仿真、故障注入与台架标定;测试工程师负责用例设计、执行、结果判读与缺陷跟踪;安全与质量工程师负责验证覆盖度、证据链与释放评审。这些角色在同一个验证流程中共享场景库、参数集与结果数据库,形成闭环协作。

NVIDIA DRIVE 平台 SIL/HIL 联合验证工程全景 NVIDIA DRIVE 平台 自动驾驶软件栈 感知 / 定位 / 预测 / 规划 / 控制 DriveOS 与中间件 DriveWorks / NvMedia / CUDA 推理与加速 TensorRT / DLA / GPU 车载接口与网络 CAN / Ethernet / GMSL / PCIe 安全与实时约束 功能安全 / 时延 / 确定性 整车与执行器 转向 / 制动 / 驱动 / 车身 (HIL 中被仿真或真实接入) SIL 软件在环 宿主机 / 服务器 · 虚拟传感器 · 虚拟车辆 被测软件 模块 / 系统级 场景仿真器 场景 / 传感器模型 车辆动力学 闭环反馈 结果与回归 日志 / 指标 / 覆盖率 HIL 硬件在环 实时仿真机 · 真实 DRIVE 平台 · IO 与总线 实时仿真机 车辆 / 环境模型 真实 DRIVE 平台 SoC / 板卡 / 软件 IO 与总线仿真 CAN / Ethernet / 视频 故障注入 断线 / 丢帧 / 超时 典型项目流程 需求与场景定义 软件架构与接口设计 SIL 模块级 / 系统级验证 HIL 台架集成验证 角色分工 系统工程师 · 范围与准则 仿真工程师 · 场景与模型 软件工程师 · 适配与定位 HIL 台架工程师 · 实时与 IO 测试 / 安全质量 · 用例与证据 共享资产:场景库 · 参数集 · 结果数据库 · 缺陷跟踪

需要特别强调的是,SIL 与 HIL 的“联合”并不是简单地把两个测试阶段串起来,而是让它们共享同一套场景描述、同一套接口定义和同一套结果判读标准。例如,一个“前车紧急制动”场景,在 SIL 中可以用虚拟传感器输出目标距离与相对速度,验证规划控制模块是否在 TTC(碰撞时间)低于阈值时输出足够减速度;在 HIL 中,同一场景由实时仿真机通过视频注入或 CAN 报文发送给真实 DRIVE 平台,验证从传感器接口到执行器指令的整条链路时延是否满足要求。如果 SIL 与 HIL 使用不同的场景参数或不同的通过准则,验证结果就无法互相印证,联合验证也就失去了意义。

工程提示:在项目早期就应建立统一的“验证接口契约”,明确 SIL 与 HIL 各自负责的输入输出边界。例如,SIL 负责验证算法逻辑与参数敏感性,HIL 负责验证硬件接口、时序与故障响应。两者通过同一份场景清单和同一份结果模板对齐,避免重复劳动与证据割裂。