3、MBIST概念与架构:MBIST的基本原理、典型架构与外部测试的区别

在数字集成电路设计中,存储器(SRAM、DRAM、寄存器堆等)通常占据芯片面积的30%至70%,且其单元结构高度重复、缺陷敏感度高,是制造良率与现场可靠性的主要瓶颈。传统的外部ATE(自动测试设备)测试虽然能够覆盖存储器的功能与参数,但随着存储器容量增大、端口数增多以及芯片封装后引脚访问受限,外部测试的成本和覆盖率均面临挑战。MBIST(Memory Built-In Self-Test,存储器内建自测试)通过在芯片内部集成测试逻辑,使存储器能够“自测”其功能与故障,成为当前SoC与ASIC设计中不可或缺的DFT(可测试性设计)手段。本章将系统阐述MBIST的基本原理、典型架构组成,并深入对比其与外部测试在成本、覆盖率、测试时间及可诊断性方面的本质差异。

MBIST 核心架构与测试数据流 BIST 控制器 (状态机 + 算法引擎) March C/Checkerboard 地址生成器 行/列扫描序列 数据生成器 背景/反背景数据 控制逻辑 读/写使能、比较使能 被测存储器 SRAM 256KB 地址端口: 18-bit 数据端口: 32-bit 字线/位线阵列 冗余行/列 (BISR) 故障注入点: SA0/SA1/TF/CF 比较器 期望值 vs 实际读出值 逐位异或比较 故障寄存器 地址/数据/故障类型 测试接口 (TAP/SCAN) IEEE 1500 / JTAG / OCC 地址总线 数据总线 控制信号 读出数据 失配标志 期望数据 外部ATE测试路径(对比) ATE → 测试通道 → 芯片引脚 → 内部MUX → 存储器(需额外IO与测试时间) MBIST路径:内部控制器直接访问,无需ATE逐向量驱动

上图展示了MBIST的核心数据流与模块间关系。BIST控制器作为“大脑”,根据预编程的测试算法(如March C、March C-、Checkerboard等)生成地址序列、写入数据以及读写控制信号,直接驱动被测存储器。存储器的读出数据被送入比较器,与控制器生成的期望数据逐位比对,任何失配都会触发故障寄存器记录当前地址、数据与故障类型。整个测试过程由芯片内部的测试接口(如JTAG、IEEE 1500)启动和控制,测试结果通过串行扫描链或并行总线输出。与外部ATE测试相比,MBIST将测试向量生成、施加和响应比较全部“内化”到芯片中,从而大幅降低了对ATE通道数和测试时间的要求。

3.1 MBIST的基本原理:从故障模型到算法执行

MBIST的本质是在芯片内部构建一个专用的测试微系统,它能够按照预定义的故障模型(Fault Model)自动生成测试序列,并判断存储器响应是否正确。其基本原理可以概括为三个步骤:故障建模 → 算法生成 → 响应比较。

首先,故障建模是MBIST的基石。存储器常见的故障类型包括:固定故障(Stuck-At Fault,SAF,如SA0/SA1)、转换故障(Transition Fault,TF,无法完成0→1或1→0跳变)、耦合故障(Coupling Fault,CF,一个单元的状态变化影响相邻单元)、地址译码故障(Address Decoder Fault,ADF)以及数据保持故障(Data Retention Fault,DRF)。不同的故障模型对应不同的测试算法。例如,March C算法能够覆盖大部分SAF、TF和部分CF,而Checkerboard算法则侧重于检测相邻单元间的短路或耦合。

其次,算法生成由BIST控制器中的有限状态机(FSM)或微码引擎完成。以最常用的March C算法为例,其测试序列包含多个“March元素”,每个元素定义了一组地址遍历顺序(递增或递减)和读写操作。例如,March C的典型序列为:⇑(w0);⇑(r0, w1);⇑(r1, w0);⇓(r0, w1);⇓(r1, w0);⇓(r0)。控制器按此序列逐地址执行写0、读0写1、读1写0等操作,并将每次读出的数据与期望值比较。

