芯片设计中的ECO是什么?
芯片设计中的ECO是什么?-腾讯云开发者社区-腾讯云
如标题所写,我们今天聊一聊IC设计种的ECO。在展开关于ECO的概念之前,我们先大致捋下数字IC设计的流程,有助于我们后面的讨论。
数字IC设计流程简述
1、确定项目需求
根据市场或者芯片功能要求,设计芯片的spec,得到可行的芯片设计方案。
2、系统级设计
用系统建模语言对各模块进行描述
3、前端设计
RTL设计、功能仿真、硬件原型验证、电路综合、DFT、STA
4、后端设计
版图设计、物理验证、后仿真
在复杂的设计流程中,bug是难以避免的。对于芯片设计而言,bug自然是越早发现越好。但是仿真验证差不多,进入RTL freeze阶段后,一旦发现新的bug,就变得有些麻烦。
因为RTL freeze前,你可以通过修改RTL来更正你发现的bug。然而RTL freeze之后,后端人员做好了floorplan,或者已经开始布局布线,这个时候再去重新做一遍,既耗时耗力,又会惹怒后端。这显然不是好的选择。
如果这个时候即将tapeout,甚至已经tapeout,根本就没有机会修改RTL了。
这个时候,我们就需要ECO,来修正我们的失误了。
什么是ECO?
ECO,即Engineering Change Order的缩写,指工程改变命令。
什么意思呢?简单来说就是手动修改集成电路的过程,换句话说,就是直接手动修改netlist。
一般应用于数字芯片版图设计。
对于数字IC设计而言,ECO这一步实际上是正常设计流程的一个例外。它是对设计的layout进行局部的小范围的修改和重新布线,而不影响到设计的其它部分的布局布线,所以其它部分的时序信息没有改变。
根据功能的不同,ECO可以分为功能改变和非功能改变。功能改变是指由于来自客户对设计的追加需求(spec改变)或者设计的最后阶段发现芯片存在 bug 的情况下进行的 ECO;而非功能改变则是为了在不改变 RTL 网表的基础上修复部分时序以及串扰等问题而做的 ECO。
说到底,ECO的目的就是省钱省时间。
那么在不同阶段,进行ECO,有什么样的区别呢?
在阶段上,数字IC设计中的ECO大体可以分为:tapeout前的ECO,tapeout过程的ECO,tapeout后的ECO。
Tapeout前的ECO