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 density for each partition (check window) is checked against the
minDensity and maxDensity constraint values. -
The density difference between adjacent, non-overlapping partitions is checked against the
maxDiffDensity constraint value. -
The window sizes/step sizes given by the density constraints are used.
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