在芯片后端实现流程中,功能ECO(Engineering Change Order) 往往被视为一场“外科手术”——在前端RTL已经冻结、后端物理设计基本收敛的情况下,对网表进行局部逻辑修正。一次成功的功能ECO,可以避免重新跑全套APR(Auto Placement & Routing),从而节省数周乃至数月的流片时间。
然而,功能ECO绝非“打补丁”那么简单。逻辑变了,物理实现、时序、功耗、物理验证乃至动态仿真都可能受到连锁影响。对中后端工程师而言,功能ECO完成后,真正的工作才刚刚开始。
本文基于实战经验,梳理出一份功能ECO后中后端工程师需要重做(Must)、视情况重做(Optional)以及重点关注的复查清单,希望能为相关从业者提供一份清晰的实操参考。
状态:必须重做(Must)
在动手做任何物理实现之前,首先要确认ECO脚本在逻辑层面没有“改坏”设计。这一步的输出完全来自逻辑等效性检查工具,比如 Synopsys Formality 或 Cadence Conformal。
后端工程师需要重点审查 Formal Verification 工具生成的报告(.summary / .rpt),关注以下几点:
所有被修改的逻辑锥(Logic Cone)是否都被正确识别和验证;
是否存在 Unmapped / Unmatched Points,即工具无法匹配的逻辑节点;
最终等效性检查结果是否为 Pass。
状态:必须重做(Must)
逻辑验证通过后,需要将ECO修改在物理上真正“落地”。主要包括ECO摆放(ECO Place)和ECO绕线(ECO Route)。这一步的输出由APR工具(如 Cadence Innovus 或 Synopsys ICC2)完成。
对于 Pre-mask ECO(光罩尚未制造),工具可以自由调用库中的标准单元,通过 addInst 实例化新单元,再执行 ecoPlace 和 ecoRoute 完成摆放与绕线。
对于 Post-mask ECO(光罩已制造),只能使用预先散布在芯片中的备用单元(Spare Cells)。此时工具同样支持自动ECO映射(Automatic ECO Mapping),将新逻辑综合到可用的备用单元上,而非依赖工程师手动逐个指定。
需要重点检查的报告包括:
是否有ECO单元未能成功摆放(Unplaced Cells);
新增绕线区域是否存在拥塞(Routing Congestion);
是否有DRC违例(可先由APR内置检查快速筛查)。
状态:视情况重做(Optional / 谨慎决策)
这是实践中极易踩坑的环节。需要明确一个工程原则:
如果ECO仅修改了数据路径(Data Path),未触碰时钟路径,则无需重做CTS。
如果ECO涉及时钟分频器、时钟MUX选择端,或插入了超过3~5个带时钟使能(Enable)的DFF,则已经改变了时钟树的物理结构。此时不建议做CTS ECO(即局部时钟树绕线),因为将时钟延时(Insertion Delay)和Skew恢复到原有收敛状态极其困难,风险极高。
更稳妥的做法:一旦时钟路径改动较大,直接放弃ECO方案,重新跑全套APR。这在工程上反而比强行做CTS ECO更省时、更可靠。
因此,针对CTS,后端工程师的决策逻辑是:小改可尝试,大改则重跑。
状态:必须重做(Must)
物理实现完成后,所有工艺角(Corner)的建立时间(Setup)和保持时间(Hold)都必须重新进行Signoff级别的静态时序分析。
需要特别关注的点包括:
ECO新增路径的时序是否收敛;
周边受影响路径的时序余量(Slack)是否仍然充足;
若Hold Time出现违例,可能需要插入延时单元(Delay Buffer),这会进一步影响面积和功耗,需评估连锁反应。
状态:必须重做(Must)——这一点极其关键,却常被忽视!
静态时序分析(STA)虽然能覆盖同步路径的建立/保持时间,但无法捕获以下两类致命问题:
异步逻辑冒险(Glitch):组合逻辑变化产生的毛刺可能导致DFF误触发;
X态传播(X-Propagation):ECO引入的新逻辑可能在复位或上电过程中产生未知态,并传播至关键状态机;
跨时钟域(CDC)同步器采样错误:新增延时的SDF反标可能改变同步器的采样沿行为。
因此,必须从ECO后的版图中提取寄生参数,反标生成新的SDF文件,重新跑一遍带时序信息的门级后仿真。这一步通常在STA收敛之后、最终物理验证之前进行。如果后仿发现功能异常,往往需要返回修改ECO方案或调整时钟相位。
状态:视情况重做(Optional / 抽检)
对于纯粹的逻辑功能修补(Functional ECO),通常仅改动少量组合逻辑门(一般小于芯片总面积的0.5%)。功耗、IR-Drop和电迁移(EM)的变化微乎其微。
除非ECO恰好发生在电源网格(Power Grid)极其薄弱的拥挤区域,或者替换的单元翻转率(Toggle Rate)异常高,否则无需跑全套Redhawk/Voltus动态分析。
工业界的常见做法是:跑一次快速静态IR检查(Static IR)作为“兜底”验证,而非强制重做全套动态功耗签核。
状态:必须重做(Must),且必须是最后一步
物理验证包含DRC(设计规则检查)、LVS(版图与电路图一致性检查)和Antenna(天线效应检查)。这里需要明确工具使用的层次:
APR工具内置的DRC/LVS(如Innovus QRC / ICC2 Zroute DRC):仅用于迭代过程中的快速筛查,精度有限,不可作为最终签核依据。
Calibre(或Synopsys ICV)独立验证:必须是流片(Tapeout)前的最后一道物理关卡,做完整的Signoff DRC + LVS。
特别强调LVS的准备工作:APR工具导出的Verilog网表仅包含逻辑连接,而Calibre LVS需要的是带电源地(PG)连接的SPICE/CDL格式网表。工程师必须先将带PG信息的Verilog网表通过 v2cdl 或工具的 write_verilog -pg 选项转换为CDL,否则LVS会因电源地悬空而产生大量“Missing Port”错误。
流程顺序:APR内置快速检查(迭代用) → STA & 后仿收敛 → Calibre最终签核(收官)。
状态:必须重做(Must)
在完成Calibre签核后,导出最终的GDSII光罩数据。导出前需再次确认:
所有层次(Layer)映射正确;
没有遗漏的Filler单元或封边(Seal Ring);
导出版本与Calibre检查所用的GDS完全一致。
| 检查项 | 是否必须 | 关键工具 / 注意事项 |
|---|---|---|
| 逻辑等效性检查(Formal) | ✅ 必须 | Formality / Conformal,仅依赖逻辑报告,无APR介入 |
| ECO摆放与绕线(Place & Route) | ✅ 必须 | Innovus / ICC2,关注摆放失败与拥塞 |
| 时钟树处理(CTS) | ⚠️ 视规模而定 | 改动>3~5个DFF时,建议直接重跑APR而非做CTS ECO |
| 静态时序分析(STA) | ✅ 必须 | 全工艺角Setup/Hold Signoff |
| 带SDF的门级后仿真 | ✅ 必须 | 极易被遗漏,用于捕获Glitch X态 CDC隐患 |
| 功耗/IR/EM分析 | ⚠️ 视情况而定 | 小规模ECO通常只做静态IR抽检 |
| APR内置DRC/LVS | ✅ 必须(迭代用) | 用于快速调试,精度有限 |
| Calibre DRC + LVS | ✅ 必须(签核用) | 流片前最后一步,需先将Verilog转CDL(带PG连接) |
| GDSII最终导出 | ✅ 必须 | 确保与Calibre检查版本完全一致 |
功能ECO之所以充满挑战,是因为它打破了后端流程原有的“线性收敛”状态,迫使工程师在已经高度耦合的物理设计中进行精准修改。清晰的复查清单、果断的决策(该重跑就重跑)、以及对动态仿真(SDF后仿)的足够重视,是确保ECO最终成功流片的三根支柱。