【转】DFT小讲座之3_SCAN Chain基础

集成电路的生产异常复杂,是人类制造业向微观世界发展的巅峰前沿。任何生产偏差,设计漏洞甚至一粒PM2.5都会导致芯片出现各种缺陷,事实上生产过程中的造成defect的颗粒大小远远小于PM2.5 。Scan Chain(扫描链测试)作为数字集成电路测试的重要方法之一,可以有效的筛选出坏片,提高产品质量。不同常规性的从测试,scan test测试触角伸入到芯片的任何角落,测试目标为电路中的标准单元,包括组合及时序逻辑。


扫描链测试可以很简单
作为结构性测试的主要手段(structural test),DFT工程师需要注意的是电路的可测性(足够的控制点和观测点)甚至不需要了解芯片的功能。在运用scan 测试方法的时候,整个芯片被看做是大量的寄存器和寄存器直接的组合逻辑。 这也符合scan test理论开发的初衷,为了侦测出生产过程中的defects。 芯片的功能不被检验,相反,从元器件最基本的电路反应入手,测试其中的异常,从而侦测到生产defect。
扫描链测试也可以很复杂

因为其横跨了在芯片设计的整个周期,各个角落。在设计scan test的时候需要综合考虑到芯片设计的方方面面,包括时钟设计,电源设计,芯片结构,PAD资源,逻辑综合规划等方方面面。


DFT的scan 工作流程之复杂,从以下流程图可见一斑:

2.jpg



scan工作流程大概分为5步。

  • scan insertion  

  • test pattern generation

  • test pattern simulation

  • test pattern release

  • silicon bringup and diagnosis


test pattern release 及silicon bring-up and diagnosis不在scan 基础的scope之内,将会在后续session中继续深入讨论。


scan insertion

扫描链插入

在芯片功能设计完成后,整个网表是由一堆普通的寄存器和组合逻辑构成的。扫描链的插入就是指将普通寄存器替换成为扫描寄存器(scan flip-flop)的过程。

SE scan enable为其切换信号。


正常工作模式时,SE为0,这时scan FF的功能与原有的D-FF完全一致,data path 为D到Q。芯片的功能得以保持不变。 当SE被切换为1时,这时候scan FF执行其scan属性,data path为SI到Q。SI即为测试时的数据流向入口。

3.jpg


3_1.png


将片上的扫描寄存器Q-SI连接起来,就成为了扫描链。通过shift的方式可以由scan chain将数据串行输入的每个寄存器的SI端,达到控制每个寄存器的目的。 在capture模式下,将芯片组合逻辑的反馈传回寄存器,达到对芯片内部观测的作用。

4.png


4_1.png



Test Pattern Gen

测试向量的产生是基于故障模型[1]生成的。不同的故障模型所对应的测试向量由于其激活[2]和敏化[3]方式不同而不同。故障模型是对芯片上物理缺陷的抽象建模。

5.png


如图所示,或非门的输入于VDD短接,导致其不能为‘0’。将其建模为stuck-at-1故障。

6.png


如图所示,激活需要在故障点产生相反的值‘0’。A需要加载‘1’,

为了使该故障能在primary output O被观测到,B,C,D需要选定特殊的值使得该故障能在PO端被观测到。


测试向量便由此产生。

p.png



TIPS:

[1]这里以常用的stuck at fault model举例说明.

[2]激活故障,在故障点产生于故障状态相反的值.

[3]敏化路径,将故障点的值传递至输出并观察.

将此故障电路放入下图中的时序电路中,如果没有扫描链,激活故障和敏化路径的计算量将是天文级的。

7jpg.jpg


扫描链测试可以极大的简化测试难度。通过SCAN SHIFT[1]模式,直接将1011向量通过pad串行加载到寄存器上。再通过SCAN CAPTURE[2]模式,让故障电路的输出被OB寄存器捕捉。再下一次load时,将故障点的值将通过scan chain串行输出到pad,由ATE[3]捕捉进行比较。


TIPS:


[1]shift模式是指将SE设置为1,scan FF通过si到q的通路首尾相接。数据传输为串行。

       [2]capture模式是指将SE设置为0,此时scan FF工作为正常function 寄存器。 将function时候数据由D到q的通路capture到寄存器中。

[3]ATE automated testing equipment.


8.png


该时序图反应了测试如上电路的pattern的时序关系。整个pattern分为3个阶段。

loading:将测试向量串行打入到寄存器中

capture:通过打一个clock pulse,将故障点的值加载到寄存器中

unload:将capture回来的值串行输出到pad供ATE测量比较。


Test Pattern Verify

测试向量验证

当测试向量产生以后,我们需要对其进行门级仿真。与芯片功能验证类似,也有不同之处,DFT工程师需要时刻紧绷,测试向量最终在ATE(自动测试机台)上能调用的资源只有芯片的输入输出端口。对芯片内部信号的force都必须慎之又慎。测试向量仿真从方法上可以分为,串行仿真和并行仿真。串行向量仿真时,测试激励加载于芯片测试输入端口,并在输出端口进行采样比较。并行向量仿真是将测试激励直接加载于扫描寄存器的SI端,并在寄存器的O端进行数据比较。两种方法各有优缺点,需要配合使用


scan test的理论就先简单介绍到这里。尽管听起来好像很简单,但在实际应用中,尤其是Billion门级的集成电路,扫描链的应用已经变得相当复杂。扫描链伸入到芯片的边边角角,是芯片在功能维度之外最庞大的系统。在这一领域里,我们要思考的包含并不限于:在制定扫描链测试时要考虑如何不影响芯片功能的主线,减少给芯片带来过多的面积,功耗开销

原文地址:https://www.cnblogs.com/lidan2019/p/10338484.html