微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > 两个时钟域DFT应该怎么插入?

两个时钟域DFT应该怎么插入?

时间:10-02 整理:3721RD 点击:
如果设计有两个时钟,一个是内部的PLL产生,一个是可控外部时钟。
在做DFT插入时,是用一个TM信号MUX 外部时钟和PLL,或是分开两条扫描链比较好,一个时钟域一条?

推荐一个时钟域一条。但是可以用同一个时钟。就是说,你外部输入一个时钟,用这个时钟做可控时钟的扫描链时钟,然后再把这个PLL的时钟MUX到这个时钟,作为另外一条扫描连的时钟。
你只做一条扫描连的话你的2个时终域需要balance的。这个浪费buffer,不balance为了修hold你还是要加一些buffer,只是加的buffer少得多而已。看你了。2条处理起来无论dc,PR都会轻松很多,qor也会提高很多的。

谢谢!我也是想分开两条链会好很多而且fix hold time vio也容易得多!可惜允许使用的IO有限

谢谢解答 同问

插在一条链上应该是没有问题的,但是时钟必须分开否则不好修capture的timing(如果用同一个时钟,原来两个时钟域之间的异步路径全部变成同步了)。对于shift下面的hold可以在不同时钟域之间加一个latch解决,这个在DC里面有一个配置可以实现。
另外一个疑问,这种结构的电路如何做transition测试呢?感觉stuck-at测试是没问题的,transition好像不太好实现啊。

肯定是一条链了。设计成本中,不光包括芯片面积,测试成本也很重要。两条链的肯定会增加测试时间的。

当用外部时钟代替pll的时候。(dft下),我们来具体分析一下:
stuck-at下:
所有的时钟都会在慢速时钟下,所以不存在该问题。
transition下:
在fun下的异步时钟到了dft下变成同步了。 我们可以把这两个domain之间的路径设掉。毕竟transition需要的覆盖率比较低,如果不设掉的话,可以看看那些fun下的异步路径是否好修,反正都是些buffer,不会很影响到fun下的路径的。

两个疑问请教一下楼上这位兄弟:
1、为什么两条链测试时间比一条链长呢?如果用两条链,链长减半,shift时间减半,感觉测试时间应该会减少。
2、这种PLL输出直接加mux bypass到dft时钟的结构如何进行transition测试呢?shift和capture时钟分别用哪个,如何切换?

你这两个时钟,不出意外的话,应该用的都是一个全局reset信号吧? 你现在把它们分为两条链,也就是在测试的时候,他们分别对应不同的test proc。
在整个测试过程中,最长的时间不是shift capture的,而是pll起来以后,再起reset过程的。因为Pll是模拟信号,所以我们最好要等比较长一点时间,让它能稳定下来,这个单位是以毫秒计的,而我们shift, capture才多少时间。都是以为纳秒计的。写两个test proc,那么他就要有两次起pll的过程。你看看你产生pattten的脚本就知道了。所以我说是测试成本增加了。 这是第一。第二,链长越短,确实shift时间减少了,但是整个patten的覆盖率也降低了,同时,patten的数量也也会多了,所以整体时间未必会短。
第二个问题: 一个是外部灌的时钟,一个是Pll产生的时钟。但是我们在shift过程中,肯定是直接用test clock来灌的。 现在问题来了,在capture过程中,我们如何能够选transition下的capture时钟呢,可以用一个介于灌的时钟和pll产生的时钟之间的一个频率的时钟来做这件事情。这个时钟可以外灌 也可以用occ电路选一个,好比外灌的是50mhz, pll的是100mhz,那就选一个75mhz的时钟。或者85的。或者更极端一点,选一个100mhz的时钟做capture,这样无非是某一个频率会高,另外一个会低。但只要相差不大就好,可以在刚开始design 规划的时候就考虑好这个问题。

我们atpg工具用的是TK,不知楼上这位兄弟用的是什么工具,感觉兄弟说的很多特性跟我的感觉不一样,不知道是不是工具不同的原因?
atpg我们主要分stack-at和transition,如果内部高频时钟都插了OCC的话,那么不管是stuck-at还是transition用一个testproc就可以了。
1、对于stuck-at,我们完全不会用到,也就不需要等待pll稳定了。另外,根据我的经验,当覆盖率到99%的时候,500链长和300链长其实总的向量条数相差是不大的,肯定不会超过20%(这其中包括 链长变小后压缩比增大的影响)。所以对于stuck-at 链短一些测试时间应该要短一些。
2、对于transition,等待pll稳定的配置放入这个testproc的setup配置一次就OK了。对于相同覆盖率,500链长和300链长总的向量条数也相差不大。所以对于transition链短一些测试时间应该也要短一些。
我之前问PLL输出直接加mux怎么测transition,其实是对于如果PLL输出频率很高比如1GHz,而且是没有加OCC的情况。加了OCC肯定不会有什么问题,如果没加OCC,应该就需要考虑端口灌时钟,但是频率太高端口肯定灌不了1G的时钟,所以我认为在这种不加OCC的情况下应该是测不了transition的,不知道是否还有其它方法来实现?

我说的也是tk啊,你看看你的test proc文件,在shift这个动作的时候,是不是先要reset一下。然后等待一段时间,然后再灌数据。
同样,capture也是一样的。也是reset一下,然后等待一段时间,灌数据。可能我之前表达的不是很清楚,test proc文件是一个,但是针对不同的动作,会有相应的proc里面的函数相对应。
我说的等待pll的动作,是说,真正在测试机台上的时候,我们每个动作,好比shift动作。capture动作,都是要做一个这样的过程。等待pll起振,发reset,开始灌数据。每个对应的proc文件中的一个函数,好比shift,capture这个函数,都对应了一个这样的动作。(这个是我们公司测试的designer告诉我们的,不知道是否描述正确)。所以我是不建议多一个dft的domain来做这个的。因为很有可能就会多一个函数,并且为此函数产生pattern.
你说的你们覆盖率能达到99%,所以你们的300条链和500的pattern数量相差不远。我不知道你这时候说的是不是stuck-at的覆盖率。这个我没有研究过,所以不好发表评论,你说的可能是正确的。
你说的最后一个,就是不用occ如何测transition,我们之前的办法是这样的:
———————————————————|-|-------------------------------------
-----------------------------------------------|-|----------------------------
上面两个信号:都是从同一个Pad上灌入的,好比占空比是1:99, 99:1,频率很低,好比1兆。但是我连续打入的这两个上升沿,可以当做capture的时钟。光看着两个沿的话,可以当做一个高频的时钟。我们以前的design里面没有occ的电路,transition的时钟就是用这种办法灌进去的。

good discussion

谢谢,我知道你说的这种端口灌时钟进行transition测试的方法了。
另外还有两个疑问:
1、为什么每次shift和capture之前必须复位,如果不进行复位会有什么问题?因为按照我的理解scan的时候复位可控最主要的是避免不期望的复位发生,从而导致不能正确shift和capture,如果整个测试过程中复位一直处于非使能状态应该也是可以的。
2、还是搞不懂为什么每次shift和capture都要配一次PLL,我们的做法是在setup里面配置PLL并且等待其锁定,由于PLL是用jtag配置的,这样后面不需要再对其进行配置一直会处于锁定状态。

上一篇:晶振PAD 问题
下一篇:mbsit 测试功耗问题

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

网站地图

Top