|
1 | 1 | /*
|
2 | 2 | *
|
3 | 3 | * Copyright (c) 2021 Ghent University.
|
4 |
| - * Copyright (c) 2022-2023, Advanced Micro Devices, Inc. |
| 4 | + * Copyright (c) 2022-2024, Advanced Micro Devices, Inc. |
5 | 5 | * All rights reserved.
|
6 | 6 | *
|
7 | 7 | * Author: Yun Zhou, Ghent University.
|
@@ -574,20 +574,26 @@ protected NetWrapper createNetWrapperAndConnections(Net net) {
|
574 | 574 | BEL bel = cell.getBEL();
|
575 | 575 | assert(bel.isLUT());
|
576 | 576 | String belName = bel.getName();
|
| 577 | + String cellType = cell.getType(); |
577 | 578 | if (belName.charAt(0) != lutLetter) {
|
578 |
| - assert(cell.getType().startsWith("RAM")); |
| 579 | + assert(cellType.startsWith("RAM")); |
579 | 580 | // This pin connects to other LUTs! (e.g. SLICEM.H[1-6] also serves
|
580 | 581 | // as the WA for A-G LUTs used as distributed RAM) -- do not allow any swapping
|
581 | 582 | // TODO: Relax this when https://github.com/Xilinx/RapidWright/issues/901 is fixed
|
582 | 583 | numberOfSwappablePins = 0;
|
583 | 584 | break;
|
584 | 585 | }
|
585 |
| - if (bel.getName().startsWith("H") && cell.getType().startsWith("RAM")) { |
| 586 | + if (bel.getName().startsWith("H") && cellType.startsWith("RAM")) { |
586 | 587 | // Similarly, disallow swapping of any RAMs on the "H" BELs since their
|
587 | 588 | // "A" and "WA" inputs are shared and require extra care to keep in sync
|
588 | 589 | numberOfSwappablePins = 0;
|
589 | 590 | break;
|
590 | 591 | }
|
| 592 | + if (cellType.startsWith("SRL")) { |
| 593 | + // SRL* cells cannot support any pin swaps |
| 594 | + numberOfSwappablePins = 0; |
| 595 | + break; |
| 596 | + } |
591 | 597 | if (belName.charAt(1) == '5') {
|
592 | 598 | // Since a 5LUT cell exists, only allow bottom 5 pins to be swapped
|
593 | 599 | numberOfSwappablePins = 5;
|
|
0 commit comments