相关阅读
静态时序分析https://blog.csdn.net/weixin_45791458/category_12567571.html?spm=1001.2014.3001.5482
目录
指定时序路径起点
指定时序路径经过点
指定时序路径终点
指定不报告的路径
指定路径类型
指定延迟类型
指定每个终点报告的最大时序路径数
指定每个时序组的最大时序路径数
指定在时序路径中显示输入引脚
指定显示线网
指定显示转换时间
指定显示串扰导致的增量延迟
指定显示电容
指定显示有效电容
指定显示属性值
指定显示物理信息
指定最小裕量
指定最大裕量
指定最小延迟
指定最大延迟
指定报告时序闭环
指定启动异步时序弧
指定精度
指定不换行
指定排序顺序
指定路径组
指定追踪时序借用
指定显示时序降额
指定显示归一化裕量
指定需要报告的场景
指定显示温度
指定显示电压
指定对于同样的一组时序弧组成的时序路径仅报告最差路径
指定对于起点和终点相同的时序路径仅报告最差路径
指定显示差异
指定忽略不可行路径
报告中的线网延迟标志
report_timing命令可以给出时序路径时序分析的详细报告,关于时序路径的定义,可见该文静态时序分析:典型与非典型时序路径的约束详解(一)。需要注意的是,对于该命令而言,时序路径的极性,例如对于两个由同样的一组时序弧组成的时序路径,起点为上升沿翻转和起点为下降沿翻转被认为是不同的时序路径。
本文针对Design Compiler,但该命令同样存在于PrimeTime、IC Compiler等工具中,它们大致相同,略有差别。report_timing命令的BNF范式(有关BNF范式,可以参考以往文章)为:
report_timing
[-from from_list | -rise_from rise_from_list | -fall_from fall_from_list]
[-through through_list] [-rise_through rise_through_list] [-fall_through fall_through_list]
[-to to_list | -rise_to rise_to_list | -fall_to fall_to_list]
[-exclude exclude_list | -rise_exclude rise_exclude_list | -fall_exclude fall_exclude_list]
[-path_type short | full | full_clock | full_clock_expanded | only | end]
[-delay_type min | min_rise | min_fall | max | max_rise | max_fall]
[-nworst paths_per_endpoint] [-max_paths max_path_count]
[-input_pins]
[-nets]
[-transition_time]
[-crosstalk_delta]
[-capacitance]
[-effective_capacitance]
[-attributes]
[-physical]
[-slack_greater_than greater_slack_limit] [-slack_lesser_than lesser_slack_limit]
[-lesser_path max_path_delay] [-greater_path min_path_delay]
[-loops]
[-enable_preset_clear_arcs]
[-significant_digits digits]
[-nosplit]
[-sort_by group | slack]
[-group group_name]
[-trace_latch_borrow]
[-derate]
[-normalized_slack]
[-scenarios scenario_list]
[-temperature]
[-voltage]
[-unique_pins]
[-start_end_pair]
[-variation]
[-ignore_infeasible_paths]
//注:该命令的选项和参数顺序任意
指定时序路径起点
-from选项、-rise_from选项、-fall_from选项指定了需要报告的时序路径的起点列表,每条命令中它们三者只能指定一个(因为这些指定路径的选项表示都要满足,而不是满足其一即可,所以不能即是上升沿也是下降沿)。
-from选项指定了时序路径的起点,它的参数是一个对象列表,如果有多于一个对象,需要使用引号或大括号包围。对象可以是时钟,代表着时序路径的起点是以该时钟触发的触发器时钟引脚;对象可以是端口,代表着时序路径的起点是该端口;对象可以是引脚,代表着时序路径的起点是该引脚(例如触发器时钟引脚)。
-rise_from选项指定了时序路径的上升沿起点,它的参数是一个对象列表,如果有多于一个对象,需要使用引号或大括号包围。对象可以是时钟,代表着时序路径的起点是所有以该时钟上升沿触发的触发器时钟引脚(这里要考虑时钟在时钟路径上传播时可能因为单元的单调性出现翻转,即以到达触发器时钟引脚的时钟信号上升沿为准);对象可以是端口,代表着时序路径的起点是该端口的上升沿;对象可以是引脚,代表着时序路径的起点是该引脚(例如触发器时钟引脚)的上升沿。
-fall_from选项指定了时序路径的下降沿起点,它的参数是一个对象列表,如果有多于一个对象,需要使用引号或大括号包围。对象可以是时钟,代表着时序路径的起点是所有以该时钟下降沿触发的触发器时钟引脚(这里要考虑时钟在时钟路径上传播时可能因为单元的单调性出现翻转,即以到达触发器时钟引脚的时钟信号下降沿为准);对象可以是端口,代表着时序路径的起点是该端口的下降沿。
默认情况下(不指定以上三类选项):如果设计没有时序约束,则report_timing命令优先报告到输出端口的最长路径;如果设计具有时序约束,且未指定-group选项,则优先报告每个路径组中裕量最差的路径;如果指定了-group选项,则优先报告该路径组中裕量最差的路径。
指定时序路径经过点
-through选项、-rise_through选项、-fall_through选项需要报告的时序路径的经过点列表,它们可以指定多个,表示依次经过每个列表中的一个对象的时序路径,它们可以以混合使用。
-through选项指定了时序路径的经过点,它的参数是一个对象列表,如果有多于一个对象,需要使用引号或大括号包围。对象可以是端口,代表着时序路径经过该端口;对象可以是引脚,代表着时序路径经过该引脚。
-rise_through选项指定了时序路径的上升沿经过点,它的参数是一个对象列表,如果有多于一个对象,需要使用引号或大括号包围。对象可以是端口,代表着时序路径的上升沿经过该端口;对象可以是引脚,代表着时序路径的上升沿经过该引脚。
-fall_through选项指定了时序路径的下降沿经过点,它的参数是一个对象列表,如果有多于一个对象,需要使用引号或大括号包围。对象可以是端口,代表着时序路径的下降沿经过该端口;对象可以是引脚,代表着时序路径的下降沿经过该引脚。
默认情况下(不指定以上三类选项):如果设计没有时序约束,则report_timing命令优先报告到输出端口的最长路径;如果设计具有时序约束,且未指定-group选项,则优先报告每个路径组中裕量最差的路径;如果指定了-group选项,则优先报告该路径组中裕量最差的路径。
指定时序路径终点
-to选项、-rise_to选项、-fall_to选项指定了需要报告的时序路径的终点列表,每条命令中它们三者只能指定一个,并且不能与-fall选项和-rise选项的指定冲突(如已经指定了-fall选项,则只能指定-fall_to选项,因为没有时序路径的终点即是上升沿也是下降沿)。
-to选项指定了时序路径的终点,它的参数是一个对象列表,如果有多于一个对象,需要使用引号或大括号包围。对象可以是时钟,代表着时序路径的终点是以该时钟触发的触发器数据输入引脚;对象可以是端口,代表着时序路径的终点是该端口;对象可以是引脚,代表着时序路径的终点是该引脚(例如触发器数据输入引脚)。
-rise_to选项指定了时序路径的上升沿终点,它的参数是一个对象列表,如果有多于一个对象,需要使用引号或大括号包围。对象可以是时钟,代表着时序路径的终点是以该时钟上升沿触发的触发器数据输入引脚(这里要考虑时钟在时钟路径上传播时可能因为单元的单调性出现翻转,即以到达触发器时钟引脚的时钟信号上升沿为准);对象可以是端口,代表着时序路径的终点是该端口的上升沿;对象可以是引脚,代表着时序路径的终点是该引脚(例如触发器数据输入引脚)的上升沿。
-fall_to选项指定了时序路径的下降沿终点,它的参数是一个对象列表,如果有多于一个对象,需要使用引号或大括号包围。对象可以是时钟,代表着时序路径的终点是以该时钟下降沿触发的触发器数据输入引脚(这里要考虑时钟在时钟路径上传播时可能因为单元的单调性出现翻转,即以到达触发器时钟引脚的时钟信号下降沿为准);对象可以是端口,代表着时序路径的终点是该端口的下降沿;对象可以是引脚,代表着时序路径的终点是该引脚(例如触发器数据输入引脚)的下降沿。
默认情况下(不指定以上三类选项):如果设计没有时序约束,则report_timing命令优先报告到输出端口的最长路径;如果设计具有时序约束,且未指定-group选项,则优先报告每个路径组中裕量最差的路径;如果指定了-group选项,则优先报告该路径组中裕量最差的路径。
指定不报告的路径
-exclude选项、-rise_exclude选项、-fall_exclude选项指定了阻止报告的时序路径的起点、经过、终点列表,每条命令中它们三者只能指定一个(因为这些指定路径的选项表示都要满足,而不是满足其一即可,所以不能即是上升沿也是下降沿)。
-exclude选项指定了时序路径的起点、经过、终点,它的参数是一个对象列表,如果有多于一个对象,需要使用引号或大括号包围。对象可以是端口,代表着时序路径的起点、经过、终点是该端口;对象可以是引脚,代表着时序路径的起点、经过、终点是该引脚;对象可以是线网,代表着时序路径的起点、经过、终点是该线网;对象可以是单元,代表着时序路径的起点、经过、终点在该单元上。
-rise_exclude选项指定了时序路径的上升沿起点、经过、终点,它的参数是一个对象列表,如果有多于一个对象,需要使用引号或大括号包围。对象可以是端口,代表着时序路径的起点、经过、终点是该端口的上升沿;对象可以是引脚,代表着时序路径的起点、经过、终点是该引脚的上升沿;对象可以是线网,代表着时序路径的起点、经过、终点是该线网的上升沿;对象可以是单元,代表着时序路径的起点、经过、终点在该单元上的上升沿。
-fall_exclude选项指定了时序路径的下降沿起点、经过、终点,它的参数是一个对象列表,如果有多于一个对象,需要使用引号或大括号包围。对象可以是端口,代表着时序路径的起点、经过、终点是该端口的下降沿;对象可以是引脚,代表着时序路径的起点、经过、终点是该引脚的下降沿;对象可以是线网,代表着时序路径的起点、经过、终点是该线网的下降沿;对象可以是单元,代表着时序路径的起点、经过、终点在该单元上的下降沿。
此类选项的优先级高于指定时序路径起点、经过点、终点类的选项。此排除规则不适用于时钟路径,不适用于-trace_latch_borrow选项中的借用路径,不适用于时钟引脚。
指定路径类型
-path_type选项指定报告路径的类型,它的参数可以是short、full、full_clock、full_clock_expanded、only和end中的一个。
short参数表示仅显示时序路径的起点和终点。
full参数表示显示完整时序路径(默认情况)。
full_clock参数表示显示时钟路径,一般用于时钟类型为传播时钟,此时如果不使用该参数,时钟路径上的延迟之和会统计为clock network delay一项。
full_clock_expanded参数表示显示时钟路径上的主时钟路径,一般用于时钟类型为生成传播时钟,此时如果不使用该参数,时钟路径上的延迟之和会统计为clock network delay一项;即使使用使用full_clock参数,主时钟到传播时钟的延迟会与主时钟源延迟一起统计为clock source latency。关于理想时钟、传播时钟、生成时钟的相关内容,可见该文静态时序分析:ideal_clock、propagated_clock以及generated_clock的关系及其延迟计算规则(一)
only参数表示仅显示时序路径,不包含数据时间要求和裕量计算。
end参数表示报告将采用列格式,每条路径占据一行,仅显示路径的终点、总延迟、所需时间和裕量。
指定延迟类型
-delay_type选项指定报告路径延迟的类型,它的参数可以是min、min_rise、min_fall、max、max_rise、max_fall之中的一个。
min参数表示报告最小延迟时序路径(一般情况下指的是保持时间检查)。
min_rise参数表示报告最小延迟时序路径,且时序路径终点为上升沿。
min_fall参数表示报告最小延迟时序路径,且时序路径终点为下降沿。
max参数表示最大延迟时序路径(一般情况下指的是建立时间检查)(默认情况)。
max_rise参数表示报告最大延迟时序路径,且时序路径终点为上升沿。
max_fall参数表示报告最大延迟时序路径,且时序路径终点为下降沿。
指定每个终点报告的最大时序路径数
-nworst选项指定每个时序组中的每个终点报告的最大时序路径数,默认为1。
指定每个时序组的最大时序路径数
-max_paths选项指定默认情况下每个路径组报告的最大时序路径数量,默认与-nworst选项大小相同(当未指定-nworst选项,默认为1)。当 timing_report_fast_mode变量设置为true时,指的是要报告的整个设计中的最大时序路径数量。
指定在时序路径中显示输入引脚
-input_pins选项指定在时序路径报告中显示输入引脚,默认情况下仅显示输出引脚,使用该选项能显示引脚的线网延迟(通过输出引脚到输入引脚的延迟推断出)。
指定显示线网
-nets选项指定在时序路径报告中显示线网及其扇出数,默认情况下不显示线网,但该选项无法显示线网延迟,如果要显示线网延迟,需要使用-input_pins选项。
指定显示转换时间
-transition_time选项指定在时序路径报告中显示引脚的转换时间,默认情况下不显示转换时间。
指定显示串扰导致的增量延迟
-crosstalk_delta选项指定在时序路径报告中显示输入引脚由串扰导致的增量延迟,默认情况下不显示由串扰导致的增量延迟。
指定显示电容
-capacitance选项指定在时序路径报告中显示输出引脚的总(集总)电容,默认情况下不显示输出引脚的总电容,如果同时使用了-nets选项,电容值将显示在线网所在的行,而不是输出引脚所在的行。
总电容为线网的线网电容和引脚电容之和(如果使用线负载模式,则线网电容由线负载模型得到;如果使用拓扑模式,线网电容由DC通过虚拟布线(Virtual Routing)的曼哈顿距离得到),使用report_net命令也可以得到总电容。
关于线网电容和引脚电容的相关信息,可见该文静态时序分析:SDC约束命令set_load详解,关于拓扑模式的相关信息,可见该文Design Compiler:什么是拓扑技术(Topographical)?。
指定显示有效电容
-effective_capacitance选项指定在时序路径报告中显示通过Arnoldi方法计算的网络有效电容,默认情况下不显示有效电容,对于每个输出引脚,在所有驱动弧中选择最差情况显示最大的有效电容,如果同时使用了-nets选项,有效电容将显示在线网所在的行,而不是输出引脚的行中。需要注意的是,只有通过Arnoldi方法计算的电容值才会显示。
指定显示属性值
-attributes选项指定在时序路径报告中显示timing_report_attributes变量中设置的属性值,默认情况下不显示这些属性值,该变量的默认值为{dont_touch dont_use map_only size_only ideal_net infeasible_paths},不支持这些属性外的其他属性,同时要注意这些属性不是所有对象都有,比如只有线网才能拥有ideal_net属性。
指定显示物理信息
-physical选项指定在时序路径报告中显示引脚的位置以及线网的电容(需要同时使用-nets选项),默认情况下不显示这些物理信息。电容以中括号包围一对数值的形式显示,第一个值表示线网电容,第二个值表示总电容,如果无法确定引脚位置,则引脚所属单元的位置,并以微米为单位提供坐标信息。
指定最小裕量
-slack_greater_than选项指定仅报告那些时序裕量大于greater_slack_limit参数的时序路径。需要注意的是,这是一个过滤器选项,是在根据其他选项(例如-nworst选项和-max_paths选项)搜索时序路径后再根据该选项进行筛选。
指定最大裕量
-slack_lesser_than选项指定仅报告那些时序裕量小于lesser_slack_limit参数的时序路径。需要注意的是,这是一个过滤器选项,是在根据其他选项(例如-nworst选项和-max_paths选项)搜索时序路径后再根据该选项进行筛选。
指定最小延迟
-greater_path选项指定仅报告那些延迟大于min_path_delay参数的时序路径。需要注意的是,这是一个过滤器选项,是在根据其他选项(例如-nworst选项和-max_paths选项)搜索时序路径后再根据该选项进行筛选。
指定最大延迟
-lesser_path选项指定仅报告那些延迟小于max_path_delay参数的时序路径。需要注意的是,这是一个过滤器选项,是在根据其他选项(例如-nworst选项和-max_paths选项)搜索时序路径后再根据该选项进行筛选。
指定报告时序闭环
-loops选项指定仅报告时序闭环的时序路径。
指定启动异步时序弧
-enable_preset_clear_arcs选项指定启动异步复位/置位时序弧,默认情况下,只有同步时序弧会被考虑。
指定精度
-significant_digits选项指定时序路径报告中的数值小数点右侧位置,允许的值范围是0到13,默认值为2,使用此选项将覆盖由report_default_significant_digits变量设置的值。
指定不换行
-nosplit选项指定时序路径报告不会自动换行,即使某个字段的信息超出了列的固定宽度。设计中的大部分信息都被组织成定宽的列(即每一列的宽度是固定的),如果某个字段的内容过长超出当前列的宽度,默认情况下,后面的字段会在下一行显示,并对齐到相应的列位置。如果使用了-nosplit选项,则后面的字段无法对齐,这样做的目的是方便软件从报告中提取信息。
指定排序顺序
-sort_by选项指定时序路径报告的排序顺序,它的参数可以是group和slack之中的一个。
group参数(默认情况)表示首先在时序组之间以组名排序,在时序组内以裕量从小到大排序。
slack参数表示仅按裕量排序。
指定路径组
-group选项指定需要报告的时序组,该选项不能与-loops选项一起使用。
指定追踪时序借用
-trace_latch_borrow选项指定起点为透明锁存器的时序路径的报告类型。如果时序路径的起点借用了前一个阶段,使用此选项将导致时序报告显示到达借用锁存器的整个借用路径集,起始于非借用路径或非反转时序环。默认情况下,报告仅显示所有借用阶段中的最后一条路径。
每个阶段会单独报告,显示借用和借出时间以及阶段的端点。报告中不包括沿着阶段序列借用时间的累计值。-input_pins、-nets、-transition_time、-capacitance和-significant_digits选项适用于所有借用路径的每个阶段,但其余选项(例如-from)仅适用于最后的阶段。
指定显示时序降额
-derate选项指定在时序路径报告中显示时序降额,默认情况下,不显示降额值。当使用此选项时,-input_pins和-nets选项会自动开启,需要注意的是,输入延迟和理想时钟的网络延迟不会进行降额处理。
时序降额可以通过set_timing_derate命令设置,这是为了模拟片上变化(OCV)。
指定显示归一化裕量
-normalized_slack选项指定使用归一化裕量进行收集和排序,归一化裕量通过裕量除以理想化的允许传播延迟得到,使用此选项前需要将timing_enable_normalized_slack变量设置为true。
normalized_slack = path_slack / idealized_allowed_propagation_delay_for_path
使用理想的时钟边缘来计算时序路径的允许传播延迟,忽略了建立时间、时钟不确定度和时钟延迟。归一化裕量分析可用于确定限制时钟频率的路径,归一化裕量报告会优先列出违反时序余量且允许的时钟周期较少的路径,首先修复这些路径,将对时钟周期的改善效果最大。
需要注意的是,只要将timing_enable_normalized_slack变量设置为true,即使没有-normalized_slack选项,时序报告中也会有归一化裕量,只是不会按照它进行收集和排序。
指定需要报告的场景
-scenarios选项指定需要报告的场景,用于Multicorner-Multimode模式,默认情况下,仅报告当前场景。
指定显示温度
-temperature选项指定在时序路径报告中显示操作环境温度,用于UPF Mode模式(多电压域),默认情况下,不显示温度。
指定显示电压
-voltage选项指定在时序路径报告中显示操作环境电压,用于UPF Mode模式(多电压域),默认情况下,不显示电压。当宏单元、开关单元或PAD单元的操作环境是从其他库单元推断出来时,报告中的电压值旁会显示波浪号(~)。
指定对于同样的一组时序弧组成的时序路径仅报告最差路径
-unique_pins选项指定仅报告通过同样的一组时序弧组成的时序路径的最差时序路径。例如,如果最差路径从上升沿开始,则以下降沿开始的时序路径将不会被报告。对于像XOR门这样的非单调性逻辑,这将大大减少了报告路径的数量。使用此选项可能会增加运行时间,尤其是与-nworst n选项一起使用时,因为需要分析许多路径以找出同样的一组时序弧组成的时序路径中的最差路径。
指定对于起点和终点相同的时序路径仅报告最差路径
-start_end_pair选项指定仅报告起点和终点相同的时序路径的最差时序路径。例如,如果最差路径从寄存器时钟引脚ff1/CK开始,并在寄存器输入引脚ff5/D结束,则报告将省略所有从ff1/CK到ff5/D的不那么关键的路径。使用此选项可能会增加运行时间,尤其是与-nworst n选项一起使用时,因为需要分析许多路径以找出同样的一组时序弧组成的时序路径中的最差路径。
指定显示差异
-variation选项指定在时序路径报告中显示统计时间增量的均值和标准偏差,默认情况下,统计参数不会报告。此选项仅在通过将timing_pocvm_enable_analysis变量设置为true,启用了参数化片上变化(POCV)分析时有效。
指定忽略不可行路径
-ignore_infeasible_paths选项忽略在最新编译过程中标记为不可行的所有时序路径。
报告中的线网延迟标志
在时序路径报告中,线网延迟通过Incr列中的字符符号表示,如表1所示。
表1 互联延迟的计算方法
^ | 理想网络延迟 |
* | 通过SDF文件进行的延迟反标注 |
& | 使用Elmore模型通过RC网络反标计算延迟 |
# | 由于高扇出网络而估计的延迟 |
z | 由于使用set_zero_interconnect_delay_mode命令而没有延迟 |
空 | 使用线负载模型计算延迟或没有延迟 |