Khorina · 8月13日

搞DDR必懂的关键技术笔记:MBIST、BIRA与BISR | 算法与自修复机制深入解析

开始之前,先解释一下标题的几个名词。
  • Memory Testing(内存测试):是确保计算机内存(如DRAM、SRAM等)在制造、集成到系统后以及使用过程中能够正确无误地存储和检索数据的过程。内存测试对于保证系统稳定性和可靠性至关重要。
  • MBIST(Memory Built-In Self-Test,内存内置自测试):是一种在芯片内部实现的测试机制,用于在芯片上电或复位时自动检测内存故障。MBIST通过生成测试向量(test patterns),将这些向量写入内存,然后读取并验证结果来检测内存错误。它大大减少了对外部测试设备的需求,提高了测试效率和覆盖率。
  • BIRA(Built-In Redundancy Analysis,内置冗余分析):虽然“BIRA”不是一个广泛认知的术语,但在此上下文中,我们可以将其理解为一种机制,该机制用于分析内存系统中内置的冗余资源(如额外的存储单元或修复逻辑),以确定哪些资源可用于修复检测到的故障。这种分析是内存自修复机制(如BISR)的前提。
  • BISR(Built-In Self-Repair,内置自修复):是一种在检测到内存故障时自动修复这些故障的技术。BISR通常利用内存中的冗余资源(如额外的行、列或存储单元)来替换或绕过故障区域,从而恢复内存的正常功能。这种机制对于提高系统的可靠性和延长使用寿命至关重要。
本文或该部分内容深入探讨了MBIST、BIRA(或类似概念)和BISR这三种技术,它们共同构成了现代内存系统中关键的测试和修复机制。通过算法和自修复机制的深入解析,读者可以更好地理解这些技术如何确保内存的稳定性和可靠性。

通常,我们观察到每三年内存容量会增加四倍,以满足新一代物联网设备的需求。深亚微米器件包含大量内存,这些内存要求占用更小的面积并具有更快的访问速度。

因此,对于此类半导体工程设计,需要一种自动化测试策略来减少自动测试设备(ATE)的测试时间和成本。

内存故障的表现与传统的固定型故障有所不同。因此,在内存(由于其阵列结构)中,故障模型与标准逻辑设计中的故障模型存在差异。

此外,在内存测试过程中,除了故障检测和定位外,还实现了通过冗余单元对故障单元的自修复功能。

从系统设计的角度来看,测试内存同样面临挑战,因为这需要测试逻辑来复用和将内存引脚连接到外部引脚。由于单元阵列的大小、密度以及与之相关的故障,无论是通过功能测试还是使用ATPG(自动测试模式生成)来测试内存,都需要庞大的外部模式集以确保可接受的测试覆盖率。

传统的DFT(可测性设计)/DFM(可制造性设计)方法并不能完全满足测试内存故障及其自我修复能力的需求。针对这一难题,内存MBIST(内置自测试)提供了一个有前景的解决方案。MBIST在内存中添加了测试和修复电路,从而提供了可接受的成品率。本文旨在向读者介绍MBIST架构、各种内存故障模型、通过算法进行的测试方法,以及内存的自我修复机制。

引言

在超大规模集成电路(VLSI)中,存储器占据了相当大的比例。存储器系统的设计初衷是为了存储海量的数据。[1] 与包含逻辑门和触发器的电路不同,存储器在测试时需要采用独特的故障模型和测试算法。

MBIST(内置自测试)便是一种自我测试和修复机制,它通过一系列精心设计的算法来检测存储器中的故障。

这些算法能够识别出存储单元中可能存在的各种故障,包括但不限于固定型故障(SAF)、转换延迟故障(TDF)、耦合故障(CF)以及邻域模式敏感故障(NPSF)。为了实现这一目标,MBIST内置了时钟、地址和数据生成器,以及读写控制器逻辑,以生成必要的测试模式来进行测试。

Basic Memory Model

一个典型的内存模型由以二维数组连接的内存单元组成,因此内存单元的性能必须在数组结构的背景下进行分析。在数组结构中,内存单元由两个基本组件组成:“存储节点”和“选择设备”。“选择设备”组件使内存单元能够在数组中寻址以进行读写操作。这两个组件都影响着内存的缩放限制。

