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接口] <--> [可修复存储器]
    (存储)          (控制加载)         (数据传输通道)         (应用修复)

具体步骤分解如下:

  1. 修复信息生成与暂存:在芯片测试或上电自检阶段,MBIST测试发现故障,BIRA(内建修复分析)模块分析故障并计算出最优修复方案,生成修复签名(Repair Signature)。该签名首先被扫描输出并暂存于芯片级的BISR扫描链(BISR Chains)中。
  2. 修复信息固化(Hard Repair):对于硬修复,BISR控制器将BISR Chains中的修复数据压缩后,通过高压脉冲编程写入非易失性存储单元,如eFuse阵列。
  3. 修复信息加载:芯片每次上电后,BISR控制器从eFuse中读取修复信息,或从外部接收软修复信息,然后通过Memory Repair接口将其加载到对应的BISR寄存器中。
  4. 修复应用:存储在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寄存器中。

四、 高级应用与考量

  1. 修复共享(Repair Sharing):为了减少面积开销,多个具有相同修复类型(如同为列修复)且物理地址映射兼容的存储器可以共享一套BISR逻辑和修复接口。这要求接口设计能够支持对多个存储器实例进行寻址和配置。
  2. 增量修复(Incremental Repair):对于硬修复,可能需要在多个测试阶段(如晶圆测试、封装测试)分步写入eFuse。对于软修复,则用于修复出厂后出现的故障。这就要求Repair接口及其控制逻辑支持修复状态的读取和更新,例如通过检查“修复状态位”或GO_ID寄存器来判断是否需要以及如何进行增量修复。
  3. 快速加载:为了减少上电时间,可以采用快速BISR加载方案。这通常涉及对BISR DFT硬件进行修改,例如优化扫描链结构或采用并行加载模式,以加速修复数据从存储单元到BISR寄存器的传输过程。
  4. 外部修复:对于没有专用修复逻辑的第三方IP或存储器,可以采用“外部修复”方案。这需要设计额外的I/O引脚和控制逻辑,通过芯片引脚从外部ATE或控制器直接施加修复信号,本质上是在芯片外围实现了一个特殊的Repair接口。

综上所述,Memory Repair接口是芯片可靠性设计中的关键一环,其设计需在加载速度、芯片面积、布线复杂度和灵活性之间取得平衡。随着芯片规模扩大和可靠性要求提高,支持共享、增量更新和快速加载的智能化Repair接口变得越来越重要。


参考来源

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