Skip to content

Mark fixed blocks #1759

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

Merged
merged 27 commits into from
Jun 22, 2021
Merged

Mark fixed blocks #1759

merged 27 commits into from
Jun 22, 2021

Conversation

sfkhalid
Copy link
Contributor

@sfkhalid sfkhalid commented Jun 2, 2021

Description

Before starting initial placement, the added code loops through the cluster blocks netlist to see whether any of the blocks have floorplan constraints that lock them to one grid location. For the blocks that are thus locked, the .is_fixed flag is set, and their locations are marked, meaning that the blocks will be skipped during initial placement, and they will not be moved during simulated annealing.

Related Issue

This pull request is related to adding floorplanning placement constraints to VPR, as described in this issue #932

sfkhalid added 3 commits June 2, 2021 12:14
…n the grid as fixed and changed definition of Region::empty() to show false for a region that contains one grid location
…possible dimensions, or it is uninitialized. This change was needed because previously, the default uninitialized values would be seen as impossible dimensions (and therefore empty) and now they are not because of the recent change to the empty routine
@github-actions github-actions bot added the VPR VPR FPGA Placement & Routing Tool label Jun 2, 2021
@sfkhalid
Copy link
Contributor Author

QoR results on this branch:
mark_fixed_qor_comparison.xlsx

@sfkhalid
Copy link
Contributor Author

@vaughnbetz Does this look good to merge?
I moved the initialization of grid_blocks so that the load placement flow and load constraints file can both use the utility function I created, set_block_location. I also refactored the region tile area function to return an int instead of a bool.

@sfkhalid
Copy link
Contributor Author

I'm currently waiting for the QoR results to finish running, once that happens I will post the QoR results for the updated code

@sfkhalid
Copy link
Contributor Author

New QoR comparison:
mark_fixed_qor_comparison.xlsx

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.

Some changes requested.

@sfkhalid
Copy link
Contributor Author

@vaughnbetz Does this look ok to merge once the CI goes green?
I made the changes requested on Friday, like simplifying the if statements in is_pr_size_one, adding the checks for subtile compatibility in region_tile_cover and performing the initialization of placement contexts with a helper routine during the load placement flow.

@vaughnbetz
Copy link
Contributor

The changes look good; will merge when CI goes green.

One final feedback: using loop counters that indicate what you are looping over is a bit better than just using i. E.g. in the code looping over regions, you could use one of ireg/iregion/irect instead of i, and it would make the loop a bit easier to understand.

@sfkhalid
Copy link
Contributor Author

@vaughnbetz The CI has passed, is this PR good to be merged now?

@sfkhalid sfkhalid merged commit 99f2b7a into master Jun 22, 2021
@sfkhalid sfkhalid deleted the mark_fixed_blocks branch June 22, 2021 16:25
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
VPR VPR FPGA Placement & Routing Tool
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants