微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 微电子和IC设计 > IC后端设计交流 > lib库的问题

lib库的问题

时间:10-02 整理:3721RD 点击:
在一般的lib文件中每个单元下都有一个索引值即index_1(.....),index_2(.....),而这个库中没有,库信息如下,如果给出连线负载电容为1.6pf,转换时间为3.58ns,那么在这个库中对于下面所示单元L612NQ应该怎样查到它的单元传播延时,我做完布局布线后报告保持时间的时序信息,几乎所有的延时都为0(如下图所示),导致保持时间根本无法修复,请问是什么原因,会不会是这个库的信息不完整?谢谢,急求回答,我现在所用的库中lib文件中内容如下

lu_table_template(Table1) {


variable_1 : total_output_net_capacitance ;


index_1("1.0, 2.0") ;


}


lu_table_template(Table2) {


variable_1 : total_output_net_capacitance ;


variable_2 : input_net_transition ;


index_1("0.010000, 0.100000, 0.300000, 0.500000, 1.000000") ;


index_2("0.010000, 1.000000, 3.000000, 5.000000") ;


}


lu_table_template(Table3) {


variable_1 : total_output_net_capacitance ;


variable_2 : input_net_transition ;


index_1("0.010000, 0.100000, 0.500000, 1.000000, 2.000000") ;


index_2("0.010000, 1.000000, 3.000000, 5.000000") ;


}


lu_table_template(Table4) {


variable_1 : total_output_net_capacitance ;


variable_2 : input_net_transition ;


index_1("0.010000, 0.100000, 0.500000, 1.500000, 4.000000") ;


index_2("0.010000, 1.000000, 3.000000, 5.000000") ;


}


lu_table_template(Table5) {


variable_1 : total_output_net_capacitance ;


variable_2 : input_net_transition ;


index_1("0.010000, 0.300000, 1.000000, 3.000000, 8.000000") ;


index_2("0.010000, 1.000000, 3.000000,5.000000") ;


}


lu_table_template(Table6) {


variable_1 : total_output_net_capacitance ;


variable_2 : input_net_transition ;


index_1("0.010000, 0.050000, 0.100000, 0.200000, 0.500000") ;


index_2("0.010000, 1.000000, 3.000000, 5.000000") ;


}


lu_table_template(Const1) {


variable_1 : constrained_pin_transition ;


variable_2 : related_pin_transition ;


index_1("0.010000, 1.000000, 3.000000, 5.000000") ;


index_2("0.010000, 1.000000, 3.000000, 5.000000") ;


}

...........


/* V1.0 L612NQ produced by synopsys */

/*
date : Tue Jan 16 11:52:10 JST1996
*/


cell(L612NQ) {


area : 316.2816;


ff(QN01, QBZ1
){


next_state : "H01" ;


clocked_on : "H02" ;


clear : "H03" ;


}


pin(N01) {


direction : output ;


function : "QN01" ;


max_capacitance : 0.228991 ;


timing() {


related_pin : "H02" ;


timing_type : rising_edge ;


cell_rise(Table2) {


values(\


"0.527071, 0.659148,0.751193, 0.785045",\


"0.783656, 0.915962,1.007917, 1.041308",\


"1.343339, 1.475892,1.567883, 1.601686",\


"1.902271, 2.034784,2.128148, 2.161550",\


"3.302488, 3.435398, 3.529699,3.562897"\


);


}


rise_transition(Table1) {


values("8.066196, 16.056603") ;


}


确实不合理,你对照lib的manual确认下

这个cell的delay不是已经说明套用table 2 表格模板了吗?
cell_rise(Table2) {
values(\
然后上面也给出了table2的index信息了:
lu_table_template(Table2) {

variable_1 : total_output_net_capacitance ;

variable_2 : input_net_transition ;

index_1("0.010000, 0.100000, 0.300000, 0.500000, 1.000000") ;

index_2("0.010000, 1.000000, 3.000000, 5.000000") ;

}

但是一般的库单元是在每个单元定义时有index信息,如会在上面的cell(L612NQ)定义时存在(红色字体),而我根据它这样说的到table2中搜索,查出的在电容值为0.16pf,转换时间为3.58ns时,该单元的上升延时应该为1.008~1.60中的一个值,不可能会是0啊,而从时序报告中来看单元延时都是为0的,这让我很费解,如果是这样,我的保持时间违例根本没办法修复,请求回答,谢谢
cell(L612NQ) {


area : 316.2816;


ff(QN01, QBZ1
){


next_state : "H01" ;


clocked_on : "H02" ;


clear : "H03" ;


}


pin(N01) {


direction : output ;


function : "QN01" ;


max_capacitance : 0.228991 ;


timing() {


related_pin : "H02" ;


timing_type : rising_edge ;


cell_rise(Table2) {

index_1 ("........");

index_2 ("........");
values(\


"0.527071, 0.659148,0.751193, 0.785045",\


"0.783656, 0.915962,1.007917, 1.041308",\


"1.343339, 1.475892,1.567883, 1.601686",\


"1.902271, 2.034784,2.128148, 2.161550",\


"3.302488, 3.435398, 3.529699,3.562897"\


);


}

那能不能手动修改一下lib文件,把这个cell的两个index加进去,再报一下timing,看看这个cell的delay是不是还是0 ?

是不是你的单位不对,你看看lib中capacitive_load_unit大小是pf 还是nf。

看看capacitive_load_unit 单位是不是nf,还有,还有是不是你只定义了cell_rise,而实际中却是fall?没有对应的表。

capacitance_load_unit的单位是pf,没有问题,lib里面有fall_rise的内容,只是我没有粘贴上来,我把报告时序的精度设高一点,还是有值,只是很小为0.00xxxns或0.000xxxns,按照库中说的不应该这么小的,lib里的值至少都是0.xxxns

不会是时间单位不一样吧,看看其他库和这个库和ICC report_units命令的时间单位。



还有lib中slew_derate_from_library的值

应该是你的运行脚本不对,导致软件调用hspice时出错,所以lut中的值全是0建议仔细查看修改脚本

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top