innovus dbget的用法

innovus dbget的用法 今天介绍一下innovus dbget的用法. common ui的get_db会相对简单很多,在此就不多加赘述了.• 获取设计中已经有的physical only cell的名字 dbGet [dbGet -p top.insts.isphysOnly 1].cell.name -u • 找到对应lib cell的数量 llength [dbGet top.insts.cell.name xxx] • 如果要删physical only cell可以用下面的命令 set physical_cell [dbGet [dbGet -p top.insts.isphysOnly 1].name] deleteInst $physical_cell • 想要删除某一个某一种physical only cell set welltap_cell [dbGet [dbGet -p2 top.insts.cell.name xxx].name] deleteInst $welltap_cell • 获取设计中所有的port数量 dbget top.numterms • 获取设计中所有的input port数量 dbget top.numInputs • output port数量可以用上面的两个命令得到的结果进行相减即可dbget没有提供对应的选项 • 获取macro的pin数量假设已经选中了一个macro llength [dbget selected.instTerms.name] • 获取macro的input pin数量假设已经选中了一个macro llength [dbget selected.instTerms.isInput 1] • 获取macro的output pin数量假设已经选中了一个macro llength [dbget selected.instTerms.isOutput 1] • 列出设计中所有unplace的instance dbGet [dbGet -p top.insts.pStatus unplaced].name • 列出设计中所有place的instance dbGet [dbGet -p top.insts.pStatus placed].name • 列出设计中所有fix的instance dbGet [dbGet -p top.insts.pStatus fixed].name select_obj [dbGet top.insts.pstatus fixed -p] • 列出block io端口terminal所用的layer dbGet top.terms.pins.allShapes.layer.name • 列出设计中的non default rules (NDR) dbGet head.rules.name • 列出某条net的route rule dbGet [dbGet -p top.nets.name netName].rule.name • 获得某个/选中instance的pStatus信息 dbGet [dbGetInstByName instName].pStatus dbGet selected.pstatus instance的pStatus有unplace,placed,fixed,cover,softfixed四种属性。在Innovus中如果cell有fix属性那么这颗cell的边框会比较粗。典型的cell,比如有tapcell,endcap和寄存器等cell。 • 避免特定multibit寄存器被拆分debanking dbSet [dbGetInstByName flop_name].dontSplitMultibit 1 • 避免特定multibit寄存器被合并banking dbSet [dbGetInstByName flop_name].dontMergeMultibit 1 • 选中出设计中的所有hard blockage select_obj [dbGet top.fplan.pBlkgs.type hard -p] • 获得方形routing blockage的坐标 dbGet top.fplan.rBlkgs.shapes.rect • 获得多边形routing blockage的坐标 dbGet top.fplan.rBlkgs.shapes.poly • 列出设计中用到的所有cell类型 dbGet -u top.insts.cell.name • 获得 block/memory的placement halos大小 block包括memory dbGet [dbGet -p2 top.insts.cell.subClass block*].pHaloTop dbGet [dbGet -p2 top.insts.cell.subClass block*].pHaloBot dbGet [dbGet -p2 top.insts.cell.subClass block*].pHaloLeft dbGet [dbGet -p2 top.insts.cell.subClass block*].pHaloRight • 获得 block routing halos大小和最低最高层 dbGet [dbGet -p2 top.insts.cell.subClass block*].rHaloSideSize dbGet [dbGet -p2 top.insts.cell.subClass block*].rHaloBotLayer.name dbGet [dbGet -p2 top.insts.cell.subClass block*].rHaloTopLayer.name • 确认所有的1b0和1‘b1都练到tie cell而非直接连接到VSS和VDD dbGet top.insts.instTerms.isTieHi 1 dbGet top.insts.instTerms.isTieLo 1 如果都有tie cell那么命令执行后应该返回0X0。如果返回值是其他值那么可以继续使用下面的命令找出需要加tie cell的instTerms。 dbGet [dbGet -p top.insts.instTerms.isTieHi 1].name dbGet [dbGet -p top.insts.instTerms.isTieLo 1].name • 更改net的route属性(比如从 FIXED 到ROUTED) dbSet [dbGet -p top.nets.name netName].wires.status route • 列出某条net所用到的layer dbGet [dbGet -p top.nets.name netName].wires.layer.name • 选中某条net的shielding net dbSet [dbGet -p top.nets.name netName].wires.status fixed • 选中某条net的shielding net dbSelectObj [dbget [dbget -p [dbGet -p top.nets.name $net].shieldNets.name GND].sWires.shieldNet.name $net -p2] • get到特定cell name (ref name)的所有instance dbGet [dbGet -p2 top.insts.cell.name cellName].name • get library中特定cell name的size dbGet [dbGetCellByName cellName].size • 列出设计中所有clock net dbGet [dbGet -p top.nets.isClock 1].name • 将包含特定关键词clk的所有instance选中设置成fix属性 dbSet [dbGet –p top.insts.name *clk*].pStatus fixed select_obj [dbGet [dbGet top.insts.name *clk* -p].name] • 获得特定route_type的最高层和最低层 dbGet [dbGet -p head.routeTypes.name routeTypeName].topPreferredLayer.num dbGet [dbGet -p head.routeTypes.name routeTypeName].bottomPreferredLayer.num • get database units dbGet head.dbUnits • get the manufacturing grid dbGet head.mfgGrid • 获得所有的physical only cell比如filler cell, endcap cell和tapcell等 dbGet [dbGet -p top.insts.isPhysOnly 1].name • 获得 Dont Touch instances: dbGet [dbGet -p top.insts.dontTouch true].name • 获得database中所有Dont Use cells dbGet [dbGet -p head.libCells.dontUse 1].name • 获得JTag elements dbGet [dbGet -p top.insts.isJtagElem 1].name • 获得所有 spare instances dbGet [dbGet -p top.insts.isSpareGate 1].name • get 特定instance的pg pin dbGet [dbGet top.insts.name $instName -p ].pgInstTerms.name • 选中包含特定module name的所有memory或hierarchy module selectInst [dbGet [dbGet top.Inst.subClass block -p2].name specify_module_name ] • get到某个module中的所有sequential cell selectModule dbGet [dbGet selected.insts.cell.isSequential 1 -p2].name • get到指定net driver的instance name和cell name set netName netName set 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] • 列出cell某个pin的所有layer dbGet [dbGet -p selected.cell.terms.name pinName].pins.allShapes.layer.extName • get到die area/选中boxes的polygon和面积 dbShape -output polygon [dbGet top.fPlan.boxes] dbShape -output polygon [dbGet selected.boxes] dbShape -output area [dbGet selected.boxes] • get top level term pin坐标和layer number lindex [dbGet [dbGet top.hinst.hinstTerms.term.name - p].pins.allShapes.shapes.rect] 0 dbGet [dbGet top.hinst.hinstTerms.term.name -p].pins.allShapes.layer.num • 找出包含特定属性的所有instance set inst_ptrs [dbGet -p top.insts.props {.name myProp .value xyzzy] Puts Instances with property myProp and value xyzzy: [dbGet $inst_ptrs.name] • 找出设计中非clock ports dbGet [dbGet -p [dbGet -p2 top.terms.net.isClock 0].isInput 1].name • get到设计中tech site相关信息 dbGet head.sites.name dbGet head.sites.size dbIsTechSiteVDDOnBottom [dbGet head.sites.name -p]