DFT是干什么的?
物理瑕疵 Defect
silicon上的physical problems;
1. contamination -causing open 污染造成开路;
2. extra metal-causing shorts 额外的金属造成的短路
3. 离子注入的时候 离子浓度不够 insufficient doping
4. 金属层的 桥接的问题;
5. CMOS stuck-on
6. COMS stuck-open
7. 制程上的一些问题导致MOS管的transition time很大;
材料上的defect
时间相关的
封装相关的
DFT的作用就是将有瑕疵的芯片辨别出来;
对于一些规模比较小的设计,通过输入functional 的激励,查看他的输出,就可以做到比较好的测试覆盖率;
但随着芯片规模的不断增大,尺寸不断缩小,通过IO去测试芯片的好坏,不能保证芯片所有的部分都能测试到,也就是覆盖率的问题,为了减低测试的成本和难度,DFT应运而生;
阶段
CP wafer sort
FT 封装后的测试
Bored test 上板的测试
Fault coverage 故障覆盖率
class of fault;
将defect 建模为module 称为fault;一个fault 对应着某一个点可能发生的defect;
总的fault数/可能被探测到的fault数,就是fault coverage;
Defect level
是对芯片质量衡量的一个指标;
单位是 DPM (defect per million)每百万片有多少个fail的片;
良率 测试覆盖率和Defect level 有一个公式关系;
for DL = 200 DPM
Y 良率为90%;
FC 测试覆盖率为 99.8;
DL = 1 - Y^(1-FC)
当然这个测试覆盖率通常不会折磨高 在98%左右;能到达98.5%就是很优秀的了;
SOC的DFT策略;
对ASIC的DFT的设计还是比较少的;
而SOC有天然的难于测试的特点;
对于SOC中的不同的部分,有不同的测试方案:
标准单元——基于SCAN的测试 ,就是scan-chain;在综合的时候就把寄存器换成带scan mode的寄存器;
存储器与模拟模块——BIST
硬核IP和软核IP——BIST SCAN
封装与IO—— boundary scan
SOC的全面测试包括
DC参数(直流参数),是拿到芯片后的首先要进行的测试,芯片制程上的测试;
包括许多基础直流参数的测试:
VOH/VOl 输出高电平/输出低电平
IIH/IIL 输入高电平电流/输入低电平电流
IOH/IOL输出高电平电流/输出低电平电流
IDDQ
etc
基于scan的测试,将寄存器换成可扫描的,将所有寄存器串成一个链,通过从一头输入一头检测输出,来完成测试;
BIST—— Build-in self test 叫内建自测试;分为 logic BOIST ,Memory BIST Analog BIST;测试pattern就在芯片内部产生;
其中MBIST 用于存储器的测试,典型的MBIST包含测试电路用于加载,读取,比较测试图形。常用的MBIST算法比如:March算法, Checkerboard算法;
LBIST用于测试随机逻辑电路,一般蚕蛹伪随机测试图形生成器来产生输入测试图形,应用于期间内部机制;
需要设计专门的电路占用chip的面积
基于scan 的测试
下图是寄存器单元scan cell 和non-scan cell的对比,主要是在D端多了一个选通器,scan mode下就是寄存器直接连接,function mode就是走中间逻辑。
对时许的影响在10%以下;
会增加SI 和SO 用于pattern的输入和输出;
stack-at fualt
如图所示,最常见的一类故障就是 stuck-at 1 stack-at 0 这类fault 用来模拟器件见互连的短路和断路故障;
给A 置一个相反的值, 查看输出;
at-speed fault
在速测试;
faults的目标在于STR slow to rise STF slow to fall
fault的定位依赖于不同的fault module
- transition fault model 分析设计中每个节点 其 location 会定位在 single gate 的transition问题上;
- path delay fault model 分析用户指定的path,是为了补充 transition fault model的测试覆盖率不足的缺点;对PT中比较critical的path 进行分析,对path上所有的gate 进行分析; 测试时间和测试成本会更大;
D算法
是scan based test 的基础算法;是拓扑结构测试中最经典的方法,是最早的自动化测试生成算法之一;
主要是如何遍历这些fault点;
how scan work?
主要包含五个步骤:
shift_in 将pattern串行(需要多个周期)扫进去,
force PI & measure PO 对并行的输入端口赋值,对并行输出端口检测输出 这个FPI MPO并不是一个必要的操作,是由于 在输入到reg中可能存在组合逻辑,为了提高测试的coverage,才会。
capture virtual outputs
将scan-path1上的值 通过组合逻辑 capture到scan-path2上;
shift_out;
scan-path2 再将capture的值 shift出来;
多电压的DFT
function下 保留多个电压域, 但是scan mode 下让所有寄存器处在相同的电压域;
ATPG auto test pattern generation;
MBIST memory BIST
对于RAM和ROM的比较稍有不同,架构是一样的,同样由 controller 和 rapper 组成, 结果比较上是不同的,对于RAM来说,只要知道他是right 或者 fail就可以,而对于 rom 而言一般会进行压缩, 在片外进行比较;
之所以不同 是由于ROM中的内容 可能每次流片写入的内容不同, 在片外 比较可以提高效率;
对shadow logic的控制
就是memory 前后的一些组合逻辑的测试;
解决办法,就是在memory平行设置寄存器替代 归并入扫描链中;
boundary scan
提供了两种测试的方式
-
external connectivity between chips 芯片间的互联
-
internal logic of chip 就是芯片内部的IO;
主要包含: tap controller , 控制逻辑 , boundary register;
输入端口: TDI,TMS,TCK,TRST
控制内部的状态机;
输出端口: TDO
配合芯片内需要测试的输入输出;
IDDQ 来自VDD的静态的电流
主要是测试 静态VDD 端的电流;
如果某个门 内的某个三极管短路,就需要通过pattern 才能测试出来;