fix dedicated outputs, hard-code enable line to 1
authorLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 2 Aug 2018 06:36:29 +0000 (07:36 +0100)
committerLuke Kenneth Casson Leighton <lkcl@lkcl.net>
Thu, 2 Aug 2018 06:36:29 +0000 (07:36 +0100)
src/bsv/actual_pinmux.py
src/bsv/pinmux_generator.py

index 7156fd154af5d8edbadbfbcdad481f6e309568bf..e7f83e3d40e1ffab6d4ae56ac028d0ac5877d336 100644 (file)
@@ -55,6 +55,10 @@ def fmt(ifaces, cells, idx, suffix=None):
         multiple pads be switched simutaneously to outputs
         by setting the GPIO direction rather than having them
         set arbitrarily by changing the muxer registers.
+
+        The exception to this rule is when the muxer width is 1
+        (i.e. it is a dedicated line).  Then, a "1" is outputted
+        and the pin is PERMANENTly enabled as an output.
     """
     idx += 1
     if idx < len(cells):
@@ -69,6 +73,8 @@ def fmt(ifaces, cells, idx, suffix=None):
     if x == 'input':
         return 'val0'  # inputs don't get passed through to the out mux
     if suffix == '_outen' and x == 'out':
+        if len(cells) == 2:
+            return "val1"
         return "wr%s%s" % (cells[1], suffix or '')  # USE GPIO FOR SELECTION
     if x == 'out':  # sigh hack, should be using interface_decl
         suffix = ''
index 64ab8851b071b8fc8bb64a945056d1fd96f4f2f0..9890f3f007514596009e5e75cfd278c79800eac0 100644 (file)
@@ -294,6 +294,7 @@ def write_pmp(pmp, p, ifaces, iocells):
         bsv_file.write('''
       /*====== This where the muxing starts for each io-cell======*/
       Wire#(Bit#(1)) val0<-mkDWire(0); // need a zero
+      Wire#(Bit#(1)) val1<-mkDWire(1); // need a one
 ''')
         bsv_file.write(p.pinmux)
         bsv_file.write('''