DbCommands
DbCommands
CADENCE CONFIDENTIAL
1.0 Overview
1.0 Overview
2.0 Introduction
3.0 Schema Diagrams
4.0 Testing Objects
5.0 Retrieving Object
6.0 Retrieving Object Properties
7.0 Setting Objects
8.0 Adding/Creating/Manipulating Objects
9.0 Deleting Objects
10.0 Examples
11.0 Labs
CADENCE CONFIDENTIAL
Encounter Tcl
Database Access Commands
2.0 Introduction
CADENCE CONFIDENTIAL
CADENCE CONFIDENTIAL
CADENCE CONFIDENTIAL
2.0 Introduction
The following files are searched for and loaded if found:
$ENCOUNTER/etc/enc.tcl ->Project-wide TCL Commands
./enc.tcl -> Design-specific TCL commands
~/enc.tcl -> User-specific TCL commands
these initialization tcl files which run just after FE invocation
Very easy to customize and automate Encounter using Tcl database access commands
Support both hierarchical database access and flat database access
Tcl 8.x for Encounter Fast-Track database access and user programming.
Tk 8.x for Encounter GUI customization.
Loading Tcl source file
source <tcl_file>
$ENCOUNTER/gift/scripts/tcl & $ENCOUNTER/fe/etc/ has examples
updateStatus force <mode> is often used with db access tcl scripts to update the current design
status
CADENCE CONFIDENTIAL
CADENCE CONFIDENTIAL
CADENCE CONFIDENTIAL
2.3 Documentation
Where to get Encounter Documentation?
Click "Help" on the Main Encounter GUI for html
cp $ENCOUNTER/doc/*/*.pdf ~/fedocs/.
soceUG.pdf (Encounter Users Guide)
encounter.pdf (Menu Command Reference)
fetxtcmdref.pdf (Text Command Reference)
soceDBAref.pdf (Database Access Command Reference)
CADENCE CONFIDENTIAL
Solutions
On the next line "close" the square brackets: ]]<CR>
Try "editCmdLine"
stty erase <Control-v> <backspace> <CR>
CADENCE CONFIDENTIAL
instPtr
IO Pin: ftermPtr
netPtr
termPtr
instPtr
10
CADENCE CONFIDENTIAL
Z fterm
instPtr
termPtr
1.
instPtr
netPtr
termPtr
2.
3.
4.
5.
if { [dbIsObjTerm $termPtr] == 1 } {
6.
7.
8.
9.
# print names
10.
selectInst $instName
11.
12.
13.
14.
15.
11
CADENCE CONFIDENTIAL
termPtr
instPtr
Encounter Tcl
Database Access Commands
dbgHead
Head
07/01/05 P. Eichenseer
HilitePtr
SelectPtr
dbHeadFPlan
FPlan
dbForEachHeadPtn
dbForEachHeadCell
dbForEachHeadDPath
Path
HeadTimeLib
DPath
Path
TimeLib
Layer
HeadRule
Clock
dbForEachHeadCell
dbCellFPlan
Cell
Partition
dbForEachGroupHInst
dbForEachHInstTreeInst
dbInstHierHinst
Inst
dbForEachInstTerm
Constraint
(Guide/Fence)
dbHInstConstraint
dbConstraintHInst
Placement Blkg.
dbForEachHInstTreeHInst
dbHInstParent
dbForEachHInstHTerm
dbHTermFTerm
dbFTermHTerm
Routing Blkg.
Fterm
HTerm
dbFtermTerm
dbTermFterm
Term
ptnFeed
ptnPinBlk
dbFTermNet
dbForEachCell
dbForEachCellNet
dbForEachFPlanPtnCut
ptnCut
dbForEachFPlanDefRow
BlackBox
Halo
densityScreen
dbForEachFPlanRouteGuide
Route Guides
Wire
LefPort
dbWireNet dbForEachNetWire
Bump
SNet
Net
TimeArc
LefObs
dbForEachSNetStripBox
StripBox
ConstraintBox
GeomList
dbForEachFPlanGeomList
13 CADENCE CONFIDENTIAL
GeomList
dbSNetNet
Standard Row
dbForEachFPlanScreen
OpCond
dbForEachFTermLefPort
dbTermNet
dbForEachFPlanPtnPinBlk
dbForEachNetTerm
dbForEachFPlanLayerBlk
Clocks
et
stTreeN
achHIn
dbForE
dbTermInst
HInst
dbForEachFPlanObstruct
dbForEachFPlanPtnFeed
DPHinst
dbForEachPathTerm
ll
e
IoC
db
dbForEachFPlanConstraint
IO
DPinst
dbCellPadCell
CellPad
tC
ell
dbForEachFPlanCellPad
bI
ns
Group
ac
hC
ell
Ins
Rule
dbForEachTimingLibOpCond
Clone
Fo
rE
Io
ell
hC
ac
rE
Fo
dbForEachFPlanGroup
db
db
GlobalNetConnection
dbCellFTerm
dbForEachFPlanGlobalNetConnection
dbForEachCellFTerm
dbForEachPtnCloneList
Layer
layerShape
Shape
incr count
}
}
puts "Done. Found $count net(s) that match search criteria."
14
CADENCE CONFIDENTIAL
Head
Design Info
Numbers
Database Units
dbHeadTopCell/dbHeadChipTopCell
dbHeadNrSel
dbHeadPicoFPerDBU
dbHeadName
dbHeadAspectRatio
dbHeadBox
dbHeadNrHilite
dbHeadNrLayer
dbHeadNrLefLayer
dbHeadDBUPerIGU
dbHeadOhmPerDBU
dbHeadDBUPerIoGU
dbHeadCoreBox
dbHeadIoBox
dbHeadIoHgt
dbHeadStdCellHgt
dbHeadNrExtRule
dbHeadNrWireLayer
dbHeadNrExtRulePlus1
dbHeadNPicoSecPerDBU
dbHeadMicroPerDBU
dbHeadDBUPerMGrid
dbHeadBlockMargin
dbHeadBlockAsStdCell
dbHeadSpGlobalLen
dbHeadSpDetailLen
15
CADENCE CONFIDENTIAL
16
CADENCE CONFIDENTIAL
By Name
dbGet<object>ByName <object_name>
Where <object> is one of:
Net, Inst, Term,
By Reference
dbNetTerm
17
CADENCE CONFIDENTIAL
dbSet<Object><Attribute>
Example: Setting a net's weight for Amoeba Placement
dbSetNetUserWt <net_pointer> <weight>
dbSetNetUserWt [dbGetNetByName " SH17/net18028"] 10
dbSetIs<Object><Attribute>
Example: Instructing Trial Route to not route a certain net
dbSetNetIsIgnoreInRoute <net_pointer> <0 | 1>
dbSetNetIsIgnoreInRoute $netPtr 1
18
CADENCE CONFIDENTIAL
incr count
}
}
puts "Done. Found $count net(s) that match search criteria."
19
CADENCE CONFIDENTIAL
}
}
Note: Objects can be hilited without being selected
dbIsInstHilite is not the same as dbIsInstSel
Refer to the number of selected objects in the lower right part of the GUI
20
CADENCE CONFIDENTIAL
encounter
#
proc userCheckArea { Box layerList } {
set NrObj ""
foreach this_layer $layerList {
editSelect -layer $this_layer -area [lindex $Box 0] [lindex $Box 1] [lindex $Box 2] [lindex $Box 3]
if { [dbHeadNrSel] > 0} {
set NrObj "$NrObj $this_layer"
puts "Info: editSelect -layer $this_layer -area [lindex $Box 0] [lindex $Box 1] [lindex $Box 2] [lindex $Box 3]"
}
dbForEachHeadSelPtr [dbgHead] SelPtr {
Puts "Info: found object [dbObjName $SelPtr] of type [dbObjType $SelPtr]"
}
deselectAll
}
return $NrObj
}
21
CADENCE CONFIDENTIAL
Encounter Tcl
Database Access Commands
dbObjType [dbHeadFirstSelPtr]
Returns something like "dbcObjGuide"
Use this to guide your scripting
set count 0
dbForEachFPlanConstraint $floorplanPointer constraint {
if {[string match [dbObjType $constraint] "dbcObjGuide"]} {
puts "Found a guide!"
incr count
}
puts "Done. Found a total of $count floorplan guide(s)."
23
CADENCE CONFIDENTIAL
4. Testing Objects
4-1 general return the constant value of object type
ObjType
dbObjType $objPtr
24
CADENCE CONFIDENTIAL
25
CADENCE CONFIDENTIAL
Encounter Tcl
Database Access Commands
dbgHead
HiLite
Selected
Numbers of things
Example:
proc rptSelectedObjs {} {
dbForEachHeadSel [dbgHead] selPtr {
set objPtr [dbSelPtr $selPtr]
set obj_type [dbObjType $objPtr]
set obj_name [dbObjName $objPtr]
puts $obj_name of type $obj_type is selected
}
}
27
CADENCE CONFIDENTIAL
dbCellFPlan [dbgTopCell]
Standard Row
Obstruct
Layer Blockages
Groups
Partitions
Feeds/Pin Blockages/Cuts
dbForEachFPlanPtnFeed/PtnPinBlk/PtnCut
Constraint(Region/Fence/Guide)
Density Screens
dbForEachFPlanGlobalNetConnection
Example 1:
proc rptPtnNames {} {
puts The following are partitions in this design:
dbForEachCellPtn [dbHeadFPlan] ptnPtr{
set name [dbPtnName $ptnPtr]
puts $name
}
}
28
CADENCE CONFIDENTIAL
29
CADENCE CONFIDENTIAL
30
CADENCE CONFIDENTIAL
5-2 FPlan
Example 2:
CADENCE CONFIDENTIAL
proc userCheckForFenceOverlap { } {
dbForEachFPlanConstraint [dbHeadFPlan] constraintPtr {
set constraintType [dbConstraintType $constraintPtr]
if { $constraintType == "dbcFence" } {
set hinstName1 [dbHInstName [dbConstraintHInst $constraintPtr]]
set box1 [dbConstraintBox $constraintPtr]
dbForEachFPlanConstraint [dbHeadFPlan] constraintPtr2 {
set hinstName2 [dbHInstName [dbConstraintHInst $constraintPtr2]]
if { $constraintType == "dbcFence" } {
set box2 [dbConstraintBox $constraintPtr2]
set yes [dbIsBoxOverlappingOrTouchingBox $box1 $box2]
if { $yes == 1 } {
if { $hinstName1 != $hinstName2 } {
puts "The fences overlap for modules $hinstName1 $hinstName2"
}}}}}}}
32
CADENCE CONFIDENTIAL
Example 4:
###################################################################
# userRptPinGuides reports the name and pins of pin guides
#####################################################################
proc userRptPinGuides { } {
# Usage: dbForEachNetGroupNet <netGroupPtr> <netPtrVar> <body>
# Usage: dbRouteGuideNetGroup <routeGuidePtr>
# Usage: dbRouteGuideBoxList <routeGuidePtr>
# Usage: dbFPlanRouteGuideList <fplanPtr>
set routeGuidePtr [dbFPlanRouteGuideList [dbCellFPlan [dbgTopCell] ] ]
while {"$routeGuidePtr" != "0x0"} {
Puts "RoutingGroup: [dbObjName $routeGuidePtr ]"
set netGroupPtr
[dbRouteGuideNetGroup $routeGuidePtr]
33
CADENCE CONFIDENTIAL
dbgHead
Head
07/01/05 P. Eichenseer
HilitePtr
SelectPtr
dbHeadFPlan
FPlan
dbForEachHeadPtn
dbForEachHeadCell
dbForEachHeadDPath
Path
HeadTimeLib
DPath
Path
TimeLib
Layer
HeadRule
Clock
dbForEachHeadCell
dbCellFPlan
Cell
Partition
dbForEachGroupHInst
dbForEachHInstTreeInst
dbInstHierHinst
Inst
dbForEachInstTerm
Constraint
(Guide/Fence)
dbHInstConstraint
dbConstraintHInst
Placement Blkg.
dbForEachHInstTreeHInst
dbHInstParent
dbForEachHInstHTerm
dbHTermFTerm
dbFTermHTerm
Routing Blkg.
Fterm
HTerm
dbFtermTerm
dbTermFterm
Term
ptnFeed
ptnPinBlk
dbFTermNet
dbForEachCell
dbForEachCellNet
dbForEachFPlanPtnCut
ptnCut
dbForEachFPlanDefRow
BlackBox
Halo
densityScreen
dbForEachFPlanRouteGuide
Route Guides
Wire
LefPort
dbWireNet dbForEachNetWire
Bump
SNet
Net
TimeArc
LefObs
dbForEachSNetStripBox
StripBox
ConstraintBox
GeomList
dbForEachFPlanGeomList
34 CADENCE CONFIDENTIAL
GeomList
dbSNetNet
Standard Row
dbForEachFPlanScreen
OpCond
dbForEachFTermLefPort
dbTermNet
dbForEachFPlanPtnPinBlk
dbForEachNetTerm
dbForEachFPlanLayerBlk
Clocks
et
stTreeN
achHIn
dbForE
dbTermInst
HInst
dbForEachFPlanObstruct
dbForEachFPlanPtnFeed
DPHinst
dbForEachPathTerm
ll
e
IoC
db
dbForEachFPlanConstraint
IO
DPinst
dbCellPadCell
CellPad
tC
ell
dbForEachFPlanCellPad
bI
ns
Group
ac
hC
ell
Ins
Rule
dbForEachTimingLibOpCond
Clone
Fo
rE
Io
ell
hC
ac
rE
Fo
dbForEachFPlanGroup
db
db
GlobalNetConnection
dbCellFTerm
dbForEachFPlanGlobalNetConnection
dbForEachCellFTerm
dbForEachPtnCloneList
Layer
layerShape
Shape
dbgTopCell
HeadCell
Cell
dbGetCellByName
Example 1:
proc doesCellExist { cell } {
dbForEachHeadCell [dbgHead] cellPtr {
if { $cell == [dbCellName $cellPtr] } {
puts The cell $cell does exist.
}
}
Example 2:
proc userFindCellByCellName {cellNamePattern} {
set cellNameList {}
dbForEachHeadCell [dbgHead] cellPtr {
if [string match $cellNamePattern [dbCellName $cellPtr]] {
lappend cellNameList [dbCellName $cellPtr]
}
}
return $cellNameList
}
35
CADENCE CONFIDENTIAL
Cell
FTerm
FPin
Via
36
CADENCE CONFIDENTIAL
OBS (dbsLefOBS)
CADENCE CONFIDENTIAL
dbForEachCellLefOBS
if (dbLefObsType == dbLefObsTypeVia) { /* viaobs */
dbViaCell = dbGetLefObsViaCell(obs);
dbsLoc loc = dbmGetObsViaLoc(obs);
} else { /* obs on one layer, maybe metal, cut, or overlap layer */
dbLayer = dbLefObsLayer(obs);
dbForEachLefOBSShape(obs, shape)
/* shape access routines */
}
}
}
38
CADENCE CONFIDENTIAL
39
CADENCE CONFIDENTIAL
dbgHead
Head
07/01/05 P. Eichenseer
HilitePtr
SelectPtr
dbHeadFPlan
FPlan
dbForEachHeadPtn
dbForEachHeadCell
dbForEachHeadDPath
Path
HeadTimeLib
DPath
Path
TimeLib
Layer
HeadRule
Clock
dbForEachHeadCell
dbCellFPlan
Cell
Partition
dbForEachGroupHInst
Inst
dbForEachHInstTreeInst
dbInstHierHinst
dbForEachInstTerm
Constraint
(Guide/Fence)
dbHInstConstraint
dbConstraintHInst
Placement Blkg.
dbForEachHInstTreeHInst
dbHInstParent
dbForEachHInstHTerm
dbHTermFTerm
dbFTermHTerm
Routing Blkg.
Fterm
HTerm
dbFtermTerm
dbTermFterm
Term
ptnFeed
ptnPinBlk
dbFTermNet
dbForEachCell
dbForEachCellNet
dbForEachFPlanPtnCut
ptnCut
dbForEachFPlanDefRow
BlackBox
Halo
densityScreen
dbForEachFPlanRouteGuide
Route Guides
Wire
LefPort
dbWireNet dbForEachNetWire
Bump
SNet
Net
TimeArc
LefObs
dbForEachSNetStripBox
StripBox
ConstraintBox
GeomList
dbForEachFPlanGeomList
40 CADENCE CONFIDENTIAL
GeomList
dbSNetNet
Standard Row
dbForEachFPlanScreen
OpCond
dbForEachFTermLefPort
dbTermNet
dbForEachFPlanPtnPinBlk
dbForEachNetTerm
dbForEachFPlanLayerBlk
Clocks
et
stTreeN
achHIn
dbForE
dbTermInst
HInst
dbForEachFPlanObstruct
dbForEachFPlanPtnFeed
DPHinst
dbForEachPathTerm
ll
e
IoC
db
dbForEachFPlanConstraint
IO
DPinst
dbCellPadCell
CellPad
tC
ell
dbForEachFPlanCellPad
bI
ns
Group
ac
hC
ell
Ins
Rule
dbForEachTimingLibOpCond
Clone
Fo
rE
Io
ell
hC
ac
rE
Fo
dbForEachFPlanGroup
db
db
GlobalNetConnection
dbCellFTerm
dbForEachFPlanGlobalNetConnection
dbForEachCellFTerm
dbForEachPtnCloneList
Layer
layerShape
Shape
InstByName
dbGetInstByName $instName
Eample:
proc userSelectInsts { matchName } {
Puts "\n\n\nInfo: Checking for instance names pattern matching $matchName...\n"
set cnt_inst 0
dbForEachCellInst [dbgTopCell] instPtr {
set instName [dbInstName $instPtr]
if [string match $matchName $instName] {
incr cnt_inst
Puts "\tInstance: $instName"
selectInst $instName
}
}
Puts "\nInfo: Selected $cnt_inst instance(s)\n"
.s redraw
}
41
CADENCE CONFIDENTIAL
dbgHead
Head
07/01/05 P. Eichenseer
HilitePtr
SelectPtr
dbHeadFPlan
FPlan
dbForEachHeadPtn
dbForEachHeadCell
dbForEachHeadDPath
Path
HeadTimeLib
DPath
Path
TimeLib
Layer
HeadRule
Clock
dbForEachHeadCell
dbCellFPlan
Cell
Partition
dbForEachGroupHInst
dbForEachHInstTreeInst
dbInstHierHinst
Inst
dbForEachInstTerm
Constraint
(Guide/Fence)
dbHInstConstraint
dbConstraintHInst
Placement Blkg.
dbForEachHInstTreeHInst
dbHInstParent
dbForEachHInstHTerm
dbHTermFTerm
dbFTermHTerm
Routing Blkg.
Fterm
HTerm
dbFtermTerm
dbTermFterm
Term
ptnFeed
ptnPinBlk
dbFTermNet
dbForEachCell
dbForEachCellNet
dbForEachFPlanPtnCut
ptnCut
dbForEachFPlanDefRow
BlackBox
Halo
densityScreen
dbForEachFPlanRouteGuide
Route Guides
Wire
LefPort
dbWireNet dbForEachNetWire
Bump
SNet
Net
TimeArc
LefObs
dbForEachSNetStripBox
StripBox
ConstraintBox
GeomList
dbForEachFPlanGeomList
42 CADENCE CONFIDENTIAL
GeomList
dbSNetNet
Standard Row
dbForEachFPlanScreen
OpCond
dbForEachFTermLefPort
dbTermNet
dbForEachFPlanPtnPinBlk
dbForEachNetTerm
dbForEachFPlanLayerBlk
Clocks
et
stTreeN
achHIn
dbForE
dbTermInst
HInst
dbForEachFPlanObstruct
dbForEachFPlanPtnFeed
DPHinst
dbForEachPathTerm
ll
e
IoC
db
dbForEachFPlanConstraint
IO
DPinst
dbCellPadCell
CellPad
tC
ell
dbForEachFPlanCellPad
bI
ns
Group
ac
hC
ell
Ins
Rule
dbForEachTimingLibOpCond
Clone
Fo
rE
Io
ell
hC
ac
rE
Fo
dbForEachFPlanGroup
db
db
GlobalNetConnection
dbCellFTerm
dbForEachFPlanGlobalNetConnection
dbForEachCellFTerm
dbForEachPtnCloneList
Layer
layerShape
Shape
dbGetHInstByName $hinstPtr
HInstTreeHInst
InstHInst
dbInstHInst $hinstPtr
Parent
dbHInstParent $hinstPtr
Cell
dbCellHInst $cellPtr
Example:
proc rptNamesOfSelectedModules { } {
dbForEachHeadSelPtr [dbgHead] objPtr {
set objName [dbObjName $objPtr]
set obj_type [dbObjType $objPtr]
if { $obj_type == "dbcObjHInst" } {
set hierCell [dbHInstCellName $objPtr]
puts Module $hierCell is selected
}
}
}
43
CADENCE CONFIDENTIAL
Example 2:
dbForEachCellPtn [dbgTopCell] ptnPtr {
set ptnName [dbPtnName $ptnPtr]
set ptnCellPtr [dbPtnCell $ptnPtr]
set name [dbCellName $ptnCellPtr]
dbForEachHInstTreeHInst [dbCellHInst [dbgTopCell]] hinstPtr {
if [dbIsHInstHInst $hinstPtr] {
set hinstName [dbHInstName $hinstPtr]
set cellName [dbHInstCellName $hinstPtr]
if { $name == $cellName } {
44
CADENCE CONFIDENTIAL
dbgHead
Head
07/01/05 P. Eichenseer
HilitePtr
SelectPtr
dbHeadFPlan
FPlan
dbForEachHeadPtn
dbForEachHeadCell
dbForEachHeadDPath
Path
HeadTimeLib
DPath
Path
TimeLib
Layer
HeadRule
Clock
dbForEachHeadCell
dbCellFPlan
Cell
Partition
dbForEachGroupHInst
dbForEachHInstTreeInst
dbInstHierHinst
Inst
dbForEachInstTerm
Constraint
(Guide/Fence)
dbHInstConstraint
dbConstraintHInst
Placement Blkg.
dbForEachHInstTreeHInst
dbHInstParent
dbForEachHInstHTerm
dbHTermFTerm
dbFTermHTerm
Routing Blkg.
Fterm
HTerm
dbFtermTerm
dbTermFterm
Term
ptnFeed
ptnPinBlk
dbFTermNet
dbForEachCell
dbForEachCellNet
dbForEachFPlanPtnCut
ptnCut
dbForEachFPlanDefRow
BlackBox
Halo
densityScreen
dbForEachFPlanRouteGuide
Route Guides
Wire
LefPort
dbWireNet dbForEachNetWire
Bump
SNet
Net
TimeArc
LefObs
dbForEachSNetStripBox
StripBox
ConstraintBox
GeomList
dbForEachFPlanGeomList
45 CADENCE CONFIDENTIAL
GeomList
dbSNetNet
Standard Row
dbForEachFPlanScreen
OpCond
dbForEachFTermLefPort
dbTermNet
dbForEachFPlanPtnPinBlk
dbForEachNetTerm
dbForEachFPlanLayerBlk
Clocks
et
stTreeN
achHIn
dbForE
dbTermInst
HInst
dbForEachFPlanObstruct
dbForEachFPlanPtnFeed
DPHinst
dbForEachPathTerm
ll
e
IoC
db
dbForEachFPlanConstraint
IO
DPinst
dbCellPadCell
CellPad
tC
ell
dbForEachFPlanCellPad
bI
ns
Group
ac
hC
ell
Ins
Rule
dbForEachTimingLibOpCond
Clone
Fo
rE
Io
ell
hC
ac
rE
Fo
dbForEachFPlanGroup
db
db
GlobalNetConnection
dbCellFTerm
dbForEachFPlanGlobalNetConnection
dbForEachCellFTerm
dbForEachPtnCloneList
Layer
layerShape
Shape
Example:
proc userRptHInst { hinstPtr } {
Behavior of dbForEachHInstHTerm
had been changed from v3.2 to 3.3.
46
CADENCE CONFIDENTIAL
On 3.3, dbForEachHInstHTerm
ruturns all HTerm and [dbHTermNet
$HTerm] returns "0x0" as net
pointer for HTerm which doesn't
have any net connection. Thus, one
should test whether the net is not
0x0 before using the pointer.
dbgHead
Head
07/01/05 P. Eichenseer
HilitePtr
SelectPtr
dbHeadFPlan
FPlan
dbForEachHeadPtn
dbForEachHeadCell
dbForEachHeadDPath
Path
HeadTimeLib
DPath
Path
TimeLib
Layer
HeadRule
Clock
dbForEachHeadCell
dbCellFPlan
Cell
Partition
dbForEachGroupHInst
dbForEachHInstTreeInst
dbInstHierHinst
Inst
dbForEachInstTerm
Constraint
(Guide/Fence)
dbHInstConstraint
dbConstraintHInst
Placement Blkg.
dbForEachHInstTreeHInst
dbHInstParent
dbForEachHInstHTerm
dbHTermFTerm
dbFTermHTerm
Routing Blkg.
Fterm
HTerm
dbFtermTerm
dbTermFterm
Term
ptnFeed
ptnPinBlk
dbFTermNet
dbForEachCell
dbForEachCellNet
dbForEachFPlanPtnCut
ptnCut
dbForEachFPlanDefRow
BlackBox
Halo
densityScreen
dbForEachFPlanRouteGuide
Route Guides
Wire
LefPort
dbWireNet dbForEachNetWire
Bump
SNet
Net
TimeArc
LefObs
dbForEachSNetStripBox
StripBox
ConstraintBox
GeomList
dbForEachFPlanGeomList
47 CADENCE CONFIDENTIAL
GeomList
dbSNetNet
Standard Row
dbForEachFPlanScreen
OpCond
dbForEachFTermLefPort
dbTermNet
dbForEachFPlanPtnPinBlk
dbForEachNetTerm
dbForEachFPlanLayerBlk
Clocks
et
stTreeN
achHIn
dbForE
dbTermInst
HInst
dbForEachFPlanObstruct
dbForEachFPlanPtnFeed
DPHinst
dbForEachPathTerm
ll
e
IoC
db
dbForEachFPlanConstraint
IO
DPinst
dbCellPadCell
CellPad
tC
ell
dbForEachFPlanCellPad
bI
ns
Group
ac
hC
ell
Ins
Rule
dbForEachTimingLibOpCond
Clone
Fo
rE
Io
ell
hC
ac
rE
Fo
dbForEachFPlanGroup
db
db
GlobalNetConnection
dbCellFTerm
dbForEachFPlanGlobalNetConnection
dbForEachCellFTerm
dbForEachPtnCloneList
Layer
layerShape
Shape
5-7 HTerm
Example 2:
proc userRptFloatingPortsOnModules {} {
set delimiter [dbgHierChar]
set list_hinsts {}
dbForEachCellNet [dbgTopCelll] netPtr {
set flag 0
for { set i 0 } { $i < $length } {incr i } {
if { $inst_hier1 == [lindex $list_hinsts $i] } {
set flag 1
}}
if { $flag == 0 } {
set hinstName [dbHInstCellName [dbGetHInstByName $inst_hier1]]
lappend list_hinsts $hinstName
}
}
}
48
CADENCE CONFIDENTIAL
5-7 HTerm
Example 2 (Continued):
# now go through all verilog connections and see
dbForEachHInstHInst [dbCellHInst [dbgTopCell]] hinstPtr {
set hinstName [dbHInstCellName $hinstPtr]
if [dbIsHInstHInst $hinstPtr] {
dbForEachHInstHTerm $hinstPtr HTermPtr {
set ftermPtr [dbHTermFTerm $HTermPtr $hinstPtr]
set ftermName [dbFTermName $ftermPtr]
set netPtr [dbHTermNet $HTermPtr]
set netName2 [dbNetName $netPtr]
if { $netName == $netName2 } {
#
}
}
49
CADENCE CONFIDENTIAL
dbgHead
Head
07/01/05 P. Eichenseer
HilitePtr
SelectPtr
dbHeadFPlan
FPlan
dbForEachHeadPtn
dbForEachHeadCell
dbForEachHeadDPath
Path
HeadTimeLib
DPath
Path
TimeLib
Layer
HeadRule
Clock
dbForEachHeadCell
dbCellFPlan
Cell
Partition
dbForEachGroupHInst
Inst
dbForEachHInstTreeInst
dbInstHierHinst
dbForEachInstTerm
Constraint
(Guide/Fence)
dbHInstConstraint
dbConstraintHInst
Placement Blkg.
dbForEachHInstTreeHInst
dbHInstParent
dbForEachHInstHTerm
dbHTermFTerm
dbFTermHTerm
Routing Blkg.
Fterm
HTerm
dbFtermTerm
dbTermFterm
Term
ptnPinBlk
dbFTermNet
dbForEachCell
dbForEachCellNet
dbForEachFPlanPtnCut
ptnCut
dbForEachFPlanDefRow
BlackBox
Halo
densityScreen
dbForEachFPlanRouteGuide
Route Guides
Wire
LefPort
dbWireNet dbForEachNetWire
Bump
SNet
Net
TimeArc
LefObs
dbForEachSNetStripBox
StripBox
ConstraintBox
GeomList
dbForEachFPlanGeomList
50 CADENCE CONFIDENTIAL
GeomList
OpCond
dbSNetNet
Standard Row
dbForEachFPlanScreen
dbTermNet
ptnFeed
dbForEachFPlanPtnPinBlk
dbForEachNetTerm
dbForEachFPlanLayerBlk
Clocks
et
stTreeN
achHIn
dbForE
dbTermInst
HInst
dbForEachFPlanObstruct
dbForEachFPlanPtnFeed
DPHinst
dbForEachPathTerm
ll
e
IoC
db
dbForEachFPlanConstraint
IO
DPinst
dbCellPadCell
CellPad
tC
ell
dbForEachFPlanCellPad
bI
ns
Group
ac
hC
ell
Ins
Rule
dbForEachTimingLibOpCond
Clone
Fo
rE
Io
ell
hC
ac
rE
Fo
dbForEachFPlanGroup
db
db
GlobalNetConnection
dbCellFTerm
dbForEachFPlanGlobalNetConnection
dbForEachCellFTerm
dbForEachPtnCloneList
Layer
layerShape
Shape
InstInputTerm
InstOutputTerm
TermByName
Example:
proc scanTracePath { startTermPoint } {
"\n\n\nInfo: Tracing scan chain starting at $startTermPoint...\n"
set delimiter [dbgHierChar]
set hier_list [split $startTermPoint $delimiter]
set cnt 0
foreach i $hier_list {
incr cnt
}
set startTermIndex [expr $cnt - 1]
set startTerm [lindex $hier_list $startTermIndex]
set inst_list ""
set cnt 0
foreach i $hier_list {
incr cnt
if { $cnt <= $startTermIndex } {
set inst_list [concat $inst_list $i]
}
}
set startInst [join $inst_list $delimiter]
set startTermPtr [dbGetTermByName $startInst $startTerm]
51
CADENCE CONFIDENTIAL
dbgHead
Head
07/01/05 P. Eichenseer
HilitePtr
SelectPtr
dbHeadFPlan
FPlan
dbForEachHeadPtn
dbForEachHeadCell
dbForEachHeadDPath
Path
HeadTimeLib
DPath
Path
TimeLib
Layer
HeadRule
Clock
dbForEachHeadCell
dbCellFPlan
Cell
Partition
dbForEachGroupHInst
dbForEachHInstTreeInst
dbInstHierHinst
Inst
dbForEachInstTerm
Constraint
(Guide/Fence)
dbHInstConstraint
dbConstraintHInst
Placement Blkg.
dbForEachHInstTreeHInst
dbHInstParent
dbForEachHInstHTerm
dbHTermFTerm
dbFTermHTerm
Routing Blkg.
Fterm
HTerm
dbFtermTerm
dbTermFterm
Term
ptnFeed
ptnPinBlk
dbFTermNet
dbForEachCell
dbForEachCellNet
dbForEachFPlanPtnCut
ptnCut
dbForEachFPlanDefRow
BlackBox
Halo
densityScreen
dbForEachFPlanRouteGuide
Route Guides
Wire
LefPort
dbWireNet dbForEachNetWire
Bump
SNet
Net
TimeArc
LefObs
dbForEachSNetStripBox
StripBox
ConstraintBox
GeomList
dbForEachFPlanGeomList
52 CADENCE CONFIDENTIAL
GeomList
dbSNetNet
Standard Row
dbForEachFPlanScreen
OpCond
dbForEachFTermLefPort
dbTermNet
dbForEachFPlanPtnPinBlk
dbForEachNetTerm
dbForEachFPlanLayerBlk
Clocks
et
stTreeN
achHIn
dbForE
dbTermInst
HInst
dbForEachFPlanObstruct
dbForEachFPlanPtnFeed
DPHinst
dbForEachPathTerm
ll
e
IoC
db
dbForEachFPlanConstraint
IO
DPinst
dbCellPadCell
CellPad
tC
ell
dbForEachFPlanCellPad
bI
ns
Group
ac
hC
ell
Ins
Rule
dbForEachTimingLibOpCond
Clone
Fo
rE
Io
ell
hC
ac
rE
Fo
dbForEachFPlanGroup
db
db
GlobalNetConnection
dbCellFTerm
dbForEachFPlanGlobalNetConnection
dbForEachCellFTerm
dbForEachPtnCloneList
Layer
layerShape
Shape
InputFterm
dbForEachCellInputFTerm [dbgTopCell] {}
OutputFTerm
dbForEachCellOutputFTerm [dbgTopCell] {}
FTermByName
FTermNet
dbFTermNet $startFTermPtr
HTermFTerm
dbHTermFTerm $ftermPtr
Example 1:
proc userFixPins {} {
dbForEachCellInputFTerm [dbgTopCell] ftermpointer {
dbSetIsFTermPreassigned $ftermpointer 1
}
dbForEachCellOutputFTerm [dbgTopCell] ftermpointer {
dbSetIsFTermPreassigned $ftermpointer 1
}
}
53
CADENCE CONFIDENTIAL
54
CADENCE CONFIDENTIAL
55
CADENCE CONFIDENTIAL
56
CADENCE CONFIDENTIAL
dbgHead
Head
07/01/05 P. Eichenseer
HilitePtr
SelectPtr
dbHeadFPlan
FPlan
dbForEachHeadPtn
dbForEachHeadCell
dbForEachHeadDPath
Path
HeadTimeLib
DPath
Path
TimeLib
Layer
HeadRule
Clock
dbForEachHeadCell
dbCellFPlan
Cell
Partition
dbForEachGroupHInst
dbForEachHInstTreeInst
dbInstHierHinst
Inst
dbForEachInstTerm
Constraint
(Guide/Fence)
dbHInstConstraint
dbConstraintHInst
Placement Blkg.
dbForEachHInstTreeHInst
dbHInstParent
dbForEachHInstHTerm
dbHTermFTerm
dbFTermHTerm
Routing Blkg.
Fterm
HTerm
dbFtermTerm
dbTermFterm
Term
ptnFeed
ptnPinBlk
dbFTermNet
dbForEachCell
dbForEachCellNet
dbForEachFPlanPtnCut
ptnCut
dbForEachFPlanDefRow
BlackBox
Halo
densityScreen
dbForEachFPlanRouteGuide
Route Guides
Wire
LefPort
dbWireNet dbForEachNetWire
Bump
SNet
Net
TimeArc
LefObs
dbForEachSNetStripBox
StripBox
ConstraintBox
GeomList
dbForEachFPlanGeomList
57 CADENCE CONFIDENTIAL
GeomList
dbSNetNet
Standard Row
dbForEachFPlanScreen
OpCond
dbForEachFTermLefPort
dbTermNet
dbForEachFPlanPtnPinBlk
dbForEachNetTerm
dbForEachFPlanLayerBlk
Clocks
et
stTreeN
achHIn
dbForE
dbTermInst
HInst
dbForEachFPlanObstruct
dbForEachFPlanPtnFeed
DPHinst
dbForEachPathTerm
ll
e
IoC
db
dbForEachFPlanConstraint
IO
DPinst
dbCellPadCell
CellPad
tC
ell
dbForEachFPlanCellPad
bI
ns
Group
ac
hC
ell
Ins
Rule
dbForEachTimingLibOpCond
Clone
Fo
rE
Io
ell
hC
ac
rE
Fo
dbForEachFPlanGroup
db
db
GlobalNetConnection
dbCellFTerm
dbForEachFPlanGlobalNetConnection
dbForEachCellFTerm
dbForEachPtnCloneList
Layer
layerShape
Shape
proc userSetIONetWeight { } {
dbForEachCellInputFTerm [dbgTopCell] ioPtr {
set ioNetPtr [dbTermNet $ioPtr]
set ioNetName [dbNetName $ioNetPtr]
puts "Setting weight on INPUT net: $ioNetName"
specifyNetWeight $ioNetName 10
}
dbForEachCellOutputFTerm [dbgTopCell] ioPtr {
set ioNetPtr [dbTermNet $ioPtr]
set ioNetName [dbNetName $ioNetPtr]
puts "Setting weight on OUTPUT net: $ioNetName"
specifyNetWeight $ioNetName 5
}
}
58
CADENCE CONFIDENTIAL
59
CADENCE CONFIDENTIAL
dbgHead
Head
07/01/05 P. Eichenseer
HilitePtr
SelectPtr
dbHeadFPlan
FPlan
dbForEachHeadPtn
dbForEachHeadCell
dbForEachHeadDPath
Path
HeadTimeLib
DPath
Path
TimeLib
Layer
HeadRule
Clock
dbForEachHeadCell
dbCellFPlan
Cell
Partition
dbForEachGroupHInst
dbForEachHInstTreeInst
dbInstHierHinst
Inst
dbForEachInstTerm
Constraint
(Guide/Fence)
dbHInstConstraint
dbConstraintHInst
Placement Blkg.
dbForEachHInstTreeHInst
dbHInstParent
dbForEachHInstHTerm
dbHTermFTerm
dbFTermHTerm
Routing Blkg.
Fterm
HTerm
dbFtermTerm
dbTermFterm
Term
ptnFeed
ptnPinBlk
dbFTermNet
dbForEachCell
dbForEachCellNet
dbForEachFPlanPtnCut
ptnCut
dbForEachFPlanDefRow
BlackBox
Halo
densityScreen
dbForEachFPlanRouteGuide
Route Guides
Wire
LefPort
dbWireNet dbForEachNetWire
Bump
SNet
Net
TimeArc
LefObs
dbForEachSNetStripBox
StripBox
ConstraintBox
GeomList
dbForEachFPlanGeomList
60 CADENCE CONFIDENTIAL
GeomList
dbSNetNet
Standard Row
dbForEachFPlanScreen
OpCond
dbForEachFTermLefPort
dbTermNet
dbForEachFPlanPtnPinBlk
dbForEachNetTerm
dbForEachFPlanLayerBlk
Clocks
et
stTreeN
achHIn
dbForE
dbTermInst
HInst
dbForEachFPlanObstruct
dbForEachFPlanPtnFeed
DPHinst
dbForEachPathTerm
ll
e
IoC
db
dbForEachFPlanConstraint
IO
DPinst
dbCellPadCell
CellPad
tC
ell
dbForEachFPlanCellPad
bI
ns
Group
ac
hC
ell
Ins
Rule
dbForEachTimingLibOpCond
Clone
Fo
rE
Io
ell
hC
ac
rE
Fo
dbForEachFPlanGroup
db
db
GlobalNetConnection
dbCellFTerm
dbForEachFPlanGlobalNetConnection
dbForEachCellFTerm
dbForEachPtnCloneList
Layer
layerShape
Shape
61
CellNet
P/G Nets
dbGetSNetByName $name
TermNetFTermNet/HTermNet
dbTermNet $termPtr
NetTerm
NetOutputTerm
NetInputTerm
NetByName
dbGetNetByName $netName
WireNet
dbWireNet $objPtr
HInstTreeNet
dbForEachHInstTreeNet
CADENCE CONFIDENTIAL
62
CADENCE CONFIDENTIAL
dbgHead
Head
07/01/05 P. Eichenseer
HilitePtr
SelectPtr
dbHeadFPlan
FPlan
dbForEachHeadPtn
dbForEachHeadCell
dbForEachHeadDPath
Path
HeadTimeLib
DPath
Path
TimeLib
Layer
HeadRule
Clock
dbForEachHeadCell
dbCellFPlan
Cell
Partition
dbForEachGroupHInst
dbForEachHInstTreeInst
dbInstHierHinst
Inst
dbForEachInstTerm
Constraint
(Guide/Fence)
dbHInstConstraint
dbConstraintHInst
Placement Blkg.
dbForEachHInstTreeHInst
dbHInstParent
dbForEachHInstHTerm
dbHTermFTerm
dbFTermHTerm
Routing Blkg.
Fterm
HTerm
dbFtermTerm
dbTermFterm
Term
ptnFeed
ptnPinBlk
dbFTermNet
dbForEachCell
dbForEachCellNet
dbForEachFPlanPtnCut
ptnCut
dbForEachFPlanDefRow
BlackBox
Halo
densityScreen
dbForEachFPlanRouteGuide
Route Guides
dbForEachFTermLefPort
Wire
LefPort
dbWireNet dbForEachNetWire
Bump
SNet
Net
TimeArc
LefObs
dbForEachSNetStripBox
StripBox
ConstraintBox
GeomList
dbForEachFPlanGeomList
63 CADENCE CONFIDENTIAL
GeomList
OpCond
dbSNetNet
Standard Row
dbForEachFPlanScreen
dbTermNet
dbForEachFPlanPtnPinBlk
dbForEachNetTerm
q
dbForEachFPlanLayerBlk
Clocks
et
stTreeN
achHIn
dbForE
dbTermInst
HInst
dbForEachFPlanObstruct
dbForEachFPlanPtnFeed
DPHinst
dbForEachPathTerm
ll
e
IoC
db
dbForEachFPlanConstraint
IO
DPinst
dbCellPadCell
CellPad
tC
ell
dbForEachFPlanCellPad
bI
ns
Group
ac
hC
ell
Ins
Rule
dbForEachTimingLibOpCond
Clone
Fo
rE
Io
ell
hC
ac
rE
Fo
dbForEachFPlanGroup
db
db
GlobalNetConnection
dbCellFTerm
dbForEachFPlanGlobalNetConnection
dbForEachCellFTerm
dbForEachPtnCloneList
Layer
layerShape
Shape
64
CADENCE CONFIDENTIAL
dbgHead
Head
07/01/05 P. Eichenseer
HilitePtr
SelectPtr
dbHeadFPlan
FPlan
dbForEachHeadPtn
dbForEachHeadCell
dbForEachHeadDPath
Path
HeadTimeLib
DPath
Path
TimeLib
Layer
HeadRule
Clock
dbForEachHeadCell
dbCellFPlan
Cell
Partition
dbForEachGroupHInst
dbForEachHInstTreeInst
dbInstHierHinst
Inst
dbForEachInstTerm
Constraint
(Guide/Fence)
dbHInstConstraint
dbConstraintHInst
Placement Blkg.
dbForEachHInstTreeHInst
dbHInstParent
dbForEachHInstHTerm
dbHTermFTerm
dbFTermHTerm
Routing Blkg.
Fterm
HTerm
dbFtermTerm
dbTermFterm
Term
ptnFeed
ptnPinBlk
dbFTermNet
dbForEachCell
dbForEachCellNet
dbForEachFPlanPtnCut
ptnCut
dbForEachFPlanDefRow
BlackBox
Halo
densityScreen
dbForEachFPlanRouteGuide
Route Guides
dbForEachFTermLefPort
Wire
LefPort
dbWireNet dbForEachNetWire
Bump
SNet
Net
TimeArc
LefObs
dbForEachSNetStripBox
StripBox
ConstraintBox
GeomList
dbForEachFPlanGeomList
65 CADENCE CONFIDENTIAL
GeomList
OpCond
dbSNetNet
Standard Row
dbForEachFPlanScreen
dbTermNet
dbForEachFPlanPtnPinBlk
dbForEachNetTerm
q
dbForEachFPlanLayerBlk
Clocks
et
stTreeN
achHIn
dbForE
dbTermInst
HInst
dbForEachFPlanObstruct
dbForEachFPlanPtnFeed
DPHinst
dbForEachPathTerm
ll
e
IoC
db
dbForEachFPlanConstraint
IO
DPinst
dbCellPadCell
CellPad
tC
ell
dbForEachFPlanCellPad
bI
ns
Group
ac
hC
ell
Ins
Rule
dbForEachTimingLibOpCond
Clone
Fo
rE
Io
ell
hC
ac
rE
Fo
dbForEachFPlanGroup
db
db
GlobalNetConnection
dbCellFTerm
dbForEachFPlanGlobalNetConnection
dbForEachCellFTerm
dbForEachPtnCloneList
Layer
layerShape
Shape
66
CADENCE CONFIDENTIAL
67
CADENCE CONFIDENTIAL
68
CADENCE CONFIDENTIAL
69
CADENCE CONFIDENTIAL
70
CADENCE CONFIDENTIAL
71
CADENCE CONFIDENTIAL
WireNet
dbWireNet $wirePtr
WireInfo
dbWireInfo $wirePtr
Example 1:
proc rptSelectedTotalWireLength {} {
set s [dbHeadSelList]
set objPtr [dbSelPtr $s]
set netPtr [dbWireNet $objPtr]
set netName [dbNetName $netPtr]
dbForEachNetWire $netPtr segmentPtr {
set segLength [dbWireLen $segmentPtr]
set wireLength [expr $wireLength+$segLength]
}
puts Wire $netName has a length of: [expr $wireLength*[dbHeadMicronPerDBU]] um"
}
72
CADENCE CONFIDENTIAL
73
CADENCE CONFIDENTIAL
dbGetViaCellByName $viaCellPtr
dbInfoVia $viaCellPtr
Examples:
proc printOneVia {viaName} {
set viaCellPtr [dbGetViaCellByName $viaName]
set loc [dbViaLoc $viaPtr]
set name [dbViaCellName $viaCellPtr]
puts "
}
set cutbox [dbViaCellCutBox [dbGetViaCellByName VIA23]]
set x1 [lindex $cutbox 0]
set y1 [lindex $cutbox 1]
set x2 [lindex $cutbox 2]
set y2 [lindex $cutbox 3]
set width [expr [$x2 - $x1]
set height [expr [$y2 - $y1]]
74
CADENCE CONFIDENTIAL
5-12 Technology
Timing Lib
dbTimeLibName timeLibPtr
Layer
Rule
dbHeadRule [dbgHead]
ExtendedRule
dbHeadExtRuleList [dbgHead]
Clocks
dbForEachHeadClock [dbgHead]
TechSite
dbTechSiteName
The dbLayer* commands access layer rules. The dbLayerRule* and dbLayerExtededRule* are for
non-default rules
75
CADENCE CONFIDENTIAL
Example 1:
proc rptTimeLibs {} {
dbForEachHeadTimeLib [dbgHead] tlibPtr {
set name [ dbTimeLibName tlibPtr]
puts Timing library name = $name
}
Output:
Timing library name = t25lib_tt
Example 3:
#####################################
#
# userGetClockRoot gets the clock roots of all clocks
#
####################################
proc userGetClockRoot {} {
getClock
dbForEachHeadClock [dbgHead] clockptr {
set clockName [dbClockName $clockptr]
}
}
Example 2:
getClock
proc
dbForEachHeadClock [dbgHead] clockPtr {
if {[string match [dbClockName $clockPtr] "my_clock_name"]} {
puts "[dbClockName $clockPtr] [dbClockRate $clockPtr]"
}
}
76
CADENCE CONFIDENTIAL
5-12 Technology
Example 4:
set layer_list [list M1 M2 M3 M4 M5 M6 M7]
77
CADENCE CONFIDENTIAL
5-12 Technology
Example 5:
encounter 5> dbHeadNrExtRule [dbgHead]
10
encounter 6> dbExtRuleName [dbHeadExtRuleList [dbgHead]]
WMRULE1P5_1
encounter 7> dbForEachExtRuleLayerRuleList [dbHeadExtRuleList [dbgHead]] layerRulePtr
{ puts "[dbLayerRuleMinSpacing $layerRulePtr]"}
460
560
920
There are 10 extended rules. The first non-default rule is named WMRULE1P5_1. The
minimum spacings for WMRULE1P5_1 are .46, .56 and .92.
78
CADENCE CONFIDENTIAL
Pads
Groups
dbGroupPowerDomain $groupPtr
Ground Nets
dbPowerDomainGNet powerDomainPtr
Power Nets
dbPowerDomainPNet powerDomainPtr
Example1:
dbForEachPowerDomain [dbgHead] powerDomainPtr {
set powerNetName [dbPowerDomainPNet $powerDomain]
puts Power net = $powerNetName
}
Output:
VDD1
Example2:
proc userRptPowerDomainBoxes { } {
dbForEachFPlanGroup [dbHeadFPlan] group {
if {[dbIsGroupPowerDomain $group]} {
puts "[dbGroupBox $group]"
}
}
}
79
CADENCE CONFIDENTIAL
Properties
dbForEachObjProp / dbGetOrCreatePropByName
Register type
Example:
proc user_inst_props {} {
dbRegisterPropType CORE_ROW Core Route TOP, BOTTOM, etc" str
dbRegisterPropType CORE_SOURCE Core Route CORE or PERIPHERY" str
dbForEachCellInst [dbgTopCell] instPtr {
if { [dbIsInstPlaced $instPtr] == 1 } {
set rowPtr [ dbGetOrCreatePropByName $inst CORE_ROW ]
set srcPtr [ dbGetOrCreatePropByName $inst CORE_SOURCE ]
dbSetPropValue $rowPtr "TOP"
dbSetPropValue $srcPtr "CORE"
set iName [dbInstName $inst]
set cName [dbInstCellName $inst]
puts [format " instPtr = %-s instName = %-s cellName = %-s" $inst $iName $cName ]
}}}
80
CADENCE CONFIDENTIAL
81
CADENCE CONFIDENTIAL
Encounter Tcl
Database Access Commands
Aspect ratio
dbHeadAspectRatio [dbgHead]
dbHeadBox [dbgHead]
dbHeadCoreBox [dbgHead]
FPlanBox
dbFPlanBox
CoreBox
dbFPlanCoreBox
dbHeadIoBox [dbgHead]
Standard Row
dbRowBox
dbFPlanNrRow
dbRowOrient
dbRowTechSite
dbStdCellHgt
Site
dbSiteName/dbForEachHeadSite
dbSiteSizeX
dbSiteSizeY
dbStdRowSite
dbRowSite
83
CADENCE CONFIDENTIAL
FPlan (continued)
ConstraintType
dbConstraintType(dbcGuide/dbcFence/dbcRegion)
dbConstraintBox
LayerBlockage
Obsructions
Partition:
Partitions
dbPtnBox
dbPtnCoreToLeft/Right/Bottom/Top
dbPtnCut
dbPtnFeedBox
dbPtnFeedLayer
dbPtnLayerBlocked
dbPtnMinPinSpace
dbPtnPinSpaceOnSide
Screen
dbScreenBox
dbScreenCapacity
84
CADENCE CONFIDENTIAL
Example:
proc prePlaceCloneInsts {} {
dbForEachCellPtn [dbgTopCell] ptnPtr {
dbForEachPtnCloneList $ptnPtr clonePtr {
set obj [dbCloneListInst $clonePtr]
set cloneName [dbObjName $obj]
puts "Processing clone = $cloneName"
# Get fence box of corresponding clone
set constraintPtr [dbHInstConstraint $obj]
set constraintBox [dbConstraintBox $constraintPtr]
set x1 [expr [lindex $constraintBox 0]*[dbHeadMicronPerDBU]]
set y1 [expr [lindex $constraintBox 1]*[dbHeadMicronPerDBU]]
set x2 [expr [lindex $constraintBox 2]*[dbHeadMicronPerDBU]]
set y2 [expr [lindex $constraintBox 3]*[dbHeadMicronPerDBU]]
set x [expr $x1 + [expr [expr $x2 - $x1] / 2 ]]
set y [expr $y1 + [expr [expr $y2 - $y1] / 2 ]]
# Place all clone cells in the middle of the fence
# and mark as preplaced
dbForEachCellInst [dbgTopCell] instPtr {
set instName [dbInstName $instPtr]
if [string match $cloneName* $instName] {
placeInstance $instName $x $y
dbSetIsInstPreplaced $instPtr 1
}}}}}
85
CADENCE CONFIDENTIAL
dbCellName $cell
NrInst
dbCellNrInst
NrBlock
dbCellNrBlock
NrRef
dbCellNrRef
NrRow
dbCellNrRow
NrFTerm
dbCellNrFTerm
NrBidi
dbCellNrNrBidi
NrInput
dbCellNrInput
NrOutput
dbCellNrOutput
NrInst
dbCellNrInst
CellType
dbCellType $cell
Origin
dbCellOrigin
Dimensions
dbCellDim
Example:
proc userFindInstsByCellName { cellName } {
set designName [dbgDesignName]
Puts "\nInfo: Searching for number of instances with $cellName cell master in $designName...\n"
set cnt 0
set cellPtr [dbgTopCell]
dbForEachCellInst $cellPtr instPtr {
set instName [dbInstName $instPtr]
set leafCell [dbInstCellName $instPtr]
if { $leafCell == $cellName } {
incr cnt
}}
Puts "\nInfo: Found $cnt instances with $cellName cell master\n"
}
86
CADENCE CONFIDENTIAL
87
InstName
dbInstName $cell
InstCellName
dbInstCellName $instPtr
InstBox
dbInstBox $instPtr
InstBoxDimX
InstBoxDimY
InstOrient
dbInstOrient $objPtr
InstLoc
dbInstLoc $objName
NrBidi Pins
dbInstNrBidi
NrOutput Pins
dbNrOutput
NrInput Pins
dbInstNrInput
HasObstruct
dbInstHasObstruct
CADENCE CONFIDENTIAL
CADENCE CONFIDENTIAL
dbIsBoxOverlappingOrTouchingBox
is a very useful function
89
CADENCE CONFIDENTIAL
90
HInstBaseName
dbHInstBaseName
Area
dbHInstArea
Constraint(Guide/Fence/Region)
dbHInstConstraint $hinstPtr
Floorplan Box
dbHInstFPlanBox $hinstPtr
Density
dbHInstDensity $hinstPtr
Congestion
dbHInstCongest $hinstPtr
Groups
dbHInstGroup $hinstPtr
Partition
dbHInstPtn $hinstPtr
dbHInstStdCellArea $hinstPtr
Number of insts
dbHInstNrInst $hinstPtr
dbHInstNrEPin $hinstPtr
CADENCE CONFIDENTIAL
91
CADENCE CONFIDENTIAL
CADENCE CONFIDENTIAL
dbHTermSide
Example 1:
proc userRptHTermTerms { hterm } {
set hTermId [dbGetHTermByInstTermName $hterm]
set netId [dbHTermNet $hTermId]
set netName [dbNetName $netId]
set netNrTerm [dbNetNrTerm $netId]
Puts ""
Puts "HTERM : $hterm"
Puts "NET : $netName"
Puts "TERMS : $netNrTerm"
dbForEachNetTerm $netId termId {
set termType [dbObjType $termId]
if { $termType != "dbcObjFTerm"} {
set termName [dbTermName $termId]
set instName [dbTermInstName $termId]
Puts " INSTTERM : $instName/$termName"
}
}
}
93
CADENCE CONFIDENTIAL
CADENCE CONFIDENTIAL
dbgHead
Head
07/01/05 P. Eichenseer
HilitePtr
SelectPtr
dbHeadFPlan
FPlan
dbForEachHeadPtn
dbForEachHeadCell
dbForEachHeadDPath
Path
HeadTimeLib
DPath
Path
TimeLib
Layer
HeadRule
Clock
dbForEachHeadCell
dbCellFPlan
Cell
Partition
dbForEachGroupHInst
dbForEachHInstTreeInst
dbInstHierHinst
Inst
dbForEachInstTerm
Constraint
(Guide/Fence)
dbHInstConstraint
dbConstraintHInst
Placement Blkg.
dbForEachHInstTreeHInst
dbHInstParent
dbForEachHInstHTerm
dbHTermFTerm
dbFTermHTerm
Routing Blkg.
Fterm
HTerm
dbFtermTerm
dbTermFterm
Term
ptnFeed
ptnPinBlk
dbFTermNet
dbForEachCell
dbForEachCellNet
dbForEachFPlanPtnCut
ptnCut
dbForEachFPlanDefRow
BlackBox
Halo
densityScreen
dbForEachFPlanRouteGuide
Route Guides
Wire
LefPort
dbWireNet dbForEachNetWire
Bump
SNet
Net
TimeArc
LefObs
dbForEachSNetStripBox
StripBox
ConstraintBox
GeomList
dbForEachFPlanGeomList
95 CADENCE CONFIDENTIAL
GeomList
dbSNetNet
Standard Row
dbForEachFPlanScreen
OpCond
dbForEachFTermLefPort
dbTermNet
dbForEachFPlanPtnPinBlk
dbForEachNetTerm
dbForEachFPlanLayerBlk
Clocks
et
stTreeN
achHIn
dbForE
dbTermInst
HInst
dbForEachFPlanObstruct
dbForEachFPlanPtnFeed
DPHinst
dbForEachPathTerm
ll
e
IoC
db
dbForEachFPlanConstraint
IO
DPinst
dbCellPadCell
CellPad
tC
ell
dbForEachFPlanCellPad
bI
ns
Group
ac
hC
ell
Ins
Rule
dbForEachTimingLibOpCond
Clone
Fo
rE
Io
ell
hC
ac
rE
Fo
dbForEachFPlanGroup
db
db
GlobalNetConnection
dbCellFTerm
dbForEachFPlanGlobalNetConnection
dbForEachCellFTerm
dbForEachPtnCloneList
Layer
layerShape
Shape
dbTermName $termPtr
TermInstName
dbTermInstName $outputTermPtr
TermLoc
dbTermLoc
Layer
dbTermLayer
TransitionTime
dbTermTranTime
Box
dbTermBox
Floorplan/Schematic:
Example:
FF
PLL
FF
96
CADENCE CONFIDENTIAL
FF
97
CADENCE CONFIDENTIAL
98
CADENCE CONFIDENTIAL
dbgHead
Head
07/01/05 P. Eichenseer
HilitePtr
SelectPtr
dbHeadFPlan
FPlan
dbForEachHeadPtn
dbForEachHeadCell
dbForEachHeadDPath
Path
HeadTimeLib
DPath
Path
TimeLib
Layer
HeadRule
Clock
dbForEachHeadCell
dbCellFPlan
Cell
Partition
dbForEachGroupHInst
dbForEachHInstTreeInst
dbInstHierHinst
Inst
dbForEachInstTerm
Constraint
(Guide/Fence)
dbHInstConstraint
dbConstraintHInst
Placement Blkg.
dbForEachHInstTreeHInst
dbHInstParent
dbForEachHInstHTerm
dbHTermFTerm
dbFTermHTerm
Routing Blkg.
Fterm
HTerm
dbFtermTerm
dbTermFterm
Term
ptnFeed
ptnPinBlk
dbFTermNet
dbForEachCell
dbForEachCellNet
dbForEachFPlanPtnCut
ptnCut
dbForEachFPlanDefRow
BlackBox
Halo
densityScreen
dbForEachFPlanRouteGuide
Route Guides
Wire
LefPort
dbWireNet dbForEachNetWire
Bump
SNet
Net
TimeArc
LefObs
dbForEachSNetStripBox
StripBox
ConstraintBox
GeomList
dbForEachFPlanGeomList
99 CADENCE CONFIDENTIAL
GeomList
dbSNetNet
Standard Row
dbForEachFPlanScreen
OpCond
dbForEachFTermLefPort
dbTermNet
dbForEachFPlanPtnPinBlk
dbForEachNetTerm
dbForEachFPlanLayerBlk
Clocks
et
stTreeN
achHIn
dbForE
dbTermInst
HInst
dbForEachFPlanObstruct
dbForEachFPlanPtnFeed
DPHinst
dbForEachPathTerm
ll
e
IoC
db
dbForEachFPlanConstraint
IO
DPinst
dbCellPadCell
CellPad
tC
ell
dbForEachFPlanCellPad
bI
ns
Group
ac
hC
ell
Ins
Rule
dbForEachTimingLibOpCond
Clone
Fo
rE
Io
ell
hC
ac
rE
Fo
dbForEachFPlanGroup
db
db
GlobalNetConnection
dbCellFTerm
dbForEachFPlanGlobalNetConnection
dbForEachCellFTerm
dbForEachPtnCloneList
Layer
layerShape
Shape