Memory Repaire
1. Overview
假设通过 MBIST 测试发现 SoC 中一个或多个 Memory 存在故障,不能正常进行读写操作,那么应该如何处理?
因为只有少数的 memory 出现故障,继续使用会带来安全隐患,直接丢掉则过于可惜。那么,一个折中的方法是对其进行修复。【Memory Repair】
随着集成电路的发展,芯片的集成度越来越高,memory 的数量越来越多,故障率也随之提高,因为对芯片进行 Memory Repair 的也越来越重要。
Memory Repair 就是修复缺陷的过程,通常是以备份替换的方式来对 Memory 进行修复。即在存储单元中添加备份的行和列,当某一个存储单元出现故障的时候,将其重新映射到备份单元。
【冗余设计:从使用者的角度看,有 100 个存储单元,但是真实的 design 中可能会有 120 个存储单元,多出的 20 个就是用于 Repair】
2. Memory Repair
2.1 Column MUX
Memory Repair 技术会用到 Column MUX,首先对其进行简单介绍。
一个大小为 1K x 32 的 memory 应该是有 1024 行、32 列,但是这样一个细长的结构在芯片中是不容易摆放的,floorplan 和时序收敛的难度都非常高。
因此,我们希望在不改变 memory 大小的情况下,更改 memory 的形状,以提升 memory 的性能,降低 Address decoder 的复杂度。Column MUX 技术就可以这项任务。
基于 Column MUX 技术,大小为 1K x 32 的 memory 的真实物理实现方式如下图所示。
该 memory 的实际的物理结构是 256 行、128 列,但是在对其进行读写的时候,还是要按照 1K * 32 进行操作。
因此,首先将 128 列分成 4 个阵列,每个阵列有32bits。
然后将每个阵列相同 bit 进行 mux,mux 的选择信号就是地址信号,可以选择不同位置的数据进行输出。
这样,在逻辑上就是一个 1K x 32 的 Memory。
2.2 Type of Repair
Memory Repair 有多种不同的分类方法。
-
根据修复过程中是否硬件电路或模拟电路的参与,可以将其分为:
-
Hard Repair:采用 eFuse 存储修复信息,掉电后信息不丢失,不依赖电源。ATE 测试完成之后,将修复信息烧写到 eFuse,然后再使用阶段再将这些修复信息加载到 memory;
-
Soft Repair:采用逻辑电路对 memory 进行修复,掉电后信息丢失,以来电源。修复信息必须再芯片每次启动时重新加载(存储在芯片外部)或者重新计算(重新进行 BIRA 冗余分析)。
通常情况下是两者结合使用,需要使用 eFuse 来确保数据不丢失。出厂测试阶段存现的故障时永久存在的,所以将其保存在 eFuse 中,但是使用阶段因老化等出现的新故障时无法烧写在 eFuse 中的,只能采用 Soft Repair。
Soft Repair 虽然增加了启动时间和控制电路的复杂性,但是和 Hard Repair 配合可以保证芯片在使用阶段,memory 可以正常工作。
-
-
根据冗余单元的位置,可以将其分为:
-
Extrenal:Redundant elements outside the memory。例如,100M 可用空间的真实大小是120M。
-
Internal:Redundant element
-