3. Floorplan基础与Die/Core规划
Floorplan(布局规划)是物理实现流程中第一个真正“定型”的环节。综合后的网表只是一堆逻辑连接,而Floorplan要回答的是:芯片有多大、核心区放在哪里、IO单元怎么排、宏单元(Macro)摆在什么位置。这些决策一旦确定,后续Place、CTS、Route都只能在这个框架内腾挪,返工代价极高。本节围绕Die与Core尺寸确定、IO摆放、利用率与长宽比权衡、宏单元初步规划四个核心问题展开。
Die与Core尺寸的确定
Die尺寸由Core区域加上四周的IO环、电源环和密封环(Seal Ring)共同决定。Core区域是标准单元可摆放的区域,其面积估算的基本依据是标准单元总面积除以目标利用率:
Core面积 ≈ 标准单元总面积 / 目标利用率
示例:标准单元总面积 = 1.2 mm²,目标利用率 = 0.70
Core面积 ≈ 1.71 mm²
若取正方形,Core边长 ≈ √1.71 ≈ 1.31 mm
得到Core尺寸后,加上IO环宽度(通常每边20~60 μm,取决于IO单元高度和电源环数量),即可得到Die尺寸。例如Core边长1.31 mm,每边加40 μm,Die边长约1.39 mm。实际项目中还要考虑封装约束、划片道(Scribe Line)宽度和Pad位置,这些会进一步修正Die尺寸。
在Innovus中,常用命令是:
floorPlan -r 1.0 0.70 40 40 40 40
# -r 指定Core长宽比和利用率,后四个参数为四边IO到Core的间距
其中第一个参数是Core长宽比(Aspect Ratio),第二个是利用率,后面四个是左、下、右、上四边的边距。执行后Innovus会自动计算并生成Die与Core的边界。
IO摆放的基本规则
IO单元沿Die四周排列,其摆放顺序直接影响内部布线难度和信号完整性。基本原则是:
- 按信号流向分组:同一功能模块的输入输出IO尽量相邻,减少跨芯片走线。
- 电源IO均匀分布:VDD/VSS IO应沿各边均匀放置,避免局部IR Drop过大。
- 高速信号远离敏感信号:时钟、差分对等高速IO要与模拟或低噪信号保持距离。
- Corner区域留空或放电源:四个角通常不放置信号IO,可放电源或填充单元。
IO摆放完成后,需要用checkPinAssignment或类似命令检查IO与内部逻辑的连接是否合理,避免出现IO在芯片一侧、而它驱动的模块在另一侧的情况。
利用率与长宽比的权衡
利用率(Utilization)是标准单元总面积占Core面积的比例。利用率越高,芯片面积越小、成本越低,但布线拥塞风险越大。经验上:
| 利用率范围 | 适用场景 | 风险 |
|---|---|---|
| 0.60~0.70 | 宏单元多、布线复杂的设计 | 面积偏大,但布线余量充足 |
| 0.70~0.80 | 常规数字设计 | 需关注局部拥塞 |
| 0.80~0.85 | 面积敏感、逻辑规整的设计 | 布线拥塞和DRC风险显著上升 |
长宽比(Aspect Ratio)是Core宽度与高度的比值。长宽比接近1(正方形)时,布线资源分布最均匀;长宽比偏离1时,长边方向的布线通道更长,可能造成延迟增加。但某些设计受封装或Die形状限制,必须采用非正方形Core。此时应尽量让长宽比控制在0.5~2.0之间,并优先保证关键路径的走向与长边方向一致。
宏单元的初步规划
宏单元(SRAM、IP核、模拟模块等)通常面积大、端口多,必须在Floorplan阶段就确定大致位置。规划要点包括:
- 靠边或靠角放置:宏单元尽量贴Core边界,把中间区域留给标准单元,形成规整的布线通道。
- 端口朝向合理:宏单元的信号端口应朝向与其连接的标准单元区域,避免端口背对布线区。
- 预留通道:宏单元之间、宏单元与Core边界之间要留出足够通道(通常10~20 μm),供电源线和信号线穿过。
- 电源规划同步:宏单元的电源引脚位置决定了电源环和电源条的走向,需与Power Plan同步考虑。
在Innovus中,宏单元初步摆放后可用place_opt前的floorplan视图检查宏单元与标准单元区域的相对关系。一个实用的检查方法是观察宏单元周围的通道是否被标准单元完全填满——如果通道过窄,后续布线会非常困难。
上图展示了一个典型Floorplan的俯视结构:最外层是Die边界,向内依次是IO环和Core区域。四个宏单元(两个SRAM、两个模拟IP)分别靠边放置,中间留出标准单元区域,宏单元与标准单元区之间预留了布线通道。Die宽高和Core宽高分别标注,便于对照长宽比和边距参数。
实操检查要点
完成初步Floorplan后,建议按以下顺序检查:
- 用
report_area确认Core面积与利用率是否符合预期。 - 检查IO单元是否与内部逻辑连接方向一致,避免长距离绕线。
- 观察宏单元周围通道宽度是否足够,通常不小于10 μm。
- 确认电源环和电源条的位置与宏单元电源引脚对齐。
- 运行一次快速Place(
place_opt -fast或类似),查看拥塞图,判断利用率和长宽比是否需要调整。
总结来说,Die与Core规划的核心是在面积、布线资源和时序之间找到平衡点。利用率决定面积余量,长宽比决定布线均匀性,IO摆放决定信号进出方向,宏单元位置决定内部通道结构。这四个因素相互制约,需要在Floorplan阶段反复迭代,才能为后续Place和Route打下稳定基础。