• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Community Forums
  2. Digital Implementation
  3. How to understand the nomenclature of dbGet commands?

Stats

  • Locked Locked
  • Replies 7
  • Subscribers 95
  • Views 27948
  • Members are here 0
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

How to understand the nomenclature of dbGet commands?

iamPSS
iamPSS over 4 years ago

Hello everyoneSlight smile

A beginner here. I am trying to understand dbget commands. But it would really help me, if I could get a source which tells me how they have given the names to the commands. I'm not able to understand what are sWire, Hinsts, terms, etc. I see that the detailed explanation is not available in cadence text command reference website. So could you please tell how can I understand them ?

Thank you Slight smile

  • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago

    That's a very open question. Perhaps you should read through the Virtuoso Design Environment SKILL Reference manual (in your installation, this will be at <InstDir>/doc/skdfref/skdfref.pdf) and also at the SKILL Language training classes (which are available for free on http://support.cadence.com ). That said, maybe you're not talking about Virtuoso, because I've no idea what "sWire", "Hinsts" are either?

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • iamPSS
    iamPSS over 4 years ago in reply to Andrew Beckett

    Thank you for the response. I'm working with Cadence-Innovus tool. So you are correct, I'm not talking about Virtuoso.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Andrew Beckett
    Andrew Beckett over 4 years ago in reply to iamPSS
    iamPSS said:
    I'm working with Cadence-Innous tool. So you are correct, I'm not talking about Virtuoso

    This is precisely why the forum guidelines ask you to provide this information. It avoids everyone spending time answering the wrong question...

    I'll transfer this to the correct forum.

    Andrew

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • iamPSS
    iamPSS over 4 years ago in reply to Andrew Beckett

    Extremely sorry. I make sure that this mistake won't happen again.

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • Dimo M
    Dimo M over 4 years ago

    One document that can help you understanding the nomenclature is the Innovus Database Object Information.

    The rapid adoption kit (RAK) Database Access with DBTCL  is also handy to understand how to use database commands.

    For example, if you search for sWire in support.cadence.com you will find that it means "special wire". You can now further search for that,
    and find other related articles. For example this one : What are regular nets and special nets, and how can I swap their net types ?

    Dimo

    • Cancel
    • Vote Up +1 Vote Down
    • Cancel
  • iamPSS
    iamPSS over 4 years ago in reply to Dimo M

    Thank you so much! This is really helpful. Slight smile

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel
  • LE QUANG KHAI
    LE QUANG KHAI over 4 years ago

    Dear iamPSS,

    dBGet is easy to use. When you will be master it, you see that it is powerful.

    I collected the dbGet documents (sample + practice). I hope that it's useful for you.

    If you don't understand anything, please contact the Cadence support or write here.

    ---------------------------------------------------------------------------------------------------------------------------

            1. Database schema glance(legacy)       

    1. How to start your dbget chain?

    1) head

    > dbget head.topCells.name          [start chain with Root/Head of the database]

     

    2) top

    > dbget top.insts.name                 [start chain with specified top cell]

     

    3) object/attribute pointer

    > dbget 0x2aaac4a9c000.objType  [start chain with certain one pointer of object/attribute]

     

    4) selected

    > dbget selected.name               [start chain with object selected through select* commands or GUI]

     

    1. How to trace your dbget chain to downgrade?

    1) "Tab" menu after period

    > dbget top.<Tab>      [return all subordinate objects/attributes]

    bumps  designLib   designView   fPlan    hInst    insts    

     

    2) objects/attribute .? | .?? |.?h 

    > dbget top.?              [return all subordinate objects/attributes]

    topCell: bumps designLib designView fPlan hInst

    > dbget top.??            [return all subordinate objects/attributes and corresponding value]

    > dbget top.?h             [return all subordinate objects/attributes and related description]

    =======================================================

    topCell: Top cell, container for flattened connectivity

    -------------------------------------------------------

    designLib: string, Library name for the design in OpenAccess cellview

     

    3) dbschema

    > dbSchema head           [{dbschema $obj} return all sub-object/attribute and corresponding description]

    ===============================

    head: Root/Head of the database

    -------------------------------

    allCells: objList(libCell ptnCell topCell vCell), List of pointers to cells of all types (library cells and design cells)

    cellEdgeSpacings: list(list), List of cell edge spacing values, list form: {cell_edge_name1 cell_edge_name2 spacing_coord}.

    dbUnits: int, Database units per user unit

     

    > dbSchema *net    [{dbschema $obj_pattern} return all matched object and the subordinate objects/attributes description ]

    =============================================

    hNet: Hierarchical net (derived from netlist)

    ---------------------------------------------

    allTerms: objList(hInstTerm hTerm instTerm), List of pointers to connections on the net

    defName: string, Fully qualified def name of the hNet from db

     

    1. How to use "dbschema" to trace your dbget chain to upgrade?

    1) dbSchema

    > dbSchema -parent fPlan            [{dbschema -parent $obj/$attrs} return the parent object or attributes, with description]

    =======================================================

    topCell: Top cell, container for flattened connectivity

    -------------------------------------------------------

    fPlan: obj(fplan), Pointer to the floorplan

     

    > dbSchema -parent fPlan -list    [{dbschema -parent $obj/$attrs -list} return list of parent]

    topCell

     > dbSchema * fPlan              [{dbschema $pattern $obj/attrs} return all parent and description]

    =======================================================

    topCell: Top cell, container for flattened connectivity

    -------------------------------------------------------

    fPlan: obj(fplan), Pointer to the floorplan

     

    > dbSchema * *Status           [fuzzy match for attributes and find the parent]

     

    1. How to get what object/attribute information you want through dbget option?

       (1) dbGet [-p num ] if you specify -p[num], the software traverses "num" levels back through the specified objects pointer.

          Example:

           > dbGet top.insts.pStatus fixed -p     [traverses one level back through the specified object:inst pointer whose pStatus matched "fixed", "-p" is equal to "-p1".]

     

          > dbGet top.nets.instTerms.inst.name u_aes_io/pi_din_in_1 -p2      [traverses two levels back through the specified object:instTerm pointer whose inst name matched "u_aes_io/pi_din_in_1"]

          > dbget [dbGet top.nets.instTerms.inst.name u_aes_io/pi_din_in_1 -p2].objType
          instTerm instTerm instTerm

     

          >  dbGet top.nets.instTerms.inst.name u_aes_io/pi_din_in_1 -p3     [traverses three levels back through the specified object:net pointer whose inst name matched "u_aes_io/pi_din_in_1"]

          > dbget [dbGet top.nets.instTerms.inst.name u_aes_io/pi_din_in_1 -p3].objType
          net net net

      (2) dbGet [-u]   Removes duplicate objects from the query results so that the results list only contains unique entries.

       (3) dbGet [-i]      The option -i num would select the the numth element starting from 0

         Example:

         > dbGet top.nets.name dout* -p -i 0       [return 1st pointer in the list of the nets whose name matches the pattern dout*]
        
         > dbget [dbGet top.nets.name dout* -p -i 0].name
        
     (4) dbget [-d]   Returns values in database integers. Default: Returns values in floating point user units

             

     (5) dbget [-e]      To avoid NULL (0x0) pointers and results from being printed. This is an optional option of type boolean and would effect all kinds of outputs.

          > dbget top.nets.name

          > llength [dbget top.nets.name]

          > llength [dbget top.nets.name -e]      [with option "-e", the return ignored NULL (0x0) pointers and results ]

          > llength [dbget top.nets {.wires == 0x0}]     [the sum of "0x0" and valid pointers matched total number of wires(5300+66582 = 71882)]

     (6) pattern       Specifies a string expression to use to match object or attribute names, or attribute values.   The software uses simple wildcard matching ( * , ? ).

          > dbGet top.insts.? pstatus

          > dbGet top.insts.? PSTATUS

          > dbGet top.insts.? ps*         [when you use pattern to match object or attribute names, the pattern is case incensitive.]

          > dbGet top.insts.pStatus placed -u

     

     

    PRACTICE:

    • List all cell types used in the design
    • Ensure all your tiehi/tielo connections have tie cells (and are not connected to a rail instead)
    • Get all instTerm names that are tied to tieLo cells
    • Find all instances of a certain cell type
    • List the nets marked in the db as clock net
    • Get database units
    • Report Dont Touch instances:
    • Report Dont Use cells in the database  
    • Get all the sequential cells of a particular module (selectModule <module_name>)
    • Get the instname / cellname of the driver driving a specific net
    • Query max_capfor a list of cells
    • Find non-clock ports in a design
    • Report the clock gate in a design
    • Print all module names in the design
    • Get all leaf cells used in the design
    • To get cells with timing models, use the following command:
    • To get multibit cells and their instance names in a design, use the following command:
    • Apply set_dont_touchon selected instances
    • Report latency of all memories in the design 
    • Script to find and delete nets with no Fanout(Dangling Nets).
    • Script to find Floating input pins in a design.
    • Script to find Floating output pins in a design.
    • Script to report floating Instances in a design.
    • Script to report Floating IO ports in a design.
    • Suppose you want to capture a list of all nets in the design that are connected to IO pins.
    • Find back-to-back Inverter pair: This script traces all the inverter cells having a master cell name, inv, and print back-to-back Inverters in a file.
    • Report the instances of one particular library cell
    • Report the properties of an instance
    • Find the number of fanout loads for the output terminal of the given instance
    • Find out latches in the design
    • Get a list of instance names connected to a specific port, pin or net
    • Upsize driver cells that have high SI effect on nets: This script can be used to upsize driver cells of the nets that have high SI (incremental delay) effect.
    • Reporting cell class, number of instances and area like below:

     ###############################################################################

    Thanks and Best regards,

    Khai Le 

    • Cancel
    • Vote Up 0 Vote Down
    • Cancel

Community Guidelines

The Cadence Design Communities support Cadence users and technologists interacting to exchange ideas, news, technical information, and best practices to solve problems and get the most from Cadence technology. The community is open to everyone, and to provide the most value, we require participants to follow our Community Guidelines that facilitate a quality exchange of ideas and information. By accessing, contributing, using or downloading any materials from the site, you agree to be bound by the full Community Guidelines.

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information