Skip to content

Commit afd1161

Browse files
authored
[RWRoute] Do not pin swap SRL (shift register) cells (#939)
* DesignTools.swapMultipleLutPins() to ignore SRL* cells Signed-off-by: Eddie Hung <eddie.hung@amd.com> * DesignTools.swapSingleLutPins() to also swap alt pin mappings Populated for intra-site LUT routethrus (e.g. to get to a FF) Signed-off-by: Eddie Hung <eddie.hung@amd.com> * Bump year Signed-off-by: Eddie Hung <eddie.hung@amd.com> * [RWRoute] Do not pin swap SRL (shift register) cells Signed-off-by: Eddie Hung <eddie.hung@amd.com> * Bump year Signed-off-by: Eddie Hung <eddie.hung@amd.com> --------- Signed-off-by: Eddie Hung <eddie.hung@amd.com>
1 parent 041daf0 commit afd1161

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/com/xilinx/rapidwright/rwroute/RWRoute.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
/*
22
*
33
* Copyright (c) 2021 Ghent University.
4-
* Copyright (c) 2022-2023, Advanced Micro Devices, Inc.
4+
* Copyright (c) 2022-2024, Advanced Micro Devices, Inc.
55
* All rights reserved.
66
*
77
* Author: Yun Zhou, Ghent University.
@@ -574,20 +574,26 @@ protected NetWrapper createNetWrapperAndConnections(Net net) {
574574
BEL bel = cell.getBEL();
575575
assert(bel.isLUT());
576576
String belName = bel.getName();
577+
String cellType = cell.getType();
577578
if (belName.charAt(0) != lutLetter) {
578-
assert(cell.getType().startsWith("RAM"));
579+
assert(cellType.startsWith("RAM"));
579580
// This pin connects to other LUTs! (e.g. SLICEM.H[1-6] also serves
580581
// as the WA for A-G LUTs used as distributed RAM) -- do not allow any swapping
581582
// TODO: Relax this when https://github.com/Xilinx/RapidWright/issues/901 is fixed
582583
numberOfSwappablePins = 0;
583584
break;
584585
}
585-
if (bel.getName().startsWith("H") && cell.getType().startsWith("RAM")) {
586+
if (bel.getName().startsWith("H") && cellType.startsWith("RAM")) {
586587
// Similarly, disallow swapping of any RAMs on the "H" BELs since their
587588
// "A" and "WA" inputs are shared and require extra care to keep in sync
588589
numberOfSwappablePins = 0;
589590
break;
590591
}
592+
if (cellType.startsWith("SRL")) {
593+
// SRL* cells cannot support any pin swaps
594+
numberOfSwappablePins = 0;
595+
break;
596+
}
591597
if (belName.charAt(1) == '5') {
592598
// Since a 5LUT cell exists, only allow bottom 5 pins to be swapped
593599
numberOfSwappablePins = 5;

0 commit comments

Comments
 (0)