本节摘要:后端把网表变成 GDS 坐标。布图规划决定 IP、宏、IO 与电源骨架;放置给每个标准单元一个合法站点;时钟树综合把理想时钟变成带延迟和偏斜的真实树;全局与详细布线在金属层上兑现连接。闭环是:布完就提取,提取完就分析,分析完打回放置或 CTS。布尔代数在这里让位给 RC 与拥塞。
阅读完本节,你应当能够:
原文把后端写成非线性求解:布局、布线、提取、时序功耗完整性分析、再反馈。28 nm 以下,晶体管行为已经离不开三维几何、邻近耦合和工艺波动。一份在理想库延迟下干净的网表,未落地前仍是乌托邦。
布图是战略关口。它不决定每一个与非门的坐标,但决定 CPU、SRAM 宏、PLL、IO 环、测试结构、高速 PHY 的相对位置。DDR 控制器和 PHY 对角放置,线长轻易上毫米,RC 把时序判死刑。电源环被 IO 切碎,局部阻抗跳升,IR Drop 让逻辑翻转不可靠。现代布图还吃时序热点图、功耗密度图、SI 隔离带、DFM 密度模板。探索常用退火或遗传一类启发式,在拥塞与线长之间找能活的点。
电源规划是低阻抗供电网。顶层厚金属做环,中层条带按间距铺网格,底层在单元行里走轨。静态压降与瞬态跌落都要管:同一沿上大量单元翻转,di/dt 在电感上打出电压坑。片上去耦电容是局部电荷池,时间常数要明显短于时钟周期,才能补得上这一坑。具体每平方毫米要多少电容,跟工艺和库走,不要背一个万能数;原则是:热点旁要有池,池到负载的金属不能细成头发。
放置质量先天决定线长、时序、拥塞。全局放置把芯片划成粗格子,用连续线长模型推单元群;详细放置把单元卡进行站点,去重叠;再针对关键路径做时序驱动微调。二次分配在十亿级单元上不可精确求解,工业界用分级混合。
拥塞是布线资源的供需。局部要的轨道多于金属能给的,详细布线就会绕、或失败。绕则延迟漂,失败则要拆放置。时序驱动放置会把关键寄存器拉近,但过近可能让保持变差,也可能在热点堆太多时钟负载。功耗驱动会把高活动逻辑打散,却可能拉长关键路径。三角张力:压线长改善建立,可能抬电流密度,电迁移风险上升。

