4. Macro与IO摆放实战
在完成floorplan的die与core边界定义之后,真正决定布线可行性与时序收敛难度的,是宏单元(Macro,如SRAM、IP硬核、模拟模块)与IO单元的位置决策。这一节把Macro摆放与IO摆放放在一起讲,是因为二者共享同一套约束体系:通道宽度、引脚可达性、电源网络贯通性,以及顶层信号进出芯片的路径。摆放阶段的一个错误决策,往往要到详细布线或signoff阶段才暴露,届时返工代价极高。
一、Macro通道规划:先算通道,再放宏
Macro摆放的核心不是“把宏塞进去”,而是为宏与宏之间、宏与core逻辑之间预留足够的布线通道。通道宽度由三部分决定:宏引脚到通道的逃逸布线(pin escape)、通道内水平与垂直走线的轨道数、以及电源条带占用的宽度。一个可用的估算方法是:先统计相邻两个宏之间需要穿越的信号数量N,按每层金属可用轨道密度折算所需层数与宽度,再叠加电源条带宽度与DRC间距。
以某28nm工艺、6层金属的示例为例(以下参数为教学假设值):相邻两个SRAM之间预计穿越约400根信号线,M3/M4用于水平走线,单层每微米约可容纳8条轨道,则400根信号需要约50μm的等效宽度;若使用两层则约25μm,再叠加两条各2μm的电源条带与间距,通道净宽建议不小于32μm。若实际只留20μm,布线阶段必然出现严重overflow。因此摆放前应先用estimate类命令或手工表格估算通道需求,而不是凭经验“留一点空隙”。
通道规划还需注意宏的朝向与引脚边。宏的引脚通常集中在某一条或两条边上,应让引脚边朝向core逻辑密集区,避免引脚背对逻辑导致长距离绕行。多个宏并排时,尽量让引脚边相对,形成共享通道,减少通道总数。
二、引脚对齐:让数据流走直线
引脚对齐的目标是让宏之间的数据通路尽量短且直。具体做法是:把有直接数据交互的宏的引脚边相对放置,并让相关引脚在垂直方向上尽量对齐。例如SRAM_A的输出引脚与SRAM_B的输入引脚若在Y方向对齐,则连线可以走一条短的水平线,而不需要绕到通道上下两端再折回。
实际操作中,Innovus提供place_opt前的宏摆放命令,如placeInstance配合-fixed或-placed,以及createRow后的手工调整。更高效的方式是先用floorplan的GUI拖拽确定大致位置,再用脚本固定坐标。引脚对齐的检查可以借助checkPinAlignment类脚本或直接观察飞线(flyline)的交叉程度:若飞线大量交叉,说明引脚朝向或对齐关系不合理。
一个常见的错误是把所有宏的引脚都朝向core中心,看似“对称”,实则导致相邻宏之间的引脚背对背,数据必须绕行整个宏高度。正确的做法是:以数据流方向为准,让上游宏的输出边与下游宏的输入边相对。
三、电源规划预考虑:摆放阶段就要想清楚IR drop
Macro的电源规划不能等到power plan阶段才考虑。摆放时就要确定:宏的电源引脚在哪个金属层、电源条带如何穿过宏之间的通道、宏内部是否已有电源环(power ring)。如果宏的电源引脚在M5,而通道内只预留了M3/M4的走线空间,电源条带就无法接入。
预考虑的关键动作包括:
- 确认每个宏的电源引脚层与方向,记录在宏的LEF中;
- 在通道规划时,为电源条带预留独立的宽度,不与信号走线混算;
- 若宏内部已有电源环,顶层电源条带应与其对齐,避免错位导致via无法放置;
- 对高功耗宏(如大容量SRAM),评估其供电电流,必要时在宏附近增加去耦电容或加宽电源条带。
示例:某SRAM工作电流约120mA,电源网络目标IR drop不超过5% VDD(1.0V下即50mV)。若电源条带电阻按每微米0.05Ω估算,则单条2μm宽条带在120mA下压降约3mV,看似足够,但实际还要考虑via电阻与网络分支。因此摆放阶段应尽量让高功耗宏靠近电源pad或电源环,缩短供电路径。
四、IO buffer与pad ring布局
IO摆放与Macro摆放的逻辑不同:IO单元必须沿die边界排列,形成pad ring。pad ring的布局要考虑信号进出方向、电源pad与信号pad的交替、以及IO buffer到core逻辑的距离。
信号pad应尽量靠近其驱动的core逻辑或接收的宏。例如DDR接口的pad应靠近DDR控制器宏,避免长距离穿越整个core。电源pad应均匀分布在pad ring上,使电源网络从多个方向馈入,降低IR drop。对于高速信号,还需考虑pad到core的走线阻抗与长度匹配。
pad ring布局的常见约束包括:pad间距(pitch)由工艺决定,通常为50~80μm;corner pad用于连接相邻边的电源环;IO buffer的驱动能力需与负载匹配。在Innovus中,IO摆放通常通过placeIOPins或读取IO约束文件完成,摆放后需检查pad ring的连续性,避免出现缺口导致电源环断裂。
- 宏之间通道宽度是否≥估算值(信号+电源+间距);
- 有数据交互的宏引脚边是否相对;
- 宏电源引脚层是否与电源条带层一致;
- 高功耗宏是否靠近电源pad或电源环;
- 信号pad是否靠近对应功能模块;
- 电源pad是否均匀分布;
- pad ring是否连续无缺口。
摆放完成后,建议用飞线图(flyline)和通道利用率图快速判断:飞线交叉严重说明引脚对齐或宏朝向有问题;通道区域出现密集飞线说明通道宽度不足。这两个视图是摆放阶段最直接的反馈,应在进入power plan之前完成检查与修正。