dbGet后面不知道加什么参数时就按<tab>
,会自动提示可用的关键词head
、selected
、top
。
dbGet <tab>
进一步看看head
、top
、selected
都有哪些下一级的对象:
dbGet head.<tab>
dbGet top.<tab>
而selected
就要看当前选中的什么,选inst就是列出top.insts
的属性,选net就是列出top.nets.wires
的属性,相当于是一个快捷操作:
dbGet selected.<tab>
dbSchema *
会把top.
后面支持的对象和属性全部列出来:
dbSchema * > dbschema.log
也可以仅列出inst有哪些属性:
dbSchema inst
常见属性有:
area
box
defName
dontTouch
hInst
instTerms
isIsolation
isLevelShifter
isPhysOnly
isSpareGate
name
orient
pStatus: enum(cover fixed placed softFixed unplaced)
pStatusCTS
pStatusEffective
pgInstTerms
# 取得所有fixed属性的inst
dbGet [dbGet -p top.insts.pStatus fixed].name
# 查看指定inst的pStatus
dbGet [dbGetInstByName WELLTAP_588].pStatus
-p
来 控制打印的对象先来做几个实验:
dbGet top.insts.dontTouch true
# true true true ...
dbGet -p top.insts.dontTouch true
# 0x7fbfcd468120 0x7fbfcd4680b0 0x7fbfcd468040 ...
dbGet [dbGet -p top.insts.dontTouch true].name
# C_345_OBUF C_344_OBUF C_343_OBUF ...
dbGet -p1 top.insts.dontTouch true
# 0x7fbfcd468120 0x7fbfcd4680b0 0x7fbfcd468040 ...
dbGet [dbGet -p1 top.insts.dontTouch true].name
# C_345_OBUF C_344_OBUF C_343_OBUF ...
dbGet -p2 top.insts.dontTouch true
# 0x7fbff5801880 0x7fbff5801880 0x7fbff5801880
dbGet [dbGet -p2 top.insts.dontTouch true].name
digital_top digital_top digital_top ...
总结:
-p
与-p1
作用相同,打印的是dontTouch的属性
-p1
打印的是具有dontTouch属性的cell inst的对象
-p2
打印的是top
的名字
-p[number]
中的数字,表示的是从后往前的第几级对象(或者属性)
比如:
# 获取有M6走线的普通net的名字
dbGet [dbGet -p3 top.nets.wires.layer.name M6].name
dbGet的返回值类型是list,不是collection。
所以,我们可以用llength来获取dbGet返回的对象个数,如:
llength [dbGet -p2 top.insts.cell.name "GCK*"]
# dbGetInstByName
dbGetInstByName WELLTAP_588
# dbGetOrCreateSNetByName
# dbGetPrerouteAsObs
# 获取libcell列表
dbGet head.libCells.name
# 获取lib库里的clock buffer列表
dbGet head.libCells.name CKBD*
# 获取layer的名字
dbGet head.layers.name *
# 获取inst列表
dbGet top.insts.name *
dbGet top.insts.name FILLER_*
dbGet top.insts.name *_IBUF
dbGet top.insts.name u_*
# 获取dont touch为true的inst列表
dbGet [dbGet -p top.insts.dontTouch true].name
# 获取icg的inst列表
dbGet [dbGet -p2 top.insts.cell.name "GCK*"].name
# 获取spr_1模块里“INV”类型的sparecell,并高亮成黄色
highlight -color yellow [dbGet [dbGet -p2 [dbGet -p top.insts.name "spr_1/spr_gate*"].cell.name "INV*"].name]