Design-for-Testability(DFT)的基本知识点

Design-for-Testability(DFT)的基本知识点

基础知识

1. CP和FT

  • CP是(ChipProbe)的缩写,指的是芯片在wafer(晶圆)的阶段,就通过探针卡扎到芯片管脚上对芯片进行性能及功能测试,有时候这道工序也被称WS(WaferSort)

  • FT是Final Test的缩写,指的是芯片在封装完成以后进行的最终测试,只有通过测试的芯片才会被出货,详尽的测试。

参考https://blog.csdn.net/lzwsdu/article/details/53502894:

什么情况下需要CP?

  1. 因为封装本身可能影响芯片的良率和特性,所以芯片所有可测测试项目都是必须在FT阶段测试一遍的.而CP阶段则是可选

  2. CP阶段原则上只测一些基本的DC,低速数字电路的功能,以及其它一些容易测试或者必须测试的项目.凡是在FT阶段可以测试,在CP阶段难于测试的项目,能不测就尽量不测.一些类似ADC的测试,在CP阶段可以只给几个DC电平,确认ADC能够基本工作.在FT阶段再确认具体的SNR/THD等指标

  3. 由于CP阶段的测试精度往往不够准确,可以适当放宽测试判断标准,只做初步筛选.精细严格的测试放到FT阶段

  4. 如果封装成本不大,且芯片本身良率已经比较高.可以考虑不做CP测试,或者CP阶段只做抽样测试,监督工艺

  5. 新的产品导入量产,应该先完成FT测试程序的开发核导入.在产品量产初期,FT远远比CP重要.等产品逐渐上量以后,可以再根据FT的实际情况,制定和开发CP测试

2. 测试工程师需要考虑什么

降低测试成本:

  • 从测试规划开始考虑芯片性能要求,ATE,Load Board等,通过减少chain length, memory instance number 来降低成本
  • ATPG effciency
  • 选择合适的test vectors

3. 什么是DFT

DFT = Design-for-Testability

  • 额外的pin

  • 会插入或改变原有的逻辑

DFT cost:

  • area cost
  • performance 降低
  • ATPG tool cost 和 pattern debug cost
  • ATE testing cost

如何减小DFT cost:

  • 合理的test plan, 比如减小chain length, memory concurrent testing
  • 减少图形(pattern) 数量
  • 增加测试频率

Fault Model

physical fault:

  • IO leakage 或 short
  • net open
  • material pollution

Logic fault:

  • signal hard fault
  • delay fault
  • static current fault

Fault model 就是在physical fault 和 Logic fault之间建立一个桥梁,或者说是一个反应物理fault影响的逻辑模型

比如下面一个SA fault (static fault):

A pin可能在物理上被短路到了地,因此在建模时相当于将其置为静态的0.

Transition fault: 主要考察speed和timing

  • STR: slow to rise
  • STF: slow to fall

Path delay fault: 也是反应在速度和时序上,考察整个路径上的延时是否超时,通常是关键路径

IDDQ: 测试CMOS电路在静态时的总电流。

  • 在静态时CMOS只有leakage电流或二极管反向电流
  • 任何开路,短路都会导致总电流异于常规,导致IDDQ variation

Fault class hierarchy

  • DT - Detected
  • PT - Possibly detected
  • UD - Undetectable
  • AU - ATPG untestable
  • ND - Not detected

DFT Methods

  • Ad-hoc (功能点测试)
  • Structured (结构化测试):
    • Scan
    • Built-in self-test (BIST)
      • Memory
      • Logic
    • Boundary scan

Ad-hoc

在设计者关注的地方增加可测试逻辑:

  • 增加可控制节点和观测节点
  • 将大的电路分解为小的测试blocks

例如在下面的ROM前增加一个scan点可以观察进入ROM的数据是否有误。

缺点:

Scan:

将DFF换成带扫描模式的DFF,并将其串起来形成scan chain

逻辑BIST

BIST = Build in self test

将ATE(自动测试机)的工作(Test data generation, test response evaluation) 放到片上。

另外,可以保护系统的内部数据,因为少了外面的控制和观测,所以对内部节点的信息不可获取。

缺点:

  • 开销大
  • 较低的fault coverage,较高的测试时间
  • Debug 困难,只知道错了,但不知道错在哪

常用于对pin数量要求不大(pin比较少),有安全问题的芯片,例如:公交卡芯片

Boundary Scan

测试多芯片互联。测试板级制造过程的错误,包括使用了错误的元件,pin的错误短路、开路等

  • 有独立的子系统(独立时钟)
  • 只需要5个pin: TDI, TDO, TMS, TCK, TRST(可以不用) (JTAG)
  • 通过将多片的TDO和TDI串联可以测试多片的互联

