在我们做完floorplan和powerlan后,我们要让工具进行place cell的工作。那么我们在利用工具做place时,数字后端实现工程师应该注意哪些事项?在得出place的结果后,如何调节floorplan?如何引导工具去实现一个相对”完美“的结果呢?在下面笔记中,我们即将一一解密出来。
在数字后端布局布线APR中,placement阶段处于floorplan和CTS之间,工具在进行Placement阶段可以详细的划分为4步分别是,
coarse placement(粗略的摆放) ,AHFS(解一些高fanout DRC), loglic optimization(根据timing结果进行placemen 的优化) ,placement legalization(对cell进行legalization)。
在我们进行floorplan的摆放的时候一般都会根据数据之间的相互的联系进行摆放,但是在floorplan的阶段我们能分析出来的联系关系则是比较有限,所以我们大部分的时间则是用在了调节floorplan上,今天则会分享几个调节fp的小技巧。
1 ,我们要学会去查看其分组和hierachy结构,点击下图箭头后,选择里面的hierachy,之后工具会按照默认的分组将memory和cell进行高亮显示。
2 ,根据软件自带的一个小工具进行trace我们的memory和stand cell的位置分布是否合理。我们知道我们memory一般都会和一些cell有直接的loglic关系,如果两者之间的分布距离较远的话,则势必会引起一些timing问题,所以我们在调节的时候首先要去知道是否有此类的现象发生。在ICC2中,如下图:
点击里面的trace register,然后我们用鼠标依次去选中memory即可看到,该功能可以将和被选中memory有关系的cell直接高亮出来,这样就可以很轻松的帮助我们分析。看下图
,可以看到我们选中的mem以及和他们有关的cell,是不是非常的轻松,
3 ,看到这里想必你已经明白了,我们的目的就是想尽办法把有关联的memory和cell的相对位置抓出来,如果发现其memory和对应的cell位置过远,则说明我们的floorplan还需要调整。但是前面的两种办法比较死板,并且如果有一组cell和和好几组memory都有关联,则用工具则不太好抓,所以我们需要学会灵活的使用2个cmd去操作。
如果我们想抓从一个memory的输出Pin 联系的cell需要使用:
其中from 后面跟的是我们想抓的memory或者cell的full_name.然后我们选中这些有关的cell去GUI 里面看即可:
如下,我随便抓了四个memory,以及他们相关的cell:发现他们确实距离比较远。
所以这个时候我们就需要去思考,为什么这一堆cell没有放到这几个memory附近呢? 是没有空间了? 显然不是的,所以大概率是这一组cell和上面或者其他的memory也有关系,所以被牵扯到了中间的这个不上不下的位置,所以说,我们如果能把和这组cell相关的memory都抓出阿出来摆放到一起,那么他们的物理位置自然就会紧挨着分布了,这样我们的timing也自然会变好了。但是我们怎么知道这组cell和那些memory有关talk呢?自然还是使用上面的命令啊,下面看我操作:首先我们先看一下,刚才抓出来的cell,名字都很相似
所以,我就可以直接把这组cell的名字不同的地方用*代替:
也就是:u_ca53_noram/u_ca53ifu/u_ca53ifu_pf/cbuf_if3_reg*
所以我们把到这组cell的逻辑都抓出来:
结果如下图:
结果显而易见,和这组cell相关的memory竟然有14个,并且一组上面一组下面。所以把他们放一起就OK。
所以我们在抓几组看看,得出下图,所以我们根据下图把红色的memory放一起,黄色的放一起就可以了:
第二:如何阅读 timing_report and hight _timing_path