版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://bb2hh.blogbus.com/logs/59517651.html
说明:如需转载,请注明作者出处,谢谢~,Author:pythonlong
以下根据资料和个人体会整理,如果错误,疑问欢迎请指
正,讨论!!
dft的三种的故障模型。
1.固定故障。也称电压故障(stuck fault)。即晶体管的一端固定的不期望的链接到VDD或者VSS,从而导致布尔错误。
2.电流故障。current fault。这些故障容易导致高的漏电流,不会导致布尔错误,但是会造成器件的过早失效甚至有源短路。
3.延迟故障。包括跳变延迟故障和路径延迟故障。
扫描链工作过程。分为四步:
1.串行输入
2.并行测量
3.平行捕获
4.串行输出
DFT Compiler添加扫描链过程:
1.test configure
2.scan configure
3.dft configure
4.specify
5.preview
6.synthize
开始test configure。
test configure主要用来配置一些测试相关的时钟,输入延迟,双向延迟,测试选通时间。
上图配置tcl中如下设置:
set test_default_period 100
set test_default_delay 50
set test_default_bidir_delay 55
set test_default_strob 90
二,scan configure。配置扫描链的一些属性。
命令和参数如下:解释一些常用的
set_scan_configuration
[-add_lockup true | false]
[-chain_count integer
| -max_length integer_or_default
| -exact_length integer_or_default
| -count_per_domain integer_or_default]
[-clock_mixing no_mix | mix_edges | mix_clocks | mix_clocks_not_edges]
[-create_dedicated_scan_out_ports true | false]
[-internal_clocks single | none | multi]
[-insert_terminal_lockup true | false]
[-lockup_type latch | flip_flop]
[-mix_internal_clock_driver true | false]
[-partition vertical | horizontal]
[-style multiplexed_flip_flop | clocked_scan | lssd | aux_clock_lssd | combinational | none]
[-exclude_elements exclude_list]
[-voltage_mixing true | false]
[-power_domain_mixing true | false]
[-test_mode mode_name]
[-domain_based_scan_enable true | false]
[-pipeline_scan_enable true | false]
[-pipeline_fanout_limit integer_or_default]
[-reuse_mv_cells control_reuse_of_existing_MV_isolation_and_level-shifter_cells]
[-create_test_clocks_by_system_clock_domain create_test_clock_from_system_clock]
[-replace replace]
[-hierarchical_isolation hierarchical_isolation ]
[-shared_scan_in number_of_shared_pin_count]
[-preserve_multibit_segment multibit_segment]
[-begin_and_end_with_rising_edge chain_terminals_optimization]
1. set_scan_config -style multiplexed_flip_flop 设置扫描的链中的触发器类型,一般选择多路复用触发器。低功耗设计中使用门控扫描触发器。
2. set_scan_config -clock_mixing no_mix
dc默认的是每个时钟域产生一个扫描链。即当你声明好一个scan_path(from si1 to
si2),dc会将同一个时钟域的同类型触发器链接到si1到si2上,如果类型不同,还会自动产生一条扫描链。no_mix意思是扫描链上的触发器必须
是同类型的:同时钟,同边沿。
如下图:三个时钟域,想产生2条扫描链,使用no_mix配置。但是dc会生成3三条扫描链。
同样mix_edges表示一个扫描链上只允许是同一个时钟的触发器,包括上升沿出发和下降沿触发的。
而mix_clocks表示扫描连上允许不同时钟,不同边沿驱动的触发器。
一般选用mix_clocks,扫描链容易达到平衡。
set_scan_config -preserve_multibit_segment 使用指定由create_multibit -name x {xx}产生的multibit的链接方式。false,表示multibit是分散的。true表示同步化的。
set_scan_config -exclude_elements 扫描链中不包含指定单元。
同样也可以使用set_san_element false xxx指定某个单元不进行扫描链插入。
set_scan_config -create_dedicated_scan_out_ports 是否根据声明的ScanDataOut产生扫描链
set_scan_config -add_lockup 是否添加lockup
cell。同一个扫描链中可能有不同功能时钟驱动的触发器,如上面clock_mixing选择mix_clocks,那么相邻2个scan
ff需要加入lockup cell。如下图:如果没有加lockup
cell同时clk1和clk2的波形如后面一个,那么就有可能导致后面一个触发器捕获不到数据。加入了lockup
cell无论哪种情况都可以捕获数据
set_scan_config -insert_terminal_lockup true | false是否在扫描链结尾插入lockup cell
set_scan_config -lockup_type latch | flip_flop lockup cell类型,一般选择latch,terminal lockup可以选flip flop
set_scan_config -inter_clcok multi 指导工具将选择时钟或者多驱动时钟和顶层时钟分离开来。一般用于将clock_mixing设置mix_clocks的时候。
因为当使用mix_clocks的时候,相邻2个scan ff的功能时钟是不一样的,如果后一个是选择时钟,或者多驱动时钟。那么在同一个test clock下会造成hold violation。如下图:
使用mix_clocks类型的扫描链,会产生下面的扫描链:由于reg2的test clock经过了一个选择器,会造成hold violation。
如果设置了add_lockup true2个scan ff之间会加入lockup,则不会产生时序问题。
如果设置inter_clock 为multi则会将2个scan ff放到2个扫描链中。也不会产生时序问题。
版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
http://bb2hh.blogbus.com/logs/59517707.html
set_dft_configuration
[-scan enable | disable]
[-fix_clock enable | disable]
[-fix_set enable | disable]
[-fix_reset enable | disable]
[-fix_xpropagation enable | disable]
[-fix_bus enable | disable]
[-fix_bidirectional enable | disable]
[-control_points enable | disable]
[-observe_points enable | disable]
[-logicbist enable | disable]
[-wrapper enable | disable]
[-boundary enable | disable]
[-bsd enable | disable]
[-clock_controller enable | disable]
[-mode_decoding_style binary | one_hot]
[-scan_compression enable | disable]
[-pipeline_scan_data enable | disable]
[-connect_clock_gating enable | disable]
[-integration enable | disable]
dft配置
-scan enable | disable
是否允许scan。默认使能,不需配置
-fix_clock enable | disable
是否允许自动修正clock
-fix_set enable | disable
是否允许修正set
-fix_reset enable | disable
是否修正复位reset
-fix_xpropagation enable | disable
是否修正不定态x
-fix_bus enable | disable
是否修正总线。总线分内部总线和外部总线。
-fix_bidirectional enable | disable
是否修正双向
-control_points enable | disable
是否允许插入控制点
-observe_points enable | disable
是否允许插观测点.
-wrapper enable | disable
是否使用影子scan
-scan_compression enable | disable
是否使用压缩
set_dft_insertion_configuration
[-map_effort low | medium | high] 扫描链优化级别 默认 low
[-synthesis_optimization none | all] 是否进行综合优化 一般 none
[-preserve_design_name true | false] 保持设计名称 一般 true
set_dft_signal
[-view existing_dft | spec]
[-test_mode mode_name] 扫描类型,全扫描,部分扫描
-type signal_type 信号类型:ScanDataIn,ScanDataOut,Reset,Set,Constant,ScanClock,TestData
[-port port_list] 信号端口
[-active_state active_state] 信号什么状态有效
[-timing timing] 信号的时序
[-period period] ScanClock周期
[-hookup_pin hookup_pin] 信号端口关联的pin
set_scan_path
scan_chain_name
[-ordered_elements ordered_list] 在扫描链上按顺序链接ordered_list单元
[-include_elements include_list] 在扫描链上包含include_list单元
[-dedicated_scan_out true | false] 是否使用指定的扫描链输出口
[-complete true | false] 扫描链是否完成的
[-exact_length length] 扫描链长度
[-insert_terminal_lockup true | false] 是否在扫描链结尾插入lockup cell
[-scan_master_clock clock_name] 扫描链的主时钟
[-scan_slave_clock clock_name] 扫描链的从时钟
[-scan_enable port_name] 扫描链的使能信号
[-scan_data_in port_name] 扫描链输入
[-scan_data_out port_name] 扫描链输出
set_autofix_configuration
[-type clock | set | reset | xpropagation | internal_bus |
external_bus | bidirectional] 自动修正类型:时钟,复位,预置,不定态,内部总线,外部总线,双向
[-test_data test_data_name] 用来修正的信号
[-method mux | gate | enable_one | disable_all | input | output | no_disabling]
[-fix_data enable | disable] 修正时钟做数据线
[-fix_latch enable | disable]
[-include_elements list_of_design_objects] 修正包括那些单元,也可以使用set_autofix_element
[-exclude_elements list_of_design_objects] 修正中不能包括哪些单元
[-control_signal control_name] 修正时使用的控制信号
文章评论(0条评论)
登录后参与讨论