add spec generation
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 23 Mar 2018 23:07:13 +0000 (23:07 +0000)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Fri, 23 Mar 2018 23:07:13 +0000 (23:07 +0000)
src/pinmux_generator.py
src/spec/__init__.py
src/spec/gen.py [new file with mode: 0644]
src/spec/m_class.py

index a5e381adbd7143c9987d1c564090be5da355b720..8d36f1c113a4ebb80d69b68cb11f0d6596d2ec50 100644 (file)
@@ -19,6 +19,7 @@
 import getopt
 import os.path
 import sys
+from spec import modules, specgen
 
 from bsv.pinmux_generator import pinmuxgen as bsvgen
 
@@ -38,10 +39,11 @@ if __name__ == '__main__':
     try:
         options, remainder = getopt.getopt(
             sys.argv[1:],
-            'o:vht:',
+            'o:vht:s:',
             ['output=',
              'validate',
              'outputtype=',
+             'spec=',
              'help',
              'version=',
              ])
@@ -53,9 +55,12 @@ if __name__ == '__main__':
     output_type = 'bsv'
     output_dir = None
     validate = False
+    spec = None
     for opt, arg in options:
         if opt in ('-o', '--output'):
             output_dir = arg
+        elif opt in ('-s', '--spec'):
+            pinspec = arg
         elif opt in ('-t', '--outputtype'):
             output_type = arg
         elif opt in ('-v', '--validate'):
@@ -64,9 +69,18 @@ if __name__ == '__main__':
             printhelp()
             sys.exit(0)
 
-    gentypes = {'bsv': bsvgen}
-    if not gentypes.has_key(output_type):
-        print "ERROR: output type '%s' does not exist" % output_type
-        printhelp()
-        sys.exit(0)
-    gentypes[output_type](output_dir, validate)
+    if pinspec:
+        if not modules.has_key(pinspec):
+            print "ERROR: spec type '%s' does not exist" % pinspec
+            printhelp()
+            sys.exit(1)
+        module = modules[pinspec]
+        pinout, bankspec, fixedpins = module.pinspec()
+        specgen(output_dir, pinout, bankspec, fixedpins)
+    else:
+        gentypes = {'bsv': bsvgen}
+        if not gentypes.has_key(output_type):
+            print "ERROR: output type '%s' does not exist" % output_type
+            printhelp()
+            sys.exit(0)
+        gentypes[output_type](output_dir, validate)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..3a0a257453ac1007460c885dfe3c86e6223dccb0 100644 (file)
@@ -0,0 +1,9 @@
+import m_class
+import c_class
+from gen import specgen
+
+modules = {'m_class': m_class,
+           'c_class': c_class
+          }
+
+
diff --git a/src/spec/gen.py b/src/spec/gen.py
new file mode 100644 (file)
index 0000000..af42d42
--- /dev/null
@@ -0,0 +1,2 @@
+def specgen(pinouts, bankspec, fixedpins):
+    return
index 0d9d2b4b82bc607a552c2ef635a23f5cc3e0cddc..6afee673302d8ced5bc8c5a8295e91b3ce5717e0 100644 (file)
@@ -2,7 +2,8 @@
 
 from interfaces import jtag, uart, ulpi, uartfull, rgbttl, rgmii
 from interfaces import flexbus1, flexbus2, sdram1, sdram2, mcu8080
-from interfaces import eint, pwm, gpio
+from interfaces import eint, pwm, gpio, spi, i2c, emmc, sdmmc
+from interfaces import quadspi, i2s
 from interfaces import display, display_fns, check_functions
 from interfaces import pinmerge, display_fixed