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

lxFold

lxFold(
l_insts
l_point
x_numFolds
[ ?widths l_widths ]
[ ?chainFolds { t | nil } ]
[ ?ignoreMFactor { t | nil } ]
[ ?chainAlignPMOS { Top | Center | Bottom } ]
[ ?chainAlignNMOS { Top | Center | Bottom } ]
[ ?enforceWidthMatch { t | nil } ]
[ ?keepFolds { t | nil } ]
)
=> l_chains / nil

Description

Folds a list of valid instances into the specified number of folds and places them at the specified location. If the disableFolding environment variable is set and the folding threshold for the component type is set to 0, folding is disabled.

Arguments

l_insts

List of instances to be folded.

l_point

Position of the folds generated in the layout.

x_numFolds

The number of folds that each instance will be folded into. Can be any integer value.

Note: If folding on multi-fingered devices, this argument is ignored. For more details, refer to the foldFingerSplitUseSchWidth environment variable and Folding a Multi-fingered Device to Create Split Fingers.

?chainFolds

Abuts the folds of newly folded devices into chains.

The default is t.

Any existing folds are deleted, except the one that is passed to the SKILL function, which is then used to recreate the new folds.

?widths l_widths

List of widths specifying the width of each fold. This value is required if you do not want each fold to have the same width.

Note: If folding on multi-fingered devices, this argument is ignored. Instead, the width is determined by the setting specified for foldFingerSplitUseSchWidth environment variable. For more details, refer to Folding a Multi-fingered Device to Create Split Fingers.

?ignoreMFactor

Ignores the schematic multiplication factor when generating folded devices.

The default is nil.

?chainAlignPMOS

Controls PMOS chaining alignment using values: "Top", "Center", and "Bottom". The values should be enclosed in quotation marks.

The default is "Top".

?chainAlignNMOS

Controls NMOS chaining alignment using values: "Top", "Center", and "Bottom". The values should be enclosed in quotation marks.

The default is "Bottom".

?enforceWidthMatch

Enforces that the device folds are generated with the same total width as that of the corresponding schematic device.

The default is nil, which triggers a message warning about the total fold width being different from that of the schematic but allows the folds to be generated.

?keepFolds

Folds the existing folds.

The default is set by the foldKeepFolds environment variable.

Value Returned

l_chains

List of folds generated.

nil

The specified instances were not generated as folded devices.

All arguments that take a string value must have their values enclosed in quotation marks.

Examples

Example 1

lxFold(list(P0) 0:0 3)

Creates three folds, P0.1, P0.2, and P0.3 positioned at 0:0. The generated folds will be chained if the environment variable, chainFolds, is set to true.

Returns ((dbId dbId dbId)) where each dbId is one of the three folds created.

Example 2

lxFold(list(P0 N0) 10:10 2 ?chainFolds nil)

Creates four folds, P0.1, P0.2 N0.1, and N0.2 positioned at 10:10, which will not be folded.

Returns ((dbId dbId) (dbId dbId)) where the first list is P0.1 and P0.2 and the second list is N0.1 and N0.2.


Return to top
 ⠀
X