#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <assert.h>
#include <limits.h>
#include "place_gordian.h"
#include "place_base.h"
Go to the source code of this file.
void globalIncremental |
( |
| ) |
|
Performs analytic placement using a GORDIAN-like algorithm.
Requires a valid set of partitions.
Definition at line 94 of file place_gordian.c.
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");
Partition * g_place_rootPartition
void constructQuadraticProblem()
Constructs the matrices necessary to do analytical placement.
void globalFixDensity(int numBins, float maxMovement)
Doesn't deal well with fixed cells in the core area.
float getTotalWirelength()
Returns the total HPWL of all nets.
void incrementalPartition()
Adds new cells to an existing partition. Partition sizes/locations are unchanged. ...
void globalPlace()
Performs analytic placement using a GORDIAN-like algorithm.
void sanitizePlacement()
Moves any cells that are outside of the core bounds to the nearest location within.
void solveQuadraticProblem(bool useCOG)
Calls quadratic solver.
Performs analytic placement using a GORDIAN-like algorithm.
Updates the positions of all non-fixed non-pad cells.
Definition at line 39 of file place_gordian.c.
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");
ABC_NAMESPACE_IMPL_START int g_place_numPartitions
#define REALLOCATE_PARTITIONS
void constructQuadraticProblem()
Constructs the matrices necessary to do analytical placement.
#define FINAL_REALLOCATE_PARTITIONS
void globalFixDensity(int numBins, float maxMovement)
Doesn't deal well with fixed cells in the core area.
bool refinePartitions()
Splits large leaf partitions.
float getTotalWirelength()
Returns the total HPWL of all nets.
void sanitizePlacement()
Moves any cells that are outside of the core bounds to the nearest location within.
void reallocPartitions()
Reallocates the partitions based on placement information.
void solveQuadraticProblem(bool useCOG)
Calls quadratic solver.
void initPartitioning()
Initializes data structures necessary for partitioning.
void sanitizePlacement |
( |
| ) |
|
Moves any cells that are outside of the core bounds to the nearest location within.
Definition at line 125 of file place_gordian.c.
128 float x, y, edge, w, h;
130 printf(
"QCLN-10 : \tsanitizing placement\n");
141 x = cell->
m_x, y = cell->
m_y,
ConcreteCell ** g_place_concreteCells
ABC_NAMESPACE_IMPL_START int g_place_numCells