Product Documentation
Virtuoso Technology Data SKILL Reference
Product Version IC23.1, June 2023

techCreateDerivedLayer

techCreateDerivedLayer(
d_techID
x_derivedLayerNum
t_derivedLayerName
tx_layer1
t_op
[ tx_layer2 ]
[ l_options ]
)
=> d_techLayerID / nil

Description

Creates a derived layer in the specified technology database.

Some layer operations can use parameters to determine how a layer is derived. The following table lists such operators and the parameters they support.

Operators Parameters

select

selectShapesWithPurpose

area

areaRange

grow, growVertical, growHorizontal, shrink, shrinkVertical, shrinkHorizontal

distance

inside

connectivityType, range, selectShapesInRange

buttOnly

range, selectShapesInRange, exclusive

overlapping, straddling, coincident, coincidentOnly, enclosing, butting, buttingOrCoincident, buttingOrOverlapping

connectivityType, range, selectShapesInRange, exclusive

color

maskColor, colorLocked

Arguments

d_techID

The database identifier of the technology database.

t_derivedLayerName

The name of the derived layer to be created.

Valid values: Any string

x_derivedLayerNum

The number of the derived layer to be created.

Valid values: Any positive integer that is not a DFII reserved layer number

tx_layer1

The first or only layer used to create the derived layer.

Valid values: The layer name or layer number

t_op

The operation on the layer or layers that creates the derived layer.

Valid values:

  • One-layer derived layers
    • Purpose-aware derived layers: select
    • Sized derived layers: grow, shrink, growVertical, growHorizontal, shrinkVertical, shrinkHorizontal
    • Area-restricted derived layers: area
    • Color derived layers: color
  • Two-layer derived layers: and, or, not, xor, touching, buttOnly, inside, outside, overlapping, straddling, avoiding, butting, coincident, coincidentOnly, enclosing, buttingOrCoincident, buttingOrOverlapping

For more information about these operators, see techDerivedLayers in Virtuoso Technology Data ASCII Files Reference.

tx_layer2

The second layer used to create the derived layer. This layer is required for derived layers that operate on two layers.

Valid values: The layer name or layer number

l_options

A list specifying options. It has the following syntax:

list(
[ list("connectivityType" 
               { "diffNet" | "sameNet" })
] 
[ list("exclusive" { t | nil }) ] 
[ list("range" t_rangeVal) ]
[ list("areaRange" t_areaRangeVal) ] 
[ list("selectShapesInRange" { t | nil }) ] 
[ list("distance" x_distValue | f_distValue) ] 
[ list("selectShapesWithPurpose" tx_purpose) ] 
[ list("maskColor" t_maskColor)
  [ list("colorLocked" { "locked" | "unlocked" }) ]
]
)

where,

  • connectivityType: Controls whether selected shapes must connect to different nets (diffNet) or to the same net (sameNet). If a value is not specified, connectivity is ignored.
  • exclusive: Selects tx_layer1 shapes only if these shapes have no relationship other than that specified by the layer operation this parameter modifies. If set to nil, shapes are selected even if there are other shapes on tx_layer1 interacting in other ways with the shapes on tx_layer2.
  • range: Selects shapes only if the number of shapes under consideration falls in the specified range. One or two values are required depending on the specified range type. Valid values for range type: n, <n, <=n, >n, >=n, [n1 n2], (n1 n2), [n1 n2), (n1 n2]
where, n is a count, n1 is the lower bound, n2 is the upper bound, [ ] indicates an inclusive range, and ( ) indicates an exclusive range

  • selectShapesInRange: Determines if the number of shapes should be inside or outside the specified range. If set to t, shapes are selected only if the specified range value is satisfied, which is also the default behavior; otherwise, shapes are selected even if their number falls outside the specified range.
  • areaRange: Indicates the area range to be used for the area operation. The value t_areaRangeVal specifies the value and type of range—whether the range is a lower bound only, an upper bound only, or both a lower and upper bound. One or two values are required depending on the range type specified.
  • selectShapesWithPurpose: Specifies a purpose value for selecting shapes. It is used as a parameter by the select layer operation.
  • distance: Specifies the distance for layer sizing operations.
  • maskColor: Specifies the mask value for the shapes to be selected, such as mask1Color, mask2Color, and so on. The specified mask value must be supported by the layer to which the color operator is applied.
  • colorLocked: Specifies the lock state for the shapes to be selected. Valid values: locked, unlocked, any

Value Returned

d_techLayerID

The derived layer was created successfully with the database identifier techLayerID.

nil

The technology database does not exist or the derived layer could not be created.

Examples

techCreateDerivedLayer(tfID 20000 "nwellBlockGen" "nwell" "select" list(list("selectShapesWithPurpose" "blockGen")))
=> db:0x189fe736

Creates a derived layer by selecting layer "nwell" and purpose "blockGen".

techCreateDerivedLayer(tfID 30001 "myDL1" "M1" "or" "M2")
=> db:0x01d0700e

Creates a derived layer by selecting shapes that correspond to a union of the shapes on metal1 and metal2.

