STL / BIST — 运行时自测体系(LBIST / MBIST / ABIST / STL)
本质与导读
本质:把"系统能在运行中自己发现自己坏了"做成可量化的机制堆叠。LBIST 是数字逻辑启动自测;MBIST 是 RAM 启动 + 周期自测;ABIST 是 ADC/Reg 周期自测;STL 是 CPU 软件运行时自测。单层都不够 ASIL D,必须三层叠加:基线(启动)+ 运行时(STL/ABIST/Scrub)+ 实时(Lockstep)。STL 单独 DC ≤ 95 %,Lockstep 单独 DC ≥ 99 % 但漏 aging,所以互相补、不互相替代。
主线坐标:横轨 · 诊断 / 通信(跨站) · ↑ 全景主线
1. 4 类自测的分类
BIST(Built-In Self-Test)是芯片内置的自测能力,STL(Self-Test Library)是芯片厂提供给客户的软件自测包。两类合起来覆盖启动 / 运行时 / 实时 3 个时间维度和 数字逻辑 / RAM / 模拟 / CPU 4 个对象维度。
| 类型 | 全称 | 触发 | 时长 | 覆盖 | DC 贡献 |
|---|---|---|---|---|---|
| LBIST | Logic BIST | Power-on | 数十 ms-数 s | 数字逻辑 stuck-at | DC_LFM 高(开机 latent 清零) |
| MBIST | Memory BIST | Power-on + Scrub | 启动 80 ms / scrub 1-100 ms | SRAM / Cache 故障 | DC_LFM 高;Scrub 防 SBE 累积 |
| ABIST | Analog BIST | 周期 100 ms 类 | 1 ms 类 | ADC offset/gain、Reg drift | DC_SPF 中(对 drift) |
| STL | Self-Test Library | 运行时切片 | 1 ms slot × 6-10 段 | CPU ALU/MAC/MMU/FPU | DC_SPF 中(60-95 %,库覆盖率) |
口诀:LBIST/MBIST 是芯片厂的 DFT 设计,客户没法改;ABIST 由 SBC 集成商配合时间(MC33907 / TLF35584 内置);STL 是客户必须配置和验证的(扫描周期、调度、coverage 都是客户责任)。
2. LBIST + MBIST 启动期 — 把 latent 清零
开机时一次性跑完 LBIST + MBIST,等于"出厂状态自检"。LBIST 用 LFSR 生成 pseudo-random 向量喂入数字逻辑,用 MISR 压缩响应签名,对比 golden ROM 中的预期值。MBIST 用专用硬件 controller 跑 March 算法扫 SRAM/Cache。
启动期 BIST 的关键工程约束是开机时间 — 实时 ECU 通常要求 < 200 ms 完成 boot + 进入功能态,留给 BIST 的预算只有 50-150 ms。芯片厂在 SoP 前会调 LBIST/MBIST 长度做权衡:跑久一点覆盖率高 0.5 %,但 boot 慢 50 ms。
2.1 March C- 6 步算法
MBIST 最常用的算法是 March C-(De Goor, 1991):
↕ (w0); ⇑ (r0, w1); ⇑ (r1, w0);
⇓ (r0, w1); ⇓ (r1, w0); ↕ (r0)
w0 = 写 0;r1 = 读期望 1;⇑ = 地址递增扫;⇓ = 地址递减;↕ = 任意方向。6 步用 10 N 次读写(N = 字数),时间复杂度 O(N)。
March C- 覆盖的 RAM 故障:
- SAF — Stuck-at Fault:某 cell 永远 0 或 1;每步 r-after-w 即检
- TF — Transition Fault:0→1 或 1→0 跳变失败;w1 + r1 即检
- CF — Coupling Fault:两 cell 互相影响;多方向扫即检
- AF — Address Decoder Fault:地址译码错;March C- 漏,需要 March G 或 SS 算法补
实战中 SEooC 芯片(AURIX、MPC57xx)会在启动期跑 March C- + March G 组合,确保 AF 也被检测。
2.2 SECDED ECC 接力运行时
启动期 MBIST 跑完只能保证开机时 RAM 健康;后续 SEU(Single Event Upset)、aging 都不在 MBIST 视野里。SECDED ECC(Single Error Correct, Double Error Detect)= 每 8 bit 加 1 bit Hamming + 1 bit overall parity,共 9 个校验 bit 覆盖 64 数据 bit;能纠 1 bit、检 2 bit。
但 ECC 单独不够 — 单 bit 错(SBE)会累积:今天纠了一个,明天再来一个 SEU,可能就在同一字里变成 DBE(double error,无法纠正)。
解决:周期 Scrubbing。后台 controller 每 1-100 ms 读一遍 RAM,有 SBE 自动 ECC 纠正写回,把"错误"擦掉。Scrub 间隔决定 DC_LFM:
- Scrub 1 ms / FTTI 100 ms → DC_LFM ≈ 99 %
- Scrub 100 ms / FTTI 100 ms → DC_LFM ≈ 80 %
3. STL 运行时自测 — Time-Slicing
CPU 是单层 BIST 漏洞最多的元件 — Lockstep 检瞬时故障非常好(DC_SPF ≥ 99 %),但漏 aging / dormant 死角(某些指令组合永远没跑过,看不出问题)。STL 把这块补上。
STL 是芯片厂提供的软件包,内含针对该 MCU 的指令序列,跑一遍能覆盖 60-95 % 的 CPU stuck-at 故障。客户负责调用并安排扫描周期。
3.1 Time-Slicing 设计原则
STL 不能一次全跑(可能 10 ms 占住 CPU,主控律 deadline 错过)。所以切片:6-10 段,每段 ≤ 1 ms,放在每个 10 ms 控制 tick 的固定 slot 里。跑完一遍 STL 的时间 = 段数 × tick 周期 = 扫描周期。
关键约束:扫描周期 ≤ FTTI / 2。原因:
- STL 检出故障后,系统要在 FTTI 内进入 Safe State
- 检出延迟最多 = 扫描周期(故障可能刚跑完它的段时发生)
- 留给"反应"的时间 ≥ FTTI - 扫描周期
- 若反应时间 ≥ 扫描周期(保守 1:1 预算),则 扫描周期 ≤ FTTI / 2
举例:FTTI = 100 ms,扫描周期 ≤ 50 ms。STL 6 段 × 10 ms tick = 60 ms 不行,要么加段数(每段更小)、要么减 tick 周期(5 ms),或加 Lockstep 把 STL 的 DC 需求降下来。
3.2 STL 覆盖率(库 coverage)
STL 库的 coverage 由芯片厂在硅前用 fault simulation 估出(stuck-at fault model),典型值 60-95 %。客户直接引用是弱证据;过 ASIL D 评估要做硅后 Fault Injection 验证(参见 topic-diagnostic-coverage-categories)。
不同芯片厂的 STL 命名:
- Infineon — CPU Self-Test(集成在 SafetyOS / SafeT 服务)
- NXP — Self-Test Library(STL)(单独发布)
- ST — Self-Test Library for SPC5(SPC5-Studio 集成)
4. ABIST — 模拟链周期自测
ADC + Regulator 链是 sensor 安全的核心,但模拟器件不能跑数字 BIST。ABIST 的思路是注入已知参考 → 读出 → 比对:
- ADC ABIST:SBC 内部有 ref voltage(1.2 V / 2.5 V 类),周期切到 ref → ADC 采样 → 偏差超限即报错
- Regulator ABIST:周期读 VOUT,与命令对比;偏差超限即降级
- Bandgap ABIST:温度补偿曲线的 self-check
ABIST 触发周期通常和 ADC 采样率耦合 — 例 ADC 1 kHz 采样、ABIST 每 100 ms 抢 1 个 sample 做 ref → 1 % overhead。
SBC(NXP MC33907、Infineon TLF35584)集成 ABIST 是 ASIL D 的隐性必需 — 不集成只能客户在外面加 ref voltage IC,BOM 上多一颗、DC 还低。
5. 三层 BIST 堆叠 — DC High 的现实路径
ASIL D 单元件 DC ≥ 99 % 不是单层能达到的。只有把启动 + 运行时 + 实时三层叠加,每个失效模式都找到主诊断 + 辅诊断对子,DC 才真到 99 %。
| 失效模式 | 主诊断(DC ≥ 99 %) | 辅诊断(补 latent) |
|---|---|---|
| CPU stuck-at | Dual-Core Lockstep | STL(aging 死角) |
| SRAM SBE/DBE | SECDED ECC | MBIST Scrub(防累积) |
| ADC drift | 双路采样 | ABIST 周期注入 ref |
| 总线 bit error | CRC + E2E | Heartbeat 监控 |
| 译码 / DFT 死角 | — | LBIST + March G(启动) |
主诊断 + 辅诊断这对工程实践极其重要:
6. 实战配置案例 — AURIX TC3xx + ASIL D Motor Control
典型 ASIL D 电机控制项目的 BIST/STL 配置:
| 元件 | 启动 | 运行时 | 实时 | 综合 DC |
|---|---|---|---|---|
| CPU Core × 3 | LBIST 100 ms | STL 60 ms 周期 | Core 1+2 Lockstep | ≥ 99 % |
| SRAM 4 MB | March C- 80 ms | Scrub 10 ms | SECDED ECC | ≥ 99 % |
| Flash 16 MB | March G 200 ms | CRC 校验(boot 后) | SECDED ECC | ≥ 99 % |
| ADC × 6 | ABIST 5 ms | ABIST 周期 100 ms | 双路采样 | ≥ 99 % |
| CAN-FD | 自检 50 ms | E2E counter | CRC-32 | ≥ 99 % |
| SBC(TLF35584) | LBIST + ABIST | Q&A Watchdog | FCCU 直连 | ≥ 99 % |
boot 时间预算:LBIST 100 + MBIST 80 + March G 200 + 应用启动 50 = 430 ms。已超 200 ms 类常见要求 — 因此 TC3xx 设计成渐进 boot:LBIST 必须完成才进功能态;Flash March G 可以延迟到 functional 启动后并行跑;ABIST 在每个采样周期补一小段。
7. 常见误区
实战 BIST/STL 最常犯的错都源于"只看单层覆盖率",忽略叠加结构。下面 5 条是评估员最常打回的点。
- STL 覆盖率写"90 %"= 弱证据。除非有 Fault Injection 数据,评估员砍 20-30 %。Safety Manual 必须给 stuck-at coverage 报告。
- MBIST 启动跑过了就 OK。错 — 启动期只清开机时的 latent,SEU 还要 ECC + Scrubber 接力。
- Lockstep 万能,STL 多余。错 — Lockstep 漏 aging 和 dormant 死角(某指令组合从来没跑过),STL 必须补这块。
- 扫描周期可以等于 FTTI。错 — 检出后还要进 Safe State,所以扫描 ≤ FTTI/2 是工程下限。
- ABIST 不用做,反正 ADC 有 sensor plausibility。错 — Plausibility 检"输入合理性",ABIST 检"采样链本身偏差";两者机制不同,FMEDA 不能合算 DC。
核心要点
- 4 类自测:LBIST(逻辑启动)+ MBIST(RAM 启动 + Scrub)+ ABIST(模拟周期)+ STL(CPU 运行时)。
- March C- 6 步覆盖 SAF/TF/CF,漏 AF;需 March G 补。
- SECDED ECC 实时纠 SBE,但需要 Scrubber 防 SBE 累积成 DBE。
- STL Time-Slicing:扫描周期 ≤ FTTI / 2,留反应时间。
- 三层 BIST 堆叠才到 DC High:基线(启动)+ 运行时(STL/ABIST/Scrub)+ 实时(Lockstep)。
- 每个失效模式需要主诊断 + 辅诊断,机制要不同(DFA 独立性)。
- STL 库 coverage 弱证据 20-30 % 折扣,要用 Fault Injection 升强。
- boot 时间预算紧:LBIST + MBIST + March G 累积可达 400 ms,要分阶段跑。
Cross-references
- ← 索引
- topic-functional-safety — 功能安全 hub
- topic-diagnostic-coverage-categories — DC 类别(BIST/STL 是 DC 的来源)
- topic-iso26262-part5-hardware — SPFM/LFM 母页
- topic-safety-mechanism-catalog — 机制大全
- topic-fault-injection-testing — 强证据来源
- topic-mcu-sbc-asil-d-integration — SBC 的 ABIST + WD
- topic-mpc5744-mc33907-integration — MPC5744P+SBC 案例