1、添加Placement Blockage和Routing Blockage; 方法,点击对应按钮,然后按下F3打开选项界面,最后鼠标点击框选一块区域
- Placement Blockage(布局阻塞区)
- 指在版图中预先定义的禁止放置标准单元(standard cells)或宏单元(macro blocks)的区域。
- 保留未来ECO空间或特殊布线区域,防止与特殊电路(如I/O单元、RAM、硬核IP)、电源网络、时钟树或其他物理结构冲突
- 常用两种类型:
- Soft Blockage:只允许一些修复timing,opt design的cell放置
- Hard Blockage:完全不允许任何std cell放置或穿越
- Routing Blockage(布线阻塞区)
- 芯片版图中禁止或限制布线资源使用的区域
- 控制布线拥塞,优化布线路径,确保关键路径的时序性能。
2、在做完floorplan之后选择保存
- floorplan保存的信息,也就是macro摆放在core区域后的位置信息文件
- File >> save >> floorplan; 保存为
.fp
文件,下次使用可以重新加载。
3、芯片的powerplan
- 我们的目的是要把电供给标准单元。所以,整个powerplan的设计就是如何设计一套供电强壮的供电网络。
- 这个供电网络在物理实现是用金属层metal来搭建的,而metal本身有电阻存在,所以外界供电进来的电,经过供电网络的传输后会有一定的电压降。
所以,我们的目标就是确保外面供电达到每个标准单元的电压还是足够高的,这样才能确保标准单元的速度和正常工作。 - 一个强壮的powerplan的标准:
1)IR Drop符合设计spec(静态3-5%,动态小于14%)
2)EM满足foundary的signoff要求
3)供电电阻足够小
4、确定powerplan需要知道一下几个点:
- 功耗 2、电压; 然后根据 i = p/v算出模块电流,进一步算法左右两边分担的电流
- 然后根据工艺库参考资料,找到电流与宽度对应表,最后就可以基于上面的电流计算基于EM的总的power stripe金属宽度
- 接着需要根据模块的大小和power stripe的数量,计算每组power stripe之间的间距
5、如何给某个单独的关键macro添加power ring,并设置走向
- 鼠标选中对应macro,选择power ring选项,勾选selected block
- 设置走向; 这样power ring,就与core的power连接起来了
6、power stripe就是纵向的供电。
- 选择供电网络,Metal金属层,方向、宽度、Vdd和VSS的space、间距、以及开始的位置和结束的位置
7、添加power rail(也叫做 Followpin Routing)
- Route >> special route
一般在 Metal1 层上;
宽度较小,通常位于标准单元的顶部和底部(对应 VDD/VSS pin);
是芯片中最靠近单元的电源部分
- 且follow pin的电源线路已通过通孔via连接到总电源上
至此,powerplan结束;
也就是power共分为三个部分,core外面的power ring , 内部横向或纵向的power stripe, 内部的水平方向的power rail用于给std cell供电
打完power后,我们需要redhawk做前期ir drop分析 ,主要目的是分析当前的powerplan是否足够强壮。
8、dft设计和place后的scan chain查看
- 如果设计有dft设计,综合有写出scan chain的def文件,在place之前我们可以读入scan chain的def来进一步优化congestion。
- 输入
defIn
命令,插入scan_chain的def文件,其中def文件,已经定义好了scan 1和scan 2的分组, 如果没有def文件,也可以单独输入命令去定义。
界面如下:,查看某个scan chain的走向:
参考资料
- 吾爱ic社区
- innovus官方lab教程
代码与文字齐飞,逻辑共创意一色!若我的文章让你会心一笑,点个赞我们一起笑谈"代码人生"!