【DFT】【MBIST】Memory Repair

Memory Repaire

  • 1. Overview
  • 2. Memory Repair
    • 2.1 Column MUX
    • 2.2 Type of Repair
  • 3. Tessent Repair Architecture
    • 3.1 BIRA
    • 3.2 BISR
    • 3.3 Implementing Soft Repair
    • 3.4 Repair Steps


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 有多种不同的分类方法。

  1. 根据修复过程中是否硬件电路或模拟电路的参与,可以将其分为:

    • Hard Repair:采用 eFuse 存储修复信息,掉电后信息不丢失,不依赖电源。ATE 测试完成之后,将修复信息烧写到 eFuse,然后再使用阶段再将这些修复信息加载到 memory;

    • Soft Repair:采用逻辑电路对 memory 进行修复,掉电后信息丢失,以来电源。修复信息必须再芯片每次启动时重新加载(存储在芯片外部)或者重新计算(重新进行 BIRA 冗余分析)。

      通常情况下是两者结合使用,需要使用 eFuse 来确保数据不丢失。出厂测试阶段存现的故障时永久存在的,所以将其保存在 eFuse 中,但是使用阶段因老化等出现的新故障时无法烧写在 eFuse 中的,只能采用 Soft Repair。

      Soft Repair 虽然增加了启动时间和控制电路的复杂性,但是和 Hard Repair 配合可以保证芯片在使用阶段,memory 可以正常工作。

  2. 根据冗余单元的位置,可以将其分为:

    • Extrenal:Redundant elements outside the memory。例如,100M 可用空间的真实大小是120M。

    • Internal:Redundant elements in the memory。例如。有一个块完全不使用的 Memory 专门用于 Repair。

  3. 根据修复的方式,还可以分为:

    • Column:列修复包括替换 single column 或 blocks of columns,直至 full width of a column multiplexer(IO Repair,即修复一个 mux 的所有输入列)

    • Row:行修复包括替换 blocks,rows,a subset of a row,down to a single word (word repair)


Column Repair

带有 Redudant Column 的 memory 的结构如下图所示,该 memory 使用了 Column Mux 技术。

在这里插入图片描述

① 该 memory 只有 1 列的冗余用于 repair;

② Column Repair 的修复是整体右移的过程:假设 Bit6 的 c0 出现故障,那么输入到 Bit6_c0 的数据会输入到 Bit6_c1,依次类推,最后原本保存在 Bit7_c3 的数据会保存到冗余列。

③ 输出端也会进行和输入端相同的操作,

④ 想要实现整体右移,还需要一个失效标志,即从哪一列开始进行整体右移。上图中棕色部分会设置一个失效标志位寄存器,正常状态下,寄存器中的值位 0,某一列失效的时候,该寄存器中的值会变成 1。


IO Repair

IO Repair 的整体结构如下:

在这里插入图片描述

① IO Repair 通常在 Memory 的两侧添加冗余单元;

② 修复过程和普通的 Column Repair 基本一样。当 Q[6] 检测到故障的时候,D[6] 的输出数据会保存早 Bit7,依次类型,D[7] 的数据保存到冗余列【redundant sub-array】。

③ 输出端口虽有所不同,但思路是一样的。新增加了一级的 mux,当 Bit6 不使用的时候,Q[6] 输出的就是 Bit7 的数据,和存储时相对应。


ROW Repair

行修复和列修复的思路基本一样,其整体结构如下图所示,灰色部分即为冗余单元。根据不同的设计,同样也可以实现单行、多行替换。

在这里插入图片描述


Column+Row Repair

此外,如果 design 中同时包含了冗余行和冗余列,还可以将行修复和列修复结合起来。具体的实现方式和修复模块的算法相关。

在这里插入图片描述


Summary

  1. 方法:Repair 其实就是整体移位的过程,具体的实现方法则是和冗余单元、控制电路相关。

  2. 代价:备份单元及其控制电路会占用额外的芯片面积,影响 timing,增加 power design 的复杂度。虽然如此,但是其对良率的贡献很大,所以是必须的。

  3. 优缺点

    行/列修复: 不需要复杂判断,处理简单(只需要一个移位标志寄存器),但是浪费严重(比如对于 IO Repair 而言,只有单独一列有故障的情况下,也需要替换整个 IO);

    行+列修复:更加灵活,但是增加了一定的时间复杂度


