aboutsummaryrefslogtreecommitdiffstats
path: root/ecp5/arch_place.cc
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2020-02-04 16:08:08 +0000
committerGitHub <noreply@github.com>2020-02-04 16:08:08 +0000
commit1ceffbe0bcba4f31a40c58c436df9370899fa4a2 (patch)
treef3cff1e5f8a067159a4e0fecd870a7acacba57a0 /ecp5/arch_place.cc
parentb4d029a55cd67bafcc9c364d609208a818227204 (diff)
parenta1c902dadc3165fe9abab7c96a75b5f4808836cd (diff)
downloadnextpnr-1ceffbe0bcba4f31a40c58c436df9370899fa4a2.tar.gz
nextpnr-1ceffbe0bcba4f31a40c58c436df9370899fa4a2.tar.bz2
nextpnr-1ceffbe0bcba4f31a40c58c436df9370899fa4a2.zip
Merge pull request #391 from YosysHQ/router2-upstream
Upstreaming router2
Diffstat (limited to 'ecp5/arch_place.cc')
-rw-r--r--ecp5/arch_place.cc21
1 files changed, 15 insertions, 6 deletions
diff --git a/ecp5/arch_place.cc b/ecp5/arch_place.cc
index 6057605b..c5330694 100644
--- a/ecp5/arch_place.cc
+++ b/ecp5/arch_place.cc
@@ -203,17 +203,26 @@ void Arch::setupWireLocations()
CellInfo *ci = cell.second;
if (ci->bel == BelId())
continue;
- if (ci->type == id_MULT18X18D || ci->type == id_DCUA) {
+ if (ci->type == id_MULT18X18D || ci->type == id_DCUA || ci->type == id_DDRDLL || ci->type == id_DQSBUFM ||
+ ci->type == id_EHXPLLL) {
for (auto &port : ci->ports) {
- if (port.second.type != PORT_IN || port.second.net == nullptr)
+ if (port.second.net == nullptr)
continue;
WireId pw = getBelPinWire(ci->bel, port.first);
if (pw == WireId())
continue;
- for (auto uh : getPipsUphill(pw)) {
- WireId pip_src = getPipSrcWire(uh);
- wire_loc_overrides[pw] = std::make_pair(pip_src.location.x, pip_src.location.y);
- break;
+ if (port.second.type == PORT_OUT) {
+ for (auto dh : getPipsDownhill(pw)) {
+ WireId pip_dst = getPipDstWire(dh);
+ wire_loc_overrides[pw] = std::make_pair(pip_dst.location.x, pip_dst.location.y);
+ break;
+ }
+ } else {
+ for (auto uh : getPipsUphill(pw)) {
+ WireId pip_src = getPipSrcWire(uh);
+ wire_loc_overrides[pw] = std::make_pair(pip_src.location.x, pip_src.location.y);
+ break;
+ }
}
}
}