三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

保姆级教程:用Synopsys ICC搞定芯片floorplan里的宏放置与电源规划(含LAB2实战避坑)

保姆级教程:用Synopsys ICC搞定芯片floorplan里的宏放置与电源规划(含LAB2实战避坑)

芯片物理设计实战:Synopsys ICC宏放置与电源规划深度解析

在芯片物理设计流程中,floorplan阶段的质量直接影响着后续布局布线、时序收敛和功耗表现。作为设计实现的第一步,合理的宏单元放置和稳健的电源网络规划往往决定了整个项目的成败。本文将聚焦Synopsys ICC工具在这两个关键环节的应用技巧,结合LAB2典型场景,为初学者揭示从理论到实践的完整知识链路。

1. 物理设计规划基础认知

芯片物理设计始于floorplan阶段,这一过程需要平衡面积、时序、功耗和信号完整性等多重约束。不同于数字逻辑设计的抽象层级,物理设计工程师必须处理金属层堆叠、单元摆放、电源网络拓扑等具体问题。

核心概念解析:

  • 宏单元(Macro):指设计中具有固定形状和功能的硬核模块,如存储器(ROM/RAM)、模拟IP(如PLL)等。其特点包括:

    • 不可改变的形状和引脚位置
    • 特定的电源需求
    • 对周围区域的布线限制
  • 电源网络综合(PNS):自动化生成满足IR Drop目标的电源网格结构,包括:

    • 电源环(PG Ring)
    • 电源条带(PG Strap)
    • 单元供电轨(PG Rail)

典型设计流程中,宏放置优先于电源规划,因为宏的位置决定了电源网络的拓扑结构。

2. 宏放置策略与实战技巧

2.1 宏单元分类与预处理

在LAB2场景中,宏单元可分为三类:

  1. 时钟相关宏:如PLL,需要靠近对应IO pad
  2. 存储类宏:如SRAM,通常需要阵列化摆放
  3. 接口类宏:如PHY,需考虑信号流向

预处理关键步骤:

# 查看宏单元属性 report_macro -all > macro_report.txt # 建立宏单元分组 group_macros -name CLOCK_GROUP -macros {I_PLL_PCI I_PLL_SD I_CLKMUL}

2.2 手动放置与约束设置

时钟宏的放置需要特别关注:

  1. 使用GUI选择工具定位目标宏
  2. 通过移动工具调整位置,保持与IO pad最短连线
  3. 应用对齐命令确保边缘整齐:
    align_objects -to core -side left I_PLL_PCI align_objects -to core -side top I_PLL_PCI
  4. 锁定已放置宏防止意外移动:
    set_dont_touch_placement [get_cells I_PLL_PCI]

注意:手动放置后务必检查flyline连接情况,确保物理位置与逻辑连接一致

2.3 虚拟平面布局(VF)优化

当设计包含数百个宏时,手动放置效率低下,此时应采用约束驱动的自动布局:

# 设置布局策略参数 set_fp_placement_strategy \ -sliver_size 10 \ -macros_on_edge true \ -auto_grouping high # 执行时序驱动布局 create_fp_placement -timing_driven -no_hierarchy_gravity

常见问题处理:

  • PSYN-348警告:表明存在未固定的宏,解决方案:
    set_dont_touch_placement [all_macro_cells]
  • 拥塞热点:通过GRC分析图识别,调整宏间距或添加keepout

3. 电源网络深度优化

3.1 宏组电源环构建

在PNS前为宏组创建局部电源环可显著改善IR Drop:

create_fp_placement_block_ring \ -nets {VDD VSS} \ -width {5 5} \ -layer {METAL5 METAL5} \ -offset {2 2} \ -macros {MACRO_GROUP_1}

参数选择原则:

参数项典型值影响因素
宽度3-10um电流需求
层数顶层金属电阻特性
偏移1-3um布线通道

3.2 电源网络综合实战

PNS自动化流程包含三个关键阶段:

  1. 参数配置:

    set_fp_rail_constraints \ -set_global \ -no_routing_over_hard_macros \ -synthesize_power_plan \ -power_budget 350
  2. 方案生成:

    synthesize_fp_rail \ -nets {VDD VSS} \ -voltage_supply 1.32 \ -pad_masters {pvdi pvoi}
  3. 结果分析:

    analyze_fp_rail \ -power_budget 350 \ -voltage_drop_target 5% \ -output_dir ./pna_report

经验表明,初次PNS后通常需要2-3次迭代调整才能达到理想IR Drop目标

3.3 电源网络验证要点

完成PNS后必须检查:

  • 宏单元电源引脚连接状态
  • 标准单元供电轨连续性
  • 金属层利用率平衡
# 连接所有PG引脚 preroute_instances # 创建标准单元电源轨 preroute_standard_cells \ -fill_empty_rows \ -remove_floating_pieces

关键指标:VDD/VSS的IR Drop应小于供电电压的5%,热点区域不超过10%

4. 设计收敛与输出

4.1 时序验证方法

电源规划会影响单元延迟,必须重新验证时序:

route_zrt_global report_timing -delay max -nworst 10

典型问题处理流程:

  1. 识别违规路径
  2. 调整单元位置或电源网络
  3. 运行增量优化:
    optimize_fp_timing -fix_design_rule

4.2 设计数据输出

完成floorplan后需要输出两种关键数据:

  1. DEF文件:保存物理布局信息
    write_def -version 5.8 -no_net \ ./output/orca_floorplan.def
  2. 脚本归档:记录所有修改命令
    write_script -format tcl \ ./scripts/final_floorplan.tcl

在项目实践中发现,良好的floorplan可使后续布局布线阶段节省30%-50%的迭代时间。特别是在处理高速设计时,初期对时钟宏和电源网络的精心规划,往往能避免后期难以修复的时序和信号完整性问题。

← 返回列表