aboutsummaryrefslogtreecommitdiffstats
path: root/nexus/arch.cc
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2020-12-08 09:26:09 +0000
committerGitHub <noreply@github.com>2020-12-08 09:26:09 +0000
commitca08add9c90b14e4fb8d63ccb4f475dccd598d66 (patch)
tree46672f7f931f5e005891d1d4d96b2978f9036add /nexus/arch.cc
parent92ef01830c9f92d1374b4d02965865f11fab0ccc (diff)
parent588042dc997080830e73c10b71c15444756dbeab (diff)
downloadnextpnr-ca08add9c90b14e4fb8d63ccb4f475dccd598d66.tar.gz
nextpnr-ca08add9c90b14e4fb8d63ccb4f475dccd598d66.tar.bz2
nextpnr-ca08add9c90b14e4fb8d63ccb4f475dccd598d66.zip
Merge pull request #528 from YosysHQ/dave/nexus-lram
nexus: Add basic LRAM support
Diffstat (limited to 'nexus/arch.cc')
-rw-r--r--nexus/arch.cc11
1 files changed, 11 insertions, 0 deletions
diff --git a/nexus/arch.cc b/nexus/arch.cc
index f222a5ad..dbc12c13 100644
--- a/nexus/arch.cc
+++ b/nexus/arch.cc
@@ -619,6 +619,10 @@ ArcBounds Arch::getRouteBoundingBox(WireId src, WireId dst) const
bb.x0 = std::max<int>(0, bb.x0 - 6);
bb.x1 = std::min<int>(chip_info->width, bb.x1 + 6);
}
+ if (lram_wires.count(src) || lram_wires.count(dst)) {
+ bb.y0 = std::max<int>(0, bb.y0 - 7);
+ bb.y1 = std::min<int>(chip_info->width, bb.y1 + 7);
+ }
return bb;
}
@@ -669,6 +673,13 @@ void Arch::pre_routing()
dsp_wires.insert(wire);
}
}
+ if (ci->type == id_LRAM_CORE) {
+ for (auto port : sorted_ref(ci->ports)) {
+ WireId wire = getBelPinWire(ci->bel, port.first);
+ if (wire != WireId())
+ lram_wires.insert(wire);
+ }
+ }
}
}