Product Documentation
Virtuoso Layout Suite SKILL Reference
Product Version IC23.1, November 2023

bndReplaceObjectsBinding

bndReplaceObjectsBinding(
d_schDbID
d_layDbID
)
=> t / nil

Description

Sets a binding between specified schematic and layout objects, replacing any existing bindings in the process. The specified objects must all be lead objects. On the layout side, a leaf instance is an instance in the top level. On the schematic side, a leaf instance is the level at which the CPH stops such that INV1/P0 instance can bind to INV1|P0, but INV1 instance cannot bind to INV1|P0. For transparent instances, such as INV1, you can use INV1/N0 to add a binding to the nmos inside.

Arguments

d_schDbID

Database IDs of the schematic objects to bind.

The object ID could be specified as a:

  • Single database ID: dbId
  • List of database IDs: list(list(d_dbId1 d_dbId2))
  • Database ID plus an index of a vector bit: list(list(d_dbId x_memInst))
  • Lists of database IDs: list(list(d_dbId1) list(dbId2))
  • Hierarchical path in the format list(list(db_id x_memInst x_row x_col)) returned by geGetInstHierPath(w_window)

d_layDbID

Database IDs of the layout objects to bind.

The object ID could be specified as a:

  • Single database ID: dbId
  • List of database IDs: list(list(d_dbId1 d_dbId2))
  • Database ID plus an index of a vector bit: list(list(d_dbId x_memInst))
  • Lists of database IDs: list(list(d_dbId1) list(dbId2))
  • Hierarchical path in the format list(list(db_id x_memInst x_row x_col)) returned by geGetInstHierPath(w_window)

Value Returned

t

The binding was created.

nil

The binding was not created.

Example

Sets a binding between schematic instance I1 and an already-bound layout instance I0.1|I2(1). The existing binding for I0.1|I2(1) is removed.

I1=dbCreateInstByMasterName(schCellViewID "testcase" "inv" "symbol" "I1" ’(-1.375 1.9375) "R0")
bndReplaceObjectsBinding(I1 dbFindAnyInstByName(layCellViewID "I0.1|I2(1)"))
t

Attempts to set a binding between schematic instance I0 and layout instance I0.1|I2(1) but fails because I0 is not a leaf object.

bndReplaceObjectsBinding(dbFindAnyInstByName(schCellViewID "I0")
dbFindAnyInstByName(layCellViewID "I0.1|I2(1)"))
*Error* bndReplaceObjectsBinding: (BND-3026): Cannot add binding to instance ’I0’ because it is not a leaf. Binding can only be set between leaf objects in the schematic and layout objects.

Binds I1 either to an nmos or a pmos, because I1 is an inverter.

bndReplaceObjectsBinding(i1 list(dbFindAnyInstByName(layCVId "N0") dbFindAnyInstByName(layCVId "P0"))
bndReplaceObjectsBinding(list(dbGetInstByName(scv "R0<0:1>") 0) dbGetInstByName(lcv "R0(0)"))

Binds the vector bits on the schematic side.

bndReplaceObjectsBinding(list(dbGetInstByName(scv "R0<0:1>") 1) dbGetInstByName(lcv "R0(1)"))

Return to top
 ⠀
X