diff options
author | gatecat <gatecat@ds0.me> | 2021-07-06 10:38:08 +0100 |
---|---|---|
committer | gatecat <gatecat@ds0.me> | 2021-07-06 10:38:08 +0100 |
commit | 31abefc8e49edce55fb42c99ac99b81e948d9004 (patch) | |
tree | 11d7496a94275f54e98d566958890285e18a3104 /common | |
parent | 6fe071ad1d47c363f665995ae774edcd547e022d (diff) | |
download | nextpnr-31abefc8e49edce55fb42c99ac99b81e948d9004.tar.gz nextpnr-31abefc8e49edce55fb42c99ac99b81e948d9004.tar.bz2 nextpnr-31abefc8e49edce55fb42c99ac99b81e948d9004.zip |
interchange: Allow pseudo pip wires to overlap with bound site wires on the same net
Signed-off-by: gatecat <gatecat@ds0.me>
Diffstat (limited to 'common')
-rw-r--r-- | common/router2.cc | 16 |
1 files changed, 8 insertions, 8 deletions
diff --git a/common/router2.cc b/common/router2.cc index a1fd8bef..7bffc089 100644 --- a/common/router2.cc +++ b/common/router2.cc @@ -978,17 +978,17 @@ struct Router2 log_error("Internal error; incomplete route tree for arc %d of net %s.\n", usr_idx, ctx->nameOf(net)); } auto &p = wd.bound_nets.at(net->udata).second; - if (!ctx->checkPipAvail(p)) { + if (ctx->checkPipAvailForNet(p, net)) { NetInfo *bound_net = ctx->getBoundPipNet(p); - if (bound_net != net) { - if (ctx->verbose) { - log_info("Failed to bind pip %s to net %s\n", ctx->nameOfPip(p), net->name.c_str(ctx)); - } - success = false; - break; + if (bound_net == nullptr) { + to_bind.push_back(p); } } else { - to_bind.push_back(p); + if (ctx->verbose) { + log_info("Failed to bind pip %s to net %s\n", ctx->nameOfPip(p), net->name.c_str(ctx)); + } + success = false; + break; } cursor = ctx->getPipSrcWire(p); } |