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

report_balanced_length

report_balanced_length
-set1 d_setObj 
-set2 d_setObj 
-file s_fileName 
-spine_on_layers {s_layerName…} 
[ -ignore_pins_in_instances {s_instanceName…} 
| -ignore_pins_in_set d_setObj ] 
[ -half_shield [ true | false ] ] 
[ -multiple_spines [ true | false ] ] 
[ -pin_pair_dist f_distance ] 
[ -spine_length [ true | false ] ] 

Description

Outputs an ordered list of net names to the named file. The list is created by calculating the balanced spine length for each net from set1 and its paired net from set2, and listing the pairs in order, starting with the longest spine length, to the shortest. Use the output to prioritize the routing of the nets for balance_route, which uses the same arguments to configure the spine.

Arguments

-file s_fileName

Outputs an ordered list of balanced nets to the named file.

-half_shield [ true | false ]

  

When true, half-shields each net of a given clock pair with an existing power rail. When false, only one net of each clock pair is half-shielded.

Default: true

-ignore_pins_in_instances {s_instanceName}

  

Ignores pins for the specified instances when placing the spine. The ignored pins will be connected but will not influence the position of the spine.

-ignore_pins_in_set d_setObj

  

Ignores pins for the instances in the set when placing the spine. The ignored pins will be connected but will not influence the position of the spine.

-multiple_spines [ true | false ] ]

  

When true, creates multiple spines close to pin pairs. When false, taps connect pins to a single spine.
Default: false

-pin_pair_dist f_distance

  

Pairs pins of the nets for balance routing when pins are within the specified distance (in microns) of each other. Pins that are not paired will not be considered when generating the spine, but will be routed. If no pairs are found that meet the distance criteria, no routing will be done.

Default: 0.5

-set1 s_netName

Calculates the balanced spine length for each net in this set and its pair from the -set2 set.

-set2 s_netName

Calculates the balanced spine length for each net in this set and its pair from the -set1 set.

-spine_length [ true | false ]

Determines whether the spine length measurement is included in the output.

Default: false

-spine_on_layers {s_layername}

  

Creates spines on the specified layers.

Examples

The following example includes a procedure for ordering net pairs in a file for balanced routing by their calculated spine length (clockSort), and a procedure to balance route the net pairs in decreasing spine length order (clockRoute).

# clockSort
# Input: infile is a file containing two net names per row
# Output: outfile is a file containing the sorted net pair names by decreasing
#   spine length; includes calculated spine length for each pair.
proc clockSort {infile outfile} {
  set clkset1 [create_set]
set clkset2 [create_set]
  set fileID [open $infile r]
while {[gets $fileID line ] >= 0} {
set clk1 [lindex [split $line \t] 0]
set clk2 [lindex [split $line \t] 1]
set clkset1 [or_sets -set1 [find_net -name $clk1 -ignore_case true \
-no_wildcard true -silent] -set2 $clkset1]
set clkset2 [or_sets -set1 [find_net -name $clk2 -ignore_case true \
-no_wildcard true -silent] -set2 $clkset2]
}
report_balanced_length -set1 $clkset1 -set2 $clkset2 -file $outfile \
-spine_length true
close $fileID
}
# clockRoute
# Input: infile is the name of a file containing two net names per row
#   The nets are balance routed, one pair at a time.
proc clockRoute {infile} {
  set fileID [open $infile r]
while {[gets $fileID line ] >= 0} {
set clk1 [lindex [split $line \t] 0]
set clk2 [lindex [split $line \t] 1]
set tmppair [or_sets -set1 [find_net -name $clk1 -ignore_case true \
-no_wildcard true ] -set2 [find_net -name $clk2 -ignore_case true \
-no_wildcard true ] ]
balance_route -set $tmppair
}
close $fileID
}

The following commands sort a list of net pairs in nets_in.txt by decreasing spine length, then balance routes the pairs, one-at-a-time.

clockSort nets_in.txt nets_sorted.txt
clockRoute nets_sorted.txt

Example input file:

eclk1 lclk1
eclk2 lclk2
eclk3 lclk3

Example output file (includes the optional calculated spine length for each net pair):

eclk2 lclk2 10.2
eclk1 lclk1 8.1
eclk3 lclk3 6.4

Related Topics

Specialty Route Commands

balance_route


Return to top
 ⠀
X