AddingPeripherals.mdwn
[pinmux.git] / src / pinmux_generator.py
index 9512d4d3bf4ce909589e87cd95fb06545d5a4fcc..b95377b4bad5d00485b4ed2c9fac5d56c8305b0a 100644 (file)
@@ -19,9 +19,7 @@
 import getopt
 import os.path
 import sys
-from spec import modules, specgen
-
-from bsv.pinmux_generator import pinmuxgen as bsvgen
+from spec import modules, specgen, dummytest
 
 
 def printhelp():
@@ -43,6 +41,7 @@ if __name__ == '__main__':
             'o:vht:s:',
             ['output=',
              'validate',
+             'test',
              'outputtype=',
              'spec=',
              'help',
@@ -58,6 +57,7 @@ if __name__ == '__main__':
     validate = False
     spec = None
     pinspec = None
+    testing = False
     for opt, arg in options:
         if opt in ('-o', '--output'):
             output_dir = arg
@@ -67,6 +67,8 @@ if __name__ == '__main__':
             output_type = arg
         elif opt in ('-v', '--validate'):
             validate = True
+        elif opt in ('--test',):
+            testing = True
         elif opt in ('-h', '--help'):
             printhelp()
             sys.exit(0)
@@ -77,14 +79,27 @@ if __name__ == '__main__':
             printhelp()
             sys.exit(1)
         module = modules[pinspec]
+
         fname = os.path.join(output_dir or '', "%s.mdwn" % pinspec)
+        d = os.path.split(fname)[0]
+        if not os.path.exists(d):
+            os.makedirs(d)
         with open(fname, "w") as of:
-            pinout, bankspec, pinspec, fixedpins = module.pinspec(of)
-            specgen(of, output_dir, pinout, bankspec, pinspec, fixedpins)
+            ps = module.pinspec()
+            pinout, bankspec, pinspec, fixedpins = ps.write(of)
+            if testing:
+                dummytest(ps, output_dir, output_type)
+            else:
+                specgen(of, output_dir, pinout,
+                        bankspec, ps.muxwidths, pinspec, fixedpins, ps.fastbus)
     else:
-        gentypes = {'bsv': bsvgen}
-        if output_type not in gentypes:
+        if output_type == 'bsv':
+            from bsv.pinmux_generator import pinmuxgen as gentypes
+        elif output_type == 'myhdl':
+            from myhdlgen.pinmux_generator import pinmuxgen as gentypes
+        else:
             print ("ERROR: output type '%s' does not exist" % output_type)
             printhelp()
             sys.exit(0)
-        gentypes[output_type](output_dir, validate)
+
+        gentypes(output_dir, validate)