Professional Documents
Culture Documents
Primetime: Tutorial
Primetime: Tutorial
Tutorial
Version X-2005.12, December 2005
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 © 2006 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 __________.”
Destination Control Statement
All technical data contained in this publication is subject to the export control laws of the United States of America.
Disclosure to nationals of other countries contrary to United States law is prohibited. It is the reader’s responsibility to
determine the applicable regulations and to comply with them.
Disclaimer
SYNOPSYS, INC., AND ITS LICENSORS MAKE NO WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, WITH
REGARD TO THIS MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
Registered Trademarks (®)
Synopsys, AMPS, Arcadia, C Level Design, C2HDL, C2V, C2VHDL, Cadabra, Calaveras Algorithm, CATS, CRITIC,
CSim, Design Compiler, DesignPower, DesignWare, EPIC, Formality, HSIM, HSPICE, Hypermodel, iN-Phase, in-Sync,
Leda, MAST, Meta, Meta-Software, ModelTools, NanoSim, OpenVera, PathMill, Photolynx, Physical Compiler, PowerMill,
PrimeTime, RailMill, RapidScript, Saber, SiVL, SNUG, SolvNet, Superlog, System Compiler, TetraMAX, TimeMill, TMA,
VCS, Vera, and Virtual Stepper are registered trademarks of Synopsys, Inc.
Trademarks (™)
Active Parasitics, AFGen, Apollo, Apollo II, Apollo-DPII, Apollo-GA, ApolloGAII, Astro, Astro-Rail, Astro-Xtalk, Aurora,
AvanTestchip, AvanWaves, BCView, Behavioral Compiler, BOA, BRT, Cedar, ChipPlanner, Circuit Analysis, Columbia,
Columbia-CE, Comet 3D, Cosmos, CosmosEnterprise, CosmosLE, CosmosScope, CosmosSE, Cyclelink, Davinci, DC
Expert, DC Expert Plus, DC Professional, DC Ultra, DC Ultra Plus, Design Advisor, Design Analyzer, Design Vision,
DesignerHDL, DesignTime, DFM-Workbench, Direct RTL, Direct Silicon Access, Discovery, DW8051, DWPCI, Dynamic
Model Switcher, Dynamic-Macromodeling, ECL Compiler, ECO Compiler, EDAnavigator, Encore, Encore PQ, Evaccess,
ExpressModel, Floorplan Manager, Formal Model Checker, FoundryModel, FPGA Compiler II, FPGA Express, Frame
Compiler, Galaxy, Gatran, HANEX, HDL Advisor, HDL Compiler, Hercules, Hercules-Explorer, Hercules-II, Hierarchical
plus
Optimization Technology, High Performance Option, HotPlace, HSIM , HSPICE-Link, i-Virtual Stepper, iN-Tandem,
Integrator, Interactive Waveform Viewer, Jupiter, Jupiter-DP, JupiterXT, JupiterXT-ASIC, JVXtreme, Liberty,
Libra-Passport, Libra-Visa, Library Compiler, Magellan, Mars, Mars-Rail, Mars-Xtalk, Medici, Metacapture, Metacircuit,
Metamanager, Metamixsim, Milkyway, ModelSource, Module Compiler, MS-3200, MS-3400, Nova Product Family,
Nova-ExploreRTL, Nova-Trans, Nova-VeriLint, Nova-VHDLlint, Optimum Silicon, Orion_ec, Parasitic View, Passport,
Planet, Planet-PL, Planet-RTL, Polaris, Polaris-CBS, Polaris-MT, Power Compiler, PowerCODE, PowerGate, ProFPGA,
ProGen, Prospector, Protocol Compiler, PSMGen, Raphael, Raphael-NES, RoadRunner, RTL Analyzer, Saturn,
ScanBand, Schematic Compiler, Scirocco, Scirocco-i, Shadow Debugger, Silicon Blueprint, Silicon Early Access,
SinglePass-SoC, Smart Extraction, SmartLicense, SmartModel Library, Softwire, Source-Level Design, Star, Star-DC,
Star-MS, Star-MTB, Star-Power, Star-Rail, Star-RC, Star-RCXT, Star-Sim, Star-SimXT, Star-Time, Star-XP, SWIFT,
Taurus, TimeSlice, TimeTracker, Timing Annotator, TopoPlace, TopoRoute, Trace-On-Demand, True-Hspice,
TSUPREM-4, TymeWare, VCS Express, VCSi, Venus, Verification Portal, VFormal, VHDL Compiler, VHDL System
Simulator, VirSim, and VMC are trademarks of Synopsys, Inc.
SystemC is a trademark of the Open SystemC Initiative and is used under license.
ARM and AMBA are registered trademarks of ARM Limited.
All other product or company names may be trademarks of their respective owners.
ii
Contents
1. Getting Started
Before You Start the Tutorial . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-2
Quick Start. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-3
Start PrimeTime. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-5
Read the Design and Library Files . . . . . . . . . . . . . . . . . . . . . . 1-6
Specify the Timing Constraints . . . . . . . . . . . . . . . . . . . . . . . . . 1-8
Specify the Environment and Analysis Conditions. . . . . . . . . . . 1-11
Check the Design Data and Analysis Setup . . . . . . . . . . . . . . . 1-13
Generate Timing Reports . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-17
End the Session. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-19
Graphical User Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-21
Restore the Session. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-21
Modify the Clock Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-24
iii
Analyze the Design Again . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-25
Path Inspector . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-28
Path Delay Profile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-30
Path Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-31
Waveform Viewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-32
Other Path Inspector Features . . . . . . . . . . . . . . . . . . . . . . . 1-34
Command Interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-35
Getting Help . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-35
Using Tcl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-37
Objects and Collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-39
Object Attributes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-41
Attribute Data Table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-44
End the Session. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1-47
iv
3. Basic Clocking
Latency, Uncertainty, and Transition Time . . . . . . . . . . . . . . . . . . . . 3-2
Read, Constrain, and Back-Annotate the Design . . . . . . . . . . . 3-2
Source and Network Latency. . . . . . . . . . . . . . . . . . . . . . . . . . . 3-3
Clock Uncertainty. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-8
Transition Time. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-9
Clock Network Timing Reports . . . . . . . . . . . . . . . . . . . . . . . . . 3-11
Propagated Clock Latency . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3-13
4. Timing Exceptions
Setting False Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-2
Read, Constrain, and Back-Annotate the Design . . . . . . . . . . . 4-2
Set and Remove a False Path Exception. . . . . . . . . . . . . . . . . . 4-3
Specifying Exception Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-5
Alternatives to Setting False Paths . . . . . . . . . . . . . . . . . . . . . . 4-8
Setting Multicycle Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4-10
Multicycle Path Setup Constraint . . . . . . . . . . . . . . . . . . . . . . . . 4-11
Multicycle Path Hold Constraint . . . . . . . . . . . . . . . . . . . . . . . . . 4-13
Setting Maximum and Minimum Path Delays . . . . . . . . . . . . . . . . . 4-18
Exception Priority and Ignored Exceptions . . . . . . . . . . . . . . . . . . . 4-19
Saving, Restoring, and Transforming Exceptions . . . . . . . . . . . . . . 4-24
5. Operating Conditions
Generated Clock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-2
Read and Constrain the Design. . . . . . . . . . . . . . . . . . . . . . . . . 5-3
v
Path Groups. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-7
Specifying Exception Paths . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-11
Single Operating Condition Analysis . . . . . . . . . . . . . . . . . . . . . . . . 5-14
Best-Case/Worst-Case Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-16
On-Chip Variation Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5-17
Clock Reconvergence Pessimism Removal . . . . . . . . . . . . . . . . . . 5-20
6. Hierarchical Analysis
Stamp and Quick Timing Models. . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2
Stamp Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-2
Quick Timing Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-3
Hierarchical Design Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-5
Read and Link the Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-5
Examine the Design. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-7
Set the Timing Constraints. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-9
Initial Timing Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-11
Setting Timing Exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-12
Block Optimization. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-14
Context Characterization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-14
Block Optimization by Design Compiler . . . . . . . . . . . . . . . . . . . 6-15
Swapping In the Optimized Blocks. . . . . . . . . . . . . . . . . . . . . . . 6-16
Case Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-17
Mode Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-19
Extracted Timing Model. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-21
vi
Prepare the Design for Extraction . . . . . . . . . . . . . . . . . . . . . . . 6-21
Extract the Timing Model . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6-23
Validate the Extracted Timing Model . . . . . . . . . . . . . . . . . . . . . 6-25
Use the Extracted Timing Model . . . . . . . . . . . . . . . . . . . . . . . . 6-27
7. Crosstalk Analysis
Initial Static Timing Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-2
Crosstalk Delay Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-5
Running Crosstalk Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-6
Crosstalk Analysis Histograms . . . . . . . . . . . . . . . . . . . . . . . . . 7-9
Crosstalk Analysis Iterations . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-15
Static Noise Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-17
Initial Noise Analysis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7-20
Noise Analysis Results in the GUI . . . . . . . . . . . . . . . . . . . . . . . 7-22
vii
Repeat Analysis for blockB . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8-18
Index
viii
About This Manual FIX ME!
ix
What’s New in This Release
Information about new features, enhancements, and changes;
known problems and limitations; and resolved Synopsys Technical
Action Requests (STARs) is available in the PrimeTime Release
Notes in SolvNet.
Audience
This tutorial is for engineers who are new users of PrimeTime who
may or may not have previous experience with static timing analysis.
Related Publications
For additional information about PrimeTime, see
• Design Compiler
• Library Compiler
Convention Description
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.”
To access SolvNet,
Customer Support
xiii
Contacting the Synopsys Technical Support Center
If you have problems, questions, or suggestions, you can contact the
Synopsys Technical Support Center in the following ways:
• Open a call to your local support center from the Web by going to
http://solvnet.synopsys.com (Synopsys user name and
password required), then clicking “Enter a Call to the Support
Center.”
• Send an e-mail message to support_center@synopsys.com.
• 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.
This chapter shows you how to invoke and use PrimeTime in the
following sections:
1-1
Before You Start the Tutorial
This manual, the PrimeTime Tutorial, provides step-by-step lessons
on using PrimeTime. It is intended for new users of PrimeTime who
may or may not have previous experience with static timing analysis.
If you are new to static timing analysis, you might want to first read
Chapter 1 and Chapter 2 of the PrimeTime User Guide:
Fundamentals manual. Chapter 1 provides background information
on static timing analysis and Chapter 2 provides an overview of the
PrimeTime analysis flow.
Before you can begin the tutorial, PrimeTime must be installed and
licensed on your UNIX or Linux workstation. Installation and
licensing instructions are provided with the release software.
You also need to copy the tutorial files from the PrimeTime
installation to your home directory or other working directory. For
example:
% cp -r installation_path/doc/pt/tutpt ~/.
After copying the files, verify that you have the directory structure
shown in Figure 1-1. The design files are in the “designs” directory
and the technology libraries are in the “libs” directory. There is one
directory for each tutorial chapter: ch01, ch02, and so on, each
serving as the working directory for the lessons in a chapter.
Each directory also contains script files that allow you to run the
tutorial procedures in batch mode rather than interactively. While
working interactively, if there are any long commands that you don’t
want to type, you can open the script file in a text display window and
copy each long command from there into PrimeTime.
tutpt
Note:
Due to changes and improvements with each release and with
each service pack, your numerical results might differ slightly
from the results shown in this manual. Also, objects listed in
reports (ports, cells, paths, and so on) might appear in a different
order from what is shown in the manual.
Quick Start
For this first tutorial lesson, you perform a timing analysis of the
simple design shown in Figure 1-2 on the next page. You might want
to print or copy that page so that you can easily refer to it as you work
through the lesson.
Quick Start
1-3
Figure 1-2 Simple Design “ex1_design.v”
1. Start PrimeTime.
2. Read in and link the gate-level netlist and associated technology
libraries.
3. Constrain the design by specifying the clock characteristics, input
timing conditions, and output timing requirements.
4. Specify the environment and analysis conditions, including the
driving cell at the inputs, the load on the outputs, and the wire
load model used for estimating interconnect delays.
5. Check the design data and analysis setup parameters.
6. Perform a full timing analysis and examine the timing report.
Start PrimeTime
The first step is to start PrimeTime. From the operating system
prompt, change to the Chapter 1 directory, then invoke PrimeTime in
shell mode:
% cd
% cd tutpt/ch01
% pt_shell
Quick Start
1-5
• Is the Synopsys license server running?
• Is your Synopsys license key file available, current, and include a
PrimeTime license?
If you need assistance, ask you system administrator or consult the
installation and licensing documentation.
2. At the pt_shell prompt, set the search path and link path
variables:
pt_shell> set search_path {. ./../designs}
. ./../designs
pt_shell> set link_path {* ./../libs/tut_lib.db}
* ./../libs/tut_lib.db
Note:
In addition to Verilog, PrimeTime can also read design
descriptions in .db, VHDL, and EDIF formats.
Quick Start
1-7
the technology library tutpt/tut_lib.db to resolve the cell
references used in the design. The source file for the library,
tut_lib.lib, is provided in the tutpt/libs directory.
4. To define the input delay and output delay for each port:
pt_shell> set_input_delay 2.0 -clock CLK [get_ports in*]
1
pt_shell> set_output_delay 1.0 -clock CLK [all_outputs]
1
Quick Start
1-9
The set_output_delay command specifies the amount of
delay from each output to the external device that captures the
output data. It establishes a timing constraint at the outputs and
specifies the required time for output data with respect to the CLK
clock.
CLK
Data required time
at output pin
set_input_delay
1.0
set_output_delay
... in2
CLK
ex1 op1 Delay
... in3 design
op2 ...
CLK
... in4
CLK
external clk1
clock Edge arrival time
at flip-flops
CLK
2.0 create_clock
set_clock_latency
0.000 3.333 6.666 9.999
pt_shell> check_timing
...
check_timing succeeded.
1
Quick Start
1-11
2. To specify the capacitive load at the design outputs:
pt_shell> set_load -pin_load 1 [all_outputs]
1
Figure 1-4 shows the driving cell and loads that have been
specified.
set_driving_cell
IV
in1
IV
in2 set_load
ex1 op1
IV
in3 design 1 pF
op2
IV
in4 1 pF
IV
clk1
The analysis will use the device characteristics defined for the
TYPICAL set of operating conditions specified in the tut_lib.db
library.
Quick Start
1-13
The report_design command reports the operating
conditions, wire load model, and other analysis conditions that
have been set for the analysis.
AN2P tut_lib
FD1 tut_lib
IV tut_lib
ND2 tut_lib
1
Attributes:
c - annotated capacitance
r - annotated resistance
Attributes:
b - black-box (unknown)
h - hierarchical
n - noncombinational
...
Quick Start
1-15
5. To get a report on the cell references used in the design:
pt_shell> report_reference
******************************************
Report : reference
...
Attributes:
b - black-box (unknown)
h - hierarchical
n - noncombinational
...
Unit Total
Reference Library Area Count Area Attributes
------------------------------------------------------
AN2P tut_lib 25.00 2 50.00
FD1 tut_lib 35.00 4 140.00 n
...
The report_reference command shows information on the
cell references used in the design: the cell reference name,
library, area per cell, number of instances used in the design,
total area, and cell attributes. The summary shows the number of
cell references used and the total area of all the cell instances.
Quick Start
1-17
slack (MET) 2.28
The report shows the startpoint of the path, the endpoint of the
path, the path group, and the path type (max, or setup). Below
this information is a table showing successive points in the data
path and in the clocking path and the calculation of slack from the
point-to-point delays and design constraints.
Note:
There are other paths through the design with exactly the
same slack as the reported path. The one reported to be the
“worst” could be any one of those paths, but that same path is
reported consistently throughout the session.
The report_timing command has a large number of options
to control the type of timing information reported.
3. To get a summary report (rather than a full path report) on the ten
paths with the least slack:
pt_shell> report_timing -nworst 10 -path_type summary
...
Startpoint Endpoint Slack
------------------------------------------------------
g8/CP (FD1) op1 (out) 2.28
g9/CP (FD1) op2 (out) 2.28
... ... ...
in2 (in) g2/D (FD1) 2.92
Quick Start
1-19
1. To save the current working session:
pt_shell> save_session session1
Saving netlist information.....
Saving environmental constraints.....
...
1
At this point, with all the design and library removed, you could
start work on a new project.
1. Start PrimeTime:
% pt_shell
Hierarchy
browser
Design
status
Drag to
enlarge
get_timing_path options
The line at the bottom of the timing path table tells you the
get_timing_paths options used to generate the path list:
maximum (setup) delay check, one worst path per startpoint, and
so on.
5. Drag the right-hand edge of the table to the right so that you can
see more columns. Note that the paths are listed in order of
increasing slack. Click on the timing path table to select the table.
Then click the header that says “Startpoint Pin Name,” and the
paths are sorted in alphabetical order by startpoint name. Click
the header again, and the path order is reversed (descending
order). Finish by clicking the Slack header, so that paths are
again listed in order of increasing slack.
The clock name is CLK and the period is 6.67 (rounded to two
decimal places). The Waveform column shows the times at which
clock edges occur: rising at 0.0 and falling at 3.333. The Sources
column shows the place in the design where the clock exists.
The timing path table is updated with a new list of paths, several
of which show timing violations.
2. In the timing path table, click the down-arrow button. From the
menu, choose Load Paths. This opens the dialog box shown in
Figure 1-7. In the field labeled “Nworst paths per endpoint,” enter
the value 100, then click OK. The table is updated with a
complete list of paths, listed in order of increasing slack.
Figure 1-7 Load Timing Path Table Dialog Box
Pane border
5. Click the leftmost bar to select it. The selected bar is highlighted
in yellow. The slack values and paths for that bin are listed in the
pane on the right. See Figure 1-9.
Path Inspector
The path inspector is a tool for visualizing different aspects of a path
such as the schematic, the contribution of different cells and nets to
the total delay, and timing waveforms.
1. In the timing path table, click on the first path in the list to select
it. This is the path with the least slack. Note that it is highlighted
in both the timing path table and in the histogram path list.
2. At the bottom of the timing path table window, click the Inspector
button. (You might need to click two times: once to make the
timing path table the current window, and again to invoke the path
inspector.) The path inspector appears in a new top-level window
like the one shown in Figure 1-10.
3. Click the Clock tab. This shows more information about the path,
including transition times and edge types (rising or falling).
4. Click the Data Path tab. Under this tab are two more tabs, Path
Element Table and Delay Profile. The Path Element Table is a
spreadsheet showing the elements of the data path, organized in
path sequence.
1. Under the Data Path tab, click the Delay Profile tab. This displays
the path delay profile. See Figure 1-11.
Figure 1-11 Path Delay Profile
The first bar at the top shows the delay from the start to the end
of the path. The bars beneath it show individual delays with the
associated object names, the amount of delay, the percentage of
total delay for the path, and the transition attributes (max rise,
max fall, and so on). Clicking the [–] or [+] button to the left of the
top bar expands or collapses the view of lower-level bars.
2. From the down-arrow drop-down menu, select “Flat leaf cell and
net delay.” This changes the view to show leaf-level rather than
hierarchical cell delays. Cell and net delays are shown
separately.
3. From the same menu, select “Aggregate cell vs. net delay.” This
changes the view to show the total of all cell delays and total of
all net delays for the path.
1. Rest the mouse pointer on the wire between the flip-flop and the
inverter. An InfoTip (pop-up text box) shows the net name,
capacitance, and fanout.
2. Rest the mouse pointer on the inverter. An InfoTip shows the cell
instance name, library name, pins, and signal timing.
3. Experiment with the commands in the path inspector’s View
menu and the equivalent toolbar buttons. Try using the scroll bars
at different viewing scales. When you are done, choose View >
Zoom Full.
1. Click the Waveform tab. This displays the clock waveform for the
path. To make the whole waveform visible, resize the window and
move the border between the waveform and the schematic. See
Figure 1-13.
Figure 1-13 Waveform Display
For the data path, the data gets launched after the clock latency
time shown by the cross-hatched portion of the clock signal, at
2.0 ns. The path delay is 3.4 ns, so the data arrival time is at 5.4
ns.
For the capture clock path, PrimeTime assumes that the data
should be captured at the next clock edge. Taking into account
the clock latency of 2.0 ns and the output delay of 1.0 ns, the data
required time is at 5.0 ns. The reported slack, –0.4 ns, is the
required time minus the arrival time. The color of the slack arrow,
red, indicates a timing violation (a negative slack).
1. Resize the main GUI window and move the path inspector
window so that you can view them side-by-side.
2. In the timing path table in the main GUI window, click on the
second path, third path, fourth path, and so on down the list.
Each time you select a new path, the path inspector is
automatically updated with the new path information.
3. In the path inspector window, click the footprint button to disable
the “follow” feature. In the main GUI window, select a new path in
the timing path table. This time, the path inspector is not updated.
4. In the path inspector window, click the Load Selected button. This
loads the data from the currently selected path.
5. Continue to experiment with the features of the path inspector
window. Note that you can hide or view various parts of the path
inspector using the View menu options. When you are done,
close the GUI windows using File > Close or File > Close GUI.
6. To end the PrimeTime session:
pt_shell> exit
Getting Help
To get help on commands and command syntax, you can use the
help and man commands.
When you start this session, you should still be in the ch01 directory.
1. Start pt_shell:
% pt_shell
Command Interface
1-35
4. To get a list of all PrimeTime commands containing the string
“clock”:
pt_shell> help *clock*
all_clocks # Create a collection of all clocks ...
clock # Builtin
create_clock # Create a clock object
...
6. Another way to get the same help is to enter the command name
directly with the -help option:
pt_shell> set_input_delay -help
Usage:
set_input_delay # Set input delay on ports or pins
[-clock clock_name] (Relative clock)
[-clock_fall] (Delay is relative to ...
...
Using Tcl
The pt_shell interface is based on the Tcl scripting language, which
means that you can use features of Tcl such as user-defined
variables, procedures, conditional execution, lists, and expressions.
This lesson introduces some basic Tcl concepts. (For more
information, consult any reference book on Tcl.)
Command Interface
1-37
1. To practice using variables in PrimeTime, type the following
commands:
pt_shell> printvar
... (complete list of variables and settings)
pt_shell> printvar sh*
sh_arch = "sparcOS5"
sh_command_abbrev_mode = "Anywhere"
... (list of just sh* variables and settings)
pt_shell> set period 6.0
Information: Defining new variable 'period'. (CMD-041)
6.0
pt_shell> printvar period
period = "6.0"
pt_shell> echo $period
6.0
pt_shell> echo "Clock period =" $period
Clock period = 6.0
pt_shell> create_clock -name CLK -period $period \
[get_ports clk1]
1
pt_shell> report_clock
...
Command Interface
1-39
4. To operate on a collection by nesting commands:
pt_shell> set_input_delay 1.8 [get_ports in*]
1
pt_shell> report_port -input_delay
... (report on input delay settings)
Object Attributes
Many objects in the design have attributes assigned to them. An
attribute is a string or value that carries some information about an
object. For example, the number_of_pins attribute attached to a
cell indicates the number of pins in the cell. You can find out the
values of attributes by using the get_attribute command.
Command Interface
1-41
1. To get a list of user-defined attributes associated with nets:
pt_shell> list_attributes -class net
...
Attribute Name Object Type Properties Constraints
-------------------------------------------------------
Command Interface
1-43
7. The following command sequence demonstrates how to obtain
multiple attributes, create a collection, and iterate through the
collection:
foreach_in_collection pins [get_ports *] {
set maxcap [get_attribute $pins pin_capacitance_max]
set pinname [get_attribute $pins full_name]
echo "Pin capacitance of port $pinname is $maxcap"
}
Command Interface
1-45
Figure 1-15 Show and Order Columns Dialog Box for Net Attributes
8. Select and move some of the cell attributes between the “Hidden”
and “Visible” lists, using the left/right arrow buttons. Then, in the
“Visible” list, select and move the attributes into the desired order
using the up/down arrow buttons. When you are done, click OK.
The table is updated with new columns of data in the specified
order.
9. To export data from a data table view, click the Export button.
Enter a file name and click Save. PrimeTime writes the contents
of the table into the file, line for line in ASCII format, with the
column entries separated by commas.
If you want, continue to experiment with the cell data table or make
new data tables (nets, pins, and so on). When you are done, close
the GUI window (choose File > Close GUI).
This writes a script file, attr.pt. Using a text editor or the more
command under UNIX, look at the file contents. The file contains
a set of commands that set the attributes for the design.
Command Interface
1-47
Chapter 1: Getting Started
1-48
2
Basic Constraints and Back-Annotation 2
2-1
Basic Constraints and Prelayout Analysis
The initial analysis of a new design is done before placement and
routing, in order to determine whether the design can meet the basic
timing constraints. In the absence of detailed layout information, you
can have PrimeTime use wire load models to estimate the net delays
based on the fanout of each net.
As you scroll through the library report, note the list of defined
sets of operating conditions, wire load models, and library cells.
check_timing succeeded.
1
data path
clock
path
data path
clock path
The net report shows the fanout (number of inputs driven), fanin
(number of drivers), capacitance, resistance, number of I/O pins,
and names of attributes that have been annotated for each net.
The letters “c,r” indicate that capacitance and resistance
attributes have been annotated.
Note:
This part of the tutorial is optional. If you are not interested in
parasitic data file debugging at this time, you can skip this part
and proceed with “Back-Annotated SDF Delay Data” on
page 2-17.
First, let’s take a look as the DSPF parasitic data file and see what
types of information are used for back-annotation and which parts
are ignored. If you look at one of the DSPF files in the “designs”
directory, you will find the parasitic data for a net described like this:
The “NET” line specifies the net name and the lumped capacitance
for the net; by default, PrimeTime ignores the lumped capacitance
value. The “P” line shows the pin name, the pin type (I for input), and
pin capacitance. The “S” line declares a subnode name (bit1:1) and
the physical X-Y coordinates of the subnode; PrimeTime does not
use the physical coordinate information. The “I” line shows the
instance pin and pin capacitance; by default, PrimeTime ignores the
pin capacitance information.
In the following exercise, you will use a DSPF file with some errors in
it, see the results, and debug the problems in the file.
PrimeTime did not detect any syntax errors. However, this does
not guarantee that the parasitic data will work correctly.
3. Using a text editor, examine the contents of the “bad” DSPF file.
Search for each occurrence of the string “g9”. You will find the
following:
*|I (g9:b g9 B I .821 0 0)
The first reported condition is corrected, but the second one still
remains.
4. Find out how PrimeTime calculates the delay for the timing arc
from the clock pin to the output pin of flip-flop g1:
pt_shell> report_delay_calculation -from g1/CP -to g1/Q
...
5. Find out how PrimeTime calculates the net delay for the timing
arc from the output pin of flip-flop g1 to the input of the XOR gate
g8:
pt_shell> report_delay_calculation -from g1/Q -to g8/B
...
3-1
Latency, Uncertainty, and Transition Time
Latency, uncertainty, and transition time are clock characteristics that
are important for accurate timing analysis. In the following
procedures, you will specify these clock characteristics “manually”
and observe the effects on the analysis results.
This script sets the shell page mode, sets the search path and
link path, and reads and links the ex2_counter.v design. The
-echo option causes the commands in the script to be displayed
as they are executed. The -verbose option causes all
messages to be displayed.
Note:
You can abbreviate the command like this:
pt_shell> sou -e -v ex3_setup.pt
This script creates the clock and sets the input delay and output
delay constraints on the design.
This script sets the driving cell at the inputs, the load on the
outputs, and the wire load model.
Source latency is the amount of time the clock signal takes to get
from its ideal-waveform origin point to the clock source. The source
is the clock definition point in the design specified in the
create_clock command.
Figure 3-1 shows the clock latency broken down into its two
components, source latency and network latency.
Source D Q
Ideal-waveform (clock
clock origin point definition
point) Net delay
EX3_CLOCK
g13 (FD2)
Delay = 1.5 ns clk1 Delay = 1.2 ns
Source latency
Network latency
set_clock_latency \
-source 1.5 [all_clocks] set_clock_latency \
1.2 [get_pins g13/CP]
The DSPF file has detailed parasitics for all nets except the clock
net. Assume for now that the detailed parasitic information is not
available for the clock network.
2. To get a timing report on the path with the worst setup slack:
pt_shell> report_timing
...
slack (VIOLATED) -1.81
...
3. The worst path is from pin g1/CP to pin g13/D. If you change the
clock latency, transition time, or operating conditions, this path
might no longer be the one with the worst slack. To get a report
on this specific path:
pt_shell> report_timing -from g1/CP -to g13/D
...
slack (VIOLATED) -1.81
...
Note:
Just entering the pin name such as g1/CP is a shorthand
method of specifying [get_pins {g1/CP}]. As long as a
name is unambiguous, you can enter the name without using
get_pins, get_ports, get_clocks, and so on. However,
Compare the new report with the previous one. If you wish, open
the report1.txt file in a text editor window to compare the reports
side-by-side. The clock network delay is now reported as 1.50
instead of 0.00. Both the “data required time” and “data arrival
time” have increased by 1.50. The reported slack is the same as
before because the launch and capture clock paths are shifted by
the same latency amount.
8. To set the network latency individually for the register clock pins
g1/CP and g13/CP:
pt_shell> set_clock_latency 0.8 g1/CP
1
pt_shell> set_clock_latency 1.2 g13/CP
1
pt_shell> mypath
...
pt_shell> mypath > report2.txt
Compare the new report with the original one. The clock network
delay, which is the sum of the source latency and network
latency, is now reported as 2.30 for data launch and 2.70 for data
capture. The reported slack is –1.41, or 0.40 better than before
because of the later capture time with respect to the launch time.
9. To get a report on the latency values that have been set and the
resulting skew values:
pt_shell> report_clock -skew
...
pt_shell> report_clock_timing -type skew \
-from g1/CP -to g13/CP
...
The report_clock command shows the network latency for
each register pin and the source latency for each clock. The
report_clock_timing command shows the resulting skew
values between specified pins. You will learn more about using
the report_clock_timing command later in this chapter.
1. To set the clock uncertainty for all register pins in the design:
pt_shell> set_clock_uncertainty .3 \
[all_registers -clock_pins]
1
Note that the worst-case setup and hold paths from g1/CP to
g13/D are different. The setup path goes through XOR gates g8
and g9, whereas the hold path goes through AND gate g7. The
paths are different because PrimeTime looks for the longest path
for the setup check and the shortest path for the hold check.
Transition Time
The transition time (also known as slew) is the amount of time a
signal takes to change from low to high or from high to low.
PrimeTime calculates transition times of signals for each net by
considering the transition times of the incoming signals and the
driver and load characteristics of the net.
For a clock network, you can have PrimeTime calculate the transition
times from detailed parasitic data or you can specify them explicitly
with the set_clock_transition command. Before layout, in the
absence of detailed parasitic data for the clock tree, it is usually
better to estimate the transition times and specify them explicitly for
the clock.
EX3_CLOCK
Latency
Clock at = 1.70
register pin
0 1 2 3 4 5 6 7
The report shows the location and the amount of the minimum
and maximum latency, transition time, and clock skew values.
The first clock latency report shows the register clock pin having
the largest total latency value, together with the transition time,
source latency, network latency, and total latency values; plus a
character string indicating the conditions for which the latency
was calculated. The -nworst 10 option is a request for a report
on the 10 register clock pins with the largest latency values; there
are only five in this design. The -verbose option is a request
for a report on the full clock path.
Source D Q
Ideal-waveform (clock
clock origin point definition
EX3_CLOCK point) Net with parasitic delay
g13 (FD2)
Delay = 1.5 ns clk1
Source latency
Network latency
set_clock_latency \
-source 1.5 [all_clocks] set_propagated_clock [all_clocks]
The new parasitic data file has data for the clock net as well as all
other nets in the design.
You will learn how to use timing exceptions in the following sections:
4-1
Setting False Paths
A false path is a path in the design that should not be analyzed for
timing, such as a path between two multiplexed blocks that are never
enabled at the same time. To prevent false violation reports, you can
declare these paths to be false with the set_false_path
command.
You will learn how to set false paths and other timing exceptions by
practicing on the “counter” design used in Chapter 2. This design
does not need any timing exceptions for proper analysis, but you can
set them anyway and observe the effects on the analysis results.
The report shows the exceptions you have entered, including the
“from” and “to” points, the exception status for setup and hold
constraints (which you can set separately), and the reasons, if
any, that exceptions are being ignored.
4. What happens if you try to specify a path that is not valid? Try the
following:
pt_shell> set_false_path -from g1/D -to g13/D
Warning: Object 'g1/D' is not a valid starpoint.
(UITE-216)
1
pt_shell> report_exceptions
...
Now all paths that start at pin g1/CP are false paths, including the
paths from pin g1/CP to pin g13/D.
2. To get a list of endpoints for all paths starting from pin g1/CP:
pt_shell> all_fanout -from g1/CP -endpoints_only
{"g1/QN","g13/D","g12/D"}
The paths that start from pin g1/CP and end on the listed pins are
all false paths.
PrimeTime finds a setup path that starts from pin g1/CP and
ends at pin g13/D, but is not a false path. The path goes through
combinational logic gates g1, g7, and g11, but not through g9.
The delay and slack are different from the previous worst-case
path from g1/CP to g13/D.
Are there different operating modes for the circuit, such as normal
operating mode, test mode, and so on? If so, consider using case
analysis, in which you set logic values on the control inputs (such as
the test enable pin). PrimeTime propagates these logic values into
the design so that only the enabled logic is analyzed.
Are there multiple clocks used in the design that do not interact with
each other, such as a fast clock for normal operation and a slow clock
in power-down mode? If so, consider using case analysis to analyze
just one clock at a time, or use set_clock_groups -exclusive
to declare an exclusive relationship between the clocks, rather than
declaring a false path between the clocks.
Are there cells, ports, pins, or library cells in the design that you want
to eliminate from the analysis, perhaps because you already know
that they have no violations? If so, consider using the
There are no valid paths originating from pin g1/CP because all
timing arcs through cell g1 have been disabled.
PrimeTime now checks for the arrival of data at the second rather
than the first clock edge after data launch, at 6.50 ns rather than
at 3.25 ns. It reports a positive slack of 1.44 ns.
D Q Combinational D Q
logic
CLKg1
Implied Multicycle
multicycle setup
hold
CLKg13
4. Try moving the hold time check back by one clock cycle:
pt_shell> set_multicycle_path -hold 1 -from g1/CP -to
g13/D
1
pt_shell> report_exceptions
...
pt_shell> mypath_min
...
5. Try moving the hold time check back by two clock cycles:
pt_shell> set_multicycle_path -hold 2 -from g1/CP -to
g13/D
1
pt_shell> report_exceptions
...
pt_shell> mypath_min
...
PrimeTime now checks for the validity of the data at the proper
time, at 0.00 ns, as shown in Figure 4-2. It reports a positive slack
because the data signal is valid at that time.
CLKg1
Implied Multicycle
Desired
multicycle setup
hold
hold
CLKg13
2. Set the time for the setup check on the paths from pin g1/CP to
pin g13/D:
pt_shell> set_max_delay 9.75 -from g1/CP -to g13/D
1
pt_shell> report_exceptions
...
3. Set the time for the hold check on the same paths:
pt_shell> set_min_delay 0.0 -from g1/CP -to g13/D
1
pt_shell> report_exceptions
...
The setup check is done at time = 9.75. The report is the same
as for the “multicycle setup 3” exception.
• set_false_path
• set_max_delay and set_min_delay
• set_multicycle_path
g1/CP * cycles=3 * o
g1/CP g13/D FALSE FALSE
...
This new minimum delay exception specifies the hold time for any
paths that start from pin g1/CP and pass through either pin g7/Z
or g8/Z. This command is fully overridden by the false paths
declared from g1/CP to g13/D.
The design is still there, but all the constraints are gone.
You are now back at the point in the analysis just before you used
the transform_exceptions command.
• Generated Clock
• Single Operating Condition Analysis
• Best-Case/Worst-Case Analysis
• On-Chip Variation Analysis
• Clock Reconvergence Pessimism Removal
5-1
Generated Clock
A generated clock is a clock generated by the circuit itself, not
supplied directly by an external source. A simple example is the
divide-by-2 clock divider shown in Figure 5-1. Each generated clock
must be defined with the create_generated_clock command.
The command specifies the port or pin from which the clock is
generated (the master source), the pin where the generated clock
exists (the generated source), and the timing relationship between
the master clock and generated clock. In the following exercise, you
read in and analyze a 2-bit counter design that contains a generated
clock like the one shown in the figure.
gen_EX_CLK
D Q
master QN
source generated
cg0 source
clk1
master clock 0 5 10
EX_CLK
report_clock
...
Generated Master Generated Master Waveform
Clock Source Source Clock Modification
---------------------------------------------------------------------------------
gen_EX_CLK clk1 cg0/Q EX_CLK div(2)
Generated Clock
5-3
Figure 5-2 Design With Generated Clock and Clock Gating
The report says that seven timing endpoints are not constrained.
The path endpoints are the two output ports and the D pins of five
flip-flops. Why are they considered unconstrained?
The answer is that the generated clock has not been defined.
PrimeTime traces the clock signal until it reaches flip-flop cg0,
then stops there. There is no clock reaching the other flip-flops.
Generated Clock
5-5
6. Define the generated clock as follows:
pt_shell> create_generated_clock -name gen_EX_CLK \
-divide_by 2 -source [get_ports clk1] \
[get_pins cg0/Q]
1
Path Groups
PrimeTime divides the timing paths into groups. A path group exists
for each clock created by create_clock and create_
generated_clock. A path belongs to a path group when the path
endpoint is at a register clocked by that clock. PrimeTime also
creates the following path groups implicitly:
Generated Clock
5-7
1. Generate a setup timing report:
pt_shell> report_timing
...
****************************************
Report : timing
-path full
-delay max
-max_paths 1
...
****************************************
2. Examine the report for the EX_CLK path group. A rather large
violation is reported. Can you explain why there is a violation?
Startpoint: g12 (rising edge-triggered flip-flop
clocked by gen_EX_CLK)
Endpoint: co (output port clocked by EX_CLK)
Path Group: EX_CLK
Path Type: max
...
4. Look at the timing report for the clock gating default path group.
What kind of check is PrimeTime doing?
Startpoint: clk_en (input port clocked by EX_CLK)
Endpoint: cg1 (rising clock gating-check end-point
clocked by gen_EX_CLK)
Path Group: **clock_gating_default**
Path Type: max
...
Generated Clock
5-9
5. Assume for now that we are not interested in the clock enable
timing. To disable analysis of the clk_en signal:
pt_shell> set_case_analysis 1 [get_ports clk_en]
1
pt_shell> report_disable_timing
...
Flags : c case-analysis
...
Cell or Port From To Sense Flag Reason
-------------------------------------------------------
cg1 B Z positive_unate c B = 1
pt_shell> check_timing
...
pt_shell> report_timing
...
Generated Clock
5-11
2. So far, the reports are all setup (maximum delay) reports. To
generate a hold (minimum delay) report:
pt_shell> report_timing -to {g12/D g13/D} -delay_type min
...
Startpoint: g2 (rising edge-triggered flip-flop clocked
by gen_EX_CLK)
Endpoint: g12 (rising edge-triggered flip-flop clocked
by gen_EX_CLK)
Path Group: gen_EX_CLK
Path Type: min
...
Generated Clock
5-13
Single Operating Condition Analysis
By default, PrimeTime analyzes the circuit timing under a single set
of operating conditions. You can specify the operating conditions with
the set_operating_conditions command.
How much is the reported slack for the setup (max) check? How
much for the hold (min) check?
Setup check
(max delay)
Hold check
(min delay)
Write down the reported slack values in the middle column of the
table.
Circle the worst (smallest) reported slack value for the three
setup checks, and also for the three hold checks. What were the
operating conditions in each case?
Best-Case/Worst-Case Analysis
The best-case/worst-case analysis mode saves time because only
one analysis run is required to check for the worst-case setup and
hold constraints at both extremes of operating conditions.
What is the reported slack in the setup and hold reports? Add
another column to your table as shown in Figure 5-4 and enter
the reported slack values. Compare the reported values with the
single-operating-mode values in your table.
Best-case/
WCCOM TYPICAL BCCOM worst-case
What is the reported slack in the setup and hold reports? Add a
column to your results table as shown in Figure 5-5 and enter the
resulting slack values into the last column of the table.
The slack values reported in on-chip variation mode are worse than
those reported in best-case/worst-case mode because PrimeTime
considers different worst-case operating conditions for the launch
and capture clock paths. Such differences can be the result of
conditions that vary from one area of the chip to another.
For the launch clock path, maximum delays are used. For the
capture clock path, minimum delays are used.
2. To enable CRPR:
pt_shell> \
set timing_remove_clock_reconvergence_pessimism true
...
4. The setup timing report shows that the worst setup (max delay)
slack is from register g1 to register g13. To get a report on clock
reconvergence pessimism between these two registers:
pt_shell> report_crpr -from g1/CP -to g13/CP \
-clock gen_EX_CLK
...
The report shows the common point of the clock paths (the last
output pin in the shared segment of the clock paths) and the CRP
values calculated for rising and falling edges at the common
point, for both minimum delays (early) and maximum delays
(late).
In this chapter, you will create and use some timing models in
hierarchical designs. The chapter contains the following sections:
6-1
Stamp and Quick Timing Models
Sometimes it is desirable to perform hierarchical timing analysis
using a module for which no netlist is available (for example, when
the module design is not yet complete). You can create a timing
model for such a module by specifying the timing arc values explicitly
with the Stamp modeling language or with PrimeTime quick timing
model commands.
Stamp Model
The Stamp modeling language allows you to specify the input and
output timing characteristics of a module in text format. PrimeTime
can compile the text-format description into a model in .db format,
which can then be used for timing analysis in PrimeTime. The Stamp
modeling language has powerful features that make it suitable for
describing the timing behavior of complex blocks such as
microprocessor and DSP cores.
There are two Stamp-language source files, the model file and the
data file. The model file defines the ports and the pin-to-pin timing
arcs. The data file contains the technology-specific data such as
timing arc values, port capacitance, maximum capacitance, and
transition times. The source files you will be using are:
~/tutpt/designs/STAMP/STAMP_MODEL_Y.mod
~/tutpt/designs/STAMP/STAMP_MODEL_Y.data
These files describe the timing behavior of module “Y.” The logical
functions of the module are not described.
Note:
For more information on creating and using Stamp timing
models, see the PrimeTime Modeling User Guide.
This writes the timing model into two files, STACK.db and
STACK_lib.db. To use the model, the library core must be
included in the search path.
Note:
For more information on quick timing models, see the PrimeTime
Modeling User Guide.
7. Set the wire load models for min and max conditions:
pt_shell> set_wire_load_mode top
1
pt_shell> set_wire_load_model -library pt_lib \
-name 05x05 -min
1
pt_shell> set_wire_load_model -library pt_lib \
-name 20x20 -max
1
In this section of the tutorial, you use the PrimeTime graphical user
interface (GUI) to view the design hierarchy in schematic form. This
section is optional. If you do not want to view the design hierarchy at
this time, skip to the next subsection, “Set the Timing Constraints” on
page 6-9.
CARRY_IN Y
Y_OUTPUT [1:12]
CONTROL UPC U4
CONDITION_CODE
U2
CONDITION_CODE_
ENABLE RELOAD STACK
INSTRUCTION[3:0]
REGCNT
CLOCK U5 U1 OVERFLOW
D[1:12]
U3
Schematic >
New Design Schematic View
3. To set the parameters for clock gating checks and minimum pulse
width checks:
pt_shell> set_clock_gating_check \
-setup 0.5 -hold 0.1 $clk
1
pt_shell> set_min_pulse_width 2.0 $clk
1
The report shows the operating conditions, wire load models, and
other design setup information.
The report shows that the input delays and output delays still
need to be specified.
6. To set the input delays, output delays, input drivers, and output
loads:
pt_shell> set nonclock \
[remove_from_collection [all_inputs] \
[get_ports CLOCK]]
...
pt_shell> set_input_delay 0.0 $nonclock -clock $clk
1
pt_shell> set_output_delay 2.0 \
[get_port INTERRUPT_DRIVER_ENABLE] -clock $clk
1
pt_shell> set_output_delay 1.25 \
There are fewer violations, and the violation amounts are smaller.
Context Characterization
Context characterization is the process of deriving the timing context
of a subdesign from its environment in the parent design. The
resulting information can be used for hierarchical timing analysis in
PrimeTime or for logic optimization in Design Compiler. Context
characterization must be done under a single set of operating
conditions.
Block Optimization
6-15
4. The commands for optimizing design UPC (U2) and design
REGCNT (U3) are contained in a script file, optimize.dctcl. To
execute the script:
dc_shell-t> source optimize.dctcl
...
Which path has the least slack and how much is the slack?
Case Analysis
You can use case analysis to limit the logical conditions under which
the analysis takes place.
Case Analysis
6-17
2. To check the current case analysis settings:
pt_shell> report_case_analysis
...
Pin name User case analysis value
----------------------------------------------------
CONDITION_CODE 0
3. To get a list of the timing arcs that have been disabled by case
analysis:
pt_shell> report_disable_timing
...
Cell or Port From To Sense Flag Reason
-------------------------------------------------------
U3/OUTPUT_reg[9] CP D hold_clk_rise p D=1,...
U3/OUTPUT_reg[9] CP D setup_clk_rise p D=1,...
...
The letter “p” in the Flag column indicates that the timing arc is
disabled by a propagated constant set by case analysis.
Which path has the least slack and how much is the slack?
Mode Analysis
You can use mode analysis to specify the operating mode of a timing
model. In this case, you will set the operating mode of block “Y” (U4).
The block “Y” timing model can be set to operate in any of several
following modes defined in the Y.mod file.
Mode Analysis
6-19
3. To set the operating mode of cell U4/core to “data”:
pt_shell> set_mode data U4/core
1
pt_shell> report_mode
...
The report shows that the “data” mode is enabled and the other
modes are disabled. The four modes within this group are
mutually exclusive.
Now what is the worst-slack path and how much is the slack?
The -output option specifies the root name used for naming
the generated files. The -format option specifies the output
formats, which are .db library format and .lib Library Compiler
format (a user-readable format).
2. Set the link path to include the new .db library file:
pt_shell> set link_path "* UPC.extr_lib.db \
./../libs/tut_model_lib.db"
...
7-1
Initial Static Timing Analysis
Before you perform crosstalk analysis, you should verify that there
are no other timing violations already in the design. You begin by
reading and linking the design, and then back-annotating detailed
parasitic data with cross-coupling capacitors from the layout
extraction tool.
Note:
Instead of using small test designs and libraries, this chapter
uses a larger design and a larger library, similar to what you might
use for a real design. Expect longer runtimes in this session.
6. Get a report on the minimum-delay path that has the least slack:
pt_shell> report_timing -delay_type min \
-crosstalk_delta -transition
...
7. Get a report on the maximum-delay path that has the least slack:
pt_shell> report_timing -delay_type max \
-crosstalk_delta -transition
...
This long path has many opportunities for crosstalk effects. In this
case, the delays at two points along the path are increased by
crosstalk effects. The data arrival time is increased and the slack
is reduced by about 26 ps.
2. In the GUI window, choose SI > Histogram > Delta Delay. In the
dialog box, click OK without changing the default settings. This
displays a delta delay histogram, which shows the distribution of
positive delta delays.
update picture
You can use the variables shown in Table 7-2 to control the
reselection of nets for second and subsequent iterations of analysis
with crosstalk. If crosstalk analysis using the default settings reveals
a large number of violations, you should do the analysis again with
the “reselect critical paths” variable set to false to get more accurate
(less pessimistic) results for a larger range of nets.
si_xtalk_reselect_critical_path true
si_xtalk_reselect_delta_delay 5
si_xtalk_reselect_delta_delay_ratio 0.95
si_xtalk_reselect_min_mode_slack 0
si_xtalk_reselect_max_mode_slack 0
si_xtalk_reselect_time_borrowing_paths true
In this exercise, you will run a more detailed analysis and see how
the results are affected.
Look in the terminal window (rather than the GUI console) for the
most up-to-date messages.
4. In the GUI, choose SI > Histogram > Delta Delay. In the dialog
box, click OK. Click on the rightmost bar in the histogram.
When you are done, close the histogram window. You can then
proceed with static noise analysis in the next section.
Aggressor net
Aggressor
net
Victim
net Crosstalk Crosstalk
delay change noise bump
VDD
Aggressor
net
GND
Bump
above high
Steady-state logic zero
VDD
Bump
Victim above low
net Bump
below high
GND
VDD
Actual noise
bump
Height Triangular
(voltage units) approximation
GND
Width = 2 * (total area) / height
(time units)
noise_region: below_high
pin name (net name) width height slack
-----------------------------------------------------
U17925/A1 (_BS1_RDY) 2547.46 0.37 0.22
The report shows an “above low” noise bump 1.2 ns wide and
0.31 volt high. The peak is 0.23 volt below the failure threshold.
Similarly, it shows a “below high” noise bump 2.5 ns wide and
0.37 volt high, 0.22 volt away from the failure threshold.
1. In the GUI, choose SI > Histogram > Noise slack. In the dialog
box, verify that “below high” is the type of noise bump selected,
and then click OK. This displays a noise slack histogram window.
Note that area slack (not height slack) values are reported.
2. Choose SI > Histogram > Accumulated Noise Bump. In the dialog
box, click OK without changing the default settings. This displays
an accumulated noise bump histogram window, which shows the
distribution of bump heights for all victim nets in the design. The
word “accumulated” means that each bump can be caused by the
combination of multiple aggressor transitions.
Click on the rightmost bin to select it. The bump heights and net
names for that bin are displayed in the list on the right. See
Figure 7-10.
The plot shows the noise immunity curve of the load pin of the
selected net, together with the data point corresponding to the
worst-case noise bump on the victim net. The noise bump height
is 0.34 volts and the bump width is 2800 psec. At that width, the
noise bump height is 0.37 volts (52%) below the logic failure
threshold. The shaded area is the “area slack” for this noise
bump.
If you wish, you can add to the schematic by using Schematic >
Add Fanin/Fanout again. In the dialog box, specify Fanin or
Fanout and the number of logic levels to add.
Click the histogram bar on the right to select it, then view the
aggressor information in the Aggressor Info spreadsheet.
8-1
Hierarchical Crosstalk Analysis Flow
For hierarchical analysis using interface logic models, you divide a
design into blocks and verify the timing of each block separately.
Then you create a timing model for each block. For analysis at the
top level, you substitute the timing models for the blocks. This
process allows timing analysis to be done in stages.
1. For each lower-level block, generate the block context and the
parasitics for the block and its context. Generate a top-level
design that uses interface logic models for the lower-level blocks.
2. For each lower-level block, perform in-context timing analysis
using the block, context, and block/context parasitics. Generate
the interface logic models and related data files.
3. Perform top-level analysis using the interface logic models and
parasitic data annotated on the nets still remaining in the design.
4. Did the design meet all timing constraints in the previous
block-level analysis? If not, it might be due to the conservative
analysis used initially for block-level analysis. To find out,
generate new arrival/slew information for the block contexts,
repeat in-context block-level analysis for each block, and go back
to Step 3 to get a more accurate analysis. If necessary, change
the routing or design parameters to meet the timing
requirements.
Figure 8-1 on page 8-3 is a diagram showing the flow to analyze
crosstalk effects between different blocks and different levels of
hierarchy.
Start
Full
Full design
parasitics
Step 1
Top-level
Infinite arrival windows design files
Context
and zero slew used for a (cross-coupled nets,
conservative analysis logic, and parasitics
Step 2
Interface logic
models
Step 3
Arrival and
slew data
S
Perform block-level Timing OK in
analysis using annotated block-level
arrival and slew data; fix No analysis?
routing if needed
Yes
Done
5. Choose the menu command Schematic > Move Up. The top-level
view is restored.
6. Repeat the previous two steps, selecting blockB instead of
BlockA. The lower-level schematic is the same as for blockA.
However, the extracted context files are different due to
differences in cross-coupling.
6. To find out the size of the crosstalk bump induced on the victim
net:
pt_shell> get_attribute [get_net blockA/n5] \
si_xtalk_bumps
{ blockB/n11 0.060968 0.062644 }
The aggressor net is blockB/n11 and the worst-case rise and fall
bump sizes are 0.061 and 0.063 times the rail-to-rail voltage.
9. To prepare for the next step, close the schematic window and
remove the design:
pt_shell> remove_design -all
...
9. To prepare for the next step, close the schematic window and
remove the design:
pt_shell> remove_design -all
...
The top.tcl script reads in and links the top-level model and
interface logic models, applies the instance-level constraints,
applies infinite arrival windows the aggressor nets, and
annotates the design with detailed parasitics.
Let’s continue with this flow, even though there are no violations.
For each block, this command overwrites the existing script file
wrapper.pt.gz with a new script that annotates the aggressor
drivers with arrival times and transition times.
7. To prepare for the next step, close the schematic window and
remove the design:
pt_shell> remove_design -all
...
The script reads in the blockA wrapper design, sets that design
as the current design, links the design, and reads the wrapper
parasitics. The wrapper.pt.gz script annotates the aggressor
driver with arrival time and slew information.
The reported worst-case rise and fall bump sizes are a little bit
less than before.
IN-21
create_clock 1-8 set_false_path 4-3
create_generated_clock 5-2, 5-6 set_input_delay 1-9
create_ilm 8-10 set_load 1-12
create_si_context 8-5 set_max_delay 4-18
extract_model 6-23 set_min_delay 4-18
get_attribute 8-10 set_multicycle_path 4-12
get_ports 1-9 set_operating_conditions 1-13, 2-6
gui_start 1-21 set_output_delay 1-9
help 1-35 set_propagated_clock 3-14
link_design 1-7 set_wire_load 1-13
man 1-35, 1-36 set_wire_load_mode 2-6
read_parasitics 2-9, 3-14, 7-3 set_wire_load_model 2-6
read_verilog 1-7 source 1-22
remove_design 1-19 swap_cell 6-16, 6-28
remove_lib 1-20 transform_exceptions 4-25
report_cell 1-15 update_noise 7-20
report_clock 1-11, 1-16, 5-6 write_arrival_annotations 8-11
report_clock_timing 3-11 write_context 6-15
report_delay_calculation 2-18, 5-12 write_interface_timing 6-23
report_design 1-13, 5-14 write_script 1-47, 4-24, 6-11
report_disable_timing 6-18 compare_interface_timing command 6-26
report_exceptions 4-4 constraints, basic 2-2
report_hierarchy 1-14 context characterization 6-14
report_lib 2-5
continuation character (\) 1-8
report_mode 6-19
copying the tutorial files 1-2
report_net 1-14, 2-12
report_noise 7-20 create_clock command 1-8
report_port 1-11 create_generated_clock command 5-2, 5-6
report_reference 1-16, 6-6 create_ilm command 8-10
report_timing 1-17 create_si_context command 8-5
reset_design 4-25 crosstalk analysis 7-1
reset_path 4-4 crosstalk delay analysis 7-5
restore_session 1-21 crosstalk noise analysis 7-17
save_session 1-20 enabling 7-6
set_case_analysis 5-10, 6-17 hierarchical 8-1
set_clock_groups 4-8 histograms 7-9
set_clock_latency 1-9, 3-6 net reselection variables 7-15
set_clock_transition 3-10 number of iterations 7-15
set_clock_uncertainty 3-8 CRPR (clock reconvergence pessimism
set_disable_timing 4-8 removal) 5-20
set_driving_cell 1-11
IN-22
D timing path table 1-23, 1-26
waveform viewer 1-32
data table (GUI), attributes (GUI) 1-44
gui_start command 1-21
default path group 5-7
delay profile (GUI) 1-30
Design Compiler block optimization 6-15 H
design files 1-2 help command 1-35
reading 1-6 hierarchical analysis 6-1
design linking 1-7 extracted timing model 6-21
driving cell at input 1-11 GUI schematic view 6-7
interface logic model 8-10
quick timing model 6-3
E report_reference command 6-6
exceptions, timing 4-1 Stamp model 6-2
exclusive clocks 4-8 hierarchical crosstalk analysis 8-1
exiting PrimeTime 1-19 histogram
extract_model command 6-23 accumulated bump voltage 7-11
extracted timing model 6-21 accumulated noise bump 7-23
aggressor bump voltage 7-12
aggressor noise bump 7-26
F delta delay 7-10
false paths 4-2 path slack 1-27
fanout (all_fanout command) 4-5 hold constraint (multicycle path) 4-13
files, tutorial 1-2
footprint button (in path inspector) 1-34 I
input delay, specifying 1-9
G input, driving cell 1-11
generated clock 5-2 interface logic model 8-10
get_attribute command 8-10
get_ports command 1-9 L
getting started 1-1
latency 3-2
graphical user interface (GUI) 1-21 propagated 3-13
attribute data table 1-44 source and network 3-3
path delay profile 1-30
library report 2-5
path inspector 1-28
line continuation character (\) 1-8
path schematic 1-31
path slack histogram 1-27 link_design command 1-7
starting 1-21 link_path variable 1-6
load at output 1-12
IN-23
M path schematic 1-31
path slack histogram 1-27
man command 1-35, 1-36
path table (GUI) 1-23, 1-26
mode analysis 6-19
paths searched by PrimeTime 1-6
model validation 6-25
paths, invalid startpoints and endpoints 4-4
multicycle paths 4-10
paths, specifying 4-5
mypath1 (alias) 5-13
pausing between pages of PrimeTime
messages 1-6
N PrimeTime SI 7-1
nesting commands using brackets 1-9 propagated clock latency 3-13
net reselection variables (crosstalk) 7-15
network latency 3-3 Q
noise immunity curve (GUI) 7-24
quick timing model 6-3
quitting PrimeTime 1-19
O
objects (in a collection) 1-39 R
attributes 1-41
read_parasitics command 2-9, 3-14, 7-3
on-chip variation analysis 5-17
-keep_capacitive_coupling option 7-6
operating conditions 5-1
read_verilog command 1-7
operating condtions
reading design files 1-6
best-case worst-case (bc_wc) analysis 5-16
register list report 3-7
on-chip variation analysis 5-17
reporting 5-14 remove_design command 1-19
slack values (table) 5-14 remove_lib command 1-20
optimizing a block in Design Compiler 6-15 report, saving to a file 3-6
output delay, specifying 1-9 report_cell command 1-15
output load 1-12 report_clock command 1-11, 1-16, 5-6
report_clock_timing command 3-11
report_delay_calculation command 2-18, 5-12
P report_design command 1-13, 5-14
parasitic data back-annotation 2-9 report_disable_timing command 6-18
parasitic data, debugging 2-14 report_exceptions command 4-4
parasitics, reading 7-3 report_hierarchy command 1-14
path delay profile (GUI) 1-30 report_lib command 2-5
path groups 5-7 report_mode command 6-19
path inspector report_net command 1-14, 2-12
footprint button 1-34 report_noise command 7-20
path inspector (GUI) 1-28 report_port command 1-11
IN-24
report_reference command 1-16, 6-6 set_wire_load_mode command 2-6
report_timing command 1-17 set_wire_load_model command 2-6
enable_preset_clear_arcs option 5-10 setup check 1-8
reselection variables (crosstalk) 7-15 sh_enable_page_mode variable 1-6
reset_design command 4-25 shortening commands 3-2
reset_path command 4-4 si_enable_analysis variable 7-6
restore_session command 1-21 si_xtalk_ variables 7-15
slack histogram 1-27
slew 3-9
S source command 1-22
save_session command 1-20
source latency 3-3
saving a report 3-6
square brackets (for command nesting) 1-9
saving session settings 1-47
Stamp model 6-2
schematic
starting PrimeTime 1-5
aggressor and victim 7-12
path 1-31 starting the tutorial 1-1
scrolling 1-6 swap_cell command 6-16, 6-28
SDF data, back-annotation 2-17
search_path variable 1-6 T
session, restoring 1-21 Tcl (Tool Command Language) 1-37
session, saving 1-20 timing exceptions 4-1
set_case_analysis command 6-17 false paths 4-2
set_case_anlaysis command 5-10 min and max delay 4-18
set_clock_groups command 4-8 multicycle paths 4-10
set_clock_latency command 1-9, 3-6 order of priority 4-19
set_clock_transition command 3-10 saving and restoring 4-24
set_clock_uncertainty command 3-8 transforming 4-24
set_disable_timing command 4-8 timing models 6-1
set_driving_cell command 1-11 extracted 6-21
quick timing model 6-3
set_false_path command 4-3
Stamp 6-2
set_input_delay command 1-9
validation 6-25
set_load command 1-12
timing path table (GUI) 1-23, 1-26
set_max_delay command 4-18
timing report 1-17
set_min_delay command 4-18
timing setup check 1-8
set_multicycle_path command 4-12 timing_remove_clock_reconvergence_
set_operating_conditions command 1-13, 2-6 pessimism variable 5-21
set_output_delay command 1-9 transform_exceptions command 4-25
set_propagated_clock command 3-14 transforming timing exceptions 4-24
set_wire_load command 1-13
IN-25
transition time 3-9 si_enable_analysis 7-6
transition time, clock 3-2 si_xtalk_ 7-15
tutorial files 1-2 timing_remove_clock_reconvergence_
pessimism 5-21
Verilog, reading 1-7
U
uncertainty, clock 3-2, 3-8
update_noise command 7-20
W
waveform viewer 1-32
wire load model, setting 1-13
V worst-slack path report 1-18
variables 1-38 wrapper files (create_si_context) 8-5
auto_wire_load_selection 2-6 write_arrival_annotations command 8-11
link_path 1-6 write_context command 6-15
net reselection (table) 7-15 write_interface_timing command 6-23
search_path 1-6 write_script command 1-47, 4-24, 6-11
sh_enable_page_mode 1-6
writing a report to a file 3-6
IN-26