mux selection lines for a IO should be log of the number of muxes.
authorNeel <neelgala@gmail.com>
Tue, 13 Mar 2018 12:06:03 +0000 (17:36 +0530)
committerNeel <neelgala@gmail.com>
Tue, 13 Mar 2018 12:06:03 +0000 (17:36 +0530)
src/pinmux_generator.py

index 0de361f180501b82218acb0ec2ea9f1050995c67..06c45ac67f21c2e1ca96ae8fd9b9ba7ac9c6a53d 100644 (file)
@@ -19,6 +19,7 @@
 import os
 import sys
 import time
+import math
 
 # project module imports
 from interface_decl import *
@@ -75,7 +76,8 @@ bsv_file.write('''
       // where each IO will have the same number of muxes.''')
 
 for cell in muxed_cells:
-    bsv_file.write(mux_interface.format(cell[0], len(cell) - 1))
+    bsv_file.write(mux_interface.format(cell[0],
+                                        int(math.log(len(cell) - 1, 2))))
 
 bsv_file.write('''
 
@@ -118,7 +120,7 @@ bsv_file.write('''
       // values for each mux assigned to a CELL
 ''')
 for cell in muxed_cells:
-    bsv_file.write(muxwire.format(cell[0], len(cell) - 1))
+    bsv_file.write(muxwire.format(cell[0], int(math.log(len(cell) - 1, 2))))
 
 
 bsv_file.write(
@@ -156,7 +158,8 @@ bsv_file.write('''
 # ====================================================================
 # ================= interface definitions for each method =============#
 for cell in muxed_cells:
-    bsv_file.write(mux_interface_def.format(cell[0], len(cell) - 1))
+    bsv_file.write(mux_interface_def.format(cell[0],
+                                            int(math.log(len(cell) - 1, 2))))
 for i in range(0, N_IO):
     bsv_file.write(io_interface_def.format(i))
 for i in range(0, N_UART):