当前位置: 首页 > article >正文

【Backend Flow工程实践 15】Placement:为什么布局优化本质上是时序、拥塞、功耗和合法性的折中?

作者Darren H. Chen方向Backend Flow / 后端实现流程 / EDA 工具工程 / PlacementdemoLAY-BE-15_placement标签Backend Flow、EDA、Placement、Timing、Congestion、Power、Legalization、Physical OptimizationPlacement 是很多人最容易直观理解的后端步骤把标准单元放到芯片上。但如果只停留在这个理解就会严重低估 placement 的复杂性。真正的 placement 不是简单“摆放 cell”而是在一个被 floorplan、IO、macro、row、library、timing constraint、routing resource 共同限定的物理空间中寻找一个多目标折中解。这个解必须同时考虑时序 拥塞 功耗 面积 合法性 可布线性 可修复性所以placement 的本质不是几何排布而是在物理空间中对逻辑图进行多目标优化映射。本文从底层架构角度讨论为什么布局优化本质上是时序、拥塞、功耗和合法性的折中一、Placement 的输入不是只有 netlist很多人以为 placement 的输入是netlist但真正进入 placement 阶段时工具需要的输入远不止这些。至少包括linked design database standard cell library LEF physical abstract Liberty timing/power model floorplan row/site macro/blockage IO placement power structure timing constraints design rules routing layer/resource placement parameters如果这些输入中任何一类不正确placement 结果都会受到影响。例如row 错误 - legal placement 失败 pin shape 错误 - route congestion 判断失真 Liberty 错误 - timing-driven placement 失真 floorplan 错误 - cell 被推到不合理区域 macro blockage 错误 - routing channel 不足 SDC 错误 - critical path 判断错误。所以 placement 不是孤立算法而是前面所有工程建模结果的综合消费者。二、Placement 在数据库中改变了什么Placement 的直接结果是 cell location。但从数据库角度看它改变的不只是坐标。它还会改变cell placement status cell density distribution net estimated wirelength pin-to-pin physical distance timing delay estimation congestion map buffer/sizing opportunities clock tree 起点条件 routing initial condition因此一个 placement 结果会影响后续所有阶段。可以抽象为PlacementState { cell_locations, placement_status, density_map, estimated_wirelength, congestion_estimation, timing_estimation, physical_context_for_cts, routing_initial_condition }这就是为什么 placement 一旦质量不好后面的 CTS 和 routing 很难完全补救。三、Placement 的第一目标合法性Placement 首先必须合法。合法性包括cell 放在 row 上 cell 对齐 site cell 不 overlap cell 不超出 core cell 不进入 blockage orientation 合法 multi-height cell 放置合法 fixed object 不被移动 power rail 对齐 cell spacing 满足基本规则。没有合法性任何时序、功耗、拥塞优化都没有意义。这就像城市规划中建筑不能先放到河里、路上或别人的地块里。但合法性只是底线不是最终目标。一个 placement 可以合法但仍然很差wirelength 很长 critical path 分散 local density 很高 routing congestion 很严重 power hotspot 明显 clock sink 分布不合理。所以 placement 需要在合法性之上继续优化。四、Placement 的第二目标Wirelength最基础的 placement 目标是减少 wirelength。因为 wirelength 会影响delay capacitance transition routing resource dynamic power congestion短线通常更好。但问题在于不能所有 net 都同时变短。一个 cell 往左移动可能让某些 net 变短也让另一些 net 变长。所以 placement 是图嵌入问题逻辑连接图 ↓ 映射到二维物理平面 ↓ 尽量减少全局连接代价这里的难点是图结构复杂 fanout 分布不均 macro 和 blockage 切割空间 IO 固定在边界 timing constraint 给不同 net 不同权重。因此 wirelength 是重要目标但不能单独决定 placement。五、Placement 的第三目标TimingTiming-driven placement 的核心是关键路径上的对象应该在物理上更接近或者获得更好的优化机会。时序不是简单由逻辑级数决定。在后端阶段互连延迟往往非常重要。Placement 会直接影响net length load capacitance transition cell delay interconnect delay setup slack hold risk clock path balance因此timing-driven placement 会给不同对象不同优先级。例如critical path 上的 cell 需要更紧凑 高扇出控制信号可能需要更合理分布 clock-related cell 需要考虑后续 CTS 长路径可能需要预留 buffer 空间 跨 macro 的路径需要避免绕远。但问题是时序最优的 placement 未必拥塞最低 拥塞最低的 placement 未必面积最小 面积最紧的 placement 未必可布线 局部优化一条路径可能损害另一组路径。所以 timing 只是 placement 的一个重要目标而不是唯一目标。六、Placement 的第四目标CongestionCongestion 是 placement 中最容易被低估的目标之一。Placement 阶段并没有真正完成详细布线但工具会估算 routing demand 和 routing resource。如果某个区域很多 net 需要穿过 pin density 很高 macro channel 很窄 power stripe 占用了 routing layer local cell density 很高 routing track 不足。就可能形成 congestion hotspot。Congestion 会导致route detour wirelength 增加 delay 增加 DRC 增加 via 数增加 runtime 增加 routing failure。所以 placement 必须考虑可布线性。一个看起来 timing 很好的 placement如果把大量连接挤到狭窄通道里后续 routing 可能无法收敛。七、Placement 的第五目标PowerPlacement 也会影响功耗。主要体现在wire capacitance buffer insertion clock sink distribution switching activity region power density IR drop sensitivity cell leakage selection opportunity。如果 placement 让相关逻辑过度分散wire capacitance 会增加动态功耗会上升。如果 clock sink 分布很差后续 clock tree 可能更长clock power 增加。如果高活动区域过于集中可能带来局部 power density 问题。所以 placement 不只是 timing 和 congestion也和 power 强相关。八、Placement 的第六目标可修复性真实工程里第一次 placement 很少就是最终结果。后面还要经历CTS route timing closure hold fix ECO signoff fix因此一个 placement 结果不仅要当前看起来好还要给后续修复留空间。例如critical path 附近是否有 buffer 空间 hold fix 是否有插 cell 空间 route detour 是否可接受 ECO spare cell 是否分布合理 local density 是否过高 macro pin 附近是否太满。可修复性是成熟 flow 很重视的指标。因为一个指标暂时好但没有修复空间后续阶段可能很难收敛。九、Placement 的典型阶段Placement 通常不是一个单步动作。可以抽象为global placement legalization detailed placement placement optimization incremental placement1. Global Placement目标是形成大致分布。此时更关注wirelength density timing cost congestion estimation2. Legalization目标是把 cell 放到合法 row/site 上消除 overlap。此时更关注合法性 最小扰动 row capacity fixed object blockage3. Detailed Placement目标是在局部进一步改善。例如cell swap local reorder small movement density smoothing wirelength improvement4. Placement Optimization目标是结合 timing/congestion/power 做物理优化。可能涉及buffer resize clone move restructure spacing critical path improvement不同工具命令不同但底层阶段思想类似。十、Placement 的底层架构视角从工具内部看placement 需要多个模型协同。Design Netlist GraphPlacement EngineFloorplan / Row / MacroLibrary Timing Power Physical ModelsTiming ConstraintsRouting Resource ModelCell LocationsDensity MapEstimated CongestionEstimated TimingPlacement ReportsCTSRoute PreparationTiming Closure这说明 placement engine 不是只读 netlist而是同时读逻辑图 物理空间 库模型 时序约束 routing resource然后输出一个综合折中结果。十一、为什么 Placement 结果必须报告化Placement 不能只看 GUI 图。必须生成报告。典型报告包括placement_summary.rpt utilization_after_place.rpt density_map_summary.rpt congestion_estimation.rpt placement_timing_summary.rpt unplaced_cells.rpt overlap_check.rpt fixed_cell_check.rpt placement_optimization.rpt这些报告回答是否还有 unplaced cell 是否合法 density 是否过高 congestion 是否集中 timing 是否改善 critical path 是否仍然很长 是否有大量 cell 被推到边界 是否有 macro 周边拥塞没有报告placement 就只能靠图形印象判断。有了报告placement 才能被比较和复盘。十二、Placement 不应该只看单一指标一个常见错误是只看wirelength或者只看WNS/TNS但 placement 是多目标问题。应该同时看timing congestion density legality wirelength power runtime 后续可修复性例如结果可能问题timing 好但 congestion 高routing 后 timing 可能反弹congestion 低但 wirelength 长delay 和 power 可能变差utilization 高后续 ECO/hold fix 空间不足local density 高legalize 和 route 风险增加WNS 改善但 TNS 变差只改善少数路径整体更差placement 合法但 macro 周边拥塞后续 route 难收敛所以 placement 分析一定要多维。十三、Placement 的方法论先看可行性再看优化性Placement 分析可以分两层。第一层可行性先问是否全部 cell 已放置 是否没有 overlap 是否符合 row/site 是否没有明显 density 爆点 是否没有明显 macro channel 问题 是否 routing congestion 可接受如果这些不满足就不要急着谈 timing 优化。第二层优化性再问critical path 是否改善 wirelength 是否合理 buffer/sizing 是否有空间 clock sink 分布是否合理 功耗和密度是否均衡 后续 ECO 是否有空间也就是说先能放再放好。十四、Placement 和 Floorplan 的反馈关系Placement 结果也会反过来验证 floorplan。如果 placement 后发现某个 macro channel 拥塞极高 IO 到逻辑路径过长 局部 row 面积不足 某个区域 cell 密度异常 power stripe 附近 routing demand 过高。这可能说明 floorplan 需要调整。因此placement 不只是一个阶段结果也是 floorplan 质量的反馈。一个成熟流程应该允许floorplan ↓ placement ↓ report ↓ floorplan adjustment ↓ placement rerun但每次调整都应该有报告依据而不是凭感觉移动 macro 或改变 core size。十五、Placement 脚本应该怎么组织Placement 脚本不应该只是place_optimize更合理的结构是01_place_precheck.tcl 02_set_place_options.tcl 03_run_global_place.tcl 04_run_legalization.tcl 05_run_place_opt.tcl 06_report_placement.tcl 07_check_place_quality.tcl每个阶段都要有边界输入是否满足 命令是否成功 关键报告是否生成 失败是否停止 结果是否可比较。Placement 阶段通常耗时较长副作用也大所以更需要 stage control 和 log/cmd.log 支撑。十六、Demo 应该验证什么本篇对应 demo 不必完成工业级 placement。它应该验证 placement 阶段的工程骨架是否存在 linked design 是否存在 floorplan/row 是否能探测 placement 相关命令 是否能执行最小 placement 或模拟 stage 是否能生成 placement summary 是否能检查 unplaced/overlap/density 是否能输出 placement quality report。建议输入最小 Verilog/LEF/Liberty floorplan 结果 row/site placement config timing constraint。建议输出placement_precheck.rpt placement_command_probe.rpt placement_summary.rpt placement_legality_check.rpt placement_quality_summary.rpt placement_stage_summary.rptDemo 的重点不是追求 QoR而是验证 placement 阶段如何被脚本化组织、记录和评估。十七、总结Placement 要把逻辑图映射到物理空间而这个映射同时影响cell 合法位置 wirelength timing delay routing congestion power consumption clock distribution ECO 修复空间。如果只追求单一指标就可能牺牲其他关键目标。所以 placement 的核心不是“把 cell 放下去”而是在合法物理空间中寻找一个同时满足 timing、congestion、power、legality 和可修复性的折中解。这就是 placement 作为后端核心阶段的真正复杂度。结尾一句话Placement 的表面结果是一组 cell 坐标。但它真正输出的是后续 CTS、routing、timing closure 能否继续推进的物理初始条件。所以判断 placement 成熟与否不能只看图形是否整齐而要看它是否为后续实现留下了可收敛的空间。

