Cell Delay:
Time between a 50% transition on input to 50% transition of output waveform. It is also called as
- Gate delay
- Propagation delay
The gate/cell delay is not constant for all design environmental conditions. Cell delays are calculated using Non Linear Delay Model(NLDM) and the cell/gate delay depends on the input transition and output load
cell delay ={input transition time,Output load}
Input Transition Time :
Time taken by signal to reach 20% to 80% of peak value(rise signal) or to reach 80% to 20% of peak value(falling signal)
Output Load:
Output load is total capacitance value that is connected to output pin of the cell
Cload =Cnet+Cpin
Cpin —————-Input capacitance of the driving pin
Cnet —————–Intterconnect capcitance
All this values(input transition time and output load) are provided in lib(timing libray) files of the standard cells and below is snippet of .lib files.
pin(“PhyInitSync[1]”) {
related_power_pin : VDD;
related_ground_pin : VSS;
direction : input ;
max_transition : 0.150000 ;
capacitance : 0.001672 ;
/* Other user defined attributes. */
original_pin : PhyInitSync[1];
timing () {
related_pin : “DfiClk” ;
timing_type : setup_rising ;
rise_constraint( f_dtrans_ctrans ){
index_1 ( “
0.001000, 0.010000, 0.020000, 0.040000, 0.080000, 0.120000, 0.150000″);
index_2 ( “
0.000000, 0.002388, 0.004669, 0.010000, 0.017848, 0.034895, 0.090000″);
values ( “
-0.001922, -0.002219, -0.002587, -0.003267, -0.003591, -0.003837, -0.003263″,\
“0.000255, -4.09999999999994e-05, -0.000410000000000001, -0.00109, -0.001414, -0.001659, -0.001086”,\
“0.001887, 0.00159, 0.001222, 0.000542000000000001, 0.000217, -2.80000000000002e-05, 0.000546”,\
“0.003733, 0.003436, 0.003068, 0.002387, 0.002063, 0.001818, 0.002392″,\
“0.005476, 0.00518, 0.004811, 0.004131, 0.003807, 0.003562, 0.004135”,\
“0.006344, 0.006047, 0.005679, 0.004998, 0.004674, 0.004429, 0.005003”,\
“0.00663, 0.006333, 0.005965, 0.005284, 0.00496, 0.004715, 0.005289”);
}
fall_constraint( f_dtrans_ctrans ){
index_1 ( “
0.001000, 0.010000, 0.020000, 0.040000, 0.080000, 0.120000, 0.150000″);
index_2 ( “
0.000000, 0.002388, 0.004669, 0.010000, 0.017848, 0.034895, 0.090000″);
values ( “
0.0075, 0.007203, 0.006834, 0.006154, 0.00583, 0.005585, 0.006158″,\
“0.010092, 0.009795, 0.009427, 0.008747, 0.008422, 0.008177, 0.008751”,\
0.012482, 0.012185, 0.011816, 0.011136, 0.010812, 0.010567, 0.01114″,\
0.012482, 0.012185, 0.011816, 0.011136, 0.010812, 0.010567, 0.01114″,\
“0.015991, 0.015694, 0.015325, 0.014645, 0.014321, 0.014076, 0.014649”,\
………………….
………………….
………………….
}}
For corresponding output load and input transition we can get the cell delay values from the tables provided in the .lib files. Index 1 represents the input transition ,Index 2 represents the output load and the values represents the delay of the cell. Lets us see how does the tool picks the delay value from the NLDM table
Assume the input transition as 0.02 and the output load as 0.01 for particular environment/corner and the value marked red in the values table gives the cell delay(0.003068) for the given input transition and output load. Have u guys noticed above rise_constraint and fall_constraint table, we can calculate the cell delay from both the tables.Then which cell delay value does the tool pick for the analysis ?
For the setup analysis mode the tool picks which ever cell_delay value is max .
For the Hold analysis mode the tool picks which ever cell_delay value is min .