面积与时序收敛流程
一句话回答
收敛就是让设计同时满足时序(setup/hold)、面积、功耗等要求,是个反复迭代的过程:综合→布局→CTS→布线,每一步都看裕量(WNS 最差建立裕量、TNS 总负裕量),违例就定位关键路径,用流水线、改约束、调布局、useful skew 或后期 ECO 等手段修,直到多模多角下 STA 全部为正才算签核;本质是在面积和速度之间做权衡。
一、实现与检查的循环
- 综合:RTL → 门级,初看面积和 setup;
- floorplan:规划模块/宏单元位置、电源;
- 布局 place:标准单元落位,检查局部 timing/拥塞;
- CTS:建时钟树,平衡偏斜 skew;
- 布线 route:真实连线延迟,出最终 setup/hold、DRC;
- 每阶段违例 → 回退调整 → 重跑,逐次逼近。
二、关键指标
- WNS(Worst Negative Slack):最差那条路径的裕量,>0 才好;
- TNS:所有负裕量路径之和,反映违例面有多大;
- hold 违例:通常布线后修(插入延迟单元 buffer);
- 拥塞 congestion:布线资源挤,会连带恶化时序。
三、常用收敛手段
- 微架构:加流水线寄存器切短关键路径(面积/延迟换频率);
- 综合:换优化目标、retiming、加大 cell 驱动;
- 约束:修正错误的 false path/multicycle,别用假约束「造」收敛;
- 物理:调整 floorplan、把交互单元放近、减小线长;
- useful skew:利用时钟偏斜借时间(谨慎,别拆东补西);
- ECO:后期只局部改网表/布线,免整体重跑。
常见坑
- 用假约束把违例「约束没」:路径仍会失败,签核 STA 会暴露,必须真实修。
- 只修 setup、忽略 hold:hold 违例同样会芯片功能错误。
- 只看单一工况:要多模多角(不同工艺/电压/温度)都收敛。
- 收敛一个、恶化一片:改关键路径可能影响别处,每次看全局 WNS/TNS。
- 面积时序对立没预期:高频通常要更多面积/功耗,前期定好频率目标。
- 布线前后延迟认知偏差:先进工艺线延迟占主导,必须看布线后真实结果。
总结
收敛是综合→布局→CTS→布线中反复修 WNS/TNS 和 hold、拥塞直到多角全过的迭代过程;手段从加流水线、调约束/布局到 useful skew 与 ECO,核心是面积-速度权衡;切忌用假约束掩盖违例,签核以布线后多模多角 STA 为准。