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) 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] How to trace your dbget chain to downgrade? 1) "Tab" menu after period > dbget top. [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 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] 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 num th 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: R eport Dont Use cells in the database Get all the sequential cells of a particular module ( selectModule ) Get the instname / cellname of the driver driving a specific net Query max_cap for 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_touch on 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
↧