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

vfpPinSnapToEdge

vfpPinSnapToEdge(
?cv d_cv
[ ?pinIOType { input | output | inputOutput } ]
[ ?pinTermNames l_pinTermNames ]
[ ?edge { Left | Right | Top | Bottom | Nearest } ]
[ ?layerName t_layerName ]
[ ?skipTracks x_numTracks ]
[ ?honorCurrentLocation { t | nil } ]
[ ?verboseMode { t | nil } ]
)
=> t / nil

Description

Snaps pins to the specified edge. You can select pins by specifying either their I/O types or terminal names. You can also change the pin layers and skip tracks between pins.

Arguments

?cv d_cv

Specifies the cellview ID in which pins are to be snapped.

The default value is nil, which means that the current cellview is considered.

?pinIOType { input | output | inputOutput }

Specifies the I/O type of the pins to be snapped. The valid values are: "input", "output", and "inputOutput".

The default value is "".

?pinTermNames l_pinTermNames

Specifies the terminal names of the pins to be snapped, for example, '("A" "B").

To snap all the pins, set pinTermNames to '("all").

The '.*' wildcard character and other regular expression constructs are supported to specify pin names. For example, to snap all the pins of a bus A<0:9>, set pinTermNames = '(A.*).

Use either pinIOType or pinTermNames to specify the pins to be snapped. If both values are specified, then no snapping occurs.

?edge { Left | Right | Top | Bottom | Nearest }

Specifies the edge to which pins are to be snapped.

The valid values are "Left", "Right", "Top", "Bottom", and "Nearest". The default value is "Nearest".

?layerName t_layerName

Specifies the layer to which pins should be moved before snapping. For example, "Metal1" or "Metal2".

The default value is "", which means that pins remain on their current layers.

?skipTracks x_numTracks

Specifies the number of tracks to be skipped between the pins during snapping. For example, if skipTracks=2, then two tracks are skipped between the pins.

The default value is 0.

?honorCurrentLocation { t | nil }

Honors the current pin location after pin distribution on the assigned edge. The valid values are t and nil. When set to nil, the optimal pin locations are based on the net length. The default value is t.

?verboseMode { t | nil }

Prints additional information such as net lengths, error messages, and warnings while snapping pins. The valid values are t and nil. The default value is nil.

Value Returned

t

Pins were snapped to the specified edge.

nil

Pins were not snapped.

Examples

The following examples show how vfpPinSnapToEdge can be used with different argument combinations.

pinTermNamesList = '("all")
vfpPinSnapToEdge(
?cv geGetEditCellView()
?pinTermNames pinTermNamesList
)

In the above example, all the pins are snapped to the nearest edge.

pinTermNamesList = '("all")
vfpPinSnapToEdge(
?cv geGetEditCellView()
?pinTermNames pinTermNamesList
?edge "left"
)

In the above example, all the pins are snapped to the left edge.

pinTermNamesList = '("A" "B")
vfpPinSnapToEdge(
?cv geGetEditCellView()
?pinTermNames pinTermNamesList
?edge "left"
?layerName "Metal4")
)

In the above example, the pins with terminal names "A" and "B" are snapped to the left edge and the pin layers are changed to Metal 4.

vfpPinSnapToEdge
(
?cv geGetEditCellView()
?pinIOType "input"
?edge "left"
?layerName "Metal4"
)

In the above example, the pins with I/O type "input" are snapped to the left edge and the pin layers are changed to Metal 4.

pinTermNamesList = '("A" "B")
vfpPinSnapToEdge(
?cv geGetEditCellView()
?pinTermNames pinTermNamesList
?edge "left"
?skipTracks 2
)

In the above example, the pins with terminal names "A" and "B" are snapped to the left edge and two WSP tracks are skipped between the pins.

vfpPinSnapToEdge(
?cv geGetEditCellView()
?pinIOType "input"
?edge "left"
?honorCurrentLocation nil
)

In the above example, the pins with I/O type "input" are snapped to the left edge, and the pins snapped to the optimal track do not honor the current pin location.


Return to top
 ⠀
X