====== proc_qor ======
Sourcing the attached proc_qor.tcl gives access to the following two procedures to generate and compare more readable QoR files than those produced by the report_qor command:
proc_qor
Reformats the output of the report_qor command.
proc_compare_qor
Compares up to six report_qor or proc_qor output files.
These procedures can be used in IC Compiler, Design Compiler, and PrimeTime with or without multicorner-multimode (MCMM) and generate CSV files for importing to Microsoft Excel.
===== Usage of proc_qor =====
proc_qor
[-existing_qor_file report_qor file]
[-csv_file output_csv_file_name]
[-units ps or ns]
[-skew]
-existing_qor_file report_qor file
Specifies the name of an existing report_qor report file to reformat.
If you do not specify this option, proc_qor runs the report_qor command on the currently opened design to generate a QoR report file.
-csv_file output_csv_file_name
Specifies the name for the output CSV file.
If you do not specify this option, proc_qor creates a file named qor.csv.
-skew
Adds skew columns for the worst negative slack and total negative slack paths accounting for clock reconvergence pessimism removal.
Examples of proc_qor
The following example runs the report_qor command and reformats the generated report. The reformatted report is also shown. Note that the path group names in the generated report have been changed deliberately.
icc_shell> proc_qor
Running report_qor
NVP - No. of Violating Paths
FREQ - Estimated Frequency, not accurate in some cases, multi/half-cycle, etc
WNS(H) - Hold WNS
TNS(H) - Hold TNS
NVP(H) - Hold NVP
Path Group WNS TNS NVP FREQ WNS(H) TNS(H) NVP(H)
-------------------------------------------------------------------------------------------------
OutputPaths -0.081 -2.4 139 951MHz 0.000 0.0 0
**clock_gating_default** -0.075 -2.0 222 957MHz -0.336 -2569.0 7663
sys_clkt -0.044 -2.3 78 986MHz -0.133 -0.9 83
PathGroup1 -0.031 -19.7 1744 999MHz -0.149 -269.7 15061
PathGroup2 -0.025 -8.4 834 1005MHz -0.050 -44.1 4276
PathGroup3 -0.013 -7.9 1279 1017MHz -0.052 -91.2 8800
InputPaths -0.013 -0.1 26 1017MHz -1.063 -66548.8 157560
PathGroup4 -0.004 -0.2 129 1027MHz -0.100 -144.7 12736
PathGroup5 0.000 0.0 0 1031MHz -0.050 -32.1 2829
PathGroup6 0.000 -0.0 11 1031MHz -0.038 -14.1 1819
PathGroup7 0.000 0.0 0 1031MHz -0.027 -0.1 12
PathGroup8 0.000 -0.0 2 1031MHz -0.027 -2.3 222
PathGroup9 0.000 -0.0 1 1031MHz -0.051 -4.5 319
PathGroup0 0.000 0.0 0 1031MHz -0.022 -0.8 69
PathGroup10 0.000 -0.0 2 1031MHz -0.169 -156.3 10409
PathGroup11 0.000 0.0 0 1031MHz -0.031 -1.6 218
PathGroup12 0.000 -0.0 7 1031MHz -0.036 -15.5 2017
PathGroup13 0.001 0.0 0 1032MHz -0.026 -0.8 65
PathGroup14 0.001 0.0 0 1032MHz -0.017 -0.2 28
PathGroup15 0.002 0.0 0 1033MHz -0.029 -1.5 145
PathGroup16 0.002 0.0 0 1033MHz -0.006 -0.0 2
PathGroup17 0.004 0.0 0 1035MHz -0.020 -0.2 25
PathGroup18 0.012 0.0 0 1044MHz -0.021 -0.2 24
PathGroup19 0.208 0.0 0 1312MHz -0.034 -0.6 64
-------------------------------------------------------------------------------------------------
Summary -0.081 -43.1 4474 951MHz -1.063 -69899.3 224446
-------------------------------------------------------------------------------------------------
CAP FANOUT TRAN TDRC CELLA BUFS LEAFS TNETS CTBUF REGS
-------------------------------------------------------------------------------------------------
0 0 896 1059 2025162 181K 1137K 1161K 0 163852
-------------------------------------------------------------------------------------------------
The following example reformats the QoR report in the file named qor.rpt and pipes the output to a file named newreport.qor.
icc_shell> proc_qor -existing_qor_file qor.rpt > newreport.qor
The following example runs the report_qor command, reformats the generated report, and adds skew columns for worst negative slack and total negative slack paths accounting for clock reconvergence pessimism removal.
icc_shell> proc_qor -skew
Running report_qor
Getting setup timing paths for skew analysis
Getting hold timing paths for skew analysis
Skews numbers reported include any ocv derates, crpr value is close, but may not match report_timing UITE-468
SKEW - Skew on WNS Path
AVGSKW - Average Skew on TNS Paths
Path Group WNS SKEW TNS AVGSKW NVP FREQ WNS(H) SKEW(H) TNS(H) AVGSKW(H) NVP(H)
--------------------------------------------------------------------------------------------------------------------------
InputPaths -0.213 -0.072 -33.3 -0.065 536 845MHz 0.000 0.000 0.0 0.000 0
PathGroup0 -0.165 -0.079 -210.4 -0.090 4194 881MHz -0.010 0.043 -0.0 0.022 13
CGEnable -0.164 -0.217 -55.5 -0.121 1849 882MHz 0.000 0.000 0.0 0.000 0
PathGroup1 -0.153 -0.166 -444.8 -0.065 11409 890MHz -0.020 0.010 -0.8 0.011 224
PathGroup2 -0.143 -0.102 -20.4 -0.070 500 898MHz -0.014 -0.000 -0.1 0.008 34
PathGroup3 -0.137 -0.079 -125.0 -0.042 4649 903MHz -0.027 0.019 -1.8 0.015 317
PathGroup4 -0.134 -0.111 -23.1 -0.054 1111 906MHz -0.036 0.029 -2.0 0.025 266
OutputPaths -0.132 -0.102 -22.7 -0.050 522 907MHz 0.000 0.000 0.0 0.000 0
PathGroup6 -0.127 -0.073 -7.3 -0.052 229 912MHz 0.000 0.000 0.0 0.000 0
PathGroup7 -0.126 -0.032 -122.2 -0.046 2906 912MHz -0.018 0.031 -0.1 0.028 5
PathGroup8 -0.120 -0.048 -12.5 -0.050 391 917MHz -0.003 0.019 -0.0 0.010 4
PathGroup9 -0.101 -0.040 -63.0 -0.082 2708 934MHz -0.037 -0.009 -1.5 0.003 92
PathGroup10 -0.096 -0.008 -44.4 -0.031 3045 938MHz -0.025 0.022 -1.0 0.013 221
PathGroup11 -0.091 -0.027 -146.8 -0.042 7574 943MHz -0.021 0.023 -0.4 0.009 99
PathGroup12 -0.086 -0.065 -49.4 -0.067 1540 947MHz 0.000 0.000 0.0 0.000 0
PathGroup13 -0.078 -0.033 -86.3 -0.046 4265 954MHz -0.005 0.009 -0.1 0.004 50
PathGroup14 -0.077 -0.053 -4.4 -0.037 136 955MHz -0.004 0.008 -0.0 0.011 8
PathGroup15 -0.061 0.021 -11.1 -0.026 507 970MHz 0.000 0.000 0.0 0.000 0
sys_clk -0.060 -0.175 -1.3 -0.074 64 971MHz -0.020 0.025 -0.1 0.015 27
PathGroup16 -0.045 -0.028 -1.0 -0.041 95 985MHz 0.000 0.000 0.0 0.000 0
PathGroup17 -0.041 -0.051 -0.1 -0.052 3 989MHz -0.014 0.027 -0.0 0.019 2
PathGroup18 -0.034 -0.017 -1.6 -0.023 178 996MHz -0.014 0.033 -0.1 0.021 31
PathGroup19 -0.028 -0.091 -1.1 -0.066 68 1002MHz -0.001 0.003 -0.0 0.002 2
PathGroup20 0.000 0.000 0.0 0.000 0 1031MHz -0.002 0.004 -0.0 0.001 9
--------------------------------------------------------------------------------------------------------------------------
Summary -0.213 -0.217 -1487.7 -0.121 48479 845MHz -0.037 0.043 -8.0 0.028 1404
--------------------------------------------------------------------------------------------------------------------------
CAP FANOUT TRAN TDRC CELLA BUFS LEAFS TNETS CTBUF REGS
-----------------------------------------------------------------------------------------------
1 0 26730 26731 2610611 377K 1399K 1402K 1965 163892
-----------------------------------------------------------------------------------------------
===== Usage of proc_compare_qor =====
proc_compare_qor
[-csv_file output_csv_file_name]
[-tag_list "column_headings"]
-qor_file_list "report_files"
-csv_file output_csv_file_name
Specifies the name for for the output CSV file.
If you do not specify this option, proc_compare_qor creates a file named compare_qor.csv.
-tag_list "column_headings"
Specifies the column headings used for the report files. The number of strings specified must equal the number of report files specified.
If you do not specify this option, proc_compare_qor uses qor_i for the column headings, where i is 0 for the first report file and is incremented by one for each report file.
-qor_file_list "report_files"
Specifies the names of the QoR report files to compare. You can specify up to six report files. The report files can be
* Report files generated by the report_qor command
* Report files generated by proc_qor with or without the -skew option
* A combination of these report files
==== Examples of proc_compare_qor ====
The following command compares the rp1.qor and rp2.qor reports. The generated report uses the default column headings of "qor_0" and "qor_1".
icc_shell> proc_compare_qor -qor_file_list "rp1.qor rp2.qor"
qor_0 qor_1 qor_0 qor_1 qor_0 qor_1 qor_0 qor_1 qor_0 qor_1 qor_0 qor_1
Path Group WNS WNS TNS TNS NVP NVP WNSH WNSH TNSH TNSH NVPH NVPH
--------------------------------------------------------------------------------------------------------------------------
OutputPaths -0.124 -0.045 -1.7 -0.5 116 122 0.000 0.000 0.0 0.0 0 0
InputPaths -0.090 -0.091 -4.4 -2.0 120 155 -1.063 -0.704 -69117.7 -561.7 165231 5856
PathGroup0 -0.067 0.000 -5.7 -0.0 279 2 -0.026 -0.022 -2.2 -0.1 213 13
PathGroup0 -0.041 -0.040 -29.5 -6.9 2618 536 -0.156 -0.144 -253.0 -191.2 14926 13390
PathGroup0 -0.033 -0.022 -5.2 -0.8 494 81 -0.114 -0.123 -125.4 -100.3 11058 10140
PathGroup0 -0.026 -0.006 -14.3 -0.0 1401 23 -0.055 -0.060 -91.8 -85.1 8658 8631
PathGroup0 -0.010 0.000 -0.4 -0.0 83 1 -0.039 -0.041 -12.3 -8.5 1680 1366
PathGroup0 -0.004 -0.002 -0.0 -0.0 22 2 -0.055 -0.027 -3.6 -2.5 273 200
PathGroup0 -0.001 -0.019 -0.0 -1.9 83 401 -0.046 -0.082 -15.8 -18.2 1999 2101
PathGroup0 0.000 -0.012 -0.0 -0.5 24 113 -0.050 -0.072 -40.8 -42.2 3941 4056
PathGroup0 0.000 0.000 -0.0 -0.0 1 4 -0.030 -0.078 -0.8 -2.7 117 139
PathGroup0 0.000 -0.076 0.0 -13.1 0 412 -0.022 -0.018 -0.2 -0.2 23 15
PathGroup0 0.000 0.000 0.0 0.0 0 0 -0.055 -0.050 -32.3 -20.0 2674 2026
PathGroup0 0.000 0.000 0.0 0.0 0 0 -0.022 -0.025 -0.3 -0.2 22 34
PathGroup0 0.000 0.000 -0.0 -0.0 1 2 -0.023 -0.020 -0.8 -0.8 67 69
PathGroup0 0.000 0.000 0.0 0.0 0 0 -0.009 -0.019 -0.0 -0.3 1 34
PathGroup0 0.000 0.000 -0.0 0.0 1 0 -0.019 -0.012 -0.2 -0.0 24 3
PathGroup0 0.000 -0.001 -0.0 -0.0 5 10 -0.166 -0.102 -156.7 -115.0 10294 9350
sys_clk 0.000 0.000 -0.0 0.0 1 0 -0.033 -0.074 -3.1 -2.0 342 203
PathGroup0 0.001 -0.001 0.0 -0.0 0 2 -0.022 -0.023 -0.5 -0.6 57 43
PathGroup0 0.001 0.000 0.0 0.0 0 0 -0.018 -0.019 -0.6 -0.8 67 75
PathGroup0 0.003 0.001 0.0 0.0 0 0 -0.084 -0.126 -2.5 -14.8 37 205
NPathGroup 0.202 NA 0.0 NA 0 NA -0.028 NA -0.6 NA 63 NA
MPathGroup NA 0.181 NA 0.0 NA 0 NA -0.039 NA -1.9 NA 112
--------------------------------------------------------------------------------------------------------------------------
Summary -0.124 -0.091 -61.3 -25.7 5249 1866 -1.063 -0.704 -69861.3 -1169.2 221767 58061
------------------------------------------------------------------------------------------------------------------------------------------
qor_0 qor_1 qor_0 qor_1 qor_0 qor_1 qor_0 qor_1 qor_0 qor_1 qor_0 qor_1 qor_0 qor_1
DRC DRC CELLA CELLA BUF BUF LEAF LEAF CBUFS CBUFS REGS REGS NETS NETS
------------------------------------------------------------------------------------------------------------------------------------------
682 38 2100771 2481199 203K 261K 1164K 1282K 0 0 163892 163892 1189K 1263K
------------------------------------------------------------------------------------------------------------------------------------------
The following command compares the rp1.qor and rp2.qor reports and pipes the result to a file named compare.qor. The column headings are "place" and "clock" instead of "qor_0" and "qor_1".
icc_shell> proc_compare_qor -qor_file_list "rp1.qor rp2.qor" [-tag_list "place clock"] > compare.qor
The following example compares five report files and uses column headings of "dc", "place", "clock", "route", and "pt" in the generated report.
icc_shell> proc_compare_qor \
-qor_file_list "dc.qor place.qor clock.qor route.qor pt.qor" \
-tag_list "dc place clock route pt"
===== LIMITATIONS =====
The clock reconvergence pessimism removal (CRPR) value used when you specify the -skew option with proc_qor might not match the report_timing output, but it is close. See the UITE-468 message.
The calculated frequency (FREQ) is based on the worst negative slack (WNS) and clock period reported in the report_qor output and is not accurate in some cases, such as pure combinational paths, half paths, or multicycle paths.
In PrimeTime, due to runtime and complexity, only 25 thousand paths per path group and simple methods are used to calculate total negative slack (TNS) and number of violating paths (NVP).
proc_qor.tcl - contains both proc_qor and proc_compare_qor procedures
===== 参考 =====
* https://solvnet.synopsys.com/retrieve/032515.html