Genus Quick Start Timing PDF
Genus Quick Start Timing PDF
Analysis
Product Version 19.12
December 11, 2019
Copyright Statement
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Cadence and the Cadence logo are
registered trademarks of Cadence Design Systems, Inc. All others are the property of their respective
holders.
Contents
Purpose................................................................................................................................................ 4
Overview .............................................................................................................................................. 4
1. Stages for Timing Analysis ............................................................................................................... 4
2. Checklist for Timing Analysis......................................................................................................... 5
2.1. Constraints ......................................................................................................................... 5
2.2. Pre-synthesis Diagnosis ..................................................................................................... 5
2.3. Check path groups and cost groups specification ............................................................... 5
2.4. Ungrouping requirements ................................................................................................... 6
2.5. Check for Ideal (I) nets on critical path ................................................................................ 6
2.6. Logic levels ......................................................................................................................... 6
2.7. Abnormally Large Cell/Transition Delay .............................................................................. 7
2.8. Clock Crossing Domain ...................................................................................................... 9
2.9. Input to Output Path............................................................................................................ 9
2.10. Half Path Cycle ............................................................................................................... 9
3. Timing Report Analysis ............................................................................................................... 10
3.1 GUI Analysis ..................................................................................................................... 10
3.2 Command report_timing ................................................................................................... 12
3.3 Examples of sample scripts using the commands discussed earlier ................................. 14
3.4. Command report_timing_summary ...................................................................................... 21
4. Optimizations for Timing Analysis................................................................................................ 22
4.1. Cost Groups and Path Groups .......................................................................................... 22
4.2. Path Adjust ....................................................................................................................... 22
4.3. Logic Levels...................................................................................................................... 23
4.4. Ungrouping a design with preserved instances ................................................................. 23
4.5. Optimizing endpoints ........................................................................................................ 24
4.6. Re-timing .......................................................................................................................... 24
4.7. Hard Regions ................................................................................................................... 24
4.8. Ideal Nets ......................................................................................................................... 25
4.9. Combinational Feedback Loops ....................................................................................... 25
4.10. Effort levels for synthesis .............................................................................................. 26
4.11. Modifying Constraints.................................................................................................... 26
5. Timing Analysis for MMMC Design .............................................................................................. 27
6. LAB ............................................................................................................................................. 27
6.1 Non-MMMC Design .............................................................................................................. 27
6.2 MMMC Design...................................................................................................................... 32
Summary............................................................................................................................................ 33
References......................................................................................................................................... 33
Further Reading ................................................................................................................................. 33
Support .............................................................................................................................................. 33
Videos ................................................................................................................................................ 33
Feedback ........................................................................................................................................... 33
Purpose
This Application Note guides the user through a step by step process for timing analysis,
debugging and optimization in the synthesis stage.
Audience
This document is intended for users who use Genus Synthesis Solution™ to close the
timing in the synthesis stage.
Overview
Timing Closure is the most critical component of a digital design. Timing analysis has
become critical within synthesis stage itself, so it’s critical to meet the timing in this stage.
This appnote discusses a step by step approach on how to perform timing analysis, the
debugging and optimization techniques. The timing closure is demonstrated for the DTMF
design used in various Genus RAKs.
7. Perform Generic, Mapped and Optimization synthesis and repeat steps 4, 5 & 6 as
necessary after each synthesis stage
2.1. Constraints
During the first stage of global mapping, the timing constraints are used to estimate
the initial target slack. This target slack is a timing goal for Genus to work toward
during the optimization process. Inaccurate or unrealistic constraints can lead to a bad
starting point during global mapping, and consequently, a bad result at the end. The
practice of over constraining the design with a small guard band is not recommended
in Genus.
Paths that are not constrained correctly may not appear in timing violation reports
when the user perform timing analysis. For this reason, generate pre-synthesis timing
reports first for analysis, and anytime there are constraint updates.
User must fix them first, as applicable. Some constraints may need to be modified or
new constraints might be added at this stage.
Path groups, groups paths into the specified groups and assigns them to different cost
groups. Cost groups are containers for single/multiple path groups with weights
assigned for each group as specified by the user. Cost groups multiplies the WNS of
each path group, during optimization, with the weight assigned for it.
However, there are situations in which it does not make sense to group all register to
register paths, so this method should not be applied blindly, as with all aspects of
timing optimization during synthesis. It is crucial to understand the clocking and timing
scheme of the design prior to setting up path and cost groups to control the
optimization process.
Learn more at Cadence Online Support - https://support.cadence.com
© 2019 Cadence Design Systems, Inc. All rights reserved worldwide. Page 5
Genus Quick Start Guide: Timing Analysis
Too many hierarchies in the critical path hinder the optimization. The boundaries must
be maintained, which prevents sharing and moving logic together to reduce it.
Ungrouping helps in the optimization, however ungrouping all the hierarchies can
cause problem for the downstream users.
By default, Genus performs automatic ungrouping for medium and high effort level of
synthesis.
Genus recognizes clock nets and asynchronous set and reset nets in a design and
treats them as “ideal”. This means it does not perform any optimization and buffering
on those nets. This allows them to have a high fanout and a high capacitance, but
show a zero transition, and consequently, not be considered a critical path.
However, when the user uses the clock or reset nets mixed in with the data signals,
the ideal nets suddenly become critical paths. Any logic on an ideal net will not be
properly optimized and that can cause all sorts of problems. The best design practice
is to isolate clocks and asynchronous pins from the data pins.
If all the cells have large delays, then there could be a problem with the wire-load
model, the operating conditions, or the technology library, all of which affect every cell
delay. Check the log file to see if there were any warnings when reading in the library
or when applying the constraints to the library.
If only one or two cells have unexpectedly large delays, then the user need to figure
out why. Look at the fanout, load, and slew columns in the timing report to see if any
of those factors correlate with the large delays.
Is there a high fanout that is under driven? If the cell is unable to drive the given fanout
and load requirements, the slew and delay value will be very high.
If the load is high, then check to see if it correlates with the fanout. If the load is
independent of the fanout, then it could be a bad ‘set_load’ constraint or a mis-
characterized value in the .lib file.
The slew column reflects how fast a signal is transitioning and is influenced by the
capacitive load and the drive strength of the cell. It is used by the delay models to look
up the delay for a given cell. Large transition times can be caused by a bad
‘set_input_transition’ constraint if the large slew is at the beginning of the path
or a bad cell description, which would be found in the .lib file.
Make sure that all the clocks defined using ‘define_clock’ has the -domain
argument specified with it. Else the user will have to specify false path between each
clock domain. There can be paths in the design that are constrained by two different
clocks, and the relationship between the periods is not an integer multiple. Verify that
the periods of the clocks were defined correctly.
For example,
Genus recognizes that there are exactly three periods of clock 300MHz to every period
of clock 100MHz. If the user specified a period of 3333 picoseconds for the 300MHz
clock, then Genus computes a different relationship between the clocks (3333 periods
of one clock to 10000 periods of the other) and the timing analysis of the design would
be different.
If the timing is not met for Input to Output path, check for the input and output delays
and the ‘set_max_delay’ or ‘path_delay’ constraints and verify whether they are
reasonable.
Look for the edge of the launch and the capture pins in the timing report. If they are
different it corresponds to a half path cycle. In such cases the user must ensure that
the datapath has enough time to propagate.
The best way to understand and analyze the design would be through the Global Timing
Debug (GTD). Genus provides the GTD feature for debugging the timing results. The
various Timing Debug forms provide easy visual access to the timing reports and
debugging tools. Timing Debug Window will pop up automatically if you generate the
timing debug report through GUI by typing ‘gui_show’ and then clicking on Timing
Debug Timing.
The Timing Debug form is used for debugging timing results. Use the path histogram to
identify all categories. The idea is to start looking at the big picture (overall histogram).
The Debug form shows information such as summary of timing results, path list, path
categories and can be used to start debugging the results.
The Timing Path Analyzer form is used to identify issues related to a path using slack
calculation bars, timing bar, and hierarchy view. The Slack Calculation column displays
path arrival time and required time calculations in color bars. The Data Delay column
displays the details of the selected path in the violation reports. Timing Bar displays the
instance and net delay, size of the bar indicates the delay associated. Hierarchy view
displays a path’s traversal of logical hierarchy on a time axis.
Most users like to keep it within the shell. To be good at timing analysis through shell, one
must be very fluent with all the flags and its combination of ‘report_timing’ command.
A lot of the intuition comes from experience. Study the description given about
report_timing and the examples following it.
Parameters
• -path_type {full|summary|full_clock|endpoint}:
- full is the default option.
- full_clock displays launch and capture clock path also.
- summary displays just the slack calculation without the paths.
- endpoint returns the slack for all endpoints in the design.
- Note that nworst doesn’t apply for endpoint flag
• -split_delay: Displays both drivers and load in the datapath of the report
• -user_derate: Controls the display of an additional column for the user derating
values in the timing report.
• -capture_clock_pins | -capture_clock_pins_fall_clock |
-capture_clock_pins_rise_clock | -capture_clock_pins_fall_pin
| -capture_clock_pins_rise_pin} {<pin>|<hpin>}
• -nworst <integer>: Specifies the max number of paths to report for each
endpoint
• -max_slack <integer>: Reports only paths with a slack smaller than the
specified number
• -min_slack <integer>: Reports only paths with a slack greater than the
specified number
• -logic_levels <integer>: Returns the start and end points, and the number
of levels of logic for the number of top paths
• -gui: Creates a detailed timing report in the GUI without having to use the menu
commands.
Example #1: Script to report of the endpoints and startpoints slack of top 1000 failing paths
Output
Example #2: Script to report slack and difference between clock arrival time at launch and capture clocks
Output
Output
Example #4: To return all the instance pins that are used in the path
Output
Example #5: Script to report logics between reg-to-reg. This script can be modified for different path
groups:
Output
proc intersect_fanin_fanout {x y} {
if {[get_ports -quiet $x] != ""} {
set X [all_fanout -from [get_ports $x]]
} else {
set X [all_fanout -from [get_pins $x]]
}
if {[get_ports -quiet $y] != ""} {
set Y [all_fanin -to [get_ports $y]]
} else {
set Y [all_fanin -to [get_pins $y]]
}
set result [remove_from_collection -intersect $X $Y]
return $result
}
Output
Example #7: Script to find the number of logic levels (combinational) in a timing path or group of timing
paths
Output
Output
Output:
This is another useful command in timing analysis. It reports the Worst Negative
Slack(WNS), Total Negative Slack (TNS) and Failing Endpoints (FEP) for all cost groups
defined for both Setup and DRV checks.
Note: If the user hasn’t defined any cost groups, Genus will internally create cost groups
for reporting and remove them, when the user invokes this command.
Understand the structure of the design properly and define cost groups and path
groups appropriately. If the user wants the tool to focus on a group, increase the
weight of the cost group. By default, we have path groups for each clock domain,
clock gated path group and a default path group consisting of all non-clocked
paths.
Suppose the user want the tool to focus mainly on the reg2reg paths:
Here the reg2reg is tightened by 500 whereas other groups are relaxed by 500
causing the tool to treat it with more seriousness.
So, while cost group weight would mean multiplying the WNS of the slack group
by a factor, ‘path_adjust’ is adding/subtracting the delay to all paths of that
path adjust group. Now the user could make the path adjust groups independent
For a Datapath intensive design the logic level of the timing path can be reduced
using the following methods.
Ungroup the hierarchical instances giving the major hit in slack. While ungrouping
the user must keep the following things in mind:
• Ungroup the user defined hierarchies before generic stage to give the tool
more chance of restructuring at generic stage.
• Ungroup the adders, shifters or other complex logic before map stage
syn_map
set_db ui_respects_preserve false
ungroup
set_db ui_respects_preserve true
Using the attributes and commands mentioned below, the user can ungroup the
design that contains retimed state points.
Genus works on the critical path (WNS) of each cost group until there is no more
improvement. The non-critical paths can be downsized for area saving. In the TNS
optimization mode, all endpoints of the cost group are optimized.
Optimizing for TNS reduces the number of violating paths and might reduce WNS
in some cases. However, there is a drawback on runtime and possible area
increase. To enable TNS optimization, use:
The user can also make mapper treat paths with a slack within the specified range
from the WNS as critical paths to help optimizing TNS using the command
4.6. Re-timing
Use the hard_region attribute to specify hierarchical instances that are recognized
as hard regions in the user floorplan during logic synthesis and to preserve pins
and subports.
Place and route tools operate better if the user design has no buffers between
regions at the top level. To accommodate this, specify hard regions before
mapping. The regular boundary optimization related controls are also applicable
to hard regions.
Genus automatically puts ideal attributes on the HFNs. The tool will automatically
idealize clock nets and asynchronous reset nets (only net connected directly to the
asynchronous reset pin of a flop). For all the other HFNs, except clocks and resets,
it will try to buffer these to satisfy the DRC rules. If the critical path has a buffer
chain due to HFN, idealize the net in Genus and buffer HFN later, during Place
and Route for a more efficient buffer tree.
To stop Genus from doing HFN synthesis with a fanout is greater than threshold,
issue the following commands:
Note: cdn_loop_breaker cells are inserted when the first report_timing command
is issued (before syn_generic).If there is no ‘report_timing’ before
syn_generic, then cdn_loop_breakers are inserted during the generic synthesis.
Ideally once Genus reports that a timing loop is broken, the user must determine
if it was broken in a safe location, without disabling any valid timing path. If it is a
safe location to break the loop, the user should hard code this loop-breaking point
in the user SDC file using the ‘set_disable_timing’ command. Once the loop
breaker instances inserted by Genus are removed, the user can break the loops
manually using the ‘set_disable_timing’ SDC constraint.
This enhanced optimization algorithms are only available when the user uses the
syn_map command with high effort. This attribute is automatically enabled when
the user uses physical-aware mapping and physical-aware structuring.
If the user sees buffering to break huge fanouts in a register to register path try
sequential duplication for the transitive fanout to avoid buffering.
If none of the above techniques work, probably the user may have to modify the
constraints. Even if that is unable to resolve the issue, the change must be made
in the RTL level.
The goal of timing analysis for an MMMC design is to meet the timing in one analysis
view without affecting the remaining. Luckily Genus is intelligent enough to take care the
timing of all the views while focusing on one.
User must take care of the worst-case analysis view, and work towards it using the steps
discussed for a non MMMC design. Genus will take care of the other views.
The user can report_qor to see the performance in each view. If the timing is not met or
up to the mark in the other views, the user can focus on them separately. There won’t be
much changes in first view the user had worked on.
6. LAB
The design files are provided as an attachment along with this document. The scripts are
in the SCRIPTS folder. The script run.tcl is for non-mmmc design and run_mmmc.tcl for
the mmmc design.
1. Open the SDC file in the constraints directory and read the contents. Read and
understand the SDC file properly.
1.1 The logic assignment for test mode and scan enable port are set to 0 disabling
them.
1.3 The false path is defined from reset port and test mode ports.
1.4 The hold analysis through clock enable pin is also marked as false path.(Genus
doesn't do hold analysis but passes the constraints as such to the PnR tools)
1.5 All the input and output pin delays are 300ps with respect to their appropriate
clocks except for some anomalies for the output pins in the end. They are to be
corrected. The -add_delay option is used with multiple clock sources to analyze
1.6 The design constraints max transition and fanout are also specified.
1.7 There is also a max path delay constraint on all paths from m_clk to itself.
This means it overrides the clock period for m_clk with the max_delay specified.
2. At checkpoint A, check for failed SDC commands and timing intent warnings. Fix
the intent warnings if necessary
There are no failed SDC commands, however there are 93 timing intent warning.
For example,
Here we have nine inputs, outputs and inout ports without clocked external delays
5 of them are power pins which can be ignored.
From the GUI, scan_in[2:0] and scan_out[2:0] ports are not at all connected in the
circuit at present.
The last one tdsp_pso is connected to power manager instance to power_down
pin. Similarly switch_en_out can be ignored.
Hence all 9 can be ignored.
Similarly check whether the warnings need fix and eliminate the implications of all
the warnings.
3. At check point B, you can uncomment the code to create cost groups, path adjusts
and TNS optimization technique and complete the synthesis. You must specify
your own delay value and weights for different groups and understand
4. At check point C, analyze and debug the timing violations (if any) and go back to
the necessary stages and update the constraints or attributes as required. (The
aim of the synthesis is to get slack within 10% of the fastest clock’s period which
is 300ps. )
The major effect of the cost group and path groups were seen after the optimization stage.
The cost group multiples the WNS with the path adjusts included, with the specified
weight, during optimization.
The values for the constraints and attributes must be set only after properly analyzing the
results.
Our analysis in R2R proved satisfactory. To analyze the timing of the R20 path group,use
the command ‘report_timing -group R20’.It shows that there is already a negative
slack. So, we must look at the constraints and change the output delay of 2.3 to 0.3ns as
it was the anomaly we missed in the beginning. Note that here we don’t have the Clock
Edge field, rather we have the Path Delay field, since we have set maximum delay for all
paths from m_clk to itself in the sdc file.
Run the run_mmmc.tcl file. Upon checking the timing intent, the user can see that each
view has different warnings. Solve them if they are necessary.
After having successfully eliminated the implications of all the warnings, next step is to
create cost groups and path adjusts for each group and analyze. Only the reg2reg path
of the fast view had a negative slack. Hence it was given a weight of 5 and a path adjust
of -200 and the rest 200. The user is encouraged to change these values and understand
the behavior of the tool for various values.
After syn_opt stage, the slack has turned to a positive value and hence the design in
closed for timing.
Summary
This application note had guided through the basic checks, analysis and optimization
techniques for Timing Analysis. It has also demonstrated them on a design.
References
• Genus Timing Analysis Guide for Common UI
Further Reading
• Genus Synthesis Solution™ Constraints : Appnote defining all the relevant
constraints to be used.
Support
Cadence Online Support provides access to support resources, including an extensive
knowledge base, access to software updates for Cadence products, and the ability to
interact with Cadence Customer Support. Visit https://support.cadence.com.
Videos
Refer to video library for Genus Synthesis Solution on COS:
http://support.cadence.com/TrainingBytes/Genus
Feedback
Email comments, questions, and suggestions to [email protected].