相关文章:

【Backend Flow工程实践 15】Placement:为什么布局优化本质上是时序、拥塞、功耗和合法性的折中?

作者:Darren H. Chen 方向:Backend Flow / 后端实现流程 / EDA 工具工程 / Placement demo:LAY-BE-15_placement 标签:Backend Flow、EDA、Placement、Timing、Congestion、Power、Legalization、Physical OptimizationPlacement …...

用Unity做2D游戏别踩坑!Ruby‘s Adventure项目实战中关于碰撞检测、图层管理与音效集成的5个避坑指南

Unity 2D游戏开发实战:Rubys Adventure项目中的5个关键避坑指南 在Unity中进行2D游戏开发时,即使是经验丰富的开发者也会遇到各种"坑"。本文将以官方教程项目Rubys Adventure为例,深入剖析开发过程中常见的5个技术难点,…...

如何快速获取金融数据:efinance Python库的终极指南

如何快速获取金融数据:efinance Python库的终极指南 【免费下载链接】efinance efinance 是一个可以快速获取基金、股票、债券、期货数据的 Python 库,回测以及量化交易的好帮手!🚀🚀🚀 项目地址: https:…...

发现 english-words:如何用 46.6 万英语词汇库构建智能语言应用

发现 english-words:如何用 46.6 万英语词汇库构建智能语言应用 【免费下载链接】english-words :memo: A text file containing 479k English words for all your dictionary/word-based projects e.g: auto-completion / autosuggestion 项目地址: https://gitc…...

