Static Timing Analysis
Static Timing Analysis
Static Timing Analysis
Contents
About This Guide . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Audience . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
How This Manual Is Organized . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
Conventions Used in This Manual . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Related Documents . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
1
Timing Closure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
Recommended Timing Closure Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
Data Preparation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Validating the Netlist and Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Checking Timing Constraint Syntax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Validating Timing Constraints . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Resolving Footprint Inconsistencies . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Validating the Floorplan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Generating the Capacitance Table File . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
Pre-Placement Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Optimizing the Netlist . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Netlist-to-Netlist Optimization Flow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Guidelines for using N2N . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Recommended Use of the runN2NOpt Command . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Troubleshooting a Lengthy N2N Process . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
Floorplanning and Initial Placement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Ensuring Routability . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
Timing-Driven Placement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Troubleshooting Timing and Congestion Problems . . . . . . . . . . . . . . . . . . . . . . . . . . 22
Pre-CTS Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Guidelines for Pre-CTS Optimization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Pre-CTS optDesign Command Sequences . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Improving Pre-CTS Timing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Clock Tree Synthesis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
A
Timing Closure Script . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
The Cadence® Encounter™ family of products provides an integrated solution for an RTL-to-
GDSII design flow. This document addresses issues related to timing closure for challenging
designs. It presents a recommended task flow and provides tips on how to resolve or avoid
common timing closure problems typically found in a design.
Audience
This manual is written for experienced designers of digital integrated circuits. Such designers
must be familiar with design planning, placement and routing, block implementation, chip
assembly, and design verification. Designers must also have a solid understanding of UNIX
and Tcl/Tk programming. This manual also assumes that you are familiar with the operation
of Cadence Encounter design tools.
Before starting a new project, you should be familiar with the commands and options used in
the tools and have a basic understanding about how the Encounter software interprets LEF
constructs and timing constraints.
text Indicates text that you must type exactly as shown. For
example:
analyze_connectivity -analyze all
Related Documents
For more information about the Encounter family of products, see the following documents.
You can access these and other Cadence documents with the CDSDoc online documentation
system.
■ Encounter Database Access Command Reference
Lists all of the Encounter database access commands and provides a brief description
of syntax and usage.
■ Encounter Known Problems and Solutions
Describes important Product Change Requests (PCRs) for the Encounter family of
products, including solutions for working around known problems.
■ Encounter Library Development Guide
Describes library development guidelines for the independent tools that make up the
Encounter family of products.
■ Encounter Menu Reference
Provides a detailed reference of all the menu options and forms of the Encounter user
interface.
■ Encounter Text Command Reference
Describes the Encounter text commands, including syntax and examples.
■ Encounter User Guide
Describes how to use the various features and tools of the Encounter family of products.
■ What’s New in Encounter
Provides information about new and changed features in this release of the Encounter
family of products.
■ README file
Contains installation, compatibility, and other prerequisite information, including a list of
product change requests (PCRs) that were resolved in this release. You can read this file
online at downloads.cadence.com.
For a complete list of documents provided with this release, see the CDSDoc library.
6/10/05
1
Timing Closure
Achieving timing closure on a design is the process of creating a design implementation that
is free from logical, physical, and design rule violations and meets or exceeds the timing
specifications for the design. For a production chip, all physical effects, such as metal fill and
coupling, must be taken into account before you can confirm that timing closure has been
achieved.
Data Preparation RC
Extraction Route STA
Pre-Placement Optimization
Default
Clock Tree Synthesis
Post-CTS Optimization
Detailed Routing
Detailed
Post-Route Optimization
It is helpful to keep a log of all your runs including notes of your expectations for the run and
how you resolved any problems. Inserting comments in script files help you track changes you
make as you refine the process.
The encounter.log file contains more information about each constraint that was
skipped. For example:
Related message on constraint file temp.sdc:
**WARN[line 3]: -add and -master_clock options must be used together in
create_generated_clock statement
**WARN[line 3]: skip “create_generated_clock
This command generates a quick timing report using zero wire load and provides a first
indication, before placement and routing, of how much effort will be required to close timing
and whether the timing constraints are valid for the design. During pre-placement timing
analysis, high fanout nets are temporarily set as ideal so that more immediate timing issues
can be addressed first.
Perform a visual inspection of the floorplan to make sure there are no overlapping I/O blocks.
The following example shows how to generate an extended capacitance table using the
default field solver (Coyote).
generateCapTbl
-lef tech.lef
-ict process.ict
-coyote
-output process.xCapTbl
To obtain the parasitics measurements to determine the appropriate scaling factors, use the
generateRCFactor command. This command sets the capacitance factors by comparing
FE extraction with the results of either Fire & Ice extraction or a SPEF file.
For designs where the logical structure of the critical paths or high congestion are the sources
of closure problems, restructuring or remapping the elements on the paths (or related
portions of the design) can provide better timing results. This is done by running netlist-to-
netlist optimization using the runN2NOpt command on the initial netlist prior to place and
route. Additional restructuring can be performed later in the flow using the Encounter
optimization commands with more physical information.
If significant timing correlation issues are found, the command does not modify the initial
netlist and simply ends its operation.
Design Import
SoCE
N2N Optimization
Optimized Netlist
For the complete syntax and descriptions of parameters, see runN2NOpt in the Encounter
Text Command Reference.
2. Review the encounter.log file and find the section of the file that has the Global
mapping status heading. The following example indicates a problem:
Global mapping status
=====================
Group
Total
Total Worst
Operation Area Slacks Worst Path
---------------------------------------------
global_map 38482084 -1319526
3. Examine the Incremental optimization status and check the values for Group Total
Worst Slacks and Total Neg Slack to determine if the timing is abnormal. For
example:
Incremental optimization status
===============================
Group
Total Total - - DRC Totals - -
Total Worst Neg Max Max
Operation Area Slacks Slack Trans Cap
-----------------------------------------------------------------
init_delay 37912449 -1344356 -16404559956 0 162472282
4. If the values reported are excessively large, as in the previous example, discontinue the
N2N synthesis run.
5. Check the constraints file to see if there are missing timing exceptions, such as false or
multicycle paths. If there are, update the constraints file to include the appropriate
exceptions.
6. Determine if the wireload model used for the design is missing or too pessimistic. If so,
use one of the following procedures:
❑ Specify a different wireload model, or
❑ Manually generate a custom wireload model using a post-FE-optDesign database.
The following example shows how to manually generate the custom wireload model
and then use it with runN2NOpt command:
loadConfig init_design.conf
amoebaPlace -timingdriven
optDesign -preCTS
wireload -file mycwlm -percent 1.0 -cellLimit 10000
freedesign
Then, to use the custom wire load model with N2N, use the following commands:
loadConfig init_design.conf
runN2NOpt -cwlm -cwlmLib mycwlm.flat -cwlmSdc myclwm.flat.sdc
Prototyping involves multiple placement iterations that converge on a solution which meets a
design's requirements for routability, timing (including clocks), power, and signal integrity. The
initial floorplan drives the constraints leveraged by amoeba placement and partitioning to
meet these objectives. The following steps outline a basic procedure for obtaining an initial
placement.
1. Run the initial placement without any regions and guides. It is best to get a baseline
placement without constraining the placer.
2. Analyze the placement for timing and routability issues, and make necessary
adjustments.
3. Employ module guides, density screens, placement blockages, and other techniques to
refine the floorplan.The placement engine automatically detects low-utilized designs and
turns on the options required to achieve an optimal placement.
Ensuring Routability
Initial prototype iterations should focus on routability as the key to achieving predictable timing
closure. You should attempt to resolve congestion before attempting timing closure. Designs
which are congested are more likely to have timing jumps during timing and SI closure. Tools
such as module guides, block placement, block halos, obstructions, and density screens are
used to control the efficient routing of the design.
Use the following guidelines during floorplanning and placement to avoid congestion.
1. Choose an appropriate floorplan style.
❑ If possible, review a data flow diagram or a high-level design description from the
chip designer to determine an appropriate floorplan style.
❑ Assess different floorplan styles such as hard macro placement in periphery, island,
or doughnut (periphery and island). Keep the macro depth at 1 to 2 for best CTS,
optimization, and DFT results. If possible, consider different aspect ratios to
accommodate a shallower macro depth. Consider using relative floorplanning
scripts to simplify floorplan iterations.
2. Preplace I/Os and macros.
❑ Review hard macro connectivity and placement based on the minimum distance
from a hard macro to its target connectivity.
❑ Preplace high-speed and analog cores based on their special requirements for
noise isolation and power domains.
3. Review I/O placement to identify I/O anchors and associated logic.
❑ Verify that logic blocks and hard macros which communicate with I/O buffers are
properly placed and have optimal orientation for routability. Push down into module
guides to further assess the quality of the floorplan and resulting placement.
❑ Use the placeDesign -fp command to get an initial idea for how to place blocks.
If the design is not too large, consider using the -mediumeffort mode for the initial
placement. While -fp mode enforces non-timing-driven placement, use the
command setPlaceMode -noTimingDriven before running placeDesign in
medium effort mode to ensure non-timing-driven behavior. After the initial
placement, the location for macro blocks can be better determined and fixed for
another run of placeDesign to place the standard cells.
4. Allow enough space between preplaced blocks.
❑ Allow space between I/Os and peripheral macros for critical logic such as JTAG,
PCI, or Power management logic. Use the specifyJtag and placeJtag
commands prior to placing blocks.
❑ Use block halos, placement obstructions or fences around blocks prior to
optimization or CTS. Placement generally does not do a good job of placing cells
between macros. Reduce or remove halos and obstructions after placement to
make sufficient space available around macros for optimization, CTS, DRV, or SI
fixing to add buffers.
5. Use module guides carefully.
❑ Place module guides, regions, or fences only when greater control is required. Be
careful not to place too many module constraints early in the floorplanning process
because it is time consuming and greatly constrains the placement. Module guides
should be used for floorplan refinement or hierarchical partitioning.
❑ Review the placement of module guides related to datapath and control logic relative
to the associated hard macros. Datapath logic can be a source of congestion
problems due to poor aspect ratios, high fanout, and large amounts of shifting.
Consider tuning the locations of these module guides and lowering the density to
reduce congestion.
❑ Review the placement of module guides related to memories. These modules can
typically have higher densities due to the inclusion of the memories.
6. Reorder scan chains
When evaluating congestion, make sure that scan chains are reordered to eliminate
“false” hot spots in the design. Failing to reorder the scan chain can cause a routable
floorplan to appear unroutable. By default, placeDesign performs scan tracing and
scan reordering based on global or user-specified scan reorder settings and specified or
imported scan chain information. If scan chain information is missing, no reordering is
performed.
Timing-Driven Placement
As the routability of the floorplan stabilizes, you should begin to review the timing-critical
paths. Depending on the size of the design, it may be difficult to see the critical path without
first proceeding through an optimization run. At this point, you can consider switching to
timing-driven placement.
❑ Congested designs
setPlaceMode -highEffort
placeDesign
The following figure shows the placement decision tree when the default timing-driven
placement does not produce an adequate pre-CTS optimization result. Always gauge quality
using pre-CTS timing, not post-placement timing.
Pre-CTS
optimization Further analysis is
results are still required before
bad proceeding.
The use of the optDesign command for post-CTS optimization and post-route optimization
is described in the corresponding sections of this document. For more information on the
optDesign command, see optDesign in the Encounter Text Command Reference,
and refer to the Timing Optimization chapter in the Encounter User Guide for more
procedures on optimizing the design.
Note: To perform rapid timing optimization for design prototyping, use the following
commands:
setOptMode -lowEffort
optDesign -preCTS
Encounter performs gate resizing and global buffer insertion, but does not perform netlist
restructuring.
■ To further optimize a design after you have already run optDesign -preCTS, use the
following command:
optDesign -preCTS -incr
You can also take advantage of the following features in either first-time or incremental pre-
CTS optimization:
Note: The [-incr] notation means that you can run optDesign -preCTS with or without
the -incr parameter.
■ To perform optimization with useful skew, use the following commands:
setOptMode -usefulSkew
optDesign -preCTS [-incr]
Cadence recommends that you optimize timing with the default values; however, you can
change or add parameters for the following commands and parameters that -optDesign
runs automatically:
the path endpoint. During pre-CTS optimization, you can borrow from the left side (A) of the
violated path to advance the clock.
pre-CTS post-CTS
B
A
+ slack + slack
Violated
Paths
You can generate the default clock tree spec file with the command
clockDesign -genSpecOnly filename
Automatically generating a clock tree specification translates the following information from
the timing constraint file into suitable records for the clock tree spec file.
set_clock_latency Maxdelay
set_clock_uncertainty Maxskew
set_clock_transition BufMaxTran / SinkMaxTran
You can control the buffer types to build clock trees by specifying the footprint or listing the
buffer types in the config file. You can also control the routing types for the clock nets. Route
types for nets connected to leaf cells and nets connected to non-leaf cells can be specified
separately with LeafRouteType and Routetype. Also, you can use setCTSMode before
running specifyClockTree to change the default routing type and global clock tree
synthesis controls.
The clock tree specification file is very important and directly affects the result of clock tree
synthesis. A good clock tree plan including suitable constraints and placement space can
improve the results of clock tree synthesis and avoid problems for post-CTS timing closure.
A custom clock tree specification file can be used to drive clock tree synthesis. To read in a
custom clock tree specification file, use the command
clockTree -specFile filename
The Pre-CTS Clock Tree Tracer user interface can be used to traverse the clock tree structure
logically and physically based on the applied clock specification file before committing clock
tree synthesis. You can use it as a basis for changing the clock tree specification file to
consolidate the clock tree structure and improve the results of clock tree synthesis.
OptAddBuffer Yes No
The clockDesign command generates the default clock tree specification file; builds the
clock tree; calls NanoRoute to route the clock nets; and then optimizes the clock tree to
improve the skew including resizing buffers or inverters, adding buffers, refining placement,
and correcting routing.
If the clockDesign command calls NanoRoute to route the clock nets, you can direct
NanoRoute to follow the route guide by using the command
setCTSMode -useCTSRouteGuide. By default, NanoRoute does not follow the guide. This
operation can improve the correlation between pre-route and post-route clock nets.
Additionally, you can use the Clock Tree Browser user interface to fine tune the clock tree to
improve the results. From the user interface you can perform the following operations:
■ Add buffers
■ Delete buffers
■ Size cells
■ Change net connections
Refer to the chapter, Synthesizing Clock Trees, in the Encounter User Guide for more
information. Also, see the chapter, Clock Menu, in the Encounter Menu Reference for
descriptions of the forms and fields of the user interface.
ClkGroup
+ CGEN_1
+ CGEN_2
RouteTypeName CK1
PreferredExtraSpace 1
TopPreferredLayer 4
BottomPreferredLayer 3
End
RouteTypeName LF1
PreferredExtraSpace 0
TopPreferredLayer 4
BottomPreferredLayer 3
End
AutoCTSRootPin cgen/i_5/Y
MaxDelay 5.0ns
MinDelay 0ns
MaxFanout 2
MaxSkew 250ps
SinkMaxTran 550ps
BufMaxTran 550ps
NoGating NO
DetailReport YES
Obstruction YES
useCTSRouteGuide YES
RouteType CK1
LeafRouteType LF1
RouteClkNet YES
PostOpt YES
OptAddBuffer YES
OptAddBufferLimit 100
Buffer BUFX4 BUFX8 BUFX12 INVX1
MaxCap
+ BUFX4 1pf
+ BUFX8 1pf
+ BUFX12 1pf
ThroughPin
+ df/mod000446/CK
ThroughPort
+ df/mod002300/ax2
LeafPin
+ PCLK66_gate_i/A rising
LeafPort
+ ssfd2s/D rising
PreservePin
+ cgen/mod000043/A
ExcludedPin
+ freg/mod004048/CLK
ExcludedPort
+ DFF_B/CLK
End
■ To optimize timing after the clock tree has been built, use the following commands:
optDesign -postCTS -outDir postctsOptTimingReports
Encounter corrects setup violations and DRVs as it does in pre-CTS mode, except that
it does not reclaim area.
■ To reclaim area during optimization, use the following commands:
setOptMode -reclaimArea
optDesign -postCTS [-incr]
■ To correct only hold violations in post-CTS mode, specify the following command:
optDesign -postCTS -hold
■ To take advantage of useful skew when optimizing timing in post-CTS mode, use the
following commands:
setOptMode -usefulSkew
optDesign -postCTS [-incr]
If you have already performed detail routing on the clock tree, Encounter performs global
and detailed ECO routing automatically using nanoRoute in post-CTS useful skew
mode. If you do not want Encounter to do this, specify the -noECORoute parameter as
follows:
setOptMode -usefulSkew
optDesign -postCTS -noECORoute [-incr]
Cadence recommends that you optimize timing with the default values, but you can change
or add parameters for the following commands and parameters that -optDesign runs
automatically:
The optDesign command is also used during “Pre-CTS Optimization” on page 24 and “Post-
Route Optimization” on page 40. See the Encounter Text Command Reference for more
information on the optDesign command, and refer to the Timing Optimization chapter in
the Encounter User Guide for more procedures on optimizing the design.
Checking Timing
You can use the following command to report hold-time violations after post-CTS
optimization.
timeDesign -postCTS -hold -reportOnly -outDir postctsOptTimingReports
See the Encounter Text Command Reference for more information about timeDesign.
Timing Check
Use the following command to do a post-route timing check:
timeDesign -postRoute -outDir postrouteTimingReports
Encounter corrects setup violations and design rule violations unless Route
you specify otherwise. Encounter performs incremental RC and delay C PRO
calculation, and runs NanoRoute to perform ECO routing. Timing Sign Off
Important
Since the violations at this stage are due to inaccurate modeling of the final route
topology and the attendant parasitics, it is critical at this point not to introduce any
additional topology changes beyond those needed to fix the existing violations.
Making unnecessary changes to the routing at this point can lead to a scenario where
fixing one violation leads to the creation of others. This cascading effect creates a
situation where it becomes impossible to close on a final timing solution with no design
rule violations.
One of the strengths of post-route optimization is the ability to simultaneously cut a wire and
insert buffers, create the new RC graph at the corresponding point, and modify the graph to
estimate the new parasitics for the cut wire without re-doing extraction.
To take advantage of this feature with an external SPEF generated by a sign-off extraction
tool for improved convergence, a full SPEF must be used (reduced SPEF will not work), and
one of the following conditions must be met:
■ The SPEF must be generated with node locations using the starN format. The runQX
command in Encounter has been enhanced to output this format using the -
spefOutput starN option. For example: runQX -spefOutput starN.
or
■ The resistance values in the LEF file must match those in the technology file used by Fire
& Ice or starRC to generate the SPEF, which enables Encounter extraction to match the
routes with the SPEF RC graph.
You can use the optDesign command to fix timing during post-route optimization in the
following ways:
➤ To optimize timing after detailed routing, use the following command.
optDesign -postRoute -outDir postrouteOptTimingReports
Encounter corrects DRVs and setup violations, as it does in pre-CTS and post-CTS
modes. Encounter also performs an additional register-to-register optimization if the
worst negative slack does not occur on a register-to-register path. Encounter cuts wires
during buffer insertion and resizing, and simultaneously cuts the RC graph at the
corresponding point to estimate RCs on the cut wires.
In post-route mode, Encounter refines placement, then runs NanoRoute in ECO mode
to reroute affected wires. Encounter extracts RCs and reports final timing results. After
post-route optimization is complete, you can run a sign off extractor and compare the
results with those generated by Encounter.
➤ To correct only hold violations in post-route mode, specify the following commands:
optDesign -postRoute -hold -outDir postrouteOptTimingReports
This command sequence corrects only hold violations during post-route optimization,
without correcting setup violations. You benefit from correcting hold violations before
correcting setup violations because the hold repairs might cause more setup violations,
which you can correct in a later step.
These effects need to be analyzed and corrected before a design is completed. They are
magnified in designs with small geometries (180 nm and below) and in designs with high
clock speeds.
➤ To correct signal integrity violations when optimizing timing in post-route mode, use the
following command:
optDesign -postRoute -si
This command has its maximum effect once most other timing-related issues have been
corrected. It uses CeltIC to perform the SI analysis and corrects any problems by using a
combination of buffer resizing and/or routing modifications.
The optDesign -postRoute -si command should be used after using the optDesign
-postRoute command.
➤ To input a SPEF file for use during post-route SI optimization, use the following
commands.
spefIn spefFileName
optDesign -postRoute -si
Consider the following techniques if you have difficulty achieving signal integrity closure on
your design.
■ Watch for routing congestion during floorplanning and especially after detailed routing.
❑ Consider running the congOpt command on the design to eliminate local hot spots
or adjust your floorplan
■ Use NanoRoute advanced timing with SI-driven routing options during detailed routing.
For example:
❑ setNanoRouteMode routeWithTimingDriven true
❑ setNanoRouteMode routeWithSiDriven true
■ Fix transition time violations.
❑ Slow transitions introduce a larger delay penalty or incremental delay.
■ Prepare all of the required noise models.
❑ Highly-accurate CeltIC analysis requires the use of accurate noise models like cdB,
ECHO, or xILM. The use of blackbox (missing) models could lead to a significant
number of false violations.
Important
You must recalibrate the noise library with each release of CeltIC. New features may
not function properly when used with an old .cdB file.
❑ Characterize your memory and analog block using the make_cdb utility.
❑ Create XILM models for sub blocks to model their noise sensitivity at the chip level.
For Fire & Ice to run, you need to ensure that the FE configuration file includes a technology
file and a LibGen cell library database created with the runLibGen command. For more
information about setting up the libraries for Fire & Ice, refer to the chapter RC Extraction in
the Encounter User Guide.
A
Timing Closure Script
The following is a copy of the complete script for the timing closure flow. Since the script is
subject to change, this may not reflect the latest version.
Commands that are preceded by the comment symbol (#) are optional, depending on the
specific design requirements. Comments are most often preceded by two comment symbols
(##).
An on-line copy of the script, which you can use as a template for your design, is provided in
the gift directory.
install_dir/share/fe/gift/example_flows/block_implementation
/timing_closure_4.2.tcl
A README file in this directory provides additional information about modifying and using the
script.
Important
This script is subject to change. See your AE or Cadence representative to make
sure the script and the version of Encounter match.
############################################################
# Purpose : Block Implementation #
# [Timing Closure in SOCE4.2] #
############################################################
#############################################
# Variables to set for default settings #
# These settings work with the tdsp_core #
# block in the gift directory. #
#############################################
## Specify the block name.
set BLOCK_NAME tdsp_core
## Specify filler cells.
set LIST_OF_FILLER_CELLS {FILL64 FILL32 FILL16 FILL8 FILL4 FILL2 FILL1}
## Specify the number of processors for NanoRoute, QX, and SI setup fix.
set NUMBER_OF_PROCESSORS 2
## Specify the RC Factor.
## You can use “generateRCFactor -all” to generate the RC scale factors.
set DEF_CAP 1.13
set DET_CAP 1.02
## In 4.2, specify clk inv and buf footprints in addition to
## regular inv and buf footprints in the config file for CTS.
## Include the following lines in the config file:
#set rda_Input(ui_cts_cell_footprint) {clkbuf clkinv}
#set rda_Input(ui_cts_cell_list) {}
## Specify the mapfile name for streaming out block gds;
## otherwise, the default name, streamOut.map, is used.
set STREAMOUT_MAP_FILE streamOut
##########################################
# Variables to set for optional settings #
##########################################
## Specify a list of cells for UsefulSkewMode.
#set USEFUL_SKEW_BUF_LIST {CLKBUF1 CLKBUF2 CLKBUF3}
#########################################
# Load Design #
#########################################
loadConfig ${BLOCK_NAME}.conf
## Load Floorplan (contains global power, etc.)
loadFPlan ./${BLOCK_NAME}.fp
## Load DEF (contains placement, etc.)
#defIn ./${BLOCK_NAME}.def
## Or Load the design and floorplan if DB is saved.
#restoreDesign ${BLOCK_NAME}_design.enc.dat ${BLOCK_NAME}
## Check the design for any missing data.
checkDesign -all -outfile ${BLOCK_NAME}_check_design.rpt
## Check timing before placement using zero wire load (ZWL).
#timeDesign -prePlace -prefix TimingReports \
# -outDir ${BLOCK_NAME}_reports/preplace
## Set RC scale factors for default and detail extraction.
setRCFactor -defcap ${DEF_CAP} -detcap ${DET_CAP}
###############################
# Placement #
###############################
## Set the clock domains appropriately if the goal
## is to close timing only in selected clock domains.
#clearClockDomains
#setClockDomains -fromType register -toType register
## Specify scan chains if the floorplan file does not have this information.
## If there is a scan def file, use defIn to load it.
specifyScanChain chain1 -start BG_scan_in -stop BG_scan_out
## Specify spare gates for placement and optimization consideration.
#specifySpareGate -inst cell_name
## In 4.2, the placeDesign command performs timing-driven placement
## and scanReorder by default. Use the -noReorderscan option if
## there is no need to reorder the scan chain.
#setPlaceMode -noReorderScan
## Use “-highEffort” option if the design is congested.
#setPlaceMode -highEffort
placeDesign
#saveDesign ${BLOCK_NAME}_place.enc
###############################
# PreCTS Optimization #
###############################
## Use “-usefulSkew” if you intend to use usefulSkew, and remove any
## existing scheduling files in the working directory.
#setOptMode -usefulSkew
## Specify the clock buffers that need to be used for usefulSkew.
#setUsefulSkewMode -usecells ${USEFUL_SKEW_BUF_LIST}
## Perform optimization at pre-CTS (ideal clock) phase
## and generate detailed timing reports.
optDesign -preCTS -outDir ${BLOCK_NAME}_reports/prectsOptTimingReports
## Perform incremental optimization in critical clock domains.
#clearClockDomains
#setClockDomains -fromType register -toType register
#optDesign -preCTS -incr -prefix TimingReports \
# -outDir ${BLOCK_NAME}_reports/prectsIncrOpt
#saveDesign ${BLOCK_NAME}_prectsopt.enc
###############################
# Clock Tree Synthesis #
###############################
## Specify multiple processors for routing.
setNanoRouteMode envNumberProcessor ${NUMBER_OF_PROCESSORS}
## Use “-useCTSRouteGuide” to use routing guide during CTS.
setCTSMode -useCTSRouteGuide
## Set “routeClkNet” to use NanoRoute during CTS.
setCTSMode -routeClkNet
## In 4.2, the clockDesign command performs clock tree synthesis.
## Specify the clock buffer and inverter footprints in the config file.
## Please refer to the section “Variables to set for default settings”
## at the top of this script.It defines the required variables to be
## used in the config file. If default settings or parameters in the
## clock spec need to be changed, generate the clock spec file, make
## the necessary changes, and read back the spec file.
## NanoRoute picks the antennna cell directly from the LEF, if antenna diode
## insertion is set to true. Please check if antenna has class defined as
## CLASS CORE ANTENNACELL.
#setNanoRouteMode routeInsertAntennaDiode true
globalDetailRoute
## Check timing after routing.
timeDesign -postRoute -prefix TimingReports \
-outDir ${BLOCK_NAME}_reports/postroute
## Check hold timing after routing.
#timeDesign -postRoute -hold -reportOnly -prefix TimingReports \
# -outDir ${BLOCK_NAME}_reports/postroute
#saveDesign ${BLOCK_NAME}_nanoroute.enc
###############################
# Post-Route Optimization #
###############################
## If there is still a correlation issue, then run spefIn using external SPEF.
#spefIn filename
## Perform DRV and setup optimization after detail routing and generate
## detailed timing block reports.
optDesign -postRoute -prefix TimingReports \
-outDir ${BLOCK_NAME}_reports/postrouteOpt
## Perform optimization after detail routing for hold and generate
## detailed timing reports
#optDesign -postRoute -hold -prefix TimingReports \
# -outDir ${BLOCK_NAME}_reports/postrouteOpt
#saveDesign ${BLOCK_NAME}_postrouteopt.enc
###############################
# Sign-Off Timing Analysis #
###############################
## Check timing for sign off.
## timeDesign uses either the default timer or the CTE timing engine
## depending on the user-specified settings for sign-off timing analysis.
timeDesign -signoff -prefix TimingReports -outDir ${BLOCK_NAME}_reports/signOff
## Check hold timing for sign off.
#timeDesign -signoff -hold -reportOnly -prefix TimingReports \
# -outDir ${BLOCK_NAME}_reports/signOff
#saveDesign ${BLOCK_NAME}_signoff.enc
Index
A netlist restructuring
using runN2nOpt command (RC) 14
Amoeba placement noise models
in floorplanning and placement 19 in SI closure 42
area reclamation
pre-placement optimization 14
P
B pre-placement optimization 14
D S
documents, related, list of 5
double-inverter removal SI closure problems
area reclamation 14 resolving 42
slack
borrowing with useful skew 26
E syntax conventions 4
Examples
Capacitance Table generation 13 T
Pre-CTS script 25
Routing script 38 transition violations
fixing in SI closure 42
typographic conventions 4
H
high-fanout nets 16 U
buffering 14
high-fanout threshold 16 useful skew
borrowing slack 26
N
netlist optimization 15
W
WLM
timing constraint validation 11
X
XILM model
noise modeling 43