Professional Documents
Culture Documents
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:
https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nUuIEAU&pageName=ArticleContent 1/7
25/08/2020 Explore your design with these useful single-line dbGet scripts in Innovus
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.
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
dbSet [dbGet –p top.insts.name *clk*].pStatus fixed
https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nUuIEAU&pageName=ArticleContent 2/7
25/08/2020 Explore your design with these useful single-line dbGet scripts in Innovus
dbGet head.dbUnits
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
25/08/2020 Explore your design with these useful single-line dbGet scripts in Innovus
dbGet [ dbGet -p1 top.hInst.allTreeInsts.name
$moduleInstName].hInstTerms.hTerm.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:
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
https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nUuIEAU&pageName=ArticleContent 4/7
25/08/2020 Explore your design with these useful single-line dbGet scripts in Innovus
foreach leaf_name [dbGet -u top.insts.cell.name] {
Puts "$leaf_name"
}
Select the instances on which to apply set_dont_touch. For example, select all level-shifter instances with
the "LS" prefix:
dbGet top.insts.name LS*
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
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
# dentify 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
}
https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nUuIEAU&pageName=ArticleContent 6/7
25/08/2020 Explore your design with these useful single-line dbGet scripts in Innovus
encounter> dbGet top.statusPlaced
1 // it shows design is placed
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.
https://support.cadence.com/apex/ArticleAttachmentPortal?id=a1Od0000000nUuIEAU&pageName=ArticleContent 7/7