微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > PR数字后端中关于scan chain的

PR数字后端中关于scan chain的

时间:10-02 整理:3721RD 点击:
有个疑惑,为什么要先让SE=1,让所有的reg都存一个数,然后赋值SE使其为0。此时电路工作在正常的功能模式?有两组输入?

SE为1时,DFF抓的是SI端的值,是通过scan in的port串行灌进去的,当所有的DFF都通过scan in移入确定的值后,SE置0,此时DFF抓入D端的数据,这样才能测试到D端前面的组合逻辑电路。

很开心收到您的回复,您的意思是有两组测试向量?先输入从scan in进去,然后再从D端再输入一组测试向量?这是为什么?对其中的道理百思不得其解,请您指教

额,你需要了解一下scan的测试原理。
以非压缩的scan模式为例:SE为1,整个芯片的DFF是全部首尾相连的,上一个DFF的Q连到下一个DFF的SI,整个芯片的DFF就相当于一组很长的移位寄存器,此时D端前的组合逻辑是bypass的,通过scan in输入,SI到Q再到下一个SI通路,可以给每个DFF移入一个确定的值。
每一个DFF的D端值,一定是芯片中某些DFF的Q与芯片输入信号或者内部hardblock对数字电路的输出信号的组合逻辑函数,表示为Di = f(Qx, input) 。经过前面的SE为1后,所有的Qx都有了确定的值,如果整个数字电路的input信号也是确定的值,那么每一个DFF的D端值也是确定可以计算出来的。此时将SE置0,所有的DFF将自己D端的值抓进寄存器。然后再将SE置1,此时DFF又全部变成一组移位寄存器,随着scan clock的翻转,就可以将抓进DFF的D端值一个一个从scan out移位出去,与期望值进行比较。
所以在RTL设计中,你会看到数字电路会将芯片输入信号,例如PAD的I端信号,以及来自于analog电路或者SRAM之类的输入信号在scan模式下切成确定值,目的就是为了上面的公式中input为确定值来计算得到确定的Di。如果这些信号在scan时不切换,TMAX计算Di为不确定值,就会将对应DFF在移位出scan out时的对应cycle去mask掉。这些hardblock信号不切换也没问题,只是影响测试覆盖率。

您讲的太深刻了!
前面的内容我研究了好久好不容易弄明白了,但是其中有句话的:”如果这些信号在scan时不切换,TMAX计算Di为不确定值,就会将对应DFF在移位出scan out时的对应cycle去mask掉。这些hard block信号不切换也没问题,只是影响测试覆盖率。”这句话不太懂,就是说input信号如果不给一组恒定的值,Di是不确定值,会影响测试覆盖率,这是为什么?给确定的值有好处?

举个例子,假如其中第三个DFF的D端逻辑为 D3 = Q4 & signal_a ,signal_a是来自于SRAM的数据输出。在scan时,SRAM的存储体是不可测的,TMAX工具是把它当作黑盒子的,因为不确定,工具只能把signal_a当作X来处理,如果此时Q4=1,那么D3的值工具无法计算出来,也只能当作X。当D3的值被shift出scan out pin上时,只能mask掉,因为你不知道此时期望值为0还是为1啊。如果把signal_a在scan时切成1,Q4=1则D3=1,D3的值被shift出scan out pin上时,如果不等于1,则说明这个Q4 & signal_a的与门逻辑可能出现制造缺陷了。

磐启微电子招聘数字后端工程师,有意向可将简历投递至389122337@qq.com,公司网址www.panchip.com

磐启微电子招聘数字后端工程师,公司网址www.panchip.com,hr邮箱389122337@qq.com

您的讲解很详细,如果再深入一点研究,我有个疑问,就是:”(shift)操作将设计中的时序单元设置为期望的值”这句话,我的理解是假如一条扫描连上有5个扫描reg,我的测试测试向量必须是五个数 如1010? 是第一个1赋值给reg1?第二个数0赋值给reg0?在这个赋值过程中第一个1输入进来,应该是先经过一些逻辑吧?信号1经过逻辑后的输出值给reg1,是这样吗?不太懂为什么要给reg赋值
祝您工作愉快
with my best regards

一个测试向量的长度,与单条scan 链的长度一样。shift阶段,会把测试向量值顺序移位到扫描链上,此时扫描链的值与测试向量串是一一对应关系。SE=0时,才是capture D端的值。如果不先给DFF赋值,如何得到确定的输出值?给不同的测试向量得到不同的测试结果,就是改变输入激励得到不同输出啊。
你把整个数字电路看成一个测试黑盒,它的输出结果是输入端口的某种函数关系。只要给定一组输入序列,根据函数关系是可以计算得到确定的输出序列的。ATPG工具在后端实现的网表上通过输入某组测试向量,输出得到对应的输出序列,这个输出序列作为golden的期望序列。芯片制造出来后,灌入相同的输入序列,如果输出端口得到的序列与期望序列不一致,说明这颗芯片制造缺陷。
这个过程,你跑一下POST的ATPG仿真,看看波形就了解了,从非压缩入手,方便理解。



真是热心肠啊,赞一个!

我是来看回复的

受教了,做后端以来一直不明白scan的工作方式,不懂shift capture分别进行什么动作,终于明白了,谢谢分享!

讲解的很透彻,多谢分享

请教一个基本的问题,使用scan 有什么意义?

scan can test a combination logic function right or wrong.Futhermore,you can just known the logic is a black box.

功能性的测试有验证工程师做,多增加的这个scan测试的意义我不太清楚。再次看了上面的回复和问题,我可以理解为scan测试主要是针对组合逻辑的一种测试么?如果只是想要验证逻辑功能的正确与否,验证工程师不能做么?这里我不是太清楚,谢谢。

验证是对电路的function进行验证,确保是与spec一致的,而scan属于DFT的一部分,是专门用来测试制造过程中可能带来的缺陷,举个例子,在深亚微米的工艺中,某条net因为过蚀或者过参杂导致存在短路或者断路,这种情况可能会导致芯片废掉,你可能会问那是芯片制造过程中需要的测试,跟我们design有什么关系,事实上,需要在design阶段就做dft的原因在于,它会节省ATE大量的测试时间,时间就是成本~~~

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top