-
Notifications
You must be signed in to change notification settings - Fork 0
/
benchmarkModifier.py
75 lines (72 loc) · 3.79 KB
/
benchmarkModifier.py
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
def read(grfile):
file = open(grfile,'r')
grid_info = {}
i = 0
for line in file:
if not line.strip():
continue
else:
grid_info[i]= line.split()
i += 1
file.close()
return grid_info
# Parsing input data()
def gridParameters(grid_info):
gridParameters = {}
gridParameters['gridSize'] = [int(grid_info[0][1]),int(grid_info[0][2]),int(grid_info[0][3])]
gridParameters['verticalCapacity'] = [float(grid_info[1][2]),float(grid_info[1][3])]
gridParameters['horizontalCapacity'] = [float(grid_info[2][2]), float(grid_info[2][3])]
gridParameters['minWidth'] = [float(grid_info[3][2]), float(grid_info[3][3])]
gridParameters['minSpacing'] = [float(grid_info[4][2]), float(grid_info[4][3])]
gridParameters['viaSpacing'] = [float(grid_info[5][2]), float(grid_info[5][3])]
gridParameters['Origin'] = [float(grid_info[6][0]), float(grid_info[6][1])]
gridParameters['tileWidth'] = float(grid_info[6][2]); gridParameters['tileHeight'] = float(grid_info[6][3])
gridParameters['reducedCapacitySpecify'] = {}
for lineNum in range(len(grid_info)):
if 'num' in grid_info[lineNum]:
gridParameters['numNet'] = int(grid_info[lineNum][2])
netNum = 0
pinEnumerator = 1; lineEnumerator = 8
netParametersStore = []
for lineNum in range(7,len(grid_info)):
if 'A' in grid_info[lineNum][0]:
netParameters = {}
netParameters['netName'] = grid_info[lineNum][0]
netParameters['netID'] = int(grid_info[lineNum][1])
netParameters['numPins'] = int(grid_info[lineNum][2])
netParameters['minWidth'] = float(grid_info[lineNum][3])
pinNum = 1
while ('A' not in grid_info[lineNum+pinNum][0]) and (len(grid_info[lineNum+pinNum])>1):
netParameters[str(pinNum)] = [int(grid_info[lineNum+pinNum][0]),int(grid_info[lineNum+pinNum][1]),
int(grid_info[lineNum+pinNum][2])]
pinNum += 1
gridParameters['reducedCapacity'] = grid_info[lineNum+pinNum]
pinEnumerator = pinNum
lineEnumerator = lineNum + pinNum + 1
netParametersStore.append(netParameters)
if ('n' in grid_info[lineNum][0])and (grid_info[lineNum][0] != 'num'):
netParameters = {}
netParameters['netName'] = grid_info[lineNum][0]
netParameters['netID'] = int(grid_info[lineNum][1])
netParameters['numPins'] = int(grid_info[lineNum][2])
netParameters['minWidth'] = float(grid_info[lineNum][3])
pinNum = 1
while ('n' not in grid_info[lineNum+pinNum][0]) and (len(grid_info[lineNum+pinNum])>1):
netParameters[str(pinNum)] = [int(grid_info[lineNum+pinNum][0]),int(grid_info[lineNum+pinNum][1]),
int(grid_info[lineNum+pinNum][2])]
pinNum += 1
gridParameters['reducedCapacity'] = grid_info[lineNum+pinNum]
pinEnumerator = pinNum
lineEnumerator = lineNum + pinNum + 1
netParametersStore.append(netParameters)
gridParameters['netInfo'] = netParametersStore
# Parsing adjustments depicting reduced capacity (override layer specification)
i = 1
for lineNum in range(lineEnumerator, len(grid_info)):
reducedEdge = [int(grid_info[lineNum][0]),int(grid_info[lineNum][1]),int(grid_info[lineNum][2]),
int(grid_info[lineNum][3]),int(grid_info[lineNum][4]),int(grid_info[lineNum][5]),
int(grid_info[lineNum][6])]
gridParameters['reducedCapacitySpecify'][str(i)] = reducedEdge
# grid_info[lineNum]
i += 1
return gridParameters