达梦数据库中的保留字

1. 标识符、关键字和保留字 在 SQL 语言的规范体系中,关键字与保留字是构成 SQL 语法基础的核心词汇,是数据库识别、解析和执行 SQL 指令的关键依据。 首先回顾一下数据库中标识符、关键字、保留字的相关概念。 标识符:用户定义的用于标识对象…...

电子对抗中的“极简主义”:单bit接收机如何用1bit数据搞定10GHz瞬时带宽测频?

电子对抗中的“极简主义”:单bit接收机如何用1bit数据搞定10GHz瞬时带宽测频? 在电子对抗这个充满技术博弈的领域,系统设计往往需要在极端性能与有限资源之间寻找精妙平衡。当我们谈论10GHz瞬时带宽这样的参数时,传统接收机方案往…...

第48篇:AI模型压缩与加速技术——让模型在移动端“飞”起来(原理解析)

文章目录现象引入:为什么我的模型跑不动?提出问题:我们到底要压缩和加速什么?原理剖析:四大主流技术的“手术刀”1. 知识蒸馏:让“小学生”模仿“大学教授”2. 剪枝:给模型做“减法手术”3. 量化…...

如何高效下载B站8K超清视频:哔哩下载姬实用技巧指南

如何高效下载B站8K超清视频:哔哩下载姬实用技巧指南 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等&#xf…...

