2008年12月9日星期二

DFT Compiler的学习-----part2 scan replacement

今天着重分析下扫描单元替换(scan replacement)的内容。所谓scan replacement,顾名思意就是在设计中用扫描单元替代非扫描单元。如果设计是以RTL形式给出的,则在RTL综合成门级网表的过程中自动插入扫描单元。如果设计是以门级网表给出来的,则专门做一次扫描替换。

流程:1.选择扫描链的策略---> 2.test DRC检查---> 3.带扫描链的综合

在做扫描链之前,还需要考虑下面问题:
1 .根据目前设计的格式,选择插入扫描链的流程。
如果是RTL或者未优化的门级设计,则采用test-ready Compile,如果是优化的门级设计,采用constraint-optimized 插入方式。test-ready Compile包括逻辑优化和扫描链插入。采用的命令就是 compile -scan。优点就是流程简单,能够得到更好时序和面积。注意test-ready Compile只是将单元替代,并没有将扫描单元连接起来。

2.找出扫描替代的障碍。
障碍有很多种啊,比如本身工艺库就不提供扫描单元,或者某些寄存器找不到相对应的扫描单元,或者设计本身有dont_touch属性或者scan_element属性为false等等。
(set_scan_element truefalse [get_cells ADA])
扫描链类型本身有带mux的寄存器,LSSD,clocked SD。具体选择那一个要考虑到工艺库和本身的设计,一般采用带mux的寄存器。有两种方式来设置扫描链的类型,一种就是设计test_default_scan_style变量。设置的方法跟tcl设置变量的方法一样,默认的是multiplexed_flip_flop。另一种设置的方式是set_scan_configuration -style来设置。
(tips:如何查看typical库中是否有扫描单元呢。
get_pins typical/*/* -filter "signal_type==test_scan_in")

在插入扫描链的过程中,可以指定扫描单元。使用的命令是set_scan_register_type。选项有- exact和-type,如果使用了exact选项,则在后面的优化过程中(compile -increment)仍然会保留只使用type列表中的扫描单元。(注意DC命令中类似的命令就是set_register_type)。

下面说说constraint-optimized的扫描链插入流程。包括插入扫描链,根据约束优化扫描逻辑,修正DRC错误。对于这种流程,输入可以是优化后的门级网表,可以不包含扫描单元,也可以包含扫描单元。这里需要用到的命令有:
set_drc_configuration
preview_dft.
这些命令以后再深入学习把。


1 条评论:

zlwen1985 说...

博主是做DFT的吗?

怎么part不连续呢?
谢谢!!