AMF-Placer
2.0
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
Go to the documentation of this file.
25 #ifndef _GRAPHPARTITIONER
26 #define _GRAPHPARTITIONER
35 #include <semaphore.h>
42 #define MULTIPROCESS_PARITION
67 for (
int tid = 0; tid < jobs; tid++)
81 void solve(
int eachClusterDSPNum,
int eachClusterBRAMNum);
105 for (
auto id : tmpCluster)
124 int eachClusterBRAMNum);
137 unsigned minCutBipartition(
const std::vector<int> &inputCluster, std::array<std::vector<int>, 2> &outputClusters,
139 int eachClusterBRAMNum);
189 #ifdef MULTIPROCESS_PARITION
GraphPartitioner(NodeList &nodeList, NetList &netList, int minClusterCellNum, int jobs, bool verbose)
Construct a new Graph Partitioner object.
const std::vector< std::vector< int > > & getClusters()
Get the clusters after partitioning (each is a vector containing ids for nodes inside the clusters)
const std::vector< std::set< int > > & getClustersPUIdSets()
Get the clusters after partitioning (each is a set containing ids for nodes inside the clusters)
std::vector< std::vector< int > > clusters
the resultant clusters (vectors) after partitioning
GraphPartitioner will recursively bi-partition the netlist (which could be netlist of clusters) based...
static void recursiveMinCutPartition(std::vector< int > &inputCluster, GraphPartitioner< NodeList, NetList > *graphPartitioner, int eachClusterDSPNum, int eachClusterBRAMNum)
a recursive function which will recursively bi-partition the input cluster into two based on connecti...
sem_t partitionSem
used to limit the number of processes for the parallel partitioning
unsigned minCutBipartition(const std::vector< int > &inputCluster, std::array< std::vector< int >, 2 > &outputClusters, GraphPartitioner< NodeList, NetList > *graphPartitioner, int eachClusterDSPNum, int eachClusterBRAMNum)
the actual function to call partitioner to conduct partitioning with given clusters and parameters
void sortClustersBySize()
sort clusters by sizes to fix the output clusters' order for later processing and avoid the random fa...
void solve(int eachClusterDSPNum, int eachClusterBRAMNum)
a caller which will start the partitioning procedure
unsigned int minClusterCellNum
This header file mainly contains the definition of class PlacementInfo, including information related...
std::vector< std::set< int > > ClusterPUIdSets
the resultant clusters (set) after partitioning
This header file contains the definitions of ExternalProcessFunc class and its internal modules and A...
void setMaxCutRate(double _maxCutRate)
Set the max mincut rate.