-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinitialize.cpp
70 lines (59 loc) · 1.65 KB
/
initialize.cpp
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
#include "initialize.h"
#include "pretreatment.h"
#include "utilities.h"
extern double hpwl;
void initializeNets(void)
{
for (int i = 0; i < design.net_lib.size(); i++){
design.net_lib[i].initializeNet();
design.net_lib[i].initialOneCellNet();
}
}
void initializeBins(void)
{
bin_lib.buildBinLibrary(3, true, 4);
bin_lib2.buildBinLibrary(9, false);
}
void initializeDesign(void)
{
initializeShapes();
initializeBins();
initializeNets();
initialSubRow();
hpwl = findTotalHPWL();
calculatePenalty();
}
void sortCellPins(void)
{
for (int i = 0; i < design.cell_lib.size(); i++){
sort(design.cell_lib.at(i).pins.begin(), design.cell_lib.at(i).pins.begin());
}
}
void initializeShapes(void)
{
Shape curr_shape;
Cell new_cell;
Coor center;
design.original_number_of_cells = design.cell_lib.size();
for (int i = 0; i < design.original_number_of_cells; i++){
if (design.cell_lib[i].getNumShapes() && !design.cell_lib[i].getNI()){
for (int j = 0; j < design.cell_lib[i].getContainSize(); j++){
curr_shape = design.cell_lib[i].getContain(j);
new_cell.initialObjname(curr_shape.Name);
new_cell.initialWidth(curr_shape.width);
new_cell.initialHeight(curr_shape.height);
new_cell.initialTerminal(true);
new_cell.initialNI(false);
new_cell.initialMove(false);
new_cell.initialManyShape(false);
new_cell.initialNumShapes(0);
new_cell.initialArea(curr_shape.width * curr_shape.height);
new_cell.initialLL(curr_shape.ll);
center.x = curr_shape.ll.x + curr_shape.width / 2;
center.y = curr_shape.ll.y + curr_shape.height / 2;
new_cell.initialCenter(center);
design.cell_lib.push_back(new_cell);
}
}
}
}