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

关于.lib库中的问题

时间:10-02 整理:3721RD 点击:
最近在学习.lib库,发现有的.lib库中的所有cell的输出pin均无max_capacitance的约束,且也没有默认的default_max_capacitance的限制,这表示什么意思?是指该cell有无限的驱动能力么?如果是这样的话,那么在综合以及PR时序优化时,那么该库中的路径如何去优化?它的fanout是靠什么来限制,是通过外部输入的max_fanout约束脚本来实现吗?如果是通过该fanout来实现的话,那么可能在某些cell的输出端的Net上会出现负载超过该cell查找表中的最大负载索引值的边界。那么这时应用到路径中的该cell delay的值将是一个不准确的数值,请问这种情况下,应怎么处理?能否不修改froundry提供的.lib,而在时序优化时进行一个处理,比如说只要在设计中使用到了该cell,那么我们希望能通过搜索其在.lib查找表中该cell load索引值的最大值,并以一个稍微小于该最大值的一个电容值来作为该cell输出端的max_capacitance的约束?不知道这种方法可行不?如果是的话,那么该程序应该怎么进行?
还有一个问题也是关于.lib中的问题,对于一个复杂的逻辑门如与或非门Z=(!(A B)| C),发现从C到Z的timing Arc共有下列四种情况,pin(Z)(1)related_pin : C ;when A=1'b0,B=1'b0;(2) related_pin : C ;when A=1'b0,B=1'b1;(3) related_pin : C ; when A=1'b1,B=1'b0;(4)related_pin : C ; timing_type : combinational;前面三种情况无timing_type的描述,看手册中说,当timing_type无定义时,默认为combinational,它们应是在不同的输入组合情况下C到Z的timing Arc的定义,关键是这里的第4种timing arc,当这种情况时,是否已包含前面的三种情况呢?不知道大家有没有注意到自己使用的.lib中是否有这种情况?
希望大家能一起讨论这两个问题?谢谢!

首先可以说这样的lib做得不够完整
1)可以在使用时,加上set_max_capacitance
2)不包含

请问陈小编?
对于第一个问题:添加这个set_max_capacitance不太好找一个参考值的吧?因为lib库中的每个cell的负载的索引值不一样?比如驱动能力为1的cell的load索引值的最大值为0.013pf,驱动能力为2的cell的load索引值的最大值为0.05pf,驱动能力为3的cell的load索引值的最大值为0.1pf,驱动能力为4的cell的load索引值的最大值为0.2pf,驱动能力为5的cell的load索引值最大值为0.4pf,驱动能力为6的cell的Load索引值最大值为0.8pf,驱动能力为8的cell的load索引值最大值为1.2pf。请问在这些库cell的情况下,这个set_max_capacitance应该怎么设置?设置太小的值,那么基本上限制了驱动大的cell的使用,因为虽然这些驱动能力大的cel能驱动很多cell,但是由于有该max_capacitance的限制,使得它不能接很多负载。如果该值设置太大的话,那么使用较小驱动能力的cell计算出来的数值将会一个不准确的数值?
对于第二个问题:如果情况4的时序不包含前面三种的话,那么情况四的时序是在A和B怎样的情况下的时序呢?

1) 是有你说的问题,max_cap本身对实际的负载的限制也是非常有限的,经常有超出的
2)你要结合lib里面的具体写法去查library compiler里面的详细说明,比如在某项缺省时是如何计算的
最后重复一点,你那个lib文件很不规范,除非是老师拿来耍你们玩的。在工程上没有这么烂的写法

你可以看看delay和tran的table的input transition的范围,可以用一个set_max_transition来约束整个design的max transition,这样应该也可以基本上限制不出现超出table index的情况

不错,谢谢

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

网站地图

Top