Product Documentation
Mixed Signal (MS) Interoperability Guide
Product Version 22.13, Last Updated in July 2023

15

Placing Standard-cell-based Designs from Virtuoso

15.1 Overview

You can use the Innovus placer to place standard cells on a cell view that was originally created in Virtuoso. The OpenAccess-based Mixed Signal flow supports the following flows:

In addition to offering flexibility in the flow, placing the design in Innovus offers some advantages:

After placement of standard cells is done, you can either save the resulting cell view to make it available to Virtuoso or proceed to route the design in Innovus using NanoRoute.

The OpenAccess-based Mixed Signal flow allows you to choose freely when to switch back to Virtuoso – either after placement or after routing.

15.2 Guidelines for Placing a Standard-cell-based Design from Virtuoso in Innovus

Keep the following guidelines in mind while using Innovus to place a Standard-cell-based Design from Virtuoso:

15.3 What are Sites and Rows in Innovus and Why They Are Needed

Site and row are basic terms related to placement and routing. A site defines a placement site, and is a placement location that can be used by the cells that match the same site. Physically, it is a rectangle with a specific width and height. A repeating set of sites creates a row. 

A site can either be an I/O pad site for the placement of I/O pads or a core site for the placement of standard cells. The above and below pictures show how the repeating sites form a horizontal standard cell row. Sites for standard cells are called core sites because the standard cells are placed in the core area of the design.

In Innovus, the standard cell rows in the design are not selectable by default. To make them selectable, check the Selectability check box for Standard Row in the Control Panel, which is located at the right of the main window. Similarly, the sites are not visible by default so you need to select  the Visibility check box for Row Pattern to view the sites.

After selecting a standard cell row, double-click or press the Q key to view the Site Name, Site Width and Site Height, and other attributes of the row.

Typically, standard cells are structurally designed with heights that are integral multiples of the site height, such as single-height cells or double-height cells. This is done for several reasons, such as optimal use of the area, enabling placement of cells with alignment, allowing power rails to be shared, and so on. Most importantly, standard cell rows must be present in the floorplan for Innovus to auto-place the standard cells.

The diagram above shows how standard cells are placed along the row. These standard cells are single-height cells. Each row consists of abutted sites and the Placer in Innovus always snaps the cells to the site. With very few exceptions, standard cells are typically designed in a way that the cell widths are multiple integral value of the site width. For example, if the site width is 0.5um, the standard cells are designed with widths of 0.5um, 1um, 1.5um, and so on.

The diagram below shows three double-height cells placed along with many single-height cells.

To allow placement of both single- and double-height cells in the same area, both single-height rows and double-height rows are to be created such that they overlay each other. The following diagram shows how rows of different heights and orientations overlay each other.

Note that CoreSiteDouble, for double-height standard cells, has the same site width as CoreSite, but its height is double that of CoreSite so that two single-height rows can overlay a double-height row completely.

15.4 Site Property in the Cell View of Standard Cells

Site definition is a property that should be defined in the abstract of the standard cells. To view the site definition of a cell view, open it in Virtuoso and select File -> Properties from the menu bar. This displays the Edit Cellview Properties form. The following example shows the properties of the CLKBUFX8 standard cell. Its site name is CoreSite. Its Symmetry Type of XY indicates that it can also be placed with different orientations of R0, MX, MY, and R180.  Note that this cell is of cellType core, which enables Innovus to identify it as a standard cell.

It is also possible to view the site property of a standard cell in Innovus. Simply run write_lef_library with the -macro_only option and search the generated output LEF file for the keyword SITE on that standard cell.

> write_lef_library -macro_only my_macro.lef

The following is the example for the CLKBUFX8 cell from the output LEF file:

MACRO CLKBUFX8

        CLASS CORE ;

        FOREIGN CLKBUFX8 0 0  ;

        ORIGIN 0 0 ;

        SIZE 2.2 BY 1.71 ;

        SYMMETRY X Y ;

        SITE CoreSite ;

...

Note that the LEF statements for CLKBUFX8 also show similar properties, such as symmetry type (SYMMETRY X Y), site name (SITE CoreSite), and cell type (CLASS CORE).

15.5 Site Definition in the Technology Library

The MSOA flow requires an MSOA PDK for the flow to be run successfully. A regular PDK (not MSOA PDK) meant for manual layout editing in Virtuoso will commonly not contain any site definition in the technology library. Refer to section "3.2 Technology Data Preparation" in the Technology Data Preparation chapter to see how the SITE definition contained in either the digital TLEF or the macro LEF are imported to the ITDB during the creation of an MSOA PDK.

To see if the technology library contains any SITE definition, dump out the text technology file and view the siteDefs section. The steps are as follows:

  1. Invoke Virtuoso.
  2. In the Command Interface Window, select Tools -> Technology File Manager.
  3. In the resulting Technology Tool Box form, click the Dump button. This opens the Dump Technology File form.
  4. Select the desired technology library, select the siteDefs check box, specify the file name in the ASCII Technology File text box and click OK.

