
1. 这不是算法课作业而是芯片物理设计里真正卡脖子的流程切分问题“Hierarchical Flow PartitionTop-down Bottom-up”——看到这个标题很多刚接触数字后端的人第一反应是这不就是教科书里讲的“自顶向下”和“自底向上”两种设计方法论吗翻两页PPT画个金字塔图再套个V模型好像就讲完了。但我在某家头部IC设计服务公司带团队做5nm以下先进工艺项目时连续三个月被同一个问题反复拖住流片节奏block-level的时序收敛结果在chip-level跑完顶层布线后突然恶化23ps且无法定位根因。最后发现问题既不在RTL代码也不在STA引擎而恰恰出在“Hierarchical Flow Partition”这个看似基础、实则精密的流程切分点上。它根本不是概念选择题而是一套需要在物理约束、工具链能力、团队协作模式三者之间反复博弈的工程决策系统。Top-down不是从SOC顶层往下拆Bottom-up也不是把IP核堆上去就完事——真正的难点在于在哪一层切开、以什么方式切、切完之后数据如何对齐、误差如何分配、谁为哪部分结果负责。关键词里反复出现的“chip planning”和“chip assembly”恰恰揭示了它的本质这不是EDA流程里的一个步骤而是芯片物理实现阶段的组织级架构决策。它决定了整个后端团队是并行作战还是串行等待决定了IP供应商交付物是否真正可用更决定了tape-out前最后一周是通宵debug还是从容签核。我见过太多项目因为partition策略拍脑袋决定导致floorplan反复返工、power mesh重铺三次、signoff报告来回迭代七版。今天这篇不讲理论定义只讲我们在28nm到3nm多个项目中踩出来的硬经验怎么切、为什么这么切、切错会怎样、以及如何用最朴素的方式验证你的partition是否真的成立。2. Top-down与Bottom-up不是二选一而是必须共存的双轨制执行框架很多人误以为Hierarchical Flow Partition是在Top-down和Bottom-up之间选一个。这是最大的认知陷阱。实际项目中二者从来不是非此即彼的关系而是像两条平行铁轨共同支撑整个芯片物理实现的列车运行。关键在于哪段流程走Top-down轨道哪段走Bottom-up轨道以及两条轨道在何处交汇、如何校准。我们以一个典型的AI加速器SoC为例12nm工艺含CPU子系统、NPU集群、高速NoC、多Bank LPDDR4 PHY。它的物理实现不可能全Top-down——如果从顶层floorplan开始等所有block完成placement顶层global routing才能启动那光是NPU cluster的timing closure就要耗掉6周整个项目直接延期。也不可能全Bottom-up——如果每个IP都独立signoff后直接拼装当PHY的IO cell placement与NoC的macro abutment margin冲突时没有全局视角根本无法协调。真实做法是将芯片划分为三个逻辑层级并为每层分配不同的主导范式顶层Chip-level强制Top-down主导主要任务是定义全局约束die size、core rail shape、power grid主干道走向、clock tree root位置、IO ring布局、thermal hot spot预留区。这些决策必须在任何block开始物理设计前锁定。我们曾因clock tree root位置未定导致两个block团队各自按不同skew目标优化最终顶层CTS时发现skew budget超限37%返工两周。中层Block-level如CPU Subsystem/NPU Cluster/NoCBottom-up主导 Top-down校验每个block在独立环境中完成placement、CTS、detail routing、physical verification。但关键约束如macro boundary、power domain interface、clock domain crossing pin位置必须由顶层提供明确spec并在block signoff前通过“Top-down Checkpoint”验证。这个checkpoint不是简单比对坐标而是运行轻量级global routing stub检查macro边缘cell是否与顶层power mesh预留区冲突。底层Macro/IP-levelBottom-up绝对主导IP供应商交付的GDSII或LEF/DEF必须自带完整的physical contextpower strap pattern、min/max metal width/spacing、antenna diode insertion规则、DRC/LVS clean report。我们要求所有第三方IP必须通过内部“IP Readiness Checklist”其中第7条就是“能否在无顶层floorplan信息下独立完成其内部power mesh density check”。做不到的IP一律退回整改。提示Top-down的“down”不是指命令下达而是指约束流Constraint Flow自上而下传递Bottom-up的“up”不是指成果上交而是指数据流Data Flow自下而上收敛。混淆这两者是绝大多数partition失败的根源。这种双轨制带来的直接好处是NPU cluster团队可以在顶层floorplan确定后第3天就启动placement而无需等待NoC的详细布局同时当NoC团队发现其crossbar macro的pin pitch与顶层clock tree预留空间不匹配时能立即触发顶层constraint revision流程而非等到chip-level routing阶段才发现。3. Partition Boundary的物理定义比网表切割更致命的是金属层与供电网络的割裂很多团队把Hierarchical Flow Partition简单理解为“按模块切网表”这是危险的简化。真正的partition boundary必须同时定义三个维度的物理割裂面逻辑边界、金属层边界、供电网络边界。缺一不可且三者必须严格对齐。我们曾在一个28nm IoT MCU项目中栽过跟头。当时按功能模块将芯片划分为四个blockCPU Core、Peripheral Bus、Analog Front-end、RF Transceiver。网表切割干净LEF/DEF交付顺利各block signoff也通过。但在chip-level DRC runset中发现大量“Power Rail Short to Signal Metal”错误集中在Peripheral Bus与Analog Front-end的接壤区域。排查三天后发现Analog团队在block内使用了metal5作为power rail而Digital团队默认metal4为power rail两者在boundary处未做metal5-to-metal4 transition layer规划导致顶层router在连接两个block power domain时将metal5 rail直接连到metal4 signal net上造成短路。这就是典型的“金属层边界未定义”导致的灾难。正确的partition boundary定义必须包含维度定义内容工具载体验证方式逻辑边界module instance hierarchy cut point, port mapping (including clock/reset/power pins)TCL script for netlist partition, .sva assertion filehierarchical LEC equivalence check金属层边界minimum metal layer for inter-block connection, reserved metal layers for boundary stitching, via stack rules across boundarycustom LEF with boundary layer definition, techfile overrideboundary-aware DRC check on merged GDS供电网络边界power domain split location, rail width/spacing at boundary, decap placement rule at interface, IR drop tolerance across boundaryUPF 3.0 power intent file, custom power mesh templateEM/IR analysis on boundary region only特别强调供电网络边界。在先进工艺下power mesh不再是均匀网格而是按block的电流密度动态调整strap width。如果partition时未明确定义“boundary power strap”顶层工具会按默认规则填充极易造成在high-current block如GPU与low-current block如UART交界处strap width突变引发局部IR drop spikedecoupling capacitor placement在boundary两侧不连续形成EMI辐射热点。我们的解决方案是在partition spec文档中强制要求每个block提交“Boundary Power Profile”包含boundary edge lengthμmmax current density at edgemA/μmrecommended strap width spacing at edgeμmmin decap density within 10μm of edgefF/μm²这个profile由block team的power integrity工程师签字确认作为顶层power mesh生成的输入约束。实践证明该做法将chip-level IR drop signoff iteration从平均5.2次降至1.7次。4. 数据对齐Hierarchical Flow中最隐蔽却最致命的误差放大器Partition完成后各block产出的数据LEF/DEF、SPEF、Liberty如何与顶层环境对齐这是Hierarchical Flow的“最后一公里”也是误差放大的温床。我们曾测算过一个block的timing delay误差若为±0.5ps在chip-level经3级hierarchy叠加后可能放大为±3.2ps——这已超过先进工艺下setup slack的典型margin2.8ps。问题核心在于不同层级使用的RC extraction model、crosstalk noise model、cell delay model存在系统性偏差且这些偏差在partition边界处非线性叠加。以SPEF文件为例。Block-level SPEF通常基于block内部routing density提取而chip-level SPEF需考虑block间global routing的长线耦合。若直接将block SPEF merge进top SPEF会严重低估inter-block net的capacitance。我们在一个16nm项目中实测一个从NPU输出到NoC的critical path在block-level STA中slack为1.2psmerge后top-level STA显示slack为-0.9ps误差达2.1ps。根本解法不是追求“完美模型”而是建立分层误差补偿机制4.1 RC Extraction Model AlignmentBlock-level extraction必须使用与top-level相同的tool version及same-layer coupling option如StarRC的-coupling_mode 2强制block team提交“Extraction Context Report”包含• metal layer stack used (e.g., M1-M9)• dielectric constant setting (k-value per layer)• coupling capacitance threshold (e.g., 0.01fF)• ground plane assumption (floating vs. fixed)顶层extractor读取该report自动apply same settings when extracting inter-block nets4.2 Timing Library Calibration所有block必须使用同一版本的Liberty library且禁用block-specific timing arc optimization如remove_clock_gating_check关键路径上的cell必须在block-level和top-level使用完全相同的library cornere.g., ff_0.8v_125c我们开发了一个Python脚本lib_check.py自动比对block liberty与top liberty的以下字段# 检查项示例 assert lib[default_operating_condition] top_lib[default_operating_condition] assert abs(lib[cell][INVX1][pin][Y][timing][rise_transition][value][0] - top_lib[cell][INVX1][pin][Y][timing][rise_transition][value][0]) 0.0054.3 Boundary Delay Compensation对所有跨boundary net强制添加“boundary delay annotation”set_propagated_clock [get_ports npu_to_noc_clk]set_timing_derate -cell_delay 1.05 -net_delay 1.08 [get_nets npu2noc_data*]derate factor由历史项目统计得出Process NodeAvg. Boundary Net Delay OverheadRecommended Derate28nm12%1.1216nm18%1.187nm24%1.24注意derate不是万能药它只是对齐的第一步。真正的对齐必须在物理实现阶段闭环——我们要求所有critical boundary net在chip-level physical verification后必须回溯到block-level重新run STA with updated SPEF确认timing delta 0.1ps。只有通过该闭环该boundary net才被视为“timing-aligned”。这套机制实施后我们项目中block-to-top timing correlation error从平均±1.8ps降至±0.3pssignoff iteration减少60%。5. Chip Assembly的实战陷阱当“拼装”变成“外科手术”Chip Assembly常被误解为简单的GDSII合并。实际上它是Hierarchical Flow Partition的终极压力测试。当所有block GDSII交付后assembly过程暴露出的每一个问题都是partition阶段埋下的隐患。我们总结出Chip Assembly的四大高频陷阱每个都对应partition阶段的具体失误5.1 Macro Abutment Margin Violation源于partition时未定义物理间隙规则现象两个相邻macro的edge-to-edge distance min required (e.g., 5μm)导致DRC error根因partition spec中只定义了macro bounding box未规定abutment margin即macro放置时必须预留的物理间隙解法在partition spec中强制要求• 所有macro必须标注ABUTMENT_MARGIN属性单位μm• 该margin值由thermal分析与EM仿真联合确定high-power macro margin low-power macro• assembly tool自动check margin compliance违规则报error而非warning5.2 Power Domain Crossing Leakage源于供电网络边界未做隔离规划现象不同power domain的rail在boundary处short或leakage current超标根因partition时未定义power domain isolation structure如well tap, guard ring, level shifter placement zone解法在boundary region强制插入isolation template• width 2 × (max well depth in adjacent domains)• contains: nwell/pwell tap cells, decap array, level shifter macro slots• 该template由top-level PDK提供block team不得修改5.3 Clock Domain Crossing (CDC) Metastability源于时钟域接口未做物理协同现象CDC path在chip-level STA中出现unconstrained或metastability failure rate超标根因partition时只传递clock domain name未定义CDC interface的physical implementation rule如synchronizer cell placement location, clock gating control pin routing constraint解法为每个CDC interface定义“CDC Physical Spec”• synchronizer cell must be placed within 50μm of boundary• clock gating control net must be routed on metal2 only• no other high-speed nets allowed in 10μm radius around synchronizer5.4 Thermal Hot Spot Aggregation源于partition时忽略热耦合效应现象多个high-power block在chip-level thermal map中形成120°C hotspot根因partition时仅按功能切分未进行thermal-aware grouping如将two NPU clusters放在die opposite sides解法引入Thermal Partitioning Matrix| Block | Avg. Power Density (mW/μm²) | Max Temp Rise (°C) | Thermal Coupling Factor to Adjacent Blocks | |--------------|------------------------------|---------------------|---------------------------------------------| | NPU_Cluster1 | 12.4 | 42.1 | 0.35 (to NoC), 0.12 (to CPU) | | NPU_Cluster2 | 11.8 | 40.7 | 0.33 (to NoC), 0.08 (to CPU) | | NoC | 3.2 | 18.5 | 0.41 (to both NPU) |根据该矩阵自动推荐block placement relative position确保high-power blocks间thermal coupling factor 0.2。这些陷阱的共同教训是Chip Assembly不是partition的终点而是partition质量的审判庭。每一次assembly failure都在提醒我们partition spec必须包含足够细粒度的物理约束而非停留在功能层面。6. 验证你的Partition是否成立三道不可绕过的硬性门槛如何判断你设计的Hierarchical Flow Partition是否真正可行不能靠会议表决也不能靠领导签字必须通过三道可量化的技术门槛。这是我们团队内部执行的“Partition Readiness Gate”任何项目未通过全部三关不得进入物理设计阶段。6.1 Boundary Consistency Check逻辑、物理、供电三域对齐验证执行方式运行自研脚本boundary_align_check.tcl检查项所有boundary port在netlist、LEF、power intent file中name/type/bit-width完全一致boundary macro edge coordinates match within ±0.001μm across all block GDSIIboundary power rail width/spacing matches top-level power mesh spec通过标准0 error, ≤2 warningwarning需PM签字豁免实测数据未通过此关的项目87%在chip-level DRC阶段出现boundary-related error6.2 Hierarchical Timing Correlation跨层级时序一致性验证执行方式在block-level run STA with full SPEF将block SPEF merge into top-level SPEF在top-level run STA on same critical paths计算path delay difference通过标准• avg. |Δdelay| 0.2ps• max |Δdelay| 0.5ps• 95% of paths have |Δdelay| 0.3ps关键技巧必须使用same clock tree synthesis result for both levels —— 我们强制要求block-level CTS使用top-level clock tree root location as anchor point6.3 Assembly Stress Test模拟真实assembly场景的压力测试执行方式生成fake top-level GDSII with only IO ring and power gridPlace all block GDSII with random 10μm jitter on x/y coordinateRun full DRC/LVS/ERC on merged layoutMeasure:• DRC error count per block boundary• LVS netlist mismatch count• ERC antenna violation count通过标准• total DRC errors 5 (all fixable by minor block adjustment)• LVS mismatches 0• antenna violations 0为什么有效随机jitter暴露了partition spec中隐含的rigidity缺陷——真正健壮的partition必须容忍微小的placement误差。这三道门槛不是形式主义。它们背后是血泪教训一个未通过Boundary Consistency Check的partition在assembly阶段平均消耗17人日debug而通过Assembly Stress Test的partitionassembly一次成功率从41%提升至92%。记住partition的价值不在于设计得有多美而在于它能否让assembly过程像流水线一样稳定输出。7. 我的个人体会Partition的本质是风险前置而非流程简化写到这里我想分享一个贯穿我十年后端生涯的认知转变Hierarchical Flow Partition的根本目的从来不是为了“简化流程”而是为了“前置风险”。早期我总想把partition做得“尽可能干净”——每个block边界整齐port数量最少dependency链条最短。结果呢项目前期顺风顺水到了chip-level routing阶段各种意想不到的耦合问题集中爆发power mesh density mismatch、thermal gradient-induced timing shift、crosstalk noise from unexpected inter-block net routing。那些被刻意“简化”掉的复杂性并没有消失只是被推迟到最昂贵的阶段才显现。后来我才明白好的partition恰恰要主动拥抱复杂性。比如我们会在partition spec中故意增加“冗余boundary port”即使某个clock domain在当前block内不使用也预留其clock pin位置即使某个power domain current density很低也按high-density spec设计boundary power strap即使两个block间data path bandwidth需求不高也按peak bandwidth预留metal layer这些“冗余”不是浪费而是为未来可能的变更留出缓冲带。当项目中期客户要求增加一个debug interface时当工艺厂反馈某层metal reliability不足时当thermal仿真显示hotspot超出预期时——那些看似多余的冗余成了我们快速响应的底气。所以如果你正在设计自己的Hierarchical Flow Partition请先问自己三个问题这个partition方案能把多少风险暴露在block-level阶段成本最低当顶层约束变更时如die size缩小5%有多少block需要重做这个数量是否在可控范围内如果某个block delivery delay 2周整个项目timeline会推迟多久这个延迟是否可接受答案比任何漂亮的流程图都重要。Partition不是画一张静态的架构图而是构建一个动态的风险管理框架。它要求你像下棋一样预判三步之后的走势然后在第一步就布好应对的棋子。这很难但值得——因为芯片流片没有重来的机会而好的partition就是你唯一能提前拿到的“保险单”。