扫描测试原理
扫描测试步骤
首先用扫描单元(scan cell)替换触发器(flip-flop)创建控制和观测点,将扫描触发器连接在一起形成扫描链,利用这些扫描链,生成符合条件的测试向量:1)在指定节点设置成指定值(控制);2)传播结果使其可以被测量到(观测)。

扫描触发器/扫描单元
当前的标准模型
多路复用器(MUX)选择数据输入:D端用于正常模式(功能模式),scan in(SI)用于扫描模式。scan_enable(SE)选择工作模式。

基本扫描测试
测试设置(Test setup)
初始化设计,设置状态进入测试模式 (只有测试开始时需要)
移入/移出数据(load/unload)-shift模式
连续地移动数据进入扫描链,测试结果被移出
捕获(capture)
使用已知值(scan和PI)定义的激励,允许组合电路在功能模式下工作,测量输出(PO),把测试结果记录进扫描链;重复移入、移出(shift)/捕获(capture)直到测试完成。
基本扫描测试包含以下事件:1)加载数据进入扫描链(需要很多个循环);2)Force PI(primary input);3)测量PO(primary output);4)pulse capture clock;5)将scan cell的值移出,同时加载下一个向量。

load:给扫描单元加载值
1.force SE to "1"(scan enable)
2.force SI(scan chain input pin)
3.pulse shift clock
4.重复步骤2和3直到所有scan cell都被加载值
load过程演示(如下图)





force normal primary inputs(func 端口给值),force SE to "0"(退出shift模式),现在内部所有pin/cell的值都可以被预测了。
force PI过程演示(如下图)


measure primary output(PO)过程演示(如下图)
measure "1"on Y。


pulse capture clock过程演示(如下图)
将func inputs的值加载进扫描单元来观察电路状态。


load/unload示意图(如下图)
在串行加载过程中,新的数据被加载移进扫描链中(shift in),之前的内部电路状态也被串行地移出来(shift out),扫描单元之前的内部状态(111)在scan out这里被测量。


总结
控制
给扫描链加载已知的值,把内部节点设置成已知状态;把primary input(PI,func输入端口)设置成已知的值。
观测
测量primary output(PO,func输出端口),与期望值比较;把扫描链的值移出,与已知的期望值比较。
仿真通过/失败(pass/fail)
如果期望值等于设计扫描测量值,测试通过;如果期望值不等于扫描测量值,测试失败。
参考
mentor:tessent scan and ATPG学习手册
更多推荐



所有评论(0)