report_timing
[-clock_from edge_from {lead | trail}]]
[-clock_to clk_signame_list] [-edge_to {lead | trail}]]
[-rise | -fall]
[-early | -late]
[-hpin]
[-check_type {setup | hold | pulse_width | clock_period |clock_gating_setup
| clock_gating_hold | clock_gating_pulse_width | data_setup | data_hold |recovery | removal | clock_separation
| skew | no_change_setup | no_change_hold}
[–debug {time_borrow | unconstrained}]
[-max_paths integer | [-nworst integer ]
| -begin_end_pair]
[{-from | -from_rise | -from_fall} pin_list ]
[{-through | -through_rise | -through_fall} pin_list ]
[{-not_through | -not_rise_through |-not_fall_through} object_list ]
[{-to | -to_rise | -to_fall} pin_list ]
[-point_to_point]
[-check_clocks]
[-path_group groupname_list ]
[-path_exceptions {applied | ignored | all}]
[-net]
[-unique_pins]
[-path_type {end | summary | full | full_clock | end_slack_only |summary_slack_only}]
[-max_slack float ]
[-min_slack float ]
| -unconstrained [-delay_limit float ]
]
[-view { viewName }]
[-format column_list ]
[-collection]
[-machine_readable ]
report_timing是平时分析timing时用得最多的一个命令,它可以报出一条完整path的详细timing信息。前文有介绍过timing report的格式
【Innovus/Encounter时序报告解读】
大家看完上面这篇文章后,应该能更好地理解report_timing这个命令
-clock_from 指定source clock, 只报出以该clock作为source clock的path,见例子1
-clock_to指定traget clock, 只报出以该clock作为target clock的path,见例子1
-edge_from {lead | trail} 指定source clock的edge, leading还是trailing,只报出该edge下的path,用在-clock_from上,见例子2
-edge_to {lead | trail} 指定target clock的edge,leading还是trailing,只报出该edge下的path,用在-clock_to上,见例子2
-rise | -fall 指定endpoint上的edge是rise还是fall,只报出符合这种情况的path,见例子3
-early | -late报出用于hold分析的early path, 以及setup分析的late path,见例子4。early path以及late path的区别,如下图所示:
-hpinhpin字栏里如果是hierarchical pin,就在生成的report中显示hpin字样,见例子5
-check_type 报出指定检查类型的path,检查的类型包括以下几种
setup | hold |pulse_width | clock_period | clock_gating_setup | clock_gating_hold |clock_gating_pulse_width | data_setup | data_hold | recovery | removal |clock_separation | skew | no_change_setup | no_change_hold
具体每种类型介绍可以参考
【每天学命令 】
–debug {time_borrow | unconstrained} 这个可以报出具体time borrow或者unconstrained的原因,见例子6
-max_paths 报出指定数量的相同end point的path timing情况,比如说:-max_paths 10就是报出10条最差的相同end point上的path timing情况。
-nworst报出指定数量的不同end point的path timing情况,比如说:-nworst 10就是报出10条最差的不同end point上的path timing情况。
-begin_end_pair对同一个start point和end point的path来说,只报出一条path
-from |-from_rise | -from_fall 报出以指定pin上为起点的path,可以通过-from_rise或者-from_fall来控制起点的edge
-through | -through_rise | -through_fall 报出经过指定pin的path,可以通过-through_rise或者-through_fall来控制经过pin的edge
-not_through | -not_rise_through | -not_fall_through 报出不经过指定pin的path,可以通过-not_rise_through或者-not_fall_through来控制不经过该pin的edge
-to | -to_rise | -to_fall 报出以指定pin为终点的path, 可以通过-to_rise或者-to_fall来控制终点的edge
-point_to_point 报出design中累计的arrival time,见例子7
-check_clocks生成clock capture path上的具体timing report信息, 而不是传统的data path上的delay,见例子8
-path_group报出指定path group上的timing信息,见例子9
-path_exceptions {applied | ignored | all} 在timing report的最后加上path exception情况,applied代表报出path honor的path exception,类似自己设置的path exception可以被报出来那种;ignore代表报出path ignore掉的path exception,类似设置了好几种path exception,有几条被忽略了这种;all代表两种都报出来,见例子10
-net 把net的delay也报出来,会在timing format里多生成一栏,见例子11
-unique_pins对同一个start point和end point的pin来说,只报出一条path上的timing信息,见例子12
-path_type根据path类型指定生成的timing report, 一共有以下几种
end:生成的report只含有endpoint, cause, slack, arrival time, required time, phase和view信息,这是简化版的report,见例子13
summary: 生成的report只含有start point, endpoint, cause, slack, arrival time, required time, phase和view信息,见例子13
full:生成的report中含有整个clock launch path上的timing信息,这是默认的timing report格式,见例子13
full_clock:生成的report中会报出整个clock capture path上的timing信息,见例子13
end_slack_only:只报出endpoint上的slack值,见例子13
summary_slack_only:只报出beginpoint,endpoint上的slack值,见例子13
-max_slack:报出slack小于指定数值的timing path信息
-min_slack:报出slack大于指定数值的timing path
-unconstrained: 报出unconstrained的timing path. 如果path找不到对应的require time. 那该条path就称为unconstrained path,见例子14
-delay_limit : 指定unconstrained path的delay上限
-view : 指定报出哪个analysis view下的timing情况
-format column_list:指定生成的timing report的格式,我们可以选择想要显示的列,所有的可以显示的列如下:adjustment, annotation, aocv_adj_stages, aocv_derate, arc, arrival, arrival_mean, arrival_sigma, arrival_sensitivity, arrival_sigma, cell, delay, delay_mean, delay_sigma, delay_sensitivity, delay_sigma, direction, edge, fanin, fanout, hpin, incr_delay, instance, instance_location, load, net, phase, phys_info, pin, pin_load, pin_location,power_domain, required, retime_delay, retime_incr_delay, retime_slew, slew,stage_count, stolen, transition, timing_point, total_derate, user_derate, voltage, when_cond, wire_load,见例子15
-collection返回timing path的指针,对于tcl指定很有用,见例子16
-machine_readable生成一个global timing debugger可以使用的文件
SSTA有关的那几个就不介绍了,暂时不是很懂
例子:
1. report_timing -clock_from CLK1 -clock_to CLK2 -max 100
Path 1: MET Setup Check with Pin ff6/CK
Endpoint: ff6/D (^) checked with leading edge of 'CLK2'(target clk)
Beginpoint: ff3/Q (^) triggered by leading edge of 'CLK1' (sourceclk)
2. report_timing -early -clock_from CLK2 -clock_to CLK2 -edge_to lead -edge_from trail -max_path 100
Path 1: MET Early External Delay Assertion
Endpoint: out (^) checked with leading edge of 'CLK2'
Beginpoint: sub1/FF1/Q (^) triggered by trailing edge of 'CLK2'
Path Groups: {CLK2}
3. report_timing -from in1 -clock_from CLK -rise
Path 1: VIOLATED Setup Check with Pin ff1/CKN
Endpoint: ff1/D (^) checked with trailing edge of 'CLK2'
Beginpoint: in1 (^) triggered by leading edge of 'CLK'
4. -early
<CMD> report_timing -from in1 -clock_from CLK -rise -early
Path 1: MET Hold Check with Pin ff1/CKN
Endpoint: ff1/D (^) checked with trailing edge of 'CLK2'
Beginpoint: in1 (^) triggered by leading edge of 'CLK'
-late
<CMD> report_timing -from in1 -clock_from CLK -rise -late
Path 1: VIOLATED Setup Check with Pin ff1/CKN
Endpoint: ff1/D (^) checked with trailing edge of 'CLK2'
Beginpoint: in1 (^) triggered by leading edge of 'CLK'
5. report_timing -hpin
6. time_borrow
<CMD> report_timing -to ff02/D -from ff01/Q -view view6 -debug time_borrow
unconstrained
<CMD>report_timing -to out1 -view view1 -unconstrained -debug unconstrained
Path Unconstrained Reason:
-------------------------------
The endpoint 'out1' is an unconstrained output port, with noset_output_delay constraint
7. <CMD> report_timing -point_to_point
8. <CMD> report_timing -check_clocks -unconstrained -from clock1
9. <CMD> report_timing -max_paths 100 -path_group CLOCK2
10. <CMD> report_timing -early -clock_from CLK -from in2 -through buf133/A -to dff1/D -path_exceptions all
11. <CMD> report_timing -net
12. report_timing -path_type summary_slack_only -unique_pins
13. report_timing -path_type end
report_timing -path_type summary
report_timing -path_type full
report_timing -path_type full_clock
report_timing -path_type end_slack_only
report_timing -path_type summary_slack_only
14. report_timing -unconstrained
Path 1: Endpoint: DTMF_INST/TDSP/p_reg_30/D (^) (unconstrainedoutput)
Beginpoint: DTMF_INST/TDSP/ir_reg_9/Q (^) triggered by
leading edge of 'vclk1'
Arrival Time 15.807
Analysis View: default_analysis_view_setup
+ Clock Network Latency (Prop) 1.995
= Beginpoint Arrival Time 1.995
15. report_timing -unconstrained -format {pin arrival phase}
16. report_timing [report_timing -collection]
原文网址:https://www.sohu.com/a/378398028_99933533
网友评论