ABC: A System for Sequential Synthesis and Verification
 
Loading...
Searching...
No Matches
place_gordian.h
Go to the documentation of this file.
1/*===================================================================*/
2//
3// place_gordian.h
4//
5// Aaron P. Hurst, 2003-2007
6// ahurst@eecs.berkeley.edu
7//
8/*===================================================================*/
9
10#if !defined(PLACE_GORDIAN_H_)
11#define ABC__phys__place__place_gordian_h
12
13
14#include "place_base.h"
15#include "place_qpsolver.h"
16
18
19
20// Parameters for analytic placement
21#define CLIQUE_PENALTY 1.0
22#define IGNORE_NETSIZE 20
23
24// Parameters for partitioning
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
31
32// Parameters for re-partitioning
33#define REPARTITION_LEVEL_DEPTH 4
34#define REPARTITION_TARGET_FRACTION 0.15
35#define REPARTITION_FM false
36#define REPARTITION_HMETIS true
37
38// Parameters for F-M re-partitioning
39#define FM_MAX_BIN 10
40#define FM_MAX_PASSES 10
41
42extern int g_place_numPartitions;
43
45
58
60
61void initPartitioning();
62
64
65bool refinePartitions();
70
71void repartitionHMetis(Partition *parent);
72void repartitionFM(Partition *parent);
73
75void partitionEqualArea(Partition *parent);
76
78
80void solveQuadraticProblem(bool useCOG);
81
82
83
85
86#endif
#define ABC_NAMESPACE_HEADER_END
#define ABC_NAMESPACE_HEADER_START
NAMESPACES ///.
Cube * p
Definition exorList.c:222
ABC_NAMESPACE_IMPL_START qps_problem_t * g_place_qpProb
Definition place_genqp.c:28
ABC_NAMESPACE_IMPL_START int g_place_numPartitions
void repartitionHMetis(Partition *parent)
Repartitions the two subpartitions using the hMetis min-cut library.
bool refinePartitions()
Splits large leaf partitions.
void solveQuadraticProblem(bool useCOG)
Calls quadratic solver.
void reallocPartition(Partition *p)
Reallocates a partition and all of its children.
void repartitionFM(Partition *parent)
Fiduccia-Matheyses mincut partitioning algorithm.
Partition * g_place_rootPartition
void partitionEqualArea(Partition *parent)
Splits a partition into two halves of equal area.
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.
void constructQuadraticProblem()
Constructs the matrices necessary to do analytical placement.
Definition place_genqp.c:53
void resizePartition(Partition *p)
Recomputes the bounding boxes of the child partitions based on their relative areas.
void sanitizePlacement()
Moves any cells that are outside of the core bounds to the nearest location within.
void partitionScanlineMincut(Partition *parent)
Scans the cells within a partition from left to right and chooses the min-cut.
bool refinePartition(Partition *p)
Splits any large leaves within a partition.
struct qps_problem qps_problem_t
struct Partition * m_sub1
ConcreteCell ** m_members
struct Partition * m_sub2
bool m_vertical