Constraints Sta PDF
Constraints Sta PDF
Technology- specific
mapped gate level netlist
(Timing info )
Types of Synthesis
Logical Synthesis : (WLM Based Synthesis)
• wire load model is being used to calculate the length, timing , area and power
consumed by the nets which are interconnecting the gates and macros in a
design . The results may have huge deviation to the result of final chip.
7
Optimization Constraints (Goals)
Timing
Area
Power
8
Optimization for Area
Before applying constraint, always verify that the current design is your
intended design
Is set_max_area 0 acceptable ??
9
Optimization for Area
Is set_max_area 0 acceptable ??
As timing constraints have higher priority then area constraints, So it will try
to optimize area till the timing starts worsening. Having area constraint as 0
will increase run time if timing constraints is not much aggressive
Optimization for Timing
There are 4 types of Data paths:
Register to register
The reg to reg paths starts at the clock pin of the sequential element and end
at the data input of a sequential element
During synthesis, the clock net is not “buffered up ”, although it has a high
fanout of flipflops connected by clock/enable pin
If a design has positive and a negative flops, then define duty cycle also. We can also
define rise time, fall time, clock name and offset.
During synthesis, we don’t actually have a real, propagated clock. It is available only
after Clock tree synthesis (CTS) stage
Clock uncertainty is the time difference between the arrivals of clock signals at
registers in one clock domain or between domains
Difference In the
Delay
Cont…
Eg:
During pre-layout: set_clock_uncertainity 10 clk
During post-layout: set_clock_uncertainity 5 clk
After post-layout tool calculates the skew between the branches, so skew value is removed from
set_clock_uncertainity command
Example for clock_uncertainity
Source Latency: It is the time taken by the clock signal to propagate from its ideal
waveform origin point to the clock definition point in the design
Network Latency: It is the time taken by the clock signal to propagate from the clock
definition point in the design to the clock pin of the sequential device
It is the delay that is assumed to exist between the clock source and the flip-flop clock
pin
It is not the actual delay, but the delay specified by the user, to account for the clock
delay which will be auto calculated after CTS
The timing analyzer uses this information to determine clock arrival times during
synthesis
During pre-layout and post-layout, the value for source latency remains the same
During pre-layout, the clock is ideal, we need to model network delay but after the
clock is propagated at post-layout, we don’t have to define or estimate network delay as
we have realistic values. Define propagated clock as set_propagated_clock clk
Cont..
Once CTS is complete i.e. post CTS, the actual delay from the clock root pin to the clock
sink pin can be calculated. Then this delay is called insertion delays at that point
Clock Transition
The transition time of a net is the longest time required for its driving pin to change
logic value
Clock Transition
During pre-layout: set_clock_transition 0.30 clk
During post-layout: We don’t have to define it as we have realistic values of propagated
clock
Constraining input paths (input port to reg)
The input pin/port to reg paths, starts at the input pin/port of and end at the data
input of a sequential element
The input data at pin “A” should arrive after TCLKTOQ + TM. This is the minimum
amount. of time to specify as input delay
Constraining output paths (Reg to output port)
The reg to output pin/port paths, starts at the output pin of the sequential element
and end at the output pin/port
The output delay at pin “A” should be estimated as TN + TSETUP. This is external logic’s
setup requirement relative to the clock.
Constraining combinational path : Virtual clocks
They are used as a reference to module for input and output delays. Thus they are
needed to constrain the input ports to register timing paths and reg to output port
timing paths
To define a virtual clock , just give create_clock without any generation point
create_clock -name clk_vrt –period 10
The waveform of virtual clock is same as real clock. We should also define the latency
of virtual clock as same as real clock
Summary: Commands Covered
# area constraint
set_max_area 5000
Maximum Fanout
Maximum Capacitance
Minimum Capacitance
• Cell Degradation
Design Rule Constraints (cont.)
Maximum Fanout
• Most technology libraries place fanout restrictions on driving pins, creating an
implicit fanout constraint for every driving pin in designs using that library
• Design Compiler models fanout restrictions by associating a fanout_load attribute
with each input pin and a max_fanout attribute with each output (driving) pin on a
cell.
Maximum Capacitance
• The maximum capacitance design rule constraint allows you to control the
capacitance of nets allows you to control the capacitance of nets directly. (The design
rule constraints max_fanout and max_transition limit the actual capacitance of nets
indirectly)
Minimum Capacitance
• The min_capacitance design rule specifies the minimum load a cell can drive. It
specifies the lower bound of the range of loads with which a cell has been
characterized to operate
Design Rule Constraints (cont.)
Cell degradation
Some logic libraries contain cell degradation tables
The tables list the maximum capacitance that can be driven by a cell as a
function of the transition times at the inputs of the cell.
The cell_degradation design rule specifies that the capacitance value for a net is
less than the cell degradation value
set_cell_degradation command sets the cell_degradation attribute to a specified
value on specified input ports.
Maximum Transition time
• The maximum transition time for a net is the longest time required for its
driving pin to change logic values. Typically fixed by buffering the output of
driving gate.
Precedence of Design Rule Constraints
Minimum Capacitance
Maximum Transition
Maximum Fanout
Maximum Capacitance
Cell degradation
Commands to constraint DRCs
set_max_transition
• Set the maximal transition time (low-high and high-low) for a port or a design. The library defines the
transition measure points (i.e: 10%-90%, 20%-80%)
• Delay of library cells as well as their output transition depends on this value. Also, setup and hold
time of sequential cells is affected by it
set_max_fanout
• In all libraries a cell input has a fanout load value. In most cases it’s 1, but can be a different value
• Compile attempts to ensure that the sum of the fanout_load attributes for input pins on nets driven by
the specified ports or all nets in the specified design is less than the given value
set_max_capacitance
• Limits the allowed capacitance on input, output or bidirectional ports and/or designs
Summary: Commands Covered
set_max_transition
set_max_fanout
set_max_capacitance
Set_min_capacitance
Set_cell_degradation
Design Environment
• Operating Conditions
These three factors together provide minimum and maximum cell and wire delays that,
depending on which combination of PVT is chosen for optimization
The three choices of operating conditions for optimizing their design – worst case, best
case and typical case operating conditions
Defining Operating Conditions
To see the operating conditions that are defined for the current design, use the
report_design command
Wire Load Model (WLM)
A wire load model is a statistical model, provided by vendor
A wire load model calculates parasitic R and one C for each net, based on the net’s
fanout number
Information about the external drive strength and the loading at each input port needs
to determine the delay and transition time characteristics of incoming signals
Transition delay at an input port is the product of the drive resistance and the
capacitance load of the input port
Drive Characteristics for Input Ports
current_design top_level_design
set_drive 1.5 {I1 I2}
current_design sub_design2
set_driving_cell -lib_cell IV {I3}
set_driving_cell -lib_cell AN2 -pin Z -from_pin B {I4}
Effect of Input Transition Time
Rise and fall transition times on an input port affect the cell delay of the input gate
Modeling Input Transition
Use the set_load command to set a capacitive load value on input and output ports of
the design. Following command sets a load of 30 on output pin out1
set_load 30 {out1}
Use set_fanout_load command to model the external fanout effects by specifying the
expected fanout load values on output ports
set_fanout_load 4 {out1}
Summary: Commands Covered
report_design
set_driving_cell
set_drive
set_input_transition
set_load
set_fanout_load
Power constraints
STA
Basic Flow
Timing verification
Static verification:
Verifies timing and functionality
The STA is static since the analysis of the design is carried out statically and
does not depend upon the data values being applied at the input pins.
Uses formal, mathematical techniques instead of vectors
Does not use dynamic logic simulation
The purpose of static timing analysis is to validate if the design can operate
at the rated speed.
Static Timing Analysis Flow
Required Input Files
Read and Constraints
Basic timing checks_Setup and hold definition
• Data must become valid and stable at least one setup time before being
captured by flip-flop.
• Data remains stable for a minimum time as required by capture flip-flop. (Hold
Check)
Setup Check
CONTD..
Hold check
Input to Flip-flop Path Setup/hold check
Setup check
create_clock -name VIRTUAL_CLKM -period 10 -waveform {0
5}
set_input_delay -clock VIRTUAL_CLKM \
-max 2.55 [get_ports INA]
CONTD..
Specifying delays
A removal timing check ensures that there A recovery timing check ensures that there is a
is adequate time between an active clock minimum amount of time between the
edge and the release of an asynchronous asynchronous signal becoming inactive and the next
control signal. The check ensures that the active clock edge. In other words, this check ensures
active clock edge has no effect because the that after the asynchronous signal becomes inactive,
asynchronous control signal remains active there is adequate time to recover so that the next
until removal time after the active clock active clock edge can be effective.
edge.
Timing across different Clock Domains
A non sequential check is a check between two pins, neither of which is a clock. The check specifies how long the
data on the constrained pin must be stable before and after the change on the related pin.
A non-sequential check is similar to a data to data check described , though there are two main differences.
In a non-sequential check, the setup and hold values are obtained from the standard cell library, where the setup
and hold timing models can be described using a NLDM table model or other advanced timing models. In a data to
data check, only a single value can be specified for the data to data setup or hold check.
The second difference is that a non-sequential check can only be applied to pins of a cell, whereas a data to data
check can be applied to any two arbitrary pins in a design.
pin (WEN) {
timing () {
timing_type: non_seq_setup_rising;
intrinsic_rise: 1.1;
intrinsic_fall:1.15;
related_pin: “D0”;
} timing () { Library spec for non seq checks
timing_type: non_seq_hold_rising;
intrinsic_rise: 0.6;
intrinsic_fall:0.65;
related_pin: “D0”;
}
}
Clock Gating Checks
A clock gating check occurs when a gating signal can control the path of a clock
signal at a logic cell.
condition for a clock gating check is that the clock that goes through the cell
must be used as a clock downstream.
Another condition for the clock gating check applies to the gating signal.The
signal at the gating pin of the check should not be a clock or if it is a clock, it
should not be used as a clock downstream.
In latch based designs timing check has to be done based on Time borrowing technique (Cycle
Stealing). Here one edge of the clock makes the latch transparent that is called Opening
edge. Other edge of the clock makes the latch closes the data i.e. called Closing edge.
Time borrowing: If the data is ready at latch input before the active edge of the clock then as the
latch is transparent with the active part of the clock, it can pass the data later the active edge of the
clock. Here it is borrowing(stealing some part of the clock cycle) some time i.e called Time
borrowing Technique.
Case 1
Case 2
Case 1:
Please observe the explanation based on case 1.If the data DIN is available prior to the
opening edge of the latch at 10ns, data flows to the output of the latch as it opens. The timing
behavior is modeled exactly as like flip-flop. The opening edge only captures the data and the
same edge launches the data to the next start point of path.
Case 2:
Please observe the explanation based on case 2. If the data DIN is available after the
opening edge and before closing edge of the latch (i.e while the latch is transparent), the
output of latch only used as the launch point for the next path.Here the time is borrowed from
the available clock cycle is nothing but time borrowing. I can say that the available time is less
for capturing.
Case 3:
If the data DIN is available after closing edge of the latch is a timing violation.
Observation:
So based on this i can say that the timing check happens with respect to closing edge of
the clock cycle as like these three cases
Case Analysis
Case analysis allows timing analysis to be performed using logic constants or logic
transitions (rising or falling) on ports or pins, to limit the signal propagated
through the design.
Case analysis is a path-pruning mechanism and is most commonly used for timing
the device in a given operational configuration or functional mode.
set_case_analysis 0 [get_ports
"SCAN_MODE"]
Mode Analysis
Library cells and timing models can have operating modes defined in them, such as read and write
modes for a RAM cell. Each mode has an associated set of timing arcs that PrimeTime analyzes when
that mode is active.
Cell modes
Cell modes are defined in a timing model or library cell, such as the read and write modes for a RAM
cell. Design modes are user-defined modes that exist at the design level, such as normal and test
modes
Design modes
You can map a design mode to a set of cell modes in cell instances or to a set of paths.
examples
i. IR drop variation along the die area affecting the local power
supply.
ii. Voltage threshold variation of the PMOS or the NMOS device.
iii. Channel length variation of the PMOS or the NMOS device.
iv. Temperature variations due to local hot spots.
v. Interconnect metal etch or thickness variations impacting the interconnect
resistance or capacitance.
On-Chip Variations (OCV) and these variations can affect the wire delays and cell delays in different portions of
the chip. The OCV effect is typically more pronounced on clock paths as they travel longer distances in a chip.
Derating setup timing check for OCV
In general, the hold timing check is performed at the best-case fast PVTcorner. In such a scenario, no
derating is necessary on the early paths, as those paths are already the earliest possible.
Clock Reconvergence Pessimism Removal (CRPR).
In the setup check above, there is a discrepancy since the common clock path of the clock tree,
with a delay of 1.2ns, is being derated differently for the launch clock and for the capture clock.
This part of the clock tree is common to both the launch clock and the capture clock and should not
be derated differently.
The pessimism caused by different derating factors applied on the common part of the clock tree
is called Common Path Pessimism (CPP) which should be removed during the analysis.
Graph-based AOCV analysis is a fast, design-wide analysis performed during the update_timing
command. It allows designers to exploit reduced derating pessimism across the entire design to
reduce silicon area and improve design performance.
Path-Based AOCV Analysis
If violations still remain after completion of graph-based AOCV analysis, you can reduce pessimism
and improve the accuracy of results by invoking path-based AOCV analysis, which analyzes each path
in isolation from other paths
The following example of an AOCV file sets an early AOCV table for the whole design, which
applies to all cell and nets:
PrimeTime ADV parametric on-chip variation (POCV) models the delay of an instance as a function
of a variable that is specific to the instance.
POCV provides the following:
• Statistical single-parameter derating for random variations
• Single input format and characterization source for both AOCV and POCV table data
• Nonstatistical timing reports
• Limited statistical reporting (mean, sigma) for timing paths
• Compatibility with existing PrimeTime functionality
PrimeTime Timing Models Support
Interface logic contains all circuitry leading from I/O ports to edgetriggered registers called
interface registers. The clock tree leading to interface registers is preserved in an ILM. Logic that is
only contained in register-to-register paths on a block is notin an ILM.
create_ilm –block_scope –verification_script -parasitics_options {spef
input_port_nets constant_nets}
ETM
1. No Path Found
i. the timing path is broken, or
ii. the path does not exist, or
iii. there is a false path
2. Clock Crossing Domain
7. Half-cycle Path/ Large Delays and Transition Times/ Missing Multicycle Hold