4、BISR概念与架构:BISR(Built-In Self-Repair)的基本原理、冗余行/列/块修复策略、修复分析流程、与MBIST的关系
随着半导体工艺节点不断微缩至7nm及以下,存储器(SRAM、DRAM、Flash)的单元密度急剧增加,制造过程中由随机缺陷、工艺偏差或老化效应引发的失效单元数量呈上升趋势。传统的外部ATE(自动测试设备)修复方案在量产成本和测试时间上已难以承受。BISR(Built-In Self-Repair,内建自修复)技术应运而生,它通过在芯片内部集成冗余存储阵列和修复控制逻辑,使存储器能够在测试发现缺陷后,利用片上冗余资源自动完成地址重映射,从而显著提升芯片良率与可靠性。本章将系统阐述BISR的基本原理、冗余策略、修复分析流程及其与MBIST的协同工作机制。
4.1 BISR基本原理与核心架构
BISR的本质是"片上自修复",其设计哲学是将原本属于ATE或外部激光修复设备的冗余分配能力,以硬件逻辑的形式集成到芯片内部。一个完整的BISR系统通常由四个核心模块构成:MBIST引擎(负责测试激励生成与响应比较)、失效信息采集单元(记录失效地址与类型)、修复分析器(Repair Analyzer, RA)(执行冗余分配算法)、以及冗余存储与重映射逻辑(包含eFuse/OTP存储器和地址比较器)。
从工作流程来看,BISR首先由MBIST引擎对主存储阵列执行March算法测试,当检测到失效单元时,失效地址被暂存到诊断寄存器中。随后,修复分析器根据失效地址的分布特征,结合可用的冗余行/列/块资源,运行特定的分配算法(如贪心算法、最优覆盖算法或分支定界法),生成一组最优的修复方案。最终,该方案通过片上eFuse或OTP(一次性可编程)存储器进行永久性烧写,芯片在后续上电时通过地址重映射逻辑将失效地址指向冗余资源。
4.2 冗余行/列/块修复策略详解
根据失效单元的分布模式,BISR采用三种基本的修复策略,实际设计中往往组合使用:
| 修复策略 | 适用场景 | 硬件开销 | 修复粒度 | 典型应用 |
|---|---|---|---|---|
| 行修复 | 同一行内多个连续或离散失效单元 | 低(每行仅需1个地址比较器) | 整行(如256bit) | SRAM字线短路、行译码器缺陷 |
| 列修复 | 同一列内多个失效单元,或位线缺陷 | 中(列方向IO电路复杂) | 整列(如8~64bit) | 位线泄漏、列多路选择器故障 |
| 块修复 | 子阵列内集中式缺陷,或大块区域失效 | 高(需要独立的子阵列译码) | 子阵列(如1Kb~4Kb) | 大容量Cache、嵌入式Flash块 |
在实际工程中,行修复是最常用的策略,因为存储阵列的行方向通常与字线方向一致,行译码器结构相对简单,增加冗余行的面积代价最小。列修复则常用于修复位线相关的缺陷,但列方向涉及灵敏放大器、写驱动等模拟电路,冗余列的设计复杂度更高。块修复主要面向大容量存储器或存储器阵列中的局部区域损坏,其修复粒度最大,但灵活性也最低。
一个值得注意的细节是:修复策略的选择必须考虑失效模式。例如,如果MBIST诊断发现某一行有超过2个失效单元,且该行恰好位于存储阵列的边缘,那么行修复可能不是最优选择——因为冗余行资源有限,而边缘行可能更容易受到工艺边缘效应的影响。此时,如果失效单元分散在多行,每行仅1~2个失效点,则列修复可能更经济。
4.3 修复分析流程与算法
修复分析(Repair Analysis)是BISR的核心决策环节,其目标是在有限的冗余资源下,找到能够覆盖所有失效单元的最优修复方案。标准的修复分析流程包含以下五个步骤:
- 失效信息收集:MBIST引擎在测试过程中,将每个失效单元的物理地址(行地址+列地址)和失效类型(固定0、固定1、转换故障、耦合故障等)实时写入诊断FIFO。
- 失效分布建模:修复分析器将失效地址映射到存储阵列的二维坐标图上,形成失效位图(Fail Bitmap)。该位图是后续算法决策的输入。
- 冗余资源评估:读取当前可用的冗余行数(R_avail)和冗余列数(C_avail),以及块修复的可用数量(B_avail)。
- 分配算法执行:根据失效分布特征选择算法。常见算法包括:
- 贪心算法:优先用行修复覆盖失效单元最多的行,再用列修复覆盖剩余失效点。速度快但可能非最优。
- 穷举搜索:遍历所有可能的行/列组合,找到最小代价方案。适用于冗余资源少、失效点少的情况。
- 分支定界法:在搜索过程中剪枝,平衡时间与最优性。适合中等规模的失效分布。
- 启发式算法:如"先列后行"或"行列交叉覆盖",针对特定失效模式优化。
- 修复方案编码与存储:将最终确定的修复地址编码为熔丝映射表,通过eFuse烧写流程永久保存。
4.4 BISR与MBIST的协同工作机制
MBIST与BISR并非两个独立的功能模块,而是紧密耦合的协同系统。从架构上看,MBIST是BISR的"感知器官",负责发现缺陷;BISR是MBIST的"执行器官",负责修复缺陷。二者通过一组标准接口进行交互:
- 测试完成信号(test_done):MBIST完成一轮测试后,向BISR发出完成脉冲,触发修复分析流程。
- 失效标志(fail_flag):当MBIST比较器发现数据不匹配时,拉高该信号,同时将失效地址锁存到诊断寄存器。
- 诊断数据总线(diag_data):用于将失效地址、失效类型等信息从MBIST传输到修复分析器。
- 修复使能信号(repair_en):修复分析完成后,BISR向MBIST发出重测请求,验证修复效果。
在典型的SoC集成流程中,MBIST控制器通常以IP核形式嵌入,而BISR逻辑则根据存储器编译器的配置自动生成。例如,使用Synopsys的STAR Memory System或Cadence的Tessent MemoryBIST时,设计者可以在存储器编译阶段直接指定冗余行/列数量,工具会自动生成包含BISR逻辑的存储器实例。这种"编译即修复"的流程大大降低了设计复杂度。
4.5 实战案例:某AI芯片SRAM阵列的BISR集成
我们以一个实际的AI加速器芯片设计为例,该芯片包含128个SRAM宏单元,每个宏单元容量为512Kb(256行×2048列),采用28nm工艺。在量产初期,该芯片的良率仅为72%,经分析发现主要失效模式为单行多列缺陷(占比60%)和随机单点缺陷(占比30%)。
初始约束与目标:芯片面积预算紧张,BISR逻辑的面积开销不能超过总芯片面积的0.5%;目标良率提升至90%以上;测试时间增加不超过10ms。
方案设计:我们为每个SRAM宏单元配置了4行冗余行和2列冗余列,并采用"贪心+回溯"混合修复算法。具体实施步骤如下:
- 在存储器编译器中启用BISR选项,设置冗余行=4,冗余列=2,修复分析算法选择"最优覆盖"模式。
- 在MBIST测试序列中,先执行March C-算法(覆盖固定故障和转换故障),再执行March SR算法(覆盖耦合故障),确保诊断覆盖率超过99%。
- 将修复分析器设计为流水线结构,在MBIST测试最后一个子序列执行时,并行启动失效位图构建,节省测试时间。
- eFuse烧写采用"先验证后烧写"策略:先在片上SRAM中模拟修复映射,重测通过后再实际烧写eFuse,避免烧写错误。
结果对比:集成BISR后,芯片良率从72%提升至91.5%,达到预期目标。BISR逻辑面积开销为0.42%,满足约束。测试时间增加约7ms,主要开销来自eFuse烧写和重测验证。值得注意的是,有2%的芯片虽然修复成功,但修复后功耗增加了约5%,这是因为冗余行/列的地址比较器在每次访问时都需要进行地址匹配判断,增加了动态功耗。
4.6 常见误区与设计复盘
在多个项目的BISR集成实践中,我们总结了以下高频误区,供设计者参考:
| 误区 | 后果 | 正确做法 |
|---|---|---|
| 冗余行/列数量越多越好 | 面积开销失控,且修复分析算法复杂度指数上升 | 根据失效统计模型(如Poisson分布)计算最优冗余量 |
| 修复分析算法只选贪心 | 在失效分布复杂时,可能无法找到可行解 | 根据失效点数量动态切换算法(<10点用穷举,>50点用启发式) |
| 忽略修复后的时序验证 | 冗余行/列的地址比较器增加路径延迟,可能导致时序违例 | 在STA阶段单独检查修复路径的建立/保持时间 |
| eFuse烧写失败无回退机制 | 芯片因烧写失败而报废 | 设计冗余eFuse位,并支持"软修复"模式(通过寄存器配置) |
总结而言,BISR是存储器测试与修复领域的关键技术,其设计需要综合考虑面积、时序、功耗、测试时间和良率提升效果。在ASIC设计流程中,BISR的集成应尽早启动——最好在存储器选型阶段就确定冗余策略,并与MBIST IP供应商充分沟通,确保测试向量和修复分析逻辑的协同验证。通过合理的架构设计和算法选择,BISR能够在不显著增加成本的前提下,将存储器良率提升10~20个百分点,是高性能SoC设计中不可或缺的DFX(Design for Excellence)手段。