#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 | globalPlace () |
| | Performs analytic placement using a GORDIAN-like algorithm.
|
| |
| void | globalIncremental () |
| | 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.
|
| |
◆ globalIncremental()
| 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.
94 {
96 printf("WARNING: Can not perform incremental placement\n");
98 return;
99 }
100
101 printf("PLAC-10 : Incremental global placement\n");
102
104
105 printf("QMAN-00 : \tconstructing initial quadratic problem...\n");
107
110
111
116}
float getTotalWirelength()
Returns the total HPWL of all nets.
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.
void sanitizePlacement()
Moves any cells that are outside of the core bounds to the nearest location within.
Partition * g_place_rootPartition
void incrementalPartition()
Adds new cells to an existing partition. Partition sizes/locations are unchanged.
◆ globalPlace()
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.
39 {
40 bool completionFlag = false;
41 int iteration = 0;
42
43 printf("PLAC-10 : Global placement (wirelength-driven Gordian)\n");
44
46
47
48 printf("QMAN-00 : \tconstructing initial quadratic problem...\n");
50
51
52 while(!completionFlag) {
54
55
56 printf("QMAN-01 : \t\tglobal optimization\n");
58
59
60
61
62 printf("QMAN-01 : \t\tpartition refinement\n");
65
67
68 iteration++;
69 }
70
71
72 printf("QMAN-02 : \t\tfinal pass\n");
76
77
82}
ABC_NAMESPACE_IMPL_START int g_place_numPartitions
#define REALLOCATE_PARTITIONS
bool refinePartitions()
Splits large leaf partitions.
#define FINAL_REALLOCATE_PARTITIONS
void reallocPartitions()
Reallocates the partitions based on placement information.
void initPartitioning()
Initializes data structures necessary for partitioning.
◆ sanitizePlacement()
| 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.
125 {
126 int c;
128 float x, y,
edge, w, h;
129
130 printf("QCLN-10 : \tsanitizing placement\n");
131
135 continue;
136 }
137
138
140
141 x = cell->
m_x, y = cell->
m_y,
143
147 }
151 }
155 }
159 }
162 }
163}
ConcreteCell ** g_place_concreteCells
ABC_NAMESPACE_IMPL_START int g_place_numCells
◆ g_place_numPartitions