The-OpenROAD-Project / OpenROAD

OpenROAD's unified application implementing an RTL-to-GDS Flow. Documentation at https://openroad.readthedocs.io/en/latest/
https://theopenroadproject.org/
BSD 3-Clause "New" or "Revised" License
1.59k stars 551 forks source link

GRT: refactor maze and maze3D #5713

Open eder-matheus opened 1 month ago

eder-matheus commented 1 month ago

Description

In FastRouteCore, the two main files (maze.cpp and maze3D.cpp) that deal with the routing congestion are very long and could have a better readability. There are a few functions that needs special attention: mazeRouteMSMDOrder3D, updateCongestionHistory, mazeRouteMSMD, updateRouteType13D, updateRouteType23D.

The goals of the refactoring are:

Suggested Solution

No response

Additional Context

No response

maliberty commented 1 month ago

Because of the C heritage of FR the grid is quite dumb and all the logic is in the router code. It would be nice to have the grid support more high level operations which should also simplify the router somewhat. For example adding/removing an edge that spans multiple gcells could be a single grid API call rather than a for-loop in the router code.