blob: a959ae50c86dc02cca9c0864b96d32d4b749a1ae (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
|
/*===================================================================*/
//
// place_gordian.h
//
// Aaron P. Hurst, 2003-2007
// ahurst@eecs.berkeley.edu
//
/*===================================================================*/
#if !defined(PLACE_GORDIAN_H_)
#define ABC__phys__place__place_gordian_h
#include "place_base.h"
#include "place_qpsolver.h"
ABC_NAMESPACE_HEADER_START
// Parameters for analytic placement
#define CLIQUE_PENALTY 1.0
#define IGNORE_NETSIZE 20
// Parameters for partitioning
#define LARGEST_FINAL_SIZE 20
#define PARTITION_AREA_ONLY true
#define REALLOCATE_PARTITIONS false
#define FINAL_REALLOCATE_PARTITIONS false
#define IGNORE_COG false
#define MAX_PARTITION_NONSYMMETRY 0.30
// Parameters for re-partitioning
#define REPARTITION_LEVEL_DEPTH 4
#define REPARTITION_TARGET_FRACTION 0.15
#define REPARTITION_FM false
#define REPARTITION_HMETIS true
// Parameters for F-M re-partitioning
#define FM_MAX_BIN 10
#define FM_MAX_PASSES 10
extern int g_place_numPartitions;
extern qps_problem_t *g_place_qpProb;
typedef struct Partition {
int m_numMembers;
ConcreteCell **m_members;
Rect m_bounds;
bool m_done,
m_leaf,
m_vertical;
float m_area;
int m_level;
struct Partition *m_sub1, *m_sub2;
} Partition;
extern Partition *g_place_rootPartition;
void initPartitioning();
void incrementalPartition();
bool refinePartitions();
void reallocPartitions();
bool refinePartition(Partition *p);
void resizePartition(Partition *p);
void reallocPartition(Partition *p);
void repartitionHMetis(Partition *parent);
void repartitionFM(Partition *parent);
void partitionScanlineMincut(Partition *parent);
void partitionEqualArea(Partition *parent);
void sanitizePlacement();
void constructQuadraticProblem();
void solveQuadraticProblem(bool useCOG);
ABC_NAMESPACE_HEADER_END
#endif
|