forked from pku-dasys/cocoon
-
Notifications
You must be signed in to change notification settings - Fork 0
/
util.py
100 lines (79 loc) · 2.86 KB
/
util.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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
import os
home_path = os.getcwd()
#print(home_path)
def getHDL(design):
return design.rtl_file
def getLib(design):
return design.lib_file
def getLef(design):
return design.lef_file
def getMmmc(design):
return design.mmmc_file
def getHDLPath(design, baseflow):
if baseflow == "Cadence":
hdl_path = home_path + "/data/" + design.top_name + "/hdl"
elif baseflow == "Yosys":
hdl_path = home_path + "/data/" + design.top_name + "/hdl"
return hdl_path
def getLibPath(design, baseflow):
if baseflow == "Cadence":
lib_path = home_path + "/data/lib"
elif baseflow == "Yosys":
lib_path = home_path + "/data/lib"
return lib_path
def getLefPath(design, baseflow):
if baseflow == "Cadence":
lef_path = home_path + "/data/lib"
elif baseflow == "Yosys":
lef_path = ""
return lef_path
def getRptPath(design, baseflow):
rpt_path = home_path + "/data/" + design.top_name + "/" + design.lib_name + "/reports"
if baseflow == "Cadence":
rpt_path = home_path + "/data/" + design.top_name + "/" + design.lib_name + "/reports"
elif baseflow == "Yosys":
rpt_path = home_path + "/data/" + design.top_name + "/" + design.lib_name + "/reports"
return rpt_path
def getObjPath(design, baseflow):
if baseflow == "Cadence":
obj_path = home_path + "/data/" + design.top_name + "/" + design.lib_name + "/objects"
elif baseflow == "Yosys":
obj_path = home_path + "/data/" + design.top_name + "/" + design.lib_name + "/objects"
return obj_path
def getScriptPath(design, baseflow):
if baseflow == "Cadence":
script_path = home_path + "/data/" + design.top_name + "/" + design.lib_name + "/scripts"
elif baseflow == "Yosys":
script_path = home_path + "/data/" + design.top_name + "/" + design.lib_name + "/scripts"
return script_path
def getRunPath(design, baseflow):
if baseflow == "Cadence":
run_path = home_path + "/data/" + design.top_name + "/" + design.lib_name + "/run"
elif baseflow == "Yosys":
run_path = home_path + "/data/" + design.top_name + "/" + design.lib_name + "/run"
return run_path
def getResult(design, optFunc, baseFlow):
if optFunc == "Timing":
rpt = getRptPath(design, baseFlow)
res = rpt + "/timing.rpt"
res = 1000
return res
def evaluate(ckpt_list, optFunc, baseFlow):
idx = None
res = 1000000
for ckpt in ckpt_list:
tmp = getResult(ckpt, optFunc, baseFlow)
if tmp < res:
res = tmp
idx = ckpt
return idx
def pull(ckpt):
pass
def push(ckpt):
pass
def getCheckpoint(file_path):
# read checkpoint from path
return file_path
def saveCheckpoint(ckpt, file_path):
# save checkpoint to path
pass