Class TimingMetricService

Class Documentation

class TimingMetricService

时序指标服务,负责延迟矩阵构建、TDM 状态刷新与指标汇总。

Public Static Functions

static vector<vector<float>> buildCutDelayMatrix(const fpga &fpgas, int fpga_num, float default_cut_delay)

根据 FPGA 连接关系构建分区间割边延迟矩阵。

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)

V-Cycle 首次展开时,初始化最粗层解的时序评估数据。

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

从 TDM 分配结果刷新分区间割边延迟。

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

从 pFlow 提取 MaxHop、Slack 等时序指标写入 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)

为多个候选解计算各自的最差 slack。

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

计算全局最大跳步链路长(如连续穿过 4 块 FPGA 即为 3-hop)。