Uploaded by 1810862625

Cadence ECSM Spec Noise 02-16-2015

advertisement
1
Effective Current Source Model
(ECSM) Noise Specification™
Version 1.1
16 February 2015
Published by
Cadence Design Systems
2655 Seely Avenue
San Jose, CA 95134
Copyright © 2015 by Cadence Design Systems and Si2, Inc. All Rights Reserved.
This document is an update provided by Cadence to the Si2 Effective Current Source
Model (ECSM) Noise Specification, version 1.0.
The authors, editor, publisher, and contributors specifically disclaim warranties of any kind
whether express or implied, with regard to any material contained herein, including, without
limitation, any warranties of title, non-infringement, merchantability, or fitness for a particular
purpose. In no event shall the authors, editors, publisher, or contributors, be responsible or
liable for any loss of profit or damages, direct or indirect, including but not limited to, special,
incidental, consequential or any other damages, in connection with or arising out of any use
of this material.
Where manufacturer or vendor designations claimed as trademarks are used herein, and
the publisher or authors were aware of the trademark claim, such designations have been
printed in initial caps or all caps.
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
2
Table of Contents
1 Introduction ........................................................................................................................... 5
2 ECSM Noise Extensions ...................................................................................................... 7
2.1 Library-Level Attribute ..................................................................................................... 7
2.1.1 Version ..................................................................................................................... 7
2.2 ViVo Current Waveform ................................................................................................ 10
2.2.1 Overview................................................................................................................. 10
2.2.2 Characterization for Vivo current model................................................................... 11
2.2.3 ecsm_vivo_table_template group............................................................................ 13
2.2.4 ecsm_vivo_current_waveform group ...................................................................... 14
2.2.5 Syntax .................................................................................................................... 16
2.2.6 Constraints ............................................................................................................. 18
2.2.7 Example usage ....................................................................................................... 18
2.3 Slew Propagation .......................................................................................................... 20
2.3.1 ecsm_itt_template group ......................................................................................... 21
2.3.2 ecsm_internal_transition group ............................................................................... 23
2.3.3 Constraints ............................................................................................................. 26
2.3.4 Example usage ....................................................................................................... 27
2.4 Additional Noise Analysis Constructs ............................................................................ 30
2.4.1 Pin group attributes ................................................................................................. 30
2.4.2 Syntax .................................................................................................................... 31
2.4.3 Constraints ............................................................................................................. 32
2.4.4 Example usage ....................................................................................................... 32
3 Example.............................................................................................................................. 34
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
3
Abstract
This specification describes the syntax and semantics for Noise extensions to the Si2
ECSM Timing and Power Specification. These extensions provide a mechanism for passing
cell behavior information from a characterization system to design tools, enabling them to
perform accurate noise analysis.
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
4
Document Conventions
The monospaced Courier font is used throughout to indicate Liberty™ or ECSM syntax.
• “regular” face are keywords that must be used as written
• "bold" face highlights ECSM extensions when included with standard Liberty™
syntax
• "italic" face identifies value data that must be assigned for each statement instance as
listed in Table I-1.
Syntax elements appearing in square brackets are optional, required only if certain
specified conditions exist.
Table I-1 Syntax Representations for Instance-Specific Data
Representation
float
int
templateName
connectionName
Semantics
A floating point value
An integer value
The name of an ecsm_itt_template defined in the library
The name of a power rail defined in the power supply
group
pinName
The group name of a pin statement defined in the library
transitionType rise or fall
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
5
1 Introduction
1.1 Purpose
This specification describes the ECSM (Effective Current Source Model) extensions to
Synopsys’ Liberty™ format required to describe library data for noise analysis.
1.2 ECSM requirements
ECSM noise extensions requirements are:
• They must be compatible with and resemble existing ECSM constructs and Liberty™
formats.
• Updates to existing characterization tools to create the additional data needed for ECSM
should be quite minor.
• They must use the same context as the equivalent Liberty™ construct. For example, units
must be consistent. If an extension uses a current value and the current unit is defined as 1
milliampere, the values placed in the attribute must be in milliamperes.
• They should be easily extracted by and not cause any change in behavior in any nonECSM enabled tool that reads the Liberty™ format including tools that use compiled
library files.
1.3 Overview
The models required for noise analysis are similar to the models used for timing analysis,
but there are some differences. Noise analysis typically consists of two different types of
calculations: the effect of noise on delay, and functional or “glitch” noise.
Noise on delay analysis requires an accurate model of the driving stage of each gate. Glitch
noise analysis requires a way to model the effective holding resistance of the output stage of
the cell, while the “victim” driver is held at either a logic 0 or 1 value. Additionally, glitch noise
analysis filters out small, insignificant noise according to parameters set on the inputs of the
cell.
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
6
Due to the above considerations, noise analysis tools may need detailed models for the
different Channel Connected Components (CCCs) within a cell. In the context of a cell, a CCC
is often referred to as a stage. Accurate modeling of cells with multiple stages requires
references to gate level inputs and outputs inside the cell. In this document these inputs and
outputs are referred to as internal pins.
A simple cell such as a nand gate consists of a single stage and has no internal pins.
A buffer composed of two inverters is an example of a cell with multiple CCCs. The first
inverter is the first stage and the second inverter is the second or last stage. The output of the
first inverter and the input of the second inverter are considered internal pins.
Figure 1 below illustrates a single-stage cell and a two-stage cell.
Figure 1 Examples of single-stage and two-stage cells
VDD
Internal Pin
VDD
First stage
Last stage
O
A
B
O
A
VSS
2-Input Nand Gate
Single-Stage Gate
VSS
Buffer Gate
Multi-Stage Gate
In cells composed of more than two CCCs, only the first and last stages are modeled.
ECSM noise extensions introduced in this document model slew propagation, arc
current, tolerance for Vdd and Vss, output pin capacitance and holding resistance.
Several of the models rely upon the concept of CCCs.
ECSM noise extensions do not support modeling of glitch noise propagation through logic
gates. Noise propagation can be supported by SPICE models on the side.
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
7
2 ECSM Noise Extensions
2.1 Library-Level Attribute
2.1.1 Version
A simple attribute enables identification of the revision of the ECSM specification
to which the noise constructs in the enclosing library are compliant.
For example, 1.0 is the current ECSM noise version identifier. Each new release of the
ECSM noise specification shall increment at least the minor integer. At some arbitrary
point, typically based on the accumulated magnitude of changes, the major integer will
be incremented and the minor integer reset to zero.
2.1.1.1 Syntax
The Liberty extension syntax to create the version attribute is as follows:
define( ecsm_noise_version, library, float );
A version statement instance is included using the following form
ecsm_noise_version : int.int ;
The first int specifies the major version identifier, and the second, the minor
revision identifier.
2.1.1.2 Constraints
• The ecsm_noise_version must be defined in a library group.
• The value of this attribute is a floating point number that shall match the version
identifier of a published ECSM noise specification.
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
8
• ECSM noise syntax and semantics are guaranteed to be backward compatible
across all version identifier changes. Hence, a tool should be able to process any
ECSM noise constructs with a version identifier earlier than the one(s) the tool
was written to process.
• ECSM noise semantics are not guaranteed to be forward compatible across any
major or minor version identifier changes. A tool should not attempt to process
ECSM with a version identifier greater than those for which the tool was written.
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
9
2.1.1.3 Example Use
library (lib1) {
…
define( ecsm_noise_version, library, float
); ecsm_noise_version : 1.0 ;
…
}
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
10
2.2 ViVo Current Waveform
2.2.1 Overview
Each cell in the library needs to be pre-characterized for a set of DC current models
that capture the effective I-V characteristics for the first and last stage CCCs of the
cell.
Each current model is represented by a ViVo (voltage in, voltage out) waveform
on an input or output pin of a cell.
Figure 1: Vivo Model
Capturing the full behavior of these CCCs also requires an effective capacitance
between input and output pins (Miller effect), and an effective ground capacitance on
the output pin. These capacitances are found through a series of transient
simulations.
An efficient 2-D lookup table is used to store values of I(Vi, Vo). Since the current
table from ViVo is a function of instantaneous voltages on input and output, and not
dependent on transition history, it is generated through a series of DC simulations
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
11
using SPICE.
In single stage cells, the waveforms model the arc current between the primary
input and the primary output and are presented only on the output pin. In multiple
stage cells the waveforms are defined for both input pins and output pins with an
internal pin identified as the opposite end of each arc.
2.2.2 Characterization for Vivo current model
1. Voltage sources Vi and Vo are connected to the input pin and the
output pin of the stage
2. Side inputs are held such that to produce the transition in
minimum (min) or maximum (max) time
3. Or as AAE supports multiple arcs with when conditions, this can be
extended to do all side-input sensitizations,
4. The voltage sources are DC swept and current through Vo is
measured to produce the I(Vi, Vo) data
5. make_cdb characterizes at 10 voltages in steps of VDD/9 (0, vdd/9,
2vdd/9……, vdd). This choice of step has come from experiments
which show that closer steps do not improve accuracy significantly
6. Referring to equation in Fig1, second and third term are zero, so the
measured current becomes the first term.
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
12
Figure 2 : vivo DC current table plot
7. For measuring load_cap, a transient simulation is done with a 10%(R) or
90%(F) vdd bias at the input, the output is swept with a fast slew nominal slew
dependent on the process node (around 50ps/100ps)
8. Current through Vo is measured. Referring to equation in Fig1, Since
dVi/dt=0, Imeas – I(Vi,Vo) is (Cg+Cm).dVo/dt
9. Cpin = Cg+Cm is found by integrating this current in the middle 1/3 part of
the switching wave. This becomes the ecsm_loadcap.
10. Measurement of Miller Cap
11. Cm is found by putting a fast (at the technology slew, maybe around
50ps/100ps) switching wave, with swing on either side of the bias, at input
12. Output still has the same voltage source as for load_cap
13. At the middle (roughly middle 20%, 30% of the swing) of the transition on
the output, measure the current through the Vo
14. Component of current coming through Cm is found by subtracting the current
at the middle during the simulation for Cpin (in #6 above).
15. Other terms of the equation in Fig 1 cancel out and Cm =
(miller_mid_current - mid_cur) * ramp_duration/ ramp_volt_swing
Pull-up pulldown tie cells will not have vivo models. Characterization Tool can do the
same as done in CCS-n for these cases. Same applies for tri-state of nonswitching
vector. Simultaneous input switching (enable of passgate): should be handled by
tying them together and apply same stimulus at the common point. If single input
switching does not provide valid sensitization, multi-input switching is essential. For
others, characterization tool should do what is done for CCS-noise. Multi-rail cells
should be handled by applying relevant voltage s on various rails.
For accurate characterization, All RC parasitics needs to be included for simulation,
including those on supply networks. RC-reduction is allowed. E.g. if it is the case,
high resistance on power nets inside the cell needs to be modeled (even if reduced).
Pincaps of the second stage should be added to total output parasitics and included
into output capacitance of the model. Probe point selection (whether its closer end or
the farther) will not matter much, assuming output load is not very resistive.
2.2.2.1 ViVo Current Waveforms on Input Pins
In the absence of noise, the delay of a stage is measured from the switching
threshold at the input pin of the driving cell to the input pin of the receiving cell. In the
presence of noise, non-monotonic waveforms are often seen at the input pin of the
receiving cell. It is difficult to make robust delay measurements on such waveforms.
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
13
The switching waveform may cross the switching threshold multiple times, and small
changes in the circuit may result in delay measurements that are much shorter or
longer than expected.
The measurement can be made much more robust by measuring the change of
delay at the output of the first stage of the receiving cell. ViVo waveforms supplied
on input pins facilitate this measurement.
2.2.2.2 ViVo Current Waveforms on Output Pins
ViVo current waveforms on output pins model victim driver behavior for glitch and
noise- on-delay calculations.
2.2.3 ecsm_vivo_table_template group
This template provides the default table for the ecsm_vivo_current_waveform
group. The name of the template is the name to which the
ecsm_vivo_current_waveform group will refer when it is instantiated. The
template is defined either at the library or the cell level. If it is defined in both places,
the cell-level definition takes precedence.
Many pins may use the same ViVo current waveform. This template allows a single
waveform definition to be shared among many pins by storing the table values in
addition to the indexes.
The ecsm_vivo_table_template group contains the following attributes.
variable
_1
variable
_2
index_1
index_2
values
2.2.3.1 variable_1 and variable_2
The variable_1 and variable_2 attributes describe the indexes for the
waveform table. The only valid value for variable_1 is input_voltage and the
only valid value for variable_2 is output_voltage.
2.2.3.2 index_1 and index_2
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
14
The index_1 and index_2 attributes are strings that define a numeric list
representing input and output voltages respectively. The format of each string is a
series of floating-point numbers separated by commas. These attributes are required
in the ecsm_vivo_table_template group and can be overridden in the
ecsm_vivo_current_waveform group.
2.2.3.3 values
The optional values attribute is a string representing the current values of the
waveform. The format of the string is a series of floating-point numbers separated by
commas.
2.2.4 ecsm_vivo_current_waveform group
The ecsm_vivo_current_waveform group uses the
ecsm_vivo_table_template group to save data entry since the indexes and
current values could be the same for many cells and pins.
The name argument of ecsm_vivo_current_waveform is the name of the
ecsm_vivo_table_template to which it refers.
The ecsm_vivo_current_waveform group contains the following attributes.
index_1
index_2
values
ecsm_loadcap
ecsm_millerc
ap
ecsm_arctype
when
timing_sense
related_pin
ecsm_stimuli
2.2.4.1 index_1 and index_2
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
15
The index_1 and index_2 attributes are strings that define a numeric list of input
and output voltages respectively. These attributes are optional and override the
indexes in the ecsm_vivo_table_template group.
2.2.4.2 values
The optional values attribute is a string that lists the floating-point current values of
the waveform. If present, this overrides the values in the
ecsm_vivo_table_template group.
2.2.4.3 ecsm_loadcap
The ecsm_loadcap attribute is a floating-point number specifying the ground
capacitance of the output pin of the arc.
2.2.4.4 ecsm_millercap
The ecsm_millercap attribute is a floating-point number specifying the effective
capacitance between the pin and the related_pin.
2.2.4.5 ecsm_arctype
The optional ecsm_arctype attribute is a string with four valid values: max_rise,
max_fall, min_rise, and min_fall. max_rise and max_fall represent the
ViVo arcs corresponding to the slow transition of the signal on the output, while
min_rise and min_fall are for the fast transition.
max_rise and max_fall are used to compute slowdown of the signal, while
min_rise and min_fall are used to compute speedup of the signal, for cross
talk analysis.
For better accuracy, tools supports multiple arcs with when conditions. So instead of
ecsm_arctype, when attribute will be used to indicate the various arcs,
2.2.4.6 when
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
16
• The optional when attribute is defined in standard Liberty™ and is interpreted the
same way. For best accuracy library must model this for all conditionals (
occurring in timing & hidden power) values. Unconditional group is not needed
as conditions would be complete.
2.2.4.7 timing_sense
The timing_sense attribute is defined in standard Liberty™ and is interpreted
the same way.
2.2.4.8 related_pin
The related_pin attribute is a string naming the pin that is the other end of the arc
described by this waveform. In single stage cells, the name of the related_pin is a
primary input. In multiple stage cells, when the ViVo current waveform is present on
an input pin, the related_pin is an output of the first stage CCC; otherwise when
the ViVo current waveform is present on an output pin, the related_pin is an input
to the last stage CCC.
This attribute is defined in standard Liberty™, but is interpreted differently
since related_pin is an internal pin rather than a primary input.
2.2.4.9 ecsm_stimuli
The ecsm_stimuli attribute is a string, and is reserved for future use. It is intended
to represent the side input switching condition used for characterization.
2.2.5 Syntax
The groups and attributes for modeling ViVo current waveforms are declared as follows:
define_group ( ecsm_vivo_table_template, library );
define_group ( ecsm_vivo_table_template, cell );
define ( variable_1, ecsm_vivo_table_template, string );
define ( variable_2, ecsm_vivo_table_template, string );
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
17
define
(
index_1,
ecsm_vivo_table_template
string
);
define
(
index_2,
ecsm_vivo_table_template,
string
);
define ( values, ecsm_vivo_table_template, string);
define_group ( ecsm_vivo_current_waveform, pin );
define ( ecsm_loadcap,
ecsm_vivo_current_waveform, float );
define ( ecsm_millercap, ecsm_vivo_current_waveform, float );
define ( ecsm_arctype,
ecsm_vivo_current_waveform, string );
define ( when,
ecsm_vivo_current_waveform, string );
define ( timing_sense,
define ( related_pin,
ecsm_vivo_current_waveform, string );
define ( ecsm_stimuli,
ecsm_vivo_current_waveform, string );/*future*/
ecsm_vivo_current_waveform, string );
define
(
index_1,
ecsm_vivo_current_waveform,
string
);
define
(
index_2,
ecsm_vivo_current_waveform,
string
);
define ( values, ecsm_vivo_current_waveform, string );
The ecsm_vivo_table_template is instantiated at the library or cell level as
follows:
ecsm_vivo_table_template (ecsm_vivo_table_templateName) {
variable_1 : input_voltage;
variable_2 : output_voltage;
index_1
: "float0, …, floati";
index_2
: "float0, …, floatj";
values
: "float0, …, floati*j";
}
ecsm_vivo_current_waveform is instantiated at the pin level as follows:
ecsm_vivo_current_waveform (ecsm_vivo_table_templateName) {
ecsm_loadcap
: float
;
ecsm_millercap : float
;
ecsm_arctype
timing_sense
related_pin
ecsm_stimuli
: string;
: string ;
: “pinName” ;
: string
;
index_1
: "float0, …, floati";
Cadence ECSM Noise Specification
/* optional */
Copyright ©2015. All rights reserved.
18
/* optional */
index_2
: "float0, …, floatj";
values
: "float0, …, floati*j"; /* optional */
}
2.2.6 Constraints
•
Voltage, current and capacitance units are assumed to be those in effect at
that point in the library.
•
When both when and ecsm_arctype are absent, there is a single
vivo_current_waveform table for a pair of pins, and for all side
input conditions/states, the I-V characteristics are same for that pair of
pins.
•
When when is absent, ecsm_arctype signifies the slow or fast transitions of
the signal on the output. The ViVo current waveform tables corresponding to
min_rise/min_fall/max_rise/max_fall are derived from all possible
side input conditions/states.
•
When ecsm_arctype
is absent,
the ViVo
current waveform tables
correspond to the side input condition/state specified through when.
•
•
When both ecsm_arctype and when are present, the slow or fast transitions of
the signal on the output correspond to the side input condition/state specified
through when.
For best accuracy library must model this for all conditionals ( occurring in timing
& hidden power) values. Unconditional group is not needed as conditions would
be complete.
2.2.7 Example usage
ecsm_vivo_table_template(VIVO_TEMPLATE) {
variable_1 : input_voltage;
variable_2 : output_voltage;
index_1 : "0.0, 0.13 ,0.27 ,0.40 ,0.53 ,0.67 ,0.80 ,0.93 ,1.07 ,1.20";
index_2 : "0.0, 0.13 ,0.27 ,0.40 ,0.53 ,0.67 ,0.80 ,0.93 ,1.07 ,1.20";
values : \
"2.815e-05, 2.733e-05, 2.658e-05, 2.569e-05, 2.454e-05, 2.256e-05, 1.922e-05, 1.435e-05, 7.894e-06, -2.249e-07, \
2.132e-05, 2.066e-05, 2.012e-05, 1.949e-05, 1.874e-05, 1.765e-05, 1.55e-05, 1.187e-05, 6.637e-06, -2.428e-07, \ 1.51e05, 1.45e-05, 1.41e-05, 1.367e-05, 1.317e-05, 1.256e-05, 1.147e-05, 9.121e-06, 5.176e-06, -4.049e-07, \ 9.638e-06,
8.532e-06, 8.174e-06, 7.828e-06, 7.463e-06, 7.058e-06, 6.551e-06, 5.394e-06, 2.799e-06, -1.436e-06, \ 5.141e-06,
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
19
1.984e-06, 1.264e-06, 8.276e-07, 4.478e-07, 8.537e-08, -2.833e-07, -7.469e-07, -2.045e-06, -4.877e-06, \ 1.977e-06, 4.312e-06, -6.424e-06, -7.226e-06, -7.766e-06, -8.198e-06, -8.576e-06, -8.926e-06, -9.392e-06, -1.084e-05, \ 4.469e-07,
-8.692e-06, -1.313e-05, -1.483e-05, -1.571e-05, -1.631e-05, -1.679e-05, -1.718e-05, -1.753e-05, -1.811e-05, \ 5.947e-08,
-1.134e-05, -1.811e-05, -2.14e-05, -2.291e-05, -2.381e-05, -2.446e-05, -2.496e-05, -2.538e-05, -2.578e-05, \ 5.756e-09, 1.314e-05, -2.186e-05, -2.698e-05, -2.95e-05, -3.086e-05, -3.174e-05, -3.239e-05, -3.29e-05, -3.333e-05, \ 7.783e-10, 1.452e-05, -2.475e-05, -3.148e-05, -3.534e-05, -3.735e-05, -3.854e-05, -3.935e-05, -3.996e-05, -4.046e-05”;
}
…
pin (Y) {
…
ecsm_vivo_current_waveform(VIVO_TEMPLATE) {
related_pin : "nmin";
ecsm_loadcap : 1.83049e-3;
ecsm_millercap : 2.09209e-4;
timing_sense : negative_unate;
ecsm_arctype : min_rise;
}
}
/* pin */
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
20
2.3 Slew Propagation
Figure 3 : Slew propagation for multi-stage cell
Vivo models as described earlier are for one CCC. For single stage cells, they suffice to
find the output response given the response at input. But for multi-stage cells, the
response at the input of the vivo for last stage (node i) is not known. For this, 1D slew
propagation tables are characterized to find the slew at i given the response (slew) at
in1, in2. So, slew propagation information is used in conjunction with vivo models of
output pin to propagate responses through the design.
1. Objective is to find out slew at input of the last CCC
2. Needed only for cells with more than one CCC
3. Input of last CCC will usually be an internal node and so slew is usually
independent of load at out. Characterized data is 1-D table as a function on input
slew
4. The range of slew will be same as used for transition tables for timing .lib. It
should cover complete range of slews
5. In case the slew at input of last stage is depending upon the load eg. Where the
node is tapped to form an output, 2D data can be characterized with load being
the second axis.
Use of slew propagation
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
21
•
•
•
BFS traverse of whole design
One-stage cells:
– Driver is modeled using Vivo model
Multi-stage cells
– Last CCC is modeled using Vivo model
– Slew propagation table till last CCC
The ecsm_internal_transition and ecsm_itt_template groups model slew
propagation from an input pin to an internal pin. These groups are not required for cells
with only one stage. The internal pin is typically an input pin of the last stage in the cell.
The pin-level ecsm_internal_transition group stores slew values in a table and
uses a library-level ecsm_itt_template to store default indexes. There are separate
ecsm_internal_transition groups for rising and falling transitions.
These groups are present only on input pins.
2.3.1 ecsm_itt_template group
This library-level group functions exactly the same as a Liberty™
lu_table_template but is required for ECSM noise extensions to ensure correct
parsing. The letters “itt” stand for “internal transition table”.
The group contains the following
attributes: variable_1
variable_2
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
22
index_1
index_2
2.3.1.1 variable_1 and variable_2
The valid values for variable_1 and variable_2 are input_net_transition
and related_out_total_output_net_capacitance respectively. variable_2
is present only when there is a related_output_pin defined in the
ecsm_internal_transition groups that reference this lookup table.
2.3.1.2 index_1 and index_2
The index_1 and optional index_2 attributes are strings that list input transition times
for the input pin and output net capacitance for a related_output_pin . The format
of each string is a series of floating-point numbers separated by commas.
The index_2 attribute is used only when there is a related_output_pin present in
the ecsm_internal_transition groups that reference this lookup table.
2.3.1.3 Syntax
The ecsm_itt_template group and its attributes are declared as follows:
define_group ( ecsm_itt_template, library );
define ( variable_1, ecsm_itt_template, string
define ( variable_2, ecsm_itt_template, string
define ( index_1, ecsm_itt_template, string
define ( index_2, ecsm_itt_template, string );
);
);
);
The ecsm_itt_template is instantiated at the library level as follows:
ecsm_itt_template ( templateName ) {
variable_1 : input_net_transition ;
variable_2 : related_out_total_output_net_capacitance ; /* optional */
index_1 : "float0, …, floati" ;
index_2 : "float0, …, floatj" ;
/* optional */
}
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
23
2.3.2 ecsm_internal_transition group
The name argument of the ecsm_internal_transition group refers to the
ecsm_itt_template that holds the default values for index_1 and
optional index_2.
A pin has separate ecsm_internal_transition groups for the rise and fall
transitions.
The ecsm_internal_transition group contains the following attributes:
ecsm_transition_type
related_pin
related_output_pin
timing_sense
when
index_1
index_2
values
2.3.2.1 ecsm_transition_type
The ecsm_transition_type attribute is a string indicating whether the slew values
represent a rising or falling transition. Its valid values are rise and fall.
2.3.2.2 related_pin and related_output_pin
The related_pin attribute is a string naming an internal pin within the cell that
receives a signal propagated from the primary input pin.
If the related_pin drives a primary output, a secondary load may be required; in that
instance the related_output_pin attribute is assigned a string naming the
associated primary output pin. The related_output_pin allows for the internal
transition to be specified as a function of the capacitance at the secondary load.
These attributes are defined in standard Liberty™, but related_pin is
interpreted differently since it is an internal pin rather than a primary input.
2.3.2.3 timing_sense
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
24
The timing_sense attribute is defined in Liberty™. Its possible values are
positive_unate, negative_unate and non_unate. This attribute is optional,
and its default specification would correspond to non_unate. For now we deal with
inverting arcs only. Attributes is reserved for non-inverting CCC which we we model at
later point of time.
2.3.2.4 when
The optional when attribute is defined in standard Liberty™ and is interpreted the
same way.
2.3.2.5 index_1 and index_2
The index_1 attribute represents input transition times, and index_2 represents output
net capacitance for a related_output_pin. When present, these override the defaults in
the associated ecsm_itt_template. Usually 1D is sufficient with index_1 representing
input transition times since there is no load dependence of slew on internal pin. This is
true unless the pin is also a tapped output in which case 2D data with load dependence
using both indices is needed.
2.3.2.6 values
The values attribute is a string representing the slew values propagated to the internal
related_pin. The format of the string is a series of floating-point numbers separated
by commas.
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
25
2.3.2.7 Syntax
The ecsm_internal_transition group and its attributes are declared as follows:
define_group ( ecsm_internal_transition, pin );
define ( ecsm_transition_type, ecsm_internal_transition, string );
define ( related_pin, ecsm_internal_transition, string );
define ( related_output_pin, ecsm_internal_transition, string );
define (
timing_sense,
define (
when, ecsm_internal_transition,
ecsm_internal_transition,
string
string
);
);
define ( index_1,
define ( index_2,
define ( values,
ecsm_internal_transition, string );
ecsm_internal_transition, string );
ecsm_internal_transition, string );
The ecsm_internal_transition group is instantiated within a pin group as follows:
ecsm_internal_transition ( templateName ) {
ecsm_transition_type : transitionType;
related_pin
:
“pinName”;
related_output_pin : “pinName”;
timing_sense
: string ;
/* optional */
when
Cadence ECSM Noise Specification
: string ;
/* optional */
Copyright ©2015. All rights reserved.
26
index_1 : "float0, …, floati" ; /* optional */
index_2 : "float0, …, floatj" ; /* optional */
values : "float0, …, floati*j" ;
}
2.3.3 Constraints
• These groups are required only for cells with multiple stages. Single stage cells do
not require internal transition information.
• Timing units are assumed to be those in effect at that point in the library.
• Slew measurement points are defined in the library section by the Liberty™ constructs
slew_lower_threshold_pct_rise, slew_lower_threshold_pct_fall,
slew_upper_threshold_pct_fall, and slew_upper_threshold_pct_rise.
• These groups are present only on input pins.
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
27
2.3.4 Example usage
ecsm_itt_template(INTERNAL_TIMING) {
variable_1 : input_net_transition;
variable_2 : related_out_total_output_net_capacitance; index_1 : "0.05, 0.1";
index_2 : "0.1, 0.4";
}
...
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
28
cell (SAMPLE) {
pin (A) {
ecsm_internal_transition (INTERNAL_TIMING) {
ecsm_transition_type : rise;
related_pin : "intPin"; related_output_pin : "Y";
values : "0.1, 0.2, 0.3, 0.4";
}
ecsm_internal_transition (INTERNAL_TIMING) {
ecsm_transition_type : fall;
related_pin : "intPin"; related_output_pin :
"Y"; index_2 : "0.2, 0.3";
values : "0.15, 0.22, 0.37, 0.42";
}
} /* pin A */
pin (B) {
ecsm_internal_transition (INTERNAL_TIMING) {
ecsm_transition_type : rise;
related_pin : "intPin"; related_output_pin :
"Y"; when : "A";
values : "0.11, 0.21, 0.31, 0.41";
}
ecsm_internal_transition (INTERNAL_TIMING) {
ecsm_transition_type : fall;
related_pin : "intPin"; related_output_pin :
"Y"; when : "A";
index_2 : "0.22, 0.32";
values : "0.153, 0.223, 0.373, 0.423";
}
ecsm_internal_transition (INTERNAL_TIMING) {
ecsm_transition_type : rise;
related_pin : "intPin"; related_output_pin :
"Y"; when : "!A";
values : "0.12, 0.22, 0.32, 0.42";
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
29
}
ecsm_internal_transition (INTERNAL_TIMING) {
ecsm_transition_type : fall;
related_pin : "intPin";
related_output_pin : "Y";
when : "!A";
index_2 : "0.23, 0.33";
values : "0.154, 0.224, 0.374, 0.424";
}
} /* pin B */
} /* cell */
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
30
2.4 Additional Noise Analysis Constructs
2.4.1 Pin group attributes
The following attributes are added at the pin level for ECSM noise modeling. Each is
independent of the groups described earlier in this document.
ecsm_vdd_level
ecsm_vss_level
ecsm_vhtolerance
ecsm_vltolerance
ecsm_noise_cap
ecsm_vddres
ecsm_gndres
2.4.1.1 ecsm_vdd_level and ecsm_gnd_level
The ecsm_vdd_level and ecsm_gnd_level attributes are strings that identify the
appropriate power_rail as defined by standard Liberty™ power supply modeling.
They are used to specify the signal levels of the power and ground rails. These
constructs enable performing noise analysis when there are voltage fluctuations on
both power and ground rails.
The value of ecsm_vdd_level is the same as the Liberty™ input_signal_level
and output_signal_level attributes. ecsm_gnd_level is used the same way,
except that it identifies the ground rail instead of the power rail.
2.4.1.2 ecsm_vhtolerance and ecsm_vltolerance
The tolerance attributes are absolute floating-point numbers that specify the variation in
voltage that can be considered negligible when the signal is either high or low. Voltage
values below ecsm_vdd_level-ecsm_vhtolerance when the signal is high, and
values above ecsm_gnd_level+ecsm_vltolerance when the signal is low are
considered noise. These attributes apply to input and bidirectional pins only.
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
31
Characterization for tolerance can be done in one of the many ways
–
DC simulation to see when the output starts switching (like a DC transfer curve)
–
Real simulation with wide noise pulse to check for slightest of noise propagation
–
Use the vivo simulation to see when the current starts /stops flowing
2.4.1.3 ecsm_noise_cap
The ecsm_noise_cap attribute is a floating-point number representing the capacitance
on an output pin. Although characterized the same way as the Liberty™ capacitance
attribute, noise modeling should use ecsm_noise_cap because if the capacitance
attribute is missing, inserting it for the purposes of noise analysis can inadvertently
cause the capacitance to be doubled during timing and power analysis.
This is to cater to SI engines need of modeling driver as pin cap for say Ctotal
computation. Historically .lib models cap only on input, whereas output pin-cap is zero.
Ecsm_noise_cap is non-zero even for output pins. Capacitance values for input pins are
available from the timing library.
2.4.1.4 ecsm_vddres and ecsm_gndres
ecsm_vddres and ecsm_gndres are floating-point numbers representing the
resistance of the highest resistive path to the supply and ground through the “on”
transistors. These values are obtained by switching on the transistors that give the
highest resistance, and are used to model a driver when it is held at Vdd or Gnd.
These attributes apply only to output and bidirectional pins.
Characterization for holding resistance can be done alongwith vivo tables.
•
Using V=IR, we can compute R assuming a small bias (25-30%)
•
vddres = V/I at Vi=0, Vo = 75 or 70% of vdd
•
gndres = V/I at Vi = vdd, Vo = 25% or 30% vdd
2.4.2 Syntax
Pin-level attributes for modeling noise are declared as follows:
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
32
define ( ecsm_vdd_level, pin, string
); define ( ecsm_gnd_level, pin, string
); define ( ecsm_vhtolerance, pin, float
); define ( ecsm_vltolerance, pin, float
pin,
); define ( ecsm_noise_cap,
float ); define ( ecsm_vddres, pin,
float ); define ( ecsm_gndres, pin,
float);
Pin-level attributes for modeling noise are instantiated at the pin level as follows:
ecsm_vdd_level
: connectionName
; ecsm_gnd_level : connectionName
; ecsm_vhtolerance : float ;
ecsm_vltolerance : float ;
ecsm_noise_cap
: float ;
ecsm_vddres
: float ;
ecsm_gndres
: float ;
2.4.3 Constraints
• Voltage, current and capacitance units are assumed to be those in effect at
that point in the library.
• The value of ecsm_vdd_level must be the same as the corresponding
input_signal_level or output_signal_level attribute used for timing
and power analysis for the same pin.
• The value of ecsm_gnd_level must be consistent with similar Liberty™ constructs.
2.4.4 Example usage
pin (A) {
direction
: input ;
ecsm_vdd_level : VDD ; ecsm_gnd_level : VSS ; ecsm_vhtolerance :
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
33
0.12 ; ecsm_vltolerance : 0.12 ;
}
pin (Y) {
direction
: output;
ecsm_vdd_level
ecsm_gnd_level
ecsm_noise_cap
ecsm_vddres
: VDD ;
: VSS ;
: 1.0 ;
: 500.0 ;
ecsm_gndres
: 500.0;
}
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
34
3 Example
library(typ) {
voltage_unit : "1V";
current_unit : "1mA";
capacitive_load_unit (1,pf);
time_unit : "1ns";
input_threshold_pct_rise
:
50;
input_threshold_pct_fall
:
50;
output_threshold_pct_rise
:
50;
output_threshold_pct_fall : 50;
slew_lower_threshold_pct_rise
:
20;
slew_lower_threshold_pct_fall
:
20;
slew_upper_threshold_pct_rise
:
80;
slew_upper_threshold_pct_fall : 80;
/* all new Liberty™ group extensions are defined here */
define( ecsm_noise_version, library, float );
ecsm_noise_version : 1.0 ;
define_group ( ecsm_vivo_current_waveform, pin );
define_group ( ecsm_internal_transition, pin );
define_group ( ecsm_vivo_table_template, library );
define_group ( ecsm_vivo_table_template, cell );
define_group ( ecsm_itt_template, library );
/* all new Liberty™ simple/complex attributes are defined here */
define
(
index_1,
ecsm_itt_template,
string
);
define ( index_2, ecsm_itt_template, string );
define ( variable_1, ecsm_itt_template, string );
define ( variable_2, ecsm_itt_template, string );
define ( ecsm_transition_type, ecsm_internal_transition, string );
Cadence ECSM Noise Specification
reserved.
Copyright ©2015. All rights
35
define ( timing_sense,
ecsm_internal_transition, string );
define ( related_pin,
ecsm_internal_transition, string );
define
ecsm_internal_transition,
( related_output_pin,
define ( when,
string );
ecsm_internal_transition, string );
define ( index_1, ecsm_internal_transition, string );
define ( index_2, ecsm_internal_transition, string );
define ( values, ecsm_internal_transition, string );
define ( ecsm_vdd_level, pin, string );
define ( ecsm_gnd_level, pin, string );
Cadence ECSM Noise Specification
reserved.
Copyright ©2015. All rights
36
define ( ecsm_vhtolerance, pin, float );
define ( ecsm_vltolerance, pin, float );
define ( ecsm_noise_cap, pin, float );
define ( ecsm_vddres, pin, float );
define ( ecsm_gndres, pin, float );
define ( ecsm_loadcap, ecsm_vivo_current_waveform, float );
define ( ecsm_millercap, ecsm_vivo_current_waveform, float );
define ( ecsm_arctype, ecsm_vivo_current_waveform, string );
define ( timing_sense, ecsm_vivo_current_waveform, string );
define ( ecsm_stimuli, ecsm_vivo_current_waveform, string );
define ( when,
ecsm_vivo_current_waveform, string );
define ( related_pin,
ecsm_vivo_current_waveform, string );
define ( variable_1, ecsm_vivo_table_template, string );
define ( variable_2, ecsm_vivo_table_template, string );
define ( index_1, ecsm_vivo_table_template, string );
define ( index_2, ecsm_vivo_table_template, string );
define ( values, ecsm_vivo_table_template, string);
define ( index_1, ecsm_vivo_current_waveform, string );
define ( index_2, ecsm_vivo_current_waveform, string );
define ( values, ecsm_vivo_current_waveform, string );
/* standard Liberty™ power supply modeling
*/
power_supply() {
default_power_rail : VDD_RAIL1;
power_rail ( VDD_RAIL1, 2.0 );
power_rail ( VDD_RAIL2, 1.2 );
power_rail ( VSS_RAIL, 0.3 );
}
/* new Liberty™ template used for ecsm_internal_transition
modeling */
ecsm_itt_template(INTERNAL_TIMING) {
variable_1 : input_net_transition;
index_1 : "0.05, 0.1, 0.2, 0.3, 0.5";
}
/* new Liberty™ template used for ecsm_vivo_current_waveform modeling */
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
37
ecsm_vivo_table_template(VIVO_TEMPLATE)
{ variable_1 : input_voltage;
variable_2 : output_voltage;
index_1
:
"0.0,
0.13
,0.27
,0.40
,0.53
,0.67
,0.80
,0.93
,1.07
,1.20"; index_2 : "0.0, 0.13 ,0.27 ,0.40 ,0.53 ,0.67 ,0.80 ,0.93
,1.07 ,1.20"; values : \
"2.815e-02, 2.733e-02, 2.658e-02, 2.569e-02, 2.454e-02, 2.256e-02, 1.922e-02, 1.435e-02, 7.894e-03, -2.249e-04, \
2.132e-02, 2.066e-02, 2.012e-02, 1.949e-02, 1.874e-02, 1.765e-02, 1.55e-02, 1.187e-02, 6.637e-03, -2.428e-04, \
1.51e-02, 1.45e-02, 1.41e-02, 1.367e-02, 1.317e-02, 1.256e-02, 1.147e-02, 9.121e-03, 5.176e-03, -4.049e-04, \
9.638e-03, 8.532e-03, 8.174e-03, 7.828e-03, 7.463e-03, 7.058e-03, 6.551e-03, 5.394e-03, 2.799e-03, -1.436e-03, \
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
38
5.141e-03, 1.984e-03, 1.264e-03, 8.276e-04, 4.478e-04, 8.537e-05, -2.833e-04, -7.469e-04, -2.045e-03, -4.877e-03, \
1.977e-03, -4.312e-03, -6.424e-03, -7.226e-03, -7.766e-03, -8.198e-03, -8.576e-03, -8.926e-03, -9.392e-03, -1.084e-02, \
4.469e-04, -8.692e-03, -1.313e-02, -1.483e-02, -1.571e-02, -1.631e-02, -1.679e-02, -1.718e-02, -1.753e-02, -1.811e-02, \
5.947e-05, -1.134e-02, -1.811e-02, -2.14e-02, -2.291e-02, -2.381e-02, -2.446e-02, -2.496e-02, -2.538e-02, -2.578e-02, \
5.756e-06, -1.314e-02, -2.186e-02, -2.698e-02, -2.95e-02, -3.086e-02, -3.174e-02, -3.239e-02, -3.29e-02, -3.333e-02, \
7.783e-7, -1.452e-02, -2.475e-02, -3.148e-02, -3.534e-02, -3.735e-02, -3.854e-02, -3.935e-02, -3.996e-02, -4.046e-02";
}
cell (AND2X1) {
/* standard Liberty™ power supply modeling */
rail_connection ( VDD1, VDD_RAIL1 );
rail_connection ( VDD2, VDD_RAIL2 );
rail_connection ( VSS, VSS_RAIL );
pin(A) {
direction : input;
ecsm_vdd_level : VDD_RAIL2;
ecsm_gnd_level : VSS_RAIL;
ecsm_vhtolerance : 0.37;
ecsm_vltolerance : 0.37;
} /* pin A */
pin(B) {
direction : input;
ecsm_vdd_level : VDD_RAIL2;
ecsm_gnd_level : VSS_RAIL;
ecsm_vhtolerance : 0.37;
ecsm_vltolerance : 0.37;
ecsm_internal_transition (INTERNAL_TIMING)
{ ecsm_transition_type : rise;
related_pin : "nmin"; /* internal pin reference
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
39
*/ timing_sense : negative_unate;
when : "A";
values : "8.098e-2, 1.009e-1, 1.377e-1, 1.658e-1, 2.128e-1";
} /* end ecsm_internal_transition */
ecsm_internal_transition (INTERNAL_TIMING)
{ ecsm_transition_type : fall;
related_pin : "nmin"; /* internal pin reference
*/ timing_sense : negative_unate;
when : "A";
values : "8.098e-2, 1.009e-1, 1.377e-1, 1.658e-1, 2.128e-1";
} /* end ecsm_internal_transition */
ecsm_internal_transition (INTERNAL_TIMING)
{ ecsm_transition_type : rise;
related_pin : "nmin"; /* internal pin reference
*/ timing_sense : negative_unate;
when : "!A";
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
40
values : "8.198e-2, 1.109e-1, 1.477e-1, 1.758e-1, 2.228e-1";
} /* end ecsm_internal_transition */ ecsm_internal_transition
(INTERNAL_TIMING)
{ ecsm_transition_type : fall;
related_pin : "nmin"; /* internal pin reference
*/ timing_sense : negative_unate; when :
"!A";
values : "8.198e-2, 1.109e-1, 1.477e-1, 1.758e-1,
2.228e-1";
} /* end ecsm_internal_transition */
} /* pin B */ pin(Y) {
direction : output; ecsm_vdd_level :
VDD_RAIL2; ecsm_gnd_level : VSS_RAIL;
ecsm_noise_cap : 1.05e-3
; ecsm_vddres : 560.0e-3;
ecsm_gndres : 660.0e-3; ecsm_vivo_current_waveform(VIVO_TEMPLATE)
{ related_pin : "nmin";
ecsm_loadcap : 1.83049e-3; ecsm_millercap :
2.09209e-4; timing_sense : negative_unate;
ecsm_arctype : max_rise;
}
ecsm_vivo_current_waveform(VIVO_TEMPLATE)
{ related_pin : "nmin"; ecsm_loadcap :
1.83049e-3; ecsm_millercap : 2.09209e-4;
timing_sense : negative_unate; ecsm_arctype :
max_fall;
}
ecsm_vivo_current_waveform(VIVO_TEMPLATE)
{ related_pin : "nmin"; ecsm_loadcap :
1.83049e-3; ecsm_millercap : 2.09209e-4;
timing_sense : negative_unate; ecsm_arctype :
min_rise;
}
ecsm_vivo_current_waveform(VIVO_TEMPLATE)
{ related_pin : "nmin"; ecsm_loadcap :
1.83049e-3; ecsm_millercap : 2.09209e-4;
timing_sense : negative_unate; ecsm_arctype :
min_fall;
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
41
} /* ecsm_vivo_current_waveform */
} /* pin Y */
} /* cell AND2X1 */
} /* library typ */
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
42
4 Normative References
This specification is compatible with and must be conform to the semantics of the following
published works.
[1] Liberty User Guide, Vol. 1, Version 2005.10. Synopsys, Inc., 2005. Available
( http://www.synopsys.com/partners/tapin/lib_info.html)
[2] Liberty User Guide, Vol. 2, Version 2005.10. Synopsys, Inc., 2005.
Available (http://www.synopsys.com/partners/tapin/lib_info.html )
[3] liberty_parse v2.0. Synopsys, Inc., 2005
Available (http://www.synopsys.com/partners/tapin/lib_info.html )
[4] ECSM checker. Cadence Design Systems, Inc., 2005.
[5] Liberty Reference Manual, Version 2005.10. Synopsys,
Available (http://www.synopsys.com/partners/tapin/lib_info.html )
Inc.,
2005.
[6] Si2 Effective Current Source Model (ECSM) Timing and Power Specification,
Version 2.1. Si2, Inc., 2006. Available
( http://openeda.si2.org/project/showfiles.php?group_id=34)
Cadence ECSM Noise Specification
Copyright ©2015. All rights reserved.
Download