如上图1所示,行解码器和列解码器确定需要访问的单元地址。根据行解码器和列解码器上的地址,选择相应的行和列,然后将它们连接到感测放大器。感测放大器放大并发送数据。

image.png

同样地,我们可以访问需要写入数据的指定单元。这里使用专门的电路来将数据总线上的值写入到单元中。对于解码器,我们会测试其SoC验证功能,确保它们能够根据地址总线上的地址正确地访问目标单元。对于放大器和驱动器,我们会检查它们是否能够正确地将值从单元读取出来,并写入到单元中。

内存测试所需的故障模型主要包括以下几种:

  1. 固定型故障(Stuck-At Fault):指存储单元中的某个节点被永久固定在逻辑0或逻辑1状态,无法改变。
  2. 转换故障(Transition Fault):指存储单元在从一个状态转换到另一个状态时出现的故障,通常与信号的上升或下降时间有关。
  3. 耦合故障(Coupling Fault):指由于存储单元之间的电气耦合效应,导致一个单元的状态受到另一个单元状态的影响。
  4. 邻域模式敏感故障(Neighborhood Pattern Sensitive Fault,NPSF):指存储单元的故障行为与其周围单元的状态有关,即故障具有局部依赖性。
  5. 地址解码器故障(Address Decoder Faults):指地址解码器在解析地址时出现的错误,可能导致无法正确访问目标单元。

MBIST模型

image.png

在自动化测试设备上对制造出的芯片进行设计验证测试的过程中,需要应用外部测试模式作为刺激。测试器会分析设备的响应,并将其与存储在测试模式数据中的标准(或称为“golden”)响应进行比较。

MBIST(内存内建自测试)通过将所有这些功能集成到芯片上内存周围的测试电路中,简化了这一过程。它实现了一个有限状态机(FSM),用于生成刺激并分析从内存中输出的响应。

这个额外的自测试电路充当了高层系统与内存之间的接口。由于它提高了可控性和可观测性,因此减少了嵌入式内存测试的挑战。FSM为内存测试提供测试模式,这大大减少了对外部测试模式集的需求。

MBIST 算法

为了检测内存中的故障,我们采用专门的算法来进行内存测试。这些算法可以应用于RAM和ROM的测试,并且有多种不同的类型。下面,我将介绍两种最重要的内存测试算法。这些算法能够在最少的测试步骤和时间内,有效地检测出内存中的多种故障。

棋盘算法(Checkerboard Algorithm)

此算法通过在内存单元阵列的交替位置写入1和0,形成类似棋盘的图案。具体而言,算法会将内存单元分为两个交替的组,确保每个相邻的单元都在不同的组中。这种棋盘模式主要用于激活由于泄漏、单元间短路以及固定型故障(SAF)等问题引起的故障,从而提高测试的覆盖率和准确性。

image.png

算法步骤

  1. 升序地址写入棋盘模式:按照地址递增的顺序,在内存单元中交替写入0和1,形成棋盘图案。
  2. 升序地址读取棋盘模式:再次按照地址递增的顺序,读取内存单元中的值,验证棋盘模式是否正确。
  3. 升序地址写入反向棋盘模式:将棋盘模式中的0和1互换,即原本为0的位置写入1,原本为1的位置写入0,然后按照地址递增的顺序写入。
  4. 升序地址读取反向棋盘模式:按照地址递增的顺序,读取内存单元中的值,验证反向棋盘模式是否正确。
  5. March算法:这是一种在内存测试中广泛使用的算法,通过特定的读写序列来检测内存故障。

March测试

在针对RAM测试的多种算法中,March测试因其简单快捷的特点而脱颖而出,成为内存测试中最受欢迎的方法。March测试有多种类型,每种类型覆盖的故障类型也各不相同。这种测试方法通过“步进”地遍历内存地址(即按顺序向上或向下遍历),并在遍历过程中写入和读取已知内存位置的值。在从内存模型中检索正确参数的同时,这些算法还会确定内存的大小和字长。

让我们考虑一个标准的March测试算法,它包含10个步骤,这些步骤在递增和递减地址顺序上交替进行读写操作。该算法旨在检测多种故障,如固定故障(Stuck-At)、转换故障(Transition)、地址故障、反转故障(Inversion)和幂等耦合故障(Idempotent coupling faults)。

算法步骤:

