407314cd8d0153ced36a53150528dbe23c357cac
[pinmux.git] / src / pinmux_generator.py
1 # ================================== Steps to add peripherals ============
2 # Step-1: create interface declaration for the peripheral to be added.
3 # Remember these are interfaces defined for the pinmux and hence
4 # will be opposite to those defined at the peripheral.
5 # For eg. the output TX from the UART will be input (method Action)
6 # for the pinmux.
7 # These changes will have to be done in interface_decl.py
8 # Step-2 define the wires that will be required to transfer data from the
9 # peripheral interface to the IO cell and vice-versa. Create a
10 # mkDWire for each input/output between the peripheral and the
11 # pinmux. Also create an implicit wire of GenericIOType for each cell
12 # that can be connected to a each bit from the peripheral.
13 # These changes will have to be done in wire_def.py
14 # Step-3: create the definitions for each of the methods defined above.
15 # These changes will have to be done in interface_decl.py
16 # ========================================================================
17
18 # default module imports
19 import getopt
20 import os.path
21 import sys
22
23 from bsv.pinmux_generator import pinmuxgen as bsvgen
24
25 def printhelp():
26 print ('''pinmux_generator.py [-o outputdir] [-v|--validate] [-h|--help]
27 [-t outputtype]
28 -t | outputtype : outputtype, defaults to bsv
29 -o outputdir : defaults to bsv_src. also location for reading pinmux.txt
30 interfaces.txt and *.txt
31 -v | --validate : runs some validation on the pinmux
32 -h | --help : this help message
33 ''')
34
35
36 if __name__ == '__main__':
37 try:
38 options, remainder = getopt.getopt(
39 sys.argv[1:],
40 'o:vht:',
41 ['output=',
42 'validate',
43 'outputtype=',
44 'help',
45 'version=',
46 ])
47 except getopt.GetoptError as err:
48 print "ERROR: %s" % str(err)
49 printhelp()
50 sys.exit(1)
51
52 output_type = 'bsv'
53 output_dir = None
54 validate = False
55 for opt, arg in options:
56 if opt in ('-o', '--output'):
57 output_dir = arg
58 elif opt in ('-t', '--outputtype'):
59 output_type = arg
60 elif opt in ('-v', '--validate'):
61 validate = True
62 elif opt in ('-h', '--help'):
63 printhelp()
64 sys.exit(0)
65
66 gentypes = {'bsv': bsvgen}
67 if not gentypes.has_key(output_type):
68 print "ERROR: output type '%s' does not exist" % output_type
69 printhelp()
70 sys.exit(0)
71 gentypes[output_type](output_dir, validate)
72