2008年12月8日星期一

DFT Compiler的学习------part1

一、定义测试协议
1.set_dft_signal:
功能:用来指定输入输出端口为DFT信号。
选项:
view ---有两种类型,一种是existing_dft,一种是spec。所谓existing_dft,就是告诉工具,这个port已经被用作某种类型的DFT信号了,此时扫描链已经插入了。所谓spec,就是告诉工具,下面指定的port将被用做某种类型的DFT信号。
type---用于指定DFT信号的类型,包括:Reset,Constant,TestMode,TestData,ScanDataIn,ScanDataOut,ScanMasterClock,ScanSlaveClock等。
port---用于指定规则适用的端口。
active_state---用于指定Reset,ScanEnable,TestMode,Constant是高电平有效,还是低电平有效。
timing---用于指定ScanClock的波形。
例子:
set_dft_signal -view existing_dft -type ScanClock -timing {45 55} -port Clk
set_dft_signal -view existing_dft -type Reset -active_state 0 -port Reset

2. create_test_protocol:
功能:根据当前设计指定的规则,比如set_dft_signal,set_scan_path,set_scan_configuration。来创建测试协议。
选项:infer_clock,infer_asynth。如果先前没有对clock和异步信号进行指定,可以由DFT Compiler自己去判断哪个是clock,哪个是异步信号。(不推荐)。

创建完测试协议后,可以通过write_test_protocol -output XXX.SPF命令将其输出到文件,该文件的格式是SPIL格式。

二、DFT的设计规则检查
dft_drc:对先前指定的规则检查test DRC

三、对RTL test DRC的检查
需要理解各种violation,主要的violation有三种。
第一种是阻止扫描链的插入违例。主要的原因有:时钟不可控,latch在时钟周期开始的时候就使能,异步控制信号处于有效的状态。
第二种是阻止采样数据的违例。主要的原因有:时钟信号作为寄存器的数据输入端,黑盒产生的信号控制时钟端或者异步控制端,源寄存器在目的寄存器获取数据之前又采样了新的数据,三态总线冲突。
第三种就是影响fault覆盖率的违例。比如时钟作为数据,多个时钟驱动一个寄存器,以及黑盒。

没有评论: