To accommodate more functionality on a single chip, the semiconductor industry is shrinking down the transistor technology at every node. One of the primary challenges is variation in manufacturing parameters, namely random and systematic variations.
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.
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.
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.
The normal distribution curve obeys the following rules [5]:
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:
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
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”);
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”, \
“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” \
);
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 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
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 &nnbsp; 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
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:
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
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.
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
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
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:
Maitry Ramesh has experience in ASIC physical design, including place & route, static timing analysis, physical verification, and signal integrity analysis.