ECO 与变更传播:一次修改怎样不让整条链「悄悄过期」(X3)
S5 签出违例后要往回改、S6 物理验证也可能打回版图;本篇专门讲清这条回灌支线的纪律:改一个单元、加一个缓冲、动一条金属线,哪些下游派生物立刻失效、必须按什么顺序重跑,才能保证最后签收的还是同一颗、且是修好的芯片。
一、两类 ECO,代价天差地别
| functional ECO | metal-only(mask)ECO | |
|---|---|---|
| 改什么 | 逻辑/网表功能(换单元、改连接、加逻辑) | 只改金属层,利用 spare cell 重组 |
| 动到的层 | 可能动扩散/多晶(base layer) | 只动少数金属掩模 |
| 触发时机 | 流片前为主 | 流片后/掩模阶段救片,省 base mask |
| 回灌 | 必须回写 RTL 并 LEC | 保留 spare 资源,改后仍要与网表对齐 |
metal-only ECO 是后期救片的生命线:设计前期就要在版图里预置 spare cell/空闲门,否则硅前最后一刻发现小逻辑错,连只改金属的机会都没有。
二、一次 ECO 的传播链(作废顺序)

- 改逻辑:functional ECO 同步回灌 RTL(F1 主从纪律),跑 LEC 证明新旧功能只差预期那一处;
- 增量物理:尽量只动局部,ECO 引擎在既有布线上加缓冲/换尺寸/重连,其余版图冻结;
- 寄生重提:受影响 net 的 SPEF 作废重提(见 F5),不能沿用旧 RC;
- 全角重签:改动点及其邻域在所有应签场景重跑 STA/功耗/IR(X2)——修 setup 可能在另一角弄坏 hold;
- 物理收尾:受影响区重过 DRC/LVS/天线,若动了 fill 要重出 GDS 并再次回提(见 S6、F8)。
三、增量一致性:ECO 数据库最容易对不上
ECO 通常在签核数据库(如 PT 的 ECO 流)与实现数据库之间往返。风险点:
- 两个库的网表分叉:签核工具里改了、P&R 库里没合入,下次导出又回到旧逻辑;
- 只重签了改动角:单元换尺寸影响功耗/IR,局部加缓冲影响邻线串扰;
- 原子版本破裂:新网表配了旧 DEF 或旧 SPEF(S4 的同源纪律);
- spare cell 被提前优化掉:没有保留物理资源,metal-only ECO 无从下手。
治理上要求每次 ECO 产出一个新版本包(网表+DEF+受影响 SPEF+多角报告作为原子版本),并在 manifest 里写清「相对上一版改了哪些实例/网络、作废了哪些文件」(F10、X1)。
四、收敛纪律:什么时候才算 ECO 闭合
- 目标违例在所有签核角清零,且无新增违例(WNS/TNS、功耗、IR、DRC 全部回归);
- LEC 对 RTL 与最终网表通过,functional ECO 已回灌源码;
- 受影响区寄生、物理验证、GDS 与网表同版;
- 多轮 ECO 后做一次全量基线重跑兜底,避免增量过程累积误差;
- 流片后 metal-only ECO 记录进硅后反馈闭环(X6 规划)。
五、典型事故
| 事故 | 根因 | 拦截 |
|---|---|---|
| 重综合冲掉修复 | 改网表未回灌 RTL | functional ECO 强制回写 + LEC |
| 修 setup 坏 hold | 只重签单角 | 所有场景回归 + worst 兜底 |
| 用旧寄生签收 | SPEF 未重提 | 受影响网列入作废清单门禁 |
| 两数据库逻辑分叉 | ECO 未合入实现库 | 单一可写主库,双向往返校验 |
| 后期无 metal 可救 | spare cell 未保留 | 前期布 spare 并标记 dont_touch |
相关与延伸
- 违例来源:S5 签核枢纽;物理打回:S6。
- 网表主从:F1 RTL 与四级网表;寄生过期:F5 SPEF/SDF;角覆盖:X2 MMMC。
总结
ECO 是一条「改网表→增量物理→重提寄生→多角重签→重出 GDS」的强制作废链,任何派生物没跟上都会让签收失真;functional ECO 必须回灌 RTL,metal-only ECO 靠前埋 spare cell 救命,而每一轮都要以一个同源新版本包收口并在最终做全量兜底重签。