常用时序分析SDC命令参考

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

常用时序分析SDC命令参考
常用时序分析SDC 命令参考(一)
1. Define design environment
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. Set design constraints
2.1. Design rule constraints
2.1.1. Set_max_transition
2.1.2. Set_max_fanout
2.1.
3. Set_max_capacitance
2.2. Design optimization constraints
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. Other commands
3.1. set_clock_groups
3.2. set_false_path
3.3. set_case_analysis
3.4. set_max_delay
1. Do not exist in timing fix SDC file:
1.1. Set_max_area
1.2. set_operation_conditions
1.3. set_wire_load_model
1.4. set_ideal_*
2. Must be placed in timing fix SDC file: 2.1. Set_clock_uncertainty,
2.2. set_max_transition
2.3. set_propagated_clock
set_operating_conditions:定义当前设计的控制条件
语法:
Int set_operating_conditions
[-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 objects]
[condition]
数据类型:
min_condition 列表
max_conditon 列表
objects 列表
condition 列表
参数:
-analysis_type bc_wc | on_chip_variation
设定分析的类型。

两个选项只能选择其中一个。

使用bc_wc或on_chip_variation切换设计到min_max模式。

bc_wc值设定最小(快)最大(慢)控制条件是两个极端的控制条件。

在bc_wc 分析,用最大的控制条件分析SETUP,用最小控制条件分析HOLD。

on_chip_variation 分析分别有最小和最大控制条件表示片上最大偏差的上下限。

对所有最大延迟的路径运用最大控制条件,对所有最小延迟的路径运用最小控制条件。

-min min_condition
指定用于最小延迟分析的控制条件。

如果没有指定,工具默认使用最大控制条件。

-min必须与-max 同时使用。

-max max_condition
指定用于最大延迟分析的控制条件。

-min_library min_lib
指定用于最短延迟分析,并包含有控制条件定义的库。

可以是一个库的名称或集合。

如果是集合,工具将选择集合中首个满足条件的库。

-max_library max_lib
指定用于最大延迟分析,并包含控制条件定义的库。

可以是一个库的名称或集合。

如果是集合,工具将选择集合中首个满足条件的库。

-min_phys min_proc
指定工艺资源名称搜索相匹配的电阻和电容值,用于最小延迟分析。

该选项必须与-max_phys 一起使用。

-max_phys max_proc
指定工艺资源名称搜索相匹配的电阻和电容值,用于最大延迟分析。

该选项必须与-min_phys 一起使用。

-library lib
指定包含控制条件定义的库,用于最小和最大延迟分析。

可以是一个库的名称或集合。

如果是集合,工具将选择集合中首个包含控制条件的库。

-object_list objects
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_conditions WCIND
控制条件’WCIND’在库”my_lib_core”中查找。

使用other_lib_core.db库中BCIND值用于最小延迟分析,WCIND用于最大延迟分析。

other_lib_core.db的库名称为other_lib_core
set_operating_conditions –min BCIND –max WCIND –library other_lib_core
删除当前控制条件设定
set_operating_conditions
更多:
compile, report_lib, reset_design, set_local_link_library, link_library
set_wire_load_model
为设计、端口、当前设计中层次化单元设定wire_load_attach_name属性,选择一个连线模型用于连线电容的计算。

语法:
status set_wire_load_model
-name model_name
[-library lib]
[-min][-max]
[object_list]
数据类型:
model_name 字符
object_list 集合
参数:
-name model_name
指定连线负载模型的名称。

该模型必须是已定义的。

这个选项必须使用。

-library lib
指定包含模型的库。

可以是一个库的名称或集合。

如果是集合,工具将选择集合中首个满足条件的库。

-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作为初始值。

你可以使用set_wire_load_mode重新指定。

对于set_wire_load_mode属性的top, enclosed和segmented 值的定义,可参考set_wire_load_mode命令。

连线电阻及面积也会遵照规则考虑进连线电容的计算。

使用-min选项,你可以使用set_wire_load_model指定一个不同的连线模型用于最小延迟分析。

除非明确的指定,最大最小延迟分析使用相同的连线模型。

你可以设定不同的连线模型指定给设计或端口。