3. Tessent Repair Architecture


Tessnet 工具实现的带有 Memory Repair 的 MBIST 整体架构如下图所示:

在这里插入图片描述


和 Memory Repair 相关的具体结构如下图所示:

在这里插入图片描述

BISR:Built-in Self Repair,Memory Repair 相关的逻辑电路,BISR Controller、BISR Chains 等;

BIRA:Built-in Repair Analysis,在进行 Memory Repair 之前,对 memory 的测试结果进行分析、诊断,给出 repair information;

Fuse:断电可存数据的 memory,提前烧写 Memory Repair 相关的数据到其中,芯片上电之后,将这些数据加载到 memory ,用以实现 Memory Repair。


Chip-level 的 BISR controller 连接到 Central fuse box,该 fuse box 可以实例化在 BISR controller 的内部或外部。如果是位于外部,central fuse box 和 BISR controller 之间需要有额外的连线。

Chips 中所有的 repairable memories 都有对应的 BISR register,其中保存了 repair solution。

所有的 BISR register 连接起来构成一个 chip-level BISR scan chain,chip-level BISR scan chain 连接到一个 BISR controller。

在出厂测试阶段,BIRA 提供的 Repair Informaiton 先时保存到 BISR chains 中,然后 BISR controller 会对从 BISR scan chain 扫描出的 数据进行压缩,然后将其保存在 fuse box 中。

在芯片使用阶段,BISR controller 将保存在 fuse box 保存的修复信息从重新加载到 BISR Chains 上,然后给到 memory 的 repair port,从而实现对 Memory 的修复。


3.1 BIRA


Memory Repair 的前提是 Repairable memories 中包含冗余(spare or redundant)的 rows 或 columns,并且能够将任何存在故障的行或列映射到 redundant element。

但是具体的映射方法由谁来提供呢?

因此在 Memory 测试完成之后,Memory Repair 的第一步是进行 Repair Analysis,提供 Repair Information(需不需要修复、如何修复等)。

现有的 memory BIST diagnostic 方法,如 Compare Status pins diagnostic approach、the Stop-On-Nth-Error diagnostic approach 等并不是最佳的修复分析方法,因为它们不仅需要大量的测试时间和最新的高速 memory testers,而且不能直接有效的提供 memory repair 相关信息。

为了能够使生产测试环境中 repairable memories 使用起来更加方便,可以使用 Tessent 提供的 Built-In Repair Analysis (BIRA) 来进行修复分析,确定一个 memory 是否为可修复的,并且基于特定 redundancy scheme 提供 Repair Information。

基于 BIRA 的修复分析是在 memory BIST controller 工作期间进行,分析的结果在测试完成之后被 scaned out(给到 eFuse 等)。


和 Memory 的类型相对应,BIRA 也可以分为 Row BIRA、Column/IO BIRA 和 Row+Col BRIA。

通常情况下,BIRA 电路和 comparators 位于相同的位置。即,如果 DftSpecification/MemoryBist/Controller/Step/comparator_location 被设置为 shared_in_controller,BIRA 电路就位于 mbist controller中;如果该值被设置为 per_interface,那么 BIRA 电路就位于 memory interface 中。

但是,无论 comparator_location 的值是什么,Row BIRA 电路的总是期望被放在 mbist controller,这样能够通过最大化共享 BIRA logic 所需要的 address pipeline registers,从而使面积最小化。

所以,Tessent 工具默认将 Row BIRA 始终放在 mbist controller 中,但是当 comparator_location 被设置为 per_interface 的时候,通过在 DftSpecification 中指定 row_bira_location:follow_comparators 可以强制将 BIRA 放到 memory interface 中。

在这里插入图片描述


3.2 BISR


一般情况下,BISR 用于特指 BISR Register,用于存储修复信息。

因为 memory 所需要的修复控制信号是通过 BISR Register 施加的,所以 BISR 也可以称为 Repair Interface。

