关于ICC的一般步骤的基本流程
2012-03-04 16:23阅读:
从eetop发现的很好的帖子--感谢楼主sunshinell--顺便收藏下
我一般用ICC的步骤:
1. 用icc_shell -g 启动GUI界面;
2. 在GUI界面中,File—>Open Design打开已建立好的MW
library;
若是新建立MW library,一般用以下步骤:(最好每做一个步骤,保存一次数据,如:save_mw_cel -as
floorplan)
ICC实验步骤
步骤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(先添加标准单元和IO库完后,再添加宏单元库)
步骤4:打开创建的library。>
open_mw_lib
步骤5:读入verilog网表。>
read_verilog
步骤6:确认当前顶层设计。>
current_design RISC_CHIP
步骤7:将网表中例化的单元与参考库中的单元做连接。
>
link
步骤8:设置TLU+文件。
步骤9:读入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的参考。