put pinbank and mux widths into pinmap.txt
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Tue, 31 Jul 2018 06:52:12 +0000 (07:52 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Tue, 31 Jul 2018 06:52:12 +0000 (07:52 +0100)
src/spec/gen.py

index 96843ce11764d34f795d20fe3557f5486ce1beca..81226b305b4595ecc50d2f560f83fae602dbab97 100644 (file)
@@ -57,18 +57,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]: