国芯科技CCFC3008PCS BIST (内建自测试) 分析总结

一、BIST 概述

CCFC3008PCS 芯片包含三类 BIST 功能,均由 STCU2(Self-Test Control Unit 2) 硬件模块统一管理:

|-------------|---------------------------|--------------------------|
| 类型 | 全称 | 测试对象 |
| LBIST | Logic Built-In Self Test | 数字逻辑电路 |
| MBIST | Memory Built-In Self Test | SRAM / ROM 存储器 |
| RC BIST | RC Oscillator BIST | 内部 RC 振荡器(FIRC / SIRC)校准 |

此外,PMCDIG 模块中还有 Power BIST (PBIST) 寄存器(PMCDIG_PBIST),用于电源相关自检。


二、BIST 运行模式

2.1 Off-Line 模式(离线自检)

  • 触发时机 :芯片上电复位后,在用户应用程序启动之前自动执行
  • 配置来源:通过 SSCM DCF 总线从 Flash 中读取预存的 BIST 调度参数
  • 执行流程

    1. 复位事件触发 STCU2 初始化
    1. 写入 Security Key(Key1/Key2)解锁 STCU2 寄存器
    1. 编程 MBIST/LBIST Pindex(STCU2_PDR)
    1. 如需使用 PLL,配置 STCU2_PLL_CFG
    1. 配置看门狗定时器 STCU2_WDG
    1. 设置 STCU2_CR 使能 Off-line LBIST / MBIST
    1. 软件读取 STCU2_STS 状态寄存器检查 pass/fail

2.2 On-Line 模式(在线自检)

  • 触发时机:系统正常运行期间,由软件触发
  • 配置来源:通过 IPS 总线由 CPU 编程
  • 同样支持 LBIST 和 MBIST 的在线执行

2.3 Bypass 模式

  • 设置 STCU2_CRBYP 位可跳过自检流程
  • 适用于非安全关键型应用场景
  • 跳过自检后,核心时钟关闭,系统唤醒进入用户应用

三、BIST 各阶段详细说明

3.1 LBIST(逻辑内建自测试)

测试对象:芯片数字逻辑电路

执行特点

  • 支持并发/顺序执行多个 LBIST 分区
  • ⚠️ 不能同时在多个分区上执行 LBIST
  • 不能与 MBIST 同时执行
  • 每个 NMCUT BIST 在一次会话中只能运行一次

重复策略(STCU2_TE2LBIST_TIMES):

  • 00b:执行 1 次
  • 01b:执行 1 次
  • 10b:执行 1 次
  • 11b:首次失败时再执行 1 次(共最多 2 次)

结果状态(STCU2_STS):

  • LB_F:LBIST 通过/失败
  • LB_WDTO:LBIST 看门狗超时
  • LB_D:LBIST 执行结束

3.2 MBIST(存储器内建自测试)

测试对象:SRAM 和 ROM 存储器