在 Tessent 中,memory repair interfaces 有两种可用类型:

  • Serial:Memories with serial self-repair have scan ports on the memory module. The self-repair fuses are accessed serially by scanning in the repair fuse values.

  • Parallel:Memories with parallel self-repair interface have ports on the memory module that control each repair fuse.

如下图所示,MEM1 是 serial BISR interface,它带有 internal BISR register;MEM2 是 parallel BISR interface。

在这里插入图片描述

① Internal BISR Register 是 memory 本身自带的,和 DFT 无关;External BSIR 是 Tessent 工具统一插入的,Tessent 工具在会为所有的 repairable memory 插入 External BISR,便于构成 BISR Chains;

② 对于具有 parallel BISR interface (External BISR) 的 memory,repair 相关的信号被加载到 External BISR 中,然后并行施加到 memory 上;对于具有 serial BISR interface 的 memory,repair 相关的信号直接串行施加到 Internal BISR Register;

③ memory 内部的 Internal BISR 也会被串到 BISR Chains 上,和 memory 对应的 External BISR 并行,BISR_SELECT 用于在两者之间进行选择,决定哪一个 BISR 中的数据通过是 BISR Chains 被 Scan out。

所以,External BSIR 和 Internal BISR Register 的位宽和数据是完全一样的,


3.3 Implementing Soft Repair


Tessent 的 BISR Controller 支持两种类型的 Repair:Soft 和 Hard。

在 DFT Insertion 过程中,通过指定 DftSpecification 中的 repair_method 属性的值,可以指定 Repair 类型,工具的默认值是 hard。

如果 repair_method 的值为 hard,memory repair information 保存在 fuse box 中,repair information 能够永久的保存在芯片中;

如果 repair_method 的值为 soft,芯片每次启动或者 power domian 开启的时候,repair information 需要重新加载或重新计算:

Reload:repair solution 保存在外部,通过 bisr_chain_access mode 进行加载;

Recalculated:通过执行 memory BIST 重新进行 Redundancy Analysis,这个时候 BISR controller 在工作模式下不需要访问 fuse box。

Trade-Offs and Benefits

芯片的 power-up time 增加,因为在进入功能模式之前需要进行 Redundancy Analysis 和 Memory Repair。

一些在特定工作条件下才会出现的特殊缺陷不能被检测到。

但是,因为不用使用 eFuse,所以可以节省面积。而且,如果 memory 出现新的缺陷,并且是可修复的,那么新的 repair solution 就会被加载到 BISR Chains。

Hard Repair 中的内容是写死的,只能对出场测试阶段检测到的缺陷进行修复,所以通常情况下是两者配合使用。

此外, BISR controller 必须通过 MissionMode controller 单独控制,并且 BISR controller 的 TDR 不能被复位,以避免对 BISR Chains 进行复位。出于同样的原因,即使芯片工作在功能模式下,IJTAG Network 或 TAP 也必须不能 reset。


3.4 Repair Steps


简单来说,Memory repair 分为两个步骤:

① 分析测试过程中,memory BIST controller 给出的失效报告;

② 确定施加到需要修复的 repairable memory 的 repair inputs 的值。

在这里插入图片描述

基于 Tessent 工具实现的 Memory Repair 架构如下上图所示,基于此架构,Memory Repair 的具体流程如下所述。

在这里插入图片描述

① Chip 上电或复位,BISR Controller 将 BISR Chain(BISR Register)配置为全 0;

② 运行 memory BIST/BIRA Controller,对每个 memory 进行测试并获取 repair information,然后将其保存在局部的 BIRA Register 中;

③ 运行 " transferr BIRA to BISR " 指令,将保存在局部的 repair information 传输到 BISR Chains;

④ 经过 BIST Controller 将 BIRA Register Repair 状态信息移出,用于判断 Chip 中 memory 是否存在故障;

Notes:(1) 这里的图可能有点早了,但是基本过程就是 BIRA 提供 Repair 信息,先将其放到 BISR Chains上,在将其给到 BISR Controller;(2) ③④应该是同步的,他们两个看上去使互补影响的两个步骤,主要是反馈测试结果】

⑤ 运行 BISR Controller Program Mode,将 BISR 存储的修复信息经过压缩之后烧写到 fuse 中;【Shift、压缩(节省空间)、烧写(高压)】

