当前位置:   article > 正文

ICC II 9 Signoff(交付) 以及 ECO flow_icc2 route_eco

icc2 route_eco

终于他妈的写完了 前前后后一个月 希望这篇教程可以帮到正在集成电路设计道路上前进的你我;

Signoff / DFM

在route_opt 完成之后 有很多需要执行的 tasks,而且有一些tasks 是必须的:
Required:
timing sign-off 参数提取 静态时序分析,使用ECO Fusion 获得更快的timing signoff
DRC Sign-off;
插入 filler;(fill gaps between standard cells) 插完filler 之后 还需要再看一次timing; 再往下做;
METAL filling (fill metal layers for CMP)
可能需要的:

functional ECO
ECO : Engineering Change Order, used when a chip is going to tape out, for small logic changes and fix timing, x-talk etc.
就是在APR已经完成之后, 前端网表发生变化,且变化不大,为了节省时间,可以使用ECO flow 去更新我们做好的layout;

Signoff / DFM 的任务

在这里插入图片描述

pre vs post tape-out ECO

区别在于最底层的poly层 是否可以动;
流片之前 叫 pre tape-out ECO ;没有标准的flow;
流片回来之后 叫Post Tape-out ECO;silicon 层是frozen住的,不可以动; new cells are getting mapped to pre-prepared spare cells ; 只有 routing layer 是可以改变的;

没有约束的 pre-tapeout ECO flow

在这里插入图片描述

#更新存在ECO改变的网表; 与老的网表作对比;
#eco_netlist   
#它会生成一个脚本文件,保存ECO changes;能够应用到设计中继续做incremental PR 的flow
place_eco_cells
#place 新的ECO cells
#更新时钟和扫描链的信息 这是一个手工的步骤 使用connect_net disconnect_net 连接新的单元;
route_eco
#布线新的nets
route_opt
#fixing timing & DRC 的violation
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

ECO 布局 palce_eco_cells

place_eco_cells-eco_changed_cells
-legalize_mode free_site_only | allow_move_other_cells | minimum_pysical_impact
#默认 free_site_only : ECO单元只会放在空的site上 不会移动已经存在的单元
#allow_move_other_cells : 允许移动靠的最近的单元;
#minimum_physical_impact : 尽量减小其他cell的移动 常用此选项;
  • 1
  • 2
  • 3
  • 4
  • 5

Example Flow

#执行ECO 的比较
eco_netlist -by_verilog_file ECO_netlist.v -write_changes ECO_changes.tcl
#应用ECO的改变并做布局;
source ECO_changes.tcl
connect_pg_net
place_eco_cells -eco_changed_cells
# 手工修改时钟树 连接到scanchain;
#  布线 以及布线后的优化
route_eco -max_detail_route_iterations 5 \
-utilize_dangling_wire true \
-oprn_net_driven true \
-reroute modified_nets_first_than_others
route_opt
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

freeze silicon ECO flow

在这里插入图片描述

  1. 插入放置 spare cells (多余单元)
  2. 在freeze-sillicon mode下 更新ECO网表
    set_app_options -list {design.eco_freeze_silicon_mode true}
    eco_netlist + source 生成的脚本;
  3. 手工更新时钟树以及 scan chain;
  4. 可行性分析 feasibility analysis(不动ploy层的情况下是否可以实现): check_freeze_silicon
  5. 将新的cell 与spare cell 匹配放置: place_freeze_silicon(自动摆放); map_freeze_silicon(手动摆放)
  6. 连接PG 以及tie-off pins 到tie cells : connect_pg_net ; connect_freeze_silicon_tie_cells
  7. 更新布线信息 route_eco

Timing ECO

在这里插入图片描述

eco fusion flow(ICC StarRC PT 的融合流程)

你可以手动的执行PT ECO 这意味你需要:
PT /StarRC/ICCII 的数据导入导出的脚本
在PT中做ECO
在StarRC中提取寄生参数
在ICCII 中完成ECO;
或者你也可以让ECOFusion 自动完成所有的事情;
所有的工作都在ICC II中完成,能够加快实现的速度;
eco_opt

example flow

#两次 route_opt 使用primetime 的延迟计算引擎以及 StarRC 融合的参数提取 
#设置 Prime time 需要的DB 库 加入到search path之中
lappend search_path “remote/../DBs"
set_host_options -target PrimeTIme \
-submit_common {/lsf/bin/bsub -R “rusage[mem=30G]"}
set_pt_options -pt_exec /apps/pt_2019.12-SP4/bin/pt_shell
#配置StarRC 
set_starrc_options -config./script/starrc_config.txt

eco_opt -types "setup hold" -pba_mode path -physical_mode open_site
#生成时序报告
check_pt_qor -pba_mode path
#之后再报告时序 不能使用report_timing 了 会覆盖上面的check_pt_qor的结果
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

标准单元fillwe 以及metal filler;

在这里插入图片描述

Filler cell 的插入

先执行 有金属层的filler cell的插入;
执行 PG connection 以及 DRC 的检查;
使用不同大小的filler 重复去填充; 先插size比较大的filler 再插size 比较小的filler;
最后执行的是没有金属层的填充单元的插入;

example script

#insert filler cells first cells with Metal ,then without
#should be sorted from largest to smallest
set FILLER_CELL_METAL “sead32/FILLER128 sead32/FILLER64"
create_stdcell_fillers -lib_cells $FILLER_CELL_METAL \
-rules {post_route_auto_delete
#允许 route_opt eco_opt 自动移除filler cells

connect_pg_net
remove_stdcell_fillers_with_violation
create_stdcell_fillers-lib_cells $FILLER_CELL_NO_METAL
connect_pg_net
#filler cell remove
eval_with_undo -disable {
remove_cells [get_cells -hierarchical -filler design_type==filler]
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

Sign off DRC

in-design signoff DRC checking and fixing(DRC检查及修复)

ICV : IC Validator IC 正确性检查器;用来检查DRC 以及帮助我们fix DRC;

save_blcok
set_app_options -list {signoff.check_drc.runset "my_runset"}
signoff_check_drc -select_layers {M1 VIA1 M2 VIA2 M3}
set_app_options -list {
signoff.fix_drc.init_drc_error_db “signoff_check_drc_run"
}
signoff_fix_drc
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

ICV usage example

signoff_check_drc
signoff_check_drc -select_rules {“M2.S.*” “M3*"}
#使用design view 或者 merge GDSII/OASIS 去检查DRC
set_app_options -list {signoff.check_drc.read_design_view {*}}
set_app_options -list {signoff.physical.merge_stream_files streamfile.gds}
signoff_check_drc [-check_all_runset_layers true]
#如果tech file 和 runset layer 的名字不一样
set_app_options -list {signoff.physical.layer_map_file “filename"}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

在Error Browser 中查看错误信息

在这里插入图片描述

matel filler

是干什么用的?

save_block
set_app_options -list {
signoff.create_metal_fill.runset sead32_mfill_rules.rs
signoff.create_meatl_fille.read_deaign_views {*}
or
signoff.physical.merge_stream_files {streamfiles.gds}
signoff_create-metal_fill -timing_preserve_setup_slack_threshold 0.05
#时序分析会有新的小的违例
#解决方法就是 将filler移除 重新执行route_opt 然后再重新插入filler cells
#run auto_eco metal fill
signoff_create_meatl_fill -auto_eco true \
-timing_preserve_setup_slcak_threshold 0.05
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/429041
推荐阅读
相关标签
  

闽ICP备14008679号