Documente Academic
Documente Profesional
Documente Cultură
Application Note
Rev – 1.0
June – 2012
Table of Content
Purpose:
This application note describes the current supported syntax and use model for using
AOCV derating libraries in EDI System or ETS versions 10.1.1/10.1.2 or higher. This
documents the syntax and semantics of the Cadence internal AOCV library format, as
well as support for external formats supporting similar information. This document
also describes how to add AOCV derating libraries to your design import configuration
and how to control AOCV analysis within the EDI or ETS session.
Audience:
This application note may be of interest to customers who are currently using EDI
System or ETS products - versions 10.1.1 or higher. Support for graph-based AOCV
derating was introduced in the respective 10.1.1 releases of these tools. This ca-
pability allows the core timing engine to have visibility into AOCV derating. Pre-
viously, AOCV analysis was only possible as a post-processing, path-based retime
capability utilizing the LOCV flow. Graph-based AOCV exposes the EDI timing op-
timization system to AOCV effects, and also enables path-based retime to run faster
and more efficiently.
AOCV – Definition
• AOCV derating libraries are provided by vendors or can be created out of SSTA
characterization flows such as Cadence’s Variety
• Provides a final AOCV x|+ OCV composite derating factor that is familiar to users and
fits in well with existing flows
Clock path stage counts are with respect to the CPPR common point and the last clock
branch points before the registers
EDI and ETS 10.1.1/10.1.2 support two different AOCV derating library formats - a Ca-
dence specific format derived from a previous LOCV library specification, and an external
format currently supported by some EDA vendors and foundries. The characterization
data within either format is essentially the same - the differences are mainly syntactic.
The LOCV format library used in past EDI and ETS releases for strictly path-based retime
of critical paths is not supported for AOCV analysis. The new Cadence AOCV format uses
a similar syntax to LOCV, but simplifies the content so that the AOCV library specification
can be done in parallel with Liberty timing library specifications. Conversion of legacy
LOCV libraries to the new AOCV format is beyond the scope of this document. You
should contact Cadence for assistance with this migration.
The Cadence AOCV derating format is made of several sections allowing you to cus-
tomize how each table is applied:
• The Table Group allows you to specify different tables to be used for Net arc or
Cell arc derating
• The Table ID is comprised of up to three naming attributes which allow the
specificaiton of tables for:
Note: Table voltage specification is not supported in the current beta release of
of the software. AOCV derating libraries must not include this data.
• The Derating Table section provides the indices and data for 1D or 2D de-
rating - including stage depth only, distance only, or combined stage and dis-
tance
[Early | Late] -[Rise | Fall]? -[Clock | Data]? Table ID tag Early or Late is required
Stage 1 2 3 4 5
It is possible to have a 1-D
[Distance 500 1000 1500 2000]?
distance based derating
1.123 1.090 1.075 1.067 1.062 Derating Table table, but the AOCV flow
1.124 1.091 1.076 1.068 1.063 requires at least a 1-D stage
1.125 1.092 1.077 1.070 1.065 based table
1.126 1.094 1.079 1.072 1.067
Table Group
The Apply- tag can be used with either a Net or Cell descriptor to designate the table
for use in derating only net delays or cell delays respectively. If the Apply- tag is not
specified, then the table will be used for both net and cell delay derating.
To designate a table for net-based derating only, you should specify:
Apply-Net
To designate a table for cell-based derating only - use:
Apply-Cell
If you intend to use the Object ID field to specify unique tables for specified libraries
and/or library cells, you should also specify Apply-Cell for these tables.
Table ID
The Table ID is a tag made up of up to three sub-tags, which can be used to add further
specificity to the derating table to control early vs. late, rise vs. fall, and clock path vs. data
path.
{Early | Late}
Each table is minimally required to have either an Early or Late tag. It is further required
that each object subject to AOCV derating have both an Early and a Late derating table.
AOCV derating of only Early or only Late paths is not allowed. It is, however, legal to
using derating values of 1.0 for the tables if that effect is desired.
[Rise | Fall]
By default, an Early or Late derating table is used to supply derating for both rising and
falling delays. If unique derating for each transition is desired, the -Rise or -Fall tag can
be added to the Table ID to tighten the specification.
To configure a table for only rising delays on early paths, you should use:
Early-Rise
To configure a table for falling delays on late timing paths - specify:
Late-Fall
[Clock | Data]
Derating tables can also be configured so that they are specific to clock path delays or
data path delays. This can be achieved by adding a final -Clock or -Data tag to the
Table ID string.
The complete set of possible Table IDs is:
Early Early-Rise-Clock Late Late-Rise-Clock
Early-Rise Early-Rise-Data Late-Rise Late-Rise-Data
Early-Fall Early-Fall-Clock Late-Fall Late-Fall-Clock
Early-Clock Early-Fall-Data Late-Clock Late-Fall-Data
Early-Data Late-Data
In the case where there is an overlap in the table specification, the derating table with the
tightest specification is used.
Object ID
You can further control the application of the AOCV derating tables to specific timing
libraries or library cell groups. The syntax also supports specifying design-level cell in-
stances or nets - however, these types of design-level references are not currently
supported
Note - Although the current LOCV path-based flow does support instance or net specific
derating factors the AOCV flow - either graph-based or path-based does not. Unlike
LOCV, the AOCV libraries are configured and stored in the system the same way as
Liberty timing libraries - allowing only library or library-cell level derate factors to be
supported.
In the AOCV flow you can use the Cell Object ID to designate particular derating tables to
be used for specific library-level groups. An object expression using simple wildcarding
rules can be used for a variety of seletion criteria. If there is an overlap among the
wildcard expressions, then the tighest reference will be used.
To specify a derating table to be used for a specific library:
Cell stdcell/*
To specify derating for a specfic library cell:
Cell stdcell/BUF1S
To specify a common derate table for a group of cells with similar drive strength:
Cell stdcell/*1S
Cell stdcell/*4S
To specify a common derate factor for a group of libraries at the same corner:
Cell *-P1V15T120/*
Table Voltage
In the future, an optional voltage designation for the table can be specified by adding the
Voltage specifier to the model description. You can specify several tables with different
Voltage specifications within the same .aocv library file. When performating derating,
the system will use the table which matches the current operating voltage of the cell.
If the operating voltage of the cell does not exactly match one of the specified Voltage
points, then the system will:
• If the operating voltage is between the Voltage points of two derating tables, the
system will use linear interpolation to derive the proper derating factor
• If the requested voltage is large than the maximum Voltage table, then that table
data will be used without extrapolation
• If the requested voltage is lower than the minimum Voltage table, then the min
Voltage data is used without extrapolation
To specify a voltage of 1.5Volts for the derating table, use a specification of:
Voltage 1.5
Note - Support for the AOCV voltage attribute is not present in the current 10.1.1/10.1.2
beta release of the AOCV functionality. For testing purposes, AOCV libs should not
include this property.
Derating Table
The AOCV format allows a derating table specification that is 1 or 2-dimensional - the
possible axes being Distance - the bounding box diagonal of that path, and Stage -
the stage count depth of the path. Although AOCV graph-based (AOCV-GB) only
supports stage-based derating, you may specify either a 1-D stage-based table, or a 2-D
Stage x Distance table.
When using a 2-D table in conjuction with AOCV-GB stage-based only analysis, the
system will attempt to pick the proper row of the table based on the estimated chip and/or
core dimensions. When using EDI system or ETS with physical information, the chip and
core size will be automatically determined from the design. The variables aocv_chip_size
and aocv_core_size can be used in ETS to specify the physical dimensions when this
information is not available. If this value falls off of the table, then the final row of the
table will be used without extrapolation.
The Stage and Distance keywords are added to the model to provide the axis points
for the table. Rows of the table always represent a Distance variance, and columns a
stage count - independent of the order in which the Stage and Distance keywords are
specified for the model.
The user is responsible for understanding the intended interpretation of the derating
factors in the AOCV table they are using. Generally, these are set to either model the full
derating to be used for the cell, or to model only the random variation component. If the
latter is being employed, you should refer to the section Using OCV Derating With AOCV
for more information on overlaying additional scaling with the AOCV derate factors.
This example shows a table that will be used for derating cell delay arcs for devices used
on the clock path for early delays. All cells matching *D1 in the stdcellwcl library will
utilize this table data. For an early derating table such as this, you can see that the
derating factors are monotonically increasing toward 1.0 as the depth of the path in-
creases.
Apply-Cell
Early-Clock
Cell stdcellwcl/*D1
Stage 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0.627 0.720 0.743 0.783 0.790 0.814 0.825 0.832 0.847 0.848 \
0.854 0.860 0.865 0.872 0.883
This example shows a 2-D derating table that will be applied to both nets and cells for all
early data paths - i.e for the data path of Hold type timing checks:
Early-Data
Stage 0 1 2 3 4 5 6 7 8 9 10 15 20 30 50 100 200
Distance 0 500 1000 1500 2000 3000 4000 5000
0.916 0.916 0.936 0.944 0.948 0.951 0.953 0.955 0.956 0.957 0.958 0.960 0.962 0.963 0.964 0.965 0.965
0.916 0.916 0.936 0.944 0.948 0.951 0.953 0.955 0.956 0.957 0.958 0.960 0.962 0.963 0.964 0.965 0.965
0.913 0.913 0.931 0.939 0.943 0.945 0.947 0.948 0.949 0.950 0.951 0.953 0.954 0.955 0.956 0.957 0.957
0.909 0.909 0.926 0.933 0.937 0.939 0.941 0.942 0.943 0.943 0.944 0.946 0.947 0.948 0.948 0.949 0.949
0.905 0.905 0.922 0.928 0.931 0.933 0.935 0.936 0.937 0.937 0.938 0.940 0.940 0.941 0.942 0.942 0.942
0.900 0.900 0.915 0.920 0.923 0.925 0.926 0.927 0.928 0.929 0.929 0.930 0.931 0.932 0.932 0.933 0.933
0.896 0.896 0.910 0.915 0.918 0.920 0.921 0.922 0.923 0.923 0.924 0.925 0.925 0.926 0.927 0.927 0.927
0.893 0.893 0.907 0.912 0.915 0.917 0.918 0.919 0.919 0.920 0.920 0.921 0.922 0.922 0.923 0.923 0.923
AOCV derating libraries - whether in native Cadence format or external format are con-
figured similarly as Liberty timing libraries - both in min/max, MMMC, and CPF-based
modes of operation. Loading AOCV derating libraries does not automatically configure
the system for AOCV analysis - this must be explicitly enabled via setAnalysisView.
Min/Max Configuration
Min/Max is the default, two-corner, single-mode operation of both EDI and ETS.
Use the configuration file entry:
to specify a derating library for use in EDI. The AOCV library will be loaded when the
config file is committed. If you are using an EDI configuration file to drive ETS, then this
method may also be used for ETS. ETS also provides a (currently undocumented)
'read_lib -aocv' option for specifying AOCV derating libraries directly from the
command script:
Example:
read_lib slow.lib
read_lib -aocv test.aocv
read_verilog test.v
set_top_module test
read_sdc test.sdc
MMMC Configuration
In an MMMC environment, AOCV libraries are specified in the same manner as Liberty
timing libraries - by configuring them in the MMMC library_set object using either the
create_library_set or update_library_set commands. These will later be
incorporated as part of an MMMC delay corner. AOCV libraries should only contain data
applicable for one delay corner. The same AOCV library may be applied to multiple
library sets if desired:
Example:
CPF Configuration
If you are using a CPF file to configure the libraries for your MMMC implementation and
analysis flow, you can add additional configuration information for the AOCV derating
libraries directly to the CPF file. Support libraries such as CDB for SI and AOCV are
specified by the -user_attributes directive that is part of the CPF
define_library_set construct. A new 'aocv' tag has been incorporated into
CPF for this purpose.
Example
define_library_set
-name libs-1volt
-libraries {libs/delayvolt_1V.liblibs/slow.lib}
-user_attributes { {aocv test.aocv} }
will result in the following MMMC library set when the CPF is committed:
create_library_set
-name libs-1volt
-timing [list libs/delayvolt_1V.liblibs/slow.lib]
-aocv [list test.aocv]
Enabling AOCV analysis - either graph-based or path-based - within EDI and ETS is
controlled by the -aocv option to the setAnalysisMode (ETS: set_analysis_mode)
command. All subsequent timing reports will be based on AOCV graph-based analysis.
Activating AOCV mode will automatically enable CPPR analysis, so for script clarity it is
recommended to reflect this in setAnalysisMode with an explicit -cppr specification.
To enable AOCV path-based reporting for a specific report_timing command, you should
select one of the two AOCV retime options:
Like LOCV, the aocv retime mode will retime the selected paths with just AOCV de-
rating. The aocv_path_slew_propagation option will also include analysis with
path-correct slew propagation.
A new timing report column has been added to show the resolved AOCV timing derate
factor used for a specific timing arc. The aocv_derate field can be added to the
report by configuring the report_timing -format option or the
report_timing_format global variable. The delay field represents the effective delay
including any AOCV or OCV derating applied.
or
Before the introduction of stage and area based derating factors, "OCV" derating factors
had been specified using the set_timing_derate SDC command with -early and
-late options. The early/late variance represented the total derating - including that due
to PVT modeling as well as any guard-banding offset.
Although the stage-based derate factors that come from the AOCV analysis are targeted
at variation coming from Process - some users/vendors have chosen to model the total
effect with the AOCV derating tables. Others have chosen to split the derating model
into separate pieces and combine them - either multiplicatively or additively. There are
many alternatives. The timing system now offers a set of controls enabling the user to
flexibly configure their derating environment.
• Control whether AOCV and OCV derating factors are multiplied together or
added
• Specify whether the reference point for the AOCV and OCV factors are nominal
around 0.0, or around 1.0 - and adjust the calculation appropriately
By default, when AOCV analysis is enabled, any OCV style derating specified with
set_timing_derate is multiplied by the calculated AOCV factor to get the final de-
rating value. A new timing global has been added to allow the user to control whether to
add or multiply AOCV and OCV factors.
Since AOCV and OCV derating factors may be added or multiplied, it is important to
understand whether each factor is nominal at zero or at one.
Example
If we have an AOCV +3% factor modeled as 1.03, and an OCV factor having a +2% factor
modeled as 1.02 - simple multiplication of factors works fine and yields a final derate of
around 1.051. If we were to simply add the same factors, we would get a sum of 2.05 -
which is probably not the value that is intended. The timing system can understand that
both of these factors are nominally referenced to 1.0, and it can then automatically adjust
the final result so that it makes sense. In this case the timer would calculate:
Two new timing globals have been introduced in the 10.1.2 release to allow specification
of the reference point for both OCV and AOCV factors. Per current AOCV library defini-
tions, the AOCV reference point is always expected to be set at 1.0.
It is generally expected that AOCV derating libraries will be referenced to 1.0, so the following
combinations below are not expected to be actively used
In the 10.1.0 (RTM) release of the software, the ability to perform incremental adjust-
ments on to some set_timing_derate factors was added. New -add and
-multiply options were supersetted on top of the current EDI/ETS implementation of
set_timing_derate. The new options were restricted to only global (applies to all
instances in the design) derating parameters.
In the 10.1.2 release, the software was further enhanced to allow -add and -multiply
to function on an instance-specific basis as well.
Example
In the previous example, we had an additive combination of OCV and AOCV. Since one
of the reference points was 0 and the other was 1 - the software did not have to make any
adjustments to normalize the final derate factor. In this case, the timing report columns
are quite intuitive. In the timing run below, the nominal delay for all arcs has been set to
1.0ns so that the value in the Delay field indicates the total derate factor applied.
def +------------------------------------------------------------------------------+
| Instance | Cell | Arc | Aocv | Aocv | User | Delay | Arrival |
| | | | Stage | Derate | Derate | | Time |
| | | | Count | | | | |
|----------+---------+-------------+-------+--------+--------+-------+---------|
| RS | DFFX1 | | 7.000 | 1.030 | 1.000 | 2.030 | 20.450 |
| RS | DFFX1 | CK ^ -> Q v | 6.000 | 1.030 | 0.010 | 1.040 | 21.490 |
| U1 | BUFXX | | 7.000 | 1.030 | 1.000 | 2.030 | 23.520 |
| U1 | BUFXX | A v -> Y v | 6.000 | 1.030 | 0.030 | 1.060 | 24.580 |
If the derating factors are changed such that both AOCV and OCV are referenced to 1.0,
then an implicit -1 will be done since the mode is still aocv_additive. In this situation,
the effect of the -1 will be seen in the aocv_derate value.
set_global timing_derate_aocv_reference_point 1
set_global timing_derate_ocv_reference_point 1
set_timing_derate -delay_corner dcMax -late -cell_delay 1.01
set_timing_derate -delay_corner dcMax -late -cell_delay 0.02 -add [get_cells U1]
This is the next one
+------------------------------------------------------------------------------+
| Instance | Cell | Arc | Aocv | Aocv | User | Delay | Arrival |
| | | | Stage | Derate | Derate | | Time |
| | | | Count | | | | |
|----------+---------+-------------+-------+--------+--------+-------+---------|
| RS | DFFX1 | | 7.000 | 0.030 | 1.000 | 1.030 | 13.450 |
| RS | DFFX1 | CK ^ -> Q v | 6.000 | 0.030 | 1.010 | 1.040 | 14.490 |
| U1 | BUFXX | | 7.000 | 0.030 | 1.000 | 1.030 | 15.520 |
| U1 | BUFXX | A v -> Y v | 6.000 | 0.030 | 1.030 | 1.060 | 16.580 |
In the final example, we set both reference points to 0, and modify the AOCV library so
that it is outputting a value of 0.030ns.
set_global timing_derate_aocv_reference_point 0
set_global timing_derate_ocv_reference_point 0
set_timing_derate -delay_corner dcMax -late -cell_delay 1.01
set_timing_derate -delay_corner dcMax -late -cell_delay 0.02 -add [get_cells U1]
+------------------------------------------------------------------------------+
| Instance | Cell | Arc | Aocv | Aocv | User | Delay | Arrival |
| | | | Stage | Derate | Derate | | Time |
| | | | Count | | | | |
|----------+---------+-------------+-------+--------+--------+-------+---------|
| RS | DFFX1 | | 7.000 | 1.030 | 1.000 | 2.030 | 20.450 |
| RS | DFQX1 | CK ^ -> Q v | 6.000 | 1.030 | 0.010 | 1.040 | 21.490 |
| U1 | BUFXX | | 7.000 | 1.030 | 1.000 | 2.030 | 23.520 |
| U1 | BUFXX | A v -> Y v | 6.000 | 1.030 | 0.030 | 1.060 | 24.580 |
In this case, the +1.0 adjustment to normalize the final derating factor is again accounted
for in the aocv_derate column.