4、BISR概念与架构:BISR(Built-In Self-Repair)的基本原理、冗余行/列/块修复策略、修复分析流程、与MBIST的关系

随着半导体工艺节点不断微缩至7nm及以下,存储器(SRAM、DRAM、Flash)的单元密度急剧增加,制造过程中由随机缺陷、工艺偏差或老化效应引发的失效单元数量呈上升趋势。传统的外部ATE(自动测试设备)修复方案在量产成本和测试时间上已难以承受。BISR(Built-In Self-Repair,内建自修复)技术应运而生,它通过在芯片内部集成冗余存储阵列和修复控制逻辑,使存储器能够在测试发现缺陷后,利用片上冗余资源自动完成地址重映射,从而显著提升芯片良率与可靠性。本章将系统阐述BISR的基本原理、冗余策略、修复分析流程及其与MBIST的协同工作机制。

BISR 核心架构与修复流程 BIST Controller MBIST引擎 + 测试调度 (算法生成/比较/诊断) Repair Analyzer 修复分析引擎 (冗余分配/地址重映射) Redundant Array 冗余行/列/块 (eFuse/OTP存储映射) Main Memory Array (SRAM/DRAM/Flash) 行解码器 列解码器 / IO F F F 冗余行 R0 冗余行 R1 测试地址/数据 失效信息 修复方案 地址重映射 冗余替换 Step 1: MBIST测试 March算法遍历所有地址 Step 2: 失效诊断 记录失效地址/类型/模式 Step 3: 修复分析 冗余分配算法(RA) Step 4: 熔丝烧写 eFuse/OTP存储修复映射 Step 5: 重测验证 确认修复后无失效 修复策略 • 行修复:整行替换 • 列修复:整列替换 • 块修复:子阵列替换 图例 控制/测试路径 修复分析/重映射 冗余资源

4.1 BISR基本原理与核心架构

BISR的本质是"片上自修复",其设计哲学是将原本属于ATE或外部激光修复设备的冗余分配能力,以硬件逻辑的形式集成到芯片内部。一个完整的BISR系统通常由四个核心模块构成:MBIST引擎(负责测试激励生成与响应比较)、失效信息采集单元(记录失效地址与类型)、修复分析器(Repair Analyzer, RA)(执行冗余分配算法)、以及冗余存储与重映射逻辑(包含eFuse/OTP存储器和地址比较器)。

从工作流程来看,BISR首先由MBIST引擎对主存储阵列执行March算法测试,当检测到失效单元时,失效地址被暂存到诊断寄存器中。随后,修复分析器根据失效地址的分布特征,结合可用的冗余行/列/块资源,运行特定的分配算法(如贪心算法、最优覆盖算法或分支定界法),生成一组最优的修复方案。最终,该方案通过片上eFuse或OTP(一次性可编程)存储器进行永久性烧写,芯片在后续上电时通过地址重映射逻辑将失效地址指向冗余资源。

关键设计权衡:BISR的硬件开销与修复能力之间存在直接矛盾。冗余行/列数量越多,修复成功率越高,但芯片面积和测试时间也随之增加。实际工程中,冗余比例通常控制在主存储阵列的1%~5%之间,具体取决于存储器的容量、工艺成熟度和目标良率。例如,一个1Mb的SRAM通常配置4~8行冗余行和2~4列冗余列。

4.2 冗余行/列/块修复策略详解

根据失效单元的分布模式,BISR采用三种基本的修复策略,实际设计中往往组合使用:

修复策略 适用场景 硬件开销 修复粒度 典型应用
行修复 同一行内多个连续或离散失效单元 低(每行仅需1个地址比较器) 整行(如256bit) SRAM字线短路、行译码器缺陷
列修复 同一列内多个失效单元,或位线缺陷 中(列方向IO电路复杂) 整列(如8~64bit) 位线泄漏、列多路选择器故障
块修复 子阵列内集中式缺陷,或大块区域失效 高(需要独立的子阵列译码) 子阵列(如1Kb~4Kb) 大容量Cache、嵌入式Flash块

在实际工程中,行修复是最常用的策略,因为存储阵列的行方向通常与字线方向一致,行译码器结构相对简单,增加冗余行的面积代价最小。列修复则常用于修复位线相关的缺陷,但列方向涉及灵敏放大器、写驱动等模拟电路,冗余列的设计复杂度更高。块修复主要面向大容量存储器或存储器阵列中的局部区域损坏,其修复粒度最大,但灵活性也最低。

一个值得注意的细节是:修复策略的选择必须考虑失效模式。例如,如果MBIST诊断发现某一行有超过2个失效单元,且该行恰好位于存储阵列的边缘,那么行修复可能不是最优选择——因为冗余行资源有限,而边缘行可能更容易受到工艺边缘效应的影响。此时,如果失效单元分散在多行,每行仅1~2个失效点,则列修复可能更经济。