在这里插入图片描述

⑥ 芯片上电/复位,BISR Controller 自动使能,将修复信息从 fuse 加载到 BISR Chains,用于驱动 memory 上的 repair Port;

将修复信息保存到 efuse 模块的过程其实是在 ATE 测试阶段完成的,只执行一次;而将 efuse 中的修复信息加载到 BSIR Chains 则是在芯片使用阶段每次上电或者复位的时候都会执行。

⑦ 重新 run MBIST,验证 memory 是否被正确修复。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/935982.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[搜广推]王树森推荐算法——基于物体的协同过滤

基于物体的协同过滤 ItemCF 基于物体的协同过滤(Item-Based Collaborative Filtering,简称ItemCF)是一种经典的推荐系统算法 基本思想 量化用户对物品的兴趣,通过分析用户的行为来找到与目标物品相似的其他物品,然后…

scala的隐式转换

定义 隐式转换是 Scala 提供的一种强大的特性,它允许编译器在特定的情况下自动将一种类型转换为另一种类型。这种转换不是显式地通过方法调用进行的,而是由编译器自动插入转换代码。隐式转换主要通过定义隐式转换函数来实现。隐式转换函数是一种带有imp…

跨平台开发技术的探索:从 JavaScript 到 Flutter

随着多平台支持和用户体验一致性在应用程序开发中变得越来越重要,开发者面临的挑战是如何在不同平台上保持代码的可维护性和高效性。本文将探讨如何利用现代技术栈,包括 Flutter、JavaScript、HTML5、WebAssembly、TypeScript 和 Svelte,在统一的平台上进行高效的跨平台开发…

CTFshow-命令执行(Web58-77)

CTFshow-命令执行(Web58-77) Web58 <?php if(isset($_POST[c])){$c $_POST[c];eval($c); }else{highlight_file(__FILE__); }Warning: system() has been disabled for security reasons in /var/www/html/index.php(17) : eval()d code on line 1 本题对于passthru&…

MATLAB 直线插点重采样(98)

