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

route_optimize

route_optimize
[ -all | -net s_netName | -set d_setObj | -nets {s_netName…} ] 
[ -exclude_set d_setObj | -exclude_net {s_netName…} ] 
[ -area { f_xlo f_ylo f_xhi f_yhi } ] 
[ -z_pattern_factor <positive integer> ] 
[ -vu_pattern_factor <positive integer> ] 
[ -max_iterations i_count ] 
[ -max_passes i_passes ] 
[ -prune [ true | false ] ] 
[ -process_rules_only [ true | false ] ] 
[ -allow_jump [ true | false ] ] 
[ -pin_optimize [ true | false ] ] 
[ -insert_offset_vias [ true | false ] ] 
[ -uniform_taper_to_first_via {none | useMinRule | useMaxRule | useViaDef | useSingle} ] 
[ -maximize_cuts {none | useMinRule | useMaxRule | useViaDef | useSingle} ] 
[ -make_only_net_spec_vias [ true | false ] ] 
[ -allow_width_expand_for_maxcuts [ true | false ] ] 
[ -via_orient [ true | false ] ] 
[ -pin_connect_optimization {default | truncate | cover | cover_io_only} ] 
[ -via_extent_optimization {default | truncate | cover} ] 
[ -reduce_wrongway [ true | false ] ] 
[ -allow_wrongway [ true | false ] ] 
[ -wrongway_tolerance i_tracks] 
[ -poly_contacts [ true | false ] ]
[ -stdout_report [ true | false ] ] 
[ -exclude_pattern {[all][U][Z][L][V]} ] 
[ -layer { s_layerName… } ] 
[ -minus {[diffnet] [samenet] [width] [area] [enclarea] [portshorts] [crossing] [edge ] [grid] [mfggrid] [partial] [numcuts] [centerline ] [inter] [ext] [all]} ] 
[ -ignore_net_types {[pair][match][symmetry][shieldParallel][shieldTandem][shieldCoaxial][all]} ] 
[ -paired_nets [ true | false ] ] 
[ -symmetry_nets [ true | false ] ] 
[ -parallel_shielded_nets [ true | false ] ] 
[ -tandem_shielded_nets [ true | false ] ] 
[ -coaxial_shielded_nets [ true | false ] ] 
[ -z_shift [ true | false ] ] 
[ -use_taper_for_inline_maxcuts [ true | false ] ] 

Description

Attempts to improve existing routing using various techniques. By default, all nets in the design are processed, except matched length nets. You can optionally limit processing to named nets, nets and/or routes in an area or set, nets of specific types, and certain layers.

The routing is scanned for various types of patterns: U, Z, L, V, H. When a pattern is found, routing is optimized to reduce the number of jogs and layer changes, as shown in the following figures:

You can optionally exclude any of these patterns and specify pattern threshold arguments.

U Pattern Optimization

Z Pattern Optimization

V Pattern Optimization

L Pattern Optimization

Other options let you specify optimization for the following:

Arguments

-all  

Operates on the entire top cellview. This is the default.

-allow_jump [ true | false ]

When true, allows optimization of scenic routes using routing on a layer above or below to avoid obstructions, such as vias and pathSegments on other nets.

Default: Re-routing on other layers is not used.

-allow_width_expand_for_maxcuts [ true | false ]

When true, permits the wires to be widened in the overlap area between connecting wires to enable the use of maximized cuts.

Default: The overlap area is limited to the width of the wires.

-allow_wrongway [ true | false ]

When true, allows the use of wrong-way routing to optimize more costly routing.

Default: Wrong-way routing is not used for optimizing.

-area { f_xlo f_ylo f_xhi f_yhi}

Operates on the specified region, given the lower-left and upper-right coordinates. By default, operates on the entire top cellview.

-coaxial_shielded_nets [ true  | false ]

When set to false, coaxial shielded nets are not processed.

Default: Permits optimization of coaxial shielded nets.

