
In context of nMigen, "tools" means "parts of toolchain", so it is confusing to have a completely unrelated module also called "tools".
64 lines
1.8 KiB
Python
64 lines
1.8 KiB
Python
from ..._utils import deprecated, extend
|
|
from ...lib.fifo import (FIFOInterface as NativeFIFOInterface,
|
|
SyncFIFO as NativeSyncFIFO, SyncFIFOBuffered as NativeSyncFIFOBuffered,
|
|
AsyncFIFO as NativeAsyncFIFO, AsyncFIFOBuffered as NativeAsyncFIFOBuffered)
|
|
|
|
|
|
__all__ = ["_FIFOInterface", "SyncFIFO", "SyncFIFOBuffered", "AsyncFIFO", "AsyncFIFOBuffered"]
|
|
|
|
|
|
class CompatFIFOInterface(NativeFIFOInterface):
|
|
@deprecated("attribute `fwft` must be provided to FIFOInterface constructor")
|
|
def __init__(self, width, depth):
|
|
super().__init__(width=width, depth=depth, fwft=False)
|
|
del self.fwft
|
|
|
|
|
|
@extend(NativeFIFOInterface)
|
|
def read(self):
|
|
"""Read method for simulation."""
|
|
assert (yield self.r_rdy)
|
|
value = (yield self.r_data)
|
|
yield self.r_en.eq(1)
|
|
yield
|
|
yield self.r_en.eq(0)
|
|
yield
|
|
return value
|
|
|
|
@extend(NativeFIFOInterface)
|
|
def write(self, data):
|
|
"""Write method for simulation."""
|
|
assert (yield self.w_rdy)
|
|
yield self.w_data.eq(data)
|
|
yield self.w_en.eq(1)
|
|
yield
|
|
yield self.w_en.eq(0)
|
|
yield
|
|
|
|
|
|
class CompatSyncFIFO(NativeSyncFIFO):
|
|
def __init__(self, width, depth, fwft=True):
|
|
super().__init__(width=width, depth=depth, fwft=fwft)
|
|
|
|
|
|
class CompatSyncFIFOBuffered(NativeSyncFIFOBuffered):
|
|
def __init__(self, width, depth):
|
|
super().__init__(width=width, depth=depth)
|
|
|
|
|
|
class CompatAsyncFIFO(NativeAsyncFIFO):
|
|
def __init__(self, width, depth):
|
|
super().__init__(width=width, depth=depth)
|
|
|
|
|
|
class CompatAsyncFIFOBuffered(NativeAsyncFIFOBuffered):
|
|
def __init__(self, width, depth):
|
|
super().__init__(width=width, depth=depth)
|
|
|
|
|
|
_FIFOInterface = CompatFIFOInterface
|
|
SyncFIFO = CompatSyncFIFO
|
|
SyncFIFOBuffered = CompatSyncFIFOBuffered
|
|
AsyncFIFO = CompatAsyncFIFO
|
|
AsyncFIFOBuffered = CompatAsyncFIFOBuffered
|