-
Notifications
You must be signed in to change notification settings - Fork 415
[Place] Expand search range for sparse blocks #2960
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
base: master
Are you sure you want to change the base?
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think the implementation can be made more modular by adding another function to modify the search limit instead of modifying when you're searching for a compatibale location.
Does the described problem happen only when IO blocks are located at the top/bottom rows? What if they are initially placed at left/right sides of the device? |
I'm not entirely sure, but given that the x-axis of the compressed grid is fully dense, I don't think this happens for the x-axis. |
Upon further discussion with @soheilshahrouz, it seems likely that the same issue occurs along the x-axis. So, it would make sense to expand the x-axis range limit if the number of compatible blocks in a given row falls below a certain threshold. Otherwise, there’s a bias toward placing IO blocks on the top and bottom edges rather than on the left and right. I’ll look into this in a separate PR. @tpagarani FYI |
…rilog-to-routing into placement_search_range
@soheilshahrouz: I’ve addressed all your comments and implemented the changes you requested. Since the code has changed significantly since your last review, I’d appreciate it if you could take another look. Thanks! |
You should add QoR data on a couple of big benchmark suites. |
Also summarize the QoR-related regtest failrues (basic has two failing QoR, but it is because the wirelength improved a lot (45%) on two small circuits which is certainly fine! |
Results on 3 seeds show the cpd degradation isn't consistent (the other 2 seeds were fine). I think this is good to merge. Can you also add a link to the 3 seed data here for posterity @amin1377 ? |
It looks like some golden results need to be updated. I looked at the parmys basic failure and it is a single small design that improved too much, so it's not a problem (actually it's good news): |
This reverts commit 4a6e333.
This reverts commit 96e9cc5.
…tions in initial placement to prevent search range to be adjusted" This reverts commit ade994b.
…in column" This reverts commit dae25cc.
…find_compatible_compressed_loc_in_range" This reverts commit f9e8517.
…cessed by initial placement
…rilog-to-routing into placement_search_range
…rilog-to-routing into placement_search_range
…rilog-to-routing into placement_search_range
… on placement constraints
… less that a certain number
I updated the code to expand the search range if the number of blocks in the selected column is less than 3. I ran both the Titan benchmarks and the VTR large set with 5 seeds (note that runtime isn't reliable since I ran it on Wintermute). Overall, the QoR hasn't changed significantly. I compared the results circuit by circuit, and for those where the default seed (seed 1) showed a significant QoR increase, there were other seeds where the QoR improved noticeably. I’ve applied color formatting to the "ratio" tab so you can easily see the results on a per-circuit basis. |
I had to revert the commit that implemented your suggestion about adjusting the search range before calling |
LGTM, thanks! |
There are a few CI failures. I looked at the strong failures and it is 4 small circuits with larger than bounds QoR changes, all of which look harmless. So you can check in new golden results, or widen the ranges for those smaller tests if you prefer. Then it's good to merge. |
Thanks, Vaughn! I'm running the nightly tests to check if there are any results that need updating. I'll merge the PR afterward. |
This PR addresses Issue #2959. The solution to fix the problem is a bit different from the one stated there, though. To ensure moving sparse blocks (e.g., IO blocks), we expand the search range to include the whole column if the number of compatible blocks in the given column is less than a certain threshold (currently, this number is set to 3)
The above update changed the placement of the top picture to the placement of the bottom one (where there is only one IO block left on the top).
