3 from spec
.interfaces
import Pinouts
6 def specgen(pth
, pinouts
, bankspec
, fixedpins
):
7 """ generates a specification of pinouts (tsv files)
8 for reading in by pinmux
11 #print bankspec.keys()
12 #print fixedpins.keys()
13 if not os
.path
.exists(pth
):
15 with
open(os
.path
.join(pth
, 'interfaces.txt'), 'w') as f
:
16 for k
in pinouts
.fnspec
.keys():
18 f
.write("%s\t%d\n" % (k
.lower(), len(s
)))
19 s0
= s
[s
.keys()[0]] # hack, take first
20 with
open(os
.path
.join(pth
, '%s.txt' % k
.lower()), 'w') as g
:
21 if len(s0
.pingroup
) == 1: # only one function, grouped higher
22 for ks
in s
.keys(): # grouped by interface
23 fntype
= 'inout' # XXX TODO
24 k
= "%s_%s" % (s
[ks
].fname
, s
[ks
].suffix
)
26 g
.write("%s\t%s\n" % (k_
, fntype
))
28 for pinname
in s0
.pingroup
:
29 fntype
= s0
.fntype
.get(pinname
, 'inout')
31 g
.write("%s\t%s\n" % (pn
, fntype
))
36 # truly dreadful way to work out the max mux size...
39 for m
in pinouts
[k
].keys():
40 muxsz
= max(muxsz
, m
+ 1)
42 with
open(os
.path
.join(pth
, 'pinmap.txt'), 'w') as g
:
46 for midx
in range(muxsz
):
47 if pinouts
[k
].has_key(midx
):
48 fname
= pinouts
[k
][midx
][0]
52 res
.append(fname
.lower())
53 g
.write('\t'.join(res
) + '\n')