aboutsummaryrefslogtreecommitdiffstats
path: root/common
diff options
context:
space:
mode:
Diffstat (limited to 'common')
-rw-r--r--common/route.cc10
-rw-r--r--common/route.h2
2 files changed, 12 insertions, 0 deletions
diff --git a/common/route.cc b/common/route.cc
index 657075ce..39e420d3 100644
--- a/common/route.cc
+++ b/common/route.cc
@@ -161,6 +161,7 @@ struct Router
std::unordered_map<WireId, delay_t> src_wires;
src_wires[src_wire] = 0;
route(src_wires, dst_wire);
+ routedOkay = visited.count(dst_wire);
}
Router(Context *ctx, IdString net_name, bool ripup = false,
@@ -526,4 +527,13 @@ bool route_design(Context *ctx)
return true;
}
+bool get_actual_route_delay(Context *ctx, WireId src_wire, WireId dst_wire,
+ delay_t &delay)
+{
+ Router router(ctx, src_wire, dst_wire);
+ if (router.routedOkay)
+ delay = router.visited.at(dst_wire).delay;
+ return router.routedOkay;
+}
+
NEXTPNR_NAMESPACE_END
diff --git a/common/route.h b/common/route.h
index 33927f26..af0de42e 100644
--- a/common/route.h
+++ b/common/route.h
@@ -25,6 +25,8 @@
NEXTPNR_NAMESPACE_BEGIN
extern bool route_design(Context *ctx);
+extern bool get_actual_route_delay(Context *ctx, WireId src_wire,
+ WireId dst_wire, delay_t &delay);
NEXTPNR_NAMESPACE_END