一、ECO概述与流程

什么是ECO(工程变更指令)

ECO,全称 Engineering Change Order,翻译过来就是「工程变更指令」。

说白了,就是在芯片设计流程中,当我们需要对已经完成的设计做修改时,下达的正式变更通知。我经常跟团队里的新人说:ECO不是bug,是设计的常态

在版图设计阶段,ECO特指对已经完成布局布线、甚至已经流片回来的版图进行局部修改。你想想看,芯片做到最后阶段,发现有个小功能要调整,或者时序差了一点点,这时候重新跑全套流程?太浪费了。ECO就是用来解决这个问题的。

核心要点:ECO只修改需要变更的部分,不动其他区域。这是它最大的价值。

ECO在版图设计中的意义

我做过十几年版图设计,ECO几乎贯穿了我整个职业生涯。它的意义,我总结为三点:

  • 节省时间——全流程重跑可能要几周,ECO可能只需要几天甚至几小时
  • 降低风险——改动范围小,引入新问题的概率也小
  • 保护已有成果——已经验证通过的部分不动,只改需要改的地方

我记得有一次,一个项目在tape-out前三天发现有个信号连接错了。要是重新跑流程,肯定赶不上流片窗口。最后我们用ECO的方式,直接在版图上改了金属层,三天搞定。嗯,那次之后,团队里再没人敢小看ECO了。

个人经验:我建议每个版图工程师都要掌握ECO技能。这不是锦上添花,是必备能力。因为项目越到后期,ECO越可能成为救命稻草。

华大九天ECO整体流程

华大九天的ECO流程,我习惯把它分成四个阶段。用一张图来说明会更清楚:

华大九天ECO整体流程 阶段一 ECO分析 网表比对/时序分析 阶段二 ECO规划 确定修改方案 阶段三 ECO执行 版图修改/连线调整 阶段四 ECO验证 DRC/LVS/时序检查 验证不通过则返回修改 输入文件 原始版图 (GDS/OASIS) 修改后网表 (SPICE/Verilog) 输出文件 修改后版图 (GDS/OASIS) ECO报告 (Log/Summary)

这个流程看起来简单,但每个阶段都有很多细节。我一个个来说:

阶段一:ECO分析

这个阶段的核心任务是搞清楚「要改什么」。通常我们会拿修改后的网表和原始网表做比对,找出差异点。华大九天有专门的网表比对工具,可以自动标出新增、删除、修改的器件和连接。

我在项目中遇到过一种情况:网表比对显示有几百个差异,但仔细一看,大部分都是因为命名规则变化引起的假差异。所以,分析阶段一定要人工确认,别全信工具。

阶段二:ECO规划

确定了要改什么之后,接下来就是规划「怎么改」。这一步很考验经验。你需要考虑:

  • 改动的器件放在哪里?附近有没有空位?
  • 走线会不会影响其他模块?
  • 金属层资源够不够用?

避坑指南:我曾经规划ECO时,为了省事把新加的器件塞进了一个看似空闲的区域。结果那个区域下面是敏感模拟电路,新器件的开关噪声直接耦合过去了。从那以后,我每次做ECO规划都会先检查周围电路的敏感度。

阶段三:ECO执行

这是动手的阶段。在华大九天工具里,ECO执行主要包括:

  • 添加/删除器件
  • 修改金属连线
  • 调整通孔位置
  • 重新分配金属层

我个人的习惯是:先做小范围验证,再全面铺开。比如先改一个模块,跑一下DRC,确认没问题了再改下一个。别一次性改完所有东西,出了问题排查起来很痛苦。

阶段四:ECO验证

改完之后,必须验证。这一步不能省。验证内容包括:

验证项 说明 我的经验
DRC 设计规则检查 金属间距、宽度最容易出问题
LVS 版图与网表一致性检查 新增器件的连接别漏了
时序检查 ECO后的时序是否满足 走线变长可能导致延迟增加
功耗检查 新增电路是否影响功耗 别小看几个反相器的功耗

ECO与常规设计的区别

很多新手会问:ECO不就是改版图吗?跟常规设计有什么区别?

区别大了。我列个对比表:

对比项 常规设计 ECO设计
设计范围 全芯片或整个模块 局部、定点修改
设计自由度 高,可以重新布局布线 低,受限于已有版图结构
时间周期 数周到数月 数天到数周
风险等级 中等(全流程验证) 较低(改动范围小)
工具要求 全套设计工具 ECO专用工具+局部验证工具
工程师要求 全面设计能力 精准定位+快速修改能力

说白了,常规设计像是盖新房,你可以自由发挥。ECO像是在已经装修好的房子里改水电,你不能砸承重墙,不能动主结构,只能在有限的空间里想办法。

我的建议:如果你刚开始接触ECO,别急着上手改。先花时间看懂原始版图的结构,搞清楚哪些能动、哪些不能动。我见过太多人上来就改,结果把好好的版图改废了。

嗯,ECO的基本概念和流程就这些。记住一句话:ECO不是万能的,但没有ECO是万万不能的。在芯片设计这个行当里,学会ECO,你就多了一条命。