|
发表于 2009-11-5 09:31:44
|
显示全部楼层
1# daisyniu
小弟最近在搞库的设计,就小卖弄一番。
支持数字设计从前到后的库文件有四个,(由于各个软件可能有所差距,但基本都是这个流程)
1 支持数字代码仿真的(RTL ,GETALEVEL) 仿真库 只流出逻辑功能。是VERILOG格式的文件。
2 支持综合河绕线的特征库,也就是你说的。.LIB文件还有它的另一种格式db。 包库单元的timing power
举个最简单的例子 inverter (是小弟自己仿的,没有版权问题哈哈,格式打的有点乱,但没什么答错)
cell (INVX1) {
cell_footprint : "inv";
area : 36.000000;
cell_leakage_power : 6.883686e+01;
driver_waveform_rise : "preDrv";
driver_waveform_fall : "preDrv";
leakage_power () {
when : "A";
value : "60.524918";
}
leakage_power () {
when : "!A";
value : "68.836860";
}
pin (A) {
direction : "input";
fall_capacitance : 0.007333;
capacitance : 0.007786;
rise_capacitance : 0.008239;
related_power_pin : "VDD";
related_ground_pin : "VSS";
}
pin (Y) {
direction : "output";
function : "(!A)";
max_capacitance : 0.510000;
related_power_pin : "VDD";
related_ground_pin : "VSS";
internal_power () {
related_pin : "A";
rise_power ("power_outputs_1") {
index_1("0.05, 0.1, 0.3, 0.8, 1.3, 1.9, 2.6");
index_2("0.0006, 0.03, 0.06, 0.15, 0.27, 0.39, 0.51");
values("0.254319, 0.695850, 1.152080, 2.512420, 4.294844, 6.094335, 7.896585", \
"0.289450, 0.710463, 1.153869, 2.503155, 4.302557, 6.099658, 7.891133", \
"0.437754, 0.819135, 1.236313, 2.546785, 4.327767, 6.133937, 7.898646", \
"0.837157, 1.180914, 1.559811, 2.792441, 4.516422, 6.269635, 8.044737", \
"1.248170, 1.557446, 1.930525, 3.118238, 4.758248, 6.517784, 8.234349", \
"1.743280, 2.024085, 2.373404, 3.511365, 5.152186, 6.805071, 8.539038", \
"2.327271, 2.591932, 2.913556, 4.026608, 5.591567, 7.233989, 8.929239");
}
fall_power ("power_outputs_1") {
index_1("0.05, 0.1, 0.3, 0.8, 1.3, 1.9, 2.6");
index_2("0.0006, 0.03, 0.06, 0.15, 0.27, 0.39, 0.51");
values("-0.021296, -0.465502, -0.918542, -2.279565, -4.094547, -5.909395, -7.724514", \
"-0.000474, -0.455724, -0.912439, -2.276201, -4.092328, -5.908217, -7.723061", \
"0.124219, -0.378840, -0.852475, -2.239661, -4.068120, -5.889716, -7.708357", \
"0.478242, -0.095800, -0.613386, -2.067723, -3.938360, -5.787659, -7.622225", \
"0.848504, 0.231653, -0.322639, -1.835767, -3.756996, -5.632379, -7.485418", \
"1.289978, 0.642853, 0.059043, -1.524256, -3.493835, -5.397324, -7.285909", \
"1.811660, 1.136455, 0.528835, -1.121855, -3.146458, -5.092143, -7.002062");
}
}
timing () {
related_pin : "A";
timing_type : "combinational";
timing_sense : "negative_unate";
cell_rise ("del_1_7_7") {
index_1("0.05, 0.1, 0.3, 0.8, 1.3, 1.9, 2.6");
index_2("0.0006, 0.03, 0.06, 0.15, 0.27, 0.39, 0.51");
values("0.041655, 0.149068, 0.259106, 0.588057, 1.027194, 1.468615, 1.898271", \
"0.055050, 0.162089, 0.270380, 0.598754, 1.039356, 1.474996, 1.906438", \
"0.102817, 0.226885, 0.330080, 0.648825, 1.083088, 1.514482, 1.954191", \
"0.202343, 0.374218, 0.492854, 0.807739, 1.225901, 1.653876, 2.083392", \
"0.290028, 0.502749, 0.640916, 0.981749, 1.384694, 1.806762, 2.228624", \
"0.391202, 0.639209, 0.798825, 1.167432, 1.593610, 2.002591, 2.420398", \
"0.506121, 0.789499, 0.970355, 1.381008, 1.827925, 2.238070, 2.647038");
}
rise_transition ("del_1_7_7") {
index_1("0.05, 0.1, 0.3, 0.8, 1.3, 1.9, 2.6");
index_2("0.0006, 0.03, 0.06, 0.15, 0.27, 0.39, 0.51");
values("0.047021, 0.239973, 0.438896, 1.039798, 1.844292, 2.643735, 3.441225", \
"0.055844, 0.240605, 0.439361, 1.041302, 1.857212, 2.645319, 3.441486", \
"0.085223, 0.255069, 0.439881, 1.041496, 1.844818, 2.646372, 3.431012", \
"0.145142, 0.343906, 0.507713, 1.043236, 1.834608, 2.644172, 3.438481", \
"0.192471, 0.432941, 0.603081, 1.099123, 1.838810, 2.632967, 3.437682", \
"0.241912, 0.522857, 0.708094, 1.205986, 1.892293, 2.638102, 3.431937", \
"0.297992, 0.620705, 0.829197, 1.350876, 1.998727, 2.701299, 3.440202");
}
cell_fall ("del_1_7_7") {
index_1("0.05, 0.1, 0.3, 0.8, 1.3, 1.9, 2.6");
index_2("0.0006, 0.03, 0.06, 0.15, 0.27, 0.39, 0.51");
values("0.025535, 0.088298, 0.149744, 0.333347, 0.578671, 0.827603, 1.070358", \
"0.026285, 0.096613, 0.157268, 0.340454, 0.586848, 0.835001, 1.077033", \
"0.015404, 0.118380, 0.191115, 0.373674, 0.618450, 0.860113, 1.104428", \
"-0.031309, 0.117655, 0.221184, 0.456107, 0.706208, 0.946457, 1.187433", \
"-0.084908, 0.092863, 0.217301, 0.496610, 0.790525, 1.040290, 1.278535", \
"-0.153492, 0.051110, 0.193891, 0.515770, 0.849002, 1.132146, 1.389593", \
"-0.235375, -0.006119, 0.155007, 0.517431, 0.887198, 1.207372, 1.487569");
}
fall_transition ("del_1_7_7") {
index_1("0.05, 0.1, 0.3, 0.8, 1.3, 1.9, 2.6");
index_2("0.0006, 0.03, 0.06, 0.15, 0.27, 0.39, 0.51");
values("0.026391, 0.118601, 0.223242, 0.518587, 0.920661, 1.332443, 1.755931", \
"0.035080, 0.120530, 0.218497, 0.518991, 0.935947, 1.345306, 1.756794", \
"0.065459, 0.173604, 0.251847, 0.519612, 0.938812, 1.321431, 1.722147", \
"0.130288, 0.291369, 0.387792, 0.632052, 0.951191, 1.322414, 1.721280", \
"0.181670, 0.382960, 0.509092, 0.784371, 1.079924, 1.391854, 1.742341", \
"0.238376, 0.485579, 0.626648, 0.930713, 1.263549, 1.566592, 1.866306", \
"0.304986, 0.595136, 0.755951, 1.109439, 1.464282, 1.790993, 2.093136");
}
}
}
pg_pin (VDD) {
voltage_name : "VDD";
pg_type : "primary_power";
}
pg_pin (VSS) {
voltage_name : "VSS";
pg_type : "primary_ground";
}
}
让 我讲这个挺麻烦,要费很多唇舌,我把仿真是设置的模版给大家看下就明白个大概
* Generated by Liberty NCX vB-2008.12
cell_footprint : inv ;
area : 36.0000000 ;
cell_leakage_power : 17.7624700 ;
pin A {
direction : input ;
}
pin Y {
direction : output ;
function : (!A) ;
max_capacitance : 0.5100000 ;
ncx_internal_power_rise_input_transition_time_index : 0 ;
ncx_internal_power_fall_input_transition_time_index : 0 ;
ncx_internal_power_rise_total_output_net_capacitance_index : 0 ;
ncx_internal_power_fall_total_output_net_capacitance_index : 0 ;
ncx_rise_input_net_transition_index : 0 ;
ncx_fall_input_net_transition_index : 0 ;
ncx_rise_total_output_net_capacitance_index : 0 ;
ncx_fall_total_output_net_capacitance_index : 0 ;
}
pg_pin VDD {
voltage_name : VDD ;
pg_type : primary_power ;
}
pg_pin VSS {
voltage_name : VSS ;
pg_type : primary_ground ;
} |
|