====== 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