Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / src / nas,5.n2.os.2 / pfe / Pfe_SymbolTbl.py
CommitLineData
86530b38
AT
1
2class Pfe_SymbolTbl:
3 def __init__ (self):
4 self.id_pa = {}
5 self.id_ra = {}
6 self.id_va = {}
7 self.pa_id = []
8 self.ra_id = []
9 self.va_id = []
10
11
12 def load(self,filename):
13 file = open(filename)
14
15 for line in file:
16 id,va,ra,pa = line.split()
17
18 if not (ra in 'Xx'):
19 ra = eval('0x'+ra)
20 self.id_ra[id] = ra
21 self.ra_id.append((ra,id))
22
23 va = eval('0x'+va)
24 self.id_va[id] = va
25 self.va_id.append((va,id))
26
27 pa = eval('0x'+pa)
28 self.id_pa[id] = pa
29 self.pa_id.append((pa,id))
30
31 file.close()
32
33 self.pa_id.sort()
34 self.ra_id.sort()
35 self.va_id.sort()
36
37
38 def id2pa(self,id):
39 if self.id_pa.has_key(id):
40 return self.id_pa[id]
41 else:
42 return None
43
44 def id2ra(self,id):
45 if self.id_ra.has_key(id):
46 return self.id_ra[id]
47 else:
48 return None
49
50 def id2va(self,id):
51 if self.id_va.has_key(id):
52 return self.id_va[id]
53 else:
54 return None
55
56
57 def pa2id(self,pa):
58 ea_id = self.__find__(self.pa_id,pa)
59 if ea_id:
60 return ea_id[1]
61 return None
62
63 def ra2id(self,ra):
64 ea_id = self.__find__(self.ra_id,ra)
65 if ea_id:
66 return ea_id[1]
67 return None
68
69 def va2id(self,va):
70 ea_id = self.__find__(self.va_id,va)
71 if ea_id:
72 return ea_id[1]
73 return None
74
75
76 def pa2id_ofs(self,pa):
77 ea_id = self.__find__(self.pa_id,pa)
78 if ea_id:
79 ea,id = ea_id
80 return (id,pa - ea)
81 return None
82
83 def ra2id_ofs(self,ra):
84 ea_id = self.__find__(self.ra_id,ra)
85 if ea_id:
86 ea,id = ea_id
87 return (id,ra - ea)
88 return None
89
90 def va2id_ofs(self,va):
91 ea_id = self.__find__(self.va_id,va)
92 if ea_id:
93 ea,id = ea_id
94 return (id,va - ea)
95 return None
96
97 def __find__(self,list,ea):
98 l = 0
99 u = len(list)
100 m = u >> 1
101 while l != m:
102 if ea < list[m][0]:
103 u = m
104 else:
105 l = m
106 m = l + ((u - l) >> 1)
107 return list[m]
108
109
110