Product Documentation
Virtuoso Technology Data Constraints Reference
Product Version IC23.1, November 2023

maxDensity

spacings(
( maxDensity tx_layer
 f_density
)
) ;spacings
spacingTables(
( maxDensity tx_layer
 (( "step" nil nil ["window" nil nil] ) 
  [f_default]
 )
 (g_table)
)
) ;spacingTables

Specifies the maximum percentage of the design area that the metal on the specified layer can occupy. Density is calculated as follows:

Density = Metal area / Total area

Density constraints are usually represented in two ways. They can apply either across the area of the whole design or specifically to the region covered by the checking window, which is moved incrementally across the design to check for localized problems.

Checking density by using a stepped value requires that you start at a corner of the design, as shown above, and validate the density percentage for an area (window) whose height and width are each twice the step size or equal to the window size. You then continue to step across the design incrementally, moving the window by the step size, each time validating that the density percentage in the window is within the maximum required value.

The maxDensity constraint is used in conjunction with the minDensity constraint to ensure that the metal density for a design is neither too dense nor too sparse.

Values

tx_layer

The layer on which the constraint is applied.

Type: String (layer and purpose names) or Integer (layer number)

f_density

The maximum percentage of the total design area that the metal on the specified layer must occupy.

"step" nil nil ["window" nil nil]

This identifies the index for table.

If the window table index is not specified, the density check window is a square whose sides are twice the step size. As a result, the area to be checked is equal to (2 x step)2.

If the window table index is specified, the density check window is a square whose sides are equal to the specified window value. As a result, the area to be checked is equal to (window)2.

g_table

The table row is defined as follows:

(f_step f_window) f_density

or

f_step f_density

where,

  • f_step is the step size.
  • f_window is the window size.
  • f_density is the density percentage.

Type: A 1-D table specifying floating-point step and density values, or a 2-D table specifying floating-point step, window, and density values

Parameters

f_default

The density value to be used when no table entry applies.

Examples

Example 1: maxDensity with step

The density of Metal1 as a percentage of the total area of the design must be less than or equal to 65.0 when the step size is 60.0. The density check window is a square with side equal to 120.0.

spacingTables(
    ( maxDensity "Metal1"
     (( "step" nil nil )  )
(60.0 65.0)
)
) ;spacingTables

Example 2: maxDensity with step and window

The density of Metal2 as a percentage of the total area of the design must be less than or equal to:

spacingTables(
    ( maxDensity "Metal2"
     (( "step" nil nil "window" nil nil )
65.0
)
(
(60.0 100.0) 65.0
(120.0 200.0) 130.0
)
)
) ;spacingTables

Return to top
 ⠀
X