-exclude_net {s_netName…}

Excludes nets in the list from processing.

-exclude_pattern {[all][U][Z][L][V]}

Specifies the patterns to be excluded during optimization. By default, all patterns are optimized.

-exclude_set d_setObj

Excludes nets in the set from processing.

-ignore_net_types {[pair] [match] [symmetry] [shieldParallel] [shieldTandem] [shieldCoaxial] [all]}

Excludes processing nets of the given types. By default, all nets except matched nets are processed.

-insert_offset_vias [ true | false ]

When true, offset vias are used.

Default: Centered vias are used during optimization.

-layer { s_layerName… }

Operates only on the specified layers. By default, all layers are processed.

-make_only_net_spec_vias [ true | false ]

When true, only oaStdViaDefs and cdsViaDefs in the validRoutingVias for the net can be used when creating vias for via maximization. By default, all defined oaStdViaDefs and cdsViaDefs can be used.

-matched_nets [ true | false ]

When true, matched length nets are optimized. Matched length nets use specific techniques for length matching which can be removed by route optimization.

Default: Matched length nets are not processed.

-max_iterations i_count

By default, the command runs up to three (3) iterations of up to twenty (20) passes each.

-max_passes i_passes

By default, the command runs up to twenty (20) passes for each iteration. The first pass for an iteration processes all required nets, then up to nineteen (19) additional passes are run on the impacted nets of the previous pass. Impacted nets are those surrounding optimized nets.

-maximize_cuts {none | useMinRule | useMaxRule | useViaDef | useSingle}

When connecting to wide wires, will attempt to maximize the number of cuts or the size of a single cut after routing, according to the specified setting:

none

(Default) There is no effort to maximize cuts.

useMaxRule

Uses the maximum number of via parameters from the applicable oaStdViaDef and existing via rules to maximize the number of cuts.

useMinRule

Uses constraint values for the cut layer and if not found, allows these constraints to be derived from the default oaStdViaDef. This is the default when -maximize_cuts is given with no setting.

useSingle

Uses constraint values for the upper metal to maximize the via using a large cut via.

useViaDef

Uses via parameters from the applicable oaStdViaDef instead of using constraint values for the cut layer. No vias will be created that violate existing via rules.

-minus {[diffnet] [samenet] [width] [area] [enclarea] [portshorts] [crossing] [edge ] [grid] [mfggrid] [partial] [numcuts] [centerline ] [inter] [ext] [all]}

Excludes the specified checks during processing. By default, all checks are performed.

-net s_netName  

Operates only on the specified net.

-nets {s_netName…}  

Operates only on the specified nets.

-paired_nets [ true | false ]

When set to false, paired nets are not processed.

Default: Permits optimization of paired nets.

-parallel_shielded_nets [ true | false ]

When set to false, parallel shielded nets are not processed.

Default: Permits optimization of parallel shielded nets.

-pin_connect_optimization {default | truncate | cover | cover_io_only}

Specifies the wire extent for path segments over pins.

default

(Default) The path segment extent will cover one-half (1/2) the pin width.

cover

The path segment extent will cover the pin.

truncate

There will be no extent for the path segment over the pin.

cover_io_only

The path segment completely overlaps only the IO pins along the direction of the wire.

-pin_optimize [ true | false ]

Optimizes routes to pins; removes unnecessary jogs.

-poly_contacts [ true | false ]

When true, aligns and maximizes cuts with the long axis of poly and contactless metal.

Default: false

-process_rules_only [ true | false ]

  

When true, only process rules are applied. By default and when set to false, process rules and nondefault rules will be considered.

-prune [ true | false ]

When set to true, removes path segments with null endpoints. These are types of dangles.

Default: false

-reduce_wrongway [ true | false ]

When set to true, will attempt to re-route wires to reduce wrong-way routes.

Default: false

-set d_setObj  

Processes only nets and/or routes in the set.

