数字后端零基础入门系列 | Innovus零基础LAB学习Day11(Function ECO流程)

时间:2024-11-20 09:05:23

###LAB 20 Engineering Change Orders (ECO)

这个章节的学习目标是学习数字IC后端实现innovus中的一种做function eco的flow。对于初学者,如果前面的lab还没掌握好的,可以直接跳过这节内容。有时间的同学,可以熟悉掌握下这个flow。

数字后端零基础入门系列 | Innovus零基础LAB学习Day10

物理验证Calibre LVS Debug案例之通过deleteEmptyModule解决LVS问题

我们这个lab的ECO需求如下:

数字后端实现之Function ECO方法

把两个instance连接到p_data_out[15]和p_data_out[14]的这两条net进行互换(前端集成接错导致的ECO)。

首先我们进入我们ECO的工作目录:

cd /home/ic062/Desktop/FPR/work/ECO

为了说明这个ECO的功能需求,这里以instance i_5324这个cell为例,前后的netlist对比如下。

数字IC后端实现Innovus 时钟树综合(Clock Tree Synthesis)典型案例

在这里插入图片描述

接着,我们执行下面的命令。这个命令的作用是根据eco前后的两个netlist和eco前的database来做ecoRoute。

ecoDesign tdsp_core.dat tdsp_core tdsp_core_eco.v

绕线后可以通过写出def来保存设计相关数据。

图形界面操作步骤如下:

在这里插入图片描述

对应的命令为 defOut -floorplan -netlist -routing tdsp_core.def

ECO route后我们需要检查下这两颗instance的两条net是否已经互换成功。这里简单以instance DECODE_INST/i_5324为例,经过检查ecoRoute后的结果符合我们的更改需求。

在这里插入图片描述

如何获得这颗instance cell的全名呢?

innovus 17> dbGet top.insts.name i_5324
DECODE_INST/i_5324

备注:通过select_object DECODE_INST/i_5324 来选中这颗cell

当然这个检查是我们通过肉眼和我们的经验来做的检查。正常还需要写出netlist和eco netlist做功能对比,即比formal,这样才能确保工具做出来的结果是正确的。

在确保功能是正确的前提下,我们还需要继续走后续的抽RC,跑PT和calibre做DRC和LVS检查(如果是要tapeout的项目,还需要在顶层加dummy)。

补充postMask ECO项目案例:

在咱们社区低功耗四核a7top hierarchical flow项目中,我们教大家两种做post-Mask ECO的方法。

第一种是基于tapeout的PR Netlist进行逻辑修改,如下图左侧的eco netlist。

第二种是通过ECO Scripts来进行逻辑的变更。

该post-Mask Function ECO涉及新增一颗OR2 cell和新逻辑连接的创建。在post-Mask ECO流程中我们会让工具来自动将ECO Filler Cell替换成GOR2 cell。这个改动可以保证base layer是不会发生变化。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

###END OF LAB20