微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > dft 插链问题,急急急

dft 插链问题,急急急

时间:10-02 整理:3721RD 点击:
现在设计顶层有2个端口用作scan clock的输入,clka和clkb, clkb所带的触发器约为76000个,clka所带的触发器约为50000个,定义了35条扫描链,我要如何设置,使得扫描链上的寄存器的时钟,只能是clka或者是clkb中的一个,在任何一条扫描链,这两时钟不能有交互。
clkb经过内部逻辑产生 mclk nclk pclk,这3个时钟域(在内部create这3个clock),clka经过内部逻辑产生很多个时钟域(create很多个时钟).
先谢谢大牛们了
我设置了 set_scan_path chain1 -scan_master_clock clka ,产生的第一条链还是有clka和clkb的交互。不知道如何解决

是另外一个命令,设置扫描链的时钟属性的,不仅可以设置单时钟还是多时钟,还可以设置上下沿区分

是哪个?set_dft_signal还是其他的?设计中已经用了mix_clock的插链方式了

set_scan_configuration

set_scan_configuration中的哪个选项?
现在设计中必须采用mix_clocks的插链方式,插 入latch,平衡扫描链
实在不知道怎么去搞

既然必须使用mix_clocks,为什么不能不允许同一根chain上多个时钟?理由是什么

h

我在帖子的中的描述,有2个scanclock,这2个scanclock是来自ATE的。
内部create mclk ,nclk,pclk这3个时钟的的scanclock是clkb
其它的时钟oclk ,xclk等等时钟的scanclock是clka
一条扫描链上,只要scanclock是同一个的寄存器都可以mix,这点我没有疑问
但是,要是一条链上有2个scanclock,shift的时候确实没有问题,这点我明白,因为工具会插latch,保证在shift的时候没有hold violation
但是在capture的时候呢?外部的2个scanclock的skew是无法确定的,比如:mclk有路径到oclk,capture的时候还能保证没有hold violatin吗?

capture是function path

但是时钟是ATE的时钟,2个scanclock之间的skew无法保证

这种情况我们一般是RTL设计的时候就做了MUX,模块会留一个test clock,测试模式时里面所有寄存器时钟都会切换成test clock
多个scan clock的时候,是在插链的时候划分了domain,不同的scan clock domain不会混插,这也是RTL设计时就划分好的

首先,你确定ATPG会产生cross-clock domain的pattern么?
其次,你不要混淆概念,你用的是OCC么?如果是,之需要保证不同test clock path 和 func clock path的common path部分,就能足够减小ocv到func mode的水平。如果不是occ,哪来的ATE clock?就是regular scan master clock,这种情况下和func mode就更没差别了。

不是OCC,但是要是一条链上有2个ScanClock,在2个scan clock直接有路径存在,因为这2个测试时钟都是有外部机器直接产生的,我们能保证他们的沿对得很齐吗?要是不能保证的话,skew太大,不就不能保证hold time了吗?capture的时候不久完了吗

我不确定ATPG会不会产生cross-clock domain的pattern啊

设计中已经划分好了,脚本中我这样设置
set_scan_configuration -clock_mixing mix_clocks
这样才能平衡扫描链。
要是不这样设置的话,每个internal clock产生一条扫描链,不是我想要的结果。
但是这样设置后,35条链中有4条链是有2个scanclock的。
set_scan_path chainx -scan_master_clock 来指定每条链的scanclock,但是不起作用啊

之前的项目都是只有一个测试时钟,处理起来方便,不知道这位大牛,是否遇到过多个测试时钟的设计,一般脚本里如何设置呢?

你还是先理解下自己的需求吧。不要把func clock和scan clock混在一起说,在scan的时候,你只有两个clock,你是否允许同一条scan chain同时出现这两个clock,如果不允许,就别设置mix_clock

搞定了,插2次链,第一次插链把链上的寄存器拿出来,做一个collection。
第二次插链再set_scan_path -include $chain_reg -complete true
这样就可以了,谢谢大家的支持

要做到完全平衡扫描链长度而又不使时钟交叉实在没办法啦!但可以让clkb时钟域链数22条(规定长度3455),clka时钟域链数14条(规定长度3572),链数相差117应该没什么大问题吧!至于clkb、clka使其不交叉。用Mentor公司的DFTAdvisor工具很好实现的呀。add clock 0 clkaadd clock 0 clkb insert test logic -max_length xxx -clock nomerge。用这三个命令应该可以吧!请小编试试

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

网站地图

Top