Tool Qualification 工具鉴定
本质与导读
本质 ISO 26262 不允许"工具可信"被假设、必须证明:工具(代码生成器/编译器/分析工具)可能把 ASIL D 需求悄悄改错。靠 TI × TD → TCL → TQL 判断要不要 qualify 及做多深——TCL 1 免做(占绝大多数),TCL 2/3 才需按 TQL 做,实操多直接引用供应商的 TQK 而非自做。
1. 为什么要 Tool Qualification
ISO 26262 把失效分两大类:随机硬件失效 + 系统性失效。Tool 错误属于后者——同一个工具错误会在所有用它的产品里复现,所以一旦上车会大规模召回。
真实案例:
- 2015 年某 OEM 的自动代码生成器把"signed int8"误转成"uint8",导致负扭矩命令变成正向最大扭矩——召回 5 万辆车,损失 ¥2 亿
- 编译器优化把"volatile"变量错误优化掉,导致电源监控漏检——多起召回案例
Tool Qualification 的目标:对每个工具,要么证明"它不可能引入错误",要么证明"它就算引入错误,你也能查出来"。
2. TI × TD → TCL 决策链
ISO 26262 Part 8 §11 把工具分类为 3 步:TI 评估影响性、TD 评估可探测性、两者叉积得 TCL。
2.1 TI (Tool Impact)
TI 分 2 级,判断工具是否会引入或漏掉安全相关错误——这是 Tool Qualification 的入口判断:
| 等级 | 含义 |
|---|---|
| TI1 | 工具不会引入或漏掉错误(即:出错也不影响产品安全) |
| TI2 | 工具可能引入或漏掉错误(有安全影响) |
典型 TI1 例子:
- 配置管理工具(Git):本身不修改代码内容
- 文档工具(Word):写文档,不生成产品
- 项目管理工具(Jira):跟踪任务,不参与产品
典型 TI2 例子:
- 编译器(TASKING VX-toolset、GCC、ARM Compiler):生成可执行代码
- 代码生成器(dSPACE TargetLink、Simulink Embedded Coder):从模型生成 C 代码
- 自动测试工具(Vector CANoe):决定通过/失败
- 静态分析(Polyspace、MISRA-checker):决定 bug 报或不报
2.2 TD (Tool Detection)
TD 分 3 级,判断工具错误的被发现能力,取决于后续验证流程能否抓到:
| 等级 | 含义 | 解释 |
|---|---|---|
| TD1 | 极高 | 工具错误几乎一定能被发现 |
| TD2 | 中等 | 工具错误有些可以发现,部分会漏 |
| TD3 | 低 | 工具错误很难被发现 |
TD 的判定取决于"后续验证流程能不能抓到工具错误":
2.3 TCL 决策表
TCL 由 TI × TD 矩阵决定——只有 TCL 2/3 需要 qualification,TCL 1 工具(占 90%)直接放行:
| TI | TD1 | TD2 | TD3 |
|---|---|---|---|
| TI1 | TCL 1 | TCL 1 | TCL 1 |
| TI2 | TCL 1 | TCL 2 | TCL 3 |
关键认知:只有 TCL 2/3 工具需要 qualification——TCL 1 工具直接放行。这是"投入产出比"机制,不可能 qualify 所有工具。
3. TQL — 鉴定力度
术语说明:“TQL” 不是 ISO…
术语说明:“TQL” 不是 ISO 26262 原文术语 ISO 26262-8:2018 §11 没有 “TQL(Tool Qualification Level)” 这个分级——标准止于 TCL(Tool Confidence Level 1-3),再由 TCL + ASIL 直接查表(§11.4.6 Table 4/5) 选定鉴定方法(1a-1d)的推荐强度,中间没有独立编号的 “TQL” 层。“TQL 1-5” 实为 DO-178C / DO-330(航空软件工具鉴定) 的术语。本页下表沿用 “TQL 1-3” 记法仅作 “方法强度分档” 助记,对照标准原文时请落到 TCL+ASIL→方法表;标准中不存在 “TQL 4”。
TCL 2/3 工具需要 qualify,力度由 ASIL 等级决定:
| ASIL | TCL 2 工具 | TCL 3 工具 |
|---|---|---|
| QM/ASIL A | TQL 1 | TQL 1 |
| ASIL B | TQL 1 | TQL 2 |
| ASIL C | TQL 2 | TQL 3 |
| ASIL D | TQL 2 | TQL 3 |
ASIL D 最高到 TQL 3(TCL 3 工具)——标准无 "TQL 4" 档;OEM 若在 TSC/DIA 中加严,仍是在 1a-1d 方法内叠加,而非升出一个新等级。
4. 四种 Qualification 方法 (1a–1d)
ISO 26262 Part 8 §11.4 提供 4 种鉴定方法,根据 TQL 选用:
4.1 方法 1a — Increased confidence from use
证明工具已经在很多类似项目用过,实战零问题。
- 依据:典型 ≥ 100 个项目使用案例,无安全相关问题报告
- 典型工具:TASKING VX-toolset、GCC、Simulink、Vector CANoe(业界长期使用)
- 优点:成本低;缺点:需要工具供应商证据,新工具用不上
4.2 方法 1b — Evaluation of tool development process
证明工具开发流程本身遵循 ISO 26262/IEC 61508。
- 依据:工具供应商按 ASIL D 流程开发了这个工具
- 典型工具:Polyspace、QA-C、dSPACE TargetLink(高端付费工具)
- 优点:覆盖面广;缺点:工具供应商不肯给完整流程文档
4.3 方法 1c — Validation of the software tool
工具用户自己测试工具——精心设计测试用例,覆盖所有 use case。
- 依据:工具用户做了系统性 validation,覆盖所有功能
- 典型用法:小众工具 / 自研工具;优点:对任何工具都行;缺点:工作量大(几人月起)
4.4 方法 1d — Development in accordance with safety standard
按 ISO 26262/IEC 61508 全套流程重新开发工具。几乎不用——成本太高,极少有供应商走这条路。
4.5 TQL × 方法选择
TQL 越高需要叠加方法越多——TQL 3 必须 1b + 1c 双重,单一方法不够:
| TQL | 推荐方法 |
|---|---|
| TQL 1 | 1a 或 1c |
| TQL 2 | 1a + 1b,或 1a + 1c |
| TQL 3 | 1b + 1c(双重);ASIL C/D 另高度推荐 1d |
5. 常用车规工具的 TCL 评估
下表列出行业常见工具的典型 TCL 评估结果,具体项目需要逐一完成 TI/TD 评估表。
| 工具 | 典型 TCL | 一般 qualification 路径 |
|---|---|---|
| TASKING VX-toolset / GCC / ARM Compiler | TCL 2 | 供应商 TQK + Tier-1 引用(1a + 1b) |
| dSPACE TargetLink / Simulink Embedded Coder | TCL 2–3 | 供应商 TQK(1a + 1b) |
| Polyspace / QA-C / LDRA | TCL 2 | 供应商 TQK |
| Vector CANoe / CANalyzer | TCL 2–3 | Vector TQK + 项目 1c(若 TD3) |
| DOORS Next / Polarion / Jama | TCL 1 | 无需(只追踪需求) |
| Git / SVN | TCL 1 | 无需 |
| Jenkins / GitLab CI | TCL 2 | 1c validation |
| AUTOSAR Config Tool(EB tresos / DaVinci) | TCL 3 | 供应商 TQK + 1c |
| HIL 系统(dSPACE SCALEXIO / NI PXI) | TCL 2–3 | 双方共同 1c |
6. TQK — Tool Qualification Kit
TQK 是工具供应商提供的"qualification 文档包",Tier-1 引用即可,免去自做。
TQK 典型内容:
- 工具版本号 + 适用 ASIL 范围
- 已通过的方法(1a/1b)及证据摘要
- 已知问题清单(Known Anomalies List)+ workaround
- 用户责任说明("用户须做哪些 sanity check")
- Assumption of Use(AoU)表——违反则 TQK 失效
典型 TQK 提供商:
- Mathworks:Simulink/Embedded Coder/Polyspace TQK,覆盖 ISO 26262 ASIL A–D
- Altium TASKING:VX-toolset TQK for TriCore/TC3xx/TC4xx
- dSPACE:TargetLink TQK
- Vector:CANoe / DaVinci / CANalyzer TQK
- Elektrobit:tresos AUTOSAR config TQK
- Lauterbach:TRACE32 debug TQK
TQK 引用流程:
- 下载工具供应商当前 TQK(版本号与工具版本严格匹配)
- 逐条 review TQK AoU(assumption of use),确认项目实际满足所有条款
- 在 Safety Case 里引用 TQK + 写补充说明(项目特殊情况)
- Confirmation Review 时审计员检查 TQK 引用及 AoU 满足声明
7. Tool Qualification 与 TSC + DIA 的关系
DIA 必须列明 工具 qualification 责任分配:
| DIA 条款 | 内容 |
|---|---|
| 共享工具清单 | OEM/Tier-1/Tier-2 各自用什么工具 |
| TQK 互信 | OEM qualify 的工具,Tier-1 是否可直接引用 |
| 联合验证 | 接口工具(如 CAN database 编辑器)由谁 qualify |
| 新工具 PCN | 替换工具时如何重新 qualify,时间窗口 |
典型场景:大众/Audi 已经把 Vector CANoe qualify 了,Tier-1 供应商可以引用大众的 TQK,免去重做。但必须确认:① 工具版本一致;② TQK 的 AoU 覆盖 Tier-1 的使用场景。
8. EPS ASIL D 工具链 5 步端到端 Worked Design
以 TC397-based EPS ECU(ASIL D 全分解,B(D)+B(D) 双通道)为例,展示从工具清单到 qualification 方法的完整判定链。
8.1 工具清单 × TI 评估
以下 5 个工具覆盖 EPS 开发全流程,TI 评估基于"工具错误是否会静默地影响安全功能输出"判断:
| 工具 | 版本 | 用途 | TI 等级 | TI 理由 |
|---|---|---|---|---|
| PolarionALM | 23R2 | 需求管理/追踪 | TI1 | 只存文本,不生成产品代码,出错不影响安全 |
| TASKING VX-toolset | v6.3r1 | TC397 C/C++ 编译链接 | TI2 | 编译器 bug 可静默生成错误机器码,TriCore 汇编层无法人工全量复核 |
| dSPACE TargetLink | 5.2 | Simulink → C 代码生成 | TI2 | 模型–代码翻译漏掉边界条件 → 安全函数输出静默错误 |
| Polyspace ASIL Checker | 2023b | MISRA 静态分析 | TI2 | false-negative 漏报 MISRA 违规 → 安全需求未验证即放行 |
| Vector CANoe | 16.0 | HIL 测试自动化 | TI2 | 测试脚本信号映射 bug → 失效用例静默判 PASS |
8.2 TD 评估
对 TI2 工具逐一判断后续验证流程的探测能力(TD),决定能否把 TCL 从 3 降为 2:
| 工具 | TD 等级 | 判断依据 |
|---|---|---|
| PolarionALM | n/a | TI1,不评 TD |
| TASKING VX-toolset | TD2 | 单元测试 + MC/DC 覆盖大多数编译路径;但 TriCore 向量指令集 edge case 及 -O2 代码重排无法被功能测试完全覆盖,少数路径可能漏 |
| dSPACE TargetLink | TD2 | MIL + SIL + PIL 三层对比测试能识别大多数功能错;模型边界(数据类型饱和/定点精度溢出)的细微差异需专项 diff review,非自动覆盖 |
| Polyspace ASIL Checker | TD2 | known limitation list 已发布,peer code review 可补充 false-negative;但项目专属宏展开路径可能产生漏报 |
| Vector CANoe | TD3 | CAPL 测试脚本是项目专属程序;CANoe 核心信号路由 bug 若发生,无其他独立测试防线能检测到——探测能力最低 |
8.3 TCL → TQL 映射
将 TI × TD 矩阵映射为 TCL 等级,再结合 EPS 项目最高 ASIL D 确定所需 TQL 和鉴定方法:
| 工具 | TI | TD | TCL | TQL(ASIL D 项目) | 鉴定方法 |
|---|---|---|---|---|---|
| PolarionALM | TI1 | — | TCL 1 | 无需 | 仅文档 TI 评估理由 |
| TASKING VX-toolset | TI2 | TD2 | TCL 2 | TQL 2 | 1a + 1b(TASKING TQK for TC3xx/ISO 26262) |
| dSPACE TargetLink | TI2 | TD2 | TCL 2 | TQL 2 | 1a + 1b(dSPACE TargetLink TQK) |
| Polyspace ASIL Checker | TI2 | TD2 | TCL 2 | TQL 2 | 1a + 1b(Mathworks Polyspace TQK) |
| Vector CANoe | TI2 | TD3 | TCL 3 | TQL 3 | 1b + 1c(Vector TQK + 项目 validation 套件) |
8.4 CANoe TQL 3 最重工作:Method 1c Validation
CANoe TCL 3 + TQL 3 要求 1b(Vector TQK)+ **1c(项目自做 validation)**组合,1c 是本例最重的 qualification 任务:
Validation test suite 设计(项目自研,约 2.5 人周):
- 信号路由 12 用例:CAN × 4 路、LIN × 2 路、SPI 嗅探 × 2 路,各路注入已知数值并核对 CANoe 测量值(比较精度 ± 1 bit)
- pass/fail 判断 6 用例:故意注入 3 种错误信号(电压越限、时序偏移 > 5 ms、CRC 错),确认 CANoe 正确触发 FAIL;再验证正常信号 → PASS
- 时间精度 4 用例:100 ms 事件序列触发,要求 CANoe 时间戳误差 ≤ 1 ms(实测 0.3 ms,裕量 3.3×)
执行约束:两名工程师各自独立运行测试套件,结果须一致(1c 内部 maker ≠ checker);结果归档进 Safety Case 的 Tool Qualification Report 章节。
结论:5 个工具中 4 个靠 TQK 引用(低成本),1 个(CANoe)需约 2.5 人周自做 validation——这是 EPS ASIL D 工具链最经济的鉴定策略。
9. 设计陷阱 G1–G7
G1 TI2 工具评成 TI1——混淆"工具不会出错"与"有人检查"
这是所有 Tool Qualification 评审中最高频的失误,发生率约 60–70%。常见理由是"我们之后还有手工 review,所以工具错误能被发现"——这把 TI 与 TD 的定义混淆。TI1 的判定条件是"工具本身不会引入或漏掉错误"(如配置管理工具不修改代码),而不是"有后续检查";后续检查的强度决定 TD 等级,不改变 TI 结论。代码生成器(TargetLink/Embedded Coder)必然 TI2,把它评成 TI1 直接绕开所有 qualification 要求。根本修复:TI 评估表由安全经理签字,并附"工具 X 的错误如果发生,会不会影响安全功能输出"一句话判断。
G2 TQK 版本错配——工具升级不更新 TQK
TASKING VX-toolset v6.2 有 TQK,项目升级到 v6.3 后继续引用旧 TQK。供应商在 v6.3 可能引入新的 TriCore 代码生成路径(如新指令集扩展),旧 TQK 不覆盖新路径。TQK 是 per-version 绑定文档,不适用于超出声明版本范围的工具。规则:工具 major 或 minor 版本升级必须触发 PCN + 重新下载/验证 TQK;若供应商 TQK 尚未更新新版,暂缓升级或启动补充 1c validation。
G3 TQK Assumption 未 Review——隐藏"不适用 ASIL D"限制
许多 TQK 含 assumption table,例如"本 TQK 仅覆盖 ISO 26262 ASIL C 及以下",或"用户须关闭 -O3 优化选项",或"需配合供应商提供的 linker script 模板使用"。项目按 ASIL D + -O2 + 自定义 linker script 使用,TQK 即部分失效。预防:Confirmation Review 的检查清单中必须包含"TQK assumption 表已 review,所有条款在本项目满足"作为强制通过门,缺失即不通过。
G4 工具变更未触发 PCN 重新鉴定
项目中途将 Python 2 自研测试脚本迁移至 Python 3,同时新增了 pass/fail 自动判断逻辑(旧版只格式化报告)。旧脚本是 TI1,新脚本是 TI2/TD3 → TCL 3。但没有触发 PCN,新脚本直接进了生产,Safety Case 仍引用旧 TCL 1 结论。规则:任何工具的用途扩展、版本升级、功能新增都要触发 TI/TD 重评——不限于"换了新工具",功能边界变化同样触发。
G5 自研脚本不在工具清单内
团队自写的 Python 脚本批量处理 Polyspace 报告、自动为 MISRA violation 标 waiver。这是 TI2 工具(它决定哪些安全相关违规被接受),且无独立测试其逻辑,TD 极可能 TD3 → TCL 3 + TQL 3。规则:参与任何安全活动(需求拆分/测试判断/静态分析结论/代码验证)的任何脚本都要评 TCL,不论是 Python、Bash、Excel 宏还是 CAPL 片段。工具清单覆盖范围是 Safety Case 审计的重要检查点。
G6 工具链组合接口未 Qualify
TASKING VX-toolset(TCL 2,TQK 已引用)生成目标文件,输入 TASKING INSPECTOR(代码覆盖率分析)。每个工具各有 TQK,但两者之间的接口:TASKING 生成的 .elf 格式是否完整被 INSPECTOR 解析?INSPECTOR 的 known limitation 是否覆盖该 .elf 变体?这个接口层没有专门 qualification。预防:工具链级别评估需在工具与工具之间的接口点做 1c validation,覆盖"tool A 输出格式作为 tool B 输入"的有效范围;接口版本绑定纳入 PCN 管理。
G7 跨项目 TQK 复用未 Review 覆盖范围
EPS 项目已 qualify Vector CANoe 用于 CAN + LIN 信号测试。BMS 项目新增 CAN-FD + Ethernet SOME/IP,直接复用 EPS 的 CANoe qualification(认为"同一工具版本,应该能用")。但 EPS 的 1c validation 套件只覆盖 CAN/LIN API;BMS 引入的 CAPL SOME/IP API 调用路径未经 validation。跨项目复用 TQK 时,必须 diff 新项目的工具 use case 与旧项目 validation 的覆盖范围,差异需补充 1c;工具版本相同但项目用途扩展时仍需重评。
10. 工作极限 C1–C3
C1 ASIL 分解不降低工具 TCL 要求
ASIL D 分解为 B(D)+B(D)(双通道 EPS 主驱 ECU)后,每条路径最高 ASIL 为 D。TC397 双核冗余实现的两个软件通道均在同一 TASKING 编译器下编译——编译器依然按最高分配 ASIL D 评 TQL 2(TCL 2 + ASIL D),不因"每条路径仅 ASIL B(D)"而降低。ISO 26262 Part 2 §6.4.4 明确:分解后每个元素须满足其 ASIL,分解不允许降低工具要求。实操陷阱:团队误以为"分解后每路 ASIL B,编译器只需 TQL 1",违反标准。正确判断:按产品整体最高 ASIL(D)评工具。
C2 SEooC 工具 Qualification 不自动传递给集成方
TC397 作为 SEooC 供应商(Infineon)已在供应商端 qualify 了开发工具(HighTec GCC + Polyspace,TQK 归档在 SEooC Safety Manual 中)。Tier-1 集成方不能直接引用供应商的工具 TQK,因为:① Tier-1 使用的可能是 TASKING 而非 HighTec GCC;② 即使版本对齐,供应商 TQK 的 AoU 中可能有"仅适用于供应商内部流程"的限制;③ Tier-1 新增的工具(CANoe HIL)不在 SEooC TQK 覆盖范围内。规则:SEooC AoU 验收清单必须包含工具 qualification 条款:供应商 qualify 的工具版本 = 集成使用版本,且 AoU 全部满足。
C3 TQK 真空期:供应商 TQK 更新延迟
Vector 发布 CANoe 17.0(新增 SOME/IP 协议栈测试 API),但新版 TQK 延迟 3 个月发布。BMS 项目紧急需要 SOME/IP HIL 测试,三种选项:① 等 TQK(停工 3 个月,项目延期不可接受);② 降级不用新 API(SOME/IP 部分改用手工测试,CANoe 从 TD3 降到 TD2,TCL 从 3 降到 2,引用旧版 TQK 覆盖非 SOME/IP 功能,SOME/IP 手工测试补充);③ 项目自做 1c validation(启动约 4 周 CAPL 测试套件开发覆盖 SOME/IP API,成本约 1 人月,可立即继续 HIL 测试,TQK 到位后归档)。选项③是成本与时效的最优解,但必须在 TQK 真空期开始时即启动——不能等到 TQK 发布日前两周才反应。
核心要点
- Tool Qualification 是 ISO 26262 Part 8 §11 强制——所有 TCL 2/3 工具都要 qualify。
- 评估链:TI × TD → TCL → TQL——只有 TCL 2/3 需要 qualification;TI1 工具直接 TCL 1,TI2 + TD1 也得 TCL 1。
- 4 种方法:1a 历史使用 / 1b 工具开发流程 / 1c 用户 validation / 1d 重新开发;TQL 3 须 1b + 1c 双重,单一方法不够。
- TQK(Tool Qualification Kit)是工具供应商的 qualification 文档包——Tier-1 引用即可;主流提供商:TASKING / Mathworks / dSPACE / Vector / Elektrobit / Lauterbach。
- EPS ASIL D 5 工具实例:PolarionALM = TCL 1(免做);TASKING/TargetLink/Polyspace = TCL 2,TQL 2,1a+1b;CANoe = TCL 3,TQL 3,1b + 1c(约 2.5 人周 validation)。
- 最高频错误:TI2 工具评成 TI1("代码生成器有手工 review 可以不 qualify")——TI1 意思是工具本身不引入错误,不是"有人事后检查"。
- ASIL 分解不降低工具要求:产品 ASIL D 分解后,编译器依然按 ASIL D 评 TQL 2。
- SEooC 工具 qualification 不自动传递:Tier-1 须逐条 review 供应商 AoU 中的工具 assumption,缺一不可。
- DIA 必须列明工具 qualification 责任分配——OEM 已 qualify 的工具,Tier-1 可引用(但须核对版本 + AoU)。
Engineering Objects
引用此页的结构化 Engineeri…
引用此页的结构化 Engineering Object(v2.0 Copilot 自动生成,不要手动编辑此段)。
- standard ·
standard_iso26262_part8— ISO 26262 Part 8 Supporting Processes
Cross-references
- ← 索引
- 功能安全 — 顶层 hub
- ISO 26262 Part 8 支持过程 — Tool Qualification 标准定义
- TSC + DIA — DIA 中工具责任分配
- Confirmation Measures — Tool Qualification 是 Review 检查项
- ASPICE — ASPICE PA 中 Tool 评估
- SEooC — SEooC 配套工具的 qualification
- Safety Case — Tool Qualification 是 Safety Case 章节
- PEU 全流程交付物 — Phase 2 前必交