说到DFT很多人第一反应可能是傅里叶变换DFT(Discrete Fourier Transform),但其实我这里说的DFT是Design For Test可测试性设计。
DFT的作用?
几十年代以前DFT的需求不是那么明显,只有在精度要求很高的芯片中才会用到。但随着摩尔定律的发展,集成电路的尺寸和内容也在不断翻倍,物理缺陷的产生越来越多且日益繁杂,可测试性设计的需求才逐渐成几何攀升。
区别于IC验证设计,DFT设计是对电路进行的结构化测试,主要作用是通过测试检测出Fab厂生产时产生的物理缺陷,从而筛选出废片,然后或优化或丢弃。
DFT技术是贯穿整个芯片周期的。
为什么这么说?因为DFT测试技术它是从前端至后端都要涉及,我们无法给它一个固定的定位。而且架构工程师前期就要预留出芯片做DFT的管脚和面积,方便DFT工程师为芯片做测试设计。
所以到底如何做DFT呢?
我们需要与前端设计工程师和后端测试工程师密切配合。当拿到设计工程师综合好的电路网表后DFT工程师就可以往电路里面安插一些扫描单元,增加电路的可控性与可观察性,并通过输入测试向量和观察电路输出的结果来预判电路的一些故障能不能被观察到,从而对电路进行优化。
不过我这么说,可能太抽象了,大概是这样一个思路,毕竟DFT也不是三言两语能讲完的。
不如我们先重点讲一讲DFT测试的核心技术吧~
DFT人绝对离不开EDA工具。无数个点工具组成了集成电路仿真的实现媒介,DFT的EDA工具也是实现可测试性设计的重要利器。
针对不同的芯片会不同的DFT测试方案。但是DFT的核心技术确是不变的,主要由这几大部分组成。
- SCAN DESIGN(扫描设计)
- BIST(内建自测试)
- JTAG(接口协议)
- ATPG(测试向量生成)
扫描设计是在设计端拿来的门电路网表里插入多个SCAN CELL单元,将门电路的DFF替换为SDFF后进行stitching操作,改变电路的结构从而让其具有可测试性。
内建自测试主要有两种,一种内存自建测试MBIST,一种逻辑内建自测试LBIST。主要是因为其针对芯片内结构和类型的不同,分别采取合适的测试方法,减少电路测试对ATE机台的依赖。
接口协议是一种定义在器件内部的TAP,TAP控制着数据和指令的输入以对电路节点进行测试,是IEEE组织1980年开发的一种端口协议。
测试向量生成是采用故障模型,通过分析电路的结构,生成测试patterns,进行结构测试,筛选不合格芯片,是DFT中开发最难,实用性最高,技术最重的点工具之一。
DFT到底是如何提前发现制造上的物理缺陷的呢?
一般情况下,这主要取决于工具的算法。算法需要建立故障模型,只有抽象出有效的故障模型,才能生成各种自动测试patterns。
这些测试patterns根据电路的结构利用算法产生01组成的二进制数字,我们通过将其给到电路再观察电路的输出是否符合预期,来判断我们的patterns是否有检测到我们植入的故障,故障的覆盖率越高,证明测试patterrns越优质。
等到DFT设计端跑通后,测试patterns文件以对应格式输出。设计公司将芯片给到fab厂流片,流片完成后就可以拿到芯片在ATE机台上,推我们的测试patterns来做CP测试,看芯片指标是否达标,来验证芯片的流片质量。
图片引自百度百科