Program Listing for File TimingMetricService.h

Return to documentation for file (src/partition/refine/pipeline/TimingMetricService.h)

#ifndef PARTITION_REFINE_PIPELINE_TIMINGMETRICSERVICE_H_
#define PARTITION_REFINE_PIPELINE_TIMINGMETRICSERVICE_H_

#include "refine/core/RefineTypes.h"


class TimingMetricService {
 public:
  static vector<vector<float>> buildCutDelayMatrix(const fpga &fpgas,
                                                   int fpga_num,
                                                   float default_cut_delay);

  static void initializeCoarsestLocalData(
      const fpga &fpgas, const graph &coarsest_graph, const graph &origin_graph,
      const vector<int> &map_to_origins,
      const vector<vector<int>> &candidate_parts, int fpga_num,
      vector<Metrics> &metrics, vector<vector<int>> &cut_weights,
      HSFullTiming::HSPartitionFlow &pFlow, float default_cut_delay,
      int thread);

  static void refreshCutDelaysFromTdm(const fpga &fpgas, int fpga_num,
                                      int candidate_count,
                                      HSFullTiming::HSPartitionFlow &pFlow,
                                      int thread);

  static void fillMetricsFromPartitionFlow(HSFullTiming::HSPartitionFlow &pFlow,
                                           vector<Metrics> &metrics);

  static void zeroTimingMetrics(vector<Metrics> &metrics);

  static vector<double> cutTimingCostAll(
      const vector<vector<float>> &candidate_paths_costs,
      const vector<vector<int>> &candidate_parts, const graph &g, int fpga_num,
      const vector<Metrics> &metric);

  static vector<float> getWorstSlacks(
      bool has_timing_tdm, const fpga &fpgas, graph &hgraph,
      const vector<vector<int>> &candidate_parts, const int &guardband_flag,
      const int &has_timing_propogate,
      const shared_ptr<curPartStatus> &mulClock_status,
      HSFullTiming::HSPartitionFlow &pFlow,
      const vector<float> &candidate_worst_slacks);

  static int getMaxHop(flat_hash_map<pair<int, int>, pinSlack> &pin_minslack,
                       const vector<int> &parts);
};

#endif