10 #if !defined(PLACE_GORDIAN_H_)
11 #define ABC__phys__place__place_gordian_h
21 #define CLIQUE_PENALTY 1.0
22 #define IGNORE_NETSIZE 20
25 #define LARGEST_FINAL_SIZE 20
26 #define PARTITION_AREA_ONLY true
27 #define REALLOCATE_PARTITIONS false
28 #define FINAL_REALLOCATE_PARTITIONS false
29 #define IGNORE_COG false
30 #define MAX_PARTITION_NONSYMMETRY 0.30
33 #define REPARTITION_LEVEL_DEPTH 4
34 #define REPARTITION_TARGET_FRACTION 0.15
35 #define REPARTITION_FM false
36 #define REPARTITION_HMETIS true
40 #define FM_MAX_PASSES 10
struct Partition * m_sub1
Partition * g_place_rootPartition
void partitionEqualArea(Partition *parent)
Splits a partition into two halves of equal area.
void solveQuadraticProblem(bool useCOG)
Calls quadratic solver.
void reallocPartition(Partition *p)
Reallocates a partition and all of its children.
void partitionScanlineMincut(Partition *parent)
Scans the cells within a partition from left to right and chooses the min-cut.
void repartitionHMetis(Partition *parent)
Repartitions the two subpartitions using the hMetis min-cut library.
struct Partition * m_sub2
int g_place_numPartitions
void repartitionFM(Partition *parent)
Fiduccia-Matheyses mincut partitioning algorithm.
bool refinePartitions()
Splits large leaf partitions.
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
ConcreteCell ** m_members
#define ABC_NAMESPACE_HEADER_END
void incrementalPartition()
Adds new cells to an existing partition. Partition sizes/locations are unchanged. ...
bool refinePartition(Partition *p)
Splits any large leaves within a partition.
void resizePartition(Partition *p)
Recomputes the bounding boxes of the child partitions based on their relative areas.
struct Partition Partition
void constructQuadraticProblem()
Constructs the matrices necessary to do analytical placement.
void reallocPartitions()
Reallocates the partitions based on placement information.
qps_problem_t * g_place_qpProb
void sanitizePlacement()
Moves any cells that are outside of the core bounds to the nearest location within.
void initPartitioning()
Initializes data structures necessary for partitioning.