MATLAB 直线插点重采样(98) 一、算法介绍二、算法实现1.代码2.结果一、算法介绍 在两点构成的直线之间,均匀插入多个点,加密重采样直线点,具体的算法实现如下,结果如图所示: 二、算法实现 1.代码 代码如下(示例): % 示例调用 qian_cloud = [0, 0, 0; 1

Launcher启动流程

Launcher启动流程分2个阶段&#xff1a; AMS systemReady() 会启动一个临时Activity&#xff1a;com.android.settings.FallbackHome&#xff0c;如下流程等到用户解锁成功后&#xff0c;FallbackHome轮询到有可用的RealHome包&#xff0c;会销毁掉自己&#xff0c;AMS发现没有…

介绍几个Linux下的杀毒软件

一&#xff1a;chkrootkit 是一个用于检测Linux系统下可能被攻击者植入的后门程序或恶意代码的扫描工具。 &#xff08;1&#xff09;安装方法&#xff08;ubuntu) sudo apt update sudo apt install chkrootkit &#xff08;2&#xff09;使用方法&#xff1a; chkrootkit -…

Linux修改设置时区的几种方法

1.修改成北京时间 复制相应的时区文件&#xff0c;替换系统时区文件&#xff1b;或者创建链接文件 rm -rf /etc/localtime //先删除/etc/localtime&#xff0c;否则若存在此文件软链接会失败 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime //或者 ln -s /usr/share/zo…

【C语言篇】C 语言总复习(下):点亮编程思维,穿越代码的浩瀚星河

我的个人主页 我的专栏&#xff1a;C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞❤ 收藏❤ 在C语言的世界里&#xff0c;结构体和联合体以及文件操作都是非常重要且实用的知识板块&#xff0c;掌握它们能帮助我们更高效地组织数据以及与外部文…

如何在 ASP.NET Core 3.1 应用程序中使用 Log4Net

介绍 日志记录是应用程序的核心。它对于调试和故障排除以及应用程序的流畅性非常重要。 借助日志记录&#xff0c;我们可以对本地系统进行端到端的可视性&#xff0c;而对于基于云的系统&#xff0c;我们只能提供一小部分可视性。您可以将日志写入磁盘或数据库中的文件&#xf…

python 基于 docx 文件模板生成 docx 或 PDF 文件

需求背景 提供一个Word文档模板&#xff0c;使用python程序替换里边的占位符&#xff0c;替换内容包括文本和图片&#xff0c;然后输出docx或者PDF文件。 功能演示 输入示例 输出示例 实现程序 import os import shutil import subprocess import timefrom docx import Doc…

leetcode 面试经典 150 题:验证回文串

链接验证回文串题序号125类型字符串解题方法双指针法难度简单 题目 如果在将所有大写字符转换为小写字符、并移除所有非字母数字字符之后&#xff0c;短语正着读和反着读都一样。则可以认为该短语是一个 回文串 。 字母和数字都属于字母数字字符。 给你一个字符串 s&#xf…

前端项目初始化搭建(二)

一、使用 Vite 创建 Vue 3 TypeScript 项目 PS E:\web\cursor-project\web> npm create vitelatest yf-blog -- --template vue-ts> npx > create-vite yf-blog --template vue-tsScaffolding project in E:\web\cursor-project\web\yf-blog...Done. Now run:cd yf-…

【AI知识】过拟合、欠拟合和正则化

一句话总结&#xff1a; 过拟合和欠拟合是机器学习中的两个相对的概念&#xff0c;正则化是用于解决过拟合的方法。 1. 欠拟合&#xff1a; 指模型在训练数据上表现不佳&#xff0c;不能充分捕捉数据的潜在规律&#xff0c;导致在训练集和测试集上的误差都很高。欠拟合意味着模…

【GL006】Linux 之 shell

目录 一、shell 指令 1.1 体验shell指令 1.2 命令格式 1.3 shell中的通配符 1.4 输入输出重定向 1.5 命令置换 1.6 基本系统维护命令 1.7 Linux的进程管理命令 1.8 文件系统相关命令 1.9 Linux网络配置管理 二、shell 编程 2.1 shell 脚本的基础知识 2.2 shell 变…

【C++】简单计算器问题的深度解析与优化对比

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: C 文章目录 &#x1f4af;前言&#x1f4af;问题描述&#x1f4af;实现 1&#xff1a;我的实现代码分析优点不足 &#x1f4af;实现 2&#xff1a;老师的第一种实现代码分析优点不足 &#x1f4af;实现 3&#xff1a;…

国产自主可控新征程:华为原生鸿蒙系统与鲲鹏认证

华为于今年10月22日在深圳正式发布了其原生鸿蒙系统HarmonyOS NEXT。这是我国首个实现全栈自研的操作系统&#xff0c;标志着中国在操作系统领域取得了突破性进展。HarmonyOS NEXT 5.0的发布&#xff0c;使得鸿蒙操作系统成为继苹果iOS和安卓系统之后的全球第三大移动操作系统&…

【KodExplorer】可道云KodExplorer-个人网盘安装使用

说明&#xff1a;安装kodExplorer &#xff08;不是Kodbox&#xff09;&#xff1b;Kodbox需求服务器至少2核4G内存&#xff0c;要求环境具备php/redis/mysql/。安装kodExplorer 就是比较方便简单部署&#xff0c;个人版免费。 一、安装环境需求 服务器: Windows&#xff0c;…

正则表达式——参考视频B站《奇乐编程学院》

智能指针 一、背景&#x1f388;1.1. 模式匹配&#x1f388;1.2. 文本替换&#x1f388;1.3. 数据验证&#x1f388;1.4. 信息提取&#x1f388;1.5. 拆分字符串&#x1f388;1.6. 高级搜索功能 二、原料2.1 参考视频2.2 验证网址 三、用法3.1 限定符3.1.1 ?3.1.2 *3.1.3 3.1.…

恢复删除的文件:6个免费Windows电脑数据恢复软件

数据恢复软件可帮助您从众多存储设备中恢复损坏或删除的数据。您可以使用这些文件恢复软件来检索文件、文档、视频、图片等。这些应用程序支持多种标准文件格式&#xff0c;如 PNG、RTF、PDF、HTML、JPG、MP3 等。 经过超过 75 小时的研究&#xff0c;我分析了 25 最佳免费数据…