Skip to content

Commit 5d24bca

Browse files
authored
[RWRoute] Add --lutRoutethru option (disabled by default) (#71)
* Update RapidWright submodule Signed-off-by: Eddie Hung <[email protected]> * [PartialRouterPhysNetlist] Add commented out '--lutRoutethru' option Signed-off-by: Eddie Hung <[email protected]> * Add --lutRoutethru to GitHub Actions Signed-off-by: Eddie Hung <[email protected]> * Fix make.yml Signed-off-by: Eddie Hung <[email protected]> --------- Signed-off-by: Eddie Hung <[email protected]>
1 parent 4cec6f0 commit 5d24bca

File tree

3 files changed

+27
-10
lines changed

3 files changed

+27
-10
lines changed

.github/workflows/make.yml

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ jobs:
1818
router:
1919
- rwroute
2020
- nxroute-poc
21-
lutpinswap:
21+
lutpinswapping:
22+
- false
23+
- true
24+
lutroutethru:
2225
- false
2326
- true
2427
benchmark:
@@ -47,7 +50,10 @@ jobs:
4750
benchmark: ispd16_example2
4851
# NXRoute does not support LUT pin swapping
4952
- router: nxroute-poc
50-
lutpinswap: true
53+
lutpinswapping: true
54+
# NXRoute does not support LUT routethrus
55+
- router: nxroute-poc
56+
lutroutethru: true
5157
steps:
5258
- uses: actions/checkout@v3
5359
with:
@@ -72,7 +78,8 @@ jobs:
7278
# For certain benchmarks, wirelength_analyzer/CheckPhysNetlist requires more memory than that available in GitHub Actions
7379
WIRELENGTH_ANALYZER_MOCK_RESULT: ${{ matrix.benchmark == 'koios_dla_like_large' }}
7480
CHECK_PHYS_NETLIST_DIFF_MOCK_RESULT: ${{ matrix.benchmark == 'koios_dla_like_large' }}
75-
RWROUTE_FORCE_LUT_PIN_SWAP: ${{ matrix.router == 'rwroute' && matrix.lutpinswap }}
81+
RWROUTE_FORCE_LUT_PINSWAPPING: ${{ matrix.router == 'rwroute' && matrix.lutpinswapping }}
82+
RWROUTE_FORCE_LUT_ROUTETHRU: ${{ matrix.router == 'rwroute' && matrix.lutroutethru }}
7683
run: |
7784
make ROUTER="${{ matrix.router }}" BENCHMARKS="${{ matrix.benchmark }}" VERBOSE=1
7885
- name: Score summary
@@ -115,7 +122,7 @@ jobs:
115122
- uses: actions/upload-artifact@v3
116123
if: always()
117124
with:
118-
name: ${{ matrix.router }}${{ matrix.router == 'rwroute' && matrix.lutpinswap && '-lutpinswap' || ''}}-${{ matrix.benchmark }}
125+
name: ${{ matrix.router }}${{ matrix.router == 'rwroute' && matrix.lutpinswapping && '-lutpinswapping' || ''}}${{ matrix.router == 'rwroute' && matrix.lutroutethru && '-lutroutethru' || ''}}-${{ matrix.benchmark }}
119126
path: |
120127
*.dcp
121128
*.phys

src/com/xilinx/fpga24_routing_contest/PartialRouterPhysNetlist.java

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,24 @@ public static void main(String[] args) throws IOException {
6363
routerArgs.addAll(List.of("--initialPresentCongestionFactor", "0.5"));
6464
routerArgs.addAll(List.of("--presentCongestionMultiplier", "2"));
6565
routerArgs.addAll(List.of("--historicalCongestionFactor", "1"));
66-
// Optionally, enable LUT pin swapping where all inputs of a LUT are considered
67-
// to be equivalent
66+
67+
// Optionally, allow RWRoute to perform LUT pin swapping such that all LUT input sinks
68+
// are considered to be equivalent
6869
//routerArgs.add("--lutPinSwapping");
6970

70-
if (System.getenv().getOrDefault("RWROUTE_FORCE_LUT_PIN_SWAP", "false").equals("true")) {
71-
// For testing purposes
71+
// Optionally, allow RWRoute to consider LUT routethrus, where unused LUT resources
72+
// (subject to a number of constraints) can be repurposed as an additional routing
73+
// resource
74+
//routerArgs.add("--lutRoutethru");
75+
76+
// Primarily for testing purposes
77+
if (System.getenv().getOrDefault("RWROUTE_FORCE_LUT_PINSWAPPING", "false").equals("true")) {
7278
routerArgs.add("--lutPinSwapping");
73-
}
79+
}
80+
if (System.getenv().getOrDefault("RWROUTE_FORCE_LUT_ROUTETHRU", "false").equals("true")) {
81+
routerArgs.add("--lutRoutethru");
82+
}
83+
7484
if (routerArgs.contains("--lutPinSwapping")) {
7585
// Ask RWRoute not to perform any intra-site routing updates to reflect
7686
// any LUT pin swapping that occurs during routing, to fulfill the

0 commit comments

Comments
 (0)