OpenROAD icon indicating copy to clipboard operation
OpenROAD copied to clipboard

ispd24: detailed route takes 2.5x longer for default groute compared to using 0.5 set_gloabl_route_layer_adjustment

Open stefanottili opened this issue 9 months ago • 3 comments

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

stefanottili avatar May 07 '24 19:05 stefanottili