migen/actorlib/fifo: add FIFO wrapper function
Allow automatic instantiation of the correct fifo (SyncFIFO or AsyncFIFO) according to the clock domains passed in argument.
This commit is contained in:
parent
1f1ff5a5e9
commit
d0a19c4be8
|
@ -55,3 +55,15 @@ class SyncFIFO(_FIFOActor):
|
||||||
class AsyncFIFO(_FIFOActor):
|
class AsyncFIFO(_FIFOActor):
|
||||||
def __init__(self, layout, depth):
|
def __init__(self, layout, depth):
|
||||||
_FIFOActor.__init__(self, fifo.AsyncFIFO, layout, depth)
|
_FIFOActor.__init__(self, fifo.AsyncFIFO, layout, depth)
|
||||||
|
|
||||||
|
|
||||||
|
def FIFO(layout, depth, buffered=False,
|
||||||
|
sink_cd="sys", source_cd="sys"):
|
||||||
|
if sink_cd != source_cd:
|
||||||
|
if buffered:
|
||||||
|
ValueError("AsyncFIFO does not support buffered mode")
|
||||||
|
fifo = AsyncFIFO(layout, depth)
|
||||||
|
return ClockDomainsRenamer({"write": sink_cd, "read": source_cd})(fifo)
|
||||||
|
else:
|
||||||
|
fifo = SyncFIFO(layout, depth, buffered)
|
||||||
|
return ClockDomainsRenamer(sink_cd)(fifo)
|
||||||
|
|
Loading…
Reference in New Issue