FEATURED · 精选文章

数字IC后端设计:floorplan与powerplan实战避坑指南

发布时间 / 2026/9/19 3:22:13
来源 / 创域科博编辑部
栏目 / 资讯中心
数字IC后端设计:floorplan与powerplan实战避坑指南 数字IC后端设计里floorplan和powerplan这两步基本决定了一颗芯片后端阶段的成败。我见过太多项目前端RTL写得漂漂亮亮综合时序也过得去结果一到后端要么布线绕不通要么IR drop压不住要么某个模块热得烫手最后只能回头改floorplan甚至重新跑综合。这种返工的代价做过的人心里都有数。这篇内容我想聊的是从拿到网表开始到把powerplan做扎实为止中间那些真正影响结果的选择和判断。适合已经接触过后端流程、但总觉得自己的floorplan差一口气的工程师也适合正在准备数字IC后端方向面试、想把流程串起来理解的朋友。我不会只给你一堆命令而是把每一步背后的逻辑讲清楚——为什么这么摆、为什么这么打、什么时候该妥协、什么时候必须死磕。1. 拿到网表之后先别急着打开工具很多人一拿到综合后的网表第一反应就是赶紧把工具跑起来读进去看看面积多大、时序多差。这个习惯其实挺危险的。后端设计不是把网表塞进去自动跑完的流程它更像是在一块有限的土地上规划一座城市——你得先搞清楚这座城市要住多少人、有哪些功能区、水电怎么走、消防通道留多宽。网表只是告诉你有哪些建筑但怎么排布得靠你自己判断。1.1 先读懂设计的性格在动手之前我会花时间做几件事。第一是看模块层次和规模分布。打开综合报告看看哪些模块占了大部分面积哪些模块逻辑层级特别深。面积大的模块通常是数据通路或者存储密集型逻辑它们对布线资源的需求高层级深的模块往往组合逻辑长时序压力大摆放时需要考虑关键路径的走向。第二是看时钟结构。有几个时钟域频率分别是多少跨时钟域的逻辑多不多这直接决定了你后面powerplan要打几套电源网络、clock tree大概会长成什么样。如果设计里有多个高频时钟域那floorplan阶段就得把它们尽量分开摆避免clock tree互相干扰。第三是看IP和macro的清单。SRAM、PLL、模拟IP、高速接口硬核这些东西的位置往往不是你想放哪就放哪的。有些IP有固定的引脚方向要求有些macro必须靠近芯片边缘有些模拟模块对噪声极其敏感必须远离数字开关逻辑。这些约束在floorplan之前就要列成一张表不然后面改起来非常痛苦。1.2 面积估算不能只看综合报告综合报告给出的面积是一个参考值但它通常偏乐观。原因很简单综合阶段还没有真实的布线拥塞信息工具估算的单元面积没有考虑布线通道的占用也没有考虑buffer和时钟树后面会插入的大量单元。我的经验是在综合面积的基础上留出15%到25%的余量作为floorplan的初始目标高频设计或者拥塞严重的设计甚至要留到30%。这个余量怎么定可以看设计的逻辑利用率目标。一般来说最终布线完成后的标准单元利用率控制在70%到80%比较健康。如果你一开始就按85%以上去规划后面很可能绕不通。利用率太低又浪费面积成本上不划算。所以floorplan的核心矛盾就是在绕得通和面积小之间找平衡点。提示面积估算时一定要把powerplan的金属资源占用考虑进去。电源网格会吃掉相当一部分布线层尤其是高层金属。如果你计划用多层厚金属做电源主干那信号布线可用的资源就更紧张了。1.3 和前端确认三件事在正式动手之前有三件事必须和前端设计者确认清楚。第一是关键路径的预期走向哪些路径是真正的时间瓶颈它们跨越了哪些模块。第二是数据流的整体方向从输入到输出大致经过哪些模块这决定了你摆放模块时的相对位置。第三是特殊约束比如某些信号必须走特定路径、某些模块有低功耗要求需要单独供电。这三件事如果前端说不清楚那后端就要自己从网表和时序报告里推断。我遇到过前端只丢一句你看着办的情况这种时候更要谨慎因为后面时序出问题责任还是后端的。宁可前期多问几句也不要后期反复返工。2. Floorplan的核心不是摆得下而是摆得对Floorplan这个词直译是楼层平面图放在芯片设计里它的本质是给每个模块分配物理位置和形状。但真正做过的人都知道floorplan的难点从来不是能不能放下而是放得对不对。一个看起来整齐紧凑的floorplan可能在布线阶段让你痛不欲生一个看起来留白很多的floorplan反而可能跑得又快又稳。2.1 数据流决定模块的相对位置摆放模块的第一原则是跟随数据流。数据从哪来、到哪去模块就应该按这个方向依次排列。比如一个典型的图像处理流水线输入接口在左边预处理、特征提取、后处理依次向右排布输出接口在右边。这样做的直接好处是关键路径的走线长度最短时序更容易收敛。如果数据流是环形或者有大量反馈路径那就需要找出最主要的几条数据通路优先保证它们的走向顺畅。次要路径可以适当绕行但不能让它们穿过核心模块的布线区域否则会造成严重的拥塞。我通常会先画一张草图把主要模块用方框标出来用箭头标出数据流向然后在这个基础上调整位置。这张草图不需要多精确但一定要把模块之间的连接关系理清楚。很多floorplan的问题其实在草图阶段就能看出来。2.2 硬核和macro的摆放是硬约束SRAM、寄存器堆、PLL、模拟IP这些硬核它们的摆放自由度远小于普通标准单元。SRAM通常有固定的位宽和深度形状是长条形引脚方向也有要求。如果你把两个SRAM背靠背放引脚朝内那它们之间的布线通道就会被完全堵死。正确的做法是让引脚朝向布线资源丰富的方向或者让它们共享一个布线通道。PLL和模拟IP对噪声敏感必须远离高频数字开关逻辑。同时它们通常需要干净的电源这就要求powerplan阶段给它们单独规划电源岛。如果floorplan阶段没有预留这个空间后面再想加隔离就非常困难。还有一个容易被忽略的点是macro的halo。所谓halo就是macro周围预留的一圈禁止摆放标准单元的区域。这个区域的作用是保证macro的引脚有足够的布线空间同时避免标准单元太靠近macro导致DRC问题。halo的宽度一般根据macro的引脚密度和布线层数来定常见的是2到5微米。太小了布线困难太大了浪费面积。2.3 利用率不是越高越好很多新手会追求高利用率觉得面积用得越满越划算。这是一个典型的误区。利用率过高会直接导致布线拥塞工具绕不通就只能降频或者加面积反而更亏。利用率过低则浪费硅片面积成本上升。那到底多少合适这取决于设计的特性。逻辑密集、连接复杂的设计利用率要低一些给布线留足空间逻辑规整、连接简单的设计利用率可以高一些。我的经验值是初始floorplan的标准单元利用率控制在60%到70%给后续的时钟树综合和布线优化留出余量。等布线跑通之后如果资源还有富余再考虑局部填充或者调整。这里有个实用的判断方法跑一次快速的全局布线看拥塞热图。如果大片区域显示红色或者深橙色说明利用率太高了需要调整。如果大部分区域是绿色或者浅黄色说明还有优化空间。2.4 通道预留和pin access模块之间要留布线通道这个道理大家都懂但留多宽、留在哪里很多人是凭感觉。通道宽度取决于两个模块之间的连接数量。连接多通道就要宽连接少可以窄一些。一个粗略的估算方法是看两个模块之间的网表连接数乘以每根线需要的布线轨道宽度再留一定的余量。Pin access是另一个容易被忽视的问题。标准单元的引脚通常在单元内部如果模块边界离得太近边界上的单元引脚就可能被挡住导致布线器无法连接。解决方法是给模块边界留出足够的空间或者在边界处摆放一些填充单元作为缓冲。注意floorplan阶段一定要跑一次快速的拥塞分析不要等到详细布线才发现问题。早期发现拥塞调整成本很低后期发现可能整个floorplan都要推翻重来。3. Powerplan电源网络是芯片的血管系统如果说floorplan是给芯片规划城市布局那powerplan就是设计这座城市的供水供电网络。电源网络设计不好轻则IR drop超标导致时序变差重则芯片直接功能失效。而且电源网络一旦确定后面很难大改所以这一步必须一次做对。3.1 先搞清楚电源需求在做powerplan之前必须先把电源需求算清楚。核心问题是这颗芯片的总功耗是多少峰值电流有多大电源引脚能承受多大的电流密度总功耗可以从综合报告或者前端提供的功耗估算里拿到。峰值电流等于功耗除以电压再考虑一定的裕量。比如一颗功耗2瓦、电压0.9伏的芯片平均电流大约是2.2安培峰值电流可能要按1.5到2倍来估算也就是3到4安培。电源引脚的数量和位置决定了电流从哪里进入芯片。如果引脚太少或者分布不合理局部电流密度就会过高导致电迁移问题。电迁移是金属原子在高电流密度下发生迁移的现象严重时会导致金属线断裂或者短路。所以powerplan阶段必须保证每条电源路径的电流密度在工艺允许的范围内。3.2 电源网格的拓扑选择电源网格的常见拓扑有几种网格状、树状、以及混合结构。网格状是在芯片上铺设纵横交错的电源线形成规则的网格优点是电流分布均匀、IR drop小缺点是占用大量布线资源。树状是从电源引脚出发像树枝一样逐级分支到各个模块优点是节省资源缺点是电流分布不均匀末端容易产生较大的IR drop。实际项目中大多数设计采用混合结构高层金属做粗壮的网格主干负责全局电流分配低层金属做局部的树状分支负责给具体模块供电。这样既保证了电流分布的均匀性又控制了资源占用。选择拓扑时要考虑几个因素。如果设计功耗大、电流密度高网格要密一些主干要粗一些。如果设计功耗小可以适当稀疏。如果设计里有多个电源域每个域要独立规划电源网络域之间的隔离要处理好。3.3 电源线的宽度和间距怎么定电源线的宽度直接决定了它的载流能力。宽度越大电阻越小IR drop越小但占用的布线资源也越多。这是一个需要权衡的问题。计算电源线宽度的基本方法是根据该条电源线需要承载的电流查工艺库里的电流密度限制反推出最小宽度。然后在这个基础上留一定的裕量。比如某条电源线需要承载100毫安电流工艺允许的电流密度是每微米宽度1毫安那最小宽度就是100微米。实际设计中主干电源线的宽度通常在几微米到几十微米之间具体取决于电流大小和金属层。电源线的间距要考虑两个因素一是相邻电源线之间的耦合二是信号线的布线空间。电源线之间如果太近会有耦合电容影响电源质量。如果太远又浪费资源。通常电源线和地线会交替排列形成去耦电容有助于滤除电源噪声。3.4 电源规划要和floorplan联动Powerplan不是独立于floorplan的步骤它们必须联动。Floorplan决定了模块的位置而模块的位置决定了电源怎么走。如果某个高功耗模块被放在芯片角落那电源网络就要专门为它拉一条粗线过去这会占用额外的资源。理想的情况是在floorplan阶段就考虑电源的走向把高功耗模块放在靠近电源引脚的位置把低功耗模块放在远端。这样电源网络的负担最小IR drop也最容易控制。还有一个细节是电源环。电源环是围绕芯片边缘或者模块边缘的一圈电源线作用是均匀分配电流。电源环的宽度要根据总电流来定通常比内部电源线更粗。如果设计有多个电源域每个域可能需要独立的电源环。4. 从IR drop反推powerplan的合理性Powerplan做完之后怎么判断它好不好最直接的指标就是IR drop。IR drop是指电流流过电源网络时由于电阻产生的电压降。如果电压降太大模块实际得到的电压就会低于标称值导致时序变慢甚至功能失效。4.1 静态IR drop和动态IR drop的区别静态IR drop是指平均电流引起的电压降它反映的是电源网络的直流电阻特性。动态IR drop是指瞬态电流引起的电压降它和电源网络的电感、电容特性有关通常发生在时钟翻转或者大量逻辑同时开关的瞬间。静态IR drop的分析相对简单工具可以根据电源网络的电阻和平均电流直接算出来。动态IR drop的分析复杂得多需要模拟瞬态电流波形和电源网络的阻抗特性。实际项目中通常先保证静态IR drop达标再通过增加去耦电容来改善动态IR drop。一般来说静态IR drop控制在电源电压的3%到5%以内比较安全动态IR drop控制在5%到10%以内。具体标准要看工艺和设计的要求高频高性能设计的要求会更严格。4.2 用IR drop热图定位薄弱点IR drop分析工具会生成一张热图用颜色表示不同区域的电压降大小。红色表示电压降大绿色表示电压降小。通过这张热图可以直观地看到电源网络的薄弱点。常见的薄弱点有几类。第一类是远离电源引脚的区域电流要经过长长的电源线才能到达电阻累积导致电压降大。第二类是电流密度高的区域比如高功耗模块附近局部电流大电压降也大。第三类是电源线宽度不足的地方电阻偏大。针对不同类型的薄弱点解决方法也不同。远端区域可以加粗电源线或者增加电源引脚。高电流区域可以加密电源网格或者增加局部去耦电容。宽度不足的地方直接加宽即可。4.3 去耦电容的摆放策略去耦电容的作用是在瞬态电流需求增大时就近提供电荷减轻电源网络的负担。去耦电容通常用芯片上的MOS电容或者金属-绝缘体-金属电容实现它们分布在标准单元区域之间。去耦电容的摆放原则是就近。哪个区域电流变化大就在哪个区域多放一些。高功耗模块周围、时钟驱动单元附近、大量寄存器同时翻转的区域都是去耦电容的重点布置位置。去耦电容的容量要适中。太小了起不到作用太大了占用面积而且可能引入漏电。通常根据动态IR drop的分析结果来确定需要的总容量然后均匀分布到各个区域。提示去耦电容的摆放要在详细布线之前完成因为它们的物理位置会影响布线。如果布线完成后再加可能需要重新绕线。5. 那些让我返工过的坑做了这么多年后端floorplan和powerplan阶段的坑我基本都踩过一遍。有些坑是工具使用的问题有些是设计理解的问题还有些纯粹是沟通不到位。下面挑几个印象深刻的说说希望能帮你少走弯路。5.1 模块摆放太紧凑导致布线绕不通有一次做一个中等规模的设计面积比较紧张我就把模块摆得很紧凑利用率做到了78%。当时觉得应该没问题结果全局布线一跑中间区域一片红拥塞严重到工具直接报错。回头分析发现两个数据通路模块之间的连接非常密集但我只给它们留了很窄的通道根本不够用。最后的解决办法是把其中一个模块往外挪了一点牺牲了一些面积但换来了布线通畅。这件事让我明白一个道理面积紧张的时候宁可牺牲一点利用率也要保证关键通道的宽度。布线绕不通面积再小也没用。5.2 电源线宽度不够导致IR drop超标还有一次电源网络设计的时候我按照经验值给主干电源线定了宽度没有仔细算电流。结果IR drop分析出来最远端的模块电压降超过了8%远超5%的目标。查了半天才发现那条主干电源线承载的电流比我预估的大了不少宽度不够导致电阻偏大。后来重新计算了电流把主干加粗了一倍IR drop降到了3%以内。这个教训是电源线的宽度一定要根据实际电流算不能凭感觉。尤其是高功耗设计电流估算要留足裕量。5.3 忘了给模拟IP做电源隔离模拟IP对电源噪声非常敏感需要干净的电源。有一次我在powerplan阶段忘了给一个PLL做电源隔离把它和数字逻辑共用了一套电源网络。结果后仿的时候PLL的输出抖动明显偏大影响了整个时钟质量。补救的办法是给PLL单独拉一套电源线并在周围加了滤波电容。虽然最终解决了问题但多花了不少时间。如果一开始就在floorplan阶段把PLL的位置和电源需求考虑清楚就不会有这个问题。5.4 跨时钟域模块摆得太近导致干扰设计里有几个不同频率的时钟域我在floorplan的时候没有特别注意把它们摆得比较近。结果时钟树综合之后发现时钟之间的串扰比较严重影响了时序。后来把不同时钟域的模块拉开了一些距离并在它们之间加了屏蔽线问题才解决。这件事提醒我多时钟域设计的floorplan一定要把时钟域的分区考虑进去不能只看数据流。6. 面试里常被问到的几个点准备数字IC后端面试的朋友floorplan和powerplan几乎是必考的内容。面试官不会问你工具怎么点而是问你遇到问题怎么想、怎么判断。下面几个问题是我被问过、也问过别人的分享一下我的回答思路。6.1 给你一个设计你怎么开始floorplan这个问题的核心是看你有没有系统的方法论。我的回答思路是先看设计的规模、时钟结构、IP清单确定约束条件然后根据数据流画草图确定模块的相对位置接着估算面积和利用率留出布线余量最后跑快速拥塞分析验证合理性。整个过程要体现出先分析、后动手的习惯而不是上来就摆。6.2 IR drop超标了怎么办这个问题考察的是排查思路。我会先看热图定位是全局问题还是局部问题。全局问题通常是电源网格太稀疏或者主干太细需要加密网格或者加粗主干。局部问题通常是某个模块电流太大或者去耦不足需要局部加强或者增加去耦电容。如果还不行就要考虑调整floorplan把高功耗模块挪到靠近电源引脚的位置。6.3 利用率定多少合适这个问题没有标准答案关键是看你能不能说出判断依据。我会说利用率取决于设计的连接复杂度和布线资源。连接密集的设计利用率要低一些给布线留空间连接简单的可以高一些。初始floorplan一般控制在60%到70%然后根据拥塞分析结果调整。最终目标是布线绕得通、时序过得了、面积可接受。6.4 多电源域设计要注意什么多电源域设计的核心是隔离。不同电源域之间要有足够的物理距离避免电流互相干扰。电源网络要独立规划域之间的信号跨接要特别处理。如果有关断域还要考虑关断时的漏电和唤醒时的浪涌电流。这些细节在floorplan阶段就要考虑不能等到后面再补。7. 一些提高效率的实操习惯最后分享几个我平时工作中养成的习惯看起来是小事但长期下来能省不少时间。第一个习惯是先跑快速迭代。Floorplan和powerplan不要一次追求完美先出一个粗略版本跑快速分析看大方向对不对。大方向对了再逐步细化。大方向错了细化得再漂亮也没用。第二个习惯是保存多个版本。每次调整之前把当前版本保存下来标注调整的原因。这样如果新版本效果不好可以快速回退。我见过有人改了一堆参数结果效果变差想回退却发现没保存只能重来。第三个习惯是记录关键参数。电源线的宽度、间距、网格密度、利用率目标这些参数每次调整都要记录并注明调整的原因和效果。时间长了你就有了自己的经验数据库下次遇到类似设计可以直接参考。第四个习惯是和前端保持沟通。后端的问题很多时候根源在前端比如时序约束不合理、模块划分不清晰。及时沟通可以避免很多返工。我一般会在floorplan完成后把布局草图发给前端确认看看是否符合他们的预期。第五个习惯是关注工艺特性。不同工艺的金属层电阻、电流密度限制、通孔特性都不一样。做新工艺的时候一定要先看工艺文档了解这些特性不能照搬旧工艺的经验。这些习惯说起来简单但真正坚持下来的人不多。我自己也是踩了很多坑之后才慢慢养成的。后端设计是一个需要耐心和细心的活floorplan和powerplan更是如此。每一步都想清楚为什么这么做比盲目追求工具跑通要有价值得多。
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