X-Git-Url: https://git.libre-soc.org/?a=blobdiff_plain;f=src%2Fspec%2Fgen.py;h=492ba535074087c93ffb4a8d879082ba6b2c64d7;hb=c492bfb3a86f01e770414f52c1f5884c1bc80cea;hp=e1dc561111b6ffa425aed312ebb30e5b2cc4877c;hpb=a22060150434ffa88cc7b977d24c3cef26940da7;p=pinmux.git diff --git a/src/spec/gen.py b/src/spec/gen.py index e1dc561..492ba53 100644 --- a/src/spec/gen.py +++ b/src/spec/gen.py @@ -1,10 +1,11 @@ import os +import json import os.path from spec.interfaces import Pinouts def specgen(of, pth, pinouts, bankspec, muxwidths, pinbanks, fixedpins, - fastbus): + configs): """ generates a specification of pinouts (tsv files) for reading in by pinmux. @@ -29,16 +30,13 @@ def specgen(of, pth, pinouts, bankspec, muxwidths, pinbanks, fixedpins, #print pinouts.ganged.items() if not os.path.exists(pth): os.makedirs(pth) - with open(os.path.join(pth, 'muxwidths.txt'), 'w') as f: - for k, v in pinouts.muxwidths.items(): - f.write("%s\t%d\n" % (k, v)) + with open(os.path.join(pth, 'configs.txt'), 'w') as f: + f.write("%s\n" % json.dumps(configs)) + with open(os.path.join(pth, 'interfaces.txt'), 'w') as f: for k in pinouts.fnspec.keys(): s = pinouts.fnspec[k] line = [k.lower(), str(len(s))] - for b in fastbus: - if b.startswith(k.lower()): - line.append(b) line = '\t'.join(line) f.write("%s\n" % line) s0 = s[list(s.keys())[0]] # hack, take first @@ -60,18 +58,34 @@ def specgen(of, pth, pinouts, bankspec, muxwidths, pinbanks, fixedpins, g.write("\tbus") g.write("\n") + # work out range of bankspecs + bankpins = [] + for k, v in bankspec.items(): + bankpins.append((v, k)) + bankpins.sort() + bankpins.reverse() + muxentries = {} + cellbank = {} + pks = sorted(pinouts.keys()) # truly dreadful way to work out the max mux size... - muxsz = 0 for k in pks: - for m in pinouts[k].keys(): - muxsz = max(muxsz, m + 1) + for (sz, bname) in bankpins: + print "keys", k, sz, bname + if k >= sz: + print "found", bname + muxentries[k] = muxwidths[bname] + cellbank[k] = bname + break + print muxentries # write out the mux... with open(os.path.join(pth, 'pinmap.txt'), 'w') as g: for k in pks: - res = [str(k)] + muxsz = muxentries[k] + bank = cellbank[k] + res = [str(k), bank, str(muxsz)] # append pin mux for midx in range(muxsz): if midx in pinouts[k]: