前面一期的公众号文章“让你彻底理解DFT”帮助大家理解了DFT所解决的问题。一句话来概括之就是:借助特定的辅助性设计,产生高效率的结构性测试向量以检测生产制造过程中引入芯片中的各种物理缺陷。Scan就是此类辅助性设计之一。本期的公众号文章就来帮助大家了解Scan技术的具体内容。
在深入了解scan技术之前,我们先来比较下分别针对组合电路和时序电路的测试过程。很显然,在芯片制造出来后,我们只能通过其输入输出端口来对芯片进行各项检测。在如图A所示的组合电路中,假设F处有一短接电源地的固定0故障 (stuck-at 0 fault) 。要检测到这样的物理缺陷,首先要在A端和B端给1的输入激励,这样在F处可以得到1值从而激活目标fault。而要将F处的值传递到输出端进行观测,C端就要有一个0的输入。这样我们就得到了一个能检测到目标fault的结构性测试向量:110 (ABC). 在该组合电路没有故障 (fault) 的情况下,我们应该可以在输出Z端观测到一个正确的1值。而在F处有stuck-at 0 故障的情况下,我们在输出Z端就会观测到0值从而检测到该fault。
接下来,假设在图B的时序电路中包含如图A的组合电路结构及同样的fault。而现在要检测到F处的故障,我们需要遍历各个level的时序单元以确保能激活目标fault并能将其值传递到芯片输出端进行观测。产生结构性测试向量的时间及难度大大增加而且更重要的是,在绝大多数情况下,没办法只依靠一个测试向量,而是需要一个测试向量序列才能最终检测到目标fault。
比较下来,组合电路的测试过程更为简单,通常情况下只需要单个的测试向量就可以检测到目标fault,测试时间更短。而测试时间是测试成本的直接体现。另外,相比较时序电路而言,组合电路往往能得到更高的测试品质。但在实际芯片项目里,实现的往往都是时序电路,我们怎样才能在测试过程中受益于组合电路带来的上述低成本高品质的测试效果呢?
Scan技术就是为解决上面的问题而来。Scan所能带来的好处就是把一个difficult-to-test的时序电路转变为easy-to-test的组合电路。
下面我们首先来具体看看实现scan要做些怎样的辅助性设计。其过程包含图C中的scan replacement 及图D中的scan stitching两步。
Scan replacement就是把电路中的normal时序单元(如DFF)替换为一个scan 时序单元(SDFF)。其SE端值为0时,电路工作在正常功能状态并能把D端的值锁存下来;当SE为1是,电路工作在所谓scan mode并锁存SI的值。
Scan stitching 是把上一步中得到的SDFF的Q和SI连接在一起形成scan chain。在芯片的顶层有全局的SE信号,以及scan chain的输入输出信号:SI 和 SO。通过scan chain的连续动作,就可以把问题从对复杂时序电路的测试转化成测试组合电路。
图E即为通过产生scan chain转化出的组合电路。其中PIs为芯片原来的输入信号(Primary Inputs),POs为芯片的原输出信号(Primary outputs);而PPIs为所有SDFF的输出信号(Pseudo PIs), PPOs为所有SDFF的D输入信号(Pseudo POs)。PI和PPI共同组成了转化出的组合电路的输入信号,PO和PPO自然就是新组合电路的输出信号。剩下的问题就是测试转化出的新的组合电路,我们可以在PI和PPI上给出需要的输入激励,然后再PO及PPO上观测得到的值以判断电路有没有缺陷或故障。
接下来让我们看看scan chain的系列动作来进一步理解掌握这个从时序电路到组合电路的转化:
1) 赋值SE使其为1。SI到SO的scan path成为通路。
2) 在SI上赋值,经过连续的时钟周期可以最终让每一个scan cell移入一个确定的值。
##Step 2完成后,其实也就完成了对PPI的输入激励加载。
3) 赋值SE使其为0。此时电路工作在正常的功能模式。
4) 给所有的PI赋值,在其上加载期望的输入激励。
##至此已为所有的输入信号加载激励
5) 观测PO的输出值
##在PI及PPI的共同作用下,在PO上得到稳定的输出并可以进行观测。
##此时尽管PPO也有了稳定的输出值,但没有办法直接进行观测
6) Pulse clock 将PPO的值锁存在scan cell中。
7) 赋值SE使之再次成为1. 电路工作在scan mode,scan chain成为通路。
8) 通过scan chain逐时钟周期移出scan cell中的值并进行观测。
##当移出所有scan cell中的值,PO及PPO的观测工作也全部完成。
##可以通过观测到的结果来判断芯片中有没有缺陷或故障
本来芯片制造出来后,我们只能利用其有限的输入输出信号来对芯片进行测试,现在通过实现scan这种辅助性设计,把电路中的时序单元转变为可控制及可观测的输入输出信号,从而实现了从difficult-to-test的时序电路到easy-to-test的组合电路的问题转换。而可控制及可观测信号的增加,也更能达成高品质的测试结果。
更多回帖