5.为什么从内存结构的角度看 March 似乎很直观
5.1 如何访问
SRAM 考虑一个银行:

- 使用地址总线选择特定行(字行)
- 通过连接到该行的 位线读取或写入单元格的值
- 每次只能确定控制 "一个地址"
因此,测试的基本单元自然是这样的。
"选择一个地址 → 执行读/写序列 → 移动到下一个地址"
这个流程本身与 March 元素的定义几乎以 1:1 的比例重叠。
5.2 如何捕获地址解码器故障?
例如,在一个地址:
- 解码器故障导致 两行同时亮起。
- 在此地址,
w1可能会导致预期单元格为 1,以及相邻行中的单元格。
现在在另一个地址:
- 我们预期相邻单元格为
r0,但我们读取了1。
如果您多次重复 r0, r1, 像三月 C- 一样上上下下,您肯定会在某一时刻读到 "非预期单元格一起打开并覆盖 "的值。
这就是 March C- 检测 地址解码器故障的机制。
5.3 如何捕捉耦合故障:
耦合故障是指以下情况。
当在攻击单元上执行特定操作(写入、切换)时,相邻单元(受害者)的值不被更改或保持的故障
March C- 是:
- 在对任何单元格执行
w1操作后,我们立即使用r0或r1检查其相邻单元格,重复多次,上下方向相反。
在这个过程中:
- 为了找到 "只有当相邻单元格的图案处于某种状态时才会显示的故障",我们强制进行了各种相对排序。
- 这比简单地编写/读取一次棋盘模式要花费更多时间,但却能提供更高的故障覆盖率。
- 现在,让我们将我们在实践中经常听到的棋盘放到上下文中。
- 让我们从单行定义开始。
- 按位计算:
- 图案 A:
0x55...(...0101 0101) - 图案 B:
0xAA...(...1010 1010)
- 图案 A:
- 按地址,这通常是:
- 偶数地址 →
0x5555_5555 - 奇数地址 →
0xAAAA_AAAA
- 偶数地址 →
- 或者您可以反过来,这样 0 和 1 就会像棋盘一样在 水平(按位) 和垂直(按地址) 方向交替出现。
- 相反的模式称为反棋盘。
- All-0、All-1 模式当然很重要。
w0 → r0、w1 → r1足以覆盖Stuck-at 故障。- 位线/字线之间的短路/桥
- 耦合故障
- 邻近模式敏感故障 (NPSF)
- 当两个单元具有不同的值(0/1)
- 当邻区具有特定的模式(例如 010/101)
- 如果两个单元都为 0,短路可能不明显,因为它是 0,只有当一个单元为 0 而另一个单元为 1 时,电流才会使值失真。
- March 算法 =
↑, ↓+(r0, w1, r1, w0 ...)=
操作序列 - 棋盘式 =
数据背景 - 将数据背景设置为 solid 0 / solid 1 / checkerboard / inverse-checkerboard 中的一种
- 在该状态下执行 March 算法序列
- 第 1 步:用棋盘格填充整个内存。
- 第 2 步:在该状态下执行
March C-的↑(rX, wY)元素。 - 第 3 步:切换到反棋盘并再次行进。
- 消费类 SoC:
March C- @ solid 0/1- 必要时添加一个简短的棋盘序列
- 汽车/服务器级 SoC:
March C- @ solid 0/1March C- @ checkerboard / inverse-checkerboard- 添加面向 NPSF 的 March SS 算法,以实现诊断覆盖目标。
- 产品性质
- 消费电子 SoC → "中等质量 + 较短测试时间"
- 汽车/安全关键型 → "极高可靠性 + 可接受较长测试时间"
- 目标 DPPM/PPM、标准要求
- ISO 26262 诊断覆盖范围
- 晶圆厂/客户覆盖范围指南
- 存储器特性
- 单端口/双端口/多端口 SRAM
- 寄存器文件、CAM、ROM、eDRAM、eFlash 等:eFlash/eFuse/NVM 包括程序/擦除/保持测试
- 多端口 SRAM 使用 March 变体,端口之间的读/写组合用于端口交互故障
- 检查其是否符合公司标准/客户要求
- 示例)
March C- + March LA + Checkerboard - 新项目的DFT 工程师将这些算法作为默认设置,仅针对不寻常的内存(eFlash、特殊 SRAM 等)进行调整
- 示例)
- 逻辑测试和存储器测试在理念上是不同的:
- 逻辑:扫描 + ATPG,以门级故障为重点
- 存储器:逐地址顺序访问,以单元/邻域/解码器故障为重点
- 行进算法是一种通过行进地址来重复读/写序列的测试。
- 方向(↑/↓)+操作(r0/r1/w0/w1)的组合是关键
- 基本概念是 March X,实际操作以 March C- 为基础。
- 棋盘不是一种算法,而是一种背景。
March C- @ solid 0/1表示单元格本身,March C- @ checkerboard/inverse-checkerboard表示相邻交互。
- 算法的选择由 MBIST 插入步骤中的工具选项决定。
- 这并不像阅读论文和选择一个漂亮的 March,然后在创建向量时将其穿上,
- 它是在 DFT 架构/MBIST 插入时通过查看测试要求、内存特性和测试时间来确定的。
6.2 为什么是棋盘格(不能是 All-0/All-1)
Checkerboard pattern = 一种数据背景,其中存储单元的排列方式使相邻单元格总是具有相反的值,例如
010101... /10101010...。
6.1 什么是棋盘格图案:

6. 棋盘背景和三月算法
如果不符合,则可以通过添加更多 March 元素、添加背景等方式对其进行定制。此外,许多公司在 BU / 公司层面都有一套标准的 MBIST 算法:在实践中,单个工程师从头开始设计 March 算法的情况非常罕见,标准模板 + 一些定制是更常见的情况。
요약:供 DFT/ATPG 工程师牢记的要点
总而言之,以下几点对 DFT/ATPG 工程师非常有用。有了这些知识,您就能更好地了解如何在芯片设计会议上控制 DFT 团队,而且在阅读 MBIST 规范或代工厂指南时也会更加得心应手。当您需要设计自己的 定制 March + 背景时,这个框架将是一个很好的起点。
过渡故障也在一定程度上得到了覆盖。这些故障通常只在以下情况下可见。例如,如果两个单元发生弱短路:因此,从测试的角度来看:
我们希望创建一种 "相邻单元始终具有相反值 "的情况,以尽可能多地刺激
bitline / cell / wordline 之间的干扰。
最简单的方法是使用棋盘模式。
6.3 西洋跳棋和三月棋的关系
这里有一点很容易混淆。换句话说,这样的结构更容易理解。例如:这就是您经常在 MBIST 工具脚本中看到的配置。
算法:行进 C-
背景:实心 0/1、棋盘式、反棋盘式
我们正交地定义了算法和背景,这种组合提高了故障覆盖率。在实际产品规格中,它看起来像这样。
7.从 MBIST 的角度来看,何时以及如何决定 March/Checkerboard?"
最后,让我们来总结一下
"在设计流程中何时决定该测试向量/算法?"这个问题。
7.1 算法选择标准
在现实世界中,选择算法的过程通常可以总结如下。
测试要求 + 存储器特性 + 测试时间(ATE 成本) + 工具/库默认值
在实践中,内存编译器/IP 供应商通常会提供推荐的 March 集。
"This SRAM macro achieves XX% fault coverage based on March C- + Checkerboard"作为 DFT 工程师,您可以使用这些信息并