Program Listing for File tools.h¶
↰ Return to documentation for file (src/partition/tools.h)
#ifndef TOOLS_H
#define TOOLS_H
#include "../modeling/tool.h"
#include "../sta/HSCutNetFlow.h"
#include "../sta/HSPartitionFlow.h"
#include "../sta/HSTimingLocalData.h"
#include "defs.h"
bool floatNumEqual(const float &v1, const float &v2);
bool floatNumLess(const float &v1, const float &v2);
int compute_group_constrain(
const graph &finest,
const unordered_map<string, vector<string>> &group_assignment,
const flat_hash_map<string, int> &name_map, vector<int> &group_map);
bool checkFixTopo(const graph &circuit, const vector<int> &fixed_assign,
const vector<vector<int>> &topology);
double tdm_delay(double tdm_ratio);
void calculateSmallestDelayPaths(const graph &g, const vector<int> &parts,
const fpga &fpgas, vector<vector<double>> &tdm,
vector<vector<vector<int>>> &paths);
void getPinMinslackC(const graph &fine, const int &e,
const vector<int> &hyperedge_cluster_id_vec,
const vector<int> &map,
flat_hash_map<pair<int, int>, pinSlack> &pin_minslack_c);
void readPartitionResult(vector<int> &parts,
const string &partition_result_file);
string formatHierarchyPath(const vector<int> &path);
inline constexpr double kMaxHierarchyResourceSlack = 2.0;
void collectLeafResources(const hierarchy &node, fpga &flat_fpgas);
bool applyLeafResources(hierarchy &node, const vector<VectorXi> &flat_resources,
int &cursor);
vector<bool> getDistributedResourceDims(
const vector<int> &required_resources,
const vector<VectorXi> &full_leaf_resources);
vector<double> computeHierarchySlacks(
const vector<int> &required_resources,
const vector<VectorXi> &full_leaf_resources,
const vector<bool> &distributed_dims);
bool aggregateHierarchyResourcesWithDistributedSlack(
hierarchy &node, int consumed_levels, const vector<bool> &distributed_dims,
const vector<double> &resource_slacks);
void writeHierarchyPartitionArtifacts(
const graph &finest, const hierarchy &hierarchy_root,
const vector<vector<int>> &node_paths,
const vector<HierarchyPartitionCutRecord> &cut_records,
const string &parts_filename, const string &aux_filename);
vector<CutConnection> convertSubConnetsToCutConnections(
const vector<shared_ptr<CONNET>> &subConnets);
bool convertCutNetPathsToSimpleTimings(
const HSFullTiming::HSCutNetFlow &cutNetFlow,
const vector<HSFullTiming::HSCutNetFlow::CutNetTimingPath> &cutNetPaths,
vector<SimpleTiming> &converted);
void evaluatePartitionTimingComparison(const graph &finest, fpga &fpgas,
const vector<int> &parts,
HSFullTiming::HSPartitionFlow &pFlow,
int topk);
#endif