PrimeTime VX User Guide 2008
PrimeTime VX User Guide 2008
User Guide
Version B-2008.12, December 2008
Comments?
Send comments on the documentation by going
to http://solvnet.synopsys.com, then clicking
“Enter a Call to the Support Center.”
Copyright Notice and Proprietary Information
Copyright © 2008 Synopsys, Inc. All rights reserved. This software and documentation contain confidential and proprietary
information that is the property of Synopsys, Inc. The software and documentation are furnished under a license agreement and
may be used or copied only in accordance with the terms of the license agreement. No part of the software and documentation may
be reproduced, transmitted, or translated, in any form or by any means, electronic, mechanical, manual, optical, or otherwise,
without prior written permission of Synopsys, Inc., or as expressly provided by the license agreement.
Right to Copy Documentation
The license agreement with Synopsys permits licensee to make copies of the documentation for its internal use only.
Each copy shall include all copyrights, trademarks, service marks, and proprietary rights notices, if any. Licensee must
assign sequential numbers to all copies. These copies shall contain the following legend on the cover page:
“This document is duplicated with the permission of Synopsys, Inc., for the exclusive use of
__________________________________________ and its employees. This is copy number __________.”
SystemC is a trademark of the Open SystemC Initiative and is used under license.
ARM and AMBA are registered trademarks of ARM Limited.
Saber is a registered trademark of SabreMark Limited Partnership and is used under license.
All other product or company names may be trademarks of their respective owners.
ii
Contents
1. Overview
Variation-Aware Timing Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
Handling Variation by Considering Corner Cases . . . . . . . . . . . . . . . . . . . . . . . 1-2
Handling Variation by Derating . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-4
Handling Variation With Distribution Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-6
Variation-Aware and Corner-Case Min/Max Analysis . . . . . . . . . . . . . . . . . . . . 1-10
Choosing Parameters for Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-13
Analysis Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-14
Enabling and Using PrimeTime VX Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-22
Variation Analysis Modes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-22
Libraries, Variations, and Correlations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-23
Quantile and Distribution Reporting. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-23
Variation and Crosstalk Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-26
iii
Using Separate (2N+1) Libraries . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6
Full-Chip Variation-Aware Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-6
Path-Based-Only Variation-Aware Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-8
Interconnect Parameter Variation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-9
Interconnect Parameter Calculations. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-10
Reading Interconnect Parameters With Variation . . . . . . . . . . . . . . . . . . . . . . . 2-11
Interconnect Parameters With Temperature Variation . . . . . . . . . . . . . . . . . . . . 2-12
Interconnect Parasitic Corners . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2-12
iv
Variations in Design Objects . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-26
Variations in Parasitic Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-27
Glossary
Index
v
vi
Preface FIX ME!
vii
What’s New in This Release
Information about new features, enhancements, and changes, along with known problems
and limitations and resolved Synopsys Technical Action Requests (STARs), is available in
the PrimeTime VX Release Notes in SolvNet.
If prompted, enter your user name and password. If you do not have a Synopsys user
name and password, follow the instructions to register with SolvNet.
2. Select PrimeTime Suite, and then select a release in the list that appears.
Audience
This user guide is for engineers who use PrimeTime for static timing analysis. Prior
knowledge and experience with statistics and probability will be helpful in understanding the
concepts presented.
Related Publications
For additional information about PrimeTime VX, see Documentation on the Web, which is
available through SolvNet at the following address:
http://solvnet.synopsys.com/DocsOnWeb
Preface
viii
You might also want to refer to the documentation for the following related Synopsys
products:
Preface
ix
Conventions
The following conventions are used in Synopsys documentation.
Convention Description
Preface
x
Customer Support
Customer support is available through SolvNet online customer support and through
contacting the Synopsys Technical Support Center.
Accessing SolvNet
SolvNet includes an electronic knowledge base of technical articles and answers to
frequently asked questions about Synopsys tools. SolvNet also gives you access to a wide
range of Synopsys online services including software downloads, documentation on the
Web, and “Enter a Call to the Support Center.”
http://solvnet.synopsys.com
If prompted, enter your user name and password. If you do not have a Synopsys user name
and password, follow the instructions to register with SolvNet.
If you need help using SolvNet, click HELP in the top-right menu bar or in the footer.
• Open a call to your local support center from the Web by going to http://
solvnet.synopsys.com (Synopsys user name and password required), and then clicking
“Enter a Call to the Support Center.”
• Send an e-mail message to your local support center.
- E-mail [email protected] from within North America.
- Find other local support center e-mail addresses at
http://www.synopsys.com/support/support_ctr
• Telephone your local support center.
- Call (800) 245-8005 from within the continental United States.
- Call (650) 584-4200 from Canada.
- Find other local support center telephone numbers at
http://www.synopsys.com/support/support_ctr
Preface
xi
Preface
xii
1
Overview 1
PrimeTime VX adds variation-aware analysis capabilities to PrimeTime. A variation-aware
analysis increases the accuracy of timing analysis by considering the statistical distribution
of process, voltage, and temperature parameters.
1-1
Variation-Aware Timing Analysis
PrimeTime VX increases the accuracy of timing analysis in PrimeTime by considering the
statistical variation and distribution of process, voltage, and temperature parameters.
PrimeTime VX accurately determines the timing behavior of a circuit under varying
parameters, including measured parameters such as channel length and threshold voltage,
process parameters such as implant dose or gate oxidation temperatures, or parameters
derived by principal component analysis from other parameters. Given a set of variation-
aware cell libraries and the distribution of parameter values, PrimeTime VX analyzes path
timing behavior under all combinations of those parameters.
PrimeTime VX can handle timing analysis for any type of parameter, as long as the
dependency of circuit behavior on that parameter is known and can be characterized.
PrimeTime also calculates the output slew, which is needed for delay calculation of the next
stage of the timing path:
The P (process) variable represents all the process-related parameters that can affect the
delay, such as channel length and threshold voltage. To determine the circuit timing under
varying process parameters using conventional min/max analysis, you must characterize the
delays at the most extreme values for those parameters and put that information into a set
of libraries, one library per operating point.
Chapter 1: Overview
1-2
For example, suppose that the statistical distribution of channel lengths for a process
technology is a curve like the one shown in Figure 1-1. To get the worst-case behavior for
this distribution, you would choose the minimum and maximum ends of the range and
determine the effects at those points.
Number of typical
Samples actual distribution
min max
Channel length L
If another process parameter has significant variation effects, it must be considered as well.
For example, to consider both channel length and threshold voltage, you might consider a
two-dimensional plot like the one shown in Figure 1-2.
actual distribution
(darker = more likely)
Channel Length L
A typical library set might consist of three libraries characterized at three points: slow, typical,
and fast. However, this analysis is pessimistic because it considers the combination of the
most extreme parameter values, which is very unlikely to occur in practice.
For better accuracy, all the corner cases should be considered. A parameter that affects cell
delays in one way (such as fast) might affect net delays in a different way (such as slow). So
you might consider four corner cases for two parameters, eight corner cases for three
parameters, and so on.
In the past, using a few corner cases has often been adequate due the fairly limited amount
of variation in process parameters. However, in current deep-submicron process
technologies, variations in process parameters are becoming more significant, causing
corner cases to become more pessimistic and making it increasingly difficult to accurately
manage multiple parameter variations.
Chapter 1: Overview
1-4
Figure 1-3 Derating Delays for Different Channel Lengths
max D
Slope here
typ D determines
derating factor
min D
distribution
of L
Channel
min L typ L max L length L
In this example, the variation in gate delay is a function of transistor channel length. For
simplicity, variations in other parameters that might affect gate delay are ignored.
Characterization of the technology finds that the gate delay varies with channel length as
shown by the curve at the top of Figure 1-3. You create three libraries called min, typ, and
max that have the gate delays min D, typ D and max D. These libraries can be used in
PrimeTime to determine the circuit behavior at the minimum, typical, and maximum channel
lengths.
You want to determine the circuit timing when the channel length is a little less than max L,
as represented by the dotted line in the figure. You can get fairly good results without
generating a new library by specifying a derating factor with the max L library. The slope of
the curve at the maximum operating point gives a good approximation of delay as a function
of L, as long as the value of L is not too far away from max L. Thus, you use the max L library
and apply the derating factor in PrimeTime with the set_timing_derate command. A
separate analysis run is necessary for each derating factor chosen for analysis.
Similarly, you can apply different derating factors to the typ and min libraries to get good
results for values of L near typ L and min L. Expanding derating to two or more parameters
increases the scope of the analysis to areas surrounding the typical case and corner cases,
as illustrated in Figure 1-4.
typical
Threshold “slow” derating coverage
Voltage VT
Channel Length L
Because of the nonlinear dependence of D on L, this technique works well only when the
actual value of L is near the minimum, typical, or maximum value of L.
For example, in an analysis that considers the effects of channel length on gate delays, you
provide information on the distribution of channel lengths in PrimeTime VX. Then PrimeTime
VX considers the functional dependence of delay on channel lengths and calculates the
distribution of gate delays and slews, and from that information, calculates the distribution of
required times, arrival times, and slacks in the circuit.
To specify the functional dependence of delay or slew on a parameter, the cell libraries need
to characterize the behavior at the typical value and one or two nearby values. For variations
that have highly linear delay and slew response, just the typical data point and one additional
data point, either above or below the typical point, provide sufficient accuracy. An example
is shown in Figure 1-5.
Chapter 1: Overview
1-6
Figure 1-5 Delay as a Function of Parameter P
Distribution of D
typ D
Distribution
of P
Parameter
typ higher P
Given the distribution of the parameter P, PrimeTime VX calculates the distribution of delays
continuously throughout the range of values, using linear interpolation and extrapolation of
the library-defined functional operating points. In this example, interpolation and
extrapolation between the typical data point and a single data point characterized at the high
end of the distribution provide good accuracy throughout the expected range of the
parameter.
If the parameter variation has a strong effect on delay or slew and is significantly nonlinear,
you should characterize two data points, one on each side of the typical data point to get
higher accuracy throughout the variation range, as shown in Figure 1-6.
Distribution of D
typ D
Distribution
of Q
Parameter
lower typ higher Q
The surrounding data points should be close enough to the typical operating point to ensure
good accuracy at the middle of the distribution, where the actual parameter value is most
likely to occur, but also far enough away to get good accuracy at the more extreme parameter
values, where timing violations are most likely to occur.
For within-die variation, characterization of data points located one standard deviation (1σ)
away from the typical value is recommended, to get the best probable average accuracy
along the curve. For die-to-die variations, characterization of data points located three
standard deviations (3σ) away from the typical value is recommended, to get better accuracy
at the tail ends of the distribution where violations are more likely to occur.
To perform variation-aware analysis with two parameters, you must characterize the timing
behavior at three, four, or five operating points: the typical data point, plus one or two more
data points for the first parameter (with the second parameter at its typical value), plus one
or two more data points for the second parameter (with the first parameter at its typical value.
For example, for two parameters L and Vt, you might choose three points like the ones shown
in Figure 1-7 or five points like the ones shown in Figure 1-8.
Chapter 1: Overview
1-8
Figure 1-7 Three Characterization Points for Two Parameters
Threshold
Voltage VT
higher VT
higher
L
Channel Length L
Threshold
Voltage VT
higher VT
lower higher
L L
lower VT
Channel Length L
Characterization of the typical value plus one or two surrounding values for each parameter
is sufficient for accurate timing analysis throughout the expected variation ranges, while
requiring a minimum number of data points to be characterized. Any variations or changes
in parameter values can be handled quickly in PrimeTime VX, avoiding the slow process of
recharacterization and library generation.
With conventional corner-case analysis, a library must be generated for each corner case.
Typically, at least three libraries are used: minimum, typical, and maximum libraries. At least
three runs are required for a full analysis, one using each of the three libraries. Parameter
variation can be handled by a limited extent by derating, although deciding on an appropriate
derating factor can be difficult. In the end, PrimeTime reports the amount of slack under the
worst-case corner conditions, possibly adjusted by derating.
Star-RCXT PrimeRail
Corner-Case PrimeTime
Libraries (.db)
Chapter 1: Overview
1-10
Figure 1-10 Variation-Aware Timing Analysis
Star-RCXT VX PrimeRail
Parameter
Distributions
Temperature, Voltage
P distributions process, and annotations
wire sensitivity
Variation-Aware PrimeTime VX
Libraries (.db)
Constraints
(SDC) 1% quantile slack = 1.1 ns
Delay, slew, arrival, required-time,
and slack distributions
1.1
Path slack
When you run a path-based analysis with variation, PrimeTime VX maintains all the
statistical information in memory. Then you can display the statistical results graphically and
query the variation results with the get_attribute command to obtain the mean, standard
deviation, and quantile values for each type of timing result.
The worst-case slack reported by conventional min-max analysis is usually worse (more
pessimistic) because it combines all the most extreme, worst-case delays from each stage
in the path, whereas the variation-aware analysis statistically combines the distribution of
delays from each stage. Figure 1-11 shows how PrimeTime calculates the cumulative delay
along this path using conventional min/max analysis, while Figure 1-12 shows how it
calculates the same cumulative delay using variation-aware analysis.
min-max
gate delay min typ min typ max
max min typ max min typ max
.008 .010 .013 .008 .010 .013 .008 .010 .013 .008 .010 .013
cumulative min-max
delay of path segment min typ max
.032 .040 .052
reported reported
min delay max delay
variation-aware
distribution of
gate delay mean = .010 mean = .010 mean = .010 mean = .010
σ, skewness σ, skewness σ, skewness σ, skewness
Chapter 1: Overview
1-12
For this example, we consider only the gate delays and ignore the net delays. Assume also
that the variation in gate delays is random and not correlated between different gates in the
path.
Note:
In this manual, “correlated” means “statistically dependent” and “uncorrelated” means
“statistically independent.”
Using conventional min-max analysis as shown in Figure 1-11, PrimeTime adds the
minimum delays to obtain the total minimum delay of the path segment, and it adds the
maximum delays to obtain the total maximum delay of the path segment. This gives the
worst-case extremes of total delay, without information about the relative likelihood between
these two extremes.
Using variation-aware analysis as shown in Figure 1-12, PrimeTime VX combines the delays
statistically to get the distribution of the total delay for the path segment. This results in a
more realistic, less pessimistic model of total delay for the path segment.
A process technology can be characterized by first analyzing the large number of process
parameter variations, followed by principal component analysis to reduce those variations to
a few uncorrelated components. These components can be used in a variation-aware
analysis to account for variations in the analyzed process parameters.
PrimeTime VX can handle multiple components per parameter. For example, a channel-
length variation can be written as a sum of uncorrelated terms such as the following:
The reference component is the primary component that carries the mean value of the
parameter variation. The other components represent the variation in the parameter that can
be attributed to various causes, such as the fab-to-fab variation, lot-to-lot variation from a fab,
wafer-to-wafer variation in a lot, die-to-die variation in a wafer, within-die variation, and so on.
Each variation component has a different form and magnitude. For example, the lot-to-lot
variation might be larger than the wafer-to-wafer variation. The mean value of each variation
component is zero.
The reference component value is specified in the library, whereas the variation components
are specified in the PrimeTime VX environment. Therefore, you can change the variation
components and analyze the results with a given set of libraries, without going through the
time-consuming process of generating a new set of libraries for each variation change. In
PrimeTime VX, the command for invoking a library and its reference component values is
set_variation_library, using the -reference_value and -values options. The
command for specifying a variation component is set_variation.
Analysis Example
The following example demonstrates typical usage of variation-aware analysis in a
PrimeTime VX session, including the display of arrival time and slack variations in the
PrimeTime graphical user interface (GUI). In this example, the analysis considers the
variation of three process parameters and their effects on delay, slew, and slack.
The flow in this example consists of the following steps in PrimeTime VX:
Chapter 1: Overview
1-14
2. Enable variation-aware analysis and set the variation-aware libraries used for analysis.
These libraries characterize cell behavior at different parameter values.
3. Specify the variation and correlation characteristics of the characterized parameters in
the design.
4. Set the timing constraints (clocks, input delays, output delays, and input transition times).
5. Read in the parasitics with variation data. You can either choose a simple normal
distribution for the characterized parameters or explicitly specify the variation and
correlation characteristics.
6. Run update_timing and generate timing reports for the most critical timing paths
based on variation analysis.
7. If you want to further reduce any remaining pessimism in the analysis, run a path-based
variation analysis of the critical paths. You can get detailed statistical results by reading
the timing reports, by viewing graphs and plots in the GUI, and by reading statistical
values directly from the design with the get_attribute command.
Figure 1-13 shows the GUI Timing Analysis Driver window containing a list of the worst-slack
maximum-delay paths in the design. The paths are sorted in order of increasing slack. The
worst path has a reported slack of –0.19 time units. PrimeTime VX calculates the path slack
as a variation, but for listing and comparison purposes, it uses the low quantile of the
variation (0.00135 by default).
Analysis Example
1-15
Figure 1-13 Recalculated Path Table
Right-click
To get a report on the slack variations for the paths in the list, you select those paths, right-
click, and choose New Recalculated Path Comparison Table. PrimeTime VX recalculates the
selected paths and saves all the variation-aware timing parameters (arrival times, required
times, and slacks) for those paths. It displays the results in a table and a graph as shown in
Figure 1-14.
Chapter 1: Overview
1-16
Figure 1-14 Statistical View With Slack PDF Plot
In the slack probability density function (PDF) plot, the curve shows the distribution of slack
values for the path, given the specified variation in the characterized parameters. The total
area under the curve is 1.0. The cross-hatched area under the curve to the left of slack=0.0
represents the probability of timing failure for this constraint. In this case, the probability of
failure is 1.2 percent.
The check boxes below the plot let you display or not display the mean, standard deviation,
bound, and quantile points of the plot. Figure 1-15 shows the plot with all the markers
enabled. The markers are color-coded in the plot.
Analysis Example
1-17
Figure 1-15 Slack PDF Plot With Markers
The mean value is marked with a dark olive color. This particular distribution is nearly
symmetrical, so the mean is very close to the q50 or median value, marked in red. Multiple
standard deviation (s) values around the mean are marked in a light olive color. In this
example, essentially all of the curve lies between plus or minus three standard deviations
from the mean.
The quantile points marked in the distribution represent the arrival times at which the
probability of arrival at less than or equal to that time will be a given value: 1, 50, or 99
percent. For example, the 99 percent (q99) quantile point is at the time value 0.58, which
means that the probability of arrival at or before time = 0.58 is 99 percent.
An alternative type of plot of the same data is a cumulative distribution function (CDF). To
view a CDF plot, select CDF in the Curve Type pull-down option above the plot. See
Figure 1-16. The CDF plot shows the probability that the arrival time will be less than or equal
to each value.
Chapter 1: Overview
1-18
Figure 1-16 Slack CDF Plot
The CDF starts at zero for low values of arrival time and increases to 1.0 for high values. This
plot is the integral (cumulative area under the curve) of the PDF plot.
You can display multiple, overlapping PDF plots for different paths in the same graph. First
select the paths of interest in the Timing Analysis Driver window or by using the Select >
Paths From/Through/To. Then choose Timing > New Recalculated Path Comparison Table.
See Figure 1-17 for an example.
Analysis Example
1-19
Figure 1-17 Multiple PDF Plots in One Graph
You can show or hide each PDF curve by checking or unchecking the boxes in the Show
column of the path list. You can select a path by clicking on its entry in the list or on its PDF
curve in the graph. The PDF curve for the selected path is drawn in magenta and the rest
are drawn in blue. The statistical markers (mean, quantiles, and so on) are shown for the
single selected path only. If multiple paths are selected or no paths are selected, no
statistical markers are shown.
For a particular path, you can display the distributions of arrival times at different points along
the path. From the recalculated path comparison table, right-click the path of interest and
then choose New Path Pin Comparison Table. This displays the arrival PDFs for successive
points along the path, as shown in Figure 1-18. Note that the arrival distributions become
wider and flatter as you go further along the path.
Chapter 1: Overview
1-20
Figure 1-18 Arrival PDFs for Points Along a Path
To view statistical information such as the mean and standard deviation for the arrival time
at one point in the path, click on its distribution curve or select the corresponding driver or
receiver pin in the path pin list. In the foregoing figure, the arrival at pin U3351/I is selected.
The mean arrival time is at 0.50 time units.
To view the plot for just one point in the path, select all of the points, click the Hide Selected
button, and then click the Show box in the path pin list.
To view the slew rather than arrival distribution, select Slew in the Info Type pull-down option
above the plot. For example, Figure 1-19 shows the slew PDF plots for all the pins along the
path.
Analysis Example
1-21
Figure 1-19 Slew PDF Plot
In the default mode, PrimeTime VX performs variation-aware analysis for both full-chip
analysis and path-based analysis. In path-based analysis, you use the
get_timing_paths and get_recalculated_timing_paths commands to analyze a
selected set of paths with enhanced accuracy.
Chapter 1: Overview
1-22
In the path_based_only mode, PrimeTime VX performs conventional corner-case
analysis for full-chip analysis and variation-aware analysis for path-based analysis. For full-
chip analysis, PrimeTime uses the corner-case libraries specified by the link_path
variable. For path-based analysis, PrimeTime VX uses the variation libraries specified by the
set_variation_library command.
You specify the actual parameter values in PrimeTime VX by using the create_variation
command. This command specifies the parameter name, value, and mathematical
distribution of the parameter. To apply a variation to the whole design or a timing object in
the design, you use the set_variation command. The create_correlation and
set_variation_correlation commands specify the correlation relationship between
different instances of the same variation. For details, see Chapter 3, “Variations and
Correlations.”
Chapter 1: Overview
1-24
clock wb_clk_i (rise edge) 2.50 2.50
clock source latency 0.00 2.50
wb_clk_i (in) 0.00 & 2.50 r
BUFFD16_G1B1I2/Z (BUFFD16) 0.16 & 2.66 r
wishbone/BUFFD16_G1B2I56/Z (BUFFD16) 0.09 & 2.75 r
wishbone/IncrTxPointer_reg/CP (SEDFCND0) 0.00 & 2.75 r
clock reconvergence pessimism 0.00 2.75
clock uncertainty -0.10 2.65
library setup time -0.28 2.37
data required time 2.37
-------------------------------------------------------------------
data required time 2.37
data arrival time -2.48
-------------------------------------------------------------------
slack -0.11
statistical adjustment (slack) 0.10 -0.01
slack (VIOLATED) (with probability 0.012) -0.01
The first timing report shows the worst-case analysis results using fixed values derived from
the quantiles of the variations. The reported slack is –0.19 time units.
The second timing report shows the variation-aware, path-based analysis of the critical path.
In a path-based analysis with variation, PrimeTime VX retains all of the statistical delay,
transition time, arrival time, and slack distribution information. As in conventional path-based
analysis, pessimism is reduced by a more exact accounting of input conditions.
The slack is initially calculated by subtracting the quantile of the “data arrival time” from the
quantile of the “data required time,” giving a result of –0.11 time units. However, this is not
the same as subtracting the distributions of these two time values and then taking the
quantile of the result. The latter method is the correct way to calculate the slack with
variation. Accordingly, an additional “statistical adjustment” of 0.10 time units is applied to
arrive at the correct statistical value. The final result is a reported slack of –0.01 time units
at the q01 quantile of the slack distribution (refer to Figure 1-14 on page 1-17 for a graphical
display of the slack distribution). The probability of failure (slack less than zero) is reported
as 0.012, or 1.2 percent.
By default, the 0.00135 and 0.99865 quantile points of a distribution are considered the
minimum and maximum values for reporting purposes, corresponding to the –3*sigma and
+3*sigma points of a perfectly normal distribution. For example, the 0.00135 quantile point
of a slack distribution is considered the worst-case slack. You can specify other quantiles
with the set_variation_quantile command. For example, the command to use the
0.02 and 0.98 quantile points is:
pt_shell> set_variation_quantile \
-quantile_low 0.02 -quantile_high 0.98
You can change the quantile settings and generate a new timing report without running a
new timing update.
To calculate the worst delta delay and bump height for a crosstalk situation, PrimeTime SI
considers the parameter variations of cells, parasitic data, pin capacitance, and aggressor
slew. It finds the worst-case delta delay based on the distribution of each parameter and the
impact of the parameter on overall coupled stage delay. Each delta delay value shifts the
entire victim arrival distribution by the calculated amount. This shift can affect uncoupled
variation-aware arrival windows downstream from the victim net.
In the current release, the PrimeTime SI composite aggressor feature is not compatible with
variation-aware analysis.
Chapter 1: Overview
1-26
2
Libraries and Interconnect Parameters 2
Variation-aware static timing analysis requires library cells that have been characterized at
multiple points in the variation space. You need to load and link your design to the variation-
aware library or libraries containing the variation data. To read in parasitic data with statistical
variation, you must use the -keep_variations option of the read_parasitics
command.
2-1
Variation-Aware Library Creation
A library used for analysis in PrimeTime VX specifies the timing behavior of cells at one or
more variation data points. To determine the circuit behavior under a distribution of
parameter values, the libraries need to characterize the behavior at two or three values of
each variation parameter. Figure 2-1 shows an example. For more information about
selecting characterization points, see “Handling Variation With Distribution Data” on
page 1-6.
Distribution of D
typ D
Distribution
of Q
Parameter
lower typ higher Q
For timing analysis in PrimeTime VX, you read in the libraries and specify the actual
parameter values with the create_variation command and apply them to the design or
to design objects with the set_variation command, as described in Chapter 3,
“Variations and Correlations.” Given the distribution of the parameter, PrimeTime VX
calculates the distribution of delays and slews continuously throughout the range of values,
using interpolation and extrapolation of data surrounding the library-defined operating
points.
The Liberty NCX characterization tool from Synopsys can create a single unified library and
can also merge multiple existing libraries into a single unified library. Then you can read the
unified library into PrimeTime VX as a single step. PrimeTime VX analysis results and
runtime are essentially the same whether you use a single unified library or separate
libraries. However, using a unified library is preferred because it is simpler and less prone to
error. Unified libraries always use the compact CCS format, whereas separate libraries can
use either the compact or expanded CCS format.
A unified library contains all the information on the characterized variation values. When you
use a unified library, you only need to link in that library and then use the
create_variation and set_variation commands to specify the distribution of
parameter values for timing analysis. On the other hand, if you are using a set of 2N+1
separate libraries, you first link the nominal library as the main library and then use 2N+1
set_variation_library commands to establish the variation parameters, before you
use the create_variation and set_variation commands.
If you are using 2N+1 separate variation libraries, you need to know the characterized
parameter values for each library so that you can specify these same values when you use
the libraries in PrimeTime VX. It is a good idea to name each library in a manner to suggest
the operating point, for example, “lowL3.2.lib” and “highL3.8.lib.”
# Analysis
set variation_enable_analysis true
update_timing
You can read and use multiple unified variation-aware libraries containing different cells, as
long as the libraries have the same variation parameters, characterized at the same values.
For example, you might have one unified library named va_lib1.db containing high-Vt cells,
and another library named va_lib2.db containing low-Vt cells. To use both unified libraries at
the same time, put them both in the link path. For example,
# Define variations
set_variation [create_variation -name len \
-parameter_name len -type normal -values {0 1}]
set_variation [create_variation -name vt \
-parameter_name vt -type normal -values {0 1}]
...
# Analysis
set variation_enable_analysis true
update_timing
# Define variations
set_variation [create_variation -name len \
-parameter_name len -type normal -values {0 1}]
set_variation [create_variation -name vt \
-parameter_name vt -type normal -values {0 1}]
...
# Path-based variation-aware analysis
set variation_enable_analysis true
set variation_analysis_mode path_based_only
report_timing ... [get_recalculated_timing_paths ... \
[get_timing_paths ...]]
The cells in both the CCS-based variation-aware library and the minimum library must match
the cells in the maximum library with respect to cell names, pin names, and timing arcs. The
variation_enable_analysis variable must be set to true prior to the read_db
command.
If you are using multiple unified variation-aware libraries containing different sets of cells, put
the corner-case libraries in the link path. Read in the variation-aware libraries as needed with
the set_variation_library -link_library and read_db commands. For example,
You can read and use multiple sets of variation-aware libraries containing different cells, as
long as the libraries have the same variation parameters, characterized at the same values.
For example, you might have one set of 2N+1 libraries containing high-Vt cells, and a similar
set of libraries containing low-Vt cells. In that case, put the nominal libraries in the link path.
Then, in each group of set_variation_library commands, use the -link_library
option to specify the nominal library in the link path associated with the variation library set.
For example,
In the foregoing example, there are two sets of variation libraries, va_lib1_*.db and
va_lib2_*.db, and an unrelated library, other_lib.db. The -link_library option in
the nominal-library set_variation_library command associates the current set of
variation libraries to a library in the link path. The set_variation_library commands
for a group must be together, with the nominal library specified first.
If you are using a single set of 2N+1 separate libraries for the statistical part of the analysis,
you use 2N+1 set_variation_library commands to establish the variation
parameters. For example,
To read in parasitic data with variation sensitivity information generated by Star-RCXT VX,
use the -keep_variations option in the read_parasitics command. You can either
choose to create normal distributions for all interconnect variations, or you can explicitly
specify the interconnect variations with the create_variation and set_variation
commands.
⎛ ⎞
C = C 0 ⎜ 1 + ∑c i Δv i⎟
⎝ i ⎠
where C0 is the nominal capacitance, ci is the sensitivity coefficient for capacitance with
respect to a given variation parameter vi, and Δvi is the change in that variation parameter.
⎛ 1 + ∑n Δv ⎞
⎜ i i⎟
R = R 0 ------------------------⎟
⎜ i
⎜ ⎟
⎜ 1 + ∑d j Δv j ⎟
⎝ j ⎠
where R0 is the nominal resistance, ni is the sensitivity coefficient for resistance with respect
to a given process variation vi that affects the resistance in the numerator, Δvi is the change
in that variation parameter, dj is the sensitivity coefficient for resistance with respect to a
given process variation vj that affects the resistance in the denominator, and Δvj is the
change in that variation parameter.
where R0 is the nominal resistance, a and b are the temperature sensitivity coefficients for
resistance, and ΔT is the change in temperature.
To read in interconnect parameter data with variation sensitivity information, use the
-keep_variations option in the read_parasitics command. For example,
To explicitly set the interconnect variations in PrimeTime VX, do not use the
-create_default_variations option. Instead, use create_variation and
set_variation. For example,
To report annotated parasitic data and show the interconnect parameter variation
information, use the -variation option of the report_annotated_parasitics
command. For example,
When you run read_parasitics -keep_variations and the parasitics file has
temperature variation information, the parasitic information is remapped to the global
analysis temperature specified by set_operating_conditions, even if this temperature
is different from the global temperature used for extraction by Star-RCXT. If the
-keep_variations option is not used, the parasitics information is fixed at the global
extraction temperature. If desired, temperature scaling can also be performed for a non-VX
PrimeTime analysis by using the -keep_variations option. However, note that a
PrimeTime VX license is needed to perform the conversion.
In all cases, the parasitic remapping to the analysis temperature is performed only during
read_parasitics -keep_variations. After this conversion is done, the temperature
sensitivity information is no longer kept in memory. Therefore, the global operating condition
should be defined before the parasitics are read in. Any subsequent changes in operating
condition temperature do not affect in the in-memory parasitics.
The command works in conjunction with a text file that specifies a set of variation ratios used
to calculate the interconnect parasitic values. For example,
You need to provide a simple ASCII text file containing the corner definitions as a set of
variation ratios. For example:
CORNER_NAME: CMAX
M1_W 1.2
M2_T 0.4
ILD_c_T -2.0
CORNER_NAME: RCMAX
## my definition of RCMAX
M1_W 0.25
M2_T 0.16
ILD_c_T -0.22
CORNER_NAME: RCMIN
M1_W -0.23
M2_T -0.11
ILD_c_T 0.04
CORNER_NAME: CMIN
M1_W -0.18
M2_T -0.14
ILD_c_T 0.06
This example defines four sets of corner parasitics called CMAX, RCMAX, RCMIN, and
CMIN. For the CMAX corner, the M1_W parameter is changed in the positive direction from
nominal (+1.2 multiplied by the M1_W variation coefficient), the M2_T parameter is changed
in the positive direction from nominal (+0.4 multiplied by the M2_T variation coefficient), and
the ILD_c_T parameter is changed in the negative direction from nominal (–2.0 multiplied by
the ILD_c_T variation coefficient). The variation coefficients are contained within the
sensitivity parasitics file.
CORNER_NAME: name
param_name param_variation_ratio
param_name param_variation_ratio
...
CORNER_NAME: name
param_name param_variation_ratio
param_name param_variation_ratio
...
The file should contain at least one corner definition. A corner definition can specify any
number of parameter names (including zero names) and a corresponding
param_variation_ratio value for each parameter. PrimeTime VX multiplies the
param_variation_ratio value by the variation coefficient specified for the parameter in the
parasitic data file, and then multiplies that result by the nominal parameter value to get the
change in value used for analysis.
To report parasitic corner information that has been set, use the command
report_annotated_parasitics -variation. To report the parasitic sensitivity of
nets, use the report_variation command. For details, see Chapter 3, “Variations and
Correlations.”
3-1
Parameter Variation and Correlation
The cell libraries specify the dependency of cell delays and slews on parameters, but not the
probability distributions of those parameters. You specify the distributions in PrimeTime VX
by using the following commands:
create_variation
[-name variation_name]
[-parameter_name parameter_name]
-type distribution_type
-values values_list
[-lower_bound lower_bound]
[-upper_bound upper_bound]
For example, the following commands load a variation library having parameters “len” and
“vth,” create a variation named “Lfab” for parameter “len,” and set the variation on the current
design:
pt_shell> set_variation_library \
-parameter_names "len vth" \
-values "100 0.2394" maxvth.db
create_variation
The create_variation command creates a new variation object and returns a collection
containing that variation. You can specify a variation name with the -name option, allowing
you to reference that variation later with the get_variations command. Any string that
has not already been used can be specified as the variation name.
The -parameter_name option specifies the process parameter associated with the
variation. The specified parameter must be defined with the set_variation_library
command or defined in the parasitic data file read in with the read_parasitics command.
Multiple variations can be associated with one parameter.
If the -parameter_name option is not used, the variation is not associated with any
parameter and has no direct effect on the design. However, it can still be used by the
variation commands such as add_variation, sub_variation, max_variation, and
min_variation.
The -type and -values settings specify the statistical distribution of the variation.
Table 3-1 shows the types of distributions you can specify and the values associated with
each type.
constant {a b}
uniform {a b}
You can optionally specify upper and lower bounds by using the -lower_bound and
-upper_bound options.
To remove a variation that you no longer want, use the remove_variation command. This
is the command syntax:
remove_variation
-all | variation_list
Normal Distribution
The following command creates a normal (Gaussian) distribution with a mean value of 100
and a sigma (standard deviation) of 3.34:
100
By default, the distribution is unbounded at both ends. To truncate the distribution at one end
or both ends, use one or both of the options -lower_bound and -upper_bound. For
example,
93 100 107
Piecewise-Linear Distribution
The following command creates a piecewise-linear distribution. The pairs of values in the
value list specify the data points in the distribution.
Empirical Distribution
The following command creates an empirical distribution. The sequential list of values
(possibly generated by simulation or other empirical means) specifies the distribution. The
likelihood that each sample value will occur is 1.0 divided by the sample size.
Constant Distribution
The following command creates a constant distribution that models the case where there is
no statistical variation. The value is a single number. This distribution is the same as a
discrete distribution having a single value with a probability 1.0. The constant distribution can
be used to mathematically shift another distribution by a fixed amount, using the commands
described in “Math Operations on Variations” on page 3-14.
Uniform Distribution
The following command creates a uniform distribution. A single pair of values specifies the
minimum value a and maximum value b of the range. The probability density function has a
constant value equal to 1/(b–a).
Lognormal Distribution
The following command creates a lognormal distribution. The first value is mu (μ) and the
second value is sigma (σ).
1.0 mu = 0.0
sigma = 0.5
1.0 2.0
A random variable X has a lognormal distribution with parameters μ and σ if log(X) has a
normal distribution with mean μ and standard deviation σ. The lognormal distribution has
support over the range (0.0, infinity).
By default, the distribution is unbounded at the upper end. To truncate the upper range, use
the -upper_bound option. For example,
Discrete Distribution
The following command creates a finite discrete distribution. The list contains a sequence of
paired numbers. In each pair of numbers xi and pi , the first number xi is an outcome of the
variation and pi is the probability of that outcome. The sequence of numbers xi must be
monotonically increasing. The numbers p1 through pn must be strictly positive and must add
up to 1.0.
set_variation
The set_variation commands applies one or more variation objects to timing objects in
the design or to the whole design. Each variation object specified in the command must have
been created previously with the create_variation command using the
-parameter_name option. Applying a variation object on a timing object affects the timing
behavior of that object.
set_variation
variation_list
[design_object_list]
You specify a single variation, a list of variations, or a collection of variation to apply, and
optionally a list of objects in the design on which to apply the variations, such as a collection
cell arcs. If no object list is specified, the variations apply to the whole design, affecting all
occurrences of the associated parameter.
reset_variation
[-all]
[variation_list]
[design_object_list]
create_correlation
-name string
-constant float | -cross_correlations float_list |
-physical_distance float_list
set_variation_correlation
-name variation_correlation_name
-correlation correlation_name
-all | variation_object_list
For example, the following commands load a variation library having parameters “len” and
“vth,” create variations named “Lfab1” and “Lfab2” for the two parameters, create a full
correction object, and apply that correlation object to the two variations:
pt_shell> set_variation_library \
-parameter_names "len vth" \
-values "100 0.2394" len_vth.db
Auto-Correlation
Auto-correlation is the correlation between different instances of the same variation. You
specify the correlation value by using the create_correlation command with the
-constant option. For example,
The constant is the correlation value between two instances of the variation. A value of 0.0
means that different instances of the variation within a die are statistically independent. This
correlation value is recommended for modeling within-die, on-chip variation because such
random variations are uncorrelated. A value of 1.0 means that different instances of the
variation are all identical within a die. This correlation value is recommended for modeling
die-to-die variations because such variations are highly correlated within a die.
Die 1
Die 2
Die 3
This type of variation can be modeled as two components. One component is the small,
uncorrelated within-die variation. The other component is the larger, correlated die-to-die
variation.
A parameter can also be partially correlated, having a correlation value between 0.0 and 1.0.
For a partial correlation, it is assumed that the variation has a normal distribution and that
two instances of the variation have a bivariate normal distribution with a correlation equal to
the specified constant value. If a correlation is not specified on a variation, it is assumed to
be a constant correlation with a value of 1.0.
The variations applied to each device or parasitic variation are assumed to be jointly normal.
The values specified with the -cross_correlations correspond to the number of
parameters in the lower triangular correlation matrix. If (A, B, C, D) are four variations, the
sequential list of values corresponds to the correlations
The number of cross-correlation terms entered in the command must correspond to the
number of variations to which the correlation object is applied; N parameters require
N(N-1) / 2 coefficients. In addition, the matrix must be positive definite, which implies that the
set of variations is the minimal set, without a linear relationship between any members of the
set, and which cannot be reduced to a lower number of primitive variations. Joint normality
of a vector of variations implies normality of each variation.
You can define multiple sets of cross-correlated variations. However, a given variation can
belong to no more than one cross-correlated set. All parameters within one cross-correlation
set must have the same auto-correlation value, either all constant 0.0 or all constant 1.0.
Spatial Correlation
Spatial correlation is correlation between device variations that is a function of the physical
distance between the objects on the die. This within-die correlation applies only to device
variations only, not to parasitic data variations.
Spatial correlation is described by a correlation function ρ (d). For a variation X(u) at the
physical location u, ρ (d) = Corr(X(u), X(u+d)). The position u is in a two-dimensional plane
and d is the Euclidean distance separating the two devices. This function has a value of 1.0
at d = 0.0 and typically decreases and tapers off to 0.0 as d becomes larger.
The correlation function must be estimated by the user. You enter the correlation information
as a list of points: (d1 ρ 1 d2 ρ 2 ... dn ρ n) that approximate the function. The distances d
must be greater than 0.0 and must be in increasing order, and the values ρ 1, ρ 2, ... ρ n must
be between –1.0 and +1.0. The variations are assumed to have a normal distribution, or in
other words, for all integers n and all locations u1, u2, ..., un, the vector (X(u1),X(u2),...,X(un))
has a multivariate distribution.
The physical location information must be specified in the SBPF data files. The variable
read_parasitics_load_locations must be set to true prior to reading in the
parasitics. You enter the correlation information by using the create_correlation
command with the -physical_distance option, with distance units in nanometers. For
example, the following script creates a spatial correlation named “c_spatial” and applies it to
a variation called “len” in the SPEF data file sptl_corr.spef.
add_variation var_object_list
sub_variation var_object_list
max_variation var_object_list
min_variation var_object_list
get_random_numbers
-sample_size num_points
-seed seed_value
variation_object
The add_variation command statistically adds two or more variations, producing a new
variation. The object list specified in the command must be a collection of two or more
variations. Note that adding two variations, then adding the resulting sum to a third variation,
can produce a different result from adding the three variations together at the same time.
The sub_variation command statistically subtracts one variation from another. The
object list specified in the command must be a collection of two variations.
The max_variation command returns a variation that is the statistical maximum of the
variations in the specified collection. The result can be different from any of the original
variations in the specified collection. The min_variation command works in a similar
manner, returning a new variation that is the minimum of the variations in the collection.
The following command creates a variation object named v1 having a normal distribution
with a mean value of 15.0 and a standard deviation of 2.0:
The following command creates a variation object named v2 having a normal distribution
with a mean value of 10.0 and a standard deviation of 5.0:
The following command sets the random variable a1 to the sum of v1 and v2 (previously
collected in c1):
The following command subtracts v2 from v1 and sets the variable s1 to the result:
The following command sets the variable mx to the larger of v1 or v2 (previously collected in
c1):
The following command sets the variable mn to the smaller of v1 or v2 (previously collected
in c1):
The set_timing_derate command adjusts the calculated delays of the paths in the
whole design or in specified library cells or cell instances. You can get a more conservative
analysis by making long path delays longer and short path delays shorter, or get a less
conservative analysis by doing the opposite.
set_timing_derate
[-early] [-late]
[-rise] [-fall]
[-clock] [-data]
[-net_delay] [-cell_delay] [-cell_check]
[-static] [-dynamic]
[-scalar] [-variation]
value
[object_list]
It may be desirable to use larger derating factors for corner-case delays, and to use smaller
factors for statistical delays that already account for the effects of known variations. For this
reason, there are separate derating settings for corner-case and statistical delays.
For statistical derating, use the -variation option; or for corner-case derating, use the
-scalar option. For example,
The early and late scalar derating factors 0.9 and 1.2 apply to corner-case timing and to cells
or nets that do not have variation data, such as macrocells, pad cells, or other cells without
variation models. Early (minimum) path delays are decreased by 10 percent and late
(maximum) path delays are increased by 20 percent. This causes a more conservative
analysis than leaving delays at their original calculated values.
The early and late variation derating factors 0.96 and 1.08 apply to statistical delays,
including cell arcs of cell instances with variation data and net arcs of nets with interconnect
variation data. Early (minimum) path delay distributions are decreased by 4 percent and late
(maximum) path delay distributions are increased by 8 percent.
For statistical delay variations, PrimeTime VX multiplies the derating factor by the whole
distribution. This causes the mean value, standard deviation, and peak value of the
distribution to change, as shown by the example in Figure 3-7.
Original Derated
distribution distribution
Delay multiplied
by1.08
Delay
In the unusual case of negative delay values, a different derating formula is used to
consistently give a more conservative analysis:
When part or all of the delay distribution is negative, the negative part of the delay is adjusted
as shown in Figure 3-8.
Original Derated
distribution distribution
Delay
0
To report derating factors that have been set, use the report_timing_derate command.
Use the -variation option to report statistical derating settings, or omit the option to report
scalar settings.
Reporting Variations
You can report variations used in the design by using the report_variation command.
In the command, you specify a collection of objects to be reported. The collection can
contain paths collected with the get_recalculated_timing_paths command; cells
Reporting Variations
3-17
collected with the get_cells command; nets collected with the get_nets command; or
library cells collected with the get_lib_cells -of_objects command. If no collection
is specified, the command applies to the whole current design.
You can sort and filter collections based on variation-aware slack, arrival times, and so on by
setting a variable that controls the variation-derived attribute mode:
variation_derived_scalar_attribute_mode
report_variation
[-significant_digits digits]
[-verbose]
[-nosplit]
[-delay_type delay_type]
[-slack_lesser_than slack_limit]
[-nworst num_worst]
[-clock_network]
[-all_cells]
[-all_nets]
[-transition]
[-parametric_sensitivity parameter_list]
[-input_pins]
[collection]
Variation Sensitivity
The statistical sensitivity of a timing distribution attribute (such as arrival time or slack) is a
measure of how much that attribute changes in response to changes in related variations.
The sensitivity values in a design and the sensitivity values of timing arcs in a library can be
reported with the report_variation command.
For any timing distribution “A,” the sensitivity of that distribution is defined to be the
normalized variance of its distribution, calculated as follows:
The sensitivity of distribution “A” is the standard deviation of “A” divided by the absolute value
of the mean of “A.” If the mean of “A” is zero or very close to zero, a small threshold value is
used instead of the zero or near-zero value.
sensitivity(constrained_path) = sensitivity(variation_slack)
sensitivity(unconstrained_path) = sensitivity(variation_arrival)
Each timing point within a path has an arrival time sensitivity and a transition time sensitivity:
delay_sensitivity(point) = sensitivity(variation_arrival)
slew_sensitivity(point) = sensitivity(variation_transition)
Library arcs have sensitivity values that indicate the sensitivity of delay and slew with
changes in a random variable rv:
Note that the two different types of sensitivities described here are fundamentally different in
what they represent. The path and timing point sensitivity values contained within path
objects are indicators of the design sensitivity to variations in the context of the design.
These values represent the amount of variation relative to the mean value of the measured
path or point attribute. This type of normalized sensitivity is known as “design sensitivity.”
The sensitivity values obtained from library arcs are called “library sensitivity” values. Rather
than representing the amount of normalized variation relative to the arc itself, library
sensitivity represents the amount of variation relative to a specific variation parameter of
interest. Library sensitivity is not normalized; its magnitude depends on how the library arc
timing data changes with a given change in parameter value.
Reporting Variations
3-19
Variation-Derived Scalar Attributes
When variation-aware analysis is enabled, getting a timing_path attribute called slack
returns the low quantile slack value for the path. For example,
In this example, the quantile slack obtained by variation-aware analysis is –0.455 time units.
PrimeTime VX uses separate attributes to hold the fixed slack and variation-aware slack.
The name of the variation-aware attribute is variation_slack, made by adding the string
variation_ as a prefix. There are also variables named variation_arrival,
variation_transition, and so on.
Depending on the variable setting, PrimeTime reports the less conservative mean value of
the slack distribution or the more conservative corner-case slack value.
The report shows the path startpoint, path endpoint, slack at the low quantile, mean slack,
standard deviation of slack, and the slack sensitivity. Sensitivity values are reported in
percent:
A verbose report on path variations (using the -vebose option) looks like this:
Reporting Variations
3-21
Point arrival quantile sensitiv mean std inc
---------------------------------------------------------------------
clk (in) 0.000000 0.000000 0.000000 ... ...
b01/ZN (INVD1) 0.009146 2.494643 0.008588 ... ...
b02/ZN (INVD1) * 0.033515 3.722505 0.030891 ... ...
b11/ZN (INVD1) 0.048736 2.773270 0.046092 ... ...
b12/ZN (INVD1) 0.065878 2.346163 0.062349 ... ...
ff1/CP (DFD1) 0.065878 2.346163 0.062349 ... ...
ff1/Q (DFD1) * 0.200045 3.751771 0.183375 ... ...
b21/ZN (INVD1) 0.219267 3.440833 0.202071 ... ...
...
The verbose report includes the quantile and sensitivity values, mean, standard deviation,
and incremental standard deviation for the arrival time of each timing point along the path;
and the quantile, sensitivity, mean, and standard deviation values for the whole-path arrival
time, slack, required time, startpoint clock latency, and endpoint clock latency, where
applicable. The asterisk characters (*) in the list indicate the stages having the highest
incremental standard deviation of the arrival time in the launch path, data path, and capture
path. Use the -input_pins option if you want the variation report to include the arrival
times at cell inputs as well as at the cell outputs along the path.
Variations in Cells
To get a report on the sensitivity of one or more cells in the design, create a collection of
those cells and apply the report_variation command. For example, the following
commands report the variations in three specified cells in the design:
The default report lists the slack, the scalar arc delay, and the mean and standard deviation
of the statistical arc delay for the worst timing arc through the cell. The worst arc is the arc
with the highest standard deviation of arc delay among all timing arcs of the cell. The slack
of an arc is the slack of the worst-case timing path through the arc. In order to report slack
values, the variable timing_save_pin_arrival_and_slack must be set to true prior to
update_timing.
The verbose report shows the same information for all the timing arcs through the cell, with
the worst arc marked with an asterisk. (In the foregoing example, some columns of numbers
were omitted so that the report would fit on the page.)
Variations in Nets
To get a report on the sensitivity of one or more nets in the design, create a collection of
those nets and apply the report_variation command. For example, the following
commands report the variations in nets whose worst slack is negative:
Reporting Variations
3-23
pt_shell> report_variation [get_nets] -slack_lesser_than 0 -verbose
The default report lists the slack, the scalar net arc delay, and the mean and standard
deviation of the statistical net arc delay for the worst timing arc of the net. The worst arc is
the arc with the highest standard deviation of net arc delay among all timing arcs of the net.
The slack of an arc is the slack of the worst-case timing path through the net. In order to
report slack values, the variable timing_save_pin_arrival_and_slack must be set to
true prior to update_timing.
The verbose report shows the same information for all the timing arcs through the net, with
the worst arc marked with an asterisk.
The reported sensitivity values show the standard deviation of the net delay contributed by
each variation parameter, based on a calculation using changes to the net resistance and
capacitance with changes in the specified parameters.
Reporting Variations
3-25
In this example, there are two independent random variables, len and vth, specified by the
set_variation_library command. The report shows the minimum, average, and
maximum sensitivity of each arc’s rise/fall delay and slew. Note that the library sensitivity
report collects only the static library information, which does not directly reflect the actual
behavior of the cells in the design.
Reporting Variations
3-27
| | | | RC | Not |
Net Type | Total | Lumped | RC pi | network |Annotated|
------------------- +-------+--------+---------+---------+---------+
Internal nets | | | | | |
- Pin to pin nets | 1 | 0 | 0 | 1 | 0 |
- Driverless nets | 0 | 0 | 0 | 0 | 0 |
- Loadless nets | 0 | 0 | 0 | 0 | 0 |
...
The report lists the variations in the SBPF file, not the variation values set with the
set_variation command.
4-1
Path Timing Report Increments
In a text-format timing report produced by the report_timing command, the arrival times
shown in the tables are fixed values based on the quantiles of the arrival time distributions.
In the default report format, there are columns labeled Incr (Incremental delay) and Path
(arrival time in the path), as shown in the following example.
The arrival times and transition times shown in the report are also scalar representations
based on the underlying distributions, converted into scalar values based on the current
setting of the variation_derived_scalar_attribute_mode variable.
If you use the -variation option of the command, the report includes variation
information, including the quantile, mean, and standard deviation (for skew) or variation
sensitivity (for latency or transition time). To get a clock timing report with variation
information, the variation_analysis_mode variable must be set to the string
detailed_clock_timing.
For example, an ordinary summary clock timing report starts with the worst latency values,
like this:
By using the -variation option, the standard deviation, mean, and quantile values for the
worst latency values are shown in the report:
The quantile values are the same as the plain worst-case latency values shown in the
conventional report: the 99% quantiles for launch latency values and the 1% quantiles for
capture latency values. The quantiles used for reporting are affected by the setting of the
variation_derived_scalar_attribute_mode variable.
In a verbose report showing the point-by-point timing along a clock path, a variation-aware
report shows the mean, quantile, and sensitivity of the delay values along the path. For
example,
Endpoint: wishbone/bd_ram/mem1_reg[248][14]
(rising edge-triggered flip-flop clocked by wb_clk_i)
For information about variation sensitivity, see “Variation Sensitivity” on page 3-18.
These are the distribution attributes you can get with the get_attribute command from
a variation:
Some variation attributes require a value to be specified before you can retrieve them, such
as quantiles. You can access these attributes by using the get_variation_attribute
command. For example, to get the q93 quantile value:
pt_shell> get_variation_attribute \
[get_variations p1] quantile .93
0.350722
These are the distribution attributes you can get with the get_variation_attribute
command:
• quantile q_value – The value of the distribution at the q-value quantile point, where
q_value is a floating-point number greater than 0.0 and less than 1.0.
• cdf cdf_value – The value of the cumulative distribution function at a CDF-value point,
where cdf_value is a floating-point number.
• cdf_values number_of_values – A list of distribution function values at the number
of data points specified by number_of_values (an integer), centered around the mean.
• pdf pdf_value – The value of the probability function at a PDF-value point, where
pdf_value a floating-point number between 0.0 and 1.0.
• pdf_values number_of_values – A list of probability density function values at the
number of data points specified by number_of_values, centered around the mean.
Session Examples
The following script is a variation-aware analysis session using two variations, channel
length and threshold voltage.
Session Examples
4-9
set_variation_library -parameter_names "len vth" \
-values "90 0.24" vthplus.db
set_variation_library -parameter_names "len vth" \
-values "90 0.20" vthminus.db
set_variation_library - parameter_names "len vth" \
-values "95 0.22" lenplus.db
set_variation_library - parameter_names "len vth" \
-values "85 0.22" lenminus.db
update_timing -full
report_timing -nworst 2
The following script performs a variation-aware analysis using four variations named A, B,
C, and D.
update_timing -full
# perform statistical reporting
set path1 [get_timing_paths -fall_from wb_adr_i[9] \
-to ethreg1/MODER_1/DataOut_reg[1]/D]
set path2 [get_timing_paths \
-rise_through wishbone/ram_addr_reg[1]/Q \
-rise_to wishbone/bd_ram/mem2_reg[211][23]/E]
set recalc1 [get_recalculated_timing_paths $path1]
set recalc2 [get_recalculated_timing_paths $path2]
report_timing -input_pins $path1
report_timing -input_pins $path2
report_timing -input_pins $recalc1
report_timing -input_pins $recalc2
Session Examples
4-11
Validation Flow
PrimeTime VX produces analysis results that show the distributions of delay and slew along
selected paths. To validate the accuracy of the PrimeTime VX analysis, you can compare
the reported results against a sequence of SPICE simulations of the same path, using a
Monte Carlo statistical representation of the variation distributions. This is the general
procedure for SPICE validation:
2. Create the simulation data files for Monte Carlo SPICE simulation. The following
command generates multiple SPICE decks from PrimeTime VX, using randomly
distributed parameter and parasitic element values.
pt_shell> write_spice_deck -output path.spo \
-sample_size 24 \
-sub_circuit_file my_sub.sp \
[get_timing_paths -justify]
...
This example generates 24 SPICE decks in the directory named path.spo, using the
statistical distribution of parameter and parasitic element values defined in the variation-
aware design. Cross-coupling capacitors, if any, are not sampled, but are assigned their
corner values.
3. Start the SPICE simulation runs and collect the statistical results.
The SPICE simulation should be performed n times, where n is large enough to capture
the statistical properties of delay and slew on each pin according to the statistical
properties of each variation component. Each SPICE run must use a different set of
random numbers.
After the Monte Carlo sequence of SPICE runs is finished, generate reports on the delay
and slew values on each pin with n samples. You should create a report on the statistical
distribution of delay and slew on each pin, including the mean, standard deviation,
quantile values, and PDF or CDF plots.
4. Compare the PrimeTime VX results against the Monte Carlo SPICE results. The
statistical distributions should be similar, thus validating the accuracy of the variation-
aware analysis in PrimeTime VX.
You can use the generated SPICE decks directly to run HSPICE multiple times. Then you
can compare the collected HSPICE simulation results against the statistical results reported
by PrimeTime VX.
Validation Flow
4-13
Chapter 4: Variation-Aware Timing Reports
4-14
Glossary GL
CDF
See cumulative distribution function (CDF).
corner case
A set of two or more parameter values that is a combination of the most extreme
values of those parameters, such as the combination of the highest threshold voltage
and the longest channel length.
correlation
The strength of linear relationship or co-dependence between two random variables.
For example, there is a very high correlation (nearly 1.0) between the channel lengths
of two adjacent transistors on a die.
cumulative distribution function (CDF)
A mathematical function that represents the cumulative probability that a parameter
will be less than or equal to a given value, across the full range of the parameter; the
integral of the probability density function.
derating
The scaling of delay values accomplished by multiplying the calculated delay values by
a fixed scaling factor, as specified by the set_timing_derate command.
distribution
A mathematical description of the range of values of a variation along with the
likelihood of occurrence of those values. A distribution is typically expressed in terms
of a few parameters, such as the mean and standard deviation of a normal (Gaussian)
distribution.
Gaussian
The normal distribution having a bell-shaped curve.
min/max analysis
Static timing analysis that is based on fixed worst-case minimum and maximum values
rather than a probability distribution.
GL-1
normal (distribution)
The Gaussian distribution having a bell-shaped curve and described by two
parameters, the mean and the standard deviation.
parameter
A characteristic or property that has a variable numeric value and has a effect on delay
or slew that can be measured or simulated.
PDF
See probability density function (PDF).
piecewise-linear
A function that is made of linear segments connected end-to-end, which can be
characterized by the segment endpoints.
percentile
For a random variable X with continuous CDF function F, the percentile p associated
with value x is:
F ( x ) = P [ X ≤x ] = p
For example, if the slack at a pin follows a normal distribution with mean 0.0 and
standard deviation 1.0, the probability that the slack is negative is 0.50, so 0.50 is the
percentile associated with x-value 0.0.
principal component analysis
A mathematical procedure that simplifies a data set by transforming a number of
correlated parameters into a smaller number of uncorrelated parameters, called the
principal components. The first principal component contains as much of the data
variability as possible, the second component contain as much of the remaining
variability as possible, and so on.
probability density function (PDF)
A mathematical function that represents the likelihood that a parameter will have a
specific value across the full range of values of that parameter; the derivative of the
cumulative distribution function. It is similar to a histogram that has been smoothed to
make a continuous function.
quantile
For a random variable X with continuous CDF function F, the quantile q associated
with value p is given by:
–1
q = F (p)
For example, if a path arrival time A has a 99 percent quantile equal to 4.3, it means
that the probability is 0.99 that an actual arrival (an outcome of A) will be less than or
equal to 4.3.
GL-2
For any timing distribution “A,” the sensitivity of that distribution is defined to be the
normalized variance of its distribution, calculated as follows:
sensitivity(A) = std_dev(A) / | mean(A) |
sensitivity
For any timing distribution “A,” the sensitivity of that distribution is defined to be the
normalized variance of its distribution, calculated as sensitivity(A) = std_dev(A) /
|mean(A)| .
sigma (σ)
The standard deviation, the most common measure of statistical dispersion; the
square root of the variance. A large sigma means that the data samples are widely
dispersed around the mean. A small sigma means that the data samples are tightly
clustered around the mean.
skewness
A measure of the asymmetry of a random variable. The skewness S of a random
variable X with mean μ and standard deviation σ is defined as
3
E [ ( X – μ) ]
S = -----------------------------
3
σ
where E denotes the expected value with respect to the probability distribution of X. If
the skewness is zero, the PDF plot is symmetric around its mean. If the skewness is
positive or negative, the plot is not symmetric around its mean.
slew
The transition time of a signal; the amount of time a signal takes to change from high
to low or from low to high.
standard deviation
The sample estimate of sigma (σ).
uniform distribution
A distribution that has the same value throughout a given range.
variation
A random variable that represents a process parameter or device parameter that can
be characterized, such as channel length or threshold voltage.
variation-aware static timing analysis
A technique to accurately analyze circuit performance in the presence of variation in
process and environment parameters (such as channel length and threshold voltage).
This approach significantly improves the accuracy of traditional static timing analysis
by using the actual distributions of parameter variations instead of worst-case corner
assumptions.
GL-3
GL-4
Index
A auto-correlation 3-10
cross-correlation 3-12
add_variation command 3-14
spatial correlation 3-12
adding variations 3-14
cross-correlation 3-12
attributes, variation-aware 4-5
cumulative distribution function 1-18
auto-correlation 3-10
D
C derating 1-4
CDF 1-18
derating statistical variations 3-15
commands
derived parameters 1-13
add_varation 3-14
get_random_numbers 3-14 discrete distribution 3-8
max_variation 3-14 distribution
min_variation 3-14 attributes 4-7
remove_parasitic_corner 2-14 constant 3-6
report_clock_timing 4-3 discrete 3-8
report_timing 4-2 empirical 3-6
report_variation 3-17 lognormal 3-7
set_library_variation 2-6 normal 3-4
set_timing_derate 3-15 piecewise-linear 3-5
set_variation 3-2 types 3-4
sub_variation 3-14 uniform 3-6
write_spice_deck 4-12
constant distribution 3-6 E
corner case 1-4
empirical distribution 3-6
correlation 3-9
IN-5
G R
get_random_numbers command 3-14 random number generation 3-14
remove_parasitic_corner command 2-14
report_clock_timing command 4-3
I report_timing command 4-2
interconnect parameter variation 2-9 report_variation command 3-17
calculations 2-10 cells 3-22
read_parasitics 2-11 design objects 3-26
library cells 3-25
nets 3-23
K parameter-specific net sensitivity 3-24
K factors (derating) 1-4 parasitic data 3-27
timing paths 3-21
L
library S
creation 2-2 scaling (derating) 1-4
merged 2-3
sensitivity 3-18
lognormal distribution 3-7
set_timing_derate command 3-15
set_variation command 3-2
M set_variation_library command 2-6
math operations on variations 3-14 spatial correlation 3-12
max_variation command 3-14 sub_variation command 3-14
merged library 2-3
T
N timing report increments 4-2
normal distribution 3-4
U
P uniform distribution 3-6
piecewise-linear distribution 3-5
principal component analysis 1-13 V
validation flow 4-12
Q variables
variation_derived_scalar_attribute_mode
quantile points 1-18 3-20
variation_enable_analysis 1-22
variation
IN-6
correlation 3-9 variation-aware static timing analysis
interconnect parameter 2-9 enabling 1-22
math operations 3-14 flow example 1-14
reporting 3-17
sensitivity 3-18
variation_derived_scalar_attribute_mode W
variable 3-20 write_spice_deck command 4-12
variation_enable_analysis variable 1-22
IN-7