SDC命令详解:使用report_timing命令进行报告

SDC命令详解:使用report_timing命令进行报告 相关阅读SDC命令详解https://blog.csdn.net/weixin_45791458/category_12931432.html?spm1001.2014.3001.5482目录指定时序路径起点指定时序路径经过点指定时序路径终点指定不报告的路径指定路径类型指定延迟类型指定每个终点报告的最大时序路径数指定每个时序组的最大时序路径数指定在时序路径中显示输入引脚指定显示线网指定显示转换时间指定显示串扰导致的增量延迟指定显示负载总量指定显示有效负载总量指定显示属性值指定显示物理信息指定最小裕量指定最大裕量指定最小延迟指定最大延迟指定报告时序闭环指定启动异步时序弧指定精度指定不换行指定排序顺序指定时序组指定追踪时序借用指定显示时序降额指定显示归一化裕量指定需要报告的场景指定显示温度指定显示电压指定对于同样的一组时序弧组成的时序路径仅报告最差路径指定对于起点和终点相同的时序路径仅报告最差路径指定显示差异指定忽略不可行路径Multicorner-Multimode支持报告中的延迟标志report_timing命令可以给出时序路径时序分析的详细报告其实它并不是一个SDC命令归为此类只是为了方便管理关于时序路径的定义可见下文。静态时序分析典型与非典型时序路径的约束详解一https://chenzhang.blog.csdn.net/article/details/136521221需要注意的是对于该命令而言时序路径的极性例如对于两个由同样的一组时序弧组成的时序路径起点为上升沿翻转和起点为下降沿翻转被认为是不同的时序路径。本文针对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命令优先报告到输出端口的最长路径如果指定了-delay_type min则报告最短路径如果设计具有时序约束且未指定-group选项则优先报告每个时序组中裕量最差的路径如果指定了-group选项则优先报告该时序组中裕量最差的路径。指定时序路径经过点-through选项、-rise_through选项、-fall_through选项需要报告的时序路径的经过点列表它们可以指定多个表示依次经过每个列表中的一个对象的时序路径它们可以以混合使用。-through选项指定了时序路径的经过点它的参数是一个对象列表/集合对于列表而言如果有多于一个对象需要使用引号或大括号包围对使用集合无效。对象可以是端口代表着时序路径经过该端口对象可以是引脚代表着时序路径经过该引脚。-rise_through选项指定了时序路径的上升沿经过点它的参数是一个对象列表/集合对于列表而言如果有多于一个对象需要使用引号或大括号包围对使用集合无效。对象可以是端口代表着时序路径的上升沿经过该端口对象可以是引脚代表着时序路径的上升沿经过该引脚。-fall_through选项指定了时序路径的下降沿经过点它的参数是一个对象列表/集合对于列表而言如果有多于一个对象需要使用引号或大括号包围对使用集合无效。对象可以是端口代表着时序路径的下降沿经过该端口对象可以是引脚代表着时序路径的下降沿经过该引脚。默认情况下不指定以上三类选项如果设计没有时序约束则report_timing命令优先报告到输出端口的最长路径如果指定了-delay_type min则报告最短路径如果设计具有时序约束且未指定-group选项则优先报告每个时序组中裕量最差的路径如果指定了-group选项则优先报告该时序组中裕量最差的路径。指定时序路径终点-to选项、-rise_to选项、-fall_to选项指定了需要报告的时序路径的终点列表每条命令中它们三者只能指定一个并且不能与-fall选项和-rise选项的指定冲突如已经指定了-fall选项则只能指定-fall_to选项因为没有时序路径的终点即是上升沿也是下降沿。-to选项指定了时序路径的终点它的参数是一个对象列表/集合对于列表而言如果有多于一个对象需要使用引号或大括号包围对使用集合无效。对象可以是时钟代表着时序路径的终点是以该时钟触发的触发器数据输入引脚对象可以是端口代表着时序路径的终点是该端口对象可以是引脚代表着时序路径的终点是该引脚例如触发器数据输入引脚。-rise_to选项指定了时序路径的上升沿终点它的参数是一个对象列表/集合对于列表而言如果有多于一个对象需要使用引号或大括号包围对使用集合无效。对象可以是时钟代表着时序路径的终点是以该时钟上升沿触发的触发器数据输入引脚对象可以是端口代表着时序路径的终点是该端口的上升沿对象可以是引脚代表着时序路径的终点是该引脚例如触发器数据输入引脚的上升沿。-fall_to选项指定了时序路径的下降沿终点它的参数是一个对象列表/集合对于列表而言如果有多于一个对象需要使用引号或大括号包围对使用集合无效。对象可以是时钟代表着时序路径的终点是以该时钟下降沿触发的触发器数据输入引脚对象可以是端口代表着时序路径的终点是该端口的下降沿对象可以是引脚代表着时序路径的终点是该引脚例如触发器数据输入引脚的下降沿。注意如果对象列表/集合包含时钟则此时的上升、下降沿指的是时钟对象本身的上升、下降沿而不是到达各触发器时钟引脚的上升、下降沿这里要考虑时钟在时钟路径上传播时可能因为单元的单调性出现翻转。默认情况下不指定以上三类选项如果设计没有时序约束则report_timing命令优先报告到输出端口的最长路径如果指定了-delay_type min则报告最短路径如果设计具有时序约束且未指定-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选项指定每个时序组中在PrimeTime中指的是整个设计中的每个终点报告的最大时序路径数默认为1。指定每个时序组的最大时序路径数-max_paths选项指定每个时序组报告的最大时序路径数量在PrimeTime中如果没指定-group选项指的是整个设计默认与-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选项有效负载总量将显示在线网所在的行而不是输出引脚的行中。指定显示属性值-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选项搜索时序路径后再根据该选项进行筛选。使用该选项时可能出现这种情况当-nworst选项设置的值较小时显示没有路径因为优先报告时序裕量小的时序路径当增大-nworst选项设置的值时报告路径。使用该选项时会给出以下警告。Warning: Worst timing paths might not be returned. (TIM-104)指定最大裕量-slack_lesser_than选项指定仅报告那些时序裕量小于lesser_slack_limit参数的时序路径。需要注意的是与-slack_greater_than选项不同的是这不是一个过滤器选项在PrimeTime中如果选择用PBA模式分析该选项有助于减少运行时间。指定最小延迟-greater_path选项指定仅报告那些延迟大于min_path_delay参数的时序路径。需要注意的是与-slack_greater_than选项相同的是这也是一个过滤器选项对于延迟大但时序裕量也大的时序路径来说也可能出现-slack_greater_than选项中说的那种情况。指定最大延迟-lesser_path选项指定仅报告那些延迟小于max_path_delay参数的时序路径。需要注意的是与-slack_greater_than选项相同的是这也是一个过滤器选项对于延迟小时序裕量大的时序路径来说也可能出现-slack_greater_than选项中说的那种情况。指定报告时序闭环-loops选项指定仅报告存在组合逻辑环(Timing Loop)的时序路径。指定启动异步时序弧-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选项指定忽略在最新的综合过程中被标记为不可行的所有时序路径。Multicorner-Multimode支持默认情况下该命令仅对当前场景生效换句话说只能在当前场景给出时序路径时序分析的详细报告。如果使用-scenarios选项则可以指定需要报告的场景。关于场景的更多介绍可以参考下面的博客。Design Compiler多工艺角和多工作模式(Multicorner-Multimode, MCMM)https://blog.csdn.net/weixin_45791458/article/details/149578771?ops_request_misc%257B%2522request%255Fid%2522%253A%2522e3267dcc7cc26380435f53994dc8b9b8%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257Drequest_ide3267dcc7cc26380435f53994dc8b9b8biz_id0utm_mediumdistribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~rank_v31_ecpm-1-149578771-null-null.nonecaseutm_termMCMMspm1018.2226.3001.4450报告中的延迟标志在时序路径报告中Incr列中的符号会表示该延迟的计算方式如表1所示。表1 延迟的计算方法符号描述PrimeTimeDesign CompilerIC CompilerFusion Compiler IC Compiler II^使用set_ideal_latency命令设置的理想延迟不支持*通过SDF文件反标的延迟或使用read_parasitics命令反标简化的RC网络RC π模型并根据寄生文件的*RC部分反标的延迟通过SDF文件反标的延迟或使用虚拟布线(Virtual Routing)并使用Elmore模型计算的延迟或使用read_parasitics命令反标RC网络计算的延迟可通过-elmore选项或-arnoldi选项指定使用的模型通过SDF文件反标的延迟或使用虚拟布线(Virtual Routing)并使用Elmore模型计算的延迟通过SDF文件反标的延迟针对Block View#不支持由于被识别为高扇出线网而估计产生的延迟由high_fanout_net_threshold变量控制不支持z不支持由于使用set_zero_interconnect_delay_mode命令而进入了零延迟模式该模式下互连负载和延迟均为0不支持使用read_parasitics命令反标RC网络并使用Arnoldi模型计算的延迟不支持使用read_parasitics命令反标RC网络并使用Elmore模型计算的延迟不支持$使用read_parasitics命令反标简化的RC网络RC π模型计算的延迟不支持不支持使用set_load命令或set_resistance命令设置了集总寄生参数后计算的延迟不支持不支持通过HyperScale反标的延迟不支持布线后使用Arnoldi模型计算的延迟不支持w不支持使用虚拟布线(Virtual Routing)并使用AWE模型计算的延迟不支持c不支持布线后使用CCST模型及Arnoldi模型计算的延迟不支持H该段延迟由计算方式不同的互连延迟和单元延迟组成可以使用-input_pins选项分离不支持不支持U不支持标记clock to data引脚的边界需要先将time.enable_clock_to_data_analysis变量设置为trueu不支持通过SDF文件反标的延迟针对Abstract Viewe不支持使用estimate_timing命令后在estimated_corner反标的延迟针对Block ViewA不支持使用estimate_timing命令后在estimated_corner反标的延迟针对Abstract Viewa不支持Abstract View的延迟空使用线负载模型计算的延迟或其他情况