getting microtest to work again (adapting json output)
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 14 Nov 2021 19:40:51 +0000 (19:40 +0000)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Sun, 14 Nov 2021 19:40:51 +0000 (19:40 +0000)
src/jsoncreate.py
src/pinmux_generator.py

index 9af2d8ef40bd5580f64a59fe8ed3464b16699352..da2fb21332b7d60870a799926902ce1ce52903f8 100644 (file)
@@ -9,14 +9,12 @@ def pinparse(psp, pinspec):
     pinmap = {}
     litexmap = {}
 
-    print (p.muxed_cells)
-    print (p.muxed_cells_bank)
+    print ("muxed cells", p.muxed_cells)
+    print ("muxed cell banks", p.muxed_cells_bank)
 
-    ps = [''] * 32
-    pn = [''] * 32
-    pe = [''] * 32
-    pw = [''] * 32
-    pads = {'N': pn, 'S': ps, 'E': pe, 'W': pw}
+    pads = {}
+    for pname, psize in p.bankwidths.items():
+        pads[pname] = [''] * psize
 
     iopads = []
     domains = {}
@@ -24,7 +22,11 @@ def pinparse(psp, pinspec):
 
     n_intpower = 0
     n_extpower = 0
-    for (padnum, name, x), bank in zip(p.muxed_cells, p.muxed_cells_bank):
+    for clist, bank in zip(p.muxed_cells, p.muxed_cells_bank):
+        print ("cell", clist, bank)
+        padnum = clist[0]
+        name = clist[1]
+        x = clist[2]
         orig_name = name
         litex_name = None
         domain = None # TODO, get this from the PinSpec.  sigh
@@ -259,7 +261,7 @@ def pinparse(psp, pinspec):
 
     # not connected
     nc_idx = 0
-    for pl in [pe, pw, pn, ps]:
+    for pl in pads.values():
         for i in range(len(pl)):
             if pl[i] == '':
                 name = 'nc_%d' % nc_idx
@@ -273,14 +275,14 @@ def pinparse(psp, pinspec):
     pprint(psp.clocks)
 
     print()
-    print ("N pads", pn)
-    print ("S pads", ps)
-    print ("E pads", pe)
-    print ("W pads", pw)
+    for name, iopads in pads.items():
+        print ("%s pads" % name, iopads)
 
     # do not want these
-    del clocks['SYS']
-    del domains['SYS']
+    if 'SYS' in clocks:
+        del clocks['SYS']
+    if 'SYS' in domains:
+        del domains['SYS']
 
     print ("chip domains (excluding sys-default)")
     pprint(domains)
@@ -290,10 +292,6 @@ def pinparse(psp, pinspec):
     pprint(psp.byspec)
 
     chip = {
-             'pads.south'      : ps,
-              'pads.east'       : pe,
-              'pads.north'      : pn,
-              'pads.west'       : pw,
               'pads.instances' : iopads,
               'pins.specs' : psp.byspec,
               'pins.map' : pinmap,
@@ -304,4 +302,16 @@ def pinparse(psp, pinspec):
               'chip.n_extpower': n_extpower,
            }
 
+    if 'N' in pads:
+        chip['pads.north'] = pads['N']
+    if 'S' in pads:
+        chip['pads.south'] = pads['S']
+    if 'E' in pads:
+        chip['pads.east'] = pads['E']
+    if 'W' in pads:
+        chip['pads.west'] = pads['W']
+    else:
+        for name, iopads in pads.items():
+            chip['pads.side_%s' % name] = iopads
+
     return pinmap, chip
index aabfa2de734752da61600f0d086915b3a1b572e3..896c3293477bc0f990d1d67643a81e96adcb61c3 100644 (file)
@@ -110,7 +110,7 @@ if __name__ == '__main__':
                 # 'create_sv' will be improved
                 if pinspec == "ngi_router":
                     temp_create_sv("%s/%s.svg" % (pinspec, pinspec), chip)
-                else:
+                if pinspec == "ls180":
                     create_sv("%s/%s.svg" % (pinspec, pinspec), chip)
     else:
         if output_type == 'bsv':