你不可以指定不同的连线模型或模块尺寸仅用于最小延迟分析。

对于这种情况,最大最小分析使用相同的值。

布线面积总是使用与最大延迟分析的相同连线负载来计算。

连线负载模型包含compile估计连线延迟所需要的所有信息。

下面是一个连线负载模型的例子。

w ire_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_lib tech_lib

Wire Loading Model:
NameLibrary ResCap Area Slope Fanout Length
------------------------------------------------------
05x05tech_lib0.00001.00000.00000.1860100.3900
10x10tech_lib0.00001.00000.00000.3110 10.5300

link_library = {tech_lib.db}
set_wire_load_model –name “10x10”
以下范例使用-library 选项指定库my_lib.db中的连线负载模型10x10
set_wire_load_model –name “10x10” –library my_lib.db
current_design LOW
set_wire_load_model –name “10x10”
current_design TOP
set_wire_load_mode enclosed
set_wire_load_model –name “20x20”
set_wire_load_model –name “20x20MIN” -min
以下例子设定子设计LOW没有连线负载模式,让它基于单元面积来选择。

连线负载模式enclosed 和连线负载模型20x20设定给顶层设计,使用-min_block_size选项描述假设对于子设计的一个模块的尺寸至少为200。

current_design LOW /*没有连线负载设定*/
current_design TOP
set_wire_load_mode enclosed
set_wire_load_min_block_size 200.0
set_wire_load_model –name “20x20”
以下命令描述一个端口的外部扇出
set_wire_load_model [get_ports O1] “default_wl”
set_port_fanout_number 5 [get_ports O1]
假设U1,U2和U3是TOP设计中的三个单元,它们都被子设计LOW所引用。

以下命令设定10x10连线模型给LOW,20x20连线模
型给U1和U2。

current_design TOP
set_wire_load_model –name “10x10” LOW
set_wire_load_model –name “20x20” {U1 U2}
更多:
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
为当前设计的输入或输入/出类型的端口设定属性。

指定一个单元或单元的输出端口来驱动特定的端口。

