lib用于描述物理单元的时序和功耗信息的重要库文件,包含物理单元库的基本属性和每个单元的具体时序信息。
物理单元库的基本属性:单元库名称、文件版本、产生日期及PVT环境等;定义电压、电流、电容、时间等基本单元;定义电路传输时间和信号转换时间的电压百分比。
每个单元的具体时序信息:包含单元的延迟时间、泄漏功耗,内部功耗等。包括每个单元的Timing、Power、Area、Direction、function、Noise、Pin capacitance、DRV(max trans/max capacitance)等。
technology LEF:包含布局布线规则和晶圆厂的工艺信息。
Cell LEF:用于定义标准单元、模块单元、IO单元和各种特殊单元的物理信息。包括cell size、site、pin layer/direction/location/type、pg layer 等。
lib文件描述的单元信息与物理库的单元一一对应。
摆放standard cell,place_opt_design,需要在满足时序要求的同时,尽量减小面积和功耗,实现时序优化,面积优化,功耗优化。
输入命令“place_opt_design”,工具会自动将std cell摆放进die box空余位置。Place_opt_design其实是两个command合在一起。 虽然写入的只有一句命令,但是实际工具在做的时候,是集成了placedesign和optdesign以实现更快的运行时间和更好的PPA。
只是单纯把std cell 摆进了die box里,并没有摆到相关的逻辑旁边,会有overlap,方向错误等问题。
把global place里面非合法的std cell,做opt之前,要先做refine place、Legalize placement,合法化。
再去做opt优化。
检查DC出来的网表的timing情况,为后边的timing opt提供优化方向。如果DC出来的时序很差,PR也很难做好。
面积优化时,如果X4和X2的单元同样可以驱动目标单元,则会优先使用X2驱动单元以减小面积。
DRV包括:transition、max?fanout、noise、max capacitance。工具会在不影响timing的情况下进行Drv的优化。值得一提的是做STA时,先修DRC,再去修setup,再做recovery,修hold,这时的DRC称为DRV。
area可以修的不是那么好,transition也可以相对比较大,但是timing一定要好。其他地方可以trade off,但是timing一定要好。
对于设计中部分区域的congestion比较大的问题,工具会将绕不通的几条线往其他的区域绕,从而优化congestion。
VT swap:LVT低阈值,漏电流较大,但是延迟较小;SVT标准阈值居于两者中间;HVT高阈值,漏电流小,但是延迟大。在关键路径上最好用LVT的库,考虑到降低功耗,最好用HVT的库。
Down size:在保证timing的情况下,大驱动换小驱动,较少功耗损失。