❓ 问题:流片前做功能ECO,后端改完 ecoPlace 和 ecoRoute 就可以交片了吗?
这是景芯训练营里被问最多的"致命错觉"之一。很多同学觉得:前端就改了几行RTL,后端用 Innovus 跑个 ecoPlace、ecoRoute,PrimeTime 里 setup 看起来没恶化,是不是就能直接 tapeout 了?答案是:远远不够。功能ECO不是"打补丁",逻辑一变,物理、时序、功耗、验证全都会连锁受影响。
一、Formal Verification 必须重做
先用 Formality 或 Conformal 跑逻辑等效性检查,确认 ECO 脚本在逻辑层面没"改坏"设计。重点看 report 里有没有 Unmatched Points,必须全部清零才能往下走。这一步跳过去,后面所有工作都是建立在"网表可能不对"的基础上。
二、ECO 物理实现要检查三个坑
Pre-mask ECO 可以直接调用库里的标准单元,用 addInst 加新 cell,再跑 ecoPlace 和 ecoRoute。
Post-mask ECO 只能用预先散布的 spare cell,工具会自动映射新逻辑到可用 spare cell 上。
不管哪种,都要检查:有没有 Unplaced Cells?新增绕线区域有没有拥塞?有没有 DRC 违例?这些 APR 工具都能快速筛查,别偷懒。
三、CTS 要慎之又慎:小改可尝试,大改则重跑
如果 ECO 只改了数据路径,没碰时钟,可以不动 CTS。但如果动了时钟分频器、时钟 MUX 选择端,或者插了超过 3~5 个带 clock enable 的 DFF,时钟树结构已经变了。这时候做局部 CTS ECO 风险极高,insertion delay 和 skew 很难恢复到原来收敛的状态,大概率越修越乱。更稳妥的做法是:直接放弃 ECO 方案,重跑全套 APR。
四、STA 必须全部重跑
所有工艺角(corner)的 setup 和 hold 都要重新 signoff。不仅看 ECO 新增路径,还要检查周边受影响路径的 slack 是否仍然充足。如果 hold 出现违例,插 delay buffer 会进一步影响面积和功耗,要评估连锁反应。
五、最容易被忽略的一步:带 SDF 的门级后仿真
STA 只能覆盖同步路径的建立/保持时间,抓不到三类致命问题:异步逻辑冒险(Glitch)、X 态传播(X-Propagation)、跨时钟域同步器采样错误。必须从 ECO 后的版图提取寄生参数,反标生成新的 SDF,重新跑一遍带时序信息的 gate-level simulation。后仿如果挂掉,前面的 STA 收敛都是白搭。
💡 训练营学员踩坑实录: 有个项目 ECO 后 STA 全绿,跳过 gate-level simulation 直接送片,结果回片测试发现状态机在上电时进入未知态。追查发现 ECO 引入的新逻辑在复位过程中产生了 X 态传播,而 STA 根本抓不到这个问题。后仿不是"可选",是必须。
六、最后别忘了物理验证和功耗分析
DRC、LVS 要重新跑,dummy insertion 可能要重做或人工修改。动态功耗分析(Voltus/Redhawk)也要更新,因为新增 cell 和绕线会改变电源网络负载。记住一句话:ECO 改的是逻辑,但后端要重走的是全套流程。