@@ -72,17 +72,12 @@ class SyncFIFO(Module, _FIFOInterface):
72
72
{interface}
73
73
level : out
74
74
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.
79
75
"""
80
76
__doc__ = __doc__ .format (interface = _FIFOInterface .__doc__ )
81
77
82
78
def __init__ (self , width_or_layout , depth ):
83
79
_FIFOInterface .__init__ (self , width_or_layout , depth )
84
80
85
- self .flush = Signal ()
86
81
self .level = Signal (max = depth + 1 )
87
82
88
83
###
@@ -116,17 +111,12 @@ def __init__(self, width_or_layout, depth):
116
111
]
117
112
self .sync += If (do_read , _inc (consume , depth ))
118
113
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 ,
125
116
If (~ do_read , self .level .eq (self .level + 1 ))
126
117
).Elif (do_read ,
127
118
self .level .eq (self .level - 1 )
128
119
)
129
- ]
130
120
self .comb += [
131
121
self .writable .eq (self .level != depth ),
132
122
self .readable .eq (self .level != 0 )
@@ -143,15 +133,14 @@ def __init__(self, width_or_layout, depth):
143
133
self .we = fifo .we
144
134
self .readable = fifo .readable
145
135
self .re = fifo .re
146
- self .flush = fifo .flush
147
136
self .level = fifo .level
148
137
149
138
###
150
139
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
+ )
155
144
156
145
class SyncFIFOBuffered (Module , _FIFOInterface ):
157
146
def __init__ (self , width_or_layout , depth ):
@@ -164,22 +153,17 @@ def __init__(self, width_or_layout, depth):
164
153
self .we = fifo .we
165
154
self .dout_bits = fifo .dout_bits
166
155
self .dout = fifo .dout
167
- self .flush = fifo .flush
168
156
self .level = fifo .level
169
157
170
158
###
171
159
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
+ )
183
167
184
168
class AsyncFIFO (Module , _FIFOInterface ):
185
169
"""Asynchronous FIFO (first in, first out)
0 commit comments