什么是 ECO?功能 ECO 和时序 ECO 有何区别?
更新时间:2026-09-21。问题驱动短答页。签核收敛见 signoff 收敛 ECO、PR 时序收敛 ECO,等价性检查见 LEC/Formality,流程见 网表/门仿/ECO。
一句话回答
ECO(Engineering Change Order,工程变更命令)是在设计后期或流片后,对已综合/已布局布线的网表和版图做小范围增量修改,而不必重跑整套综合和布局布线,以节省时间和掩膜成本。功能 ECO 改的是“逻辑对不对”:修一个 bug,通常通过改逻辑连接、交换单元引脚、替换与/或/反相、插入或删除少量门、利用预先撒放的 spare cell(备用单元)来实现;时序 ECO 改的是“快慢是否收敛”:功能不变,只换更大/更小驱动的单元、插入或删除缓冲器、调整线长/延迟、做有用偏斜来消除 setup/hold 违例。以掩膜是否已制作为界,pre-mask ECO 可自由改各层、代价小;post-mask(流片后)ECO 只能尽量只用 spare cell 并限制在少数金属层(metal-layer ECO),从而只改少数掩膜版、成本最低。任何 ECO 后都要重做增量 STA、DRC/LVS,并对功能改动跑逻辑等价性检查(LEC)。
两类 ECO
| 维度 | 功能 ECO | 时序 ECO |
|---|---|---|
| 目的 | 修逻辑 bug/规格变更 | 修 setup/hold/max-transition |
| 是否改变功能 | 改变 | 不改变 |
| 常见动作 | 改连接、换门、用 spare cell、加/删逻辑 | 换驱动强度、插/删 buffer、调延迟、useful skew |
| 验证 | LEC 等价/形式 + 定向仿真 | 增量 STA 即可(功能不变) |
| 发生期 | pre/post-mask 都可能 | 多在 pre-mask 收敛期 |
spare cell 与 metal ECO
- 设计时均匀撒一批 spare gates/flip-flop(供电、连好衬底但输出悬空),并预留 spare routing track。
- post-mask 修 bug 时用顶层金属把 spare cell 接进逻辑,只改金属层掩膜,避免重做全部(尤其底层)掩膜,极大降低费用和周期。
- 这要求前期评估 spare 资源种类和数量。
典型流程
- 定位问题(仿真/STA/硅后),确定最小改动,见 signoff 收敛。
- 网表 ECO(脚本/工具)→ 增量布局布线应用 ECO。
- 功能 ECO:跑 LEC 证明新旧功能等价(针对意图),见 LEC/Formality。
- 增量 STA(多角)、功耗、DRC/LVS、物理验证,见 物理验证 Calibre。
- 确认改动不引入新的时序/物理违例后重新签核。
常见坑
- ECO 后只仿改动模块,未重跑等价性和多角 STA,引入回归。
- 没预留足够/合适的 spare cell,post-mask 改动无法只走金属层。
- 时序 ECO 修了 setup 却恶化 hold(或反之),需要联合收敛。
- 手工改网表与 RTL 不同步,后续综合把修复冲掉;应同时更新 RTL 或留存 ECO 文档。
总结
ECO 是在后期对网表和版图做最小增量修改以避免重跑全流程:功能 ECO 改连接和门逻辑修 bug、需用 spare cell 并过 LEC,时序 ECO 不改变功能只换驱动、插缓冲和调延迟以收敛 setup/hold;pre-mask 可自由改层,post-mask 靠预留 spare cell 和 spare track 走只改少数金属层的 metal ECO 来省掩膜成本,无论哪种都必须回到增量 STA、物理验证和(功能改动的)等价性检查形成闭环。