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

Round compressed grid locations #2509

Open
wants to merge 11 commits into
base: master
Choose a base branch
from
Open

Round compressed grid locations #2509

wants to merge 11 commits into from

Conversation

soheilshahrouz
Copy link
Contributor

When translating a grid location to a compressed grid location, we call std::lower_bound() to find the corresponding compressed location. Assume that we want to translate the grid lcoation (66, 67) for a DSP block in a grid with DSP columns at x=50 and x=70. The current grid_loc_to_compressed_loc_approx() would select the column at x=50, while the one at x=70 was closer. This PR changes grid_loc_to_compressed_loc_approx() to choose the closest compressed location instead.

In calculate_centroid_loc(), we cast float variables to int, which is equivalent to taking their floor. This means that the centroid layer is always zero unless all connected pins are on layer 1.

How Has This Been Tested?

I ran experiments on Titan benchmarks. I'll post QoR summary in a comment in this PR. If the results are promising, we can experiment with other benchmarks and architectures.

@github-actions github-actions bot added VPR VPR FPGA Placement & Routing Tool lang-cpp C/C++ code labels Mar 18, 2024
@soheilshahrouz
Copy link
Contributor Author

Titan benchmarks

vtr_flow_elapsed_time pack_time placed_wl total_swap place_time placed_cpd routed_wl heap_pop route_cpd
master 2858.225484 398.634554 2572680.235 18027807.27 1153.033348 16.20830923 3213503.781 153895598.5 17.3042333
PR 2757.462696 393.088044 2528556.546 18024886.98 1122.98716 16.28941875 3161054.637 139388529.9 17.39327478
Ratio 0.9647463824 0.9860862291 0.9828491361 0.9998380121 0.973941614 1.005004194 0.983678518 0.9057343496 1.005145647

Link to QoR spreadsheet

@vaughnbetz
Copy link
Contributor

QoR looks promising ... will need to go through and check the various test failures to make sure they are small circuit QoR changes that are neutral or irrelevant.
I suggest also running Koios for QoR.

@vaughnbetz
Copy link
Contributor

(Your idea): could also run a 3D arch regtest (your call).

@soheilshahrouz
Copy link
Contributor Author

vtr_reg_nightly_test1 and vtr_reg_nightly_test1_odin failures are fixed.

vtr_reg_nightly_test3_odin hits the 7 hours executin time limit, which is a little strange because vtr_reg_nightly_test3 finishes in ~1 hour.

@vaughnbetz
Copy link
Contributor

If this looks like a random failure we could move some test out of vtr_reg_nightly_test3_odin (and put it in another suite, or tweak the designs used).

@soheilshahrouz
Copy link
Contributor Author

I ran nightly3_odin tasks on wintermute. There is no significant execution time difference between this branch and the master branch on wintermute.

@vaughnbetz
Copy link
Contributor

OK, if you resolve the conflicts we can merge. They look like a bunch of golden result conflicts, so hopefully not too hard to resolve.

Maybe the odin II run is at the edge of 6 hours and we need to split it?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lang-cpp C/C++ code VPR VPR FPGA Placement & Routing Tool
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants