Script Set to Plugin - Unit 4: Buffering

 

Buffer和Inverter是我们的信号还原单元,信号的传输会衰减,而Buffer和Inverter的功能就是在信号还能被识别的时候进行重新整形,放大,继而继续传播。相应地付出的成本就是时间。如果真有适合IC用的超导体的话,那么Buffer和Inverter也就退出历史舞台了。...

  ↑ 点击 “IC物理设计” 关注,欢迎转发到朋友圈。
我们的努力需要你的肯定。


Buffer和Inverter是我们的信号还原单元,信号的传输会衰减,而Buffer和Inverter的功能就是在信号还能被识别的时候进行重新整形,放大,继而继续传播。相应地付出的成本就是时间。如果真有适合IC用的超导体的话,那么Buffer和Inverter也就退出历史舞台了。
和我们的课题联系起来,Buffering和写Script有什么联系呢?这里要讲一个观点,脚本的作用是让我们的事情做得更准确(前提是脚本是正确的),更快速,质量更高。比如你是一个P&R工程师,你当然希望拿到的数据是高质量的,同样怎么保证你的数据hand over也是高质量的呢?让你的脚本和你的思维挂上钩。

今天的Buffering就是一个好的P&R的其中一项标准,Block Owner的Design输入输出如果没有buffering,而你又不关注Interface的Timing,那么带来的问题就是一旦放到Block的上一级,Interface Timing就比较难看,关键是给人的印象就是这个东西做得马马虎虎,或许你花了九牛二虎之力close了core timing。

IO Buffering
Input Buffering,挑一个比较小的buffer,那么对于block的上一层来说,你的每一个输入的load都不是很大,可以比较准确地估计你的Input是怎样的情况。Output Buffering,挑一个中等的buffer,这样你的output在上一级就可以drive比较远的距离和相对较大的cell,避免在IO出产生congestion。

同时做IO Buffering的时候,还可以顺便把Clock Port梳理出来,Port的数目Print出来。Pin超过一定数目是需要和Top沟通,Floorplan的摆放很讲究,或者可以考虑不同边出pin。

Macro Buffering
Memory或者某些hard macro,如果那个macro的input pin的load比较小,都是差不多的值,out的drive能力也不错,你是不是对这个macro的印象比较好呢。当然保险起见,还是需要在macro的input output处加上buffer,macro不加buffer的用意有时也是可以理解的,比如需要靠上一层来对interface的pin做buffering,更加准确,可以减少logic level。当然现在都有ILM model,如果有冗余的buffer还是可以被看到的,利用脚本或者直接工具做优化。

Special Buffering
某些特殊的cell,比如double height,或者clock cell,需要特别在意它的驱动能力,这个时候库里可能提供了一些cap比较大的cell,面积大,驱动能力也强。

Script

方法一:在IO或者Macro的Pin位置直接插入buffer,然后靠place engine来自动优化,此处你必须对IO约束有个合理的设置,clock需要额外做。

方法二:插入IO或者Macro的Pin位置处的buffer,利用局部place命令做好,或者自己写脚本放也行,然后再place的时候设置成fixed属性。
抛砖引玉
无论哪一套flow,只要被广泛应用,就有它的道理和值得学习的地方。如果你用过好几套flow,多观察小细节,想想为什么,有什么好处等等,这样你才能站在巨人的肩膀上写出超越巨人的flow以及methodology。

部分配图来自网络,如有不妥请联系,提供版权证明立即更正。

IC物理设计

微信号:ic_pdi



长按识别二维码关注我们


    关注 IC物理设计


微信扫一扫关注公众号

0 个评论

要回复文章请先登录注册