aboutsummaryrefslogtreecommitdiffstats
path: root/common/timing.h
diff options
context:
space:
mode:
authorDavid Shah <dave@ds0.me>2018-12-01 13:43:12 +0000
committerDavid Shah <dave@ds0.me>2018-12-06 10:53:01 +0000
commit2de506c071b090c18977a594efbd6effd0315bf5 (patch)
tree20565f5f9f84a947641944b37a9bf30708d7c06a /common/timing.h
parent83e32775775cc06d0f70a18e2a18089c38ff3c35 (diff)
downloadnextpnr-2de506c071b090c18977a594efbd6effd0315bf5.tar.gz
nextpnr-2de506c071b090c18977a594efbd6effd0315bf5.tar.bz2
nextpnr-2de506c071b090c18977a594efbd6effd0315bf5.zip
timing_opt: Functions to calculate arc delay limits
Signed-off-by: David Shah <dave@ds0.me>
Diffstat (limited to 'common/timing.h')
-rw-r--r--common/timing.h13
1 files changed, 13 insertions, 0 deletions
diff --git a/common/timing.h b/common/timing.h
index 42f928dc..f1d18e8a 100644
--- a/common/timing.h
+++ b/common/timing.h
@@ -32,6 +32,19 @@ void assign_budget(Context *ctx, bool quiet = false);
void timing_analysis(Context *ctx, bool slack_histogram = true, bool print_fmax = true, bool print_path = false,
bool warn_on_failure = false);
+// Data for the timing optimisation algorithm
+struct NetCriticalityInfo
+{
+ // One each per user
+ std::vector<delay_t> slack;
+ std::vector<float> criticality;
+ unsigned max_path_length = 0;
+ delay_t cd_worst_slack = std::numeric_limits<delay_t>::max();
+};
+
+typedef std::unordered_map<IdString, NetCriticalityInfo> NetCriticalityMap;
+void get_criticalities(Context *ctx, NetCriticalityMap *net_crit);
+
NEXTPNR_NAMESPACE_END
#endif