-
Notifications
You must be signed in to change notification settings - Fork 121
Add ability to constrain flop harness to specific side of PBlock #1318
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: array_builder
Are you sure you want to change the base?
Add ability to constrain flop harness to specific side of PBlock #1318
Conversation
…k to improve routability. Also unroute top-level I/O nets that exit the pblock. Signed-off-by: Andrew Butt <[email protected]>
Signed-off-by: Andrew Butt <[email protected]>
…explorer-side-map
| } | ||
| Site shiftedSite = shiftSiteToSide(design.getDevice(), start, keepOut, side); | ||
| if (port.isBus()) { | ||
| for (int i : port.getBitBlastedIndicies()) { |
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.
This is a lot of duplicated code. I realize this is partly due to the nature of bussed vs. single bit ports. One way to work around this is to use this pattern:
for (int i : (port.isBus() ? port.getBitBlastedIndicies() : new int[] { 0 })) {
EDIFPortInst portInst = port.getInternalPortInstNameFromIndex(i));A better solution might be to modify EDIFPort.getBitBlastedIndicies() so that for the single bit case it returns a static new int[] { 0 }.
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.
We decided that getBitBlastedIndicies should be updated to return { 0 } when called on a non-bused port. I will refactor further once this change has been made.
Signed-off-by: Andrew Butt <[email protected]>
To ensure routability of ArrayBuilder designs, it is important that there is a routing path from a precompiled module in the direction of the input of the next precompiled module. A side map is provided to PerformanceExplorer which specifies which side of the pblock a given top-level I/O should have its flop placed on. Also unroutes top-level I/O nets that exit the pblock to prevent node overlaps between blocks placed near each other in the array.