report_balanced_length
report_balanced_length -set1d_setObj-set2d_setObj-files_fileName-spine_on_layers {s_layerName…} [ -ignore_pins_in_instances {s_instanceName…} | -ignore_pins_in_setd_setObj] [ -half_shield [ true | false ] ] [ -multiple_spines [ true | false ] ] [ -pin_pair_distf_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
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
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
Return to top