Open
Description
Description
Currently mpl2 bundles the pins into clusters which get fixed on the boundaries that they were placed.
With the current mechanism, we can benefit from:
- The connections between the other clusters and bundled IOs;
- The data flow of the nets that have IOs.
However in ORFS, the macro placer sees the IOs' locations that come from random PPL, so, there's a couple of problematic things:
- These locations are random, so there's no guarantee that we're actually having some sort of benefit.
- In many cases, bundled IOs cover all four boundaries and, due to the way they're modeled in sequence pair, SA can have a very hard time finding a good solution.
Suggested Solution: Adapt IOs abstraction inside MPL2 to ORFS flow
Main Idea: Change the IO clusters to, instead of represent bundled IOs placed by random PPL, represent groups of IOs with the same constraints and use the -exclude constraints to help guiding the macro placement.
- First Version (Simplified): Don't take into account the dimensions of the constraints.
- If an IO is constrained to a region of a certain edge, it is constrained to that entire edge (unconstrained IOs are constrained to all edges).
- If an edge has more than 70% of its extension excluded, it is considered a blocked edge for IOs.
- Enhanced Version: Consider the dimensions of constraints whether they are constraint regions or -exclude constraints.
- Additional: The pin access blockages' depth should depend on the IO density of that constraint region.