1. 项目概述从矩形到“挖洞”一种芯片物理设计的布局新思路在芯片物理设计的漫长周期里布局规划Floorplanning是决定一切后续工作成败的基石。我们这些做后端设计的老工程师几乎每天都在和矩形的模块打交道。从标准单元、存储器、模拟IP到大型的功能模块我们习惯性地将它们摆放成一个个方方正正的矩形块然后在这些块之间的“通道”里费尽心思地布线。这种矩形布局Rectilinear Floorplan之所以成为行业默认标准很大程度上是因为其实现的简便性——无论是模块内部的布局布线还是顶层模块的集成矩形都是最容易处理、工具支持最完善的形状。但方便往往意味着妥协。当设计规模达到数亿甚至数十亿门级采用层次化Hierarchical设计方法时这些坚硬的矩形边界就成了性能、时序和布线资源的无形枷锁。这篇文章源于十多年前EE Times上的一篇“有趣的想法”作者Sunit Bansal提出了一个看似简单却极具启发性的问题我们是否被矩形的思维定式束缚了如果允许模块的形状不再是简单的矩形而是可以包含“腔体”Cavity的复杂多边形甚至是不规则形状整个设计的质量QoR是否会得到显著提升这个想法直指层次化物理设计中的一个核心痛点顶层互联的瓶颈。今天我想结合自己多年的项目经验深入拆解这个“腔体布局”的概念探讨其背后的设计逻辑、潜在优势、实施挑战以及在实际项目中可能的应用场景。无论你是正在学习物理设计的学生还是在一线挣扎于时序收敛的工程师希望这个“老”想法能给你带来一些“新”的启发。2. 层次化设计的必然性与矩形布局的局限性2.1 为何我们必须走向层次化设计在深入探讨布局形状之前我们必须先理解为什么现代大规模SoC设计几乎无法避免层次化方法。这绝非设计师的个人偏好而是由一系列客观的工程现实所驱动。首先是内存与运行时的硬约束。一个扁平化Flat的十亿门级设计其数据库大小和工具运行所需的内存是惊人的。进行全局布局、时钟树综合、布线时EDA工具可能轻易耗尽数百GB甚至TB级别的内存导致运行崩溃或效率极低。将设计划分为多个子模块Block每个模块可以独立进行物理实现最后在顶层进行集成能有效将内存需求分解到可管理的规模。同时各个子模块的实现可以并行进行显著缩短项目周期。我曾参与过一个通信芯片项目将设计划分为8个子模块后模块级的实现时间从预估的四周缩短到一周半因为8个模块可以同时在8组服务器上运行。其次是项目管理和IP复用的需求。在全球化协作的今天不同模块可能由不同地点的团队负责开发。层次化设计为这种分布式开发提供了天然的接口。此外设计中常常包含已经冻结的内部IP或来自第三方的硬核IPHard IP。这些IP的内部网表和布局是固定的在顶层设计中它们就是一个带有固定形状和引脚位置的“黑盒”。层次化流程允许我们将这些IP作为独立的实体处理避免了在扁平化流程中对其内部进行不必要的、甚至是不可能的优化。最后是设计进度与风险控制。在典型的芯片开发中某些模块如新的数字信号处理单元可能比成熟模块如标准接口晚成熟。采用层次化方法我们可以先完成成熟模块和顶层结构的实现为晚到的模块预留出位置和接口。待其交付后再进行集成和最终的时序收敛这大大降低了项目进度风险。2.2 矩形布局带来的顶层互联困境当我们采用层次化设计并默认使用矩形模块时一个典型的SoC顶层布局看起来就像一幅由各种大小方块拼成的马赛克图。模块之间形成了纵横交错的布线通道。问题在于这些通道的宽度和走向是随机的由相邻模块的边界决定。最经典的困境体现在时钟树综合CTS上。时钟是芯片的脉搏其网络需要以极低的偏斜Skew和延迟Latency分布到所有时序单元。假设你的锁相环PLL由于模拟设计的要求必须放在芯片的左下角而系统级时钟门控单元SOG位于右上角。在矩形布局中如果PLL和SOG的连线上恰好挡着一个巨大的矩形模块比如一个视频处理引擎时钟树引擎将无法进行直线布线。它只能选择绕行。要么从模块上方走要么从下方走形成一个大大的“L”形或“U”形路径。这条被迫拉长的绕线路径会直接导致时钟延迟增加。为了补偿这个延迟时钟缓冲器Buffer的尺寸和数量不得不加大这又增加了功耗和面积。更糟糕的是时钟网络通常需要较宽的金属线来降低电阻这些宽线挤在原本就狭窄的模块间通道里极易与数据信号线产生布线拥塞。我曾遇到过一个案例为了给绕行的时钟线腾出空间旁边数据路径的布线层被迫降级导致线电阻增加最终成为时序违例的根源。另一个困境关乎关键时序路径。芯片中总有一些信号路径对延迟极其敏感例如从某个高速接口到中央处理单元的数据通路。在扁平化设计中工具可以自由地在整个区域内为这些关键路径寻找最优的布线资源。但在层次化设计中如果这条理想路径恰好穿过某个子模块的“领地”那就行不通了。信号必须从模块A的端口出来进入顶层再绕到模块B的端口。这额外的绕线延迟可能直接导致时序无法闭合。注意这里存在一个常见的误解认为层次化设计只是管理上的划分对性能影响不大。实际上物理边界的划分直接创造了电气上的“墙”信号穿越这堵墙必然带来额外的延迟和不确定性这是层次化方法固有的代价我们的目标是通过聪明的规划来最小化这个代价。3. “腔体布局”核心思想与优势解析3.1 什么是“腔体”“腔体”这个概念非常直观。想象一下你有一个矩形的模块但你不是把它做成一个实心的方块而是在它的内部“挖”出一个或多个凹进去的区域。这个凹进去的区域就是“腔体”。它仍然是模块物理边界的一部分但允许顶层互联的金属线从这个凹槽中穿过而不是只能从模块的外围绕行。从几何形状上看这意味著模块从简单的凸多边形矩形变成了复杂的凹多边形。作者在原文中还提到了其他非传统形状的可能性如L形、阶梯形、甚至环形甜甜圈形。这些形状的核心目的是一致的为顶层全局互联时钟、电源、关键信号创造更直接、更宽松的物理通道。3.2 腔体如何破解互联难题让我们回到那个经典的时钟布线问题。如果右下角的大模块BLOCK2在靠近PLL的一侧设计了一个内凹的腔体情况就完全不同了。原先被迫向上绕行的时钟路径现在可以几乎笔直地从PLL出发穿过BLOCK2的腔体抵达上方的模块区域。这条路径的长度可能只有绕行路径的一半甚至更短。带来的好处是立竿见影的时钟延迟大幅降低路径变短线电阻和电容减小延迟自然下降。时钟树功耗和面积减少不需要插入那么多、那么大的缓冲器来驱动长线节省了功耗和面积。布线拥塞缓解时钟线不再与模块间通道的其他信号线激烈竞争资源。它拥有了自己专属的“穿模块”通道。时序更易收敛更稳定、延迟更低的时钟网络意味着建立时间Setup Time和保持时间Hold Time的裕量更大时序闭合的难度降低。对于关键数据路径原理相同。如果模块A和模块B之间有一条高频宽总线需要互联而它们之间隔着模块C。在传统布局中这条总线必须绕行。但如果能在模块C的布局中预先在对应位置规划一个“通道式”的腔体这条总线就可以直线穿过其延迟和信号完整性将得到极大改善。3.3 超越时钟电源网络与热管理的视角腔体布局的优势不仅限于信号互联。在电源分布网络PDN设计中我们同样面临挑战。芯片需要从外围的电源焊盘向内部各个模块输送稳定、低噪声的电源。通常我们会构建一个全局的电源网格。如果内部大型模块是实心矩形电源电流必须从模块四周流入模块中心区域容易因IR压降而导致供电不足。如果模块设计有内部腔体并且巧妙地将这些腔体与电源网格的规划结合就可以为电源电流提供更多、更均匀的进入模块内部的路径有助于改善模块内部的电源完整性。当然这需要模块级和芯片级的电源规划紧密协同。从热管理的角度看密集的矩形模块排列可能阻碍芯片内部热量的散发。热点Hot Spot容易在大型模块中心产生。不规则的、带有腔体的布局实际上增加了模块与周围空间通常是散热较好的衬底或空腔的接触面积可能有利于热量的横向传导和散发。不过这需要详细的热仿真来验证因为形状改变也会影响材料的热阻分布。4. 实施腔体布局的挑战与设计考量想法很美好但将其付诸实践面临着一系列严峻的工程挑战。这不仅仅是画一个异形模块那么简单它涉及到设计方法学、工具链和团队协作的深刻变革。4.1 工具链的支持度这是最大的拦路虎。主流的商业EDA工具如Synopsys的Fusion Compiler, Cadence的Innovus其布局、布线、物理验证引擎在底层算法和数据结构上都高度优化了对矩形和直角多边形的处理。虽然它们都支持非矩形的布局障碍Blockage和区域约束但将一个子模块的物理边界本身定义为复杂的凹多边形并进行完整的端到端实现从模块内部布局布线到顶层集成验证在十年前几乎找不到成熟的流程支持。即使到今天情况有所改善但支持度依然不完整。你可能需要使用工具提供的“形状定义”功能来创建模块边界但后续的布局合法性检查比如确保所有标准单元都在边界内、电源网络生成、甚至是一些静态时序分析STA的建模都可能遇到意想不到的问题。工具对非矩形区域的绕线算法也可能效率较低或产生非最优的结果。实操心得在考虑使用异形布局前必须与EDA工具供应商的应用工程师深入沟通了解其工具链对复杂多边形布局的全流程支持情况并索要参考流程或成功案例。切勿在项目中期才发现关键步骤无法进行。4.2 模块级设计的复杂性剧增对模块设计团队而言一个异形边界带来了前所未有的挑战。布局规划模块内部的布局工具需要能够处理非矩形的布局区域。如何在这种形状内高效、均匀地放置标准单元传统的行列式布局策略可能不再适用。电源网络设计在凹多边形内构建均匀的电源网格更加困难。腔体边缘的电源条纹Power Stripe可能需要特殊处理以避免出现供电薄弱区。布线拥塞模块的形状改变了内部布线的拓扑结构。信号线可能需要绕过内部的“空洞”这可能在模块内部局部区域引发新的布线拥塞点与改善顶层拥塞的初衷背道而驰。物理验证设计规则检查DRC和版图与电路图一致性检查LVS在复杂边界条件下是否都能正确无误需要提前进行小规模测试。4.3 芯片级集成与规划的复杂性在顶层集成工程师的工作也变得复杂。腔体规划腔体开在哪里开多大开几个这不再是一个随意的美学选择而是一个需要精细权衡的优化问题。腔体的位置必须服务于最关键的那些全局互联路径如主干时钟、核心数据总线。这需要在架构设计阶段就进行预分析可能借助早期绕线预估Global Route Estimation工具。资源分配腔体区域虽然属于模块的物理范围但其上的布线资源金属层通常要预留给顶层信号使用。这需要在模块和顶层之间明确“布线资源归属”协议。例如规定腔体上方从Metal 4到Metal 10的资源由顶层支配模块内部布线只能使用Metal 1到Metal 3。时序与功耗建模对于包含腔体的模块其抽象模型如LEF文件需要能够准确描述这种复杂形状。在顶层进行静态时序分析时工具需要能正确计算信号穿过腔体区域即从模块一边的端口到另一边的端口的延迟。这涉及到更精细的提取Extraction和延迟计算Delay Calculation模型。4.4 设计迭代与变更管理芯片设计是一个迭代的过程。后期如果发现某个关键路径需要更宽的通道或者需要增加一个腔体那么修改模块形状将引发连锁反应。模块内部的布局可能需要推倒重来顶层的布线规划也需要调整。这种变更的成本远高于在矩形布局中简单地调整模块位置。因此采用腔体布局要求前期的规划必须更加周密和准确。5. 可行的实施策略与渐进式应用考虑到上述挑战全盘推翻矩形布局并不现实。一个更可行的策略是渐进式、有针对性地应用腔体思想。以下是一些可以探索的方向5.1 针对特定模块的“通道式”腔体不要一开始就追求复杂的多边形。可以从最简单的形式入手为那些位于关键全局路径如芯片主干时钟、跨芯片高速总线上的大型模块设计一个或多个通道式的腔体。这个腔体本质上是一个贯穿模块的、宽度经过计算的“隧道”专用于通过这些关键网络。实施步骤路径识别在架构或顶层网表阶段利用拓扑分析工具识别出延迟最敏感、布线资源需求最大的3-5条全局网络。模块分析检查这些网络的理想直线路径穿过了哪些子模块。腔体规划与相应模块的设计团队协商在模块布局的早期就在对应位置规划出一个预留的通道区域。该区域的宽度需满足关键网络的布线宽度、间距以及屏蔽要求。约束定义在模块的物理约束文件中明确将该通道区域定义为“布线障碍Routing Obstacle”或“预留通道Routing Guide”并注明资源归属如保留M5-M8给顶层。协同实现模块内部布局布线时避开该区域顶层集成时将关键网络指定通过该通道。5.2 利用“软模块”或“层次化通道”另一种折中方案是使用“软模块”Soft Block的概念。即在划分层次时不将所有逻辑都严格封装进硬邦邦的矩形边界。可以有意在模块之间创建一些非矩形的、属于顶层的“空白”区域这些区域在逻辑上可能属于某个模块但在物理上不作为该模块的布局区域而是作为顶层布线的自由通道。这可以通过在芯片级布局规划时手动绘制复杂的布局障碍Placement Blockage和布线引导Routing Guide来实现。虽然模块的抽象模型LEF仍是矩形但实际的金属布线可以穿过这些预留的空白区。这种方法对现有工具链的改动最小但需要非常手动的、精细的规划。5.3 面向先进封装与Chiplet的思考在2.5D/3D IC和Chiplet小芯片时代腔体布局的思想可能有新的用武之地。多个Chiplet通过中介层Interposer或硅桥Silicon Bridge互联。此时每个Chiplet本身可能仍是矩形的但我们可以从中介层的布局规划角度应用“腔体”思维。例如在一个大型计算Chiplet旁边放置多个高带宽内存HBMChiplet时中介层上的布线密度会极高。如果能在计算Chiplet的版图设计阶段就考虑在其下方对应中介层预留出一些“无硅”或“低密度布线”的通道区域专门用于HBM与其他Chiplet之间的高速互联可以极大缓解中介层的布线拥塞和信号串扰问题。这要求芯片设计、封装设计和中介层设计进行前所未有的协同规划。6. 未来展望EDA工具与设计方法学的演进Sunit Bansal在文章结尾呼吁EDA厂商提供支持此类设计的流程。十年过去了我们看到了一些进展。现代EDA工具在处理非矩形布局障碍、复杂多边形区域约束方面的能力已经大大增强。机器学习ML技术被引入布局布线其优化目标可以同时考虑时序、功耗、面积和可布线性理论上能够探索包括异形模块划分在内的更大设计空间。未来的设计方法学可能会朝着更“柔性”的层次化边界发展。工具或许能够根据全局互联的需求自动建议或优化子模块的形状而不仅仅是其位置和大小。这需要突破传统的“先划分再布局”的线性流程走向一种划分、布局、全局布线协同优化的新范式。对于设计工程师而言拥抱这种变化意味着要提升系统级的视角。我们不能只盯着自己负责的那个矩形模块更要理解它在整个芯片互联网络中的角色。在项目初期就要与架构师、顶层集成工程师一起分析关键的全局通信瓶颈并评估通过物理形状的优化来缓解这些瓶颈的可能性和代价。7. 总结与个人体会回顾这个关于“腔体布局”的有趣想法其核心价值在于它挑战了我们行业长期以来的一个默认假设——模块必须是矩形的。它提醒我们物理设计的优化空间不仅存在于晶体管的尺寸和连线的宽度上也存在于那看似理所当然的几何形状之中。在实际项目中我尚未有机会主导一个全面采用复杂多边形模块的设计。但我曾在两个项目中应用了其简化版理念一是在一个网络处理器芯片中我们为一个位于核心交叉开关与多个MAC接口之间的大型缓存模块手动规划了一个“哑铃形”的布局在其腰部预留了宽阔的顶层布线通道成功将关键路径的延迟减少了15%。二是在一个AI加速芯片中我们与封装团队合作在芯片的版图边缘专门为电源传输网络“挖”出了额外的腔体区域改善了芯片边缘区域的供电质量。我的体会是在摩尔定律逐渐放缓的今天系统级创新和设计方法学创新变得愈发重要。“腔体布局”这类思想代表了一种从系统互联角度反推物理实现的思维方式。它可能不会立刻成为主流但将其作为一种备选方案纳入我们的设计工具箱在面临极端性能、功耗或面积挑战时或许就能成为破局的关键。作为工程师保持思维的开放性愿意审视和挑战那些“历来如此”的惯例往往是技术突破的开始。下次当你开始画一个方方正正的模块边界时不妨先问自己一句这里真的必须是一个矩形吗