Skip to content
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

[RWRoute] Versal optimizations #1093

Merged
merged 70 commits into from
Nov 14, 2024

Conversation

WenhaoLin-AMD
Copy link
Contributor

@WenhaoLin-AMD WenhaoLin-AMD commented Nov 4, 2024

This PR:

  • Applies [RWRoute] Divide nodes into LOCAL and NON_LOCAL #1095 to Versal nodes based on their intent codes -- ensuring that NON_LOCAL -> LOCAL node transition only happens in the vicinity of the sink tile
    • With special handling for NODE_(CLE|INTF)_[BC]NODE nodes to prevent them from being used to travel between INT tiles, but still used to "bounce" (back) into the original (sink) tile
  • Further applies [RWRoute] Further divide LOCAL nodes into EAST/WEST for UltraScale(+) #1098 to Versal nodes based on their wire or tile name to ensure that only the relevant east/west side of the INT tile is explored
    • Note that NODE_CLE_[BC]NODE nodes can reach NODE_INODEs on the opposite side of the former's wire name
  • Add a RouteNodeType.LOCAL_RESERVED as part of a Versal-only heuristic to reserve [BC]NODEs uphill of a NODE_(CLE|INTF)_CTRL sink, since [BC]NODEs (especially CNODEs) are the only way to reach CTRL sinks, while also providing extra connectivity to NODE_INODEs in the INT tile.
    • e.g. On 1c2b471, for finn_radioml using LOCAL_RESERVED requires 119M pops over 10 iterations to route, but without needed 176M pops over 17 iterations.
    • The downside to this heuristic is that all CNODEs are reserved for even one CTRL sink, meaning that just one sink will prevent any other nets from using those CNODEs

Results:

			Before (a3af7dc)		After (1c2b471)	
			Nodes popped	Runtime (s)	Nodes popped	Runtime (s)
boom_med_pb		  308,212,121	 201		 92,043,436	 79
boom_soc		3,320,844,555	2184		831,951,144	698
corescore_500		  381,326,217	 249		141,432,563	133
corescore_500_pb	  393,285,727	 260		147,020,615	137
finn_radioml		  401,124,667	 253		118,592,148	101
koios_dla_like_large	1,329,175,620	 923		270,148,933	263
logicnets_jscl		   85,632,115	  58		 42,305,715	 33
vtr_lu64peeng		  429,006,483	 295		194,564,833	175
vtr_mcml		  185,015,595	 127		 79,474,273	 71

Overall, 2.7x improvement in wall clock RWRoute runtime, 3.6x the number of nodes popped.

WenhaoLin-AMD and others added 15 commits November 3, 2024 23:31
Signed-off-by: Wenhao Lin <wenhao.lin@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Conflicts:
	src/com/xilinx/rapidwright/rwroute/Connection.java
	src/com/xilinx/rapidwright/rwroute/RWRoute.java
	src/com/xilinx/rapidwright/rwroute/RouteNode.java
	src/com/xilinx/rapidwright/rwroute/RouteNodeGraph.java
	src/com/xilinx/rapidwright/rwroute/RouteNodeInfo.java
	test/src/com/xilinx/rapidwright/device/TestNode.java
@eddieh-xlnx eddieh-xlnx changed the title Add optimization of signal routing [RWRoute] Versal optimizations Nov 6, 2024
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Conflicts:
	src/com/xilinx/rapidwright/rwroute/RouteNode.java
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
Signed-off-by: Eddie Hung <eddie.hung@amd.com>
@eddieh-xlnx eddieh-xlnx merged commit 07c7ceb into Xilinx:master Nov 14, 2024
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants