[WIP][AP][PartialLegalizer] Made Partial Legalizer Criticality-Aware - #3631
[WIP][AP][PartialLegalizer] Made Partial Legalizer Criticality-Aware#3631AlexandreSinger wants to merge 19 commits into
Conversation
Since long chains usually mean that multiple molecules must be placed right next to each other, it makes sense to treat them as one AP Block. This may have issues with how the capacity is calculated since molecules that form a chain will exist across multiple tiles. There may also be an issue with pin locations since these molecules will be positioned right on top of one another.
|
I am collecting some results now on Titan, but local results showed a strong improvement in CPD. |
|
Results on
With this change, the CPD improved by 4% and the routed WL improved by 1%. The place time increased by 15%, which is not completely clear why. I am thinking about updating our QoR compare script to always show the post-GP, post-FL, and post-DP WL/CPD; but that may become a bit messy. I like this script being a short summary. We can discuss. Some more data on the per-circuit CPD for those interested: Raw data: @amin1377 FYI |
|
This was clearly a good idea, but since AP is so early in the flow, it is causing many golden results to change. Not a problem, but a bit annoying to update. There are some more updates that I am considering which I think I will add to this PR as well:
I may want to try both of these in this PR to limit the changes to Master. |
|
@vaughnbetz FYI. |
|
That all makes sense to me. Adding the additional parse metrics to the QoR script is fine with me. |
|
Just noting down my next steps so I do not forget. I want to sweep how much the partial legalizer should focus on criticality since this is not obvious if it should be 50% or not. To do that I need to update the task parsing script to include the AP parameters I care about. |
…to feature-ap-pl-criticality

After looking at the drawing for AP, I noticed that the critical path produced during full legalization was way wider than expected. This implied that the partial legalizer was not handling critical paths correctly. After some thought, I realized that the solver was probably not provided enough pull to keep the critical path together. The best way to fix that is to inform the partial legalizer of the criticality of blocks when partitioning so that critical blocks (the blocks with critical pins) get priority when deciding which partition to move to.