OpenROAD
OpenROAD copied to clipboard
ispd24: detailed route takes 2.5x longer for default groute compared to using 0.5 set_gloabl_route_layer_adjustment
Description
Testcase is ispd24 bsg_chip, Nangate45 tech.
The global router defaults are way too optimistic with regard to available routing resources.
This leads to 2.5x slower detailed route times compared to a run with only 0.5 the resources.
Default groute takes 23min whereas a run limiting the groute resources to 0.5 takes 9min. It's a testimony to the quality of the detailed router to finish both runs without violations, but one run needs 10 iterations, the other just 4.
This is even worse when allowing metal1 to be global routed.
The resource limited run creates slightly longer wires, but uses lot less via.
Layer Resource Demand Usage (%) Max H / Max V / Total Overflow
---------------------------------------------------------------------------------------
metal1 0 0 0.00% 0 / 0 / 0
metal2 10833831 3700181 34.15% 0 / 0 / 0
metal3 14685943 3917150 26.67% 0 / 0 / 0
metal4 6880596 1034829 15.04% 0 / 0 / 0
metal5 13397121 1273167 9.50% 0 / 0 / 0
metal6 13401270 687065 5.13% 0 / 0 / 0
metal7 3826761 11571 0.30% 0 / 0 / 0
metal8 3828144 16832 0.44% 0 / 0 / 0
---------------------------------------------------------------------------------------
Total 66853666 10640795 15.92% 0 / 0 / 0
[INFO GRT-0018] Total wirelength: 27648629 um
..
[INFO DRT-0195] Start 10th optimization iteration.
...
Total wire length = 22891860 um.
Total wire length on LAYER metal1 = 39815 um.
Total wire length on LAYER metal2 = 7483953 um.
Total wire length on LAYER metal3 = 8563329 um.
Total wire length on LAYER metal4 = 2612693 um.
Total wire length on LAYER metal5 = 2684721 um.
Total wire length on LAYER metal6 = 1447989 um.
Total wire length on LAYER metal7 = 24268 um.
Total wire length on LAYER metal8 = 35087 um.
Total wire length on LAYER metal9 = 0 um.
Total wire length on LAYER metal10 = 0 um.
Total number of vias = 6205474.
Up-via summary (total 6205474)
...
[INFO DRT-0267] cpu time = 10:01:01, elapsed time = 00:29:13, memory = 22657.21 (MB), peak = 23734.66 (MB)
Layer Resource Demand Usage (%) Max H / Max V / Total Overflow
---------------------------------------------------------------------------------------
metal1 0 0 0.00% 0 / 0 / 0
metal2 4927504 2409005 48.89% 0 / 0 / 0
metal3 6831065 3127110 45.78% 0 / 0 / 0
metal4 2955866 1202912 40.70% 0 / 0 / 0
metal5 5742216 1862529 32.44% 0 / 0 / 0
metal6 5744982 1645941 28.65% 0 / 0 / 0
metal7 1914072 378639 19.78% 0 / 0 / 0
metal8 1914072 305874 15.98% 0 / 0 / 0
---------------------------------------------------------------------------------------
Total 30029777 10932010 36.40% 0 / 0 / 0
[INFO GRT-0018] Total wirelength: 28584173 um
...
[INFO DRT-0195] Start 4th optimization iteration.
...
[INFO DRT-0198] Complete detail routing.
Total wire length = 23225813 um.
Total wire length on LAYER metal1 = 28521 um.
Total wire length on LAYER metal2 = 5210261 um.
Total wire length on LAYER metal3 = 6734777 um.
Total wire length on LAYER metal4 = 2525702 um.
Total wire length on LAYER metal5 = 3864860 um.
Total wire length on LAYER metal6 = 3436629 um.
Total wire length on LAYER metal7 = 787656 um.
Total wire length on LAYER metal8 = 637401 um.
Total wire length on LAYER metal9 = 0 um.
Total wire length on LAYER metal10 = 0 um.
Total number of vias = 5894660.
Up-via summary (total 5894660)
..
[INFO DRT-0267] cpu time = 03:08:44, elapsed time = 00:09:18, memory = 26350.10 (MB), peak = 27093.80 (MB)
Suggested Solution
It would be good to adjust the default groute routing resource calculation to better correlate with what detailed_route can route.
Additional Context
read_lef lef/Nangate.lef.gz
read_def def/bsg_chip.def.gz
set_routing_layers -signal metal2-metal8 -clock metal6-metal8
set_global_routing_layer_adjustment metal2-metal8 0.5
global_route -verbose
detailed_route -verbose 1
ispd24 download https://drive.google.com/drive/folders/1ocChoQupNxlLBH2hgqkPwR0-7D3ocTwm