Product Documentation
Virtuoso Layout Suite XL: Connectivity Driven Editing User Guide
Product Version IC23.1, November 2023

Generate Folded Devices Form

Use the Generate Folded Devices form to control interactive folding. You can divide the following into two or more folds:

See Folding a Multi-fingered Device to Create Split Fingers.

Generate Folded Devices form also enables dividing an individual FinFET device or a chain of devices into two or more folds. Folding lets you change the aspect ratios of the devices in your design while retaining the original orientation. The devices to be folded need not be bound to a schematic instance. If the disableFolding environment variable is set and the folding threshold for the component type is set to 0, folding is disabled.

If FinFET devices are driven for folding by Number of fins, the Generate Folded Devices form displays Transistor Fins. If folding for the selected FinFET devices is driven by the Width parameter, the form displays Transistor Width.

Field Description

Transistor Name

Shows the name of the transistor that will be folded. If you have selected more than one transistor, use the Next and Previous buttons to move through the selected set.

Transistor Width

Specifies the value of the width property of the selected device, indicating also whether the value is taken from the schematic or the layout view or is user-defined. When Ignore mfactor is ON, the value shown is the effective width in the schematic, which is the product of mfactor and schematic gate width. If required, you can type in a value to override the effective schematic width. Alternatively, you can use the bindkey Ctrl + Scroll Up or Down operation to increase or decrease the transistor width value.

The Transistor Width field is displayed when the devices selected for folding are MOS transistors or FinFET devices that have the Width parameter set.

Transistor Fins

Shows the value of the Number of fins parameter of the selected FinFET device, also indicating whether the value is taken from the schematic or the layout view.

The Transistor Fins field is displayed only for FinFET devices that have the Number of fins parameter set.

Number of Folds

Lets you type in the number of folds to be generated for the selected device, which may be already folded. Alternatively, use the bindkey Shift + Scroll Up/Down operation to increase or decrease the number of folds.

When refolding, the number of generated folds may change based on the new number of folds you specify.

Specifying a Number of Folds value greater than one displays the Distribute button, which evenly distributes the transistor width across the available folds. Alternatively, you can manually modify the width of each fold.

Such a distribution is also applicable for FinFET devices that are set for folding based on the Width parameter.

For example, if the total device width is 3u, clicking Distribute splits the width evenly across two folds such that the width of each fold is 1.5u.

If you specify multiple folds to be generated for the device, the width value displayed for each fold is controlled by the environment variable, lxGetSignifDigits. If the environment variable is not set, the width of each fold defaults to six significant digits.

For example, if the transistor width is 4u and you specify that three folds be created, then depending on the state of the lxGetSignifDigits environment variable, the width of the folds varies as follows:

  • If the lxGetSignifDigits environment variable is set to four significant digits, the width of each fold is set to 1.333u.
  • If the lxGetSignifDigits environment variable is not set, the fold width defaults to 6 significant digits, resulting in a width of 1.33333u for each fold.
If you specify more than 500 folds to be added and click Distribute, a warning message displays prompting for confirmation to proceed with the folding.

Environment variable: foldsLimit

For FinFET devices, folding is driven by the Number of fins value. Clicking Distribute divides the total fins across all the folds such that each fold gets a whole number of fins.

The Fins field accepts only integer values for fins. If you type in a non-integer value, Layout XL automatically reverts to the last integer value.

Use Threshold

Specifies if the Folding Threshold value should be used to fold the selected devices in the layout.

When the option is selected, the Number of Folds value is calculated based on the transistor width or the folding threshold value. Otherwise, the Number of Folds value is specified by the user.

Folding Threshold

Specifies the maximum width beyond which the selected devices are automatically folded.

Ignore mfactor

Ignores the schematic multiplication factor when generating folded devices. The Transistor Width is set to the effective width in the schematic; that is, the product of mfactor and schematic gate width.

Chain Folds

Specifies Layout XL to chain the resultant folds together, where possible. The command deletes all existing folds except the ones that are selected. The first fold from the retained set is then used to create the new folds.

Environment variable: chainFolds

Align

Controls the alignment of the device selected for folding. You can choose one of the following values: Top, Center, or Bottom.

  • If the selected device is a PMOS, the value of the Align field is the current value of the lxChainAlignPMOS environment variable.
  • If the selected device is an NMOS, the value of the Align field is the current value of the lxChainAlignNMOS environment variable.

Create In Place

Creates the device folds at the same location in the layout canvas as the original device in a row region when at least one of the selected instances is on a row region.

If the original instance is at an orientation, such as R90, that can place the folds vertically, the Create In Place option can be used to create the new folds above or below the original instance.

Choose between Increasing or Decreasing to specify how the new folds are positioned. The positioning of the folds also varies depending on the placement orientation - horizontal or vertical.

  • For horizontal orientation, the new folds start at the lower left of the selected row region when positioning the folds in an Increasing placement, as shown below:

  • For horizontal orientation, the new folds start at the lower right of the selected row region when positioning the folds in a Decreasing placement, as shown below:

  • For vertical orientation, the new folds start at the lower left of the selected row region when positioning the folds in an Increasing placement, as shown below:

  • For vertical orientation, the new folds start at the upper left of the selected row region when positioning the folds in a Decreasing placement, as shown below:

Total Width

Shows the total value of all the fold widths displayed in the Width fields at the bottom of the form.

  • Add Fold: Adds an additional fold to the device and provides a field where you can specify the Width for the new fold.
  • Distribute: Divides the total width of the transistor evenly by the number of folds and sets the resultant Width as the value for each fold.
  • Delete: Removes the corresponding fold from the device.

If you set a width with no unit, the unit is automatically updated with the default value of the CDF width parameter. For example, if the default CDF value is 3u and you enter a width of 6, the width is set to 6u. If the default CDF value is 3 and you enter a width of 6, the width remains set to 6.

As in the case of individual fold widths, the value displayed in the Total Width field is controlled by the lxGetSignifDigits environment variable. If, for example, the environment variable is set to 4 significant digits, the value in the Total Width field displays up to four significant digits. If the environment variable is not set, the Total Width field displays up to six significant digits.

Irrespective of the original width of the transistor, the Total Width field displays the sum of the width values of the various folds. For example, if the original width of the transistor is 4u and the sum of the fold widths is calculated at 3.999u, the Total Width field displays the width as 3.999u instead of rounding off the value to 4.

If the difference between the Total Width and the original transistor width exceeds the tolerance value set by using the paramTolerance environment variable, a warning message is displayed indicating that the sum of the folded widths is not equal to the original transistor width.

For FinFET devices that are set to fold based on Number of fins, the Total Width field is replaced by Total Fins. Total Fins is the sum of the fins in each fold of a FinFET device. The values considered for Add Fold, Distribute, and Delete are also specified in terms of number of fins.

Related Topics

Additional Information on Interactive Folding

Ignoring Schematic Mfactor during Folding

Generating All Components from Source

Placement Modes for Generating Selected Components from Source

Unit Identifiers in Layout XL

Layout XL Forms


Return to top
 ⠀
X