VideoAgentTrek-ScreenFilter算力优化:CPU/GPU混合推理降低显存峰值技巧

VideoAgentTrek-ScreenFilter算力优化:CPU/GPU混合推理降低显存峰值技巧 你是不是遇到过这种情况:跑一个视频目标检测模型,明明GPU显存看着还有不少,但处理长视频或者高分辨率视频时,程序突然就崩溃了,提示…...

【VS Code Dev Containers终极优化指南】:20年专家实测5大瓶颈+3倍构建提速方案

更多请点击: https://intelliparadigm.com 第一章:VS Code Dev Containers终极优化指南概览 Dev Containers 是 VS Code 实现环境可复现、团队协作零配置的关键能力。本章聚焦于性能、可靠性和开发体验三重维度的深度调优,而非基础概念介绍。…...

别再踩坑了!Vue项目里用vue-pdf-app预览PDF,这个CSS样式不设置它就不显示

Vue项目集成vue-pdf-app必知的CSS陷阱:为什么你的PDF预览不显示? 最近在Vue项目中实现PDF预览功能时,发现不少开发者都在vue-pdf-app这个组件上栽了跟头——明明按照官方文档配置得妥妥当当,预览组件却像隐形了一样完全不显示。这…...

社区团购对账程序,订单,货款,分红上链,团长与用户对账透明,无猫腻。

⚠️ 再次强调:这是本地模拟区块链思路的演示程序,用于说明“对账透明化”的技术逻辑,不是金融级或监管级系统。一、实际应用场景描述某社区团购平台存在以下角色:- 平台方:组织商品、结算货款- 团长:负责社…...

JDK20安装后,用Notepad++写第一个Java程序:从保存到运行的全流程演示

JDK20极简开发指南:用Notepad编写首个Java程序的完整实战 在编程学习的初始阶段,选择正确的工具链往往能事半功倍。对于Java初学者而言,直接从重量级IDE入手可能会被各种复杂功能分散注意力。本文将展示如何仅用Notepad文本编辑器和JDK20命令…...

PHP 9.0正式版发布72小时后,我们压测了17家AI Bot厂商代码——93%存在协程上下文泄漏,你中招了吗?

更多请点击: https://intelliparadigm.com 第一章:PHP 9.0 异步编程与 AI 聊天机器人 性能调优指南 PHP 9.0 引入了原生协程(Native Coroutines)和事件驱动运行时(Event Loop Runtime),为构建高…...

《AI大模型应用开发实战从入门到精通共60篇》026、模型量化技术:GPTQ、AWQ与GGUF对比与实战

026 模型量化技术:GPTQ、AWQ与GGUF对比与实战 上周调一个7B模型在Jetson Orin上的推理,显存死活压不到8G以内。FP16加载直接OOM,INT8量化后精度掉得离谱,对话变成复读机。翻遍GitHub issue,发现是量化方法选错了——AW…...

【紧急避坑】Swoole内存泄漏×LLM Token流积压×连接雪崩:3类致命组合故障的72小时定位与根治手册

更多请点击: https://intelliparadigm.com 第一章:SwooleLLM长连接架构全景与故障风暴图谱 Swoole 与大语言模型(LLM)的深度协同正催生新一代实时智能服务范式——基于协程化长连接的流式推理架构。该架构摒弃传统 HTTP 短轮询瓶…...

LangSmith + LangGraph 完整打通 + 全链路追踪调试

