diff options
Diffstat (limited to 'common/router1.cc')
-rw-r--r-- | common/router1.cc | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/common/router1.cc b/common/router1.cc index 198461bc..cbc0df90 100644 --- a/common/router1.cc +++ b/common/router1.cc @@ -777,6 +777,7 @@ bool router1(Context *ctx, const Router1Cfg &cfg) router.arcs_without_ripup - last_arcs_without_ripup, int(router.arc_queue.size())); last_arcs_with_ripup = router.arcs_with_ripup; last_arcs_without_ripup = router.arcs_without_ripup; + ctx->yield(); #ifndef NDEBUG router.check(); #endif @@ -802,6 +803,7 @@ bool router1(Context *ctx, const Router1Cfg &cfg) router.arcs_with_ripup - last_arcs_with_ripup, router.arcs_without_ripup - last_arcs_without_ripup, int(router.arc_queue.size())); log_info("Routing complete.\n"); + ctx->yield(); #ifndef NDEBUG router.check(); @@ -810,7 +812,8 @@ bool router1(Context *ctx, const Router1Cfg &cfg) #endif log_info("Checksum: 0x%08x\n", ctx->checksum()); - timing_analysis(ctx, true /* slack_histogram */, true /* print_fmax */, true /* print_path */); + timing_analysis(ctx, true /* slack_histogram */, true /* print_fmax */, true /* print_path */, + true /* warn_on_failure */); ctx->unlock(); return true; @@ -868,7 +871,12 @@ bool Context::checkRoutedDesign() const } auto src_wire = ctx->getNetinfoSourceWire(net_info); - log_assert(src_wire != WireId()); + if (src_wire == WireId()) { + log_assert(net_info->driver.cell == nullptr); + if (ctx->debug) + log(" undriven and unrouted\n"); + continue; + } if (net_info->wires.count(src_wire) == 0) { if (ctx->debug) |