Professional Documents
Culture Documents
Explore Your Design With These Useful Single-Line Dbget Scripts in Innovus 2 3
Explore Your Design With These Useful Single-Line Dbget Scripts in Innovus 2 3
Explore your design with these useful single-line dbGet scripts in Innovus
Problem
What are some of the basic dbGet scripts to explore the design in Innovus?
Solution
You can use the following single-line dbGet scripts to explore various aspects of your design:
List the metal layers on which the I/O pins of the block reside
dbGet top.terms.pins.allShapes.layer.name
https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nUuIEAU&pageName=ArticleContent 1/7
5/8/24, 2:00 PM Explore your design with these useful single-line dbGet scripts in Innovus
Get the size of block placement halos
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
Ensure all your tiehi/tielo connections have tie cells (and are not connected to a rail instead)
dbGet top.insts.instTerms.isTieHi 1
dbGet top.insts.instTerms.isTieLo 1
The previous commands should return "0x0" if all connections have tie cells. If "1s" are returned, use the following
commands to find the terms that still need a tie cell:
Change the routing status of a net (for example, from FIXED to ROUTED)
dbSet [dbGet -p top.nets.name netName].wires.status route
NOTE: $net is the net for which you want to select the shield. $shield_name is the shield net name.
Determine the size of a cell in the library, but not necessarily in the current design
dbGet [dbGetCellByName cellName].size
Note: Before running the previous command, build a timing graph using the timeDesign command.
Set all instances with a particular pattern in the name to fixed status
https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nUuIEAU&pageName=ArticleContent 2/7
5/8/24, 2:00 PM Explore your design with these useful single-line dbGet scripts in Innovus
dbSet [dbGet –p top.insts.name *clk*].pStatus fixed
Get physical only cells such as filler cell, end cap cell, and so on
dbGet [dbGet -p top.insts.isPhysOnly 1].name
https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nUuIEAU&pageName=ArticleContent 3/7
5/8/24, 2:00 PM Explore your design with these useful single-line dbGet scripts in Innovus
set inst [dbGet [dbGet [dbGet -p [dbGet -p top.nets.name
$netName].allTerms.isOutput 1 ].objType instTerm -p ].inst ]
Puts "Net: $netName, driving inst name: [dbGet $inst.name], driving cell name:
[dbGet $inst.cell.name]"
Find all instances with a specify property name "myProp" (string property type) and value "xyzzy"
set inst_ptrs [dbGet -p top.insts.props {.name == "myProp" && .value ==
"xyzzy"]
Puts "Instances with property myProp and value xyzzy: [dbGet $inst_ptrs.name]"
Identify and report ‘physical only’ types of cells (well tap, tie hi/lo, filler, endcap/decap)
You can query the subclass for a cell to check whether it is welltap, tiehigh, tielow or end cap:
For example, to get names of well tap cells (specified as ‘CLASS CORE WELLTAP ‘ in LEF), you can use the
following command:
Similarly, to get names of tie high / tie low cells (specified as ‘CLASS CORE TIEHIGH’ or ‘CLASS CORE TIELOW’
in LEF), use the following command:
OR
To report endcap cells (specified as ‘CLASS ENDCAP’ in LEF), use the following command:
https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nUuIEAU&pageName=ArticleContent 4/7
5/8/24, 2:00 PM Explore your design with these useful single-line dbGet scripts in Innovus
dbGet [dbGet -p head.libCells.subclass coreEndCap*].name
Similarly, to query filler cells with ‘CLASS CORE SPACER’ in the LEF syntax, you can use the following command
(similar to other physical-only cells):
This will not include the top module name. To get the top module name, run the following command:
dbGet top.name
Select the instances on which to apply set_dont_touch. For example, select all level-shifter instances with the
"LS" prefix:
Removing nets over the Macros along with pitches and vias
Incase some nets are routed over the Hard Macros, you can remove such nets along with pitches and
vias using following command:
Get the number of vias that are not power in a routed design
llength [dbGet [dbGet -p top.nets.isPwrOrGnd 0].vias]
Break the DFM flow if metal fills are not added to design using run_pvs_metal_fill.
Include following set of command to break the script if metal fill is not added to design
https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nUuIEAU&pageName=ArticleContent 5/7
5/8/24, 2:00 PM Explore your design with these useful single-line dbGet scripts in Innovus
puts "Checking if run_pvs_metal_fill successfully inserted metal fill
shapes..."
if {[dbGet [dbGet -p top.nets.name _FILLS_RESERVED].sWires.shape fillwire]
>= 0} {
puts "db has metal fill - continuing..."
set has_fill 1
} else {
puts "db has no metal fill - stopping dfm run..."
set has_fill 0
}
if {$has_fill < 1} {
break
} else { .. < rest of of your script>
You can use TCL procedure below to report the mask(color) of the instance pin:
Report all flop instances with reset pin connected to the supply
# Identify all flops with reset tied directly to the vss rail
# report total count, and each instname and cellname to an
# output file named 'flop_with_tied_rst.rpt'
close $ecofp
}
Note: The top.statusClockSynthesized flag is only for FE-CTS [setCTSMode -engine ck] not for CCOpt.
Script:
set clock_gates [dbget [dbget top.insts.cell.name *cgc* -p2].instTerms.name
*clk -p2]
foreach i $clock_gates {
## find clock net of the clock gate
set clock_net [dbget $i.instTerms.name *clk -p]
set sdp_group_name [string map {/ _} [join [dbget $i.name] ""]]
set flops [dbget [dbget $clock_net.net.instTerms.isInput 1 -p].inst.name ]
createSdpGroup -name $sdp_group_name -alignByPinName clk -inst $flops
}
Note: Please use cell name and clock pins name(cgc and clk used for example) as per the library specifications.
Return to the top of the page
https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nUuIEAU&pageName=ArticleContent 7/7