The following example shows the SITE definition section in a technology file. Two sites are defined: CoreSite and CoreSiteDouble.

;********************************

; SITEDEFS

;********************************

siteDefs(

 scalarSiteDefs(

 ;( siteDefName          type width  height  symInX symInY symInR90)

 ;( -----------          ---- -----  ------  ------ ------ -------)

  ( CoreSite             core 0.2     1.71    nil    t     nil)

  ( CoreSiteDouble       core 0.2     3.42    t      t     nil)

) ;scalarSiteDefs

) ;siteDefs

Alternatively, in Innovus, run write_lef_library -tech_only to generate an output LEF file that contains the technology information. Open the LEF file and search for the keyword SITE:

> write_lef_library -tech_only my_tech.lef

SITE CoreSite

        CLASS CORE ;

        SYMMETRY Y ;

        SIZE 0.2 BY 1.71 ;

END CoreSite

SITE CoreSiteDouble

        CLASS CORE ;

        SYMMETRY X Y ;

        SIZE 0.2 BY 3.42 ;

END CoreSiteDouble

In the above example, for the CoreSite definition meant for single-height standard cells, the t Boolean value for the SymInY  attribute or the SYMMETRY Y  statement in TLEF indicates that the row allows the standard cell with the SYMMETRY Y or SYMMETRY XY  property to be flipped horizontally along the row. This is typical for single-height standard cells as flipping the cells vertically will cause a short on the power rails.

In double-height cells, the upper and lower cell edge typically contains the same type of power rail: either both are VDD or both are VSS. Therefore, double-height cells can be flipped vertically. So in the CoreSiteDouble definition meant for double-height standard cells, the t Boolean value for the SymInX attribute or the SYMMETRY X Y statement in TLEF indicates that the row allows the standard cell with the SYMMETRY Y  or SYMMETRY XY property to be flipped horizontally along the row and standard cell with the SYMMETRY X or SYMMETRY XY property to be flipped vertically along the row.

Note that without having the site defined in the technology libraries, Innovus will issue a messages such as the following in the log file:

**ERROR: (IMPOAX-750):  Tech site 'CoreSite' used in macro 'CLKBUFX8' is not found. Check if this macro in OpenAccess (OA) database has correct site information, and if the site is defined in OA technology database.

**WARN: (IMPOAX-755):   Macro 'CLKBUFX8' has no SITE statement and it is a class CORE macro that requires a SITE statement. The SITE ENC_CORE_0 is chosen because it is a core site with height 1.7100 that matches the macro SIZE height.

When Innovus observes that the site property of a standard cell is not defined in the technology, it creates a dummy site with its best guess for site height and width. In general, it does a good job in computing the site height and width. However, the dummy site may not provide the correct symmetry type. The Placer may be able to place that standard cell, but there is no guarantee that all placement operations will work properly with the dummy site. As the site definitions for standard cell sets are often defined in the macro LEF or technology LEF, these files should always be imported when creating the MSOA PDK.

15.6 Standard Row Creation by Innovus During init_design

Consider a cell view that has no standard cell rows and has its PRBoundary object created in Virtuoso. When this cell view is loaded into Innovus through the init_design TCL command or through the Design Import form, Innovus detects the absence of rows and populates the entire design with rows.

Innovus inserts the rows from the bottom to the top, with sites added from left to right. The bottom row is the first row added, and is flipped by default so that it can share the same power rail with the next row, which is not flipped. This implies that single-height standard cells with XY symmetry are placed either with the MX or R180 orientation in the first row. Similarly, for the other odd rows. All the even rows are not flipped, and therefore single-height standard cells in those rows are placed with either R0 or MY orientation.

As shown in the picture above, the first row is inserted in such a way that the bottom edge of the row aligns with the bottom edge of the design boundary (determined by the specification of the PRBoundary object) and the left edge of the row aligns with the left edge of the design boundary.

As the tool fills up the design with only full sites and no partial site is created, some empty space is expected between the top edge of the top row and the top edge of the design boundary when the height of the design is not a value multiple of the row height. Similarly, there is empty space between the right edge of the row and the right edge of the design boundary too when the width of the design boundary is not a value multiple of the site width. 

To identify the orientation of a row or cell, check which corner of the row or cell has the cross line.

15.7 Switching the Orientation of the Standard Rows

As the bottom row (and other odd number rows) created by init_design is flipped by default, these rows are unusable if the standard cells are to be placed with a different orientation. To recreate rows with a different orientation, follow the steps below:

  1. deleteRow -all
  2. setFlipping s
  3. initCoreRow

This set of steps basically deletes the current rows and recreates the rows with a different orientation. The setFlipping command specifies that the second and other even rows are to be flipped.




 ⠀
X