vendor.intel: fix output enable width for XDR=0 case.
authorschwigi <48810576+schwigi@users.noreply.github.com>
Thu, 9 Jan 2020 10:09:35 +0000 (11:09 +0100)
committerwhitequark <cz@m-labs.hk>
Thu, 9 Jan 2020 10:09:35 +0000 (10:09 +0000)
Fixes #297.

nmigen/vendor/intel.py

index bc6e9b4ceea26d75256d34985b238e5e158abc3d..7ff366dc57ec673419dea93af2e710c282cda781 100644 (file)
@@ -221,8 +221,9 @@ class IntelPlatform(TemplatedPlatform):
 
     @staticmethod
     def _get_oereg(m, pin):
+        # altiobuf_ requires an output enable signal for each pin, but pin.oe is 1 bit wide.
         if pin.xdr == 0:
-            return pin.oe
+            return Repl(pin.oe, pin.width)
         elif pin.xdr in (1, 2):
             oe_reg = Signal(pin.width, name="{}_oe_reg".format(pin.name))
             oe_reg.attrs["useioff"] = "1"
@@ -283,7 +284,7 @@ class IntelPlatform(TemplatedPlatform):
             p_use_oe="TRUE",
             i_datain=self._get_oreg(m, pin, invert),
             o_dataout=port,
-            i_oe=pin.oe,
+            i_oe=self._get_oereg(m, pin)
         )
         return m