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