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

lxShapeSlotting

lxShapeSlotting( 
[ ?cv d_cellViewId ] 
[ ?all { t | nil } ]
[ ?region l_region ]
[ ?layers l_layers 
[ ?widthThreshold n_widthThreshold ]
[ ?slotLength n_slotLength ]
[ ?slotWidth n_slotWidth ]
[ ?lSpacing n_lSpacing ]
[ ?wSpacing n_wSpacing ]
[ ?slotToEdge n_slotToEdge ]
[ ?slotVia { t | nil } ]
[ ?windowSize n_windowSize ]
[ ?stepSize n_stepSize ]
[ ?maxDensity n_maxDensity ]
[ ?slotStaggered { t | nil } ]
[ ?lengthWidthRatio n_lengthWidthRatio ]
[ ?excludePins { t | nil } ]
[ ?slotSpacingAtTurn n_slotSpacingAtTurn ]
[ ?onlyComplexPolygons { t | nil }
[ ?halfManhattan { t | nil } ]
[ ?halfManhattanStyle l_halfManhattanStyle ]
[ ?directionalSlotPattern l_directionalSlotPattern ]
[ ?shapes l_shapes ]
[ ?turnSlotPattern l_turnSlotPattern ]
) 
=> t / nil

Description

Creates slots on shapes to ensure that wide wires are in compliance with maxDensity and maxWidth constraint rules. It also preserves viable electromigration and resistance attributes by creating rectangular slots in the direction of the current over the wires and square slots at turns (same layer or changed layer). There are two modes depending on the arguments specified: Geometric and Density Aware. In Geometric mode, the slotting shapes are fully specified (size, spacing, and step size), while in Density Aware mode, the slotting shape geometries are automatically computed based on the maxDensity specification. Also, in Geometric mode, you can create slots on shapes on non-metal layers. It is still possible to override any of the geometric information, such as the width, length, or spacing.

The lxShapeSlotting SKILL API is currently supported for Linux platform only.

Arguments

?cv

ID of the cellview containing the layout instance. If not specified, the current cellview is used.

?all

Applies the command to the entire design when set to t. Default is the entire design.

?region

Applies the command to the region given by a list of coordinates (x0 y0 x1 y1) representing the lower-left and upper-right corners of the region.

?layers

List of layer names on which the drawing purpose metal shapes will be overlapped by slot purpose shapes. The default is all layers if none is specified.

?widthThreshold

Filters out the shapes with a width smaller than the one specified. Default is 12.0µm.

?slotLength

Defines the length of the slot. Default is 0.0µm.

?slotWidth

Defines the width of the slot. Default is 0.0µm.

?lSpacing

Defines the slot spacing in the length direction. Default is 0.0µm.

?wSpacing

Defines the slot spacing in the width direction. Default is 0.0µm.

?slotToEdge

Defines the minimum slot to edge distance. Default is 0.0µm.

?slotVia

When set to t, vias are slotted. Default is nil.

?windowSize

Defines the size of the window where density is measured. Default is 20µm.

?stepSize

Defines the step applied to the window for the next check. It is usually half of the window. Default is 10 µm.

?maxDensity

Specifies the maximum metal density that is allowed for the layer as a percentage. Default is 80 percent.

?slotStaggered

Defines the offset mode used to add the slots. If the offset mode is set to nil, slots are inline. However, if the offset mode is set to t, slots are staggered. By default the offset mode is set to nil.

?lengthWidthRatio

Specifies a threshold ratio value which determines whether a slot is created as a square or a rectangular shape. If the length-to-width ratio of the object is greater than the defined threshold, then a rectangular slot is created. If the length-to-width ratio of the object is less than or equal to the specified ratio, then a square slot is created. The default is 3.0.

?excludePins

Excludes pin objects from being slotted. Default is nil.

?slotSpacingAtTurn

Specifies the spacing that needs to be applied at the turns or on vias.

If this argument is not specified:

  • In geometric mode, the slot shapes at turns are aligned with the slot shapes from the wires.
  • In density-aware mode, the command computes the spacing between the slots in the turn from the target density.

When the argument is specified:

  • If the value = 0, then the slots in the turn are aligned with the slots of the shapes touching the turn.
  • If the value > 0, then the value is used as the spacing between the slots in the turn.

?onlyComplexPolygons

Slots only complex polygons. The bounding box of the polygon is used to determine the direction of the current. The shape of the slot depends on the ?lengthWidthRatio value.

?halfManhattan

Enables generation of 45 degrees slots over 45 degree wires.

?halfManhattanStyle

Specifies the type of slot shape to be dropped at the turn when halfMahattan is set to t. The slot shape can be either a square, bentShape or rowExtension. Default is square.

?directionalSlotPattern

Defines a slot pattern (for example, a complex chamfered rectangle) that is dropped in the direction of the current over the orthogonal portion of the wire.

?shapes

List of shapes to be slotted. The shape can be a path segment, path, rectangle, or a polygon. If ?region is also specified, then only the section of the shapes that are partially or fully covered by the ?region are slotted.

?turnSlotPattern

Defines a slot pattern (for example, a complex chamfered square) that is dropped at the turn of a wire.

Value Returned

t

Slots are created on metal shapes.

nil

Fails to create slots on metal shapes.

Example

lxShapeSlotting(?windowSize 20.0 ?stepSize 10.0 ?lengthWidthRatio 0.5 ?maxDensity 80.0 ?widthThreshold 10.0 ?all ?layers list("Metal2" "Metal1") ?slotVia t ?slotPattern 0 ?slotLength 5.0 ?slotWidth 1.0 ?lSpacing 2.0 ?slotStaggered t)

Creates rectangular slot shapes with geometries specified as 5.0µm in length and 1.0µm in width spaced by 2.0µm over Metal1 and Metal2 wires wider than 10.0µm. This happens where maxDensity violations exist. Also, in this situation, the spacing in the width direction is computed automatically (corresponding to the ?wSpacing parameter).


Return to top
 ⠀
X