-symmetry_nets [ true | false ]

When set to false, symmetry nets are not processed.

Default: Permits optimization of symmetry nets.

-tandem_shielded_nets [ true | false ]

When set to false, tandem shielded nets are not processed.

Default: Permits optimization of tandem shielded nets.

-uniform_taper_to_first_via {none | useMinRule | useMaxRule | useViaDef | useSingle}

If this argument is given with no setting or a setting other than none, tapering will apply from the pin to the first via, and cuts will be maximized after routing, where possible, according to the specified setting):

none

(Default) There is no change to tapers.

useMaxRule

Uses the maximum number of via parameters from the applicable oaStdViaDef and existing via rules to maximize the number of cuts.

useMinRule

Uses constraint values for the cut layer and if not found, allows these constraints to be derived from the default oaStdViaDef. This is the default when the argument is given with no value setting.

useSingle

Uses constraint values for the upper metal to maximize the via using a large cut via.

useViaDef

Uses via parameters from the applicable oaStdViaDef instead of using constraint values for the cut layer. No vias will be created that violate existing via rules.

-use_taper_for_inline_maxcuts [ true | false ]

When set to true, maximizes cuts based on the width of the taper route spec when a taper wire connects to a via or via stack and the next wire is oriented in the same direction as the taper wire. When set to false, cuts are maximized based on the width of the route or net route spec.

Default: false

-via_extent_optimization {default | truncate | cover}

Specifies the coverage of path segment extents over vias.

default

(Default) If -max_iterations is greater than 0, then the path segment extent will be made large enough to cover the via; otherwise, no change is made to path segment extents over vias.

cover

The extent for the path segment is made large enough to cover the via .

truncate

If the wire extent is greater than or equal to one-half the wire width, then the extent is trimmed to one-half the wire width. If the wire extent is greater than 0 but less than one-half the wire width, then it is changed to a wire extent of 0.

-via_orient [ true | false ]

When true, allows via orientation to change so that vias are in line with the wires, overlapping the wire as much as possible, and reducing corners, making the routing as efficient as possible.

Default: Orientation of vias is not changed.

-vu_pattern_factor i_vuFactor

Specifies the factor that determines when vertical U pattern optimization should be attempted according to the formula (W * vu_pattern_factor < D), where W is the width of the wire to be removed and D is the length of the wire.

Default: 1000

-wrongway_tolerance i_tracks

When wrong-way routing is allowed for optimization, wrong-way routing is limited to this number of tracks.

Default: 2

-z_pattern_factor i_zFactor

Specifies the factor that determines when Z pattern optimization should be attempted according to the formula (W * z_pattern_factor >= D) where W is the width of the wire to be removed and D is the length of the wire.

Default: 1000

-z_shift [ true | false ]

When true, allows Z patterns to be moved to free space to allow movement of other wires when the pattern cannot be removed by optimization.

Default: If the Z pattern optimization is not successful for a Z pattern, the pattern is not moved.

Examples

The following example optimizes routing using larger single cuts and no wrong-way routing, without changing the topology.

route_optimize -maximize_cuts useSingle -exclude_pattern all

Pin Connection Optimization

-pin_connection_optimization cover

-pin_connection_optimization truncate

-pin_optimize true

Taper Optimization

-uniform_taper_to_first_via

-poly_contacts true

Via Extent Optimization

-via_extent_optimization truncate

-via_extent_optimization cover

Via Optimization

-insert_offset_vias true

-maximize_cuts {useMinRule | useMaxRule | useViaDef}

-maximize_cuts useSingle

-allow_width_expand_for_max_cuts true

-via_orient true

-use_taper_for_inline_maxcuts

Pattern Threshold

-z_pattern_factor

-vu_pattern_factor

-max_iterations

Miscellaneous

-reduce_wrongway

Related Topics

Route Commands

fix_errors

optimize_routes


Return to top
 ⠀
X