CTS 前,STA 常把时钟当理想或只扣不确定性。CTS 后,每个叶子有插入延迟,叶子之间有偏斜。树要平衡,也要经得住工艺角:慢角插入延迟涨,快角保持变凶。有用偏斜能救建立,必须在保持角验证。时钟网是芯片上活动因子接近 1 的网络,缓冲级数直接进动态功耗。门控叶子尽量靠近被控寄存器,避免大门控一棵仍狂跳的子树。
全局布线分配资源,详细布线落到轨道与过孔,遵守间距、短线、天线、密度。天线效应:长金属在工艺过程中收集电荷,可能打穿栅,需要跳线或二极管。密度规则来自抛光平坦度,金属太疏太密都要填 dummy。这些在 GDS 检查里出现,不是“画得通就行”。
提取把几何变成 R 和 C,有时带 L。SPEF 喂给 STA。此时若最差负裕量仍负,不要无脑加缓冲:先看路径是不是绕了宏,是不是时钟叶子差了一截,是不是布线挤到高层高阻。原文举例:0.3 ps 级负裕量,问题可能在放置、偏斜、金属层选择或 DRC 意外寄生,而不是 RTL 算错。皮秒级数字随节点而变,这里只借它的方法论:先分类再动手。
| 症状 | 先查 | 通常手段 |
|---|---|---|
| 建立大负、路径跨芯片 | floorplan 宏位置 | 挪宏、加通道 |
| 建立负、局部拥塞 | 放置密度 | 摊单元、指定区域 |
| 保持负、短路径 | 时钟偏斜与数据过快 | 延迟单元、减有用偏斜 |
| 时钟功耗高 | 门控层级 | 下推门控、修剪缓冲 |
| IR 热点 | 条带与去耦 | 加密网格、加电容 |
⚠️ 常见坑:CTS 前把时序收敛当完成。理想时钟下的正裕量,在真实树插入延迟后可能消失。
💡 关键直觉:每一次物理改动都在改延迟分布。闭环的终点是提取后的报告,不是布线器显示 100% 完成。
能数清反馈原因就算健康:这一轮为拥塞,下一轮为偏斜。若每一轮都在改互不相关的火,说明约束或 floorplan 基因坏了,该停下来改骨架,而不是通宵自动迭代。
小功能补丁可以。大范围负裕量靠 ECO 绕线,金属资源会更碎,SI 更差。大改回放置或回 RTL。
不要只留“跑完了,WNS 还是负”。写四行:本轮改了什么、拥塞热点是否移动、时钟插入延迟均值和最大偏斜、提取后建立保持各自最差路径是否仍是同一条。路径换了,说明你在打地鼠;路径不换,说明骨架或逻辑深度没动。
宏移动是最贵的手术,应在前两轮决定。第三轮还在旋转 SRAM,说明布图探索不够。标准单元微调可以多轮。CTS 在放置稳定后再认真做,过早 CTS 会在单元大挪移后作废。布线以详细布线违例为零为完成,不是以全局布线估计为零。
电源网格改动要同步 IR。加密条带可能改善压降却抢信号轨道,拥塞上升。去耦电容占用单元站点和金属,过密会把放置挤爆。记录“为了 IR 加了多少电容面积”,避免下一轮又为密度删掉它们。
工具日志里的 DRC 在布线中期可以暂时存在,签核前必须清。把中期违例当正常,容易把真短路拖到最后一夜。层次化后端时,子块签核角要和顶层一致,否则顶层组装会再现“子块绿、系统红”。
CTS 前若靠理想时钟把建立做到刚好为零,CTS 后几乎必红。预算里应预留插入延迟差和偏斜。预留多少跟芯片尺寸和时钟频率有关,向有经验的后端要本工艺的经验区间,不要发明一个永恒皮秒数。
有用偏斜写下方向:为哪条建立路径牺牲了哪些保持路径。没有记录的有用偏斜,下一轮 CTS 会“优化”回去,违例复发却找不到犯人。时钟门控下推后,子树电容下降,CTS 缓冲可以减,动态功耗跟着减。这是功耗节在物理上的把手,不要只在 RTL 里门控却在树上留巨大常开缓冲。
详细布线违例为零之后,立刻提取,不要隔夜再提。隔夜若有人改了填充或 ECO,你提取的不是会上讨论的那版。哈希再一次出现。
理想时钟下把建立做到刚好为零,CTS 后必红。预算预留插入延迟差。有用偏斜写方向与牺牲的保持路径。门控下推后减树上常开缓冲。提取紧跟详细布线完成,填充参数进哈希。子块角与顶层角一致,避免组装再红。
迭代日志四行:改了什么、拥塞是否移动、插入延迟与偏斜、提取后最差路径是否仍同一条。路径换了是打地鼠,不换是骨架或逻辑深度没动。宏旋转只在前两轮。CTS 在放置稳定后认真做。电源加密同步看 IR 与轨道抢夺。去耦面积记账,防止下一轮为密度删电容。DRC 中期可暂存,签核前必须清。层次化子块角与顶层一致。布线完成立刻提取,填充参数进哈希。理想时钟零裕量禁止当作完成标准。有用偏斜必须留下牺牲清单,否则下一轮 CTS 会把你的策略当噪声优化掉。
SRAM 放在核心中央,数据通路绕湖两圈。放置器把单元挤在湖岸,拥塞爆,CTS 插入延迟散。三天迭代路径每天换脸。停下来把宏迁到两侧留运河,第一轮提取后最差路径回到乘法云,问题从物理退回第1章拍数,这才是正确分层。电源条带为时序被拆细,IR 热点与时序热点重合。加密条带并加近负载去耦后,电压坑缩小,同一条建立路径转正。日志若只写“又跑了一夜”,没有四行归因,下一夜还会献给错误地形。
再补一条出门检查:纸上运河可指;CTS 后偏斜有数;提取哈希与数据库一致;IR 热点与时序热点叠图。四样没有,闭环没闭。有用偏斜牺牲清单必须存在。门控下推后减常开缓冲。子块角等于顶层角。中期 DRC 可留,签核前清零。迭代四行日志比通宵次数更重要。理想时钟零裕量不当完成。
本轮改动没有不许。拥塞是否移动没有不许。偏斜数字没有不许。提取后是否同一条路径没有不许。四行没有就是通宵消耗。运河不可指不许启动放置。理想时钟零裕量当完成不许。有用偏斜无牺牲清单不许。子块角不一致不许组装。填充参数不进哈希不许提取。闭环的闭,写在这四行里,不写在机器还在跑的自我安慰里。
布局肌肉是四行日志:改了什么、拥塞动了没、偏斜数字、路径还是不是同一条。没有四行不许下一轮。运河不可指不许放置。理想零裕量当完成不许。偏斜无牺牲清单不许。子块角不一致不许组装。填充不进哈希不许提取。通宵不是策略。闭环写在四行里。机器还在跑只是风扇在安慰人,安慰不能当 SPEF。
有用偏斜能把建立裕量从叶子挪到另一组叶子,但保持角必须立刻重跑。偏斜一旦写进时钟树,插入延迟也变了,门控使能检查会跟着变。把 CTS 当“把线接上”处理的人,会在保持角看到一批新红字,误以为布线器坏了。树是时间分配器,不是装饰。
下一节专门看线本身:寄生、串扰、总线与片上网络,互连从背景变成主角。