Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[RWRoute] Add "--lutPinSwapping" option (#895)
* RWRoute to not create unused PINFEEDs, nor queue them unless in target tile Signed-off-by: Eddie Hung <[email protected]> * Update TestRWRoute.testSLRCrossingNonTimingDriven Signed-off-by: Eddie Hung <[email protected]> * Tidy Signed-off-by: Eddie Hung <[email protected]> * Oops Signed-off-by: Eddie Hung <[email protected]> * Refactor into RWRoute.isAccessiblePinfeedI() Signed-off-by: Eddie Hung <[email protected]> * Connections to always be using its (single) sink rnode Signed-off-by: Eddie Hung <[email protected]> * Cope with devices with no LAGUNA_Is Signed-off-by: Eddie Hung <[email protected]> * Add comment Signed-off-by: Eddie Hung <[email protected]> * RWRoute.shouldRoute() to not check first (sink) node for congestion Signed-off-by: Eddie Hung <[email protected]> * RWRoute.ripUp/updateUsersAndPresentCongestionCost() to rip up all Including the reserved sink node on unrouted connections Signed-off-by: Eddie Hung <[email protected]> * Unroutable connections to undo ripUp() on sink Signed-off-by: Eddie Hung <[email protected]> * Update comment Signed-off-by: Eddie Hung <[email protected]> * Extend TestRouteThruHelper with SLICEM H[16] test Signed-off-by: Eddie Hung <[email protected]> * Fix RouteThruHelper.isRouteThruPIPAvailable() for SLICEM.H[1-6] Signed-off-by: Eddie Hung <[email protected]> * PartialRouter to use RouteNodeGraph.isExcludedTile() instead of .isExcluded() Signed-off-by: Eddie Hung <[email protected]> * Extend TestRouteThruHelper with SLICEM H[16] test Signed-off-by: Eddie Hung <[email protected]> * Fix RouteThruHelper.isRouteThruPIPAvailable() for SLICEM.H[1-6] Signed-off-by: Eddie Hung <[email protected]> * Undo verbose flag Signed-off-by: Eddie Hung <[email protected]> * Restore original RWRoute.shouldRoute() but with extra assertion Signed-off-by: Eddie Hung <[email protected]> * Add comment Signed-off-by: Eddie Hung <[email protected]> * RouteNodeInfo to use RouteNodeGraph.lagunaI too Signed-off-by: Eddie Hung <[email protected]> * Undo verbose flag Signed-off-by: Eddie Hung <[email protected]> * Fix RouteNodeGraph's lagunaI construction Signed-off-by: Eddie Hung <[email protected]> * Use null RouteNodeType instead of WIRE for default Also update tests Signed-off-by: Eddie Hung <[email protected]> * Update PartialRouter too Signed-off-by: Eddie Hung <[email protected]> * Remove unused import Signed-off-by: Eddie Hung <[email protected]> * RouteNode.setType() to allow demotion of PINfEED_I Signed-off-by: Eddie Hung <[email protected]> * Tighten assertion Signed-off-by: Eddie Hung <[email protected]> * Extend TestRouteThruHelper with SLICEM H[16] test Signed-off-by: Eddie Hung <[email protected]> * Fix RouteThruHelper.isRouteThruPIPAvailable() for SLICEM.H[1-6] Signed-off-by: Eddie Hung <[email protected]> * Apply suggestions from code review Signed-off-by: eddieh-xlnx <[email protected]> * Add an assertion that PINFEED_I can never be overused Signed-off-by: Eddie Hung <[email protected]> * Add RWRoute.isAccessiblePinfeedI() overload with no assertion Signed-off-by: Eddie Hung <[email protected]> * Add TestNode.testNodeReachability() Signed-off-by: Eddie Hung <[email protected]> * Add and use RWRoute.accessibleWireOnlySameColumnAsTarget Signed-off-by: Eddie Hung <[email protected]> * NODE_LOCALs to be acccessible in Laguna columns for cross-SLR connections Signed-off-by: Eddie Hung <[email protected]> * Skip if baseNode is null Signed-off-by: Eddie Hung <[email protected]> * Print uphill/downhill Signed-off-by: Eddie Hung <[email protected]> * Add reachability test for UltraScale too Signed-off-by: Eddie Hung <[email protected]> * Move isAccessiblePinbounce() and make protected Signed-off-by: Eddie Hung <[email protected]> * Tweak assertion Signed-off-by: Eddie Hung <[email protected]> * Tidy up, add comments Signed-off-by: Eddie Hung <[email protected]> * Update copyright year Signed-off-by: Eddie Hung <[email protected]> * Compute RouteNodeGraph.lagunaI more accurately by going uphill from SLL Signed-off-by: Eddie Hung <[email protected]> * Update SLR tests Signed-off-by: Eddie Hung <[email protected]> * Also restrict NODE_LOCALs to be within one tile of sink too Signed-off-by: Eddie Hung <[email protected]> * Update test Signed-off-by: Eddie Hung <[email protected]> * Add support for multiple alternate sinks Signed-off-by: Eddie Hung <[email protected]> * Fix compilation Signed-off-by: Eddie Hung <[email protected]> * Extend TestDesignTools.testGetConnectedCells() Signed-off-by: Eddie Hung <[email protected]> * LUT pin swapping enabled with "--lutPinSwapping" Signed-off-by: Eddie Hung <[email protected]> * Fix flag Signed-off-by: Eddie Hung <[email protected]> * Tidy up PinSwap and SATRouter Signed-off-by: Eddie Hung <[email protected]> * Initial pin swap working Signed-off-by: Eddie Hung <[email protected]> * Add testNonTimingDrivenFullRoutingWithLutPinSwapping() Signed-off-by: Eddie Hung <[email protected]> * Add javadoc Signed-off-by: Eddie Hung <[email protected]> * Refactor into LUTTools.swapLutPins() Signed-off-by: Eddie Hung <[email protected]> * Add LUTTools.fixPinSwaps() Signed-off-by: Eddie Hung <[email protected]> * Add TestLUTTools.testFixPinSwapsWithRWRoute() Signed-off-by: Eddie Hung <[email protected]> * Add System prop rapidwright.rwroute.lutPinSwapping.deferIntraSiteRoutingUpdates Signed-off-by: Eddie Hung <[email protected]> * Add standalone TestLUTTools.testFixPinSwaps() Signed-off-by: Eddie Hung <[email protected]> * Add LUTTools.swapLutPins() and LUTTools.updateLutPinSwapsFromPIPs() Signed-off-by: Eddie Hung <[email protected]> * Anticipate that no eligible pins to swap were found Signed-off-by: Eddie Hung <[email protected]> * Rename to numberOfSwappablePins Signed-off-by: Eddie Hung <[email protected]> * LUTTools to take Map<SitePinInst,String> for pinswaps instead Signed-off-by: Eddie Hung <[email protected]> * LUTTools.swapLutPins() to not unroute intra-site net Since SATRouter.processPinSwaps() will do it Signed-off-by: Eddie Hung <[email protected]> * Add TestSATRouter Signed-off-by: Eddie Hung <[email protected]> * Add copyright header Signed-off-by: Eddie Hung <[email protected]> * Support and use 60 second timeout for test Signed-off-by: Eddie Hung <[email protected]> * Fix RWRoute for new pinSwaps type Signed-off-by: Eddie Hung <[email protected]> * Target nodes to not have occupancy > 1 Signed-off-by: Eddie Hung <[email protected]> * Revert "Support and use 60 second timeout for test" This reverts commit a5a462b. Signed-off-by: Eddie Hung <[email protected]> * Add TestSATRouter.testApplyResult() Using a pre-canned solution Signed-off-by: Eddie Hung <[email protected]> * Add LUTTools.swapLutPins() and LUTTools.updateLutPinSwapsFromPIPs() Signed-off-by: Eddie Hung <[email protected]> * Update copyright year Signed-off-by: Eddie Hung <[email protected]> * Refactor SATRouter.processPinSwaps() to LUTTools.swapSingleLutPins() Signed-off-by: Eddie Hung <[email protected]> * LUTTools to take Map<SitePinInst,String> for pinswaps instead Signed-off-by: Eddie Hung <[email protected]> Conflicts: src/com/xilinx/rapidwright/design/tools/LUTTools.java * LUTTools.swapLutPins() to not unroute intra-site net Since SATRouter.processPinSwaps() will do it Signed-off-by: Eddie Hung <[email protected]> * Connection.setAllTargets() to not set if used by same net Signed-off-by: Eddie Hung <[email protected]> * Allow NODE_PINBOUNCE Signed-off-by: Eddie Hung <[email protected]> * Add assertion Signed-off-by: Eddie Hung <[email protected]> * Print out unrouted SPIs Signed-off-by: Eddie Hung <[email protected]> * Reset property Signed-off-by: Eddie Hung <[email protected]> * Rename overload to swapMultipleLutPins Signed-off-by: Eddie Hung <[email protected]> * Remove old file Signed-off-by: Eddie Hung <[email protected]> * Revert "Print out unrouted SPIs" This reverts commit ba7464e. Signed-off-by: Eddie Hung <[email protected]> * Update to new overload Signed-off-by: Eddie Hung <[email protected]> * Refactor/rename/tidy Signed-off-by: Eddie Hung <[email protected]> * Use LUTTools.MAX_LUT_SIZE constant Signed-off-by: Eddie Hung <[email protected]> * Add support for simulating LUT pin swaps Signed-off-by: Eddie Hung <[email protected]> * Refactor/rename/tidy up Signed-off-by: Eddie Hung <[email protected]> * Reduce diff with master Signed-off-by: Eddie Hung <[email protected]> * Add missing import Signed-off-by: Eddie Hung <[email protected]> * Add explanation for new option, tidy Signed-off-by: Eddie Hung <[email protected]> * Add TestPhysNetlistWriter.testSimulateSwappedLutPinsWithRWRoute() Signed-off-by: Eddie Hung <[email protected]> * Update test/src/com/xilinx/rapidwright/design/tools/TestLUTTools.java Signed-off-by: eddieh-xlnx <[email protected]> * Do not pin swap fixed pins Signed-off-by: Eddie Hung <[email protected]> * Fix tests Signed-off-by: Eddie Hung <[email protected]> * Rename to swapLutPinsFromPIPs() Signed-off-by: Eddie Hung <[email protected]> * Update test Signed-off-by: Eddie Hung <[email protected]> * Update tests Signed-off-by: Eddie Hung <[email protected]> * Fix javadoc Signed-off-by: Eddie Hung <[email protected]> * Add assertion Signed-off-by: Eddie Hung <[email protected]> * Fix tests Signed-off-by: Eddie Hung <[email protected]> * Handle case where exclusive LUT sinks can be overused (e.g. when only some pins on the LUT cell are fixed) Signed-off-by: Eddie Hung <[email protected]> * Revert "Handle case where exclusive LUT sinks can be overused" This reverts commit aab686b. Signed-off-by: Eddie Hung <[email protected]> * Add comment Signed-off-by: Eddie Hung <[email protected]> * Remove all exclusive sinks that are alternate sinks on other conn-s Signed-off-by: Eddie Hung <[email protected]> * Revert interchange changes Signed-off-by: Eddie Hung <[email protected]> * Fix/add comments Signed-off-by: Eddie Hung <[email protected]> * Fix exclusive sinks for PartialRouter Signed-off-by: Eddie Hung <[email protected]> * Cleanup Signed-off-by: Eddie Hung <[email protected]> * Extend assertion Signed-off-by: Eddie Hung <[email protected]> * Do not use Cell.isPinFixed() as that doesn't capture LOCK_PIN-s Signed-off-by: Eddie Hung <[email protected]> * Update comment Signed-off-by: Eddie Hung <[email protected]> * Update test Signed-off-by: Eddie Hung <[email protected]> * Remove irrelevant test Signed-off-by: Eddie Hung <[email protected]> * Allow alternate sinks that are not PINFEED_Is even if occupied Signed-off-by: Eddie Hung <[email protected]> * Simplify early termination Signed-off-by: Eddie Hung <[email protected]> * Skip if no rnodes Signed-off-by: Eddie Hung <[email protected]> * Always set nodes Signed-off-by: Eddie Hung <[email protected]> * Apply suggestions from code review Signed-off-by: eddieh-xlnx <[email protected]> * Simplify assignNodesToConnections() Signed-off-by: Eddie Hung <[email protected]> * Expand comment/assertion Signed-off-by: Eddie Hung <[email protected]> * Do not update sinkRnode when deferring pin swaps Signed-off-by: Eddie Hung <[email protected]> * Remove verbose Signed-off-by: Eddie Hung <[email protected]> * Invert condition Signed-off-by: Eddie Hung <[email protected]> * Apply suggestions from code review Signed-off-by: eddieh-xlnx <[email protected]> --------- Signed-off-by: Eddie Hung <[email protected]> Signed-off-by: eddieh-xlnx <[email protected]>
- Loading branch information