本
学习单元为
DFT compiler的重点内容。
准备好设计之后,就可以考虑构建test design。
1.
DFT规格的指定。
1.1 扫描链的构建
利用set_scan_configuration来对全局的scan chain进行配置。比如扫描链的类型,长度,个数等
等信息。利用set_dft_signal来对指定test port管脚。这些都是全局性的配置。
除了对全局性的scan chain进行配置之外,也可以对某个特定的scan path进行配置。
利用set_scan_path来对scan path进行配置,这条命令可以对scan chain命名,指定扫描链的长度
等等,功能很强大。option很多,建议看看man文档,这里挑几个常用的来说明。
<1> exact_length:指定某个扫描链的长度。例如:
set_scan_path chain_name1 -exact_length 10
如果要对整个扫描链设置长度。使用set_scan_configuration -exact_length来设置。
<2>complete trulefalse :指定当前的扫描链是否完备,如果完备,则insert_dft不会添加新的
scan cell来balance 扫描链,否则就可以添加。
如何控制routing order呢?可以通过set_scan_path的-ordering_list选项来指定顺序。
一般扫描单元有两个输出,一个是scan_out,一个是其反相scan_out_inverted,
DFT会根据时序
选择一个好的,如果要改变默认的行为,可以将变量test_disable_find_best_scan_out置为
true。
如何对扫描链进行重新连线呢?一般
DFT为了优化设计,会进行下面的处理:会对扫描单元做单
独的优化来满足时序等信息,如果插入的扫描单元不满足test DRC,会在insert_dft的时候,将其
还原成原先的非扫描结构的形式。
如果不考虑优化来连接扫描链呢?这又叫做快速扫描链综合,比如在top层做扫描链,底层的扫描
链都已经优化好了,在顶层只需要将其连接起来就可以了。又比如不想在logic综合中优化,而是
放在后面的物理设计中优化,也可以先直接将扫描链先连接起来。可以使用命令
set_scan_replacement -none_scan none_scan_cell_list -multiplexed_flip_flop scan_cell。
注意上面的命令的option必须成对出现,而且scan_cell只能有一个。
1.2 扫描信号的构建
如何抑制某些时序单元的scan替代呢?使用set_scan_element -false cell_list来实现。
如何对三态信号进行处理呢?为了防止出现bus竞争和bus漂移,
DFT会在scan_shift的时候保证
只有一个drive。
DFT会自动判断内部的三态逻辑是否满足一个drive有效的要求,如果不满足,
会自动在内部添加逻辑来满足要求。如果设计的逻辑本身已经加入了此种逻辑,则可以使用命令
让
DFT不用加入该disable逻辑。使用的命令是set_dft_configuration -fix_bus disable。如果采用
bottom-up的方式来插入扫描链,需要注意在底层可以将fix_bus disable掉,但顶层需要将其
enable。
如何对双向端口进行处理呢?同上面处理三态的方法一样,如果设计本身就包含处理的模块,那
么可以使用set_dft_configuration -fix_bidirectional false。同理,
DFT也提供了对特定的双向端
口处理和全局的双向端口处理的命令。对特定的双向端口处理,可以使用set_auto_element的命
令。
如何控制lock-up element的插入?如果相邻的时序cell是由不同的时钟来驱动的,那么
DFT会默
认在cell之间插入一个lock-up element。可以通过set_scan_configuration -add_lockup truelfalse
来指定,也可以通过选项 -lockup_type latchflip_flop来选择插入的lock-up element的类型。
1.3 测试时钟的构建
需要特别注意的是多时钟的构建,
DFT在默认的时候是为每个时钟域创建一个scan chain,当然可
以使用set_scan_configuration -clock_mixing mixing_clocks就允许多个时钟域的信号位于同一个
扫描链上。
还有就是内部时钟。默认情况下
DFT在处理的时候会将所有内部时钟都由顶层定义的test clock来
驱动。可以通过设置set_scan_configuration的-internal_clocks multi选项来将其当作不同的时
钟,这样如果没有mixing的化,将会创建出两条扫描链,如果mixing的化,将会加入lock-up单
元。
2.post_scan DRC的检查。
文章评论(0条评论)
登录后参与讨论