| 编号 | 功能说明 | 命令 |
|---|---|---|
| 1 | 获取设计中已有的 physical only cell 名字 | dbGet [dbGet -p top.insts.isPhysOnly 1].cell.name -u |
| 2 | 统计某个 lib cell 的实例数量(例:TAPCELLBWP40P140) | llength [dbGet top.insts.cell.name TAPCELLBWP40P140] |
| 3 | 删除所有 physical only cell(先取名再删) | set physical_cell [dbGet [dbGet -p top.insts.isPhysOnly 1].name]deleteInst $physical_cell |
| 4 | 删除某一种 physical only cell(例:所有 TAPCELLBWP40P140) | set welltap_cell [dbGet [dbGet -p2 top.insts.cell.name TAPCELLBWP40P140].name]deleteInst $welltap_cell |
| 5 | 获取设计中所有 port 数量 | dbGet top.numTerms |
| 6 | 获取设计中所有 input port 数量 | dbGet top.numInputs |
| 7 | 获取已选中 macro 的 pin 数量 | llength [dbGet selected.instTerms.name] |
| 8 | 获取已选中 macro 的 input pin 数量 | llength [dbGet selected.instTerms.isInput 1] |
| 9 | 获取已选中 macro 的 output pin 数量 | llength [dbGet selected.instTerms.isOutput 1] |
| 10 | 列出设计中所有 unplaced 的 instance | dbGet [dbGet -p top.insts.pStatus unplaced].name |
| 11 | 列出设计中所有 placed 的 instance | dbGet [dbGet -p top.insts.pStatus placed].name |
| 12 | 列出设计中所有 fixed 的 instance | dbGet [dbGet -p top.insts.pStatus fixed].name |
| 13 | 选中设计中所有 fixed 的 instance | select_obj [dbGet top.insts.pStatus fixed -p] |
| 14 | ICC/ICC2 中获取所有 fixed cell | get_cells -hierarchical -filter "is_fixed == true" |
| 15 | 列出 block IO 端口 terminal 所用的 layer | dbGet top.terms.pins.allShapes.layer.name |
| 16 | 列出设计中的 non default rules (NDR) | dbGet head.rules.name |
| 17 | ICC 中报告 routing rules | report_routing_rules |
| 18 | 列出某条 net 的 route rule | dbGet [dbGet -p top.nets.name netName].rule.name |
| 19 | 获取某个 instance 的 pStatus(按名) | dbGet [dbGetInstByName instName].pStatus |
| 20 | 获取当前选中 instance 的 pStatus | dbGet selected.pStatus |
| 21 | 避免特定 multibit 寄存器被拆分(debanking) | dbSet [dbGetInstByName <flop_name>].dontSplitMultibit 1 |
| 22 | 避免特定 multibit 寄存器被合并(banking) | dbSet [dbGetInstByName <flop_name>].dontMergeMultibit 1 |
| 23 | 选中设计中的所有 hard blockage | select_obj [dbGet top.fplan.pBlkgs.type hard -p] |
| 24 | 获得方形 routing blockage 的坐标 | dbGet top.fplan.rBlkgs.shapes.rect |
| 25 | 获得多边形 routing blockage 的坐标 | dbGet top.fplan.rBlkgs.shapes.poly |
| 26 | 列出设计中用到的所有 cell 类型(去重) | dbGet -u top.insts.cell.name |
| 27 | block/memory 的 placement halo(Top) | dbGet [dbGet -p2 top.insts.cell.subClass block*].pHaloTop |
| 28 | block/memory 的 placement halo(Bottom) | dbGet [dbGet -p2 top.insts.cell.subClass block*].pHaloBot |
| 29 | block/memory 的 placement halo(Left) | dbGet [dbGet -p2 top.insts.cell.subClass block*].pHaloLeft |
| 30 | block/memory 的 placement halo(Right) | dbGet [dbGet -p2 top.insts.cell.subClass block*].pHaloRight |
| 31 | block routing halo 大小(侧向尺寸) | dbGet [dbGet -p2 top.insts.cell.subClass block*].rHaloSideSize |
| 32 | block routing halo 最低层 | dbGet [dbGet -p2 top.insts.cell.subClass block*].rHaloBotLayer.name |
| 33 | block routing halo 最高层 | dbGet [dbGet -p2 top.insts.cell.subClass block*].rHaloTopLayer.name |
| 34 | 检查所有 isTieHi 的 instTerms | dbGet top.insts.instTerms.isTieHi 1 |
| 35 | 检查所有 isTieLo 的 instTerms | dbGet top.insts.instTerms.isTieLo 1 |
| 36 | 列出需要 TieHi 的 instTerms 名字 | dbGet [dbGet -p top.insts.instTerms.isTieHi 1].name |
| 37 | 列出需要 TieLo 的 instTerms 名字 | dbGet [dbGet -p top.insts.instTerms.isTieLo 1].name |
| 38 | 列出所有连接到 coreTieLo 的 instTerms(输入端) | dbGet [dbGet -p [dbGet -p2 top.insts.cell.subClass coreTieLo].instTerms.net.allTerms.isInput 1].name |
| 39 | 更改某 net 的 route 属性为 ROUTED | dbSet [dbGet -p top.nets.name netName].wires.status route |
| 40 | 设计状态:IO 是否 placed | dbGet top.statusIoPlaced |
| 41 | 设计状态:是否 placed | dbGet top.statusPlaced |
| 42 | 设计状态:clock 是否综合完成 | dbGet top.statusClockSynthesized |
| 43 | 设计状态:是否 routed | dbGet top.statusRouted |
| 44 | 设计状态:是否做了 RC 提取 | dbGet top.statusRCExtracted |
| 45 | 设计状态:是否做了功耗分析 | dbGet top.statusPowerAnalyzed |
| 46 | 列出某条 net 所用到的 layer | dbGet [dbGet -p top.nets.name netName].wires.layer.name |
| 47 | 将某条 net 的 wires 状态设为 fixed(示例:shield net) | dbSet [dbGet -p top.nets.name netName].wires.status fixed |
| 48 | 选中某条 net 的 shielding net(GND 例) | dbSelectObj [dbGet [dbGet -p [dbGet -p top.nets.name $net].shieldNets.name GND].sWires.shieldNet.name $net -p2] |
| 49 | 获取特定 cell name(ref name)的所有实例 | dbGet [dbGet -p2 top.insts.cell.name cellName].name |
| 50 | 获取 library 中特定 cell name 的 size | dbGet [dbGetCellByName cellName].size |
| 51 | 列出设计中所有 clock net(需先 timeDesign) | dbGet [dbGet -p top.nets.isClock 1].name |
| 52 | 将名字包含 “clk” 的所有 instance 设为 fixed | dbSet [dbGet -p top.insts.name *clk*].pStatus fixed |
| 53 | 选中名字包含 “clk” 的所有 instance | select_obj [dbGet [dbGet top.insts.name *clk* -p].name] |
| 54 | 获取特定 routeType 的最高层号 | dbGet [dbGet -p head.routeTypes.name routeTypeName].topPreferredLayer.num |
| 55 | 获取特定 routeType 的最低层号 | dbGet [dbGet -p head.routeTypes.name routeTypeName].bottomPreferredLayer.num |
| 56 | 获取 database units | dbGet head.dbUnits |
| 57 | 获取 manufacturing grid | dbGet head.mfgGrid |
| 58 | 获得所有 physical only cell 的实例名 | dbGet [dbGet -p top.insts.isPhysOnly 1].name |
| 59 | 获得 Dont Touch instances | dbGet [dbGet -p top.insts.dontTouch true].name |
| 60 | 获得所有 Dont Use 的 lib cells | dbGet [dbGet -p head.libCells.dontUse 1].name |
| 61 | 获得所有 JTAG elements | dbGet [dbGet -p top.insts.isJtagElem 1].name |
| 62 | 获得所有 spare instances | dbGet [dbGet -p top.insts.isSpareGate 1].name |
| 63 | 获取某个 instance 的 PG pins 名字 | dbGet [dbGet top.insts.name $instName -p].pgInstTerms.name |
| 64 | 选中包含特定 module name 的 memory/hierarchy module | selectInst [dbGet [dbGet top.Inst.subClass block -p2].name <specify_module_name>] |
| 65 | 获取某 module 中所有 sequential cells(配合 selectModule) | dbGet [dbGet selected.insts.cell.isSequential 1 -p2].name |
| 66 | 获取指定 net 的 driver instance 和 cell 名 | set netName netNameset inst [dbGet [dbGet -p [dbGet -p top.nets.name $netName].allTerms.isOutput 1].inst]puts "Net: $netName, driving inst name: [dbGet $inst.name], driving cell name: [dbGet $inst.cell.name]" |
| 67 | 列出某个 pin 的所有 layer(基于选中 cell) | dbGet [dbGet -p selected.cell.terms.name pinName].pins.allShapes.layer.extName |
| 68 | 获取 die area 的 polygon | dbShape -output polygon [dbGet top.fPlan.boxes] |
| 69 | 获取选中 boxes 的 polygon | dbShape -output polygon [dbGet selected.boxes] |
| 70 | 获取选中 boxes 的面积 | dbShape -output area [dbGet selected.boxes] |
| 71 | 获取 top level term pin 的矩形坐标(第一个 rect) | lindex [dbGet [dbGet top.hinst.hinstTerms.term.name -p].pins.allShapes.shapes.rect] 0 |
| 72 | 获取 top level term pin 的 layer 编号 | dbGet [dbGet top.hinst.hinstTerms.term.name -p].pins.allShapes.layer.num |
| 73 | 生成 BUF 类 cell 指针列表 | set cellPtrList [dbGet -p head.allCells.name *BUF*] |
| 74 | 遍历 BUF cells 打印 max cap(需配合 termName) | foreach cellPtr $cellPtrList {puts "[dbGet $cellPtr.name] [dbFTermMaxCap [dbGet -p $cellPtr.terms.name termName] 1]"} |
| 75 | 找出具有特定属性的所有 instances | set inst_ptrs [dbGet -p top.insts.props {.name == "myProp" && .value == "xyzzy"}] |
| 76 | 打印具有特定属性的 instances 名字 | puts "Instances with property myProp and value xyzzy: [dbGet $inst_ptrs.name]" |
| 77 | 找出设计中非 clock 的 input ports | dbGet [dbGet -p [dbGet -p2 top.terms.net.isClock 0].isInput 1].name |
| 78 | 获取 tech site 名称 | dbGet head.sites.name |
| 79 | 获取 tech site 尺寸 | dbGet head.sites.size |
| 80 | 检查 tech site VDD 是否在 bottom | dbIsTechSiteVDDOnBottom [dbGet head.sites.name -p] |
| 81 | 按 subClass 获取某类 physical only libCells | dbGet [dbGet -p head.libCells.subClass <subClassName>].name |
| 82 | 获取所有 coreWellTap 类型 libCells | dbGet [dbGet -p head.libCells.subClass coreWellTap].name |
| 83 | 获取所有 coreTieHigh 类型 libCells | dbGet [dbGet -p head.libCells.subClass coreTieHigh].name |
| 84 | 打印设计中所有 module 名字 | foreach module_name [dbGet top.hInst.treeHInsts.cell.name] { puts "$module_name" } |
| 85 | 打印设计中所有 leaf cells(去重 cell name) | foreach leaf_name [dbGet -u top.insts.cell.name] { puts "$leaf_name" } |
| 86 | 选中名字以 LS 开头的 instances | select_obj [dbGet top.insts.name LS* -p] |
| 87 | 对选中实例的所有 net 设置 dont_touch(网) | foreach term [dbGet selected.instTerms.net.term -e] { set_dont_touch [dbGet $term.net.name] true } |
| 88 | 获取非 power 的 via 总数 | llength [dbGet [dbGet -p top.nets.isPwrOrGnd 0].vias] |
获取 instance 的 PG 连接关系
proc getInstPGConnect {c} {
set inst [dbGet -p top.insts.name $c]
puts “PG connection of instance $c:”
foreach PGT [dbGet $inst.pgCellTerms.name] {
puts “\tPin : $PGT --> Net: [dbGet [dbPGTermNet [dbGetPGTermByName $inst $PGT]].name]”
}
}
#使用示例:
getInstPGConnect u_mmu_vir_top/mult_x_12/U821
#输出示意:
PG connection of instance u_mmu_vir_top/mult_x_12/U821:
Pin : VSS --> Net: VSS
Pin : VDD --> Net: VDD_CPU
Pin : VBP --> Net: VDD
Pin : VBN --> Net: VSS
Skip routes:对某类宏的 nets 设置 skipRouting
proc skiproutesOnHmsNets {hmInstPattern} {
deselectAll
selectInst $hmInstPattern
dbSet selected.hinst.hnets.net.skipRouting 1
deselectAll
}
. 删掉 macro 身上的信号走线
foreach c [dbGet [dbGet -p2 top.insts.cell.baseClass block].name] {
set j [dbGet -p top.insts.name $c]
dbSelectObj [dbQuery -area [dbGet $j.box] -objType regular]
puts “Deleting object at [dbGet $j.box] within Block [dbGet $j.name]”
editDelete -selected -type Signal -use SIGNAL
}
获取 memory 的 latency(例:名字含 RAM,pin 含 CLK
set mem_pin [dbGet [dbGet top.insts.cell.name RAM -p2].instTerms.name *CLK]
foreach i KaTeX parse error: Expected '}', got 'EOF' at end of input: …in {
puts "i [get_property [get_pins $i] actual_latency_late_rise_max]"
}
统计 reset 直接连接到 VSS 的 flop(写文件)
setPreference CmdLogMode 1
输出文件名
set ofile “flop_with_tied_rst.rpt”
set ecofp [open $ofile w]
set cnt [llength [dbGet [dbGet [dbGet top.nets.name $VSS_name -p].instTerms.cellTerm.name $RSTport -p2].inst.name]]
set insts [dbGet [dbGet [dbGet top.nets.name $VSS_name -p].instTerms.cellTerm.name $RSTport -p2].inst]
set cnt2 [llength $insts]
puts $ecofp “Total: $cnt $cnt2”
foreach inst_ptr $insts {
set inst_name [dbGet $inst_ptr.name]
set cell_ptr [dbInstCell $inst_ptr]
set cell_name [dbGet $cell_ptr.name]
set rst_port [dbGet $inst_ptr.instTerms.cellTerm.name $RSTport -p2]
set net [dbGet $rst_port.net.name]
puts ecofp"ecofp "ecofp"inst_name $cell_name"
}
close $ecofp

6725

被折叠的 条评论
为什么被折叠?



