Product Documentation
Virtuoso Automated Device Placement and Routing Flow Guide
Product Version IC23.1, November 2023

Auto P&R Assistant User Interface for Device-Level Placement

The Auto P&R assistant is the integrated, automatic placement and routing solution available in Virtuoso. Use the Auto P&R assistant to initialize, generate, place, and route layout designs automatically, as per your requirements.

Tab Description

Initialize

Generates layout representations of the schematic design components. Any existing components in the layout view are deleted and are regenerated from scratch.

Constraints

Automatically generates constraints and constraint groups.

Setup

Generates a row region or diffusion grids and poly width spacing pattern (WSP). The rows or grids, and WSPs are used for device placement, snapping, and routing.

Place

Lets you customize placement settings and run the placer.

Fill

Adds dummy and poly fill in gaps between the instances in a design.

Initialize

The following table describes the fields available on the Initialize tab of the Auto P&R assistant.

Field Description

Generation Options

Lets you select the objects to be generated in the layout.

Mode

Specifies a device generation mode:

  • Generate: Generates new devices in the layout design..
  • Update: Updates existing objects in the layout design.

Generate

Specifies the scope of layout generation.

  • All: Generates all objects present in the source.
  • Selected: Generates only the selected objects.

Instances

Generates all the instances in the schematic that do not have any ignore properties attached to them.

Pins

Generates devices and power pins.

Pin Layer

Specifies the layer in the source schematic that contains the device pins to be generated in the target layout.

Power Pin Layer

Specifies whether power pins are to be generated.

You can select the layer in the source schematic that contains the power and ground pins that are to be generated in the target layout.

By default, power and ground pins are not generated. The first metal layer in the layer stack is set as the default value.

Boundary

Generates a PR boundary.

Environment variable: init_boundaryUtilizationOrWidth

Utilization

Specifies the percentage of area within the cell boundary that can be filled with objects. The default is 25%.

Environment variable: init_boundaryUtilizationVal

Aspect ratio

Specifies the width-to-height ratio of the PR boundary. The default value is 1, which indicates a square boundary. An aspect ratio of 0.5 specifies a boundary twice as high as it is wide. A value of 2 specifies a boundary twice as wide as its height.

Width

Specifies the exact width of the PR boundary. This option is available in the Utilization drop-down list.

Environment variable: init_boundaryWidthVal

Height

Specifies the exact height of the PR boundary. This option is available in the Aspect Ratio drop-down list.

Migration Options

This section is available only in Layout MXL and is part of the assisted custom layout design migration flow.

Use the options in this section to capture source data and apply it to a target layout.

Migration Directory

Specifies the path to the directory in which the captured source data is stored. The target layout references this location for applying the captured source data.

Capture Placement from Layout

Captures data from the source layout and stores it in the specified Migration Directory.

Apply Placement to Layout

Specifies the target layout to which the captured reuse information must be applied.

Layout Objects

Specifies the objects in the target layout to which reuse settings are to be applied. The available options are:

  • Instances
  • Pins
  • Boundary
  • Constraints

PDK Settings

Specifies options to be used in layout reuse flow.

Use custom settings

Loads PDK settings from a specified file. This option is useful for loading additional parameters and values, for example fill overrides, environment variables, and device registration that are applicable only at lower nodes.

In the custom settings file, the apCustomPDKSettings API is defined to specify the required PDK and its settings.
Environment variables: apUseCustomSettings, pdkMapping, init_useCustomSettings

Generate

Generates the selected objects in the layout canvas.

Constraints

The following table describes the fields available on the Constraints tab of the Auto P&R assistant.

Field Description

Constraint Options

Specifies settings to apply when generating constraints.

Ignore Instance Self-symmetry

Restricts propagation of self-symmetry of multiple grouped instances into a single symmetry constraint.
Environment variable: ignoreInstSelfSymmetry

Arrange By Virtual Groups

After creating constraints, displays a preview of the virtual groups before placement.

All devices are arranged in columns according to their virtual groups.

Environment variable: arrangeByVGs

Migration options

This section is available only in Layout MXL and is part of the assisted custom layout design migration flow.

Use the options in this section to capture source data and apply it to a target layout.

Directory

Path to the directory in which the captured data is stored.

Highlight Groupings in Layout

Displays the Highlight Extract Group form, where you can select the groupings to be highlighted.

Capture Templates from Layout Groups

Captures groupings from the source layout. This information is stored in the specified Directory.

Apply Source Templates to Layout Groups

Applies the captured groupings to the target layout.

Groups and Constraints

Specifies settings to apply when generating constraints.

Select or Deselect all Constraint Groups

Selects or deselects all constraint groups.

Invert Selection

Inverts selection.

Reverts selection to previous state.

Expand or Collapse Trees

Expands or collapses all constraint group trees.

