-altera_special_overrides = {}
+from migen.fhdl.std import (Instance, Module)
+from migen.genlib.io import (DifferentialInput, DifferentialOutput)
+
+
+__all__ = ['altera_special_overrides']
+
+
+class QuartusDifferentialInputImpl(Module):
+ def __init__(self, i_p, i_n, o):
+ self.specials += Instance("ALT_INBUF_DIFF",
+ name='ibuf_diff',
+ i_i=i_p,
+ i_ibar=i_n,
+ o_o=o)
+
+
+class QuartusDifferentialInput:
+ @staticmethod
+ def lower(dr):
+ return QuartusDifferentialInputImpl(dr.i_p, dr.i_n, dr.o)
+
+
+class QuartusDifferentialOutputImpl(Module):
+ def __init__(self, i, o_p, o_n):
+ self.specials += Instance("ALT_OUTBUF_DIFF",
+ name='obuf_diff',
+ i_i=i,
+ o_o=o_p,
+ o_obar=o_n)
+
+
+class QuartusDifferentialOutput:
+ @staticmethod
+ def lower(dr):
+ return QuartusDifferentialOutputImpl(dr.i, dr.o_p, dr.o_n)
+
+altera_special_overrides = {
+ DifferentialInput: QuartusDifferentialInput,
+ DifferentialOutput: QuartusDifferentialOutput
+}