• Skip to main content
  • Skip to search
  • Skip to footer
Cadence Home
  • This search text may be transcribed, used, stored, or accessed by our third-party service providers per our Cookie Policy and Privacy Policy.

  1. Blogs
  2. Analog/Custom Design
  3. Virtuosity: Doing Placement in a Row-Based Environment
Priya Sriram
Priya Sriram

Community Member

Blog Activity
Options
  • Subscribe by email
  • More
  • Cancel
CDNS - RequestDemo

Have a question? Need more information?

Contact Us
ICADVM18.1
Advanced Node
Virtuoso Placer
Virtuoso Layout Suite
Custom IC
Row-Based Placement

Virtuosity: Doing Placement in a Row-Based Environment

17 Dec 2018 • 5 minute read


If row-based placement is a topic that interests you, you might have read our post from the last week. If you haven’t read it yet, I’d highly recommend it for its focus on the need and benefits of row-based layouts at advanced nodes. For a recap, here’s what the post revolves around.

We saw the need for row-based layouts at advanced nodes to:

Arrow forward Address the increasingly complex density rules

Arrow forward Deal with an exponentially increasing DRC rule count

Arrow forward Achieve uniformity in layout styles across various teams

Arrow forward Reduce the learning curve for new engineers

Now that we've talked about why row-based placement, I'll turn my attention to how it's done in Virtuoso.

Support for Row-Based Environment in Virtuoso

At advanced nodes, Virtuoso provides the capability to define reusable row templates. You can use these templates to generate row regions with uniform (or non-uniform) rows in the layout design. You can then place all the supported devices in these rows. The diagram below summarizes the tasks involved:

Let's now talk about the individual tasks.

Defining Rows

The Row Template Manager provides the capability to define row templates. You can create row templates specific to your design style and then use these templates to generate rows in the layout canvas. Typically, the layout engineers do not define layout templates. Instead, a key engineer, who drives the methodology, defines the row templates.

What's a row template?

A row template specifies directives about how a layout would appear and how devices must be placed in rows. A row template includes information about the:

  • Height of the row template
  • Number of rows in the row template
  • Heights of the rows
  • Types of devices that can be placed within each row, including their orientations and alignment references
  • Rail definitions within each row

Generating Rows

Now that you have your row template in place, use the Placement Planning form to create a row region object in the layout canvas. The row region can be drawn in the entire PR boundary or in a specific part of the PR boundary to allow multiple row regions within a single PR boundary. While the row template determines how rows must be created in the region, a row region contains repetitions of the row template based on the height of the row region or as per the user specifications. Row attributes determine the types of instances that can be placed in each row and the manner in which they must be placed.

Placing Objects in Rows

The next step is to use the automatic and assisted placement options to place all devices, Modgens, and standard cells in these rows​. Choose a suitable mode:

  • Automatic Placement: Virtuoso Placer is the automatic placer available at advanced nodes. In this mode, you run the Virtuoso Placer. Depending on the majority device types in your design, choose:
    • Custom Digital: Places standard cells within the rows, while optimizing the wire lengths and constraints.
    • Analog Refine: Snaps devices to rows and snap patterns and resolves overlaps between devices. In this mode, the integrity of the current placement is maintained by not changing the relative positions of devices.
    • Like Schematic: Places devices in the layout based on their relative positions in the schematic design. You can choose to abut devices and group the mfactored devices in an array during placement.

  • Assisted Placement: Here, you can interactively move and edit instances within a row region. Instances are snapped to rows and their orientations are updated dynamically. Use the Move command to interactively move instances within the rows, resolve any overlaps, and (optionally) simultaneously order them as they are placed.

  • Assisted Batch Placement Commands: A few more tweaks needed? The Place menu includes additional commands that let you refine the placement as per your requirements. Here are a few batch placement commands that you can use:
    • Resolve Overlaps: Resolves all instance overlaps.
    • Abut and Unabut Instances: Abuts or unabuts all or the selected instances in a row.
    • Swap Instances: Swaps the two selected instances.
    • Swap Rows: Swaps all instances in the two selected rows.
    • Snap to Grids and Rows: Snaps all instances to valid grids and rows.
    • Adjust Boundary: Shrinks the PR boundary based on the data extent.

BulbTip: Depending on the complexity of your design and placement needs, you can choose to do a complete assisted placement or use the assisted placement options to refine the placement after running the Virtuoso Placer.

Inserting Dummy Fill 

After placement, the next task is to ensure design correctness and conformance with advanced node layout constraints. To do this, insert dummy fill in the empty spaces within the rows. Depending on your design type, different types of fill flows are supported:

  • Standard Cell Designs: Inserts filler cells in the empty spaces between standard cells. The tool automatically chooses appropriately-sized filler cells, prioritizing the larger filler cells over the smaller ones. Filler cells are typically provided by the foundry.
  • Transistor-Level Designs: Inserts custom filler cells in the empty regions between transistors. Typically, the foundry does not provide filler cells for transistor-level designs. You can use either existing custom cells in the design or the active transistor cells to fill the gaps with the customized parameter settings.

Verifying Placement Results 

Finally, use the Batch Checker to verify whether the placement is in accordance with the predefined placement constraints.

Related Resources

  • Virtuoso Placer User Guide
  • Row-based Placement: Rapid Adoption Kit (RAK)

For more information on Cadence circuit design products and services, visit  www.cadence.com.

About Virtuosity

Virtuosity has been our most viewed and admired blog series for a long time that has brought to fore some lesser known, yet very useful software and documentation improvements, and also shed light on some exciting new offerings in Virtuoso. We are now expanding the scope of this series by broadcasting the voice of different bloggers and experts, who would continue to preserve the legacy of Virtuosity, and try to give new dimensions to it by covering topics across the length and breadth of Virtuoso, and a lot more… Click Subscribe to visit the Subscription box at the top of the page in which you can submit your email address to receive notifications about our latest Virtuosity posts.

Happy Reading!

Priya


CDNS - RequestDemo

Try Cadence Software for your next design!

Free Trials

© 2025 Cadence Design Systems, Inc. All Rights Reserved.

  • Terms of Use
  • Privacy
  • Cookie Policy
  • US Trademarks
  • Do Not Sell or Share My Personal Information