Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

NoC SAT Routing #2564

Merged
merged 42 commits into from
Jun 10, 2024
Merged

NoC SAT Routing #2564

merged 42 commits into from
Jun 10, 2024

Conversation

soheilshahrouz
Copy link
Contributor

This PR formulated NoC routing as a SAT problem and invoked cp-sat solver in or-tools to find a deadlock-free solution with the minimum congestion.

Description

Turn model routing algorithms used during annealing generate minimal routes between NoC routers. Congestion may not be resolved with minimal routing. If any NoC link is still congested at the end of the annealing process, we use a SAT solver to find traffic flow routes that minimize congestion while trying to meet latency constraints and prevent the aggregate bandwidth from growing too much.

Types of changes

  • Bug fix (change which fixes an issue)
  • New feature (change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to change)

Checklist:

  • My change requires a change to the documentation
  • I have updated the documentation accordingly
  • I have added tests to cover my changes
  • All new and existing tests passed

This means that constraints are probably set correctly.
@github-actions github-actions bot added VPR VPR FPGA Placement & Routing Tool lang-cpp C/C++ code labels May 27, 2024
@vaughnbetz
Copy link
Contributor

@soheilshahrouz : it's worth writing up how you handle the dependence on google OR tools in this PR.

  • This feature is off by default
  • If enabled with a Cmake variable, it searches for an installed set of OR tools. If not found, it prompts the user.
    That seems pretty safe to me.

Copy link
Contributor

@vaughnbetz vaughnbetz left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do we have a test of the SAT NoC router? Should add a test that builds it and runs it on some configuration.

libs/EXTERNAL/CMakeLists.txt Outdated Show resolved Hide resolved
vpr/src/base/SetupVPR.cpp Outdated Show resolved Hide resolved
vpr/src/base/vpr_types.h Outdated Show resolved Hide resolved
vpr/src/noc/noc_storage.h Show resolved Hide resolved
vpr/src/noc/north_last_routing.cpp Show resolved Hide resolved
vpr/src/noc/xy_routing.cpp Show resolved Hide resolved
vpr/src/place/initial_noc_placement.cpp Outdated Show resolved Hide resolved
vpr/src/place/noc_place_utils.cpp Outdated Show resolved Hide resolved
vpr/src/place/noc_place_utils.h Show resolved Hide resolved
vpr/src/place/place.cpp Show resolved Hide resolved
@vaughnbetz vaughnbetz merged commit 744ef2d into master Jun 10, 2024
102 checks passed
@vaughnbetz vaughnbetz deleted the add_or_tools branch June 10, 2024 22:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
build Build system external_libs lang-cpp C/C++ code lang-make CMake/Make code libvtrutil VPR VPR FPGA Placement & Routing Tool
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants