1、常用时序分析SDC常用时序分析SDC命令参考(一)1.Define design environment1.1.Set_operating_conditions1.2.Set_wire_load_model1.3.Set_driving_cell1.4.Set_load1.5.Set_fanout_load1.6.Set_min_library2.Set design constraints2.1.Design rule constraints2.1.1.Set_max_transition2.1.2.Set_max_fanout2.1.3.Set_max_capacitance2.2.Des
2、ign optimization constraints2.2.1.Create_clock2.2.2.create_generated_clock2.2.3.Set_clock_latency2.2.4.Set_propagated_clock2.2.5.Set_clock_uncertainty2.2.6.Set_input_delay2.2.7.Set_output_delay2.2.8.Set_max_area3.Other commands3.1.set_clock_groups3.2.set_false_path3.3.set_case_analysis3.4.set_max_de
3、lay1.Do not exist in timing fix sdc file:1.1.Set_max_area1.2.set_operation_conditions1.3.set_wire_load_model1.4.set_ideal_*2.Must be placed in timing fix sdc file:2.1.Set_clock_uncertainty,2.2.set_max_transition2.3.set_propagated_clockset_operating_conditions定义当前设计的控制条件语法:Int set_operating_condition
4、s-analysis_type bc_wc | on_chip_variation-min min_condition-max max_condition-min_library min_lib-max_library max_lib-min_phys min_proc-max_phys max_proc-library lib-object_list objectscondition数据类型:min_condition列表max_conditon列表objects列表condition列表参数:-analysis_type bc_wc | on_chip_variation设定分析的类型。两
5、个选项只能选择其中一个。使用bc_wc或on_chip_variation切换设计到min_max模式。bc_wc值设定最小(快)最大(慢)控制条件是两个极端的控制条件。在bc_wc分析,用最大的控制条件分析SETUP,用最小控制条件分析HOLD。on_chip_variation分析分别有最小和最大控制条件表示片上最大偏差的上下限。对所有最大延迟的路径运用最大控制条件,对所有最小延迟的路径运用最小控制条件。-min min_condition指定用于最小延迟分析的控制条件。如果没有指定,工具默认使用最大控制条件。-min必须与-max同时使用。-max max_condition指定用于最大
6、延迟分析的控制条件。-min_library min_lib指定用于最短延迟分析,并包含有控制条件定义的库。可以是一个库的名称或集合。如果是集合,工具将选择集合中首个满足条件的库。-max_library max_lib指定用于最大延迟分析,并包含控制条件定义的库。可以是一个库的名称或集合。如果是集合,工具将选择集合中首个满足条件的库。-min_phys min_proc指定工艺资源名称搜索相匹配的电阻和电容值,用于最小延迟分析。该选项必须与-max_phys一起使用。-max_phys max_proc指定工艺资源名称搜索相匹配的电阻和电容值,用于最大延迟分析。该选项必须与-min_phys
7、一起使用。-library lib指定包含控制条件定义的库,用于最小和最大延迟分析。可以是一个库的名称或集合。如果是集合,工具将选择集合中首个包含控制条件的库。-object_list objects指定要设置控制条件的单元或端口。如果没有指定,默认为整个设计。该选项支持子单元或子模块。Condition指定有环境特征定义的条件,在最小最大延迟分析时使用。描述:该命令设定控制条件或环境特征,据此对当前设计进行时序或布局的优化。控制条件必须定义在.lib或link_library包含的任一库中。当前设计的local_link_library会被加到link_library的开头,查找时优先于li
8、nk_library。库搜索顺序依次为:1.lib2.local_link_library3.link_library如果没有为设计设定控制条件,compile命令寻找链接库中首个库的控制条件作为初始值。如果库中没有控制条件定义,控制条件将不会被使用。使用-object_list选项将取代来自于设计或更高层次设计上的设定。使用report_design命令可以查看当前设计控制条件设定和链接库信息。使用report_lib命令可以查看指定库控制条件设定。多条件多模式支持:该命令仅使用当前方案的信息范例:operating_conditions(“BCCOM”) process : 0.6 ;te
9、mperature : 20 ;voltage : 5.25 ;tree_type : “best_case_tree” ;控制条件的名称是BCCOM,参数定义为:process浮点数代表半导体工艺特征temperature浮点数代表环境设定的温度voltage浮点数定义环境设定中电压范围的上限,下限为0.0tree_type环境互连模型。compile命令使用互连模式选择互连延迟的计算公式。三个有效模型:best_case_tree,假设连线延迟为0worst_case_tree,使用集中(总)RC模型balanced_tree,所有负载均匀分摊线电阻当工艺因素,控制温度和控制电压与标称值有
10、偏差,compile使用线性模型补偿偏差的带来的影响,模拟为单元延迟,输入负载,输出驱动等值。包含有控制条件定义的库中有标称值设计的定义。以下例子设定控制条件为WCIND,如果link_library是my_lib.db,并且设计没有local_link_library设定。my_lib.db的库为my_lib_core。set_operating_conditions WCIND控制条件WCIND在库”my_lib_core”中查找。使用other_lib_core.db库中BCIND值用于最小延迟分析,WCIND用于最大延迟分析。other_lib_core.db的库名称为other_li
11、b_coreset_operating_conditions min BCIND max WCIND library other_lib_core删除当前控制条件设定set_operating_conditions更多:compile, report_lib, reset_design, set_local_link_library, link_libraryset_wire_load_model为设计、端口、当前设计中层次化单元设定wire_load_attach_name属性,选择一个连线模型用于连线电容的计算。语法:status set_wire_load_model-name mode
12、l_name-library lib-min-maxobject_list数据类型:model_name字符object_list集合参数:-name model_name指定连线负载模型的名称。该模型必须是已定义的。这个选项必须使用。-library lib指定包含模型的库。可以是一个库的名称或集合。如果是集合,工具将选择集合中首个满足条件的库。-min指定仅用于最小延迟分析的模型。你不能用-min选项设定一个不同的模型或最小模块尺寸。因为对于这些参数,无论最大最小延迟分析都使用相同的值。-max指定仅用于最大延迟分析的模型。任何用于最小延迟分析的模型集都没有影响。object_list指定
13、将被设定连线负载模型的端口、设计或单元的列表。连线负载模型默认设定给当前设计。描述:该命令设置wire_load_attach_name属性给特定的端口,设计或对象列表中单元或当前设计,用于连线电容的计算。如果没有任何选项,模型将作用于顶层设计。-name选项是必须的。如果指定的是一个设计,将作用于整个设计中的所有连线。如果指定的是一个单元,存在在当前设计中。设定给单元的连线模型会取代设计赋值给单元的连线模型。你可以使用该命令设定端口外部连线负载模型,并且不受设计连线模型的影响。如果没有为设计指定连线模型,首个满足条件的连线模型将默认设定给设计。当auto_wire_load_selectio
14、n属性被打开,如果库有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会被使用。如果上述
15、情况都没有,将没有连线会被使用。当auto_wire_load_selection属性被设为false,并且没有指定model_name,也同样没有连线模型会被使用。report_design命令显示当前设计的连线模型和模式,以及相关联的库。report_wire_load命令可提供更多连线模型信息。report_lib命令显示指定库中定义的连线模型及选择表。你可以使用report_port显示设计端口连线模型。你可以对当前设计中的层次化单元设定特定的连线模型,引用层次化单元的其他设计,其连线模型不会被改变。如果你对子设计设定连线模型,你需要确保顶层设计连线模型不是top,否则下层模块的连线模
16、型的选择会被忽略。如果你为设计指定连线模式,工具在compile时,会搜索首个满足条件的连线模式作为初始设定。如果初始设定没有被指定,会假设top作为初始值。你可以使用set_wire_load_mode重新指定。对于set_wire_load_mode属性的top, enclosed和segmented值的定义,可参考set_wire_load_mode命令。连线电阻及面积也会遵照规则考虑进连线电容的计算。使用-min选项,你可以使用set_wire_load_model指定一个不同的连线模型用于最小延迟分析。除非明确的指定,最大最小延迟分析使用相同的连线模型。你可以设定不同的连线模型指定给
17、设计或端口。你不可以指定不同的连线模型或模块尺寸仅用于最小延迟分析。对于这种情况,最大最小分析使用相同的值。布线面积总是使用与最大延迟分析的相同连线负载来计算。连线负载模型包含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互连线
18、单位长度电阻capacitance互连线单位长度电容area互连线单位长度连线面积fanout_length (fanout1, length1)这些数组描述一个查找表,工具可以据此用给定的扇出估算出被驱动单元的互连线长度。你必须指定至少一组数据,可以更多附加数据表达期望的扇出长度行为特征。在邻近的两组数据之间使用线性插值方法来估算查找表中不存在的点。slope该值用来表征线性超出查找表的扇出或长度行为。删除连线负载模式使用remove_wire_load_model命令或reset_design命令。范例:在顶层设计设定布线负载模型,没有local_link_library设定前提下:rep
19、ort_lib tech_libWire Loading Model:NameLibrary ResCap Area Slope Fanout Length-05x05tech_lib0.00001.00000.00000.1860100.390010x10tech_lib0.00001.00000.00000.3110 10.5300link_library = tech_lib.dbset_wire_load_model name “10x10”以下范例使用-library选项指定库my_lib.db中的连线负载模型10x10set_wire_load_model name “10x10”
20、 library my_lib.db以下范例为子设计LOW设定连线负载模型10x10,用于最大最小延迟分析。接着为顶层设计TOP设定连线模型20x20,模型模式为enclosed。最后设定20x20MIN模型仅用于最小延迟分析。current_design LOWset_wire_load_model name “10x10”current_design TOPset_wire_load_mode enclosedset_wire_load_model name “20x20”set_wire_load_model name “20x20MIN” -min以下例子设定子设计LOW没有连线负载模
21、式,让它基于单元面积来选择。连线负载模式enclosed和连线负载模型20x20设定给顶层设计,使用-min_block_size选项描述假设对于子设计的一个模块的尺寸至少为200。current_design LOW /*没有连线负载设定*/current_design TOPset_wire_load_mode enclosedset_wire_load_min_block_size 200.0set_wire_load_model name “20x20”以下命令描述一个端口的外部扇出set_wire_load_model get_ports O1 “default_wl”set_por
22、t_fanout_number 5 get_ports O1假设U1,U2和U3是TOP设计中的三个单元,它们都被子设计LOW所引用。以下命令设定10x10连线模型给LOW,20x20连线模型给U1和U2。current_design TOPset_wire_load_model name “10x10” LOWset_wire_load_model name “20x20” U1 U2更多:characterize, current_design, remove_wire_load_model, report_lib, reset_design, set_load,set_local_lin
23、k_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_libraryset_driving_cell为当前设计的输入或输入/出类型的端口设定属性。指定一个单元或单元的输出端口来驱动特定的端口。语法:int set_driving_cell-lib_cell lib_cell_name-library lib-rise-fall-min-max-pin pin_n
24、ame-from_pin from_pin_name-dont_scale-no_design_rule-none-input_transition_rise rtran-input_transition_fall ftran-multiply_by factorport_list-cell obsolete_-_please_use_-lib_cell_instead数据类型:lib_cell_name字符lib字符pin_name字符from_pin_name字符rtran浮点ftran浮点factor浮点port_list列表参数:-lib_celllib_cell_name指定用来驱动
25、端口的单元名称。你可以配合-pin选项指定有不至一个输出的单元,将driving_cell_rise和driving_cell_fall属性设定给端口上的lib_cell_name。要指定不同的单元给上升和下降情况,需要执行两次命令。分别使用-rise选项和-fall选项。你如果使用本选项,还需要同时使用-dont_scale和multiply_by选项。命令默认搜索link_library中的单元。-libraylib指定驱动单元所在的库名或库的集合。如果库单元没有找到,与端口控制条件相匹配的库将会被使用。当没有库被指定时,会根据控制条件搜索所有的库。如果与控制条件相匹配的库单元不能找到,第
26、一个与库单元名称相匹配的单元会被使用。本选项只能与-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字符
27、属性。你可与-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设定驱动单元信息仅用于最大控制条件分析。-pin pin_name指定驱动单元驱动端口的输出脚。当你使用
28、-lib_cell选项驱动单元有不至一个输出脚或使用-from_pin选项时,需要使用-pin选项。本选项设定driving_cell_pin_rise和driving_cell_pin_fall属性给在端口上的接脚。指定不同的接脚用于不同情况,需要执行命令两次,分别是上升或下降情况。初始值为库单元中第一个被找到的时序弧(单元内部路径)。-from_pin from_pin_name指定驱动单元输入脚用于搜索时序弧。当驱动单元有不至一个输入接脚,并且这些接脚有不同的特性弧,而且使用了-pin和-lib_cell选项时,本选项需要使用。-from_pin选项设定driving_cell_from
29、_pin_rise和driving_cell_from_pin_fall属性给在端口上的from_pin_name。初始值为库单元中第一个被找到的时序弧。-dont_scale指定时序分析器不要依照当前控制条件改变端口驱动能力。本选项只能与-lib_cell一起使用。-dont_scale产生driving_cell_dont_scale布尔属性true给端口。当驱动单元被改变时,端口驱动能力会根据控制条件进行改变。-none去除前一个驱动单元信息-input_transition_rise rtran指定与-from_pin选项相连的输入上升转变时间。使用-input_transiton_rise和-input_transition_fall选项通过截取与-from_pin相关的精确转变时间去获取输出接脚一个更准确的转变时间和延迟时间。初始值为0。-input_transition_fall ftran指定与-from_pin选项相关的输入下降转变时间。初始值为0.-multiply_by factor指定一个倍数,用它来加倍端口的延迟特征。本选项
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1