From b5a31d2e4e1d9097db543faf4374f5f0c10e6855 Mon Sep 17 00:00:00 2001 From: gatecat Date: Fri, 30 Jul 2021 09:14:46 +0100 Subject: router2: Mark dest as visited during backwards routing Signed-off-by: gatecat --- common/router2.cc | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'common/router2.cc') diff --git a/common/router2.cc b/common/router2.cc index 667d906e..9264903d 100644 --- a/common/router2.cc +++ b/common/router2.cc @@ -579,6 +579,7 @@ struct Router2 int backwards_limit = ctx->getBelGlobalBuf(net->driver.cell->bel) ? cfg.global_backwards_max_iter : cfg.backwards_max_iter; t.backwards_queue.push(wire_to_idx.at(dst_wire)); + set_visited(t, wire_to_idx.at(dst_wire), PipId(), WireScore()); while (!t.backwards_queue.empty() && backwards_iter < backwards_limit) { int cursor = t.backwards_queue.front(); t.backwards_queue.pop(); @@ -645,6 +646,9 @@ struct Router2 bind_pip_internal(net, i, src_wire_idx, PipId()); while (was_visited(cursor_fwd)) { auto &v = flat_wires.at(cursor_fwd).visit; + if (v.pip == PipId()) { + break; + } cursor_fwd = wire_to_idx.at(ctx->getPipDstWire(v.pip)); bind_pip_internal(net, i, cursor_fwd, v.pip); if (ctx->debug) { -- cgit v1.2.3