前言
芯片的逻辑设计通过物理实现生成芯片版图,需要经过有源区生长、光刻、注入、推进、腐蚀、淀积等工艺过程的反复操作,最终完成一颗芯片的“流片”。经过整套如此精细复杂的生产流程,制作原料不够纯净、制造机器的不够完备以及人工操作的不够规范都会使得最终流片的产品产生故障,更可能会导致最终产品失效。除了加工生产过程造成的产品故障,还有可能源于设计或测试过程本身的各种问题。
DFT技术其实就是把DFT逻辑加入到芯片设计中,然后等芯片制造回来,通过事先加入的DFT逻辑对芯片进行体检,挑出体格健壮的芯片,保证送到客户手上的芯片是没有故障的。
DFT指的是在芯片原始设计中阶段即插入各种用于提高芯片可测试性(包括可控制性和可观测性)的硬件逻辑,通过这部分逻辑,生成测试向量,达到测试大规模芯片的目的。
测试与验证的区别
- 验证(Verification)的目的是检查设计中的错误,确保设计符合其设计规范和所期望的功能;
- 测试(Testing)则是检查芯片的加工制造过程中所产生的缺陷和故障
故障模型
经典的数字逻辑故障模型包括:固定性故障、晶体管故障、桥接故障、跳变延迟故障和传输延迟故障。
-
固定故障表示的是电路中的某个信号值不随电路状态改变而是始终为逻辑0 (SAO, Stuck-At-0)或逻辑1 (SA1, Stuck-At-1) ,它可能由于信号短路或开路造成,也可能由于晶体管一直导通或一直截止等造成。
-
晶体管故障常以SAO和SA1两种形式表示出来。
-
桥接故障表示电路两个不同节点由于短路造成的故障,它包含了工艺制造过程中的所有“连条”,包括二氧化硅的通孔、金属的连接故障,也可能是电路中器件失效造成的。
-
跳变延迟故障表示电路不能在固定时段完成信号由0至1或由1至0的转换,因此它有SAO和SA1两种表现形式。
-
传输延迟故障是对指定路径上所有组合门电路的跳变延时之和的故障判断。与跳变延时故障模型所不同的是,这里以整个路径上的各个门的管脚与连线节点的连接,取代了跳变延时模型中单个节点作为考察对象
DFT技术主要包括Scan,Mbist和Boundary Scan
DFT-Scan
扫描路径法是一种针对时序电路芯片的DFT方案,其基本原理是时序电路可以模型化为一个组合电路网络和带触发器(Flip-Flop,简称FF)的时序电路网络的反馈。
Scan 包括两个步骤,scan replacement和scan stitching,目的是把一个不容易测试的时序电路变成容易测试的组合电路,实际在设计中,这两步都是由EDA工具完成的
• Scan replacement就是把电路中的normal时序单元(如DFF)替换为一个scan 时序单元(SDFF)。
其SE端值为0时,电路工作在正常功能状态并能把D端的值锁存下来;当SE为1时,电路工作在所谓scan mode并锁存SI的值。
• Scan stitching 是把上一步中得到的Scan DFF的Q和SI连接在一起形成scan chain。在芯片的顶层有全局的SE信号,以及scan chain的输入输出信号:SI 和 SO。通过scan chain的连续动作,就可以把问题从对复杂时序电路的测试转化成测试组合电路。
下面我们把时序逻辑和组合逻辑放在一起,来看一下scan insertion 之前和之后的区别
scan测试可以分别测试组合逻辑和DFF
Scan test 的步骤:
- 把Scan-En设成0,此时电路工作在正常状态(function mode)下, scan insertion对电路的正常功能没有影响。
- 把Scan-En设成1,然后把enable clock来驱动寄存器,在Scan-In端输入测试数据,然后在输出端Scan-Out观测,用此种方法便可以测试Flip-Flop.
- 测试组合逻辑的时候,把Scan-En设成1,然后enable clock来驱动寄存器,在Scan-In端输入测试数据,两个时钟周期后,数据便会送到组合逻辑的输入端。
- 然后把Scan-En设成0,时钟打一拍,经过组合逻辑的输出值便会送到右侧的寄存器中。
- 再把Scan-En设成1,此时scan chain 工作在shift mode,此时便可以把组合逻辑的输出值shift出来,和期望值进行比较
经过这样一个周期,图中的组合逻辑和时序逻辑便都被测试到了
参考 https://zhuanlan.zhihu.com/p/201353304