LangGraph RAG 每一步:检索、重排、LLM 调用、耗时、参数,全部可视化追踪、调试、打分、日志留存。 一、先搞懂:LangSmith 到底做什么? LangSmith = LLM 应用的黑匣子 + 调试控制台 它能帮你看到: 每个节点执行了什么 检索到了哪些文档 LLM 输入 / 输出是什么 耗时、报错…...

工业级进阶版 LangGraph RAG

工业级进阶版 LangGraph RAG,彻底替换掉老旧的 RetrievalQA 链式写法,实现: 拆分检索、重排、上下文组装、LLM 回答独立节点 条件路由:无需检索直接回答 / 需要检索再走 RAG 支持上下文重排(Rerank)提升精度 完整状态管理、可扩展多轮、人工干预、故障重试 纯 LangGraph …...

4步重塑Windows体验:开源工具激活70%隐藏性能,打造个性化系统空间

4步重塑Windows体验:开源工具激活70%隐藏性能,打造个性化系统空间 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other chang…...

别光跑分了!用UnixBench给你的Linux服务器做一次全面“体检”(附调优实战)

别光跑分了!用UnixBench给你的Linux服务器做一次全面“体检”(附调优实战) 当你拿到一台新配置的Linux服务器,或是发现现有系统出现性能瓶颈时,第一反应是什么?大多数工程师会本能地运行各种基准测试工具&a…...

Seed-VC:突破性零样本语音克隆技术,300ms实时转换的革命性方案

Seed-VC:突破性零样本语音克隆技术,300ms实时转换的革命性方案 【免费下载链接】seed-vc zero-shot voice conversion & singing voice conversion, with real-time support 项目地址: https://gitcode.com/GitHub_Trending/se/seed-vc 在语音…...

Linux进程名和killall的‘爱恨情仇’:为什么你的进程名总对不上?

Linux进程名与killall的微妙关系:为什么你的进程总杀不掉? 刚接触Linux系统管理时,很多人都会遇到一个令人困惑的场景:明明通过ps或top看到了某个进程在运行,但使用killall命令时却提示"no process found"。…...

嵌入式显示开发终极指南:5分钟快速掌握TFT_eSPI图形库核心技巧

嵌入式显示开发终极指南:5分钟快速掌握TFT_eSPI图形库核心技巧 【免费下载链接】TFT_eSPI Arduino and PlatformIO IDE compatible TFT library optimised for the Raspberry Pi Pico (RP2040), STM32, ESP8266 and ESP32 that supports different driver chips 项…...

Genshin FPS Unlock终极指南:解锁高帧率游戏体验的专业方案

Genshin FPS Unlock终极指南:解锁高帧率游戏体验的专业方案 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock Genshin FPS Unlock是一款专为《原神》玩家设计的开源帧率解锁工具…...

全球短视频内容创作的技术挑战与Pixelle-Video的分布式架构解决方案

全球短视频内容创作的技术挑战与Pixelle-Video的分布式架构解决方案 【免费下载链接】Pixelle-Video 🚀 AI 全自动短视频引擎 | AI Fully Automated Short Video Engine 项目地址: https://gitcode.com/GitHub_Trending/pi/Pixelle-Video 在全球化内容创作浪…...

用FPGA和Verilog做个带数码管显示的电子密码锁(附完整代码和仿真)

基于FPGA的智能电子密码锁设计与实现:从Verilog编码到数码管动态显示 在物联网和智能家居快速发展的今天,电子密码锁作为基础安全设备,其可靠性和用户体验至关重要。本文将带您从零开始构建一个基于FPGA的电子密码锁系统,不仅包含…...

如何通过OpenColorIO-Config-ACES实现跨平台色彩管理标准化提升制作效率

如何通过OpenColorIO-Config-ACES实现跨平台色彩管理标准化提升制作效率 【免费下载链接】OpenColorIO-Config-ACES 项目地址: https://gitcode.com/gh_mirrors/op/OpenColorIO-Config-ACES 在现代视觉制作流程中,跨平台色彩一致性问题已成为制约创意协作的…...

如何用douyin-downloader实现抖音无水印批量采集:5个强力方案完整指南

如何用douyin-downloader实现抖音无水印批量采集:5个强力方案完整指南 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser…...

精密磨削电主轴故障诊断系统【附代码】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,查看文章底部二维码(1)多传感器融合数据采集与预处理:针对精密…...

如何在3秒内从任何图片提取文字:Text-Grab终极指南

如何在3秒内从任何图片提取文字:Text-Grab终极指南 【免费下载链接】Text-Grab Use OCR in Windows quickly and easily with Text Grab. With optional background process and notifications. 项目地址: https://gitcode.com/gh_mirrors/te/Text-Grab 你是…...