aboutsummaryrefslogtreecommitdiffstats
path: root/nexus/arch_place.cc
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2020-10-19 13:31:21 +0100
committerDavid Shah <dave@ds0.me>2020-11-30 08:45:27 +0000
commitcbf99d5e5390d8439722e0172067b687be5ac060 (patch)
tree89f2a8095bf7b0c9f578e8d3caceb6201a98b513 /nexus/arch_place.cc
parentdfd6b6e39e56a2c2b10b051b9b54926e120f319e (diff)
downloadnextpnr-cbf99d5e5390d8439722e0172067b687be5ac060.tar.gz
nextpnr-cbf99d5e5390d8439722e0172067b687be5ac060.tar.bz2
nextpnr-cbf99d5e5390d8439722e0172067b687be5ac060.zip
nexus: LUTRAM support
Signed-off-by: David Shah <dave@ds0.me>
Diffstat (limited to 'nexus/arch_place.cc')
-rw-r--r--nexus/arch_place.cc10
1 files changed, 10 insertions, 0 deletions
diff --git a/nexus/arch_place.cc b/nexus/arch_place.cc
index 7e50de29..feec75ad 100644
--- a/nexus/arch_place.cc
+++ b/nexus/arch_place.cc
@@ -33,6 +33,16 @@ bool Arch::nexus_logic_tile_valid(LogicTileStatus &lts) const
CellInfo *lut1 = lts.cells[(s << 3) | BEL_LUT1];
CellInfo *ff0 = lts.cells[(s << 3) | BEL_FF0];
CellInfo *ff1 = lts.cells[(s << 3) | BEL_FF1];
+
+ if (s == 2) {
+ CellInfo *ramw = lts.cells[(s << 3) | BEL_RAMW];
+ // Nothing else in SLICEC can be used if the RAMW is used
+ if (ramw != nullptr) {
+ if (lut0 != nullptr || lut1 != nullptr || ff0 != nullptr || ff1 != nullptr)
+ return false;
+ }
+ }
+
if (lut0 != nullptr) {
// Check for overuse of M signal
if (lut0->lutInfo.mux2_used && ff0 != nullptr && ff0->ffInfo.m != nullptr)