最后,响应比较是MBIST的判决环节。比较器将存储器输出数据与控制器产生的期望数据按位异或,若结果非零则判定为故障。故障信息(地址、数据、算法步骤)被锁存到故障寄存器中,供后续诊断分析。整个测试过程不需要外部ATE参与,只需在测试开始时通过TAP接口发送“启动”命令,测试结束后读取“完成”标志和故障计数。

核心要点:MBIST的测试质量取决于故障模型的完备性和算法的覆盖率。实际工程中,通常采用多种算法组合(如March C + Checkerboard + Galpat)来平衡覆盖率与测试时间。例如,一个256KB的SRAM,使用March C算法(约6N次操作,N为地址数)在100MHz测试时钟下,测试时间约为 6 × 262144 / 100e6 ≈ 15.7ms,而使用Galpat算法(复杂度O(N²))则可能需要数秒,因此需根据应用场景选择。

3.2 MBIST的典型架构:控制器、比较器与BIST逻辑

一个完整的MBIST架构通常由以下核心模块组成,它们协同工作以实现自动化测试:

模块名称 功能描述 关键设计要点
BIST控制器(BIST Controller) 生成测试算法序列,控制地址、数据、读写信号的时序 状态机设计、算法可配置性、时钟同步
地址生成器(Address Generator) 产生行/列地址扫描序列,支持递增、递减、跳跃等模式 地址计数器、镜像地址映射、冗余行/列跳过
数据生成器(Data Generator) 生成写入存储器的背景数据(如全0、全1、棋盘格、反棋盘格) 数据反转逻辑、多背景数据切换
比较器(Comparator) 将存储器读出数据与期望数据逐位比较,输出失配标志 位宽匹配、流水线比较、故障锁存
故障寄存器(Fault Register) 记录故障地址、故障数据、故障类型及发生时间 寄存器深度、压缩编码、扫描输出接口
测试接口逻辑(Test Interface) 提供外部访问通道(JTAG/IEEE 1500),控制测试启动、结束与结果读取 TAP状态机、指令寄存器、数据寄存器

在实际ASIC设计中,BIST控制器通常采用可综合的RTL代码实现,并遵循DFT规则(如时钟可控制、扫描链插入)。控制器内部包含一个算法ROM或可编程寄存器,允许通过TAP接口选择不同的测试算法。例如,在量产测试阶段使用快速March算法,在系统内自检阶段使用更全面的March C+算法。

比较器的设计需要特别注意时序收敛。由于存储器读出数据与期望数据到达比较器的时间可能不同(受时钟偏斜、路径延迟影响),通常需要在比较器前插入流水线寄存器,确保数据对齐。此外,对于多端口存储器(如双端口SRAM),需要为每个端口配置独立的比较器,或者通过时分复用共享比较器,但后者会增加测试时间。

BIST逻辑还包括测试模式选择和时钟控制。在正常功能模式下,BIST逻辑必须完全旁路,不影响存储器访问路径;在测试模式下,BIST逻辑接管存储器的地址、数据和控制端口。这通常通过多路选择器(MUX)实现,MUX的选择信号由测试模式使能(Test Mode Enable)控制。

工程经验:在集成MBIST时,务必关注BIST逻辑对存储器时序的影响。BIST路径上的MUX会增加地址/数据路径的延迟,可能导致存储器访问时间变差。建议在综合时对BIST路径设置set_false_path或set_multicycle_path约束,并在后端布局布线时对BIST逻辑进行时序收敛检查。另外,BIST控制器的时钟应使用独立的测试时钟(如OCC时钟),避免与功能时钟混用导致测试时序不确定。

3.3 MBIST与外部测试(ATE)的深度对比

