diff options
author | David Shah <dave@ds0.me> | 2020-02-03 13:55:07 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-02-03 13:55:07 +0000 |
commit | b4d029a55cd67bafcc9c364d609208a818227204 (patch) | |
tree | ba83fbf0d6c4b1e3b7644c921960929a23f8735a /common | |
parent | aed93a9390dd909111ab4526e7f3df8d24a2ee0a (diff) | |
parent | f1dbb0c4f2242862dd365da8865e059d2c05a310 (diff) | |
download | nextpnr-b4d029a55cd67bafcc9c364d609208a818227204.tar.gz nextpnr-b4d029a55cd67bafcc9c364d609208a818227204.tar.bz2 nextpnr-b4d029a55cd67bafcc9c364d609208a818227204.zip |
Merge pull request #385 from YosysHQ/router1-arc-fixes
Fixes for partial reconfig demo
Diffstat (limited to 'common')
-rw-r--r-- | common/router1.cc | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/common/router1.cc b/common/router1.cc index a89d870d..ef788fc2 100644 --- a/common/router1.cc +++ b/common/router1.cc @@ -400,7 +400,7 @@ struct Router1 dst_to_arc[dst_wire] = arc; - if (net_info->wires.count(src_wire) == 0) { + if (net_info->wires.count(dst_wire) == 0) { arc_queue_insert(arc, src_wire, dst_wire); continue; } @@ -527,6 +527,18 @@ struct Router1 conflictWireNet = ctx->getConflictingWireNet(next_wire); if (conflictWireNet == nullptr) continue; + else { + if (conflictWireNet->wires.count(next_wire) && + conflictWireNet->wires.at(next_wire).strength > STRENGTH_STRONG) + continue; + } + } else { + NetInfo *conflicting = ctx->getBoundWireNet(conflictWireWire); + if (conflicting != nullptr) { + if (conflicting->wires.count(conflictWireWire) && + conflicting->wires.at(conflictWireWire).strength > STRENGTH_STRONG) + continue; + } } } @@ -538,6 +550,18 @@ struct Router1 conflictPipNet = ctx->getConflictingPipNet(pip); if (conflictPipNet == nullptr) continue; + else { + if (conflictPipNet->wires.count(next_wire) && + conflictPipNet->wires.at(next_wire).strength > STRENGTH_STRONG) + continue; + } + } else { + NetInfo *conflicting = ctx->getBoundWireNet(conflictPipWire); + if (conflicting != nullptr) { + if (conflicting->wires.count(conflictPipWire) && + conflicting->wires.at(conflictPipWire).strength > STRENGTH_STRONG) + continue; + } } } |