MBIST 与 BISR:让芯片自己测、自己修片上的存储器
更新时间:2026-09-12。本文是「集成电路大类 · 芯片设计」**进阶层(intermediate)**数字逻辑第六十七篇。先进 SoC 里 SRAM 常占面积一半以上(见片上存储、SRAM 单元),靠外部测试机逐地址读写既慢又贵。工业界把测试器「做进」芯片:MBIST 自测、BISR 自修复。它是 DFT 三大支柱之一。
本文要回答的问题
- 为什么不能用普通扫描链测 SRAM?存储器的故障模型有什么特别?
- March 算法在「走」什么?March C- 为什么几个来回就能抓一大类故障?
- MBIST 控制器长什么样,怎么挂到所有 SRAM 上、谁来启动?
- 测出坏地址后 BISR 怎么用冗余行/列把它换掉?熔丝怎么参与?
- MBIST、scan、JTAG、LBIST、ECC 各管哪一段?
一、存储器故障模型:不是 stuck-at 那么简单
逻辑门测试主要盯固定型故障(stuck-at-0/1)。SRAM 是密集模拟阵列,故障更丰富:**固定故障(SAF)**某单元恒为 0/1;**耦合故障(CF)**写一个单元影响另一个;**地址译码故障(AF)**多个地址指向同一单元;**相邻图形敏感故障(PSF/NPSF)**周围一圈单元的值影响中心单元;读破坏(DRF)读操作把内容改写;保持故障存不久。这些故障往往和「前后写了什么、邻居是什么」相关,所以要用精心设计的读写序列而非随机向量去激发——这正是 March 算法的任务。
二、March 算法:按确定方向、一连串「元素」走完所有地址
March 测试由若干 March 元素组成,每个元素规定一个地址遍历方向(升 ↑ 或降 ↓)和对每个单元的一组操作(如 ⇕ 读写组合)。以经典 March C-(10 次操作/单元)为代表:
⇕ (w0) 所有单元写 0(初始化)
⇑ (r0, w1) 地址上升:读应为0、再写1
⇑ (r1, w0) 上升:读应为1、再写0
⇓ (r0, w1) 地址下降:读应为0、写1
⇓ (r1, w0) 下降:读应为1、写0
⇕ (r0) 最后全读应为0双向遍历(既 ↑ 又 ↓)用于暴露与地址顺序有关的译码/耦合故障;交替写 0/1 和棋盘格(checkerboard,55/AA)背景让相邻单元互为反值,最大化 PSF 敏感度。复杂度是 O(n)(每单元常数次访问),几分钟内可覆盖芯片里成百上千块 SRAM。选算法是故障覆盖与测试时间的折中(March LR/SS 等覆盖更多耦合/静态故障但更长)。
三、MBIST 架构:一个控制器复用所有 SRAM
不可能给每块 SRAM 配独立测试器,典型做法是一个或几个 **MBIST 控制器(含地址发生器、数据背景发生器、比较器、状态机)**通过多路选择接到所有 RAM 的端口(带 mux 的 RAM 叫 SRAM wrapper/ collar):功能模式下 RAM 连用户逻辑,测试模式下端口切给 MBIST 控制器,由它自动跑 March 序列、逐拍比对读出值与期望值、失败时记录故障地址/数据/步骤。启动方式:①出厂 ATE 经 JTAG TAP 下发;②每次上电 boot ROM 先跑一遍(power-on MBIST)再释放给软件;③现场诊断。多块 RAM 可并行测以缩短时间。
四、BISR/BIRA:检测完,怎么「修好」
发现坏单元只是第一步,良率要求把坏的替换掉:
- 冗余资源:SRAM 宏在设计时预留备用行/列(redundancy rows/columns)和替换开关;
- BIRA(内建冗余分析):根据 MBIST 上报的故障地址,解出最少需要动用哪些冗余行/列才能覆盖全部故障(一个备用行能修该行内多个故障,是个小的优化问题);
- BISR(内建自修复):把「坏地址→冗余资源」的修复方案写进非易失存储(eFUSE/OTP),每次上电由修复链(repair chain/loader)先读出熔丝、在 RAM 可用前配置好替换映射,坏行/列被永久旁路。对无法修的坏块则标记隔离(如多核/多 cache way 降级)。
带 ECC 的运行期容错(Hamming SEC-DED)是「现场软错误/个别硬错误在线纠正」,而 MBIST+BISR 是「出厂/上电扫描 + 物理冗余永久修复制造缺陷」,两者互补:一个保现场可靠性,一个提良率。
五、DFT 三支柱的分工
| 技术 | 测什么 | 怎么测 |
|---|---|---|
| Scan(扫描链) | 普通组合/时序逻辑的 stuck-at/延迟故障 | 把触发器接成移位链,移入测试向量、捕获、移出比对 |
| MBIST(+BISR) | 嵌入式 SRAM/ROM | 内建控制器跑 March 算法、冗余修复 |
| 边界扫描/JTAG(TAP) | 板级互联、管脚焊接 | 芯片四周边界单元串成链,TAP 状态机驱动 |
| LBIST | 逻辑在内场自测 | 片上 PRPG 生成伪随机向量 + MISR 压缩签名 |
它们共享 TAP/测试控制器和测试模式入口,共同目标是在有限测试时间内压高故障覆盖、降低对昂贵 ATE 的依赖。设计早期就要做 DFT 插入(DFT insertion),保证 RAM 有 collar、时钟可控、复位可扫描、测试引脚与电源域隔离在测试时可绕过——这些都是前端 RTL 就要规划、否则后端无法补救的结构性要求。
与现有篇目的衔接
- 前置:SRAM 单元与灵敏放大、片上存储与容量、DFT 入门
- 配套:JTAG 边界扫描/TAP、ECC 在线纠错、eFUSE 存修复信息
- 相关:存储器推断/wrapper、芯片测试与量测、LFSR/伪随机
总结
一句话总结:先进 SoC 过半面积是 SRAM,外部 ATE 逐地址读写既慢又贵,所以把测试器做进芯片——MBIST 是一个含地址发生器、数据背景发生器、比较器和状态机的内建控制器,测试模式下经 SRAM collar 接管所有 RAM 端口,自动跑 March 算法(如 March C-:初始化写 0 后按地址升、降方向反复「读应值再写反值」,配合棋盘格背景),用 O(n) 的访问覆盖固定故障、耦合故障、地址译码故障、相邻图形敏感和读破坏等逻辑扫描抓不到的存储特有故障,可由 JTAG 出厂启动或上电 boot 阶段运行;测出坏地址后 BIRA 分析用哪些预留冗余行/列能最少替换全部故障,BISR 把映射写进 eFUSE/OTP,每次上电由 repair chain 先加载旁路坏行实现永久物理修复、不可修则降级隔离;它与 ECC 分工互补——MBIST/BISR 针对制造缺陷在出厂或上电扫描并永久修复以提良率,ECC 针对现场软错误在线纠正以保可靠;再与测逻辑的 scan、测板级互联的 JTAG 边界扫描、内场逻辑自测的 LBIST 共同构成 DFT 体系,且 RAM collar、可控时钟、可测复位、测试绕电源域等都必须在前端 RTL 阶段规划好。