外部测试(ATE测试)与MBIST在测试原理、成本、覆盖率、诊断能力等方面存在显著差异。理解这些差异对于制定合理的测试策略至关重要。

对比维度 外部ATE测试 MBIST测试
测试向量生成 由ATE软件在测试机台上生成,存储于ATE内存 由芯片内部BIST控制器实时生成
测试通道需求 需要大量ATE通道连接芯片引脚,受封装引脚数限制 仅需少量测试接口(如JTAG 4-5根线),不占用功能引脚
测试速度 受ATE通道速率和并行测试能力限制,通常较慢 可在芯片内部时钟频率下运行,速度接近功能模式
故障覆盖率 取决于测试向量质量,可覆盖参数故障(如时序、电流) 主要覆盖功能故障(SAF/TF/CF),参数故障覆盖有限
诊断能力 可精确定位到具体引脚和测试向量,诊断粒度细 可定位到存储器地址和故障类型,但无法区分具体物理单元
测试成本 ATE设备昂贵,测试时间越长成本越高 芯片面积增加约5%-10%,但测试时间大幅缩短
现场测试能力 无法在系统运行中执行 支持系统上电自检(POST)和在线自检(BIST)

从测试策略角度看,MBIST并非完全替代ATE测试,而是互补关系。在晶圆测试(CP测试)阶段,ATE测试用于筛选早期良率问题,同时通过MBIST快速判断存储器功能是否正常;在封装测试(FT测试)阶段,MBIST可并行执行,大幅缩短测试时间。例如,一个包含32个SRAM实例的SoC,若使用ATE逐块测试,每个存储器需要约10ms,总测试时间320ms;而使用MBIST并行测试,所有存储器同时测试,总时间仅需约20ms(包括算法执行和结果扫描输出),测试效率提升16倍。

然而,MBIST也有其局限性。首先,它无法检测存储器的参数性故障,如访问时间变慢、保持电流过大等,这些需要ATE的时序测试和电流测试。其次,MBIST的故障诊断粒度较粗,只能定位到地址和故障类型,无法像ATE那样通过Shmoo图分析具体失效边界。因此,在量产测试中,通常采用“MBIST粗筛 + ATE精测”的组合策略:先用MBIST快速排除功能故障,再用ATE对疑似故障芯片进行详细参数测试。

风险提示:MBIST逻辑本身也可能存在缺陷。如果BIST控制器或比较器设计错误,可能导致“假故障”(误报)或“漏故障”(漏报)。因此,在芯片验证阶段,必须对MBIST逻辑进行单独的验证,包括:通过故障注入(在RTL仿真中人为插入SAF/TF)验证MBIST能否正确检测;在硅后测试中,使用已知好芯片和已知坏芯片校准MBIST结果。此外,BIST逻辑的时钟域交叉(CDC)问题也需要特别关注,建议使用同步FIFO或握手信号隔离不同时钟域。

3.4 案例拆解:一个多存储器SoC的MBIST集成实践

为了更直观地理解MBIST架构的实际应用,我们以一个典型的AI边缘计算SoC为例,该芯片包含4个SRAM实例(2个256KB的L2 Cache,1个64KB的指令存储器,1个32KB的数据存储器)和1个寄存器堆。设计约束如下:

  • 测试时间预算:FT阶段总测试时间不超过50ms(包括所有存储器测试)。
  • 引脚限制:封装仅有48个引脚,无法为每个存储器提供独立测试通道。
  • 诊断需求:需要定位到具体存储器实例和故障地址,以便后续修复(BISR)。

初始方案:采用单一共享BIST控制器,通过时分复用依次测试4个存储器。每个存储器使用March C-算法(约10N次操作)。计算测试时间:256KB SRAM地址数N=262144,10N=2.6M次操作,在200MHz测试时钟下约13ms;64KB存储器约3.3ms;32KB约1.6ms;寄存器堆(1KB)约0.05ms。总测试时间约18ms,满足预算。

