set_load进行负载约束后遇到的max_transition violation问题
将所有的output ports都进行20pF的负载约束.
编译完后,所有的output ports前都加入了buffter来
增加驱动负载的能力,但是这个时候引入了
max_transition的violation.工艺库默认的是4.5ns,但是
output ports的transition基本上都到了20ns,超过了库的
默认规则.遇到这种情况,怎么样处理才能使得output ports
的max_transiton降低到规则以内呢?
还望各位大侠指点~
查一下output ports前面的buffer的fanin number 然后看下这些buffer是不是不够大 或者to output的fanout太大
The load cap may be too large.
transition time 跟output load是没有关系的, 只是drive output的buffer 能力不够或者output 作为其中的fanout 数目很大 output load已经被设为20pf了
修正办法就是在output前面换大buffer 或者限制output前面driver的 max fanout
加了pad就能解决了啊, 你是pad的负载是20pf吧, pad本身的驱动能力强,
如果是模块不应该写那么大的load,0.3pf足够了
恩是直接对模块的输出端口做的约束,还没有连到PAD上去.谢谢ICFB大大的热心解答
多谢兄台的建议.按兄台你的说法,大的BUFFER的输出端可以改善其驱动大的load时候(这里假设是20PF)的transition time吗?
如果那个buffer的输出 是直接作为output 来drive pad的话 不行,transition是看前一级的器件的driving capability和fanout load的
.lib的lookup table 的原理是
output transition = f( input transition ,output load )
stage delay =f ( input transition , output load )
所以input transition和output load是决定该instance stage delay 和output slew的因素,
如果选大的buffer, 那么output slew会好, 本级delay也会减小,
output slew减小, 对于后面的delay传播 是有好处的, 因为slew都是一级一级传播的,
但是大的buffer会造成前级delay增加,因为本身的cap重,对上一级的所谓的output load会增加,
这个应该考虑的,
太好的帖子了,谢谢各位的分享