基本JTAG:

例如,通过TAP模式选择,检测device的身份验证,验证是否时正确的芯片。

DFT-Scan

D算法:

  1. 选择一个特定的fault point(猜测的有fault的地方)
  2. 输入驱动值,保证其值到达fault point时产生的理论值跟fault相反
  3. 传播fault值到最近的输出点
  4. 记录测试图形,报fault

例子:下面的U1单元输出怀疑有static fault(接地短路)

  • 首先在U1的输入上给0,如果U1没问题,则输出应该时1(绿色,表示无fault), 否则,输出0(红色,表示static 0 fault)
  • 其他pin的输入需要做配合,使得最后的输出pin能够反应U1的值,这样U1的fault就被挪到了输出pin上,判断输出值即可判断U1是否有问题

对于这个例子,有如下几个概念:

  1. Input Stimulus: 测试激励,这边指 1000
  2. Expected response: 预期响应,这边指没有fault时的输出值,为1
  3. Test Vector: 测试向量,即上面两个合在一起10001
  4. Test pattern:测试图形,为了检测一个目标fault而构建的一个或多个测试向量序列

实际上,我们并不知道U1是否有问题,就算最后输出报了fault,也无法确定是不是U1出错。所以实际上做的时候会迭代多次,根据不同的测试激励逐渐缩小fault点范围,直到排查到fault点。

D-算法的优缺点

  • 优点:
    • Deterministic: 确定的,是一步接一步做的
    • Exhaustive: 穷举的,直到测完或者有undetectable的fault
  • 缺点:
    • 一次只能测一个fault
    • 在每一步都要进行决策
    • 对于一些难以检测的fault可能要多次迭代测试

注意:有些fault点是测不到的,比如冗余逻辑

练习

Scannable Equivalent Filp-Flop

上面的方法是测组合逻辑,而要测时序逻辑,则需要将DFF进行替换:

之后将所有替换后的DFF串起来形成一条链。

目的:方便将测试激励灌到任意DFF中。

方法

  • SE选中SI端,经过scan shift将测试激励通过SI端移到寄存器中
  • SE选中D端,让寄存器Capture数据
  • SE选中SI端,继续shift,将待测点结果输出到output pin
  • 继续Capture ...

例子:

可以看到,要测标记点的fault,需要给1000的测试激励,首先通过SI端将数据依次打入对应寄存器,之后capture fault结果,然后继续shift,此时经过若干周期就能将所有DFF的capture值从PO导出来,就可以判断fault结果了。

ATPG

自动测试图形(pattern)生成。芯片测试需要有pattern, 手工设计pattern是非常耗时的。主要Tools: Teramax, Testkcompress, Encouter Test.

ATPG flow:

  • Read design
  • Build design
  • DRC
  • Prepare for ATPG
  • Run ATPG
  • Save patterns and faults

Memory 在测试的时候是交给BIST来做的,是一个black box,但是这样在Memory block的附近可观测性很低,如何解决?

  • 加bypass逻辑,(mem输入到输出加DFF)
  • 使用TetraMax Model (为memory建模)

MBIST

为什么要做MBIST?

  • Memory在现在芯片中占比越来越大。(80%-90% Today)

  • mem对工艺波动非常敏感

  • 目前很多嵌入的mem都有内置的redundancy(冗余逻辑),可以替换一些失效的mem区域,而失效区域需要BIST来检测到

Memory类型

  • SRAM
  • DRAM
  • CAM
  • ROM
  • FLASH

MBIST一般只针对SRAM, DRAM, ROM

Memory Defects

  1. 地址解码逻辑
  2. 读写控制逻辑
  3. memory cell

同样,memory 的fault也有stuck-at fault(钳位在固定电平) 和transition fault。此外,mem还有Coupling Fault:

Coupling Fault:

  • Inversion Coupling Faults(CFin)

    • 一个cell上的跳变导致另一个cell往反方向跳变

  • Idempotent Coupling Faults

    • 跟上面类似,只是导致另一个cell往固定值跳变
  • Bridge Coupling Faults (BF)

    • 在内部cell之间存在桥接,效果是看上去两个cell相或,相与
  • Neighborhood Pattern Sensitive faults

MBIST 算法

  • Address Decoder Algorithm
  • March Algorithm
  • Checkerboard Algorithm

MBIST 的基本架构

原文地址:https://www.cnblogs.com/lyc-seu/p/12698366.html