天天育儿网,内容丰富有趣,生活中的好帮手!
天天育儿网 > 【ICC】icc基本使用步骤(转载)(初稿)

【ICC】icc基本使用步骤(转载)(初稿)

时间:2019-06-28 18:37:56

相关推荐

【ICC】icc基本使用步骤(转载)(初稿)

DC输出门级网表和标准设计约束文件之后,使用IC complier进行后综合,得到版图文件。本文转载自论坛。我会结合自己的使用增加新的内容,并且随着使用不断更新

============================================================================

用icc_shell -g 启动GUI界面

在GUI界面中,File—>Open Design打开已建立好的MW library;

若是新建立MW library,一般用以下步骤:

(最好每做一个步骤,保存一次数据,如:save_mw_cel -as floorplan)

步骤1:在lab1_flow路径下启动ICC shell。

> icc_shell –gui

步骤2:设置search path、target_library、link_library:

Lib_setup.tcl:

# Library setup

lappend search_path ./ref/db ./ref/tlup

set target_library "sc_max.db"

set link_library "*"

foreach lib {sc io ram16x128} {

lappend link_library ${lib}_max.db

set_min_library ${lib}_max.db -min_ver ${lib}_min.db

}

步骤3:为设计创建library。> create_library

步骤4:打开创建的library。> open_mw_lib

步骤5:读入verilog网表。> read_verilog 并将网表唯一化(ICC应该能自己进行唯一化操作)。>uniquify_fp_mw_cel

步骤6:确认当前顶层设计。> current_design RISC_CHIP

步骤7:将网表中例化的单元与参考库中的单元做连接。

> link

步骤8:设置TLU+文件。 >set_tlu_plus_files 并检查TLU+文件 >check_tlu_plus_files

步骤9:读入SDC文件,设置芯片工作环境。 >read_sdc

步骤10:检查设计的合理性。

>set_zero_interconnect_delay_mode true

>report_timing

>report_constraints –all_violators

>set_zero_interconnect_delay_mode false

步骤11:在设计中添加电源pad和corner cell等physical only cells。

phy_cells.tcl:

#corner cells

create_cell {cornerll cornerlr cornerul cornerur} pfrelr

#pg pads

create_cell {vss1left vss1right} pv0i

create_cell {vdd1left vdd1right} pvdi

create_cell {vss2left vss2right} pv0a

create_cell {vdd2left vdd2right} pvda

步骤12:读入IO约束文件.。 > read_io_constraints

步骤13:初始化floorplan。 > initialize_floorplan

步骤14:加入pad filler并生成pad ring。

complete_die.tcl

# Set Pad Fillers

set feedthrupads "pfeed10000 pfeed05000 pfeed02000 "

# Insert Pad Fillers

insert_pad_filler -cell $feedthrupads

# Connect PG nets

proc update_pg {} {

foreach net {VDD VDDO VDDQ} {connect_pg_nets -nets $net -ports $net -net_type power}

foreach net {VSS VSSO VSSQ} {connect_pg_nets -nets $net -ports $net -net_type ground}

connect_pg_nets -update_tie_hi_lo

}

update_pg

# Create Pad Rings

create_pad_rings

步骤15:自动做floorplan的placement,作为为floorplan的参考。

> create_fp_placement

步骤16:手动摆放Macro,并完成flooplan。> create_fp_placement –incremental all

步骤17:创建core rings及power straps。

步骤18:做电源网络分析(PNA),查看电源规划的IR Drop。

步骤19:设置place blockage。

步骤20:布instance的电源和地。> preroute_instances

步骤21:布power rail(给标准单元供电的电源和地线)。

> preroute_standard_cells

步骤22:设置placement的约束。在METAL5 METAL6的PG线下面不摆放标准单元。

>set_pnet_options –complete {METAL5 METAL6}

步骤23:布局(placement)。placement这一步还会做scan chain的reorder,HFS.

> place_opt

> report_timing

> report_constraints –all_violators

步骤24:时钟树综合优化及布线。

> clock_opt

Ndr_settings.tcl:

remove_routing_rules -all

define_routing_rule double_spacing \

-spacings {METAL2 0.6 METAL3 0.6 METAL4 0.8 METAL5 1.2 METAL6 1.4}

set_clock_tree_options -routing_rule double_spacing \

-layer_list {METAL3 METAL4 METAL5 METAL6}

重新定义关于clock uncertainty的定义,去掉其中估计的clock skew的部分。

>set_clock_uncertainty 0.1 [all_clocks]

>clock_opt

CTS之后开始关心holdtime,如果有hold violation,可以用下面命令修复

>clock_opt –fix_hold_all_clocks

步骤25:布线(routing)。

> route_opt

用report_timing –max 或 –min查看setup\hold是否满足设计要求(或者report_constraints –all_violators)。

步骤26:做布线后DRC检查。

> verify_drc

步骤27:可制造性设计。 例如检查天线效应,先load天线效应的rules(由library vendor提供)

>source scripts/cb13_6m_antenna.tcl

用report_antenna_rules查看Antenna规则;用report_antenna_ratio查看天线效应报告。

“@@@@ Total nets not meeting constraints =”后面显示了violation的数量。

用route_search_repair修复。

如果觉得《【ICC】icc基本使用步骤(转载)(初稿)》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。