floorplan阶段

1、指令

1
2
3
4
checkDesign -netlist
source ../scripts/area_cal.tcl
floorPlan -site core -s 640 620 1 1 1 1

设置引脚的脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
set pins [dbget top.hInst.hInstTerms.defname] ; # 获取所有引脚
set total_num [llength $pins]
set mid_point [expr $total_num / 2]

set pins_part1 [lrange $pins 0 [expr $mid_point - 1]] ; # 前一半
set pins_part2 [lrange $pins $mid_point end] ; # 后一半

# ==============================================================================
# 2. 清空并解锁
# ==============================================================================
dbSet [dbGet top.terms].isFixed 0

editPin -pin $pins_part1 -layer M4 -side Left -spreadType CENTER -spacing 0.20 -pinWidth 0.1 -pinDepth 0.2 -snap TRACK
editPin -pin $pins_part2 -layer M6 -side Left -spreadType CENTER -spacing 0.20 -pinWidth 0.1 -pinDepth 0.2 -snap TRACK

设置endcap:

1
2
3
4
5
6
7
8
9
set vars(endcap_left)   "BOUNDARY_LEFTBWP30P140"
set vars(endcap_right) "BOUNDARY_RIGHTBWP30P140"

set vars(endcap_top) "BOUNDARY_LEFTBWP30P140 FILL2BWP30P140"
set vars(endcap_bottom) "BOUNDARY_LEFTBWP30P140 FILL2BWP30P140"

setEndCapMode -reset

setEndCapMode -leftEdge $endcap_left -rightEdge $endcap_right -topEdge $endcap_top -bottomEdge $endcap_bottom -prefix ENDCAP

设置welltap

1
2
set vars(welltap)  "TAPCELLBWP30P140"
addWellTap -cell $vars(welltap) -cellInterval 60 -prefix WELLTAP

do not use 阶段

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# --- 1. 定义最新的 dont_use 模式列表 ---
# 包含:延迟单元、低驱动强度单元(D0)、超低压阈值单元(ULVT)等
set vars(dont_use) "DEL* *CK* *D16BWP* *D0* *OPT* INVD18BWP* BUFTD* *DFCS* *DFNCS* *TIE* INVSK*D1BWP* *ULVT*"

# --- 2. 自动化执行 setDontUse ---
# 使用 dbget 从库中匹配真实单元名,并执行设置
foreach pattern $vars(dont_use) {
# 查找匹配该 pattern 的库单元名
set lib_cells [dbget head.libCells.name $pattern]

if {$lib_cells ne ""} {
foreach cell $lib_cells {
# 将单元设为不可用,防止工具在 place/opt 阶段自动调用
setDontUse $cell true
# 如果需要调试,可以取消下面这一行的注释查看详细输出
# puts "INFO: Set library cell $cell to dont_use"
}
} else {
# 如果库里找不到匹配的模式,打印提示
puts "WARNING: No matching cells found for pattern $pattern"
}
}

puts "SUCCESS: All specified cells have been set to dont_use."
ESC 关闭 | 导航 | Enter 打开
输入关键词开始搜索