50 Most Useful Dbget Commands For Innovus
50 Most Useful Dbget Commands For Innovus
In physical design domain, there are mainly two EDA tools which are widely used in ASIC Industry.
One is Cadence Innovus and the other is ICC2 from Synopsys. Both the tools are equally good and
continous advancement is going on. In this article you will get an overview of a very popular dbGet
command of Innovus tool. dbGet command is very useful and handy to use and without proper
knowledge of dbGet one can not use the innovus in an efficient way. So If you are using or going to
use Innovus in your project, you must explore the dbGet of Innovus.
Here we will learn some basics or dbGet command and see a very good collection of 50 most useful
dbGet commands. This set of dbGet commands will help you to analyze your design in a better way,
make changes in your design and will also help you to write the tcl script as per your requirement.
Backgrounds
dbGet : Returns object and attribute information for a specific database object in the design
Syntax :
dbGet [-p num] [-u] [-regexp] [-d] {obj | objList | head | top | selected } [.objectType] …
[.attributeName | .? | ..? | .??] [pattern] [expression] [-v] [-e] [-i] [-help]
Parameters
-p# : Specify the level to transverse back through the specified objects for the query
dbGet top.insts.cell.name
.insts –> is the list of pointers to the instances in the top cell
.cell –> is the list of pointers to the master cell of each instance
dbGet top.name
dbGet selected.??
If you press tab key after a . (dot) it will display all the possible options there. you can try
3. Get the name of the selected object (instance, net, ports or any other objects).
dbGet selected.name
dbGet selected.cell.name
dbGet selected.cell.terms.name
dbGet head.dbUnits
dbGet head.mfgGrid
dbGet head.layers.name
Please let me know in the comment that it returns only routing layers or base layers too
10. Get the parameters of any particular routing layer (like Masks, Directions, pitch, minWidth,
minSpacing etc )
11. Get the information of a cell which is present in std. cell library but not in design.
Then you can find many things like all available Drive strengths, Vt type etc.
You can also use another way : get_lib_cells <cell_name>
12. Get the pointers of all the cells which are used more than 100 times in the design
dbGet top.fPlan.box.size
dbGet top.fPlan.area
dbGet top.fPlan.groups.pd.name
dbGet top.terms.name
dbGet top.terms.pins.allShapes.layer.name -u
dbGet top.numTerms
dbGet top.numInputs
23. Get all the feedthru ports name which is placed on a particular edge number (suppose 3)
24. Get the name of all the instances present in the design.
dbGet top.insts.name
25. Get all the instances name of a particular cell
Suppose you want to print all the names in a new line, you can use join them like below.
Suppose you want only a number that how many types of physical cells have been used, llength can
be used in that case before the dbGet command.
27. Find the total number of physical cell instances used in the design
28. Find all the instances which have only one pins (like tie cells, antenna cells)
29. Find total numbers of well tap instances used in the design
Note: Depending on the standard cell library nomenclature the keyword *TAP* could be vary
30. Find total types of well tap cells used in the design
31. Find the name of all uniq types of well tap cells used in the design
32. Find the name of all the unique types of boundary cells used in the design
Note: you need to verify the keyword *BOUNDARY* based on your standard cell name.
Suppose you want to exclude few macros like ESD cells or any othere from this list, then you can use -
v option with this. like below.
36. Get the name of all the instance in your design which has fixed placement status
Or you can first select the instance and then use following command.
dbGet selected.pt
In case you want only x-coordinate or only y coordinate, you may use following command.
dbGet selected.pt_x
dbGet selected.pt_y
Or If that cell is not present in the design we can use following command
Note: Apart from pStatus there are two more status for an instace called ctsStatus and
effectiveStatus. effectiveStatus is the final status based on the latest pnr stage.
dbGet top.nets.name
42. Get all the power and ground nets name in the design
dbGet [dbGet top.nets.isPwrOrGnd 1 -p].name
43. Get all the signal nets only (except clock, power nad ground)
44. Find the name of all the nets with a particular pattern in net name
Further we can change the routing status of the net using dbSet command
dbGet head.rules.name
49. llx lly urx ury all four coordinate in four variable of an instance
selectInst <inst_name>
set un selected.name
51. Get the count of ULVT cells in the design (excluding physical only cells)
52. Get the area of violation marker and search any object on that area
Note: marker name is nothing but your violation’s name itself (like VIA0.S.2.1.s ). You need to load
those markers first and then you need to use the 2nd command in foreach loop.
The author has tried to take full care of typing errors and any other syntax errors but if you observe
anything is not right, please let us know in the comment section so that other readers should not
face the same error or confusion.