Product Documentation
Virtuoso Space-based Router Command Reference
Product Version IC23.1, September 2023

check_density

check_density 
[ -lpp {s_layerlpp } ] 
[ -output_lpp s_lpp ] 
[ -boundary {f_xlo f_ylo f_xhi f_yhi} ] 
[ -all | -region {f_xlo f_ylo f_xhi f_yhi} ] 
[ -window_size {f_userunit [f_userunit]} ] 
[ -step_size {f_userunit [f_userunit]} ] 
[ -min_density f_percent ] 
[ -max_density f_percent ] 
[ -max_diff_density f_percent_0_to_1 ] 
[ -density_range {f_minpercent f_maxpercent} ] 
[ -annotate [ true | false ] ] 
[ -annotation_limit i_count ] 
[ -clear_annotations ] 
[ -blockage_density f_percent ] 
[ -boundary_interior_halo {f_x f_y} ] 
[ -boundary_interior_halo_min_density_hole_mult f_multiplier ] 
[ -boundary_interior_halo_target_density f_percent ] 
[ -no_sync ] 
[ -silent | -verbose ] 
[ -error_limit i_count ] 
[ -threads i_threads ] 

Description

Checks the metal density for a layer or layer purpose. You can check a specific region or the entire design in the active window. The area is checked one section at a time in partitions given by the window_size argument, beginning from the bottom-left of the area and moving across and up the area in step_size steps until the entire area has been checked. By default,

The results are reported in the Transcript area for each layer checked. You can also create annotations for window sections that are not within the required densities and/or output the violating windows to a specific layer purpose.

If the minDensityHole constraint is set, this command will also check for holes whose effective width and area are larger than or equal to the minimum values defined by the constraint. The number of holes found will be included under the Violation Count heading in the Transcript area report. Polygon annotations can be created that outline the hole areas.

To identify holes that straddle two abutting blocks but do not qualify as holes within the individual blocks, use -boundary_interior_halo to specify a band around the block boundaries and choose a minDensityHole multiplier (-boundary_interior_halo_min_density_hole_mult) greater than 0 and less than 1.0 to recognize a smaller area as a hole within each block boundary.

To increase metal density, use create_fill.

The GUI equivalent for this command is Verify—Metal Density.

Arguments

-all

When specified and by default, processes the entire design.

-annotate [ true | false ]

Chooses whether to create annotations to mark holes (if the minDensityHole constraint is set) and density check violations (sections that do not meet the density requirements). The annotations are added to the annotation:violation purpose of the given layers and are listed by layer under Density-MinDensity Holes, Density-Max Density, Density-Min Density, or Max diff density violation in the Violations page of the Annotation Browser. By default, annotations are created.

-annotation_limit i_count

Specifies the maximum number of violations to create annotations for. The default is 1000. A value of -1 specifies no limit.

-blockage_density f_percent

Specifies the metal density to use for blockages. If a percentage of 0 is given, then blockages are treated as if there is no metal in the blockage area.

Default: target density

-boundary {f_xlo f_ylo f_xhi f_yhi}

Overrides the default behavior of determining the boundary used for checking density. The default is 1) Place and Route boundary and 2) occurrence bounds.

-boundary_interior_halo {f_x f_y}

Specifies a band (given by x and y offsets) inside the boundary in which a modified target density can be specified using -boundary_interior_halo_target_density, and/or a modified minimum hole area can be specified using -boundary_interior_halo_min_density_hole_mult.

-boundary_interior_halo_min_density_hole_mult f_multiplier

Multiplies the minDensityHole constraint by this value to determine the minimum hole area within the boundary halo given by -boundary_interior_halo. Value must be greater than 0 and less than 1. This lets you identify holes that are smaller than minDensityHole within the boundary halo.

-boundary_interior_halo_target_density f_percent

Specifies the target density percentage (0-100) to use within the boundary halo given by -boundary_interior_halo.

-clear_annotations

Removes existing violation annotations of the same check type and input layers before performing this check. If not specified, existing violations are not cleared.

-density_range {f_minpercent f_maxpercent}

Specifies the minimum and maximum density percentage to use as lower and upper limits. If not specified, the values from the technology database are used. If these values are not available, the command fails.

-error_limit i_count

Specifies the maximum number of errors to detect before stopping. By default, no error limit is set. A value of -1 also specifies no limit.

-lpp {s_layerlpp…}

Specifies the layers to check.

-max_density f_percent

Specifies the maximum density percentage. Defaults to the maxDensity constraint value, if defined, otherwise 100%. Valid values: 0 to 100

-max_diff_density f_percent_0_to_1

Specifies the maximum density difference allowed between adjacent, non-overlapping check windows. Defaults to the maxDiffDensity constraint value, if defined. Must be between 0 and 1.

-min_density f_percent

Specifies the minimum density percentage. Defaults to the minDensity constraint value, if defined, otherwise 0%. Valid values: 0 to 100

-no_sync

Prevents the OpenAccess database from being updated.

-output_lpp s_lpp

Specifies the layer purpose to add violating window sections to.

-region {f_xlo f_ylo f_xhi f_yhi}

Specifies the area to check, given the lower-left and upper-right coordinates. If not specified, the entire design in the active artwork window is checked.

-silent

When selected, turns off detailed messages during the check.

-step_size {f_userunit [f_userunit]}

  

Specifies the window step as a single value for X and Y, or as two values ({X Y}). By default, one-half of the window size (-window_size) is used.

-threads i_threads

Specifies the number of threads or processors to use in parallel to run this command. By default, if multi-threading has been enabled, the session threads are used, otherwise, one processor is used.

-verbose

Outputs a message for each error found during the check.

-window_size {f_userunit [f_userunit]}

Specifies the checking window size as a single value for X and Y, representing a square window, or as two values ({X Y}). By default, the window size given by the minDensity or maxDensity constraint is used.

Value Returned

i_count

Indicates the number of window sections found that do not meet the density criteria.

-1

The command did not run due to a syntax error or a missing required argument.

Examples

The following example sets the window size to 200 microns (the step size defaults to one-half of the window size or 100 microns). The entire design in the active window will be checked. Annotations will be created for window sections with a met1 density that is less than 25% or greater than 90%. The annotations will be listed in the Annotation Browser Violations page.

check_density -lpp met1 -density_range {25 90} -window_size 200

Example output from this command to the Transcript area:

      Window Window  Min     Max    Violation Count Density Percentage Stats  Std
Layer Size Step Density Density Min Max lowest highest median ave Dev
===== ====== ====== ======= ======= =============== ========================= ===
met1  200.00 100.00  25.0%   90.0%   127 0 0.00% 53.17% 2.49% 7.94% 2
127

Related Topics

Verify Commands

create_fill

enable_multithreading


Return to top
 ⠀
X