From e87b96fe4a05d6040ea4820456c00a9dbc6ee69f Mon Sep 17 00:00:00 2001 From: Eddie Hung Date: Sat, 8 Dec 2018 22:49:55 -0800 Subject: [PATCH] Add xc7 specific hack for global network routing --- common/router1.cc | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/common/router1.cc b/common/router1.cc index cbc0df90..a93d7f51 100644 --- a/common/router1.cc +++ b/common/router1.cc @@ -512,6 +512,20 @@ struct Router1 WireId next_wire = ctx->getPipDstWire(pip); next_delay += ctx->getWireDelay(next_wire).maxDelay(); +#ifdef ARCH_XC7 + if (ctx->isGlobalNet(net_info)) { + if (torc_info->wire_is_global[src_wire.index] && !torc_info->wire_is_global[next_wire.index]) { + const auto &arc = torc_info->pip_to_arc[pip.index]; + const auto &next_tw = arc.getSinkTilewire(); + const auto &next_loc = torc_info->tile_to_xy[next_tw.getTileIndex()]; + const auto &dst_tw = torc_info->wire_to_tilewire[dst_wire.index]; + const auto &dst_loc = torc_info->tile_to_xy[dst_tw.getTileIndex()]; + if (next_loc.second != dst_loc.second || next_loc.first != dst_loc.first) + continue; + } + } +#endif + WireId conflictWireWire = WireId(), conflictPipWire = WireId(); NetInfo *conflictWireNet = nullptr, *conflictPipNet = nullptr;