``
### 1、启动optimus
注意:这里的路径 ../../../Common/… 是比赛环境的相对路径,你需要根据你服务器的实际位置修改
floorplan.tcl:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
| ############################################################### # Innovus Floorplan Script for 55nm (ICS55 Process) # Code Extracted from Images ###############################################################
# ============================================================= # 1. Stage Init: 备料环节 # ============================================================= # 读取物理库 (LEF)。这里加载了标准单元库和天线效应库 # 注意:这里的路径 ../../../Common/... 是比赛环境的相对路径,你需要根据你服务器的实际位置修改 read_lef { ../../../Common/ics55_LLSC_H9CR_0917/lef/N551P6M_fix_NDR.lef \ ../../../Common/ics55_LLSC_H9CR_0917/lef/ics55_LLSC_H9CR_ant.lef }
# 读取前端综合出来的门级网表 read_verilog ../FromSYN/mapped.v
# 读取多模式多端角配置 (MMMC)。这里面定义了 TT/SS/FF 三个角的时序约束 read_mmmc_file ./mmmc_newsdc.tcl
# ============================================================= # 2. Stage Floorplan: 圈地环节 # ============================================================= # 下面这行被注释掉了,它是按利用率(utilization)自动算面积,比赛通常要求定死面积,所以用下面那行 # initialize_floorplan -site core9 -utilization 0.7 -core_to_die_offset { 3 3 3 3 }
# 强制划定芯片的物理边界 (Boundary) 和 IO 预留区 (Offset) # -boundary {x1 y1 x2 y2}: 左下角(5.4, 5.4),右上角(94.6, 93.6) # -core_to_die_offset: 上下左右留给 IO 环的宽度 initialize_floorplan -site core9 -boundary {5.4 5.4 94.6 93.6} -core_to_die_offset {5.4 5.4 5.4 6.4}
# 刷新界面,让你看到刚才画的框 gui_show
# ============================================================= # 3. IO Placement: 摆放引脚 # ============================================================= # 让工具自动把引脚(Pin)撒在芯片边缘 place_io_pins
# 加载自定义的 IO 约束脚本(通常用来微调引脚的顺序和具体坐标) source ./update_io_pin.tcl
# ============================================================= # 4. Physical Only Cells: 加固防线 # ============================================================= # --- 添加 End Cap (边缘终结者) --- # 保护 N 阱/P 阱边缘不破裂 set_options add_end_cap.bottom_edge ENDCAP2H9R set_options add_end_cap.top_edge ENDCAP2H9R set_options add_end_cap.left_edge ENDCAP2H9R set_options add_end_cap.right_edge ENDCAP2H9R add_end_cap -prefix end_cap_
# --- 添加 Well Tap (防闩锁避雷针) --- # 每隔 20 微米插一根,防止 Latch-up 烧毁芯片 set_options add_well_tap.cell_interval 20 set_options add_well_tap.cell FILLTAP4H9R add_well_tap -prefix well_tap_
# ============================================================= # 5. Power Plan: 通电联网 # ============================================================= # source route_pg.tcl <-- 这行被注释了 # 执行画电源网 (Power Grid) 的脚本,给 VDD/VSS 供电 source route_pg_vss_v1p2_v3p3.tcl
# ============================================================= # 6. Output Data: 存档 # ============================================================= # 导出当前的物理网表 write_verilog ./fp/fp.v.gz # 导出 DEF (Design Exchange Format) 物理版图文件 write_def -wire_via ./fp/fp.def.gz # 保存 Innovus 自己的数据库 (最重要!下次可以直接 restore_design 恢复现场) write_db -force ./fp/fp_db
|
电源网络:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
set_power_net V1P2 set_ground_net VSS
connect_pg_net -pins VDD -pg_net V1P2 -type pg_pin connect_pg_net -pins VSS -pg_net VSS -type pg_pin
set_options create_ring.layers {MET4 MET5} set_options create_ring.spacing 0.4 set_options create_ring.ring_type core_ring set_options create_ring.width 0.4 set_options create_ring.offset 0.5 create_ring -nets {V1P2 VSS}
set_options create_stripe.end_extend_to die_boundary
create_stripe -layer T4M2 -width 10 -start 89.395 -nets V1P2 -generate_via true -sets_number 1 create_stripe -layer T4M2 -width 10 -start 0.395 -nets VSS -generate_via true -sets_number 1
set_options route_special.core_pin_target core_ring route_special -nets {V1P2 VSS}
check_pg_vias
|
也可以双击引脚,点开查看具体的引脚属性

update_to_pins.tcl脚本
1
| update_io_pin -pin a\[6\] -location {97.97 65.6} -layer MET3
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
|
read_db fp_db
set_options global.infra.max_thread_count 8
set_options place.effort high
place -global
gui_show
place -legalize
early_route
place -detail
check_place
report_density
extract_rc
report_qor
write_verilog ./place/place.v.gz
write_def -wire_via ./place/place.def.gz
write_db -force ./place_db
|