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

create_fill

create_fill 
[ -all | -region {f_xlo f_ylo f_xhi f_yhi} ] 
[ -boundary {f_xlo f_ylo f_xhi f_yhi} ] 
[ -lpp {s_layerlpp } ] 
[ -window_size f_userunit ] 
[ -step_size f_userunit ] 
[{[ -fill_width {f_min f_max} ] 
  [ -fill_length {f_min f_max} ] 
  [ -fill_step_size f_userunit ]} 
 | -fill_dimensions {{f_width f_length}} ] 
[ -fill_blockage_spacing f_userunit ] 
[ -fill_boundary_spacing f_userunit ] 
[ -fill_clock_spacing f_userunit ] 
[ -fill_direction {preferred | nonpreferred | any} ] 
[ -fill_fill_spacing f_userunit ] 
[ -fill_keepout_lpp {s_lpp…} ] 
[ -fill_lpp_spacing {{s_layerlpp f_userunit}} ] 
[ -fill_minarea f_userunit ] 
[ -fill_pg_spacing f_userunit ] 
[ -fill_shape {square | rectangle | both} ] 
[ -fill_signal_spacing f_userunit ] 
[ -fill_style {dense | distributed | regular | greedy} ] 
[ -fill_type {floating | OPC} ] 
[ -fill_via_spacing f_userunit ] 
[ -fill_wire_spacing f_userunit ] 
[ -ignore_illegal_lpp [ true | false ] ] 
[ -max_density f_percent ] 
[ -max_diff_density f_percent_0_to_1 ] 
[ -min_density f_percent ] 
[ -density_range {f_minpercent f_maxpercent} ] 
[ -staggered [ true | false ] ] 
[ -target_density f_percent ] 
[ -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 ] 
[ -use_grid {mfg | route} ] 
[ -max_effort [ true |false ] ] 
[ -effort_level {1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 0 | 10} ] 
[ -threads i_threads ] 
[ -verbose | -silent ] 

Description

Checks the metal density for layers in a given area and adds metal fill to achieve optimum metal density required by a specific manufacturing process.

Arguments

-all

Operates on the entire design. This is the default area.

-blockage_density f_percent

Specifies the blockage percentage to consider when creating fill. By default, the target density is used. If a percentage of 0 is given, then blockages are treated as if there is no metal in the blockage area for density calculations, but the blockage area is still honored when placing fill shapes.

-boundary {f_xlo f_ylo f_xhi f_yhi}

Specifies an alternate boundary for the design.
Default: the 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 and fill 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.

-density_range {f_minpercent f_maxpercent}

Specifies the minimum and maximum density percentage to use as lower and upper limits. By default, minDensity and maxDensity constraint values are used, if defined.

-effort_level i_value

Specifies the amount of searching to do when looking for open areas in which to place fill shapes. The larger the number, the more searching is done, and the longer the runtime. Default: 1

-fill_blockage_spacing f_userunit

Specifies the minimum spacing between a fill shape and a blockage. The default value is the fill-signal spacing value.

-fill_boundary_spacing f_userunit

Specifies the minimum spacing between a fill shape and the design boundary. Defaults to the minFillPatternSpacing value, if defined, otherwise 0.

-fill_clock_spacing f_userunit

Specifies the minimum spacing between a fill shape and a clock route. The default value is the fill-signal spacing value.

-fill_dimensions {{f_width f_length}}

Specifies a list of fill shape width/length pairs to use for fill shape dimensions. Only fill shapes with dimensions in the list will be created.

-fill_direction {preferred | nonpreferred | any}

Specifies how fill shapes should be oriented relative to the layer’s preferred routing direction.

preferred

(Default) Fill is aligned with the layer’s preferred routing direction.

nonpreferred

Fill is aligned perpendicular to the layer’s preferred routing direction.

any

Fill can be aligned in either direction.

-fill_fill_spacing f_userunit

Specifies the minimum spacing between two fill shapes. The default is taken from the technology file (minSameNetSpacing or minSpacing, in that order)

-fill_keepout_lpp {s_lpp…}

  

Prevents fill from being added that would touch any shape on the given layer purpose pairs.

-fill_length {f_min f_max}

Specifies the minimum and maximum fill length. The default is the minWidth for the given layer, with no maximum length unless specified in the technology file.

-fill_lpp_spacing {{s_layerlpp f_userunit}}

  

Specifies the minimum spacing between fill shapes and shapes on the given layers, layer purpose pairs, or purposes. The format of the argument values is:

{s_layerlpp1 f_spacing1 s_layerlpp2 f_spacing2…}

-fill_minarea f_userunit

Specifies the minimum area for a fill shape. The default value is 0, unless specifies in the technology file (minArea).

-fill_pg_spacing f_userunit

Specifies the minimum spacing between a fill shape and a power or ground route. The default value is the fill-signal spacing value.

-fill_shape {square | rectangle | both}

Restricts the type of fill shapes created.

both

(Default) Fill shape can be square or rectangular.

rectangle

Only fill having unequal width and length (non-square) will be created.

square

Only fill with equal width and length will be created.

-fill_signal_spacing f_userunit

