Program Listing for File GainEvaluator.h¶
↰ Return to documentation for file (src/partition/refine/engine/GainEvaluator.h)
#ifndef PARTITION_REFINE_ENGINE_GAINEVALUATOR_H_
#define PARTITION_REFINE_ENGINE_GAINEVALUATOR_H_
#include "refine/core/RefineTypes.h"
struct GainEvaluatorContext {
int max_hop;
int large_net_threshold;
double penalty;
vector<vector<int>> &cut_weights;
const fpga &fpgas;
const TimingRefineConfig &timing_cfg;
};
struct CutMatrixResultCore {
double cut_origin = 0.0;
double cut_after = 0.0;
vector<int> cuts_origin_flat;
vector<int> cuts_after_flat;
};
struct GainComponents {
CutMatrixResultCore cm;
int topo_gain = 0;
double io_gain = 0.0;
double cut_gain = 0.0;
};
class GainEvaluatorCore {
public:
static void buildCutMatrices(const GainEvaluatorContext &ctx, int v, int from,
int to, const vector<NetPartition> &partition,
const graph &hgraph, const vector<int> &parts,
CutMatrixResultCore &result);
static bool computeGainComponents(const GainEvaluatorContext &ctx, int v,
int from, int to,
const vector<NetPartition> &partition,
const graph &hgraph,
const vector<int> &parts,
GainComponents &out);
static Gain evaluate(const GainEvaluatorContext &ctx, int v, int from, int to,
const vector<NetPartition> &partition,
const graph &hgraph, vector<int> &parts);
static Gain evaluateParallel(const GainEvaluatorContext &ctx, int v, int from,
int to, const vector<NetPartition> &partition,
const graph &hgraph, vector<int> &parts,
HSFullTiming::HSTimingDelta *delta);
};
#endif