常用时序分析SDC.docx
《常用时序分析SDC.docx》由会员分享,可在线阅读,更多相关《常用时序分析SDC.docx(56页珍藏版)》请在冰豆网上搜索。
常用时序分析SDC
常用时序分析SDC 命令参考
(一)
1. Definedesignenvironment
1.1. Set_operating_conditions
1.2. Set_wire_load_model
1.3. Set_driving_cell
1.4. Set_load
1.5. Set_fanout_load
1.6. Set_min_library
2. Setdesignconstraints
2.1. Designruleconstraints
2.1.1. Set_max_transition
2.1.2. Set_max_fanout
2.1.3. Set_max_capacitance
2.2. Designoptimizationconstraints
2.2.1. Create_clock
2.2.2. create_generated_clock
2.2.3. Set_clock_latency
2.2.4. Set_propagated_clock
2.2.5. Set_clock_uncertainty
2.2.6. Set_input_delay
2.2.7. Set_output_delay
2.2.8. Set_max_area
3. Othercommands
3.1. set_clock_groups
3.2. set_false_path
3.3. set_case_analysis
3.4. set_max_delay
1. Donotexistintimingfixsdcfile:
1.1. Set_max_area
1.2. set_operation_conditions
1.3. set_wire_load_model
1.4. set_ideal_*
2. Mustbeplacedintimingfixsdcfile:
2.1. Set_clock_uncertainty,
2.2. set_max_transition
2.3. set_propagated_clock
set_operating_conditions
定义当前设计的控制条件
语法:
Intset_operating_conditions
[-analysis_typebc_wc|on_chip_variation]
[-minmin_condition]
[-maxmax_condition]
[-min_librarymin_lib]
[-max_librarymax_lib]
[-min_physmin_proc]
[-max_physmax_proc]
[-librarylib]
[-object_listobjects]
[condition]
数据类型:
min_condition 列表
max_conditon 列表
objects 列表
condition 列表
参数:
-analysis_typebc_wc|on_chip_variation
设定分析的类型。
两个选项只能选择其中一个。
使用bc_wc或on_chip_variation切换设计到min_max模式。
bc_wc值设定最小(快)最大(慢)控制条件是两个极端的控制条件。
在bc_wc分析,用最大的控制条件分析SETUP,用最小控制条件分析HOLD。
on_chip_variation 分析分别有最小和最大控制条件表示片上最大偏差的上下限。
对所有最大延迟的路径运用最大控制条件,对所有最小延迟的路径运用最小控制条件。
-minmin_condition
指定用于最小延迟分析的控制条件。
如果没有指定,工具默认使用最大控制条件。
-min必须与-max 同时使用。
-maxmax_condition
指定用于最大延迟分析的控制条件。
-min_librarymin_lib
指定用于最短延迟分析,并包含有控制条件定义的库。
可以是一个库的名称或集合。
如果是集合,工具将选择集合中首个满足条件的库。
-max_librarymax_lib
指定用于最大延迟分析,并包含控制条件定义的库。
可以是一个库的名称或集合。
如果是集合,工具将选择集合中首个满足条件的库。
-min_physmin_proc
指定工艺资源名称搜索相匹配的电阻和电容值,用于最小延迟分析。
该选项必须与-max_phys一起使用。
-max_physmax_proc
指定工艺资源名称搜索相匹配的电阻和电容值,用于最大延迟分析。
该选项必须与-min_phys一起使用。
-librarylib
指定包含控制条件定义的库,用于最小和最大延迟分析。
可以是一个库的名称或集合。
如果是集合,工具将选择集合中首个包含控制条件的库。
-object_listobjects
指定要设置控制条件的单元或端口。
如果没有指定,默认为整个设计。
该选项支持子单元或子模块。
Condition
指定有环境特征定义的条件,在最小最大延迟分析时使用。
描述:
该命令设定控制条件或环境特征,据此对当前设计进行时序或布局的优化。
控制条件必须定义在.lib或link_library包含的任一库中。
当前设计的local_link_library 会被加到link_library的开头,查找时优先于link_library。
库搜索顺序依次为:
1. lib
2. local_link_library
3. link_library
如果没有为设计设定控制条件,compile命令寻找链接库中首个库的控制条件作为初始值。
如果库中没有控制条件定义,控制条件将不会被使用。
使用-object_list 选项将取代来自于设计或更高层次设计上的设定。
使用report_design命令可以查看当前设计控制条件设定和链接库信息。
使用report_lib命令可以查看指定库控制条件设定。
多条件多模式支持:
该命令仅使用当前方案的信息
范例:
operating_conditions(“BCCOM”){process:
0.6;
temperature:
20;
voltage:
5.25;
tree_type:
“best_case_tree”;
}
控制条件的名称是BCCOM,参数定义为:
process
浮点数代表半导体工艺特征
temperature
浮点数代表环境设定的温度
voltage
浮点数定义环境设定中电压范围的上限,下限为0.0
tree_type
环境互连模型。
compile命令使用互连模式选择互连延迟的计算公式。
三个有效模型:
∙ best_case_tree, 假设连线延迟为0
∙ worst_case_tree, 使用集中(总)RC模型
∙ balanced_tree, 所有负载均匀分摊线电阻
当工艺因素,控制温度和控制电压与标称值有偏差,compile使用线性模型补偿偏差的带来的影响,模拟为单元延迟,输入负载,输出驱动等值。
包含有控制条件定义的库中有标称值设计的定义。
以下例子设定控制条件为WCIND,如果link_library是my_lib.db,并且设计没有local_link_library设定。
my_lib.db的库为my_lib_core。
set_operating_conditionsWCIND
控制条件’WCIND’在库”my_lib_core”中查找。
使用other_lib_core.db库中BCIND值 用于最小延迟分析,WCIND用于最大延迟分析。
other_lib_core.db的库名称为other_lib_core
set_operating_conditions–minBCIND–maxWCIND–libraryother_lib_core
删除当前控制条件设定
set_operating_conditions
更多:
compile,report_lib,reset_design,set_local_link_library,link_library
set_wire_load_model
为设计、端口、当前设计中层次化单元设定wire_load_attach_name属性,选择一个连线模型用于连线电容的计算。
语法:
statusset_wire_load_model
-namemodel_name
[-librarylib]
[-min][-max]
[object_list]
数据类型:
model_name 字符
object_list 集合
参数:
-namemodel_name
指定连线负载模型的名称。
该模型必须是已定义的。
这个选项必须使用。
-librarylib
指定包含模型的库。
可以是一个库的名称或集合。
如果是集合,工具将选择集合中首个满足条件的库。
-min
指定仅用于最小延迟分析的模型。
你不能用-min选项设定一个不同的模型或最小模块尺寸。
因为对于这些参数,无论最大最小延迟分析都使用相同的值。
-max
指定仅用于最大延迟分析的模型。
任何用于最小延迟分析的模型集都没有影响。
object_list
指定将被设定连线负载模型的端口、设计或单元的列表。
连线负载模型默认设定给当前设计。
描述:
该命令设置wire_load_attach_name属性给特定的端口,设计或对象列表中单元或当前设计,用于连线电容的计算。
如果没有任何选项,模型将作用于顶层设计。
-name选项是必须的。
如果指定的是一个设计,将作用于整个设计中的所有连线。
如果指定的是一个单元,存在在当前设计中。
设定给单元的连线模型会取代设计赋值给单元的连线模型。
你可以使用该命令设定端口外部连线负载模型,并且不受设计连线模型的影响。
如果没有为设计指定连线模型,首个满足条件的连线模型将默认设定给设计。
当auto_wire_load_selection 属性被打开,如果库有wire_load_selection 表,当前设计的单元部分将自动搜索与wire_load_selection表相匹配的连线模型。
如果库有不只一个表,将设置default_wire_selecting_group属性将其中一个表设定为初始表。
你也可以通过set_wrie_load_selection_group进行手工设定。
如果你没有使用set_wire_load_min_block_size 设定模块大小,当合适的连线被选用,设计单元面积被假设为至少与这个值一样大。
如果没有wire_load_selection表,库中的default_wire_load会被使用。
如果上述情况都没有,将没有连线会被使用。
当auto_wire_load_selection 属性被设为false,并且没有指定model_name,也同样没有连线模型会被使用。
report_design命令显示当前设计的连线模型和模式,以及相关联的库。
report_wire_load命令可提供更多连线模型信息。
report_lib命令显示指定库中定义的连线模型及选择表。
你可以使用report_port显示设计端口连线模型。
你可以对当前设计中的层次化单元设定特定的连线模型,引用层次化单元的其他设计,其连线模型不会被改变。
如果你对子设计设定连线模型,你需要确保顶层设计连线模型不是top,否则下层模块的连线模型的选择会被忽略。
如果你为设计指定连线模式,工具在compile时,会搜索首个满足条件的连线模式作为初始设定。
如果初始设定没有被指定,会假设top作为初始值。
你可以使用set_wire_load_mode重新指定。
对于set_wire_load_mode属性的top,enclosed和segmented 值的定义,可参考set_wire_load_mode命令。
连线电阻及面积也会遵照规则考虑进连线电容的计算。
使用-min选项,你可以使用set_wire_load_model指定一个不同的连线模型用于最小延迟分析 。
除非明确的指定,最大最小延迟分析使用相同的连线模型。
你可以设定不同的连线模型指定给设计或端口。
你不可以指定不同的连线模型或模块尺寸仅用于最小延迟分析。
对于这种情况,最大最小分析使用相同的值。
布线面积总是使用与最大延迟分析的相同连线负载来计算。
连线负载模型包含compile估计连线延迟所需要的所有信息。
下面是一个连线负载模型的例子。
wire_load(“90x90”) { resistance:
0;
capacitance:
1;
area:
0;
slope:
1.64;
fanout_length(1,1.9);
fanout_length(2,2.8);
fanout_length(3,4.7);
}
模型名称90x90,模型字段定义为:
resistance
互连线单位长度电阻
capacitance
互连线单位长度电容
area
互连线单位长度连线面积
fanout_length(fanout1,length1)
这些数组描述一个查找表,工具可以据此用给定的扇出估算出被驱动单元的互连线长度。
你必须指定至少一组数据,可以更多附加数据表达期望的扇出长度行为特征。
在邻近的两组数据之间使用线性插值方法来估算查找表中不存在的点。
slope
该值用来表征线性超出查找表的扇出或长度行为。
删除连线负载模式使用remove_wire_load_model命令或reset_design命令。
范例:
在顶层设计设定布线负载模型,没有local_link_library设定前提下:
report_libtech_lib
…
WireLoadingModel:
NameLibraryResCapAreaSlopeFanoutLength
------------------------------------------------------
05x05tech_lib0.00001.00000.00000.1860100.3900
10x10tech_lib0.00001.00000.00000.311010.5300
…
link_library={tech_lib.db}
set_wire_load_model–name“10x10”
以下范例使用-library 选项指定库my_lib.db中的连线负载模型10x10
set_wire_load_model–name“10x10”–librarymy_lib.db
以下范例为子设计LOW设定连线负载模型10x10,用于最大最小延迟分析 。
接着为顶层设计TOP设定连线模型20x20,模型模式为enclosed。
最后设定20x20MIN模型仅用于最小延迟分析。
current_designLOW
set_wire_load_model–name“10x10”
current_designTOP
set_wire_load_modeenclosed
set_wire_load_model–name“20x20”
set_wire_load_model–name“20x20MIN”-min
以下例子设定子设计LOW没有连线负载模式,让它基于单元面积来选择。
连线负载模式enclosed和连线负载模型20x20设定给顶层设计,使用-min_block_size选项描述假设对于子设计的一个模块的尺寸至少为200。
current_designLOW/*没有连线负载设定*/
current_designTOP
set_wire_load_modeenclosed
set_wire_load_min_block_size200.0
set_wire_load_model–name“20x20”
以下命令描述一个端口的外部扇出
set_wire_load_model[get_portsO1]“default_wl”
set_port_fanout_number5[get_portsO1]
假设U1,U2和U3是TOP设计中的三个单元,它们都被子设计LOW所引用。
以下命令设定10x10连线模型给LOW,20x20连线模型给U1和U2。
current_designTOP
set_wire_load_model–name“10x10”LOW
set_wire_load_model–name“20x20”{U1U2}
更多:
characterize,current_design,remove_wire_load_model,report_lib,reset_design,set_load,
set_local_link_library,set_port_fanout_number,set_wire_load_min_block_size,
set_wire_load_mode,set_wire_load_selection_group,auto_wire_load_selection,
link_library
set_driving_cell
为当前设计的输入或输入/出类型的端口设定属性。
指定一个单元或单元的输出端口来驱动特定的端口。
语法:
intset_driving_cell
[-lib_celllib_cell_name]
[-librarylib]
[-rise]
[-fall]
[-min]
[-max]
[-pinpin_name]
[-from_pinfrom_pin_name]
[-dont_scale]
[-no_design_rule]
[-none]
[-input_transition_risertran]
[-input_transition_fallftran]
[-multiply_byfactor]
port_list
[-cellobsolete_-_please_use_-lib_cell_instead]
数据类型:
lib_cell_name 字符
lib 字符
pin_name 字符
from_pin_name 字符
rtran 浮点
ftran 浮点
factor 浮点
port_list 列表
参数:
-lib_cell lib_cell_name
指定用来驱动端口的单元名称。
你可以配合-pin选项指定有不至一个输出的单元,将driving_cell_rise和driving_cell_fall属性设定给端口上的lib_cell_name。
要指定不同的单元给上升和下降情况,需要执行两次命令。
分别使用-rise选项和-fall选项。
你如果使用本选项,还需要同时使用-dont_scale和multiply_by选项。
命令默认搜索link_library中的单元。
-libray lib
指定驱动单元所在的库名或库的集合。
如果库单元没有找到,与端口控制条件相匹配的库将会被使用。
当没有库被指定时,会根据控制条件搜索所有的库。
如果与控制条件相匹配的库单元不能找到,第一个与库单元名称相匹配的单元会被使用。
本选项只能与-lib_cell一起使用。
它设定driving_cell_library_rise和driving_cell_library_fall字符属性给在端口的库。
指定不同的库,需要执行两次,分别使用-rise和-fall选项。
-rise
指定lib_cell_name,lib,pin_name, 和 from_pin_name对应到上升情况。
并且为目标设定相应driving_cell_rise,driving_cell_library_rise,driving_cell_pin_rise, 和driving_cell_from_pin_rise字符属性。
你可与-fall选项一起使用,指定上升和下降情况。
-fall
指定lib_cell_name,lib,pin_name, 和 from_pin_name对应到下降情况。
并且为目标设定相应driving_cell_rise,driving_cell_library_rise,driving_cell_pin_rise, 和driving_cell_from_pin_rise字符属性。
你可与-rise选项一起使用,指定上升和下降情况。
-min
设定驱动单元信息仅用于最小控制条件分析。
-max
设定驱动单元信息仅用于最大控制条件分析。
-pinpin_name
指定驱动单元驱动端口的输出脚。
当你使用-lib_cell选项驱动单元有不至一个输出脚或使用-from_pin选项时,需要使用-pin选项。
本选项设定driving_cell_pin_rise和driving_cell_pin_fall属性给在端口上的接脚。
指定不同的接脚用于不同情况,需要执行命令两次,分别是上升或下降情况。
初始值为库单元中第一个被找到的时序弧(单元内部路径)。
-from_pinfrom_pin_name
指定驱动单元输入脚用于搜索时序弧。
当驱动单元有不至一个输入接脚,并且这些接脚有不同的特性弧,而且使用了-pin和-lib_cell选项时,本选项需要使用。
-from_pin选项设定driving_cell_from_pin_rise和driving_cell_from_pin_fall属性给在端口上的from_pin_name。
初始值为库单元中第一个被找到的时序弧。
-dont_scale
指定时序分析器不要依照当前控制条件改变端口驱动能力。
本选项只能与-lib_cell一起使用。
-dont_scale产生driving_cell_dont_scale 布尔属性true 给端口。
当驱动单元被改变时,端口驱动能力会根据控制条件进行改变。
-none
去除前一个驱动单元信息
-input_transition_risertran
指定与-from_pin选项相连的输入上升转变时间。
使用-input_transiton_rise和-input_transition_fall选项通过截取与-from_pin相关的精确转变时间去获取输出接脚一个更准确的转变时间和延迟时间。
初始值 为0。
-input_transition_fallftran
指定与-from_pin选项相关的输入下降转变时间。
初始值为0.
-multiply_byfactor
指定一个倍数,用它来加倍端口的延迟特征。
本选项