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

minDensity

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

Specifies the minimum percentage of the design area that the metal on the specified layer must 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 exceeds the minimum required value.

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

Values

tx_layer

The layer on which the constraint is applied.

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

f_density

The minimum 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: minDensity with step

The minimum density of Metal1 as a percentage of the total area of the design must be at least 20.0 when step size is 60.0. The density check window is a square with side equal to 120.0.

spacingTables(
    ( minDensity "Metal1"
     (( "step" nil nil ) 
20.0
)
(60.0 20.0)
)
) ;spacingTables

Example 2: minDensity with step and window

The minimum density of Metal2 as a percentage of the total area of the design must be as follows:

spacingTables(
    ( minDensity "Metal2"
     (( "step" nil nil "window" nil nil )
20.0
)
(
(60.0 100.0) 20.0
(120.0 200.0) 40.0
)
)
) ;spacingTables

Return to top
 ⠀
X