0% found this document useful (0 votes)
66 views4 pages

How To Optimize Specific Endpoints From A Timing Report in signoffOptDesign

tempus rm script

Uploaded by

thsim85
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
66 views4 pages

How To Optimize Specific Endpoints From A Timing Report in signoffOptDesign

tempus rm script

Uploaded by

thsim85
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 4

How to optimize specific endpoints from a timing report in signoffOptDesign

Explanation of Script
This article focuses on endpoint-specific signoff optimization (SOD). This flow is useful in scenarios where you want the tool to run timing optimization on specific
endpoints using a file that has the endpoints and the slack value for those in the following format (slack summary file):

<Endpoint_name> <slack>

For example: func_slow_max_setup_slack.rpt

#optimize the following endpoints for the slack reported by the signoff tool

proc0/iu0/fe_reg_pc_31/DFF/D -0.320
proc0/iu0/ex_reg_rs1data_26/DFF/D -0.289

Usage
Signoff Timing Optimization is used to fix timing violations visible in the STA mode while staying in the implementation tool (Innovus) on a design that has gone through the
implementation flow, that is, the post-routed design.

You can do Signoff Timing Optimization on specific endpoints that have slacks different from the slack seen in the signoffTimeDesign ​(SOD) report by applying a
margin on the specific endpoints for the specific views.

The slack seen by Tempus needs to be adjusted by a margin to match the violation specified in the endpoint timing report file (slack summary file). Optimization is done to
the adjusted timing slacks.

Examples:

This article provides a script to generate these timing margins from the timing report slack summary file. Pass on the endpoint margin file path to
the setSignoffOptMode command through the following options:

-specifyHoldEndpointsMargin <setup_margin_file>
-specifySetupEndpointsMargin <hold_margin_file>

File format: <View> <Margin> <Endpoints>

A sample margin file configuration is as follows:​

SOD will adjust the slack of the endpoints by subtracting the margin specified for those endpoints in the margin file passed to Innovus by using the setSignoffOptMode
-specifySetupEndpointsMargin/-specifyHoldEndPointsMargin options.

The following flow chart shows the flow to be followed to create a margin file using the endpoint slack file as an input and run signoffOptDesign on only the endpoints
specified in the endpoint slack file.
How to configure signoffOptMode

Use the following settings before signoffTimeDesign is executed:

setSignoffOptMode -postStaTcl postStaTcl.tcl

Here, -postStaTcl is used to generate the margin file.

The postStaTcl.tcl file provided with this article contains the code to generate the margin file. You need to modify the below-mentioned contents in that file according
to your setup:

set ep_file(view_name) “<Endpoint slack file>” -> provide the endpoint slack file (slack summary file) for the corresponding view.
For example:
set ep_file(view_name) “func_slow_max_setup_slack.rpt​ ” # slack summary file path for the func_slow_max view
set active_views “active_view_names” -> set the active views in your design
set setup_view "setup_view_names" -> set the setup view for which the slack summary is pointed in the above variable “ep_file(view_name)”

The following files are sourced in postStaTcl.tcl:

tempus_pin_postStaTcl.tcl -> This creates the margin file to be specified in -specifySetupEndpointsMargin.


innovus_neg_ep.tcl -> This creates Innovus endpoints exclude file for setup views that needs to be specified in -selectSetupEndpoints.

Point the file path for these files in postStaTcl.tcl.

The output file from postStaTcl.tcl is obtained after signoffTimeDesign completes.

The main output files from postStaTcl.tcl are (these files will be written out to the present working directory):

<view_name>_margin.txt -> file containing the endpoint margin for the endpoints in the slack summary file.
<view_name>_invs_endpoint_exclude.txt -> file containing endpoints that needs to be excluded from optimization.

The endpoints apart from those specified in the endpoint slack file will be excluded from optimization. You can do this by using -selectSetupEndpoints/-
selectHoldEndpoints <select_file> in signoffOptMode.

The select file contains the endpoints and their view name they belong to with the ‘exclude’ option. The format is as follows:

<View> include/exclude <Endpoints>

For example: Exclude the endpoint proc0/ex_reg_rs2data_1/DFF/D from setup optimization for the func_slow_max view:

func_slow_max exclude proc0/ex_reg_rs2data_1/DFF/D

Run signoffTimeDesign

You can extract signoffTimeDesign timing summary from the log file by:
sed -n '/Start generating timing report/,/End generating timing report/p' invs.log | sed '1d;$d'​​
After signoffTimeDesign creates the margin files and endpoint exclude files for each slack summary file specified in the postStaTcl.tcl file, you need to
concatenate these files into one margin file and one select endpoint file to be set in the signoffOptMode option:

set outDir [pwd];


foreach view [all_setup_analysis_views] {
catch {exec cat $outDir/${view}_margin.txt >> ./setup_margin.rpt}
catch {exec cat $outDir/${view}_invs_endpoint.txt >> ./setup_exclude.tcl}
}

The final margin file needs to be set in setSignoffOptMode -specifySetupEndpointsMargin <setup_margin_file> before signoffOptDesign is run. For
example, setSignoffOptMode -specifySetupEndpointsMargin ./setup_margin.rpt.

The final exclude file needs to set in setSignoffOptMode -selectSetupEndpoints <select_endpoint_file>. For example, setSignoffOptMode -
selectSetupEndpoints ./setup_exclude.tcl.

Run signoffOptDesign

After setting the above-mentioned setSignoffOptMode options, execute signoffOptDesign -setup to run setup optimization. The tool will apply the margins and
calculate the new slack values for the endpoints present in the margin file.

You can check the initial summary in signoffOptDesign from the log file as shown below:

grep "Initial Hold Summary " invs.log -A24

Note: If you have multiple endpoints slack files, add the line count from all the endpoint slack files. It should match the line count in the margin file specified in
setSignoffOptMode -specifySetupEndpointsMargin and it will match the violating paths in the initial summary.

Use the following to report the number of endpoints in the endpoint slack file:

awk 'END {print NR}' <end_point_slack_filename>

Run signoffTimeDesign after SOD

You can check the slack of the endpoints from the input file after the optimization by running signoffTimeDesign after signoffOptDesign is completed.

You need to specify setSignoffOptMode -postStaTcl <post_sta_tcl> where post_sta_tcl contains script to calculate the slack for endpoints in the slack
summary file after SOD:

setSignoffOptMode -postStaTcl post_SOD_postStaTcl.tcl

The file that is sourced in post_SOD_postStaTcl.tcl is tempus_post_SOD_postStaTcl.tcl.


The output file '<view_name>_post_SOD_innovus.rpt' contains the slack of only the endpoints from the slack summary file as seen in Tempus for the respective
views.

The command execution flow is as follows:

restoreDesign <postRoute_db_name.dat> <design_name>

setSignoffOptMode -postStaTcl postStaTcl.tcl


signoffTimeDesign
setSignoffOptMode -specifySetupEndpointsMargin <setup_margin_file>
setSignoffOptMode -selectSetupEndpoints <select_endpoint_file>
signoffOptDesign -setup
setSignoffOptMode -postStaTcl post_SOD_postStaTcl.tcl
signoffTimeDesign

Note: All files used in the flow are attached.

The article explains the flow to be used for setup optimization. The same flow can be used for hold optimization as well using signoffOptDesign -hold with some
modifications in the script.

Change tempus_pin_postStaTcl.tcl and innovus_neg_ep.tcl (Change the "analysis" variable to "hold" so that it will run report_timing -early and
change report_timing -late to -early). Also change the input and output files accordingly in postStaTcl.tcl and post_SOD_postStaTcl.tcl.

Use the following setSignoffOptMode options for the hold optimization:

setSignoffOptMode -specifyHoldEndPointsMargin <hold_margin_file>


setSignoffOptMode -selectHoldEndpoints <hold_select_endpoint_file>

Code
None

Internal Notes
None
Return to the top of the page

You might also like