递增地址:
  1. 以递增地址顺序写入0(用于初始化)
  2. 读取0,然后以递增地址顺序写入1
  3. 读取1,然后以递增地址顺序写入0
递减地址:
  1. 读取0,然后以递减地址顺序写入1
  2. 读取1,然后以递减地址顺序写入0
  3. 以递减地址顺序读取0(这一步通常用于验证写入操作的正确性)

目前,大多数行业标准都采用了串行March测试和棋盘算法(Checkerboard algorithm)的组合,这种组合通常被称为SMarchCKBD算法。该算法使MBIST控制器能够利用快速行访问或快速列访问来检测内存故障,从而提高了测试的效率和准确性。

内存内置自修复(BISR)

由于内存占据了SoC设计的大部分面积,并且通常具有较小的特征尺寸,因此内存对良率有重要影响。为了避免良率损失,设计中通常会包含冗余的行和列,以便在检测到故障单元时,可以将其重定向到这些冗余单元上。内存修复可以包括行修复、列修复或两者的组合。

image.png

内存修复过程

内存修复的实施包含两个核心步骤。首先,需要分析MBIST(Memory Built-In Self-Test,内存内建自测试)控制器在测试可修复内存期间诊断出的所有故障。这一步骤至关重要,因为它为后续的修复工作提供了基础数据。紧接着,基于这些故障信息,确定一个修复签名(Repair Signature),该签名将用于指导内存的修复过程。值得注意的是,所有设计为可修复的内存都配备了专门的修复寄存器,用于存储并应用这个修复签名。

内置冗余分析(BIRA)模块

BIRA模块在内存修复过程中扮演着关键角色。它根据MBIST控制器提供的内存故障数据和系统中已实现的内存冗余方案,计算出相应的修复签名。此外,BIRA还负责评估在生产测试环境中,内存是否具备修复的可能性。一旦修复签名被确定,它将被存储在BIRA寄存器中,以便MBIST控制器或ATE(Automatic Test Equipment,自动测试设备)在后续步骤中进一步处理。

Fusebox编程与修复信息的烧录

修复签名随后被传递到修复寄存器的扫描链中,为Fusebox的编程做准备。Fusebox位于芯片设计层面,是存储修复信息的关键组件。通过TAP(Test Access Port,测试访问端口)和专用的修复寄存器扫描链,可以精确控制Fusebox的读写操作,确保修复信息能够准确无误地传递到目标位置。在Fusebox编程过程中,修复信息首先被扫描出扫描链,并进行压缩处理,以节省存储空间。随后,通过施加高压脉冲,将压缩后的修复信息即时烧录到eFuse(Electronic Fuse,电子保险丝)阵列中。

修复信息的加载与内存验证

在芯片复位时,存储在eFuse中的修复信息会自动加载到修复寄存器中,并进行解压缩处理。这些修复寄存器直接连接到内存上,确保修复信息能够迅速应用于实际的内存修复工作。随着修复信息的加载和应用,所有具备冗余功能的内存都将得到修复。最后,通过运行BIST(Built-In Self-Test,内建自测试)对修复后的内存进行验证,确保内存的功能和性能符合设计要求。

结论

随着高速高密度内存技术的不断发展,对测试技术的要求也越来越高。未来几年,摩尔定律的推动将主要依赖于内存技术的创新,特别是那些专注于缩小间距和提高晶体管密度的技术。然而,这也将带来测试复杂性的显著增加,使得在不增加成本的情况下实现高效内存测试变得更加具有挑战性。

本文所讨论的MBIST模型、相关算法以及包括BIRA和BISR在内的内存修复机制,为这一挑战提供了一种低成本且有效的解决方案。通过综合运用这些技术和方法,可以显著提高内存测试的效率和准确性,为高速高密度内存技术的发展提供有力支持。

原文链接

作者:TrustZone
文章来源:TrustZone

推荐阅读

更多物联网安全,PSA等技术干货请关注平台安全架构(PSA)专栏。欢迎添加极术小姐姐微信(id:aijishu20)加入PSA技术交流群,请备注研究方向。
推荐阅读
关注数
4564
内容数
166
Arm发布的PSA旨在为物联网安全提供一套全面的安全指导方针,使从芯片制造商到设备开发商等价值链中的每位成员都能成功实现安全运行。
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息