Hide Unused Categories / Show All Categories

Hides or shows unused, empty constraint groups.

Highlight and Unhighlight

Highlights all instances of the selected constraint groups in the layout and schematic views. Each constraint group is highlighted in a different color.

Load

Loads the constraint order from a preset file constPresets.device.array, which is located in the .cadence/dfII/APR/<num>/presets directory.

Save

Saves the current constraint order to a preset file constPresets.device.array, which is located in the .cadence/dfII/APR/<num>/presets directory.

Table

Lists all available constraint finder groups. You can select the required finder groups to be run when you click Find Structures.

Find Structures

Searches for matching structures in the source cellview and lists them under respective categories in the Groups and Constraints pane.

Create Constraints

Generates the constraints in the form of Modgens and symmetry constraints in the Constraint Manager.

Setup

The following table describes the fields available on the Setup tab of the Auto P&R assistant.

Field Description

Specify Pin Positions & Attributes

Opens the Pin Planner tab of the Pin Placement form.

Use the options in this form to set constraints and plan the placement of the pins in the design.

The form also includes the Pin Optimization tab that lets you position the pins of blocks in a manner that helps obtain the shortest possible net length at a particular level in the design.

Row Region

Defines row region parameters.

Create Diffusion Grid

Creates a diffusion grid based on the heights of the diffusion layers of different devices in the design. All row region-related options are automatically inactivated.

The Create Diffusion Grid check box appears on this tab only if enablePlaceWithWsp is set to t before launching the session.

See Placing Multi-Height Devices Using Automatic Device Placer.

Create Row Region

Creates a row region as per your specifications. The options to specify row height are enabled. Environment variable: createPatternRegion

By default, the name of the row region does not include the cell name. Set includeCellNameInRRName to t to include the cell name as part of the row region name.

Auto Compute Row Height

Specifies the row period. The option is selected by default. In this state, the tool calculates the row height based on the devices in the design, for example the maximum instance height and the heights of the gate, source, and drain tracks are considered. The calculated value is displayed in the Row Height field.

If not selected, you can specify the required value.
Environment variable: rowRegionMode

Use Passive Component Heights

Considers passive components, such as inductors, transformers, and transmission lines, for row height calculations. By default, passive components are ignored during row region and poly grid generation.
Environment variable: usePassiveComponentHeights

Specify Row Height

Lets you specify the row height.
Environment variable: rowHeight

Use Row Template

Lets you to import existing row templates.
Environment variables: useRowTemplate, importFromCell, importFromLib, importFromView

Row Pattern

Defines row parameters.

Define PN Pattern

Controls the distribution of P and N devices in rows.

