Skip to content

Commit

Permalink
[RWRoute] Preserve nodes of Laguna sinks
Browse files Browse the repository at this point in the history
Signed-off-by: Eddie Hung <[email protected]>
  • Loading branch information
eddieh-xlnx committed Nov 15, 2024
1 parent d0fabd8 commit 273cfa9
Showing 1 changed file with 11 additions and 0 deletions.
11 changes: 11 additions & 0 deletions src/com/xilinx/rapidwright/rwroute/RWRoute.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,7 @@
import com.xilinx.rapidwright.util.Pair;
import com.xilinx.rapidwright.util.RuntimeTracker;
import com.xilinx.rapidwright.util.RuntimeTrackerTree;
import com.xilinx.rapidwright.util.Utils;

import java.util.ArrayList;
import java.util.Arrays;
Expand Down Expand Up @@ -660,6 +661,16 @@ protected NetWrapper createNetWrapperAndConnections(Net net) {
sinkRnode.setType(sinkType);
connection.setSinkRnode(sinkRnode);

if (sinkINTNode.getTile() != sink.getTile()) {
TileTypeEnum sinkTileType = sink.getTile().getTileTypeEnum();
if (Utils.isLaguna(sinkTileType)) {
// Sinks in Laguna tiles must be Laguna registers (but will be projected into the INT tile)
// however, it's possible for another net to use the sink node as a bounce -- prevent that here
assert(sinkINTNode.getTile().getTileTypeEnum() == TileTypeEnum.INT);
routingGraph.preserve(sink.getConnectedNode(), net);
}
}

// Where appropriate, allow all 6 LUT pins to be swapped to begin with
char lutLetter = sink.getName().charAt(0);
int numberOfSwappablePins = (lutPinSwapping && sink.isLUTInputPin())
Expand Down

0 comments on commit 273cfa9

Please sign in to comment.