语法:
int set_driving_cell
[-lib_cell lib_cell_name]
[-library lib]
[-rise]
[-fall]
[-min]
[-max]
[-pin pin_name]
[-from_pin from_pin_name]
[-dont_scale]
[-no_design_rule]
[-none]
[-input_transition_rise rtran]
[-input_transition_fall ftran]
[-multiply_by factor]
port_list
[-cell obsolete_-_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选项一起使用,指定上升和下降情况。

应driving_cell_rise, driving_cell_library_rise, driving_cell_pin_rise, 和driving_cell_from_pin_rise 字符属性。

你可与-rise选项一起使用,指定上升和下降情况。

-min
设定驱动单元信息仅用于最小控制条件分析。

-max
设定驱动单元信息仅用于最大控制条件分析。

-pin pin_name
指定驱动单元驱动端口的输出脚。

当你使用-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_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
指定一个倍数,用它来加倍端口的延迟特征。

本选项只能与-lib_cell一起使用。

它作用于端口的负载延迟与转变时间。

它产生driving_cell_multiply_by 浮点属性给端口上特定的因子。

初始值为1.0 。

post_list
指定当前设计要放置驱动单元属性的输入输出端口的列表。

如果不至一个端口要指定,可以使用括号或花括号。

描述:
该命令设定属性给当前设计中指定的输入或双向端口,这些端口连接外部驱动单元。

端口的驱动能力相同,如同指定的驱动单元都是在相同的环境中被连接,以允许端口驱动能力非线性延迟模型的精确建模。

对于CMOS2延迟模型,由端口驱动的接脚的边沿率相同,如同端口驱动单元都被取代了一样。

除非使用-dont_scale 选项,端口驱动能力会根据当前控制条件发生变化。

要显示端口驱动信息,使用report_port命令加-drive选项。

使用characterize命令会基于他们在整个设计中的关系,自动设定子设计端口上驱动单元的属性。

使用remove_driving_cell 或者reset_design命令删除端口驱动单元属性。

remove_driving_cell 命令删除指定端口上任何匹配上升或下降驱动电阻属性(由set_drive命令产生)。

现在认为较好的方式是使用set_driving_cell命令取代set_drive,因为set_driving_cell更准确。

多条件多模式支持:
分配AND2单元驱动力给端口IN1
set_driving_cell –lib_cell AND2 {IN1}
分配tech_lib库中INV单元的Z端的驱动给所有输入端口
set_driving_cell –lib_cell INV –pin Z –library tech_lib [all_inputs]
分配驱动不因控制条件而发生改变
set_driving_cell –lib_cell INV –dont_scale {IN1}
在上升沿情况与下降沿情况分配不同的端口驱动
set_driving_cell –rise –lib_cell BUF1_TS –pin Z
set_driving_cell –fall –lib_cell BUF1_TS –pin Q {IN1}
设定AN2驱动单元给top1 输入端口,并使用由-from_pin选项指定的A上的输入上升转变时间2.3。

set_driving_cell –lib_cell AN2 –input_transition_rise 2.3 –from_pin A top1
更多:
all_inputs, characterize, current_design, remove_driving_cell, report_port, reset_design, set_drive, set_load, set_max_capacitance, set_max_fanout, set_max_transiton, set_min_capacitance, set_port_fanout_number
设定特定端口或连线的load属性。

语法:
status set_load
value
objects
[-subtract_pin_load]
[-min]
[-max]
[[-pin_load] [-wire_load]]
数据类型:
value 浮点
objects 列表
参数:
value
指定端口或连线load属性的值。

注意单位要与技术库的一致。

比如,如果技术库是pf,指定值的单位也必须是pf.
objects
指定当前设计中的端口或连线的列表,给它们设定负载属性。

-subtract_pin_load
指明当前连线接脚的电容值减去value后再设为负载。

如果结果为负将设为0。

该选项产生subtract_pin_load属性。

如果带有这个属性,在update_timing时不计入总负载。

使用该选项,如果value包含接脚或端口电容,subtract_pin_load属性将不会产生。

-min
指明负载是在最小延迟分析时使用。

你不能使用继承选项-fanout_number加-min,因为对于最大最小延迟不支持不同的扇出数。

如果没有指定最小负载值,将使用最大值。

-max
指明用于最大延迟分析的负载值。

有一个值被分配给最小延迟分析,但没有最大延迟分析的值,最小值也会被忽略。

你不能只声明一个最小值给某个连线。

-pin_load –wire_load
指明分配给端口的值是接脚负载,是连线负载,还是两者都是。

这些选项仅能与端口一起使用。

如果objects中包含连线,会报错。

如果你没有指明两者中任意一个,-pin_load作为初始选项。

你可以两个同时使用,一个为接脚负载,一个为连线负载。

描述:
命令在当前设计端口或连线上生成load属性。

如果当前设计是层次化的,它必须已经用link命令进行关联。

连线上总计负载是所有与连线相关的接脚负载、端口负载、连线负载的总和。

指定的value会
取代内部估计的负载值。

使用set_load命令在层次化设计,对下层连线产生作用。

下层连线的命名方式如:BLOCK1/BLOCK2/NET_NAME.
查看端口负载可使用report_port命令。

查看连线负载可使用report_net或report_internal_loads 命令。

重设负载值可使用remove_attribute命令。

重设所有在设计中标注的值,可使用reset_design。

多条件多模式支持:
该命令仅使用当前方案中的信息。

范例:
设定2个单位给端口the_answer
用3倍反相器输入负载加一个预估的2.5单位负载给所有的输出端口
link –all
port_load = 2.5 + 3 * load_of(tech_lib/IV/A)
set_load port_load all_outputs()
将tech_lib库单元IV端口Z上的负载值赋给input_1和input_2 set_load load_of(tech_lib/IV/Z) {input_1 input_2}
将3分配给连线U1/U2/NET3。

如果接脚或端口电容为2,即连线电容标为1。

如果电容不小于3,即标为0。

set_load –subtract_pin_load 3 U1/U2/NET3
设定5单位连线负载给端口the_answer
set_load –wire_load 5 the_answer
描述一个输出端口外部扇出
set_load –fanout_number 5 [get_ports O1]
set_wire_load_model –port_list [get_ports O1] “default_wl”
删除反标属性
remove_attribute [get_ports the_answer] load
remove_attribute [ge t_ports the_answer] “wire_capacitance”
remove_attribute [get_ports O1] “fanout_number”
remove_attribute [get_nets U1/U2/NET3] load
更多:
all_outputs, current_design, load_of, remove_attribute, report_internal_loads, report_net, report_port, reset_design, set_drive, set_wire_load_min_block_size, set_wire_load_mode, set_wire_load_model, set_wire_load_selection_group, target_library
赋值给当前设计中特定的端口,并产生fanout_load 属性。

语法:
int set_fanout_load
value
port_list
数据类型:
Value 浮点
port_list 列表
参数:
value
指定给端口fanout_load 属性的值,端口要在port_list列表中。

注意单位必须与max_fanout 及fanout_load在技术库中用于优化的值的单位保持一致。

port_list
要设定fanout_load属性的端口。

如果不至一个,需要用{} 括起来。

描述:
赋值给当前设计中特定的端口,并产生fanout_load 属性。

compile会尽可能确保总的负载不超过驱动接脚max_fanout限制。

对于某个端口的fanout_load,其初始值为0。

注:双向端口不在最大扇出计算之列。

所以,使用set_fanout_load命令应用于双向端口时,不会对compile产生任何影响。

多条件多模式支持:
该命令仅使用当前方案中的信息。

范例:
设定2个单位的扇出负载给所有的输出端口
set_fanout_load 2 all_outputs()
更多:
all_outputs, compile, remove_attribute, report_port, reset_design, set_max_fanout
设定一个替代库用于最小延迟分析。

语法:
int set_min_library
max_library
-min_version min_library | -none
数据类型:
max_library 字符
min_library 字符
参数:
max_library
指定库文件名称作为link_library或target_library。

这个库仅用作最大延迟分析。

不要为库文件增加路径。

-min_version min_library
指定对应于最大延迟分析的库文件名称用于最小延迟分析。

min_library不应指定在link_library 或target_library中。

库文件名称不包含路径。

-none
取消最小延迟库设定
描述:
Set_min_library命令在两个库之间创建了一个最小/最大关系。

max_library 用于最大延迟分析,min_library用于最小延迟分析。

无论何时工具计算一个最小延迟值,它首先从最大延迟库里寻找库单元。

如果一个单元在最小延迟库有相同名称、相同接脚以及相同
时序弧,最小延迟库中的时序信息将被使用。

如果工具不能从最小延迟库中找到匹配单元,就会使用最大延迟库中的单元。

不要在库文件名称中加入路径。

用$search_path是指定路径。

多条件多模式支持:
该命令不依靠特定方案的信息。

范例:
以下例子是set_min_library通常的用法:
set link_library “LIB_WC_COM.db”
set target_library $link_library
set_min_library LIB_WC_COM.db –min_version LIB_BC_COM.db
set_operating_conditions –max WC_COM –max_library LIB_WC_COM \
–min BC_COM –min_library LIB_BC_COM
report_timing –delay max
report_timing –delay min
更多:
link, set_operating_conditions, link_library, target_library
常用时序分析SDC 命令参考(二)
1. Define design environment
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. Set design constraints
2.1. Design rule constraints
2.1.1. Set_max_transition
2.1.2. Set_max_fanout
2.1.
3. Set_max_capacitance
2.2. Design optimization constraints
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. Other commands
3.1. set_clock_groups
3.2. set_false_path
3.3. set_case_analysis
3.4. set_max_delay
1. Do not exist in timing fix sdc file:
1.1. Set_max_area
1.2. set_operation_conditions
1.3. set_wire_load_model
1.4. set_ideal_*
2. Must be placed in timing fix sdc file: 2.1. Set_clock_uncertainty,
2.2. set_max_transition
2.3. set_propagated_clock
set_max_transition
对指定的时钟组、端口或设计创建max_transition属性。

语法:
int set_max_transition
transition_value
object_list
参数:
transition_value
设定最大转换时间给特定的时钟组、端口或设计。

设定max_transition属性到时钟组、端口或设计上的transition_value。

transition_value 的单位必须与用于优化的库的单位保持一致。

比如,比如库特定的驱动值为kohms,负载值为pf,那么transition_value必须是在ns。

object_list
要分配transiton_value的时钟组、端口及设计名称的列表。

描述:
设定max_transition属性给时钟组、端口及设计。

compile尽可能保证连线的转变时间小于设定值。

连线的最大转变时间定义为单元接脚及设计端口上的最大转换时间的最小值。

全局和局部最大转变时间都有设定时,compile使用更严格的条件。

初始情况下,输入输出端口没有转变限制,所以驱动连线的最大转变时间取决于驱动单元输入或输出的最大转变时间。

分配一个更小的转变时间给端口,连线的最大转变时间就会减小。

那么设计约束也会更严格。

max_transition是设计规则约束。

因此,compile优先于其他约束。

即使,它有悖于设计的优化约束。

max_delay和max_area为优化约束,相应的max_fanout和max_transition为设计规则约束。

设计规则约束影响这些保证功能正确的技术限制,优化约束影响期望的目标和限制,但对于设计的操作都不是决定性的。

设计编译器尽可能达到所有约束,但会在优化阶段优先考虑设计规则约束。

使用report_constraint可以得到优化约束和设计规则约束。

使用remove_attribute 可以删除设计端口上的最大转变时间。

多条件多模式支持:
该命令仅使用当前方案中的信息。

范例:
设定2.0单位给端口late_riser
set_max_transition 2.0 late_riser
设定2.0单位给设计TEST
set_max_transition 2.0 TEST
更多:
all_inputs, all_outputs, characterize, current_design, remove_attribute, report_constraint, reset_design
set_max_fanout
给指定的输入端口或设计设定max_fanout属性。

语法:
int set_max_fanout
fanout_value
object_list
参数:
fanout_value
指定将设定给max_fanout属性的值。

即,最大扇出值。

object_list
指定要设定max_fanout属性的输入端口或设计的列表。

描述:
给指定的输入端口或设计设定max_fanout属性。

compile尽可能确保总计fanout_load小于设定的值。

扇出数没有最大初始值,但技术库中设定了max_fanout属性。

全局和局部都有设定时,compile使用更严格的条件。

通常,设计规则约束是影响保障功能正确的技术规格约束。

优化约束是设计目标与非关键性合理限制。

设计编译器尽可能达到所有约束,但会在优化阶段优先考虑设计规则约束。

使用report_constraint可以得到优化约束和设计规则约束。

使用remove_attribute 可以删除设计端口上的最大扇出限制。

reset_design可以删除当前设计所有属性,包括max_fanout。

多条件多模式支持:
该命令仅使用当前方案中的信息。

范例:
给端口going_places设定20.0单位最大扇出
set_max_fanout 20.0 going_places
设计18.5单位给设计TEST
set_max_fanout 18.5 TEST
更多:
all_inputs, current_design, remove_attribute, report_constraint, report_port, reset_design, set_fanout_load ############################################# ############################### set_max_capacitance 为端口或设计设定max_capacitance属性
语法:
int set_max_capacitance
capacitance_value
object_list
参数:
capacitance_value
设定max_capacitance的值。

capacitance_value的单位必须与技术库一致。

比如,如果库电容值单位为pf, 则该值也必须为pf。

object_list
要设定max_capacitance属性的端口或设计的名称列表
描述:
设定max_capacitance属性给端口或设计。

compile尽可能确保连线电容小于设定的值。

最大
如果max_capacitance属性已经存在在技术库中,compile 会自动满足约束。

缺省情况下,端口或设计没有max_capacitance约束。

该命令的max_capacitance属性不能赋值给输出或双向端口。

max_capacitance, max_fanout 以及max_transition 为设计规则约束。

max_delay和max_area 为优化约束。

设计规则约束必须要满足,因为它关系到设计功能的正确性。

优化约束是期望值,并非设计操作的关键因素。

design compiler尽可能满足所有约束,但设计规则约束优先与优化约束。

因此,compile 处理时,max_capacitance 优先于其他约束,即使它有可能不利于设计优化。

显示约束信息可以使用report_constraint命令。

显示端口约束可以使用report_port命令。

删除max_capacitance属性使用remove_attribute命令。

多条件多模式支持:
该命令仅使用当前方案中的信息。

范例:
给端口later_rise和设计TEST 设置2.0单位max_capacitance 属性。

set_max_capacitance 2.0 later_riser
set_max_capacitance 2.0 TEST
更多:
all_inputs, all_outputs, characterize, current_design, remove_attribute, report_constraint, report_port, reset_design, set_min_capacitance
############################################# ############################### create_clock 在当前设计中创建一个时钟
语法:
status create_clock
[-name clock_name]
[-add]
[source_ojbects]
[-period period_value]
[-waveform edge_list]
数据类型:
clock_name 字符
source_objects 列表
period_value 浮点
edge_list 列表
参数:
-name clock_name
指定时钟名称。

如果你不使用该选项,时钟名称将会与第一个时钟源在source_objects指定的一样。

如果你没有使用souce_objects,你就必须使用本选项,它会创建一个与端口或接脚无关的虚拟时钟。

本选项与source_objects一起使用可以为时钟增加一个描述性的名称。

如果你使用-add 选项,你必须使用-name选项,并且要为有相同源的时钟分配不同的名称。

-add
指明是否将该时钟加到已存在的时钟中或将其覆盖。

使用本选项抓取有相同源不同波形,进行同时分析的复合时钟。

你使用该选项时,必须使用-name选项。

定义在相同源接脚或端口的复合时钟相比一个单一时钟,会导致更长的运行时间和更高的内存占用。

因为时序综合引擎必须搜索所有开始和截取组合的可能性。

使用set_false_path命令限制不期望的组合。

该选项在默认为关闭,除非
指定应用于时钟的接脚或端口的列表。

如果你没有使用本选项,你必须使用-name clock_name ,它会创建一个与接脚或端口无关的虚拟时钟。

如果你指定的时钟已经在接脚上了,旧的时钟会被取代,除非你增加-add选项。

-period period_value
以库时间单位指定时钟波形的周期。

-waveform edge_list
以库时间单位指定整个时间周期中时钟的上升或下降沿时间。

列表中第一个时间是上升转换,通常第一个上升转换在时间零点之后。

这里增加次数必须是偶数,并且它们假定为交替的上升和下降时间。

数值上,为一个完整时钟周期。

如果-waveform edge_list没有设定,但有-period period_value,默认情况,波形假定为一个0.0上升沿和一个period_value/2下降沿。

描述:
create_clock命令在当前设计中创建一个时钟。

该命令在当前设计中定义指定的source_objects 作为时钟源。

一个接脚或端口可以成为一个单时钟源。

如果source_objects没有指定,但clock_name给定,一个虚拟时钟会被创建。

一个虚拟时钟可以被创建,代表一个片外时钟用于描述输入或输出延迟。

更多关于输入和输出延迟的信息,可以阅读set_input_delay和set_oupt_delay 参考。

时钟影响到时钟网络的属性,比如dont_touch_network, fix_hold和propagated_clock。

使用create_clock在已存在的时钟上会覆盖时钟上已有的属性。

create_clock也同时定义时钟波形。

时钟允许每个周期多脉冲形式。

建立和保持路径延迟是从时钟波形路径的起点到终点自动衍生的。

fix_hold属性(用set_fix_hold设定)指导compile修复时钟保持(hold) 错误。

默认状态,时钟对应一组路径。

该组与时钟相关的终点用于估算函数的计算。

要将时钟从分配的组中删除,使用group_path命令分配时钟到另一个组或默认路径组。

更多的信息可参考group_path命令帮助。

新的时钟有理想时序,不能通过时钟网络传播延迟。

使用set_propagated_clock命令让时钟能够进行延迟传播。

要添加偏差(skew)和不确定因素(uncertainty)到理想波形中,使用set_clock_latency或set_clock_uncertainty 命令。

显示当前设计中所有时钟源信息,使用report_clock命令。

得到时钟源列表,使用get_clocks 命令。

返回所有与特定时钟相关的序列单元,使用all_registers命令。

取消create_clock,使用remove_clock命令。

多条件多模式支持:。

相关文档
最新文档