vendor.lattice_ice40: never place an inverter on global buffer output.
authorwhitequark <cz@m-labs.hk>
Fri, 14 Jun 2019 20:44:02 +0000 (20:44 +0000)
committerwhitequark <cz@m-labs.hk>
Fri, 14 Jun 2019 20:44:02 +0000 (20:44 +0000)
This would make `pin.i` not a global network anymore, which is likely
undesirable if an explicit Attrs(GLOBAL=1) is specified.

nmigen/vendor/lattice_ice40.py

index 67bc556cb0290ba3d20cde5a2dbe89551c87c378..da68c079e2ff39bafab6b3e920f8d116f33de710 100644 (file)
@@ -164,6 +164,7 @@ class LatticeICE40Platform(TemplatedPlatform):
             del attrs["GLOBAL"]
         else:
             is_global_input = False
+        assert not (is_global_input and i_invert)
 
         if "i" in pin.dir:
             if pin.xdr < 2:
@@ -222,7 +223,7 @@ class LatticeICE40Platform(TemplatedPlatform):
 
             if "i" in pin.dir:
                 if pin.xdr == 0 and is_global_input:
-                    io_args.append(("o", "GLOBAL_BUFFER_OUTPUT", pin_i[bit]))
+                    io_args.append(("o", "GLOBAL_BUFFER_OUTPUT", pin.i[bit]))
                 elif pin.xdr < 2:
                     io_args.append(("o", "D_IN_0",  pin_i[bit]))
                 elif pin.xdr == 2: