Calculate Delay from .Lib file

A

Ali Arabi

Guest
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.

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
 
On 28 Aug 2006 16:46:18 -0700, "Ali Arabi" <ali.arabi@gmail.com>
wrote:

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.
 
在 2006年8月28日星期一UTC-4下午7时46分18秒,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.

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

Are you resolved this problem?
 

Welcome to EDABoard.com

Sponsor

Back
Top