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

vcpfeRunCustomDigitalPlacer

vcpfeRunCustomDigitalPlacer(
d_schCvID
d_layCvID
[ ?groupCMOSPairs { t | nil } ]
[ ?preserveChains { t | nil } ]
[ ?groupMFactors { t | nil } ]
[ ?allowRotation { t | nil } ]
[ ?selectedCompList l_selectedCompList ]
[ ?placementMode { Auto Placement | ECO Placement } ]
[ ?optimization { none | basic | moderate | optimized } ]
[ ?ecoModeImpact { none | localized | maximized } ]
[ ?insertSubstrateContacts { t | nil } ]
[ ?saveAs { t | nil } ]
[ ?saveAsLibName t_libName ]
[ ?saveAsCellName t_cellName ]
[ ?saveAsViewName t_viewName ]
[ ?overwrite { t | nil } ]
[ ?intraRowSpacer { t | nil } ]
[ ?interRowSpacer t | nil } ]
[ ?adjustBdy { t | nil } ]
[ ?reserveTracksForRouting { -1 | 0 | 1 ... 10 } ]
[ ?vcpRulesConstraintGroup t_constraintGroupName ]
[ ?minBoundaryOffset f_offset ]
[ ?maxPinsPerNet x_numPins ]
[ ?mixedMode { t | nil } ]
[ ?placeCluster t_clusterName ]
[ ?componentEdge { Boundary | Bounding Box } ]
)
=> t

Description

Runs the custom digital placer, specifying the type of placement that is done, the technology rules to be used, any automatic spacing adjustments to be done, and how the modified cellview is saved.

Arguments

Each of the arguments listed has an equivalent environment variable. If you do not explicitly set a particular argument, the function defaults to the behavior specified by the corresponding environment variable.

There is no argument that corresponds to the vcpCellBoundaryLPPs environment variable. However, the environment variable setting is taken into account when you run the SKILL function.

d_schCvID { t | nil }

  

Database ID of the schematic source.

d_layCvID { t | nil }

  

Database ID of the layout cellview to be placed.

?groupCMOSPairs { t | nil }

  

Groups pairs of CMOS devices in designs that have been generated with chaining switched on.

This option does nothing for devices that have been abutted manually because clustering needs chaining information.

?preserveChains { t | nil }

  

Preserves chains that were generated automatically by the Generate All From Source or Placement Planning commands.

When switched off, the placer is free to break chains in order to share diffusion on individual transistors, which can reduce the wire length of polysilicon gate connections and result in better alignment.

?groupMFactors { t | nil }

  

Automatically adds a grouping constraint for complementary MOS devices that have a multiplication factor in the schematic.

?allowRotation { t | nil }

  

Lets the placer rotate components as part of its optimization. When switched off, the placer can move components but not rotate them.

?selectedCompList l_selectedCompList

Lists the instIds of components that need to be placed. Default value is nil which means all the components will be placed.

?placementMode { Auto Placement | ECO Placement }

Specifies the mode to be used to place components

Enclose the value in double quotes

?optimization { none | basic | moderate | optimized }

Controls the time that the placer spends trying to achieve the best possible results in Auto Placement Mode.

Enclose the value in double quotes

?ecoModeImpact { none | localized | maximized }

Specifies the extent to which the placed components within the design can be moved from their original positions in ECO Placement Mode

Enclose the value in double quotes

?insertSubstrateContacts { t | nil }

  

Inserts standard cell substrate contacts in the empty spaces between the standard cells in a row, based on a specified minimum and maximum contact spacing value. You specify the name of the component type that contains the substrate contacts using the substrateContactType environment variable.

This option is honored only when using the Assisted Standard Cell and Assisted Mixed CMOS/Standard-Cell placement styles.

?saveAs { t | nil }

  

Saves the placed layout under a different cellview name. If the cellview name you specify already exists, you must set ?overwrite to t to enable the placer to run.

The cellview is not saved automatically before placement is run, so be sure to save it to disk before you start in order to preserve any edits that are still in memory. To discard the changes the placer makes, close the output cellview without saving.

?saveAsLibName t_libName

  

Specifies the library name for the ?saveAs option.

?saveAsCellName t_cellName

  

Specifies the cell name for the ?saveAs option.

?saveAsViewName t_viewName

  

Specifies the view name for the ?saveAs option.

?overwrite { t | nil }

  

Automatically overwrites an existing cellview with the same name as that specified by the ?saveAs options.

If the specified cellview name already exists and ?overwrite is set to nil, the placer does not run.

?intraRowSpacer { t | nil }

  

Adds or removes space between the components within each row.

?interRowSpacer { t | nil }

  

Adds or removes space between each row in order to improve routability. Specify the number of tracks to add between each row using the ?reserveTracksForRouting option.

?adjustBdy { t | nil }

  

Automatically recalculates the boundary to take into account the spacer options.

?reserveTracksForRouting { -1 | 0 | 1 ... 10 }

  

Specifies the additional number of routing tracks to be reserved between each row when running the ?interRowSpacer function.

The number you specify is added to the number of tracks the placer estimates are required to perform the routing to give the total number of tracks required. This is then compared to the number of tracks available between rows and the space available increased or reduced accordingly.

For example,

Placer estimates required tracks for routing: 10
reserveTracksForRouting: 3
Total number of tracks required: 13

If there are currently 8 tracks available between rows, the placer adds space for 5 more.
If there are currently 15 tracks available between rows, the placer removes 2.

?vcpRulesConstraintGroup t_constraintGroupName

  

Specifies the constraint group containing the placement rules for the current technology.

?minBoundaryOffset f_offset

  

Specifies the minimum spacing allowed between the boundary edge and the nearest component.

The default value is half of the maximum value of all the spacing rules for the layers specified in the applicable technology database.

?maxPinsPerNet x_numPins

  

Specifies the maximum number of pins a net can have for its cost to be considered during placement. Nets with more than the specified number of pins are not considered.

?mixedMode { t | nil }

  

Allows floating components to be moved when using the Assisted Mixed CMOS/Standard Cell placement mode

?placeCluster t_clusterName

  

Places only the components assigned to the specified cluster name.

?componentEdge { Boundary | Bounding Box }

  

Specifies which edge is used when placing a component against the placement boundary.

Boundary places the component’s boundary against the placement boundary. This does not include any well spacing defined around the component, which consequently might lie outside the boundary after placement.

Bounding Box places the component’s bounding box against the placement boundary. This includes any well spacing defined around the component.

Value Returned

t

The custom placer was run. Progress and problems are reported using the usual error and warning messages.

Examples

Runs the custom digital placer by using the settings specified by the related environment variables.

vcpfeRunCustomDigitalPlacer(schId layId)


Return to top
 ⠀
X