1.用if语句根据cell name筛选insts
get_db insts -if { .name == .../*}
llength [get_db insts -if { .name == .../*}]
select_obj [get_db insts -if { .name == .../*}] #在gui中选择
get_db [ [get_db insts -if { .name == .../*}] .name ] #返回全称
get_db [ [get_db insts -if { .name == .../*}] .base_name ] #返回最后一级名称
get_db [ [get_db insts -if { .name == .../*}] .base_cell.name ] #返回cell类型
2.用filter_collection筛选cell的fanout
all_fanout -from A/* -only_cells
filter_collection [[all_fanout -from A/* -only_cells] "full_name !~ .../* && full_name !~ .../*"] #不以...为名的fanout
3.用filter筛选cell的CK端
get_cells -hierarchical -filter "name =~ A*B"
sizeof_collection [get_cells -hierarchical -filter "name =~ A*B"] #计算数量
get_pins -of_objects [get_cells -hierarchical -filter "name =~ A*B"] -filter "name =~ CK"]#获取cell的CK
get_object_name [get_pins -of_objects [get_cells -hierarchical -filter "name =~ A*B"] -filter "name =~ CK"]] #将上面的CK集合转换为list,否则有编码
#########在CTS前给名为A的cell列表的CK端加insertion delay的方法###############
foreach ck_pin [get_object_name [get_pins -of_objects [get_cells -hierarchical -filter "name =~ A*B"] -filter "name =~ CK"] {
eval_legacy "set_ccopt_property insertion_delay -pin $ck_pin 0.1"
} #做短100ps,做长为负数
4.用eco_delete-repeater删除与A相连的fanin
eco_delete_repeater -insts [get_object_name [filter_connection [all_fanin -to A -only_cells] "ref_name =~ *nPmT*"]]
#删除IP上的pin连接, 排除nPmT为其本身,IP不是nPmT,只有std cell为nPmT
########检查是否删除干净#########
set pin_name A
set net_name [[get_db pins $pin_name] .net_name]
get_db ports -if {.net.name == $net_name } #返回为1证明该cell只有与自身的联系
5.获取所有filler的base.cell.name
lsort -u [get_db [get_db insts -if {.base_name ==FILLER*}] .base_cell.name ]
lsort -u [get_db [get_db insts -if {.is_physical == true && base_cell_name != ENDCAP*}] .base_cell.name ]