-
Notifications
You must be signed in to change notification settings - Fork 415
Placement Refactoring #2396
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
Placement Refactoring #2396
Conversation
Looks promising!
|
…rilog-to-routing into placement_move_primitive
…rilog-to-routing into placement_move_primitive
Please attach Koios and VTR run results. |
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.
Thanks for the big refactoring @amin1377 !
I have a lot of comments though. Here is a summary:
Things to definitely do before merging this PR:
- Doxygen comments: expand, describe parameters, unify comments where we have a function-scope comment both at the declaration and the definition (prefer declaration).
- A few time-critical asserts should become VTR_ASSERT_SAFE or VTR_ASSERT_DEBUG
- Various specific code comments.
Things to consider, but to do in a separate PR with QoR measurements on each:
- We could clean up / organize some of the file scope variables by putting them in structures.
- Could we use the .size() member of a ts_ vector instead of num_nets_affected?
- We can speed up and simplify the bounding box calculation a bit, and make it a little more accurate, by getting rid of the min/max code that keeps all bounding boxes in the [1..width-1] range.
- Where is the z-directed bounding box cost, and the computation of the z-directed channel normalization factors?
- Do we need the num_sinks_per_layer[] data structure or could we get rid of it (it leads to O(layer) computations).
costs->cost = new_bb_cost * costs->bb_cost_norm; | ||
} | ||
|
||
if (noc_opts.noc) { |
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.
All these noc cost checks can be shortened by using vtr::isclose with an absolute tolerance of MIN_EXPECTED_NOC_LATENCY_COST etc. (i.e. set the last argument to that value). So the if statements can be taken out, the check_and_print_cost lambda should take one more parameter (absolute cost threshold) and that parameter should be passed to vtr::isclose().
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.
Can file an issue to @soheilshahrouz if you want him to clean this up.
…rilog-to-routing into placement_move_primitive
…rilog-to-routing into placement_move_primitive
You have a warning that is making the various build types fail (we turn on -Werror): |
Thanks @amin1377 ! Once you have as many suggestions resolved as you want for this PR (others can go to separate issues), you'll need to run full QoR sweeps:
|
Adding @soheilshahrouz to the conversation, as he is interested in trying parallel "population annealing", and to do that he would need non-global objects for the placement state and the placement cost. |
…rilog-to-routing into placement_move_primitive
…rilog-to-routing into placement_move_primitive
This is a work in progress. The full description will be written soon.