techCreateDerivedLayer(tfID 30011 "myDL11" "M1" "grow" list(list("distance" 0.1)))
=> db:0x186ee62c
techCreateDerivedLayer(tfID 30012 "myDL12" "M1" "growVertical" 
list(list("distance" 0.1)))
=> db:0x186ee62e
techCreateDerivedLayer(tfID 30013 "myDL13" "M1" "growHorizontal" list(list("distance" 0.1)))
=> db:0x186ee62f
techCreateDerivedLayer(tfID 30014 "myDL14" "M1" "shrink" 
list(list("distance" 0.1)))
=> db:0x1792ed23
techCreateDerivedLayer(tfID 30015 "myDL15" "M1" "shrinkVertical" list(list("distance" 0.1)))
=> db:0x1792ed25
techCreateDerivedLayer(tfID 30016 "myDL16" "M1" "shrinkHorizontal" list(list("distance" 0.1)))
=> db:0x186ee633

Creates derived layers by sizing M1.

techCreateDerivedLayer(tfID 30003 "myDL3" "M1" "xor" "M2")
=> db:0x1792ed23

Creates a derived layer by selecting non-overlapping areas of shapes on M1 and M2.

techCreateDerivedLayer(tfID 30004 "myDL4" "M1" "area" 
list(list("areaRange" "< 8")))
=> db:0x1792ed26

Creates a derived layer with restricted area.

techCreateDerivedLayer(tfID 30005 "myDL5" "M1" "and" "M2")
=> db:0x1792ed24

Creates a derived layer by selecting shapes that correspond to the intersecting areas on M1 and M2.

techCreateDerivedLayer(tfID 30006 "myDL6" "M2" "inside" "M3" list(list("connectivityType" "sameNet") list("range" 9) 
list("selectShapesInRange" t)))
=> db:0x1792ed27

Creates a derived layer by selecting M2 shapes that are completely inside a shape on M3, provided the number of such shapes is equal to 9.

techCreateDerivedLayer(tfID 30007 "myDL7" "M1" "buttOnly" "M2" 
list(list("range" "(2 3)") list("selectShapesInRange" t) list("exclusive" t)))
=> db:0x18cae7a9

Creates a two-layer derived layer by selecting M1 shapes that satisfy the buttOnly condition, provided that the shapes exclusively satisfy this condition and the number of such shapes is equal to 2 or 3.

techCreateDerivedLayer(tfID 30021 "myDL21" "M1" "overlapping" "M2" list(list("connectivityType" "sameNet") list("range" "(2 3)") list("selectShapesInRange" t) list("exclusive" t)))
=> db:0x1792ed27
techCreateDerivedLayer(tfID 30022 "myDL22" "M1" "straddling" "M2" list(list("connectivityType" "sameNet") list("range" "(2 3)") list("selectShapesInRange" t) list("exclusive" t)))
=> db:0x186ee62f
techCreateDerivedLayer(tfID 30023 "myDL23" "M1" "coincident" "M2" list(list("connectivityType" "sameNet") list("range" "(2 3)") list("selectShapesInRange" t) list("exclusive" t)))
=> db:0x1792ed24
techCreateDerivedLayer(tfID 30024 "myDL24" "M1" "coincidentOnly" "M2" list(list("connectivityType" "sameNet") list("range" "(2 3)") list("selectShapesInRange" t) list("exclusive" t)))
=> db:0x1792ed26
techCreateDerivedLayer(tfID 30025 "myDL25" "M1" "enclosing" "M2" list(list("connectivityType" "sameNet") list("range" "(2 3)") list("selectShapesInRange" t) list("exclusive" t)))
=> db:0x1792ed29
techCreateDerivedLayer(tfID 30026 "myDL26" "M1" "butting" "M2" list(list("connectivityType" "sameNet") list("range" "(2 3)") list("selectShapesInRange" t) list("exclusive" t)))
=> db:0x186ee630
techCreateDerivedLayer(tfID 30027 "myDL27" "M1" "buttingOrCoincident" "M2" list(list("connectivityType" "sameNet") list("range" "(2 3)") list("selectShapesInRange" t) list("exclusive" t)))
=> db:0x186ee631
techCreateDerivedLayer(tfID 30028 "myDL28" "M1" "buttingOrOverlapping" "M2" list(list("connectivityType" "sameNet") list("range" "(2 3)") list("selectShapesInRange" t) list("exclusive" t)))
=> db:0x186ee62f

Creates two-layer derived layers by selecting M1 shapes that satisfy the condition imposed by the specified operator, provided that the shapes exclusively satisfy this condition and the number of such shapes is equal to 2 or 3.

techCreateDerivedLayer(tfID 30009 "metal1Color1" "M1" "color" list(list("maskColor" "mask1Color")))
=> db:0x1792ed2a

Creates a derived layer by copying to it M1 shapes with mask1Color.

techCreateDerivedLayer(tfID 30010 "metal1Color2" "M1" "color" list(list("maskColor" "mask1Color") list("colorLocked" "locked")))
=> db:0x1792ed2b

Creates a derived layer by copying to it M1 shapes that have mask1Color locked on them.


Return to top
 ⠀
X