How To Optimize Specific Endpoints From A Timing Report in signoffOptDesign
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>
#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>
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
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 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:
For example: Exclude the endpoint proc0/ex_reg_rs2data_1/DFF/D from setup optimization for the func_slow_max view:
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:
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:
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:
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:
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.
Code
None
Internal Notes
None
Return to the top of the page