0% found this document useful (0 votes)
264 views12 pages

Parametric On-Chip Variation A Step Towards Accurate Timing Analysis

The document discusses parametric on-chip variation (POCV) techniques for timing analysis in integrated circuit design. It explains that earlier techniques like OCV and AOCV became ineffective for lower technology nodes. POCV was developed to more accurately model cell delay variations by using nominal delay values and standard deviations obtained from Monte Carlo simulations, rather than just minimum and maximum delays. It provides details on how POCV calculates timing statistically based on normal distributions of delay values and handles input in either a single coefficient format or a more accurate library variation format containing variation data for different cell conditions.

Uploaded by

Roshan Raju
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
264 views12 pages

Parametric On-Chip Variation A Step Towards Accurate Timing Analysis

The document discusses parametric on-chip variation (POCV) techniques for timing analysis in integrated circuit design. It explains that earlier techniques like OCV and AOCV became ineffective for lower technology nodes. POCV was developed to more accurately model cell delay variations by using nominal delay values and standard deviations obtained from Monte Carlo simulations, rather than just minimum and maximum delays. It provides details on how POCV calculates timing statistically based on normal distributions of delay values and handles input in either a single coefficient format or a more accurate library variation format containing variation data for different cell conditions.

Uploaded by

Roshan Raju
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 12

Parametric on-chip variation: A step towards accurate

timing analysis
edn.com/parametric-on-chip-variation-a-step-towards-accurate-timing-analysis/

August 7, 2019

Today, the semiconductor market is flooding with demands of high speed, low power,
and highly reliable SoCs, due to the rapid growth of IoT, networking, AI, and more.

To accommodate more functionality on a single chip, the semiconductor industry is


shrinking down the transistor technology at every node. But this technology gain comes
with a great deal of challenges, in terms of reliability, manufacturability, and design
complexity. One of the primary challenges is variation in manufacturing parameters,
namely random and systematic variations.

To model these parameter variations, a few engineers came up with the on-chip variation
(OCV) model. The concept of OCV was first introduced in technology nodes above 90nm.
The fundamental idea behind OCV is to apply global derates on the whole design
irrespective of the type of cells, its individual variation or its slew-load conditions. But this
simple concept became ineffective in lower technology nodes. Unfortunately, global
derates make the design too optimistic for shorter paths and too pessimistic for longer
paths. Subsequently, expected results are not accurate and reliable enough, which affects
the performance of the chip.

In order to overcome the extra pessimism added due to OCV, advanced on-chip variation
(AOCV) technique was introduced for nodes below 65nm. AOCV technique adds derates
in the design based on the logic depth and distance of the cell in the timing path. The
depth of the cell models the random variation component, while distance (location) of the
cell in the path models systematic variation of the cells. But below 40nm, this method too
becomes inaccurate as it cannot further reduce pessimism. To address the shortcomings
of AOCV, parametric on-chip variation (POCV) evolved.

POCV

In POCV, instead of applying a specific derating factor to a cell, cell delay is calculated
based on a delay variation of that cell. This delay variation (σ ) for each cell is obtained
through Monte-Carlo HSPICE simulation. The variation value σ is a unique value specific
to that library cell.

Some of the terminologies used for POCV analysis are briefly explained below:

Normal distribution curve : Data distribution for any entity can be spread out in different
ways. [4] In a normal distribution curve, the data tends to be around a central value with
no bias on the left or right, as shown in Figure 1 .

1/12
For POCV, it is assumed that the nominal delay (expected delay) value of a cell follows a
normal distribution curve. The delay value of the cell is calculated after many experiments
and their mean is taken as the nominal delay.

Figure 1 Normal distribution curve

Standard deviation (σ ): For a normal distribution curve, data tends to be denser in the
center and less dense on the edges as shown in Figure 1. In order to measure the
variations from the mean, the metric named standard deviation (σ) is used. It measures
how far any data value deviates from the mean. If the delay values of the cell deviate
from the nominal value to the left or right by any amount, then more changes in the timing
of that cell are expected. This deviation of the delay from its expected value is modeled
using σ, as shown in Figure 2 .

Figure 2 Standard deviation of the data from the mean


The normal distribution curve obeys the following rules [5] :

About 68% of the area under the curve falls within 1σ of the mean.
About 95% of the area under the curve falls within 2σof the mean.
About 99.7% of the area under the curve falls within 3σ of the mean.

POCV analysis

POCV uses a nominal value for modeling random variations on the die instead of using
min-max delay values for timing arc. When using min-max values to model delay
variations, there is a probability of actual delay falling anywhere between the min-max
extremes. While in POCV, there are maximum chances of the delay occurring near the
nominal value and fewer chances of falling farther away from it. POCV calculates the
arrival time and required time statistically instead of using the min-max values. Hence, the
results are less pessimistic and more accurate. [1]

POCV analysis uses nominal delay (μ) and variation (σ) for timing analysis in the
following way:

1. The tool takes the value of σ from the timing library or an external file containing
POCV coefficient C.

2. Each arc timing is then calculated statistically as the total of the nominal delay and
the variation.

3. The tool then calculates the delay of the path by statistically combining these arc
delays and then checks whether the chip works at the expected frequency.

2/12
By default, the tool performs POCV analysis at three standard deviations (3σ ) from the
mean. One can specify the number of standard deviations to be used for delay
calculation. Increasing the value of standard deviations tightens the timing requirement
making it more pessimistic.

POCV data-types

The input for the delay variation σ can be provided to the tool for POCV analysis in two
different formats: [2]

Using single coefficient (C): This external file contains the coefficients for delay variation.
It applies a single coefficient value C for each library cell, hierarchical cell or design. The
coefficient is the value of the variation at 1 standard deviation from the nominal delay.
Monte Carlo analysis is used to get the POCV coefficients. There is only one value of C
for each timing arc of the cell irrespective of the input transition and output load.
The delay variation σ = C * nominal delay [1]

Example of POCV coefficient file:

version: 4.0

ocvm_type: pocvm

object_type: lib_cell

rf_type: rise fall

delay_type: cell

derate_type: early

object_spec: */INV*

coefficient: 0.0693

ocvm_type: pocvm

object_type: lib_cell

rf_type: rise fall

delay_type: cell

derate_type: late

object_spec: */INV*

coefficient: 0.0693

3/12
Library variation format (LVF):[2] The information of POCV variation is directly provided in
the library itself. The variations are loaded in the design by loading the library. It contains
the value of variation ?? for multiple slew-load conditions of the cell instead of a single
value of C. Using this format greatly improves the accuracy of the design at 16nm and
below nodes. Similar to cell delay check, LVF supports POCV coefficients for transition
and setup-hold checks as well.

Example of POCV LVF format for cell delay:

ocv_sigma_cell_rise (delay_template_7x7) {

sigma_type: early;

index_1 (“0.002, 0.00461012, 0.0106266, 0.0244949, 0.0564622, 0.130149, 0.3”);

index_2 (“0.0001, 0.00250277, 0.00625692, 0.0156423, 0.0391057, 0.0977643,


0.244411”);

values (

“0.000434399, 0.000455441, 0.000498544, 0.000643925, 0.00110701, 0.002339,


0.00552623”,

“0.000465907, 0.000485971, 0.000527015, 0.000666568, 0.00111898, 0.002343,


0.00552553”,

“0.000559323, 0.000576732, 0.00061235, 0.000736174, 0.00115814, 0.00235789,


0.0055262”,

“0.000833633, 0.000845754, 0.000870591, 0.00096033, 0.00130148, 0.00242147,


0.00553974”,

“0.00155978, 0.00156506, 0.00157629, 0.00161976, 0.00181337, 0.00270592,


0.00563372”,

“0.00297234, 0.00297538, 0.0029818, 0.00300669, 0.00312188, 0.00374041,


0.00625192”,

“0.00634754, 0.00635019, 0.00635524, 0.00637265, 0.00644564, 0.00682909,


0.00862102”

);

ocv_sigma_cell_rise (delay_template_7x7) {

sigma_type: late;

index_1 (“0.002, 0.00461012, 0.0106266, 0.0244949, 0.0564622, 0.130149, 0.3”);

4/12
index_2 (“0.0001, 0.00250277, 0.00625692, 0.0156423, 0.0391057, 0.0977643,
0.244411”);

Values (

“0.000437286, 0.000457105, 0.000497985, 0.000637304, 0.00108629, 0.00232209,


0.00552685”,

“0.000472301, 0.000491262, 0.000530344, 0.000664675, 0.0011057, 0.00233411,


0.0055369”,

“0.000574762, 0.000591464, 0.000625872, 0.000746679, 0.00116358, 0.00236878,


0.00556326”,

“0.000870467, 0.00088302, 0.000908713, 0.00100148, 0.0013543, 0.00248368,


0.0056407”,

“0.00164304, 0.00165109, 0.00166724, 0.00172592, 0.00197057, 0.0029014,


0.0059028”,

“0.00310016, 0.00310792, 0.00312195, 0.00316698, 0.00333794, 0.00397815,


0.00652495”,

“0.00660483, 0.00661643, 0.00663544, 0.00668762, 0.00684624, 0.00721525,


0.0089517”

);

ocv_sigma_rise_transition (delay_template_7x7) {

sigma_type: early;

index_1 (“0.002, 0.00461012, 0.0106266, 0.0244949, 0.0564622, 0.130149, 0.3”);

index_2 (“0.0001, 0.00250277, 0.00625692, 0.0156423, 0.0391057, 0.0977643,


0.244411”);

values (

“0.000100569, 0.000134978, 0.000229249, 0.00050401, 0.00121671, 0.002993,


0.00743829”,

“0.000100892, 0.000134484, 0.000227994, 0.000501646, 0.00121207, 0.00298969,


0.00743821”,

“0.00010187, 0.000133514, 0.000225182, 0.000496229, 0.00120143, 0.00298208,


0.00743812”,

“0.000105258, 0.000132198, 0.000219147, 0.00048392, 0.00117714, 0.00296469,


0.00743831”,

5/12
“0.000118334, 0.000133252, 0.000207293, 0.000456511, 0.00112259, 0.00292568,
0.00744099”,

“0.000168981, 0.000168312, 0.000220293, 0.000457211, 0.00113847, 0.00304919,


0.00783808”,

“0.000309985, 0.00029017, 0.000296889, 0.000480193, 0.00118862, 0.0033512,


0.00879209”

);

Typically, index_1 denotes input transition and index_2 denotes output load.

Example of POCV LVF format for cell transition:

ocv_sigma_rise_transition (delay_template_7x7) {

sigma_type : late;

index_1 (“0.002, 0.00461012, 0.0106266, 0.0244949, 0.0564622, 0.130149, 0.3”);

index_2 (“0.0001, 0.00250277, 0.00625692, 0.0156423, 0.0391057, 0.0977643,


0.244411”);

Values (

“0.000101973, 0.000136203, 0.000229893, 0.000503623, 0.00121432, 0.00298556,


0.00741802”,

“0.000101225, 0.000134939, 0.00022865, 0.000502868, 0.00121478, 0.00298412,


0.00741178”,

“9.97202e-05, 0.000132145, 0.000225846, 0.000501159, 0.00121589, 0.00298082,


0.00739744”,

“9.75555e-05, 0.000126401, 0.000219724, 0.000497394, 0.00121862, 0.00297336,


0.00736471”,

“9.97943e-05, 0.000118493, 0.000208207, 0.000489711, 0.00122584, 0.00295674,


0.00729086”,

“0.000140894, 0.000144669, 0.000213026, 0.000477088, 0.00120078, 0.0029501,


0.00733229”,

“0.000284099, 0.000264038, 0.000279106, 0.000470411, 0.00116213, 0.0029572,


0.00747957”

);

6/12
Typically, index_1 denotes input transition and index_2 denotes output load.

If both data-types are present in the design then by default the file with POCV single
coefficient has higher precedence than POCV slew-load table in LVF format.

POCV delay calculation

POCV works on a path by path basis. The delay is calculated as follows:

Delay of cell = Nominal delay +/- Variation – – – > equation


(1)

= Nominal delay +/- (C*Nominal delay)*N – – – > equation


(2)

where C = POCV coefficient

N = No. of standard deviations

The value of variation is added or subtracted from the nominal delay for maximum and
minimum delay analysis respectively. [2]

The detailed calculation for POCV is explained with the help of Primetime timing report as
follows:

Sigma: 3.0

——— Incr ————- ——- Path ———

Point Mean Sensit Corner Value Mean Sensit


Value

————————————————————————————–

clock clk (rise edge) 0.00 0.00

clock network delay (propagated) 0.379 0.005 0.393 0.393 0.379 0.005
0.393

reg/phi 0.000 0.000 0.000 0.000 0.379 0.005


0.393 r

reg/q 0.098 0.004 0.111 0.103 0.477 0.006 &


0.496 f

NAND/i2 0.004 0.000 0.005 0.004 0.482 0.006 & 0.501


f

7/12
NAND/o 0.102 0.008 0.126 0.113 0.584 0.010 & 0.614
r

NOR/i0 0.007 0.000 0.008 0.007 0.591 0.010 &


0.622 r

NOR/o 0.143 0.010 0.175 0.157 0.735 0.015 &


0.778 f

AOI/i1_0 0.024 0.001 0.028 0.025 0.759 0.015 &


0.803 f

AOI/o 0.112 0.013 0.152 0.127 0.871 0.020 &


0.930 r

NAND1/i3 0.010 0.000 0.010 0.010 0.881 0.020 & 0.940


r

NAND1/o 0.083 0.005 0.100 0.086 0.964 0.020 & 1.025


f

NOR1/i3 0.018 0.000 0.018 0.018 0.982 0.020 &


1.044 f

NOR1/o 0.161 0.008 0.185 0.166 1.143 0.022 &


1.209 r

NAND2/i2 0.061 0.000 0.061 0.061 1.204 0.022 & 1.270


r

NAND2/o 0.087 0.009 0.114 0.092 1.290 0.024 & 1.362


f

AOI1/i2 0.002 0.000 0.002 0.002 1.293 0.024 & 1.364


f

AOI1/o 0.072 0.004 0.084 0.073 1.365 0.024 & 1.437


f

BUF1/i 0.001 0.000 0.001 0.001 1.365 0.024 & 1.438


f

BUF1/o 0.085 0.004 0.098 0.086 1.450 0.025 & 1.524


f

BUF2/i 0.015 0.001 0.019 0.015 1.465 0.025 & 1.539


f

8/12
BUF2/o 0.076 0.005 0.092 0.078 1.541 0.025 & 1.617
f

BUF3/i 0.013 0.001 0.017 0.014 1.555 0.025 & 1.630


f

BUF3/o 0.098 0.006 0.115 0.100 1.653 0.026 & 1.730


f

reg/d 0.014 0.001 0.018 0.014 1.667 0.026 &


1.745 f

data arrival time 1.667 0.026


1.745

clk (rise edge) 1.538 1.538 1.538 0.000 1.538

clock network delay (propagated) 0.349 0.005 0.335 0.335 1.887 0.005
1.873

clock reconvergence pessimism 0.006 -0.004 0.018 0.012 1.893 0.003


1.886

inter-clock uncertainty -0.093 -0.093 1.800 0.003 1.793

reg/phi 0.000 0.000 0.000 0.000 1.800 0.003


1.793

library setup time -0.046 0.006 -0.063 -0.057 1.754 0.006 1.735

data required time 1.754 0.006


1.735

————————————————————————————————————————-

data required time 1.754 0.006


1.735

data arrival time -1.667 0.026


-1.745

————————————————————————————————————————-

statistical adjustment 0.017


0.007

slack (MET) 0.087 0.027 0.007

Some of the terms in the timing report are explained as below:

9/12
Incr Column: Delay calculation for that specific stage

Path Column: Total delay of the path up to that stage

Mean : Nominal delay (Delay without POCV coefficient applied)

Sensit : Sensitivity (Value of variation due to POCV coefficient at 1 sigma corner)

Sensit = Mean *POCV coefficient(C) – – ->


equation (3)

Corner : Delay value after POCV calculation

Corner = mean +/- N*Sensit [1] – – ->


equation (4)

where N = total no. of standard deviations

Incr value : Current stage path value – Previous stage path value – – ->
equation (5)

Mean for Path column: mean_1st_stage + mean_2nd_stage +…+


mean_current_stage

– – – > equation (6)

Sensit for Path column: sqrt [sensit_1st_stage^2 + sensit_2nd_stage^2 + …. +

sensit_current_stage^2] – – – > equation


(7)

Path value : Path mean + [Path sensit*N] – – -> equation


(8)

The POCV calculation for the highlighted line is explained below:

——— Incr ————- ——- Path ———

Point Mean Sensit Corner Value Mean Sensit


Value

————————————————————————————–

NAND/i2 0.004 0.000& 0.005 0.004 0.482 0.006 0.501 f

NAND/o 0.102 0.008 0.126 0.113 0.584 0.010 & 0.614 r

Figure 3 Calculations for incr column for the above example

10/12
Figure 4 Calculations for path column for the above example

As seen from above, the delay calculation for the path [mean and sensit] is done
statistically. Sensit is calculated by using RSS value. This reduces extra pessimism in the
path as compared to simply adding the sensit values. By simple addition, the total sensit
value of the path will be 0.017 as opposed to 0.010 calculated using RSS.

AOCV distance derates in POCV

POCV models the random variations on the chip. In order to model systematic variations
as well, distance based AOCV derating is used along with POCV. Distance derates are
provided in a similar LVF format in library. POCV coefficient and distance derates are
mutually exclusive. Distance-based derates are usually generated from silicon data
measurements from the test chip. [1]

An example of AOCV table:

version: 4.0

ocvm_type: pocvm

object_type: lib_cell

rf_type: rise fall

delay_type: cell

derate_type: early

object_spec: */*INV*

distance: 0 250000 1000000 2250000 4000000 6250000 9000000 12000000 16000000


20000000 30000000

table: 1.025 1.025 1.025 1.025 1.025 1.025 1.025 1.025 1.025 1.025 1.025

ocvm_type: pocvm

object_type: lib_cell

rf_type: rise fall

delay_type: cell

derate_type: late

11/12
object_spec: */*INV*

Distance: 0 250000 1000000 2250000 4000000 6250000 9000000 12000000 16000000


30000000

table: 1.025 1.054 1.065 1.074 1.082 1.089 1.095 1.100 1.105 1.110 1.119

Guard-banding in POCV

To model non-process related variations such as voltage and temperature, guard banding
is used. It applies to both nominal delay and sigma.

When both derates; distance-based and guard band are present then total derate will be
the product of the two. [POCV distance derate * POCV guard band].

The two most used timing closure methodologies can be compared as follows:

12/12

You might also like