4.3 修复分析流程与算法

修复分析(Repair Analysis)是BISR的核心决策环节,其目标是在有限的冗余资源下,找到能够覆盖所有失效单元的最优修复方案。标准的修复分析流程包含以下五个步骤:

  1. 失效信息收集:MBIST引擎在测试过程中,将每个失效单元的物理地址(行地址+列地址)和失效类型(固定0、固定1、转换故障、耦合故障等)实时写入诊断FIFO。
  2. 失效分布建模:修复分析器将失效地址映射到存储阵列的二维坐标图上,形成失效位图(Fail Bitmap)。该位图是后续算法决策的输入。
  3. 冗余资源评估:读取当前可用的冗余行数(R_avail)和冗余列数(C_avail),以及块修复的可用数量(B_avail)。
  4. 分配算法执行:根据失效分布特征选择算法。常见算法包括:
    • 贪心算法:优先用行修复覆盖失效单元最多的行,再用列修复覆盖剩余失效点。速度快但可能非最优。
    • 穷举搜索:遍历所有可能的行/列组合,找到最小代价方案。适用于冗余资源少、失效点少的情况。
    • 分支定界法:在搜索过程中剪枝,平衡时间与最优性。适合中等规模的失效分布。
    • 启发式算法:如"先列后行"或"行列交叉覆盖",针对特定失效模式优化。
  5. 修复方案编码与存储:将最终确定的修复地址编码为熔丝映射表,通过eFuse烧写流程永久保存。
工程经验:在修复分析器的RTL设计中,建议将失效位图存储在专用的寄存器堆中,而不是复用主存储阵列。因为主存储阵列本身可能存在缺陷,若将失效信息存储在其中,会导致"二次失效"问题。此外,修复分析算法应支持"部分修复"模式——当冗余资源不足以覆盖所有失效点时,允许优先修复关键区域(如ECC保护的字),剩余失效点交由系统级ECC处理。

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列冗余列,并采用"贪心+回溯"混合修复算法。具体实施步骤如下:

  1. 在存储器编译器中启用BISR选项,设置冗余行=4,冗余列=2,修复分析算法选择"最优覆盖"模式。
  2. 在MBIST测试序列中,先执行March C-算法(覆盖固定故障和转换故障),再执行March SR算法(覆盖耦合故障),确保诊断覆盖率超过99%。
  3. 将修复分析器设计为流水线结构,在MBIST测试最后一个子序列执行时,并行启动失效位图构建,节省测试时间。
  4. eFuse烧写采用"先验证后烧写"策略:先在片上SRAM中模拟修复映射,重测通过后再实际烧写eFuse,避免烧写错误。

结果对比:集成BISR后,芯片良率从72%提升至91.5%,达到预期目标。BISR逻辑面积开销为0.42%,满足约束。测试时间增加约7ms,主要开销来自eFuse烧写和重测验证。值得注意的是,有2%的芯片虽然修复成功,但修复后功耗增加了约5%,这是因为冗余行/列的地址比较器在每次访问时都需要进行地址匹配判断,增加了动态功耗。

风险提示:在BISR设计中,一个常见的误区是过度依赖冗余资源而忽视ECC(纠错码)的配合。对于随机单点失效,ECC(如SEC-DED)往往比BISR更经济——ECC仅需约10%的面积开销即可纠正单比特错误,而BISR的冗余行/列面积开销通常更高。最佳实践是:BISR负责修复结构性缺陷(如整行/整列失效),ECC负责修复随机软错误和少量残余硬错误,两者互补。

4.6 常见误区与设计复盘

在多个项目的BISR集成实践中,我们总结了以下高频误区,供设计者参考:

误区 后果 正确做法
冗余行/列数量越多越好 面积开销失控,且修复分析算法复杂度指数上升 根据失效统计模型(如Poisson分布)计算最优冗余量
修复分析算法只选贪心 在失效分布复杂时,可能无法找到可行解 根据失效点数量动态切换算法(<10点用穷举,>50点用启发式)
忽略修复后的时序验证 冗余行/列的地址比较器增加路径延迟,可能导致时序违例 在STA阶段单独检查修复路径的建立/保持时间
eFuse烧写失败无回退机制 芯片因烧写失败而报废 设计冗余eFuse位,并支持"软修复"模式(通过寄存器配置)

总结而言,BISR是存储器测试与修复领域的关键技术,其设计需要综合考虑面积、时序、功耗、测试时间和良率提升效果。在ASIC设计流程中,BISR的集成应尽早启动——最好在存储器选型阶段就确定冗余策略,并与MBIST IP供应商充分沟通,确保测试向量和修复分析逻辑的协同验证。通过合理的架构设计和算法选择,BISR能够在不显著增加成本的前提下,将存储器良率提升10~20个百分点,是高性能SoC设计中不可或缺的DFX(Design for Excellence)手段。