Statistical On Chip Variation (SOCV) Library Format
Statistical On Chip Variation (SOCV) Library Format
Library Format
Product: Tempus 19.1 and Above
Innovus 19.1 and Above
© 2020 Cadence Design Systems, Inc. All rights reserved worldwide. Cadence and the Cadence logo are
registered trademarks of Cadence Design Systems, Inc. All others are the property of their respective
holders.
Table of Contents
Purpose .........................................................................................................................................4
Audience .......................................................................................................................................4
Introduction ..................................................................................................................................5
Lexical Conventions and Data Types ...............................................................................................6
Units ..................................................................................................................................................... 6
Comments ............................................................................................................................................ 6
Whitespace........................................................................................................................................... 6
Wildcarding .......................................................................................................................................... 7
Overview of SOCV Library Usage ....................................................................................................8
Design-level spatial derate data ........................................................................................................... 8
Cell-level spatial derate data ................................................................................................................ 9
Interconnect variation modeling........................................................................................................ 10
File Structure ...............................................................................................................................11
Handling of table styles ...................................................................................................................... 11
Precedence Rules ............................................................................................................................... 11
Attributes ....................................................................................................................................14
object_type ........................................................................................................................................ 14
object_spec ........................................................................................................................................ 14
path_type ........................................................................................................................................... 15
delay_type .......................................................................................................................................... 15
early_distance, late_distance ............................................................................................................ 16
early_distance_derate, late_distance_derate .................................................................................. 17
voltage ................................................................................................................................................ 17
early_variation_multiplier, late_variation_multiplier....................................................................... 18
pin_direction ...................................................................................................................................... 19
Application Support............................................................................................................. 20
Importing SOCV side-file library data ............................................................................................20
Single-corner ...................................................................................................................................... 20
MMMC ............................................................................................................................................... 21
Configuring spatial derating in SOCV analysis................................................................................21
Providing chip size data ...................................................................................................................... 21
Methods for determining path bounding box size ............................................................................ 22
GBA bounding-box mode .................................................................................................................. 22
GBA chip-size mode........................................................................................................................... 25
PBA ..................................................................................................................................................... 26
Spatial derating of the variation component ..................................................................................... 27
Specifying interconnect variation ...................................................................................................... 27
Support .......................................................................................................................................29
Feedback...................................................................................................................................29
Purpose
This application note provides a description of the syntax of the Cadence SOCV side-
file library format. The side-file library is used to provide spatial derating and
interconnect variation data that is not natively provided in the user's main Liberty LVF
libraries.
Before the adoption of the Liberty LVF standard, the SOCV format was also used for
modeling cell-level process variation. This use-model has been deprecated in favor of
LVF. Syntax specific to the modeling of cell-level random process variation will not be
covered in this document.
Audience
This document is intended for users of Statistical On-Chip Variation (SOCV) analysis in
Cadence's Tempus and Innovus software applications.
Introduction
SOCV is a side-file library format which provides an ASCII representation of variation
modeling data for advanced semiconductor processes. The main consumers of the
SOCV file data are Cadence's Tempus signoff timing analyzer software and Innovus
design implementation software.
The SOCV library format provides the software tools with variation data that is not
available in the Liberty timing libraries in the current design kits. The SOCV library
references library cells defined in Liberty and overlays additional data on top of the
basic Liberty data.
Although the Liberty LVF syntax can support distance derating factors for modeling
spatial variation - it is currently very uncommon to see a fully integrated LVF that
contains this data. It is currently not standard practice to incorporate spatial derates in
most industry Liberty characterization flows. As a result, spatial derating data is often
provided by the library vendors in separate side-files so that the main Liberty libraries do
not have to be post-processed.
The SOCV format can represent that following types of variation data:
Spatial derating can be provided at the library cell level allowing specific distance
derate values per cell type
Liberty LVF is the industry standard for modeling of cell-level random process
variation. Use of the SOCV side-file for this purpose is not recommended.
Units
The SOCV side-file libraries units are tied to the definitions of their master Liberty
libraries. The definition of time units and capacitive units was important to the slew x
load indexed sigma tables. This data is now handled by LVF.
The units of distance are still important in the calculation of spatial derating factors. In
Innovus and Tempus, the distance indices are currently interpreted with respect to the
default distance unit of the application - which in both cases is microns. A global control
is available in both tools to change the definition to nanometers.
Comments
To include comments in the SOCV side-file library, you can use the '#' as the first token
of the comment line. Commented lines will be ignored by the parser.
Note: There is a known parsing issue if the '#' is the only character on the line.
Whitespace
The library syntax is not sensitive to whitespace between elements.
The following specifications are equivalent:
pin:Y
pin: Y
pin : Y
Wildcarding
object_type : library
object_spec : */BUFX?
path_type : clock
early_distance : 0,350,700,2250,4000
early_distance_derate: 1.0, 0.6451, 0.6258, 0.6113, 0.6001
late_distance : 0,350,700,2250,4000
late_distance_derate : 1.40, 1.41, 1.42, 1.43, 1.44
object_type: library
object_spec: [get_lib_cells */BUF*]
path_type: clock
early_distance: 0,350,700,2250,4000
early_distance_derate: 1.0, 0.6451, 0.6258, 0.6113, 0.6001
late_distance: 0,350,700,2250,4000
late_distance_derate: 1.40, 1.41, 1.42, 1.43, 1.44
object_type : design
[path_type]? : [clock data]*
[voltage]? : <voltage value>?
late_distance : <list of distance indices>
late_distance_derate : <list of derate values>
early_distance : <list of distance indices>
early_distance_derate: <list of derate values>
object_type: design
late_distance: 0,100,200,300,500,1000
late_distance_derate: 1.0,1.100,1.200,1.300,1.500,2.000
early_distance: 0,100,200,300,500,1000
early_distance_derate: 1.0,0.9,0.8,0.700,0.500,0.100
The design-level spatial derate file shown above would provide all nets and cell
instances in the design with the specified distance derating factors. If cell-level spatial
derates are also applied, the design-level derates will still apply to net derating.
The path_type and delay_type attributes can optionally be specified to provide more
specificity in the application of the derates. The voltage attribute can also be specified
to provide different derating to different voltage regions or to allow interpolation to an
operating point that is between characterization points.
object_type : library
object_spec : <library/lib_cell glob expression>
[path_type]? : [clock data]*
late_distance : <list of distance indices>
late_distance_derate : <list of derate values>
early_distance : <list of distance indices>
early_distance_derate: <list of derate values>
object_type: library
object_spec: slow/AND*
path_type: clock
late_distance: 0,350000,700000,2250000,4000000
late_distance_derate: 1.000, 1.050, 1.054, 1.068, 1.0799
early_distance: 0,350000,700000,2250000,4000000
early_distance_derate: 1.000, 0.950, 0.925, 0.911, 0.900
Spatial derating can also be specified at the library cell level. The object specification
attribute takes a wildcard expression for the library cell name which will be matched
against Liberty library cells. The Liberty library cell must exist in order for the spatial
derate to be overlaid.
Characterization voltages are inherited from the parent Liberty timing library.
Consult individual application user guides for information on the support of cell-level
spatial derate data.
object_type : design
[path_type]? : [clock data]*
[pin_direction]? : [rise fall]*
[voltage]? : <voltage value>?
delay_type : net
late_variation_multiplier? : <0.0 < value < 1.0 >?
early_variation_multiplier? : <0.0 < value < 1.0 >?
object_type : design
pin_direction : rise fall
delay_type : net
voltage : 1.620
path_type : data
early_variation_multiplier : 0.10
object_type : design
pin_direction : rise fall
delay_type : net
voltage : 1.620
path_type : data
late_variation_multiplier : 1.00
Liberty LVF does not currently provide a means of modeling interconnect variation for
SOCV-style analysis. The early and late variation multipliers can be used to prescribe
that a certain percentage of the calculated interconnect delay should be treated as a
statistical process variation quantity. This is intended to be treated similarly during
analysis as an LVF delay sigma value for a timing arc.
A delay_type of net should be used when describing tables for interconnect variation
modeling.
File Structure
can be delivered in the same file or be separated by function into different files.
The same library import mechanisms are used in Innovus and Tempus for all flavors of
SOCV library modeling.
Precedence Rules
Design-level vs. library-level specifications
If a cell-level specification provides partial data - perhaps only has tables for
paths of type clock - the design-level data can be used to fill in if it is available
Overlapping specifications
object_type: library
object_spec: slow/BUFX2
path_type: clock
early_distance: 0,350,700,2250,4000
early_distance_derate: 1.0, 0.6451, 0.6258, 0.6113, 0.6001
late_distance: 0,350,700,2250,4000
late_distance_derate: 1.40, 1.41, 1.42, 1.43, 1.44
object_type: library
object_spec: slow/BUFX2
early_distance: 0,350,700,2250,4000
early_distance_derate: 1.0, 0.7451, 0.7258, 0.7113, 0.7001
late_distance: 0,350,700,2250,4000
late_distance_derate: 1.30, 1.31, 1.32, 1.33, 1.34
In the above scenario, derating for clock paths will come from the first table, and
derating for data paths will be filled in from the second.
object_type: library
object_spec: slow/BUFX2
early_distance: 0,350,700,2250,4000
early_distance_derate: 1.0, 0.7451, 0.7258, 0.7113, 0.7001
late_distance: 0,350,700,2250,4000
late_distance_derate: 1.30, 1.31, 1.32, 1.33, 1.34
object_type: library
object_spec: slow/BUFX2
path_type: clock
early_distance: 0,350,700,2250,4000
early_distance_derate: 1.0, 0.6451, 0.6258, 0.6113, 0.6001
late_distance: 0,350,700,2250,4000
late_distance_derate: 1.40, 1.41, 1.42, 1.43, 1.44
the data for both clock and data paths will come from the first table only - since it is
equivalent to having a path_type specification of 'clock data'.
The enumeration of spatial distance derate factors that can be specified is shown
below:
Attributes
The following table provides the usage details the various attributes of the SOCV side-
file library for use in spatial derating and interconnect variation modeling. Constructs
which apply only to modeling of cell-level random variation have been omitted - LVF is
the preferred manner for describing this data.
object_type
SYNTAX
USAGE
Use the object_type attribute to define the current table section as either library or
design-level data. Spatial derate data can be provided at either library or cell levels.
Interconnect variation scaling factors must also be design-level. Cell-level random
variation sigma tables are always at the library level.
object_spec
SYNTAX
USAGE
You can provide a wildcard specification using glob style matching - for example:
object_spec: libs_*_1p5V_120T/*
path_type
SYNTAX
USAGE
Use the path_type attribute to specify that a particular data block is applicable to
only clock paths, data paths, or both types of paths. The path_type attribute is not
required. If it is not specified, the data will be applied to both clock and data paths.
path_type : clock
path_type : clock data
path_type : data
delay_type
SYNTAX
USAGE
Use the delay_type attribute to specify that a particular data block is applicable to
nets, library cells, or both. The delay_type attribute is not required. If it is not
specified for design tables, the data will be applied to both types of objects. Library
cell-level tables will always be delay_type cell.
delay_type : net
delay_type : net cell
delay_type : cell
early_distance,
late_distance
SYNTAX
USAGE
The default scale of the distance indices in Cadence Innovus and Tempus
applications is in microns (um), but can be configured to nanometers. This is
described in a previous section.
early_distance : 0,1000,5000,10000,20000
early_distance_derate: 0.97,0.965,0.945,0.92,0.90
late_distance : 0,1000,5000,10000,20000
late_distance_derate : 1.00,1.00,1.00,1.00,1.00
early_distance_derate,
late_distance_derate
SYNTAX
USAGE
While the SOCV syntax provides for distance derating specifications at both design
and library levels, applications may have requirements for when and how this data
can be used. You should consult the applications' user guides for more tool specific
information on utilizing this data.
voltage
SYNTAX
USAGE
The voltage attribute describes the characterization voltage that the current data
section is applicable for. The behavior of this specification is dependent on the type
of data being modeled.
If spatial derating is applied at the design level, the user can provide different spatial
derating sections associated with different voltage characterizations. If there are
power domains running with different voltages, derating for each domain can be
customized. If the operating voltage of a domain is between characterization points in
the library, the spatial derate factor can be interpolated.
The voltage attribute is not used when describing distance derating at the library cell
level. It is assumed that voltage associated with the distance derate data in the
SOCV library is consistent with the Liberty parent library of that library cell - the
Liberty voltage is inherited. Interpolation is still possible if distance derate data for
several characterization voltages is available.
If the voltage attribute is part of data block modeling interconnect variation, it will
allow different variation multipliers to be selected based on the operating voltage of
the domain that each net belongs to.
early_variation_multiplier,
late_variation_multiplier
SYNTAX
USAGE
The variation multiplier can be specified (or not specified at all) differently for:
object_type : design
pin_direction : rise fall
delay_type : net
voltage : 1.620
path_type : data
early_variation_multiplier : 0.100
pin_direction
SYNTAX
USAGE
The pin_direction attribute can be used within early or late variation multiplier
blocks to allow the user to specify different multipliers for rising vs. falling transitions.
This attribute is not used in any spatial derating modeling context. It has previously
been used for describing transitions in the cell-level variation models.
Application Support
The primary consumers of SOCV side-file data are the Cadence Tempus sign-off timer
and the Innovus implementation software packages. The section of the document will
describe the commands and controls for loading SOCV side-file data, configuring the
analysis to use it, and options for controlling reporting output.
Single-corner
When configuring Tempus for SMSC analysis, all library data is imported via the
read_lib command. Use the read_lib command with the -socv option to load any
format of SOCV side file library. You may use this command to load multiple SOCV
files.
or
You may also include all of the data into a single .socv library file.
MMMC
To include SOCV side-file libraries in an MMMC configuration file, you should add them
to the library_set objects using the -socv option to either create_library_set or
update_library_set commands.
If this global is set to any value other than the default 1E30, the associated value
will always be used for the chip size.
You can enable and configure the spatial derating mode with the following global
variable settings:
The distance determined by the GBA bounding-box is used to look-up the spatial
derate factor from a design-level spatial derate table. Libcell-based derate tables
cannot be used with GBA bounding-box mode.
The effect of spatial derating is applied on the final arrival and required times of
the path. Instance-by-instance derating is not done. A Spatial Adjustment
entry is added to the slack calculation section of the report
Selection criteria such data vs. clock, net vs. cell, and voltage cannot be used in
GBA bounding-box mode because the different components of the Arrival time
cannot be separated out into these different sections
All paths with the same CPPR common point and the same data endpoint will
receive the same worst-case spatial adjustment. This is pessimistic for Setup
analysis, but is not recommended for Hold analysis.
The following example shows how the GBA Spatial Adjustment entry is calculated.
This example uses a late_distance_derate = 1.05 and an early_distance_derate = 0.90.
For Setup check analysis, the late derate is applied to delay of the launch path
measured from the CPPR common point to the path endpoint. The early derate factor
is applied to the capture clock path delay - measured from the CPPR point to the
capture clock pin. These two values are summed to produce the final Spatial
Adjustment value. Both factors increase pessimism and result in an earlier Required
time.
Chip-size mode allows the user to specify a static distance value to use for all GBA
paths. Since the bounding-box distance is always fixed, some of the restrictions of GBA
bounding-box mode are removed:
Design-level spatial derate files are required for net-based derating, but lib_cell
specific derating tables can be provided for instance derating
Spatial derating can be applied instance-by-instance for each path
The software can apply different derates depending on whether the instance is
being used on the clock or data path
The spatial derates can be reported in a more typical derate manner in the
detailed path section by using the socv_derate report_timing field.
PBA
By default, in SOCV analysis the spatial derate factor that is computed is applied to both
the nominal and variation components of delay. To control whether any spatial derate is
applied on top of the variation (sigma) component you can use the following global
control:
The SOCV side-file format can also be used to provide coefficients to be used to model
random variation on the interconnect.
To use the library to estimate interconnect variation, you must enable the flow with the
global setting:
object_type : design
[path_type]? : [clock data]*
[pin_direction]? : [rise fall]*
[voltage]? : <voltage value>?
delay_type : net
late_variation_multiplier? : <0.0 <= value <= 1.0 >?
early_variation_multiplier? : <0.0 <= value <= 1.0 >?
The format allows different variation multipliers to be provided for clock vs. data paths,
for rising vs. falling nets, and for early vs. late delays if that level of specificity is
required. The voltage attribute may also be used to specify different multipliers for
different parts of the design based on the voltage of the domain.
When interconnect variation is enabled, delay calculation will provide the timer with the
full interconnect delay as the mean, and the percentage specified by the variation
multiplier as a random variation sigma component. Statistical arrival time calculations
will treat the interconnect sigma similarly to the sigma delay of a gate arc from LVF -
mean delays are added and the variation component is root-sum-squared.
Timing Path:
-----------------------------------------------------------------------------------------
Timing Point Arc Cell Delay Delay Delay Arrival Arrival Arrival
-----------------------------------------------------------------------------------------
tclk - (net) - - - - - -
clkroot - (net) - - - - - -
tclkint - (net) - - - - - -
The variation component on interconnect arcs can be accessed using the Tcl API by
querying the following properties on the timing_arc object:
delay_sigma_max_fall
delay_sigma_max_rise
delay_sigma_min_fall
delay_sigma_min_rise
Support
Cadence Online Support provides access to support resources, including an extensive
knowledge base, access to software updates for Cadence products, and the ability to
interact with Cadence Customer Support. Visit https://support.cadence.com.
Feedback
Email comments, questions, and suggestions to [email protected].