conformal ECO flow 介绍

本篇主要介绍一下conformal ECO的flow。
ECO 可以分成下面两种:

  • pre_mask ECO
    指的是在chip mask 没有制作完成时ECO, 工具会假设标准单元库中的所有的cell 有可以用于实现ECO。

  • post-mask ECO

    指的是chip mask 已经制作完成, 工具会指定spare cell 来完成ECO

spare cell 顾名思义就是备用的cell, 用于function ECO 和 metal change用的, 通常在PR阶段插入, 并且有指定的物理位置和timing 要求。

输入文件的要求

  1. 必需的文件包括, 网表, def, lef 文件等:
  1. 这些文件是recommend。

Flattened ECO flow

Flattned ECO是Conformal 比较推荐的Flow。

  • 设置ECO mode

    1
    2
    set_flatten_mode -eco
    set_flatten_mode -enable_analyze_hier_compare
  • 使用analyze hier 提供额外的选项, 比如:

    1
    2
    3
    4
    5
    6
    analyze hier -do_file  eco_log.do \
    -ECOaware \
    -CONSTranints -NOEXact_pin_match \
    -FUNCTION_Pin_mapping \
    -INPUT_OUTPUT_Pin_equivalence \
    -verbose -usage -replace
  • 开始比较flattened design

    1
    2
    add compare points -all
    compare
  • 使用下面的命令将non-equivalent point 分解到sub module

1
compare eco hierarchy
  • 使用下面的命令创建必要的patch
1
2
analyze eco -hierarchical \
-ecopin_dofile ecopin.do
  • apply patch and optimize patch
1
2
3
4
5
6
7
8
9
apply patch -auto
optimize patch \
-library <design.lib>
-sdc <xxxx.sdc>
-netnaming xxx_eco_net_%d \
-instancenaming xxx_eco_gate_%d \
-sequitialnaming xxxx \
-POSTLIBsript xxx.tcl \
-POSTSYNscript xxx.tcl \

premask ECO flow

premask ECO flow 一般包含下面几个步骤:

  1. 比较旧的RTL 和旧的netlist, 这一步的比较结果应该是等价的。 可以添加一些约束,来关闭scan。

比如:

1
2
add pin constraints 0 scan_enable -golden
add pin constraints 0 scan_enable -revi
  1. 综合新版本的RTL。 需要注意的是: 尽量使用相同版本的DC, 综合tcl脚本
  2. 比较新版的RTL和新版的netlist, 这一步应该是等价的。
  3. 比较旧版的RTL和新版本的RTL, 这一步比较应该是非等价的。应该注意下面几点:
    • X conversion 的设置: 新版RTL应该是‘Don’t care’; 旧版的RTL是’E’ , 在使用read design 命令时, 这样的设置已经是默认的了。
    • 不要使用dynamic 的比较方式;
    • 用vim -diff 查看一下RTL有哪些改动, LEC 的比较结果应该和RTL的改动是吻合的。
  4. 比较旧版本的netlist 和新版本的netlist。 no-equivalent module应该和第4步中是吻合的。
  5. 使用旧版的netlist 和新版本的netlist 创建ECO path file。
  6. apply patch, 并且产生ECO 网表。
  7. 使用 [optimize patch] 命令:
    • 读入 SDC、 capacitance table、 和LEF文件, 见上面的命令;
    • 映射和优化ECO patch file
  8. 检查ECO netlist

premask ECO flow 如下图所示:

postmask ECO flow

postmask 的flow 和premask类似, 只不过是在apply patch 之前要指定spare cell。