实施过程:

  1. 架构选择:采用“1个主控制器 + 4个从接口”的菊花链结构。主控制器生成算法序列,通过广播总线同时向4个存储器发送地址和数据,但每个存储器有独立的比较器和故障寄存器。这样可以在一个测试周期内并行测试所有存储器,进一步缩短时间。
  2. 算法配置:主控制器支持通过TAP接口选择March C-、March C+和Checkerboard算法。量产测试使用March C-(覆盖率98.2%),系统自检使用March C+(覆盖率99.7%)。
  3. 故障处理:每个存储器的故障寄存器包含16位地址、8位数据、4位故障类型和1位有效标志。测试结束后,通过扫描链串行读出所有故障寄存器,由外部软件解析并生成BISR映射表。
  4. 时序收敛:BIST逻辑在综合时设置为set_false_path -from [get_clocks test_clk] -to [get_clocks func_clk],并在布局布线后检查BIST路径的保持时间。

结果对比:采用并行MBIST后,实际测试时间仅需约5ms(所有存储器同时测试,以最大的256KB存储器为准),比串行方案缩短72%,比ATE测试方案(估计需80ms)缩短94%。芯片面积增加约6.3%(BIST逻辑约0.8mm²,总芯片面积12.7mm²),在可接受范围内。

风险与代价:并行测试导致瞬时功耗增加约15%(所有存储器同时翻转),需要电源网络设计预留余量。此外,菊花链结构增加了布线复杂度,BIST控制器的扇出较大,需要插入缓冲器。

复盘经验:在MBIST集成中,“并行度”是测试时间与面积/功耗的权衡点。对于面积敏感的低功耗芯片,串行测试可能更合适;对于高性能芯片,并行测试能显著缩短测试时间。建议在项目早期进行MBIST架构评估,使用脚本自动生成BIST RTL,并建立标准化的验证环境(包括故障注入和覆盖率统计)。

3.5 常见误区与总结复盘

在MBIST设计与集成过程中,工程师常陷入以下误区,需要特别警惕:

  • 误区一:认为MBIST可以完全替代ATE测试。实际上,MBIST无法覆盖参数故障和部分动态故障(如数据保持故障需要特定等待时间),且诊断粒度有限。正确的做法是MBIST与ATE互补,MBIST用于快速筛选,ATE用于精确定位和参数验证。
  • 误区二:忽视BIST逻辑自身的可测试性。BIST控制器和比较器也是数字逻辑,需要插入扫描链进行测试。否则,如果BIST逻辑本身有故障,会导致测试结果不可信。建议将BIST逻辑纳入扫描链,并在测试模式中增加“BIST自检”步骤。
  • 误区三:算法选择一刀切。不同存储器类型(单端口/双端口、同步/异步)和不同故障风险(如辐射环境下的位翻转)需要不同的算法。例如,对于宇航级芯片,需要增加DRF测试(等待时间通常为几十毫秒),这会显著增加测试时间,需提前规划。
  • 误区四:忽略BIST对存储器时序的影响。BIST MUX会增加路径延迟,可能导致存储器访问时间变差,影响功能模式下的性能。建议在综合时对BIST路径进行时序优化,并在后端实现后重新验证存储器时序。

总结:MBIST是ASIC设计中实现存储器可测试性的核心手段。其基本原理是通过内部控制器生成测试算法,利用比较器判断响应,实现无需外部ATE的自动化测试。典型架构包括控制器、地址/数据生成器、比较器、故障寄存器和测试接口。与外部测试相比,MBIST在测试时间、引脚成本和现场测试能力上具有显著优势,但在参数故障覆盖和诊断粒度上存在不足。实际工程中,应根据芯片的存储器规模、测试时间预算、面积功耗约束和诊断需求,合理选择MBIST架构(串行/并行/菊花链),并采用“MBIST+ATE”的组合策略,以实现测试成本与覆盖率的最佳平衡。