Tool Qualification 工具鉴定

功能安全L1别名 Tool Qualification · TCL · TQL · 工具鉴定 · Software Tool Qualification · ISO 26262 Part 8 Tool · 更新

本质与导读

本质 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。

Tool Classification 决策 — TI (影响) × TD (探测) → TCL → TQL

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 的判定取决于"后续验证流程能不能抓到工具错误":

  • 编译器错误 → 单元测试 + MC/DC 覆盖率能抓出大部分 → TD2(TriCore 指令集 edge case 可能漏)
  • 代码生成器错误 → MIL + SIL + PIL 三层测试能识别大多数功能错 → TD2
  • HIL 测试自动化脚本错误 → 项目专属 CAPL 脚本,CANoe 本身 bug 无其他测试防线 → TD3

2.3 TCL 决策表

TCL 由 TI × TD 矩阵决定——只有 TCL 2/3 需要 qualification,TCL 1 工具(占 90%)直接放行:

TITD1TD2TD3
TI1TCL 1TCL 1TCL 1
TI2TCL 1TCL 2TCL 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 等级决定

ASILTCL 2 工具TCL 3 工具
QM/ASIL ATQL 1TQL 1
ASIL BTQL 1TQL 2
ASIL CTQL 2TQL 3
ASIL DTQL 2TQL 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 11a 或 1c
TQL 21a + 1b,或 1a + 1c
TQL 31b + 1c(双重);ASIL C/D 另高度推荐 1d

5. 常用车规工具的 TCL 评估

下表列出行业常见工具的典型 TCL 评估结果,具体项目需要逐一完成 TI/TD 评估表。

工具典型 TCL一般 qualification 路径
TASKING VX-toolset / GCC / ARM CompilerTCL 2供应商 TQK + Tier-1 引用(1a + 1b)
dSPACE TargetLink / Simulink Embedded CoderTCL 2–3供应商 TQK(1a + 1b)
Polyspace / QA-C / LDRATCL 2供应商 TQK
Vector CANoe / CANalyzerTCL 2–3Vector TQK + 项目 1c(若 TD3)
DOORS Next / Polarion / JamaTCL 1无需(只追踪需求)
Git / SVNTCL 1无需
Jenkins / GitLab CITCL 21c 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 引用流程

  1. 下载工具供应商当前 TQK(版本号与工具版本严格匹配)
  2. 逐条 review TQK AoU(assumption of use),确认项目实际满足所有条款
  3. 在 Safety Case 里引用 TQK + 写补充说明(项目特殊情况)
  4. 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 理由
PolarionALM23R2需求管理/追踪TI1只存文本,不生成产品代码,出错不影响安全
TASKING VX-toolsetv6.3r1TC397 C/C++ 编译链接TI2编译器 bug 可静默生成错误机器码,TriCore 汇编层无法人工全量复核
dSPACE TargetLink5.2Simulink → C 代码生成TI2模型–代码翻译漏掉边界条件 → 安全函数输出静默错误
Polyspace ASIL Checker2023bMISRA 静态分析TI2false-negative 漏报 MISRA 违规 → 安全需求未验证即放行
Vector CANoe16.0HIL 测试自动化TI2测试脚本信号映射 bug → 失效用例静默判 PASS

8.2 TD 评估

对 TI2 工具逐一判断后续验证流程的探测能力(TD),决定能否把 TCL 从 3 降为 2:

工具TD 等级判断依据
PolarionALMn/aTI1,不评 TD
TASKING VX-toolsetTD2单元测试 + MC/DC 覆盖大多数编译路径;但 TriCore 向量指令集 edge case 及 -O2 代码重排无法被功能测试完全覆盖,少数路径可能漏
dSPACE TargetLinkTD2MIL + SIL + PIL 三层对比测试能识别大多数功能错;模型边界(数据类型饱和/定点精度溢出)的细微差异需专项 diff review,非自动覆盖
Polyspace ASIL CheckerTD2known limitation list 已发布,peer code review 可补充 false-negative;但项目专属宏展开路径可能产生漏报
Vector CANoeTD3CAPL 测试脚本是项目专属程序;CANoe 核心信号路由 bug 若发生,无其他独立测试防线能检测到——探测能力最低

8.3 TCL → TQL 映射

将 TI × TD 矩阵映射为 TCL 等级,再结合 EPS 项目最高 ASIL D 确定所需 TQL 和鉴定方法:

工具TITDTCLTQL(ASIL D 项目)鉴定方法
PolarionALMTI1TCL 1无需仅文档 TI 评估理由
TASKING VX-toolsetTI2TD2TCL 2TQL 21a + 1b(TASKING TQK for TC3xx/ISO 26262)
dSPACE TargetLinkTI2TD2TCL 2TQL 21a + 1b(dSPACE TargetLink TQK)
Polyspace ASIL CheckerTI2TD2TCL 2TQL 21a + 1b(Mathworks Polyspace TQK)
Vector CANoeTI2TD3TCL 3TQL 31b + 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