AMF-Placer
2.0
An Open-Source Timing-driven Analytical Mixed-size FPGA Placer
|
#include <SAPlacer.h>
Public Member Functions | |
SAPlacer (std::string placerName, std::vector< std::vector< float >> &clusterAdjMat, std::vector< float > &clusterWeights, std::vector< std::vector< float >> &cluster2FixedUnitMat, std::vector< float > &fixedX, std::vector< float > &fixedY, int gridH, int gridW, float deviceH, float deviceW, float connectionToFixedFactor=5.0, float y2xRatio=0.8, int Kmax=100000, int nJobs=1, int restartNum=10, bool verbose=false) | |
~SAPlacer () | |
void | solve () |
std::vector< std::pair< int, int > > & | getCluster2XY () |
std::vector< std::vector< std::vector< int > > > & | getGrid2clusters () |
double | evaluateClusterPlacement (const std::vector< std::vector< std::vector< int >>> &grid2clusters, const std::vector< std::pair< int, int >> &cluster2XY) |
double | incrementalEvaluateClusterPlacement (const std::vector< std::vector< std::vector< int >>> &grid2clusters, const std::vector< std::pair< int, int >> &cluster2XY) |
Private Member Functions | |
void | randomSwapInWideRange (const std::vector< std::vector< std::vector< int >>> &grid2clusters, std::vector< std::vector< std::vector< int >>> &new_Grid2clusters, const std::vector< std::pair< int, int >> &cluster2XY, std::vector< std::pair< int, int >> &new_cluster2XY, float temperature, boost::mt19937 &rng) |
void | randomSwapInWideRangeWithNeighbors (const std::vector< std::vector< std::vector< int >>> &grid2clusters, std::vector< std::vector< std::vector< int >>> &new_Grid2clusters, const std::vector< std::pair< int, int >> &cluster2XY, std::vector< std::pair< int, int >> &new_cluster2XY, float temperature, boost::mt19937 &rng) |
void | randomShuffleRowColumn (const std::vector< std::vector< std::vector< int >>> &grid2clusters, std::vector< std::vector< std::vector< int >>> &new_grid2clusters, const std::vector< std::pair< int, int >> &cluster2XY, std::vector< std::pair< int, int >> &new_cluster2XY, boost::mt19937 &rng) |
float | probabilituFunc (double oriE, double newE, float T) |
void | greedyInitialize (std::vector< std::pair< int, int >> &init_cluster2XY, std::vector< std::vector< std::vector< int >>> &init_grid2clusters, int initOffset) |
void | greedyPlaceACluster (const std::vector< std::pair< int, int >> &init_cluster2XY, const std::vector< std::vector< std::vector< int >>> &init_grid2clusters, std::vector< std::pair< int, int >> &new_cluster2XY, std::vector< std::vector< std::vector< int >>> &new_grid2clusters, int clusterIdToPlace) |
int | greedyFindNextClusterToPlace (std::vector< std::pair< int, int >> &tmp_cluster2XY, std::vector< std::vector< std::vector< int >>> &tmp_grid2clusters) |
Static Private Member Functions | |
static void | worker (SAPlacer *saPlacer, std::vector< std::vector< std::vector< int >>> &init_grid2clusters, std::vector< std::pair< int, int >> &init_cluster2XY, std::vector< std::vector< std::vector< int >>> &opt_grid2clusters, std::vector< std::pair< int, int >> &opt_cluster2XY, int &totalIterNum, int &workers_randomSeed, double &resE) |
Private Attributes | |
std::string | placerName |
std::vector< std::vector< float > > & | clusterAdjMat |
std::vector< float > & | clusterWeights |
std::vector< std::vector< float > > & | cluster2FixedUnitMat |
std::vector< float > & | fixedX |
std::vector< float > & | fixedY |
int | gridH |
int | gridW |
float | deviceH |
float | deviceW |
float | connectionToFixedFactor |
float | y2xRatio |
int | Kmax |
int | nJobs |
int | restartNum |
bool | verbose |
std::vector< std::pair< int, int > > | res_cluster2XY |
std::vector< std::vector< std::vector< int > > > | res_grid2clusters |
double | resE |
double | SACalibrationOffset |
Definition at line 40 of file SAPlacer.h.
|
inline |
Definition at line 43 of file SAPlacer.h.
|
inline |
Definition at line 54 of file SAPlacer.h.
double SAPlacer::evaluateClusterPlacement | ( | const std::vector< std::vector< std::vector< int >>> & | grid2clusters, |
const std::vector< std::pair< int, int >> & | cluster2XY | ||
) |
Definition at line 32 of file SAPlacer.cc.
Referenced by solve(), and worker().
|
inline |
Definition at line 60 of file SAPlacer.h.
Referenced by ClusterPlacer::placeClusters().
|
inline |
Definition at line 64 of file SAPlacer.h.
|
private |
Definition at line 558 of file SAPlacer.cc.
Referenced by greedyInitialize().
|
private |
Definition at line 609 of file SAPlacer.cc.
Referenced by solve().
|
private |
Definition at line 494 of file SAPlacer.cc.
Referenced by greedyInitialize().
double SAPlacer::incrementalEvaluateClusterPlacement | ( | const std::vector< std::vector< std::vector< int >>> & | grid2clusters, |
const std::vector< std::pair< int, int >> & | cluster2XY | ||
) |
Definition at line 89 of file SAPlacer.cc.
Referenced by greedyPlaceACluster().
|
private |
Definition at line 435 of file SAPlacer.cc.
Referenced by worker().
|
private |
Definition at line 402 of file SAPlacer.cc.
Referenced by worker().
|
private |
Definition at line 176 of file SAPlacer.cc.
Referenced by worker().
|
private |
Definition at line 313 of file SAPlacer.cc.
void SAPlacer::solve | ( | ) |
Definition at line 678 of file SAPlacer.cc.
Referenced by ClusterPlacer::placeClusters().
|
staticprivate |
Definition at line 442 of file SAPlacer.cc.
Referenced by solve().
|
private |
Definition at line 81 of file SAPlacer.h.
Referenced by evaluateClusterPlacement(), greedyInitialize(), and incrementalEvaluateClusterPlacement().
|
private |
Definition at line 78 of file SAPlacer.h.
Referenced by evaluateClusterPlacement(), greedyFindNextClusterToPlace(), greedyInitialize(), greedyPlaceACluster(), incrementalEvaluateClusterPlacement(), and solve().
|
private |
Definition at line 79 of file SAPlacer.h.
Referenced by evaluateClusterPlacement(), and incrementalEvaluateClusterPlacement().
|
private |
Definition at line 90 of file SAPlacer.h.
Referenced by evaluateClusterPlacement(), and incrementalEvaluateClusterPlacement().
|
private |
Definition at line 87 of file SAPlacer.h.
Referenced by evaluateClusterPlacement(), and incrementalEvaluateClusterPlacement().
|
private |
Definition at line 88 of file SAPlacer.h.
Referenced by evaluateClusterPlacement(), and incrementalEvaluateClusterPlacement().
|
private |
Definition at line 82 of file SAPlacer.h.
Referenced by evaluateClusterPlacement(), and incrementalEvaluateClusterPlacement().
|
private |
Definition at line 83 of file SAPlacer.h.
Referenced by evaluateClusterPlacement(), and incrementalEvaluateClusterPlacement().
|
private |
Definition at line 85 of file SAPlacer.h.
Referenced by evaluateClusterPlacement(), greedyPlaceACluster(), incrementalEvaluateClusterPlacement(), randomShuffleRowColumn(), randomSwapInWideRange(), randomSwapInWideRangeWithNeighbors(), and solve().
|
private |
Definition at line 86 of file SAPlacer.h.
Referenced by evaluateClusterPlacement(), greedyPlaceACluster(), incrementalEvaluateClusterPlacement(), randomShuffleRowColumn(), randomSwapInWideRange(), randomSwapInWideRangeWithNeighbors(), and solve().
|
private |
Definition at line 92 of file SAPlacer.h.
Referenced by solve().
|
private |
Definition at line 93 of file SAPlacer.h.
Referenced by solve().
|
private |
Definition at line 76 of file SAPlacer.h.
Referenced by solve().
|
private |
Definition at line 97 of file SAPlacer.h.
Referenced by getCluster2XY(), greedyPlaceACluster(), and solve().
|
private |
Definition at line 98 of file SAPlacer.h.
Referenced by getGrid2clusters(), greedyPlaceACluster(), and solve().
|
private |
Definition at line 99 of file SAPlacer.h.
|
private |
Definition at line 94 of file SAPlacer.h.
Referenced by solve().
|
private |
Definition at line 101 of file SAPlacer.h.
Referenced by probabilituFunc(), and solve().
|
private |
Definition at line 95 of file SAPlacer.h.
Referenced by solve().
|
private |
Definition at line 91 of file SAPlacer.h.
Referenced by evaluateClusterPlacement(), and incrementalEvaluateClusterPlacement().