X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fparse.py;h=16927efa841235a3d27c110def4e7868b9fea02c;hb=febcb1bce0ee80ab7e5f4c496e92009e02e3ef43;hp=02c9ea94e241f996b803593393cb9af063ddf44e;hpb=132e433aada704244aa29e24f3b049f5e64fb5de;p=pinmux.git diff --git a/src/parse.py b/src/parse.py index 02c9ea9..16927ef 100644 --- a/src/parse.py +++ b/src/parse.py @@ -14,8 +14,9 @@ class Parse(object): N_IO = 0 N_MUX_IO = 0 Addressing = 'WORD' - ADDR_WIDTH = 32 - DATA_WIDTH = 32 + ADDR_WIDTH = 64 # TODO parameterise + PADDR_WIDTH = 32 # TODO parameterise + DATA_WIDTH = 64 # TODO parameterise # ================ # # Generating the number of bits for memory map # @@ -45,14 +46,19 @@ class Parse(object): fname = os.path.join(pth, fname) with open(fname) as pinmapfile: for lineno, line in enumerate(pinmapfile): - line1 = line.split() + line1 = line[:-1].split('\t') if len(line1) <= 1: continue self.pinnumbers.append(int(line1[0])) - if len(line1) == 2: # dedicated - self.dedicated_cells.append(line1) - else: - self.muxed_cells.append(line1) + # XXX TODO: dedicated pins in separate file + #if len(line1) == 2: # dedicated + # self.dedicated_cells.append(line1) + #else: + for i in range(1, len(line1)): + # XXX HORRIBLE HACK!! + if line1[i].startswith('pwm'): + line1[i] = 'pwm%s_out' % line1[i][4:] + self.muxed_cells.append(line1) self.pinnumbers = sorted(self.pinnumbers) self.upper_offset = self.lower_offset + \ @@ -61,9 +67,12 @@ class Parse(object): if verify: self.do_checks() + self.cell_bitwidth = self.get_cell_bit_width() + # == user info after parsing ================= # self.N_IO = len(self.dedicated_cells) + len(self.muxed_cells) print("Max number of IO: " + str(self.N_IO)) + print("Muxer bit width: " + str(self.cell_bitwidth)) print("Muxed IOs: " + str(len(self.muxed_cells))) print("Dedicated IOs: " + str(len(self.dedicated_cells))) @@ -100,6 +109,12 @@ class Parse(object): # TODO + def get_cell_bit_width(self): + max_num_cells = 0 + for cell in self.muxed_cells: + max_num_cells = max(len(cell) - 1, max_num_cells) + return int(math.log(max_num_cells + 1, 2)) + if __name__ == '__main__': p = Parse()