The default value is */*/*, in which case the row region specification has a single row attribute.

The available patterns are PNNP and NPPN. You can either select one of these patterns or specify a custom pattern, such as NPNP. You can apply the pattern and verify it in the Row Template Manager.
Environment variable: definePNPattern

Generate Flipped Rows

Generates flipped rows and lets you select the orientation of the first (bottom-most) row. The available options are Start with R0 and Start with MX.
Environment variables: genFlippedRows, flipFirstRow

Poly Pattern

Defines poly layer patterns.

Create Poly Grid (WSP)

Creates poly layer patterns as WSPs.
Environment variable: rowHeight

Specify Grid Offset

Specifies the offset of poly grids.

Environment variables: specifyGridOffset, gridOffset

Include Passive Components

Recognizes the poly layer patterns of passive devices while generating WSPs.

Only physical layers are considered for height calculation. Environment variable: includePassiveComponentPoly

Generate button

Creates a row template, a row region, rows, and poly patterns, as specified.

Clear button

Clears the row region settings and resets them to their default values.

Place

The following table describes the fields available on the Place tab of the Auto P&R assistant.

Field Description

Floor Plan

Specifies the region for placement.

The options in the Floor Plan section are not available when the placement mode is set to Incremental in the Placement Options section.

Aspect Ratio

Specifies that the placement area must be calculated based on the specified aspect ratio. Environment variable: autoPlaceFixedAR

The default value is 1.0, which specifies a square boundary. An aspect ratio of .50 specifies a boundary twice as high as it is wide. A value of 2.00 specifies a boundary twice as wide as it is high. Multiple placement results can be obtained for different aspect ratios.

You can specify either a single value or multiple values in the Aspect Ratio field. When a single value is specified, the result is displayed in the same view. When multiple values are specified, a _number suffix is added at the view name. For example, for a view named layout, when the aspect ratio is set to 1, the result is saved as layout_1.00. If a view with that name exists, layout_1.00_0 is used. If that exists, then layout_1.00_1 is used, and so on.

If there is a comma after a single value, for example 1.0,, the input is treated as multiple values and a new view is created.

The valid formats for specifying multiple values are:

  • Aspect Ratio 1, Aspect Ratio 2,…: For example, 1.0,1.5,2.0 specifies three aspect ratios 1.0, 1.5, and 2.0.
  • Start:End:Step: For example, 1.0:2.0:0.5 specifies aspect ratios 1.0, 1.5, and 2.0.

  • [start:end]: You can also specify the aspect ratio range, for example [0.1, 5]. The result has an aspect ratio that is larger than 0.1 and less than 5.

In Aspect Ratio mode, you can set autoPlaceAdjustBoundary to t to let the placer adjust the PR boundary to enclose all the components in the design. You can also set autoPlaceAdjustRowRegion to t to let the placer adjust the row regions during placement.

To enable the placer to follow the aspect ratio specified in the initialization step, set PR Boundary as the placement region. Otherwise, the placer follows the aspect ratio specified in the placement options.

To lock the aspect ratio of all Modgens while running the placer, set autoPlaceLockFGAR to t. The aspect ratio-related settings defined in the Array Assistant are ignored. When set to nil (default), the aspect ratio settings in the Array Assistant are honored while running the placer.

Boundary

Fits all the objects inside the specified boundary.

  • Boundary: Places all objects within the selected placement boundary. The default value is PR Boundary. Other placement boundaries that are available in the design are listed in the drop-down list.
  • Custom Area: Lets you either draw a boundary around the visible area or draw a custom area boundary in the design canvas. All objects are placed inside the area boundary. You can show or hide the boundary. In this mode, Adjust PR Boundary is not available.

Lock Device Array Aspect Ratio

Locks the aspect ratio of all Modgens when running the Virtuoso device-level placer.

Adjust PR Boundary

Adjusts the PR boundary while running the placer according to the placement results.

This option is available only when Boundary is set to PR Boundary.

Environment variable: autoPlaceAdjustBoundary

Adjust Row Region

Automatically adjusts the row region while running the Virtuoso device-level placer according to the placement results.

Environment variable: autoPlaceAdjustRowRegion

Placement Options

Customizes the automatic placer settings.

Auto

Runs the Virtuoso device-level automatic placer on the entire design.

Incremental

Runs the placer on unplaced devices such as unplaced, overlapping, non-grid compliant, and non-row compliant devices. These devices are placed based on their connectivity with the placed components, while honoring all constraints and grids.

The incremental placer runs without changing the aspect ratio of the figGroups and Modgens, and therefore the options in the Floor Plan section are not available. However, the PR boundary and row regions are automatically adjusted.

The incremental placer does not run on objects that are located on the lower left of PR boundary.

The incremental place run results depend on the starting layout.

Optimize

Lets you choose the following optimization options:

When Mode is set to Auto, the available placement options are: Area (for compaction), Wire Length (for better routability), and Area and Wire Length (both compaction and better routability).

When Mode is set to Incremental, the available placement options are: Area (for compaction), Similarity (for placement similar to the placed devices), and Area and Similarity (both compaction and similar placement).

Place Selected Only

Runs the placer only on those the objects that are selected in the layout canvas.

Ignore Passive Device

Ignores passive devices while running the placer.

This option is useful when the design contains large passive devices that occupy most of the design aspect ratio. Honoring such passive devices might impact the placement quality of active components. With this option selected, the active devices are given a higher priority during placement.

Insert Trims to Fix Shorts

Inserts trims to devices automatically while running the automatic or incremental placer. All existing trims are deleted before inserting new ones.

To avoid shorts, add transition spacing between virtual groups so that the trims in one virtual group do not overlap the bbox of any other virtual group.

Also ensure that adjacent trim layers are at least two MD pins apart. If not, add dummies or change the placement to increase the spacing between them.

This option is available only in certain advanced node flows.

Transition Spacing

Adds transition rows or spacing above, below, or between the row regions. This space can be used for inserting guard rings, tap cells, or transition cells. The available options are:

  • Compact: The row vertical gap is set to 0 and the horizontal gap is set to the minimum value, following DRC rules.
  • Specify: Lets you specify absolute vertical and horizontal spacing values. You can also set the unit for vertical spacing to microns or rows to specify transition spacing in terms of the number of microns or the number of rows. Environment variables: vgSpacingMode, vgHorizontalSpaceSpecify, vgVerticalSpaceSpecify

Update

Updates the following settings after running the placer.

Adjust Boundary

Resizes the PR boundary such that it covers the devices placed outside the PR boundary.

Swap Colors of Flipped Rows

Swaps colors of flipped rows automatically while running the placer and updates the color swap parameters such that same-masked colors do not face each other.

When selected, the Color Swap parameter for MX and R180 devices (Devices in MX Rows) is turned on.

When not selected, the Color Swap parameter for R0 and MY devices (Devices in R0 rows) is turned off. This is to ensure that same M0 mask color is not applied to adjacent tracks.

This option is available only in certain advanced node flows.

Enable Hierarchical Trims

Enables trim insertion in hierarchical designs.

This option is available only in certain advanced node flows.

Minimize M0 on Nets

Minimizes the capacitance on M0 nets in addition to the regular trim insertion.

This option is available only in certain advanced node flows.

Insert Trims to Fix Shorts

Lets you run the following tasks:

  • Insert trims to fix shorts automatically while running the placer. Trims are added to devices in the current cellview and its PR boundary.
  • Run checks to identify potential trim violations.
  • Delete trims to remove all shorts in the cellview.
This option is available only in certain advanced node flows.

Interactive Placer

Refines the interactive placement settings.

Highlight Virtual Groups

Highlights all virtual groups in the layout canvas. The icon automatically changes to Dehighlight Virtual Group, which lets you remove the highlights.

Row Snapping

Snaps devices to the nearest rows.

Show Information

Displays information about the placement.

Fill

The following table describes the fields available on the Fill tab of the Auto P&R assistant.

Field Description

Fill Modgen Dummies

Inserts dummies to fill gaps between Modgens in virtual groups.

You can select the required Modgens before clicking this icon. If no Modgens are selected, the command is run on all active device Modgens in the current cellview.

If there are unabuttable devices in the Modgen, the tool checks cell fill to identify the fill object information for the gap and inserts identical dummies. Gaps caused by unabuttable devices are filled with the least number of dummies.

Dummy Type

Specifies the type of Modgen dummies to be inserted when the Fill Modgen Dummies button is clicked. The available dummy types are:

  • Default: Inserts dummies that match the devices, analog or stack gate analog cell.
  • Analog Dummy: Inserts dummies of type analog cell.
  • Stack Dummy: Inserts dummies of type stack gate analog cell.
This option is available only in certain advanced node flows.

Environment variables: modgenDummyTypeAnalogLCV, modgenDummyTypeStackLCV, modgenDummyTypeStackNum

Dummy Fill

Specifies dummy fill settings.

Enable Dummy Fill

Inserts dummy fill in the gaps between instances.
Environment variable: enableDummyFill,

Enable Hierarchical Fill

Specifies whether dummy fill can be inserted in hierarchical designs.

Extend Fill

Specifies whether the cell fill must be extended in all directions to cover the gaps within the PR boundary.

With this option selected, the fill inserted in the empty spaces are further extended in the horizontal and vertical directions to cover all gaps within the PR boundary.

Use environment variables vgFillSpaceSpecifyUnit and vgFillSpacePitchesOrUserUnit to specify the values by which fill are to be extended.

Environment variables: dummyFillEnableFillEmptyRow,

Convert to Fig Group

Converts fill to a figGroup when the fill is executed on a draw region.

Poly Fill

Inserts poly fill in the gaps between instances.

Poly fill extends the gate poly ands add cut poly rails as per the DRC rules.

As part of poly fill, the tool supports poly extensions, cut poly rails, and local interconnect layers, along with rails on the associated cut layer. Poly fill does not fill diffusion areas and areas with placement blockages.

Enable Poly Fill

Enables options to insert poly fill.

Fill Layer

Specifies the layer-purpose pair to be used by the placer to derive cut-poly fill.

Use Abutting layer

Uses the abutting layer as the fill layer instead of the poly fill layer.

Select this option when there are instances with dummy poly to fill active gates with Poly Drawing layer and dummy poly with poly dummy layer.

Cut Layer

Sets the cut layer to Cut Poly.

Cut Width

Specifies the width of the cut-poly rails.

Diffusion Support

Allows poly fill to be inserted around diffusion shapes. When this option is not selected, poly fill are kept away from diffusion shapes.

Fill Area

Specifies the region to be filled.

Highlight Virtual Fill Boxes

Highlights the boxes in which fill is to be inserted.

Highlight Dummy Fills

Highlights dummies in the layout. Click this button after adding fill devices to differentiate between active devices and dummies. 

Row Region

Specifies whether fill is inserted in all row regions or only in the row region selected from the drop-down list.

Custom Area

Inserts device fill in the custom area drawn.

Insert Fill

Generates the required dummy and poly fill as per your specifications.

Delete Fill

Deletes the selected device fill.

Create Guard Ring and Delete Guard Ring

These buttons are available only for certain advanced node flows.

The Create Guard Ring and Delete Guard Ring buttons work for both row regions and custom area. When there is no a valid row region, these buttons are disabled.

Add fill before creating a guard ring, especially if the existing virtual groups are not rectangular or contain gaps.

Related Topics

Initializing a Layout in the Automated Device Placement and Routing Flow

Generating Constraints and Constraint Groups

Virtuoso Automated Device Placement and Routing Flow

Generating and Deleting Base Layer Fill


Return to top
 ⠀
X