Specifies the spacing between a fill shape and a signal route. The default is taken from the technology file (minFillPatternSpacing or minSpacing, in that order).

-fill_step_size f_userunit

Specifies the increment to use between the minimum and maximum values for width and length when building fill shapes. Defaults to 1.

-fill_style {dense | distributed | regular | greedy}

  

Controls how fill shapes are placed in a given window.

dense

Places fill as tightly as possible in each check window. Results will tend to have clusters of fill shapes at regular intervals. This typically runs the fastest of all fill styles.

distributed

(Default) Places fill more randomly throughout each check window.

greedy

Places fill as tightly as possible in each check window. Results will tend to have clustering in the lower-left corner of each check window.

regular

Places fill more uniformly throughout each check window.

-fill_type {floating | OPC}

Specifies the purpose that new fill is added to as fill (floating) or opcFill (OPC). Default is floating.

-fill_via_spacing f_userunit

  

Specifies the minimum spacing between a fill shape and a via shape on the via:detail or via:redundant purpose. The default is the fill-signal spacing value.

-fill_width {f_min f_max}

Specifies the minimum and maximum fill width. The defaults are the minWidth taken from the technology file, with no maximum width unless given in the technology file. Candidate fill shapes will be attempted starting with the width/length that results in the largest area, down to the smallest, subject to minimum area restrictions.

-fill_wire_spacing f_userunit

  

Specifies the minimum spacing between a fill shape and a wire on the wire:detail or wire:redundant purpose. The default is the fill-signal spacing value.

-ignore_illegal_lpp [ true | false ]

When true, any non-existent layers or layer purpose pairs that appear in the command line, other than values for the -lpp argument, are treated as non-fatal errors and an error message is output.

Default: (false) Non-existent layers and/or layer purpose pairs that appear in the command line cause the command to fail and exit.

-lpp {s_layerlpp…}

Specifies the layers and/or layer purpose pairs to process. By default, all routing layers are processed.

-max_density f_percent

Specifies the maximum density allowed. Defaults to the maxDensity constraint value, if defined, or 100%. This establishes a hard limit for the amount of fill added. Normally, an extra fill shape is added to each check window area to force the density to meet or exceed the target density. If the target density is equal to the maximum density, the extra shape is not added and maximum density will not be exceeded.

-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.

-max_effort {true|false ]

When true, any windows, in which the minimum density (or target density, if minimum density is not given) cannot be achieved, are processed a second time with the highest effort level possible (every grid location is checked). Defaults to false.

-min_density f_percent

Specifies the minimum density allowed. Defaults to the minDensity constraint value, if defined, or the target density. This establishes a lower limit for the amount of fill added. If the target density cannot be met in a window, and minimum density was not met, a second attempt will be made to meet the minimum if the -max_effort argument is specified.

-region {f_xlo f_ylo f_xhi f_yhi}

Specifies the boundary of the area to process, given the lower left and upper right coordinates.

-silent

Outputs only essential messages.

-staggered [ true | false ]

  

When true, a staggered fill pattern is used, where each successive row or column is offset from the previous.

Default: (false) Fill shapes are added in a more uniform pattern.

-step_size {f_userunit [f_userunit]}

  

Specifies the window step as a single value for X and Y, or as two values ({X Y}). If the value given is larger than the current design, then the window step will automatically be reduced to the bounds of the region/design.

Default: One-half of the window size (-window_size) is used.

-target_density f_percent

Specifies the desired density. Fill shapes will be added to reach a density equal to or greater than the target density, or the maximum density possible if the target density cannot be met. The default is the minimum density from the technology file.

Valid values are 1.0 through 100.0

-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 (enable_multithreading), the session threads are used, otherwise, one processor is used.

-use_grid {mfg | route}

Specifies the grid to use for shape placement from the following choices:

mfg

Selects the manufacturing grid. This is the default.

route

Selects the routing grid.

-verbose

Outputs additional information while processing.

-window_size {f_userunit [f_userunit]}

Specifies the window size as a single value for X and Y, representing a square window, or as two values ({X Y}). If the value given is larger than the current region or design, then the window will automatically be reduced to the bounds of the region/design.

Default: The window size given by the minDensity or maxDensity constraint is used.

Examples

The following example checks the metal density for the metal1 layer using a window size of 100 um, a step size of 50 um, and attempts to add fill shapes in window areas with a metal density less than 50%. Only fill shapes with dimension 4x4 are created.

create_fill -lpp metal1 -fill_width {4 4} -fill_length {4 4} -target_density 50 -window_size 100

The following example adds fill shapes of dimensions 1x2, 3x4 and 0.5x1.5.

create_fill -lpp metal1 -fill_dimensions {1 2 3 4 0.5 1.5} -target_density 50 -window_size 100

The following example adds fill shapes of dimensions 1x1, 1.5x1, 2x1. 1x1.5, 1.5x1.5, and 2x1.5.

create_fill -lpp metal1 -fill_width {1 2} -fill_length {1 1.5} -fill_step_size 0.5 -target_density 50 -window_size 100
Normal (default) Fill Pattern versus Staggered (-staggered)

Related Topics

Optimize Commands

check_density

create_net_fill

delete_fill


Return to top
 ⠀
X