Thursday, November 11, 2010
Tuesday, November 9, 2010
RC extraction
basic rc extraction corners
Hi,
Extraction can happen in different modes and different process corners.
From the fab, we get the RC data for different corners (for example slow/fast/nominal etc).
when we talk about modes, extraction can happen for ASIC's during the design process at
1. Global mode (post global routing).
2. Final mode (post detailed routing).
In Global mode, once RC's are extracted, the delay model that is used is elmore.
Elmore is a distributed resistance and lumped capacitance model. It accounts for only one pole and hence fast but can introduce some inaccuracy.
In final mode, the delay model is AWE (asymptotic waveform evaluation). AWE is more accurate because it is a > 2 pole model.
Delay models are important because the delay calculator provides this delay information back to STA (static timing analysis) engine.
Extraction is so important because it effects STA (static timing analysis), which dictates if you met your setup and hold times at every single flop in your chip.
STA actually finds the longest(critical) path in your circuit which determines your circuit frequency and also if you met all your hold times in your circuit.
STA uses extraction data at fast corner while calculating hld and slow data while calculating setup to be pessimistic as possible so that your chip doesn't fail after it comes back from the fab.
Extraction can also be classified as Lumped and coupled. In lumped you basically try to reduce a large RC circuit into an equivalen smaller RC circuit just taking the dominant poles into account (without any coupling). This is important because you want to reduce large RC circuits to smaller one's so that you can save on computer memory and run times.
In coupled mode, you basically try to extract the coupling capacitances which contribute to analyzing your crosstalk delay/noise effects on your chip.
If we are extracting for gate level, we have an equivalent RC circuit representation for each gate, which represents the gate Input/Output capacitances along with holding resistances. We plug these models into the RC network. But this is only for delay computation purpose (especially for fast slew propagation). But this can be inaccurate. Hence we dont represent gates using RC's. Rather we represent them using NLDM's and .libs (liberty format).
Reduction only happens mostly for passive components (wires) and not active elements. This reduction we term as model order reduction (MOR).
We usually plug in .lib (liberty) models for gates. Liberty models have tables which show gate delay as a function of (input transition time/output loads).
what we use at global and final mode for extraction is usually called a 2.5D extractor. This makes use of rules which are generated using a 3D extractor.
A 3D extractor is most accurate as it uses maxwells equations (to be precise green's function) to calculate RC's of various geometries which your fabrication facility will most likely manufacture.
BR
-Niks
Thursday, October 28, 2010
Fwd: 68-95-99.7 rule - Wikipedia, the free encyclopedia
Helen, Jeffrey and Stephane
From: Jeffrey CUI <huijun.cui@gmail.com>
Date: Thu, Oct 28, 2010 at 4:48 PM
Subject: 68-95-99.7 rule - Wikipedia, the free encyclopedia
To: Jeffrey CUI <huijun.cui@gmail.com>
Tuesday, October 26, 2010
Clock reconvergence pessimism removal (CRPR) 2
The removal portion or the credit is the difference between max delay and min delay of the common portion.
There is a command called : report_crpr which could give the exact crp value. Calculate crpr is quite expensive, so report_timing won't give you the exact cpr value. The value given by the report_timing is the exact value +/- the range of "timing_crpr_threshold_ps". That is the reason that you could see different crp value between report_crpr and report_timing.
To deal with the above issue, synopsys create another variable "timing_crpr_enable_adaptive_engine" to handle, when this variable is set to true, only the path with violation will be recalculate cpr, so the cpr will be accurate.
Clock reconvergence pessimism removal (CRPR)
In the adaptive CRPR mode, PrimeTime SI calculates CRPR only for the critical path set
(the violating portion of the design), thereby reducing the complexity of CRPR analysis. The
critical path set is the set of all paths with a slack of less than zero, for both setup and hold
timing constraints. The adaptive mode operates only when crosstalk analysis is enabled and
the maximum iteration count is set to 2 or more.
Typically, more nets are reselected for analysis in the second iteration using adaptive CRPR
because no CRPR is done in the first iteration. The resulting analysis is more accurate (less
pessimistic) because more nets are reselected for analysis.
report_timing and report_crpr
CRPR, or clock reconvergence pessimism removal, accounts for the difference in min/max delay of the portion of the clock network that is common to both the launch and the capture paths. For a path, it finds the common pin where the clock paths diverge, computes the difference between the min/max arrival times (the "CRP" value), and applies this as a credit to the path slack.
pt_shell> report_app_var *crpr*
Variable Value Type Default Constraints
----------------------- --------- ------- ---------- -----------------------
timing_crpr_enable_adaptive_engine false bool false
timing_crpr_minimize_grouping false bool false
timing_crpr_remove_clock_to_data_crp false bool false
timing_crpr_remove_muxed_clock_crp true bool true
timing_crpr_threshold_ps 1000 real 20 val >= 1
CRPR should be set to true to get things closer to the .........
Talk with Oscar ( library guy )
2. It doesn't make sense to use set_nose_margin, set_noise_immunity_curve, it is a coarse setting and some teams use it to add extra margin.
3. We do have lef file available ( I love lef file, I could extract lots of information from it ).
PTL, I got all the information I need.
Question: which corner we use when we analyze noise ???
Monday, October 25, 2010
set_noise_margin
From: Jeffrey H Cui [mailto:jeffrey@marvell.com]
Sent: Monday, October 25, 2010 6:25 PM
To: Jeffrey Cui
Subject:
2. Synopsys Commands Command Reference
set_noise_margin
Copyright 2009 Synopsys, Inc. All rights reserved.
NAME
set_noise_margin
Sets noise margin for a library pin, port, or pin.
SYNTAX
int set_noise_margin
[-above]
[-below]
[-low]
[-high]
margin_value
object_list
float margin_value
list object_list
ARGUMENTS
-above Specifies the noise margin for above ground or power rail noise
analysis region.
-below Specifies the noise margin for below ground or power rail noise
analysis region.
-low Specifies the noise margin for ground rail noise.
-high Specifies the noise margin for power rail noise.
margin_value
Specifies a margin value. The value is the input height in
units of voltage. 1.0.
object_list
Specifies a list of lib-pins or ports.
DESCRIPTION
Each library cell input can tolerate a certain amount of noise without
causing a failure at the cell output. This characteristic is called
noise immunity. This command specifies noise immunity at library pins
to determine whether noise failures occur as well as the amount of
noise slack.
Noise immunity in the library can be specified as noise immunity
curves, polynomials, or tables or in terms of noise margins.
This command specifies a noise margin for a library pin, design port,
or pin. It can be used in the absence of library-specified noise immu-
nity characteristics, or to override the library-specified characteris-
tics by replacing them with noise margins. Noise immunity curves that
have been annotated using the set_noise_immunity_curve command will
override noise margins set by this command.
Noise margins consider only the bump heights at the cell inputs. Using
height-only noise margins is simpler, faster, and more conservative
than the other methods.
For high, narrow noise bumps, using height-only noise margins is pes-
simistic because it treats some bumps as noise failures that would oth-
erwise pass with the immunity curve model. However, for wide noise
bumps, using noise
margins gives the same results as using noise immunity curves.
Noise immunity characteristics can vary for different noise bump types,
so there can be four different noise margins associated with each
input: below low, above low, below high, and above high. All values are
specified as positive numbers for all four types of noise bumps.
In the absence of command-specified or library-specified noise immunity
data, PrimeTime SI calculates the maximum allowable noise bump heights
based on DC noise margins of the driver and receiver, as defined in the
.lib technology library by the input/output logic-level parameters.
report_noise_calculation will show whether noise margin information was
taken from the library or annotated by this command.
EXAMPLES
This example specifies a margin of 4 for above the ground rail noise
for pin A of library cell IV in the lsi_10k library:
pt_shell> set_noise_margin -above -low 4 lsi_10k/IV/A
SEE ALSO
set_noise_immunity_curve (2), report_noise_calculation (2),
remove_noise_margin (2).
B-2008.12-SP2 Copyright (c) 2009 Synopsys, Inc. All rights reserved.
set_noise_margin -above -low 4 m9hpd_std_slow/hpd_sao21bx2/A2