Skip to content

Commit ff1d105

Browse files
committedJul 18, 2014
genlib/SyncFIFO: remove flush signal (use InsertReset instead)
1 parent a53feba commit ff1d105

File tree

1 file changed

+13
-29
lines changed

1 file changed

+13
-29
lines changed
 

‎migen/genlib/fifo.py

+13-29
Original file line numberDiff line numberDiff line change
@@ -72,17 +72,12 @@ class SyncFIFO(Module, _FIFOInterface):
7272
{interface}
7373
level : out
7474
Number of unread entries.
75-
flush : in
76-
Flush the FIFO discarding pending write.
77-
In the next cycle `readable` will be deasserted
78-
and `writable` will be asserted, `level` will be zero.
7975
"""
8076
__doc__ = __doc__.format(interface=_FIFOInterface.__doc__)
8177

8278
def __init__(self, width_or_layout, depth):
8379
_FIFOInterface.__init__(self, width_or_layout, depth)
8480

85-
self.flush = Signal()
8681
self.level = Signal(max=depth+1)
8782

8883
###
@@ -116,17 +111,12 @@ def __init__(self, width_or_layout, depth):
116111
]
117112
self.sync += If(do_read, _inc(consume, depth))
118113

119-
self.sync += [
120-
If(self.flush,
121-
produce.eq(0),
122-
consume.eq(0),
123-
self.level.eq(0),
124-
).Elif(do_write,
114+
self.sync += \
115+
If(do_write,
125116
If(~do_read, self.level.eq(self.level + 1))
126117
).Elif(do_read,
127118
self.level.eq(self.level - 1)
128119
)
129-
]
130120
self.comb += [
131121
self.writable.eq(self.level != depth),
132122
self.readable.eq(self.level != 0)
@@ -143,15 +133,14 @@ def __init__(self, width_or_layout, depth):
143133
self.we = fifo.we
144134
self.readable = fifo.readable
145135
self.re = fifo.re
146-
self.flush = fifo.flush
147136
self.level = fifo.level
148137

149138
###
150139

151-
self.sync += [
152-
If(self.re & self.readable,
153-
self.dout_bits.eq(fifo.dout_bits),
154-
)]
140+
self.sync += \
141+
If(self.re & self.readable,
142+
self.dout_bits.eq(fifo.dout_bits),
143+
)
155144

156145
class SyncFIFOBuffered(Module, _FIFOInterface):
157146
def __init__(self, width_or_layout, depth):
@@ -164,22 +153,17 @@ def __init__(self, width_or_layout, depth):
164153
self.we = fifo.we
165154
self.dout_bits = fifo.dout_bits
166155
self.dout = fifo.dout
167-
self.flush = fifo.flush
168156
self.level = fifo.level
169157

170158
###
171159

172-
self.comb += [
173-
fifo.re.eq(fifo.readable & (~self.readable | self.re)),
174-
]
175-
self.sync += [
176-
If(self.flush,
177-
self.readable.eq(0),
178-
).Elif(fifo.re,
179-
self.readable.eq(1),
180-
).Elif(self.re,
181-
self.readable.eq(0),
182-
)]
160+
self.comb += fifo.re.eq(fifo.readable & (~self.readable | self.re)),
161+
self.sync += \
162+
If(fifo.re,
163+
self.readable.eq(1),
164+
).Elif(self.re,
165+
self.readable.eq(0),
166+
)
183167

184168
class AsyncFIFO(Module, _FIFOInterface):
185169
"""Asynchronous FIFO (first in, first out)

0 commit comments

Comments
 (0)
Please sign in to comment.