Bugfix in router1
Signed-off-by: Clifford Wolf <clifford@clifford.at>
This commit is contained in:
parent
e7ae28cafe
commit
5cc9b9f61f
@ -544,21 +544,22 @@ remove_wire_arcs:
|
|||||||
|
|
||||||
WireId cursor = dst_wire;
|
WireId cursor = dst_wire;
|
||||||
while (1) {
|
while (1) {
|
||||||
|
auto pip = visited[cursor].pip;
|
||||||
|
|
||||||
if (ctx->debug)
|
if (ctx->debug)
|
||||||
log(" node %s\n", ctx->getWireName(cursor).c_str(ctx));
|
log(" node %s\n", ctx->getWireName(cursor).c_str(ctx));
|
||||||
|
|
||||||
if (!ctx->checkWireAvail(cursor)) {
|
if (!ctx->checkWireAvail(cursor)) {
|
||||||
NetInfo *ripupWireNet = ctx->getConflictingWireNet(cursor);
|
NetInfo *ripupWireNet = ctx->getConflictingWireNet(cursor);
|
||||||
NPNR_ASSERT(ripupWireNet != nullptr);
|
NPNR_ASSERT(ripupWireNet != nullptr);
|
||||||
|
NPNR_ASSERT(ripupWireNet->wires.count(cursor));
|
||||||
|
|
||||||
if (ripupWireNet != net_info) {
|
if (ripupWireNet != net_info || net_info->wires.at(cursor).pip != pip) {
|
||||||
ripup_wire(cursor);
|
ripup_wire(cursor);
|
||||||
NPNR_ASSERT(ctx->checkWireAvail(cursor));
|
NPNR_ASSERT(ctx->checkWireAvail(cursor));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
auto pip = visited[cursor].pip;
|
|
||||||
|
|
||||||
if (pip == PipId()) {
|
if (pip == PipId()) {
|
||||||
NPNR_ASSERT(cursor == src_wire);
|
NPNR_ASSERT(cursor == src_wire);
|
||||||
} else {
|
} else {
|
||||||
@ -658,6 +659,9 @@ bool router1(Context *ctx, const Router1Cfg &cfg)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ctx->debug)
|
||||||
|
log("-- %d --\n", iter_cnt);
|
||||||
|
|
||||||
arc_key arc = router.arc_queue_pop();
|
arc_key arc = router.arc_queue_pop();
|
||||||
|
|
||||||
if (!router.route_arc(arc, true)) {
|
if (!router.route_arc(arc, true)) {
|
||||||
|
Loading…
Reference in New Issue
Block a user