转DFT概论.docx
《转DFT概论.docx》由会员分享,可在线阅读,更多相关《转DFT概论.docx(9页珍藏版)》请在冰豆网上搜索。
转DFT概论
[转]DFT概论
标签:
无标签
[转]DFT概论版权声明:
转载时请以超链接形式标明文章原始出处和作者信息及本声明
以下根据资料和个人体会整理,如果错误,疑问欢迎请指
正,讨论!
!
dft的三种的故障模型。
1.固定故障。
也称电压故障(stuckfault)。
即晶体管的一端固定的不期望的链接到VDD或者VSS,从而导致布尔错误。
2.电流故障。
currentfault。
这些故障容易导致高的漏电流,不会导致布尔错误,但是会造成器件的过早失效甚至有源短路。
3.延迟故障。
包括跳变延迟故障和路径延迟故障。
扫描链工作过程。
分为四步:
1.串行输入
2.并行测量
3.平行捕获
4.串行输出
DFTCompiler添加扫描链过程:
1.testconfigure
2.scanconfigure
3.dftconfigure
4.specify
5.preview
6.synthize
开始testconfigure。
testconfigure主要用来配置一些测试相关的时钟,输入延迟,双向延迟,测试选通时间。
上图配置tcl中如下设置:
settest_default_period100
settest_default_delay50
settest_default_bidir_delay55
settest_default_strob90
二,scanconfigure。
配置扫描链的一些属性。
命令和参数如下:
解释一些常用的
set_scan_configuration
[-add_lockuptrue|false]
[-chain_countinteger
|-max_lengthinteger_or_default
|-exact_lengthinteger_or_default
|-count_per_domaininteger_or_default]
[-clock_mixingno_mix|mix_edges|mix_clocks|mix_clocks_not_edges]
[-create_dedicated_scan_out_portstrue|false]
[-internal_clockssingle|none|multi]
[-insert_terminal_lockuptrue|false]
[-lockup_typelatch|flip_flop]
[-mix_internal_clock_drivertrue|false]
[-partitionvertical|horizontal]
[-stylemultiplexed_flip_flop|clocked_scan|lssd|aux_clock_lssd|combinational|none]
[-exclude_elementsexclude_list]
[-voltage_mixingtrue|false]
[-power_domain_mixingtrue|false]
[-test_modemode_name]
[-domain_based_scan_enabletrue|false]
[-pipeline_scan_enabletrue|false]
[-pipeline_fanout_limitinteger_or_default]
[-reuse_mv_cellscontrol_reuse_of_existing_MV_isolation_and_level-shifter_cells]
[-create_test_clocks_by_system_clock_domaincreate_test_clock_from_system_clock]
[-replacereplace]
[-hierarchical_isolationhierarchical_isolation]
[-shared_scan_innumber_of_shared_pin_count]
[-preserve_multibit_segmentmultibit_segment]
[-begin_and_end_with_rising_edgechain_terminals_optimization]
1.set_scan_config-stylemultiplexed_flip_flop设置扫描的链中的触发器类型,一般选择多路复用触发器。
低功耗设计中使用门控扫描触发器。
2.set_scan_config-clock_mixingno_mix
dc默认的是每个时钟域产生一个扫描链。
即当你声明好一个scan_path(fromsi1to
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-namex{xx}产生的multibit的链接方式。
false,表示multibit是分散的。
true表示同步化的。
set_scan_config-exclude_elements扫描链中不包含指定单元。
同样也可以使用set_san_elementfalsexxx指定某个单元不进行扫描链插入。
set_scan_config-create_dedicated_scan_out_ports是否根据声明的ScanDataOut产生扫描链
set_scan_config-add_lockup是否添加lockup
cell。
同一个扫描链中可能有不同功能时钟驱动的触发器,如上面clock_mixing选择mix_clocks,那么相邻2个scan
ff需要加入lockupcell。
如下图:
如果没有加lockup
cell同时clk1和clk2的波形如后面一个,那么就有可能导致后面一个触发器捕获不到数据。
加入了lockup
cell无论哪种情况都可以捕获数据
set_scan_config-insert_terminal_lockuptrue|false是否在扫描链结尾插入lockupcell
set_scan_config-lockup_typelatch|flip_floplockupcell类型,一般选择latch,terminallockup可以选flipflop
set_scan_config-inter_clcokmulti指导工具将选择时钟或者多驱动时钟和顶层时钟分离开来。
一般用于将clock_mixing设置mix_clocks的时候。
因为当使用mix_clocks的时候,相邻2个scanff的功能时钟是不一样的,如果后一个是选择时钟,或者多驱动时钟。
那么在同一个testclock下会造成holdviolation。
如下图:
使用mix_clocks类型的扫描链,会产生下面的扫描链:
由于reg2的testclock经过了一个选择器,会造成holdviolation。
如果设置了add_lockuptrue2个scanff之间会加入lockup,则不会产生时序问题。
如果设置inter_clock为multi则会将2个scanff放到2个扫描链中。
也不会产生时序问题。
版权声明:
转载时请以超链接形式标明文章原始出处和作者信息及本声明
dft概论2
set_dft_configuration
[-scanenable|disable]
[-fix_clockenable|disable]
[-fix_setenable|disable]
[-fix_resetenable|disable]
[-fix_xpropagationenable|disable]
[-fix_busenable|disable]
[-fix_bidirectionalenable|disable]
[-control_pointsenable|disable]
[-observe_pointsenable|disable]
[-logicbistenable|disable]
[-wrapperenable|disable]
[-boundaryenable|disable]
[-bsdenable|disable]
[-clock_controllerenable|disable]
[-mode_decoding_stylebinary|one_hot]
[-scan_compressionenable|disable]
[-pipeline_scan_dataenable|disable]
[-connect_clock_gatingenable|disable]
[-integrationenable|disable]
dft配置
-scanenable|disable
是否允许scan。
默认使能,不需配置
-fix_clockenable|disable
是否允许自动修正clock
-fix_setenable|disable
是否允许修正set
-fix_resetenable|disable
是否修正复位reset
-fix_xpropagationenable|disable
是否修正不定态x
-fix_busenable|disable
是否修正总线。
总线分内部总线和外部总线。
-fix_bidirectionalenable|disable
是否修正双向
-control_pointsenable|disable
是否允许插入控制点
-observe_pointsenable|disable
是否允许插观测点.
-wrapperenable|disable
是否使用影子scan
-scan_compressionenable|disable
是否使用压缩
set_dft_insertion_configuration
[-map_effortlow|medium|high]扫描链优化级别默认low
[-synthesis_optimizationnone|all]是否进行综合优化一般none
[-preserve_design_nametrue|false]保持设计名称一般true
set_dft_signal
[-viewexisting_dft|spec]
[-test_modemode_name]扫描类型,全扫描,部分扫描
-typesignal_type信号类型:
ScanDataIn,ScanDataOut,Reset,Set,Constant,ScanClock,TestData
[-portport_list]信号端口
[-active_stateactive_state]信号什么状态有效
[-timingtiming]信号的时序
[-periodperiod]ScanClock周期
[-hookup_pinhookup_pin]信号端口关联的pin
set_scan_path
scan_chain_name
[-ordered_elementsordered_list]在扫描链上按顺序链接ordered_list单元
[-include_elementsinclude_list]在扫描链上包含include_list单元
[-dedicated_scan_outtrue|false]是否使用指定的扫描链输出口
[-completetrue|false]扫描链是否完成的
[-exact_lengthlength]扫描链长度
[-insert_terminal_lockuptrue|false]是否在扫描链结尾插入lockupcell
[-scan_master_clockclock_name]扫描链的主时钟
[-scan_slave_clockclock_name]扫描链的从时钟
[-scan_enableport_name]扫描链的使能信号
[-scan_data_inport_name]扫描链输入
[-scan_data_outport_name]扫描链输出
set_autofix_configuration
[-typeclock|set|reset|xpropagation|internal_bus|
external_bus|bidirectional]自动修正类型:
时钟,复位,预置,不定态,内部总线,外部总线,双向
[-test_datatest_data_name]用来修正的信号
[-methodmux|gate|enable_one|disable_all|input|output|no_disabling]
[-fix_dataenable|disable]修正时钟做数据线
[-fix_latchenable|disable]
[-include_elementslist_of_design_objects]修正包括那些单元,也可以使用set_autofix_element
[-exclude_elementslist_of_design_objects]修正中不能包括哪些单元
[-control_signalcontrol_name]修正时使用的控制信号