芯片物理设计实战Synopsys ICC Floorplan与电源规划全流程解析在芯片物理设计领域Floorplan布局规划和电源规划是决定芯片性能、功耗和面积的关键环节。作为初学者面对Synopsys ICC这样功能强大的工具如何快速掌握其核心操作流程本文将以ORCA设计为例手把手带你完成从Floorplan初始化到电源网络综合的完整实战过程。1. 实验环境准备与设计导入1.1 初始设置与设计加载首先需要确保工作目录结构正确所有必要文件已就位。ORCA设计案例的文件组织通常如下lab2_dp/ ├── orca_lib.mw/ ├── design_data/ │ ├── ORCA_2.v │ ├── ORCA_2.sdc ├── scripts/ │ ├── pad_cell_cons.tcl │ ├── insert_pad_filler.tcl │ ├── connect_pg.tcl │ ├── macro_place_cons.tcl启动ICC GUI并加载设计cd lab2_dp icc_shell -gui在ICC中打开已设置好的初始单元open_mw_lib orca_lib.mw open_mw_cel orca_setup1.2 设计可视化与初步检查加载完成后Layout窗口会显示蓝绿色矩形宏单元和IO pad紫色小矩形标准单元所有单元初始堆叠在原点(0,0)应用基础时序和优化控制脚本source scripts/opt_ctrl.tcl切换到Design Planning任务模式File → Task → Design Planning2. Floorplan初始化与Pad单元处理2.1 创建基础结构单元综合后的网表通常不包含物理单元需要先创建source -echo scripts/pad_cell_cons.tcl该脚本主要完成创建corner cell和PG cell定义所有pad cell的位置建立VDD_TEST等特殊pad cell关键点使用[Tab]键自动补全命令可减少输入错误2.2 初始化Floorplan参数通过GUI菜单初始化FloorplanFloorplan → Initialize Floorplan推荐参数设置核心利用率0.880%核到边界距离30各边执行后按[F]键查看整体布局此时核心区域清晰可见外围pad初步排列宏单元仍处于未放置状态2.3 Pad filler插入与电源连接插入pad filler的注意事项优先使用大尺寸filler cell保持最小必要数量确保工艺要求的连续性执行脚本自动处理source scripts/insert_pad_filler.tcl source -echo scripts/connect_pg.tcl建立pad ring完整结构create_pad_rings保存当前状态save_mw_cel -as floorplan_init3. 宏单元手动布局策略3.1 关键宏单元识别与飞线分析通过飞线分析(flyline)识别与IO pad直接连接的宏选择所有宏单元启用Selected to IO飞线显示降低亮度至50%以下便于观察本案例中三个关键PLL宏I_CLOCK_GEN/I_PLL_PCII_CLOCK_GEN/I_PLL_SDI_CLOCK_GEN/I_CLKMUL3.2 手动布局操作技巧以I_PLL_PCI为例的操作流程选择目标宏使用移动工具拖至核心区左上角对齐操作Align Objects to LeftAlign Objects to Top锁定位置set_dont_touch_placement [get_cells I_PLL_PCI]对其他PLL宏的优化处理I_PLL_SD旋转180°减少线长I_CLKMULY轴镜像翻转保持宏间距10umset_fp_macro_options -macro_pair {I_CLKMUL I_PLL_SD} -min_distance 103.3 宏布局约束应用执行预设的宏布局约束脚本source -echo scripts/preplace_macros.tcl该脚本主要实现宏组聚类优化合法方向约束虚拟IPO设置4. 虚拟平面布局(VF)实施与分析4.1 VF策略配置与执行检查默认VF策略report_fp_placement_strategy调整sliver size防止窄通道问题set_fp_placement_strategy -sliver_size 10执行时序驱动的VF布局create_fp_placement -timing_driven -no_hierarchy_gravity4.2 拥塞分析与问题处理查看全局布线拥塞图report_congestion -grc_based -by_layer -routing_stage global常见错误PSYN-348处理未固定宏导致的警告可忽略如需消除可提前固定所有宏应用宏布局约束增强VF效果source -echo scripts/macro_place_cons.tcl source -echo scripts/keepout.tcl二次VF布局后差异对比宏位置明显优化类似宏自动分组手动固定宏保持原位4.3 最终布局固定锁定所有宏位置set_dont_touch_placement [all_macro_cells]保存状态save_mw_cel -as floorplan_placed5. 电源网络规划与实现5.1 宏组PG Ring创建执行预设脚本自动生成宏组电源环source ./scripts/macro_pg_rings.tcl脚本核心功能定义宏组区域设置环层/宽度/偏移参数自动创建金属布线与straps注意PLL宏需单独处理将由PNS完成5.2 电源网络综合(PNS)实施PNS自动生成策略基于目标IR drop自动计算优化strap数量/宽度动态调整核ring宽度执行PNS脚本source scripts/pns.tcl关键步骤分解设置PNS参数层、目标IR等生成电源方案预览分析电压降热图提交最终方案commit_fp_rail5.3 电源网络完善与验证完成电源网络连接preroute_instances preroute_standard_cells -fill_empty_rows -remove_floating_pieces电源网络分析(PNA)输入电源参数1.32V350mW分析IR drop分布验证最终电压降满足要求保存状态save_mw_cel -as floorplan_pns6. 时序验证与设计完善6.1 电源网络对布局的影响处理设置pnet选项防止单元置于strap下set_pnet_options -complete METAL4 METAL5重新运行VF布局create_fp_placement -timing_driven -no_hierarchy_gravity6.2 全局布线与时序分析执行全局布线route_zrt_global生成时序报告report_timing关键检查点所有路径slack应为正值建立时间满足要求无显著拥塞问题6.3 设计优化与最终交付时序违规修复optimize_fp_timing -fix_design_rule输出DEF文件供后续使用write_def -version 5.6 -placed design_data/ORCA.def保存最终设计save_mw_cel -as floorplan_complete