返回文章列表
物理设计floorplanICC2TCL

芯片物理设计:Floorplan 实战指南

2024-06-2012 min

概述

Floorplan 是数字后端设计中最关键的步骤之一,它决定了芯片的物理布局,直接影响后续的时序、功耗和面积(PPA)指标。

环境准备

首先加载必要的工艺库和设计文件:

# 加载工艺库
set_var LP_LIBRARY_FILE ./lib/tech_libraries.lp
set_var MW_REFERENCE_LIBRARY_FILE ./lib/std_cells.ref

# 打开设计数据库
open_db ./db/chip_design.db

# 设置 Floorplan 模式
set_fp_mode -reset
set_fp_mode -auto_type conversion

IO 规划

IO 单元的摆放需要考虑以下因素:

  • 信号完整性:高速接口靠近芯片边缘
  • 电源完整性:电源/地 IO 均匀分布
  • 布局对称性:对于对称设计,IO 应对称摆放
# 定义芯片尺寸 (单位:微米)
initialize_floorplan \
  -width 800 \
  -height 800 \
  -start_coords {0 0} \
  -site core_site

# 摆放 IO PAD
place_ioPads -random

宏单元摆放

宏单元(Macro)的摆放策略:

  1. 数据分析路径:将关联紧密的宏放在一起
  2. 时序优化:关键路径的模块靠近 I/O
  3. 电源规划:大电流模块靠近电源引脚
# 获取设计中的宏单元
set macros [get_cells -hier -filter "is_hierarchical == false && ref_name =~ *mem*"]

# 按照层次分组摆放
foreach_in_collection macro $macros {
  set loc [get_location $macro]
  place_cell -legalize $macro $loc
}

电源网络设计

电源网络是 Floorplan 的核心部分,需要提前规划:

# 创建电源网络
create_power_strap \
  -layer METAL5 \
  -width 2.0 \
  -spacing 10.0 \
  -offset 5.0

# 添加电源环
add_power_ring \
  -layer_top METAL6 \
  -layer_bottom METAL6 \
  -layer_left METAL5 \
  -layer_right METAL5 \
  -width 3.0 \
  -spacing 1.0

常用脚本模板

以下是一个完整的 Floorplan 脚本模板:

#!/usr/bin/tclsh

proc run_floorplan { args } {
  set options {
    {chip_width "800"}
    {chip_height "800"}
    {core_margin "10"}
  }

  array set params [concat $options $args]

  puts "Starting Floorplan with dimensions: $params(chip_width) x $params(chip_height)"

  initialize_floorplan \
    -width $params(chip_width) \
    -height $params(chip_height) \
    -start_coords {0 0}

  place_ioPads -random
  place_macros -auto
  create_power_network

  puts "Floorplan completed successfully"
}

run_floorplan -chip_width 1000 -chip_height 1000

常见问题

1. 宏单元无法摆放

如果遇到宏单元摆放失败,检查:

  • 是否有设计规则冲突
  • 宏单元与 IO PAD 的间距是否足够
  • 电源网络是否完整

2. 电源网络阻抗过高

优化方法:

  • 增加电源网络宽度
  • 减小电源网络间距
  • 添加更多的电源 VIA

总结

Floorplan 是一个迭代的过程,需要根据后续分析的反馈不断调整。建议:

  • 先做粗略规划,再精细化
  • 保留足够的绕线资源
  • 及时进行 DRC 检查

参考资料

  • ICC2 User Guide
  • 工艺库文档