一般我们会忽略min_capacitance的违例,特别是在综合阶段,对其的了解也停留在 布局布线之后自动消失的幻想中。但常常也会心虚。毕竟经常在报告中是扎眼的存在
产生原因
大多数的min_capacitance的违例的产生是由于库中的bad characterization (差的标注量)造成的,如果库中的min_cap非常低,那么你会看到许多这样的违例;
而违例的产生又与设计中 buffer 和inverters插入的数量过多有关系,提高了整个设计的门数。
工具通过 input slew 和output capa去计算delay, 当工具计算的值远低于 cap table中的第一个值时,它需要通过插值来获得更精确的值,对于极大值或者极小值做这种插值或者外推会导致工具的极端估计,这在计算延迟时非常容易出错,工具计算的结果本质上是悲观的,默认情况下,计算的delay会远远超过实际情况的值。所以这里有足够的uncertainty去弥补这个错误,通常被称为 extrapolation inaccuracy
像是 最坏的min_cap 为0.02 如果delay 为400ps 有50%的inaccurate
400*50%=200ps 所以如果你的uncertainty 大于200ps 就可以忽略这个违例。
解决办法
- 与library team沟通 是否有better characterrization的库,如果有的话,你就可以简单的使用set_min_cap,将优化的值导入,然后让工具去做优化。如果没有,那就是个问题了。