mibuild/lattice: add LatticeAsyncResetSynchronizer

This commit is contained in:
Florent Kermarrec 2015-03-17 12:42:36 +01:00
parent c06ab82f13
commit 022ac26c22
1 changed files with 16 additions and 0 deletions

View File

@ -1,6 +1,21 @@
from migen.fhdl.std import * from migen.fhdl.std import *
from migen.genlib.io import * from migen.genlib.io import *
class LatticeAsyncResetSynchronizerImpl(Module):
def __init__(self, cd, async_reset):
rst1 = Signal()
self.specials += [
Instance("FD1S3BX", i_D=0, i_PD=async_reset,
i_CK=cd.clk, o_Q=rst1),
Instance("FD1S3BX", i_D=rst1, i_PD=async_reset,
i_CK=cd.clk, o_Q=cd.rst)
]
class LatticeAsyncResetSynchronizer:
@staticmethod
def lower(dr):
return LatticeAsyncResetSynchronizerImpl(dr.cd, dr.async_reset)
class LatticeDDROutputImpl(Module): class LatticeDDROutputImpl(Module):
def __init__(self, i1, i2, o, clk): def __init__(self, i1, i2, o, clk):
self.specials += Instance("ODDRA", self.specials += Instance("ODDRA",
@ -14,5 +29,6 @@ class LatticeDDROutput:
return LatticeDDROutputImpl(dr.i1, dr.i2, dr.o, dr.clk) return LatticeDDROutputImpl(dr.i1, dr.i2, dr.o, dr.clk)
lattice_special_overrides = { lattice_special_overrides = {
AsyncResetSynchronizer: LatticeAsyncResetSynchronizer,
DDROutput: LatticeDDROutput DDROutput: LatticeDDROutput
} }