aboutsummaryrefslogtreecommitdiffstats
path: root/common/router2.cc
diff options
context:
space:
mode:
authorgatecat <gatecat@ds0.me>2021-07-06 10:38:08 +0100
committergatecat <gatecat@ds0.me>2021-07-06 10:38:08 +0100
commit31abefc8e49edce55fb42c99ac99b81e948d9004 (patch)
tree11d7496a94275f54e98d566958890285e18a3104 /common/router2.cc
parent6fe071ad1d47c363f665995ae774edcd547e022d (diff)
downloadnextpnr-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/router2.cc')
-rw-r--r--common/router2.cc16
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);
}