aboutsummaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2019-08-07 16:51:29 +0100
committerDavid Shah <dave@ds0.me>2019-08-07 16:51:29 +0100
commitfba7c2caef79668341882404f2c6a1655df23548 (patch)
tree768ad2ba8513e792644ac41f26a557f81aeb303e /common
parentb8455f20e2bf431b5cbfba98269489c5c13c872b (diff)
downloadnextpnr-fba7c2caef79668341882404f2c6a1655df23548.tar.gz
nextpnr-fba7c2caef79668341882404f2c6a1655df23548.tar.bz2
nextpnr-fba7c2caef79668341882404f2c6a1655df23548.zip
timing: Improve support for out-of-context flows
Signed-off-by: David Shah <dave@ds0.me>
Diffstat (limited to 'common')
-rw-r--r--common/timing.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/common/timing.cc b/common/timing.cc
index 599d6dbd..37600c8c 100644
--- a/common/timing.cc
+++ b/common/timing.cc
@@ -185,8 +185,16 @@ struct Timing
}
}
- std::deque<NetInfo *> queue(topographical_order.begin(), topographical_order.end());
+ // In out-of-context mode, handle top-level ports correctly
+ if (bool_or_default(ctx->settings, ctx->id("arch.ooc"))) {
+ for (auto &p : ctx->ports) {
+ if (p.second.type != PORT_IN || p.second.net == nullptr)
+ continue;
+ topographical_order.emplace_back(p.second.net);
+ }
+ }
+ std::deque<NetInfo *> queue(topographical_order.begin(), topographical_order.end());
// Now walk the design, from the start points identified previously, building up a topographical order
while (!queue.empty()) {
const auto net = queue.front();