40 bool completionFlag =
false;
43 printf(
"PLAC-10 : Global placement (wirelength-driven Gordian)\n");
48 printf(
"QMAN-00 : \tconstructing initial quadratic problem...\n");
52 while(!completionFlag) {
56 printf(
"QMAN-01 : \t\tglobal optimization\n");
62 printf(
"QMAN-01 : \t\tpartition refinement\n");
72 printf(
"QMAN-02 : \t\tfinal pass\n");
96 printf(
"WARNING: Can not perform incremental placement\n");
101 printf(
"PLAC-10 : Incremental global placement\n");
105 printf(
"QMAN-00 : \tconstructing initial quadratic problem...\n");
128 float x, y, edge, w, h;
130 printf(
"QCLN-10 : \tsanitizing placement\n");
141 x = cell->
m_x, y = cell->
m_y,
#define ABC_NAMESPACE_IMPL_START
#define ABC_NAMESPACE_IMPL_END
float getTotalWirelength()
Returns the total HPWL of all nets.
ConcreteCell ** g_place_concreteCells
ABC_NAMESPACE_IMPL_START int g_place_numCells
void globalFixDensity(int numBins, float maxMovement)
Doesn't deal well with fixed cells in the core area.
void solveQuadraticProblem(bool useCOG)
Calls quadratic solver.
void constructQuadraticProblem()
Constructs the matrices necessary to do analytical placement.
void globalPlace()
Performs analytic placement using a GORDIAN-like algorithm.
ABC_NAMESPACE_IMPL_START int g_place_numPartitions
void sanitizePlacement()
Moves any cells that are outside of the core bounds to the nearest location within.
void globalIncremental()
Performs analytic placement using a GORDIAN-like algorithm.
#define REALLOCATE_PARTITIONS
bool refinePartitions()
Splits large leaf partitions.
Partition * g_place_rootPartition
#define FINAL_REALLOCATE_PARTITIONS
void reallocPartitions()
Reallocates the partitions based on placement information.
void initPartitioning()
Initializes data structures necessary for partitioning.
void incrementalPartition()
Adds new cells to an existing partition. Partition sizes/locations are unchanged.