插入buffer后,摆放该buffer的注意事项
假设我们需要在某个cell的cp端之前需要插入一个buffer(INSERT_BUFFER */CP CKBD4BWP35)。那么,我们应该怎样摆放这个buffer才不至于产生很多新的short?
因为我在尝试这个工作的时候发现,如果在较多cell的cp端之前插入buffer,然后将该buffer摆放在靠近cp端不远处的cell density较小的地方,便会产生很多新的short violation。
请有经验的高手不吝赐教哈,小弟在此先谢谢各位了!
short ? 不会吧。没遇到过这种问题。一般CK buffer就是贴着CP端放就好了
假设我在某cell的cp端之前插入一个buffer,那么这个buffer也有可能会对其后面的lanch path产生影响,不利于setup.那么该怎样在插入buffer之前就知道该buffer会不会影响到以这个cell为startpoint的lanch path呢?用哪个命令能报出相关timing的信息呢?还有什么参数。
因为我用的是report_timing -from -to ,设置好-from为在其之前插入buffer的cell,-to没有设置参数。报表中的startpoint 和endpoint居然是同一个cell。这种情况是不是说明,该cell后面没有以其为startpoint的相应的endpoint?
有些事情我不是很明白。假如insert_buffer后,该buffer与其它原有cell 在位置上重复了,能不能直接手动把它移到旁边一个空余的位置?这样做合法吗?有什么坏处吗?谢谢!
干嘛要插cp 前面?
插在CP前面是为了delay时钟
你的几个问题我一起回答吧。(1)如果新插的buffer和其他单元位置重复了,假如新插入的buffer很多,有几十几百个,那么我建议你用命令legalize_placement,直接一步搞定,如果是只有几个,那么你可以手动挪一下位置就好了,没有任何坏处及影响。
(2)你在一个寄存器的CP端插buffer,目的是为了把时钟推后,对于前一级的setup来说肯定是好事,但是对于后一级的setup来说就是坏事了,这个你也理解。那么要怎么插这个buffer比较合适呢?当你想在一个寄存器的CP端插buffer的时候,最好是用report_timing -from reg/Q 来报一下这个寄存器到下一个寄存器之间的setup ,看看最差的slack是多少,有没有余量,如果你报出来的timing是 正的很多,那么没问题,你直接在这个寄存器的CP端插buffer好了,至于插多少,看你的需要。如果slack是负的或者正的不多,那么你就不能在这里插了,因为插了之后,后一级的setup肯定会出现新的违反路径。
噢噢