在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 13234|回复: 20

[讨论] PR数字后端中关于scan chain的

[复制链接]
发表于 2016-6-27 17:58:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
有个疑惑,为什么要先让SE=1,让所有的reg都存一个数,然后赋值SE使其为0。此时电路工作在正常的功能模式??有两组输入?
}KVHZ0A]HM[QA0PAWI}M]_L.png
发表于 2016-6-27 19:51:16 | 显示全部楼层
SE为1时,DFF抓的是SI端的值,是通过scan in的port串行灌进去的,当所有的DFF都通过scan in移入确定的值后,SE置0,此时DFF抓入D端的数据,这样才能测试到D端前面的组合逻辑电路。
 楼主| 发表于 2016-6-28 10:25:38 | 显示全部楼层
回复 2# 杰克淡定


   很开心收到您的回复,您的意思是有两组测试向量?先输入从scan in进去,然后再从D端再输入一组测试向量?这是为什么?对其中的道理百思不得其解,请您指教
发表于 2016-6-28 11:22:55 | 显示全部楼层



额,你需要了解一下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信号不切换也没问题,只是影响测试覆盖率。
 楼主| 发表于 2016-6-28 15:29:57 | 显示全部楼层
回复 4# 杰克淡定

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


    举个例子,假如其中第三个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的与门逻辑可能出现制造缺陷了。
发表于 2016-6-28 17:04:01 | 显示全部楼层
磐启微电子招聘数字后端工程师,有意向可将简历投递至389122337@qq.com,公司网址www.panchip.com
发表于 2016-6-28 17:05:18 | 显示全部楼层
磐启微电子招聘数字后端工程师,公司网址www.panchip.com,hr邮箱389122337@qq.com
 楼主| 发表于 2016-6-29 11:31:33 | 显示全部楼层
回复 6# 杰克淡定


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

祝您工作愉快
with my best regards
发表于 2016-6-29 14:02:51 | 显示全部楼层
一个测试向量的长度,与单条scan 链的长度一样。shift阶段,会把测试向量值顺序移位到扫描链上,此时扫描链的值与测试向量串是一一对应关系。SE=0时,才是capture D端的值。如果不先给DFF赋值,如何得到确定的输出值?给不同的测试向量得到不同的测试结果,就是改变输入激励得到不同输出啊。

你把整个数字电路看成一个测试黑盒,它的输出结果是输入端口的某种函数关系。只要给定一组输入序列,根据函数关系是可以计算得到确定的输出序列的。ATPG工具在后端实现的网表上通过输入某组测试向量,输出得到对应的输出序列,这个输出序列作为golden的期望序列。芯片制造出来后,灌入相同的输入序列,如果输出端口得到的序列与期望序列不一致,说明这颗芯片制造缺陷。

这个过程,你跑一下POST的ATPG仿真,看看波形就了解了,从非压缩入手,方便理解。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 00:58 , Processed in 0.022577 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表