每天学命令

每天学命令

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的区别,如下图所示:

每天学命令

-hpin  hpin字栏里如果是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

具体每种类型介绍可以参考

【每天学命令<report_analysis_coverage>】

–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]

每天学命令


每天学命令

往期回顾

静态时序分析STA合集一

静态时序分析STA合集二

时序基本概念介绍<sdc合集>

数字后端基本概念合集(一)

数字后端基本概念合集(二)

数字后端基本概念合集(三)

Low Power概念介绍合集

数字后端dbGet使用方法合集

号外,数字后端交流群招人啦

IC圈的世界杯 | 论芯片设计的胜利十一人

知否?知否?Block PD应该提交哪些数据?

Timing ECO手修攻略

数字后端面试100问(2019全新版)

数字后端面试100问(校招版)

简历请戳邮箱:taozhang326[email protected]163.com

觉得有用的话,给我点个好看吧每天学命令