Memory Repair接口类型解析
Memory Repair 接口是内建自修复(BISR)架构中,用于将修复信息(Repair Solution)从控制逻辑传输到待修复存储器的物理或逻辑通道。其核心功能是实现修复数据的加载与应用,确保故障的存储单元能被冗余单元正确替换。根据数据传输方式、控制逻辑位置以及应用场景的不同,Memory Repair接口主要有以下几种类型和实现方式。
一、 接口主要类型
根据修复信息加载到存储器的方式,接口可分为串行(Serial)接口和并行(Parallel)接口。
| 接口类型 | 数据传输方式 | 典型实现 | 优点 | 缺点 |
|---|---|---|---|---|
| 串行接口 (Serial BISR Interface) | 通过扫描链(Scan Chain)串行移位加载修复数据。 | 存储器模块自带内部BISR寄存器(Internal BISR Register),修复值通过扫描端口(scan ports)串行移入。 | 引脚数量少,节省布线资源,适合高密度设计。 | 加载速度较慢,修复时间与扫描链长度成正比。 |
| 并行接口 (Parallel BISR Interface) | 修复控制信号(每位修复熔丝对应一个端口)并行加载到存储器。 | 由DFT工具(如Tessent)插入外部BISR寄存器(External BISR),修复信号并行施加到存储器端口。 | 加载速度快,修复数据可并行置位。 | 需要较多的专用端口和布线,可能增加面积和设计复杂度。 |
在实际芯片中,这两种接口可能共存。例如,一个具有内部串行BISR接口的存储器(MEM1)和一个需要外部并行BISR接口的存储器(MEM2)可以连接到同一个BISR控制器。控制器通过一个选择信号(如BISR_SELECT)来决定扫描链输出的是内部BISR还是外部BISR的数据,从而统一管理。
二、 接口在修复流程中的角色
Memory Repair接口是连接BISR控制器、修复信息存储单元(如eFuse)和可修复存储器的关键枢纽。其在整个修复流程中的作用如下图所示(基于Tessent架构):
[ATE测试/上电自检] --> (检测故障) --> [BIRA模块] --> (生成修复签名) --> [BISR Chains]
|
V
[eFuse/Flash] <--> [BISR控制器] <--> [Memory Repair接口] <--> [可修复存储器]
(存储) (控制加载) (数据传输通道) (应用修复)
具体步骤分解如下:
- 修复信息生成与暂存:在芯片测试或上电自检阶段,MBIST测试发现故障,BIRA(内建修复分析)模块分析故障并计算出最优修复方案,生成修复签名(Repair Signature)。该签名首先被扫描输出并暂存于芯片级的BISR扫描链(BISR Chains)中。
- 修复信息固化(Hard Repair):对于硬修复,BISR控制器将BISR Chains中的修复数据压缩后,通过高压脉冲编程写入非易失性存储单元,如eFuse阵列。
- 修复信息加载:芯片每次上电后,BISR控制器从eFuse中读取修复信息,或从外部接收软修复信息,然后通过Memory Repair接口将其加载到对应的BISR寄存器中。
- 修复应用:存储在BISR寄存器中的修复数据,通过存储器的修复端口(Repair Port)生效,控制内部的多路选择器(MUX)进行地址重映射,将访问故障行/列的请求导向冗余行/列,完成修复。
三、 关键信号与实现示例
一个典型的并行Memory Repair接口可能包含以下信号:
// 示例:一个支持列修复的存储器并行修复接口信号
module memory_repair_interface (
input wire clk, // 系统时钟
input wire repair_load_en, // 修复加载使能,来自BISR控制器
input wire [REDUNDANT_COL_ADDR_WIDTH-1:0] repair_data_in, // 修复数据输入,如失效列地址
output reg repair_done, // 修复加载完成标志
// 连接到存储器的修复端口
output wire [REDUNDANT_COL_ADDR_WIDTH-1:0] mem_repair_col_addr, // 失效列地址映射控制
output wire mem_repair_en // 存储器修复使能
);
// BISR寄存器,用于锁存修复信息
reg [REDUNDANT_COL_ADDR_WIDTH-1:0] bisr_register;
always @(posedge clk) begin
if (repair_load_en) begin
bisr_register <= repair_data_in; // 加载修复数据
repair_done <= 1'b1;
end else begin
repair_done <= 1'b0;
end
end
// 将修复信息持续输出到存储器
assign mem_repair_col_addr = bisr_register;
assign mem_repair_en = (bisr_register != 0); // 当修复数据非零时使能修复
endmodule
注释:上述代码展示了BISR寄存器在接口中的核心作用,它作为修复信息的缓存和控制逻辑。
对于串行接口,则主要通过遵循IEEE 1687(IJTAG)或类似标准的扫描链路进行访问。BISR控制器作为IJTAG网络的主设备,通过TAP(测试访问端口)将修复数据串行移位到各个存储器的内部BISR寄存器中。
四、 高级应用与考量
- 修复共享(Repair Sharing):为了减少面积开销,多个具有相同修复类型(如同为列修复)且物理地址映射兼容的存储器可以共享一套BISR逻辑和修复接口。这要求接口设计能够支持对多个存储器实例进行寻址和配置。
- 增量修复(Incremental Repair):对于硬修复,可能需要在多个测试阶段(如晶圆测试、封装测试)分步写入eFuse。对于软修复,则用于修复出厂后出现的故障。这就要求Repair接口及其控制逻辑支持修复状态的读取和更新,例如通过检查“修复状态位”或
GO_ID寄存器来判断是否需要以及如何进行增量修复。 - 快速加载:为了减少上电时间,可以采用快速BISR加载方案。这通常涉及对BISR DFT硬件进行修改,例如优化扫描链结构或采用并行加载模式,以加速修复数据从存储单元到BISR寄存器的传输过程。
- 外部修复:对于没有专用修复逻辑的第三方IP或存储器,可以采用“外部修复”方案。这需要设计额外的I/O引脚和控制逻辑,通过芯片引脚从外部ATE或控制器直接施加修复信号,本质上是在芯片外围实现了一个特殊的Repair接口。
综上所述,Memory Repair接口是芯片可靠性设计中的关键一环,其设计需在加载速度、芯片面积、布线复杂度和灵活性之间取得平衡。随着芯片规模扩大和可靠性要求提高,支持共享、增量更新和快速加载的智能化Repair接口变得越来越重要。
参考来源
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)