connecting qspi to pinmux
[pinmux.git] / src / parse.py
index 02c9ea94e241f996b803593393cb9af063ddf44e..a233334e51403732194fcdf3efb645ebac76c3f9 100644 (file)
@@ -14,8 +14,8 @@ class Parse(object):
     N_IO = 0
     N_MUX_IO = 0
     Addressing = 'WORD'
-    ADDR_WIDTH = 32
-    DATA_WIDTH = 32
+    ADDR_WIDTH = 32  # TODO parameterise
+    DATA_WIDTH = 32  # TODO parameterise
     # ================ #
 
     # Generating the number of bits for memory map #
@@ -45,13 +45,17 @@ 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:
+                    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)
@@ -61,9 +65,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 +107,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()