1 DFT的作用
在芯片设计的各个阶段都需要考虑芯片的质量检测,其中DFT就是用于检查芯片在生产制造过程中的质量检测而准备的。一颗芯片要能正常的工作最基本的条件就是搭建电路的每一个元器件都是能正常工作的,DFT就是用来检测芯片内部元器件是否正常工作的一种手段。该方法的核心思想是给芯片的输入注入特定的激励,通过观察输出是否和目标输出一致来判定芯片的生产制造是否存在缺陷,而目标输出是依据芯片内部特定的逻辑运算获得的,这就是常说的测试pattern。
DFT的设计理解不仅包括理论方面也包括实际实现,每方面都有相应的关键点理解,这里仅记录对DFT理论方面的几点理解,关于实现的关键点在以后得笔记中记录整理。
2 DFT的三个阶段
芯片工作依靠的主要是组合逻辑和时序逻辑实现,当然里面也包含了各种存储器(memory),存储器不在DFT的检测范围内。DFT的三个主要阶段分别为load、capture和unload。
2.1 普通寄存器和加入scan寄存器
DFT是通过将所有寄存器链接入scan chain中,通过控制寄存器实现芯片生产制造缺陷检测,下图左边是普通的寄存器,右边为带scan的寄存器。
信号sin为scan mode下的输入数据信号,信号s_m为scan mode的控制信号,sout信号scan mode下的输出数据信号。
如果在综合时不加-scan选项,选用的寄存器为普通寄存器。
2.2 DFT的三个阶段
假设一条链路的起点和终点都是寄存器,如下图所示为普通寄存器链路。
但在scan chain中上图的链路就会把普通寄存器替换成带scan的寄存器,如下图黑色部分所示。下图中绿色部分为实现输出在scan 模式下可观测增加了绿色部分电路(在实际芯片电路中应该将Q4和最右侧与门输出通过scan_mode进行控制选择输出),同时对于信号a和b需要进行DFT可控性设置。这里主要为了说明DFT的三个阶段,所以省略了其它部分。
下面以这条链路举例说明这三个阶段,假设输入的数据为1 0 1 0。
在load阶段,scan mode为1,将输入数据sin逐一打入每个寄存器中;在每个寄存器中都输入了理想的bit后将scan mode设置为0,关掉时钟(目的是组合逻辑运算完成,因为可能存在多周期路径),等寄存器之间的组合逻辑完成运算后打开时钟1个时钟周期,目的是将组合逻辑运算结果打入下一级寄存器中;然后开启scan mode(1),将组合逻辑运算的结果一级一级输出芯片进行输出数据比对,从而完成测试。
3 DFT不可控的点和不可观测的点
在芯片设计中,还可能存在无论工具怎么努力都无法实现观测的点或者可以控制的点,因此这些不可观测点和不可控制点需要设计者自行识别并进行相应的设置。关于芯片中不可控的点和不可观测点的处理见如下链接。
DFT设计之scan chain入门篇 - small5的日志 - EETOP 创芯网论坛 (原名:电子顶级开发网) -
4 其他点
Q1:一个芯片中scan chain的数量由什么决定?
Q2:每条scan chain的深度(寄存器的数量)是怎么确定的?
Q3:pattern(scan输入对应正确的输出)怎么产生?
Q4:芯片的DFT怎么实现?
Q5:链路中既有上升沿又有下降沿的的寄存器怎么处理?
Q6:DFT中时钟信号的处理?
Q7:DFT中复位信号的处理?
5 参考链接
scan design flow(一) - _9_8 - 博客园 (cnblogs.com)
初次接触DFT,笔记记在这里,后续发现理解错误再做修改……