执行特点

  • 支持并发/顺序执行
  • 不能与 LBIST 同时执行
  • 每个 NMCUT BIST 在一次会话中只能运行一次
  • 可通过 PLL 加速执行(设置 STCU2_CRBPLLEN

重复策略(STCU2_TE2MBIST_TIMES):

  • 同 LBIST,11b 时首次失败可重试一次

结果状态(STCU2_STS):

  • MB_F:MBIST 通过/失败
  • MB_WDTO:MBIST 看门狗超时
  • MB_D:MBIST 执行结束

3.3 RC BIST(RC 振荡器校准自检)

测试对象:FIRC(快速内部 RC 振荡器)和 SIRC(慢速内部 RC 振荡器)

关键寄存器(Chapter 31.3):

|--------------|-------------------------------------------|
| 寄存器 | 功能 |
| Rc_bist1 | 设置 BIST 时钟计数器目标值 |
| Rc_bist2 | 设置测试时钟计数器目标值和粗调 margin |
| Rc_bist3 | BIST 控制:启动、模式选择、RC 选择、使能 |
| Rc_bist4_res | 测试时钟计数结果和细调 margin |
| Rc_bist_res | BIST 结果:DONE、PASS、CTRIM/FTRIM/TEMPTRIM 结果 |

工作模式

  • Trim 模式:自动校准振荡器频率
  • Trace 模式:跟踪/监测振荡器频率

校准结果写入

  • CTRIM 结果 → FIRC_TRIM / SIRC_TRIM 的 CTRIM 字段
  • FTRIM 结果 → FIRC_TRIM / SIRC_TRIM 的 FTRIM 字段
  • TEMPTRIM 结果 → FIRC_TRIM / SIRC_TRIM 的 TEMPTRIM 字段

四、对芯片产生的影响

4.1 复位影响

关键影响 :Off-Line 自检结束后,STCU2 会触发全局功能复位(Global Functional Reset)

  • 复位行为可通过 STCU2_LBRM 寄存器逐分区配置
  • 每个 LBIST 分区有对应的 LBRMx 位:

    • 0:Off-Line LBIST 结束后触发全局功能复位
    • 1:Off-Line LBIST 结束后触发全局功能复位
  • 还有 LBDRCx 位控制复位依赖关系(直接复位 vs. 依赖 BIST 结果)

4.2 故障报告

STCU2 通过 FCCU 接口向系统报告故障:

|-----------------------------|--------|--------------|
| 故障类型 | 含义 | 处理方式 |
| UF(Unrecoverable Fault) | 不可恢复故障 | 严重故障,需要系统级复位 |
| RF(Recoverable Fault) | 可恢复故障 | 可尝试恢复 |

  • BIST 失败和 STCU2 内部错误均可配置为 UF 或 RF
  • 故障信号连接到 FCCU,进一步触发 IRQ、NMI 或 Reset
  • 支持故障注入机制,用于验证 UF/RF 连接线完整性

4.3 时钟影响

  • BIST 执行期间,STCU2 可直接控制 PLL
  • 通过 PLL 加速 MBIST/LBIST 执行
  • PLL 锁定信号被监控,BIST 会等待 PLL 锁定后切换时钟源
  • BIST 结束后时钟源恢复到原始配置

4.4 看门狗保护

  • 初始化看门狗:硬编码超时,防止 STCU2 初始化阶段卡死
  • BIST 执行看门狗 (STCU2_WDG):可编程超时,监控 LBIST/MBIST 是否在规定时间内完成

    • 超时后当前 BIST 被中断,标记失败
    • 顺序执行时,超时后后续 BIST 被跳过

4.5 启动时间影响

  • Off-Line BIST 会延长芯片启动时间
  • 可通过 Bypass 模式跳过,缩短启动时间
  • BIST 调度可通过 Pindex 灵活配置,选择需要执行的测试项

4.6 设计限制

  • LBIST 和 MBIST 不能同时执行
  • 每个 NMCUT BIST 在一次会话中只能运行一次
  • 不能同时在多个分区上执行 LBIST
  • SSCM 写入的寄存器在 Off-Line 阶段不可被覆盖

五、相关寄存器汇总

|--------|--------------------------|-------------------------------|
| 模块 | 寄存器 | 功能 |
| STCU2 | STCU2_CR | 控制寄存器:BYP、RUN、PLL使能、L/MBIST使能 |
| STCU2 | STCU2_SKC | 安全密钥寄存器 |
| STCU2 | STCU2_PDR | Pindex 调度寄存器 |
| STCU2 | STCU2_PLL_CFG | PLL 配置 |
| STCU2 | STCU2_WDG | 看门狗定时器 |
| STCU2 | STCU2_STS | 状态寄存器:L/MBIST 完成/通过/超时 |
| STCU2 | STCU2_LBRM | LBIST 复位管理 |
| STCU2 | STCU2_TE1/TE2 | 超时配置和重复次数 |
| PMCDIG | PMCDIG_PBIST | Power BIST 寄存器 |
| PMCDIG | PMCDIG_STCU_CR0/CR1 | STCU 配置寄存器 |
| IRCOSC | Rc_bist1~4, Rc_bist_res | RC BIST 控制和结果 |

相关推荐
虎王物联4 小时前
ESP32 FreeRTOS多任务优先级翻转与互斥量保护实战
物联网·嵌入式·esp32·freertos
jianqiang.xue8 小时前
低功耗产品架构专项优化:电池供电设备休眠、唤醒、漏电流、待机功耗极致优化
stm32·单片机·mcu·物联网·架构·esp32
笨笨饿1 天前
#135_代码中的类型重定义艺术:从基础封装到函数类型设计
开发语言·stm32·单片机·嵌入式硬件·mcu·物联网·嵌入式实时数据库
与你4031 天前
CLion 中为什么要重写 _write,而不是 fputc?
嵌入式
Freak嵌入式1 天前
MicroPython 开发避坑:用 Signal 类解决不同电路的电平兼容问题
嵌入式
电子科技圈2 天前
从工厂直达全球市场:emnify为联网设备制造商推出免费SGP.32引导网络接入的OEM计划
嵌入式硬件·mcu·物联网·智能硬件·iot·交通物流
智码看视界2 天前
Edge AI 全栈1:ESP32 传感器采集到云端大模型推理的完整链路
人工智能·物联网·嵌入式·esp32·aiot·全栈开发·edgeai
Freak嵌入式2 天前
告别硬件差异!MicroPython Signal 类:让你的 GPIO 代码跨板运行无压力
嵌入式
Messy create2 天前
【BMS-三级架构】
单片机·mcu·架构·能源