Replies: 8 comments 13 replies
-
How many threads in your experiment? |
Beta Was this translation helpful? Give feedback.
-
@rovinski I would not have guessed that the area of the design is what really drives up the time of detailed routing. |
Beta Was this translation helpful? Give feedback.
-
The area of the design will definitely matter. You will have tracks at the same pitch and have to traverse more of them during routing a larger area. |
Beta Was this translation helpful? Give feedback.
-
Rather than plot "detailed route times plotted against threads" it is usually easier to look at speedup (t(1)/t(N)) vs threads. It makes it clearer how close to ideal scaling you are getting (the 45 degree line is perfect). |
Beta Was this translation helpful? Give feedback.
-
@maliberty @rovinski I fixed the image for the 1000x1000um when I took a snapshot. I accidentally used the small macro, the spacing between the macros should be very short, nearly abutment. |
Beta Was this translation helpful? Give feedback.
-
It looks like the expected behavior is that the 0th and the 1st iteration will take a long time for top level designs with lots of wires and little contention, even if these routes are horizontal and vertical and that the low hanging fruit has already been picked. |
Beta Was this translation helpful? Give feedback.
-
wow this looks very impressive, bravo! |
Beta Was this translation helpful? Give feedback.
-
I learned a lot of interesting things |
Beta Was this translation helpful? Give feedback.
-
mock-array-big has 3 essential parameters that can be adjusted: array area(number of elements), element size (area) and data width (bits).
I thought it would be interesting to see how detailed routing (TritonRoute) varies across these parameters, so I made a python snippet(https://github.com/Pinata-Consulting/OpenROAD-flow-scripts/commits/plot-running-times) to gather some data and plot them
The graph below is interactive(measured on a machine with 16 threads and 64gByte of RAM, where memory consumption appears to peak at 20gByte), which helps in terms of understanding the 4 dimensions being represented:
Video: https://drive.google.com/file/d/1pmkIZh6tUOrWhAkVRgm0fxCD7yaf766Q/view
Snapshot:
8 x 8 64 bit array detailed route times plotted against threads
Conclusion so far
Detailed routing is surprisingly slow when the area is large, but everything else is the same.
This run takes 40 minutes or so,
APTOS_MOCK_PITCH_SCALE=20 make FLOW_VARIANT=scale-20 route DESIGN_CONFIG=designs/asap7/mock-array-big/config.mk
whereasAPTOS_MOCK_PITCH_SCALE=2 make FLOW_VARIANT=scale-2 DESIGN_CONFIG=designs/asap7/mock-array-big/config.mk
completes in a few minutesDetailed of testing...
It looks like the performance of detailed routing is sensitive to area:
Same run, but bigger area
2_4_floorplan_macro.odb:
It's interesting thing that the 1st run with 1200 violations takes 20 minutes, the 2nd run with 700 violations takes 12 seconds:
Beta Was this translation helpful? Give feedback.
All reactions