t typical=t intrinsic + (k load *C load)
In lib file for example in 4 different states we have like this lookup
table , and in PDF file that explain cell we have this table
AND2(XL)
Intrinsic Delay Kload(ns/pF)
A->Y up 0.0841 6.274
A->Y down 0.1006 3.4200
B->Y up 0.0923 6.2745
B->Y down 0.1126 3.4246
timing() {
related_pin : "A";
timing_sense : positive_unate;
cell_rise(delay_template_7x7) {
index_1 ("0.03, 0.1, 0.4, 0.9, 1.5, 2.2, 3");
index_2 ("0.000175, 0.0105, 0.01925, 0.042, 0.0735, 0.1155,
0.15575");
values ( \
"0.080607, 0.150106, 0.205288, 0.347674, 0.544107, 0.805701,
1.056285", \
"0.092210, 0.161200, 0.216270, 0.358643, 0.555134, 0.816778,
1.067389", \
"0.112858, 0.182922, 0.237694, 0.379680, 0.576040, 0.837712,
1.088363", \
"0.111214, 0.184757, 0.239252, 0.380505, 0.576823, 0.838233,
1.088781", \
"0.090919, 0.168979, 0.224332, 0.366194, 0.561995, 0.823386,
1.073944", \
"0.056146, 0.138642, 0.195301, 0.338845, 0.535911, 0.797161,
1.047540", \
"0.008458, 0.095244, 0.153515, 0.298830, 0.498188, 0.760983,
1.011433");
}
rise_transition(delay_template_7x7) {
index_1 ("0.03, 0.1, 0.4, 0.9, 1.5, 2.2, 3");
index_2 ("0.000175, 0.0105, 0.01925, 0.042, 0.0735, 0.1155,
0.15575");
values ( \
"0.042321, 0.151954, 0.250093, 0.507235, 0.863538, 1.338583,
1.793845", \
"0.042829, 0.152011, 0.250100, 0.507260, 0.863535, 1.338584,
1.793845", \
"0.048219, 0.154139, 0.251460, 0.507370, 0.863538, 1.338584,
1.793840", \
"0.057045, 0.159433, 0.253617, 0.508984, 0.864706, 1.338869,
1.793844", \
"0.065497, 0.168310, 0.260115, 0.512225, 0.865917, 1.340145,
1.794842", \
"0.074833, 0.178598, 0.268261, 0.520047, 0.870877, 1.341815,
1.795897", \
"0.084218, 0.189854, 0.277514, 0.529231, 0.881000, 1.348090,
1.798778");
}
cell_fall(delay_template_7x7) {
index_1 ("0.03, 0.1, 0.4, 0.9, 1.5, 2.2, 3");
index_2 ("0.000175, 0.0105, 0.01925, 0.042, 0.0735, 0.1155,
0.15575");
values ( \
"0.087344, 0.134763, 0.166237, 0.241997, 0.344630, 0.481154,
0.611946", \
"0.105535, 0.152875, 0.184365, 0.260149, 0.362789, 0.499316,
0.630109", \
"0.178071, 0.228516, 0.260849, 0.336985, 0.439534, 0.575983,
0.706742", \
"0.268932, 0.324313, 0.358480, 0.436243, 0.539164, 0.675576,
0.806192", \
"0.363057, 0.423664, 0.460117, 0.540220, 0.643491, 0.779892,
0.910664", \
"0.462961, 0.528881, 0.567910, 0.651651, 0.756655, 0.893396,
1.024021", \
"0.569940, 0.640736, 0.682483, 0.770481, 0.878383, 1.016849,
1.147930");
}
fall_transition(delay_template_7x7) {
index_1 ("0.03, 0.1, 0.4, 0.9, 1.5, 2.2, 3");
index_2 ("0.000175, 0.0105, 0.01925, 0.042, 0.0735, 0.1155,
0.15575");
values ( \
"0.033109, 0.088035, 0.131503, 0.250086, 0.420233, 0.649117,
0.868716", \
"0.033668, 0.088061, 0.131613, 0.250088, 0.420232, 0.649120,
0.868715", \
"0.041242, 0.093877, 0.135425, 0.251087, 0.420372, 0.649123,
0.868719", \
"0.051760, 0.104890, 0.144704, 0.256058, 0.422661, 0.649901,
0.868827", \
"0.063366, 0.117463, 0.156189, 0.262657, 0.425283, 0.651777,
0.870387", \
"0.074639, 0.131292, 0.170108, 0.273798, 0.431797, 0.654301,
0.871924", \
"0.086110, 0.145777, 0.185386, 0.288006, 0.443365, 0.661865,
0.876196");
}
}
I will be very appreciating if you can help me in this information.
Sincerely yours,
Ali Arabi
>Dear Friends
>How can we calculate Delay of each cell, in Artisan .LIB file?
>we haven・t any formula to calculate delay from lookup table timing
>of cell.
You need to look at the definition of delay_template_7x7. It's
probably a two dimensional table with input indeces of input net
transition & total output capacitance. The indeces are rowxcolumn like
a regular matrix and they define breakpoints in the lookup table. You
find your two indeces between which your values lie (ie two indeces in
input net transition between which your input transition value is etc)
then I think you do linear interpolation to find your own value
although this is not very clear from the liberty documentation.