Skip to content

Commit ee29287

Browse files
authored
Merge pull request Xilinx#1251 from jsmonson/feature/fix-non-blocking
Feature/fix non blocking
2 parents d1b286a + 50ed7ef commit ee29287

File tree

1 file changed

+72
-72
lines changed

1 file changed

+72
-72
lines changed

finn-rtllib/fifo/hdl/Q_srl.v

Lines changed: 72 additions & 72 deletions
Original file line numberDiff line numberDiff line change
@@ -184,58 +184,58 @@ module Q_srl (clock, reset, i_d, i_v, i_r, o_d, o_v, o_r, count, maxcount);
184184
end // always @ (posedge clock or negedge reset)
185185

186186
always @* begin // - combi always
187-
srlo_ <= 'bx;
188-
shift_en_o_ <= 1'bx;
189-
shift_en_ <= 1'bx;
190-
addr_ <= 'bx;
191-
state_ <= 2'bx;
187+
srlo_ = 'bx;
188+
shift_en_o_ = 1'bx;
189+
shift_en_ = 1'bx;
190+
addr_ = 'bx;
191+
state_ = 2'bx;
192192
case (state)
193193

194194
state_empty: begin // - (empty, will not produce)
195195
if (i_v) begin // - empty & i_v => consume
196-
srlo_ <= i_d;
197-
shift_en_o_ <= 1;
198-
shift_en_ <= 1'bx;
199-
addr_ <= 0;
200-
state_ <= state_one;
196+
srlo_ = i_d;
197+
shift_en_o_ = 1;
198+
shift_en_ = 1'bx;
199+
addr_ = 0;
200+
state_ = state_one;
201201
end
202202
else begin // - empty & !i_v => idle
203-
srlo_ <= 'bx;
204-
shift_en_o_ <= 0;
205-
shift_en_ <= 1'bx;
206-
addr_ <= 0;
207-
state_ <= state_empty;
203+
srlo_ = 'bx;
204+
shift_en_o_ = 0;
205+
shift_en_ = 1'bx;
206+
addr_ = 0;
207+
state_ = state_empty;
208208
end
209209
end
210210

211211
state_one: begin // - (contains one)
212212
if (i_v && o_b) begin // - one & i_v & o_b => consume
213-
srlo_ <= 'bx;
214-
shift_en_o_ <= 0;
215-
shift_en_ <= 1;
216-
addr_ <= 0;
217-
state_ <= state_more;
213+
srlo_ = 'bx;
214+
shift_en_o_ = 0;
215+
shift_en_ = 1;
216+
addr_ = 0;
217+
state_ = state_more;
218218
end
219219
else if (i_v && !o_b) begin // - one & i_v & !o_b => cons+prod
220-
srlo_ <= i_d;
221-
shift_en_o_ <= 1;
222-
shift_en_ <= 1;
223-
addr_ <= 0;
224-
state_ <= state_one;
220+
srlo_ = i_d;
221+
shift_en_o_ = 1;
222+
shift_en_ = 1;
223+
addr_ = 0;
224+
state_ = state_one;
225225
end
226226
else if (!i_v && o_b) begin // - one & !i_v & o_b => idle
227-
srlo_ <= 'bx;
228-
shift_en_o_ <= 0;
229-
shift_en_ <= 1'bx;
230-
addr_ <= 0;
231-
state_ <= state_one;
227+
srlo_ = 'bx;
228+
shift_en_o_ = 0;
229+
shift_en_ = 1'bx;
230+
addr_ = 0;
231+
state_ = state_one;
232232
end
233233
else if (!i_v && !o_b) begin // - one & !i_v & !o_b => produce
234-
srlo_ <= 'bx;
235-
shift_en_o_ <= 0;
236-
shift_en_ <= 1'bx;
237-
addr_ <= 0;
238-
state_ <= state_empty;
234+
srlo_ = 'bx;
235+
shift_en_o_ = 0;
236+
shift_en_ = 1'bx;
237+
addr_ = 0;
238+
state_ = state_empty;
239239
end
240240
end // case: state_one
241241

@@ -244,60 +244,60 @@ module Q_srl (clock, reset, i_d, i_v, i_r, o_d, o_v, o_r, count, maxcount);
244244
// - (full, will not consume)
245245
// - (full here if depth==2)
246246
if (o_b) begin // - full & o_b => idle
247-
srlo_ <= 'bx;
248-
shift_en_o_ <= 0;
249-
shift_en_ <= 0;
250-
addr_ <= addr;
251-
state_ <= state_more;
247+
srlo_ = 'bx;
248+
shift_en_o_ = 0;
249+
shift_en_ = 0;
250+
addr_ = addr;
251+
state_ = state_more;
252252
end
253253
else begin // - full & !o_b => produce
254-
srlo_ <= srl[addr];
255-
shift_en_o_ <= 1;
256-
shift_en_ <= 0;
257-
// addr_ <= addr-1;
258-
// state_ <= state_more;
259-
addr_ <= addr_zero_ ? 0 : addr-1;
260-
state_ <= addr_zero_ ? state_one : state_more;
254+
srlo_ = srl[addr];
255+
shift_en_o_ = 1;
256+
shift_en_ = 0;
257+
// addr_ = addr-1;
258+
// state_ = state_more;
259+
addr_ = addr_zero_ ? 0 : addr-1;
260+
state_ = addr_zero_ ? state_one : state_more;
261261
end
262262
end
263263
else begin // - (mid: neither empty nor full)
264264
if (i_v && o_b) begin // - mid & i_v & o_b => consume
265-
srlo_ <= 'bx;
266-
shift_en_o_ <= 0;
267-
shift_en_ <= 1;
268-
addr_ <= addr+1;
269-
state_ <= state_more;
265+
srlo_ = 'bx;
266+
shift_en_o_ = 0;
267+
shift_en_ = 1;
268+
addr_ = addr+1;
269+
state_ = state_more;
270270
end
271271
else if (i_v && !o_b) begin // - mid & i_v & !o_b => cons+prod
272-
srlo_ <= srl[addr];
273-
shift_en_o_ <= 1;
274-
shift_en_ <= 1;
275-
addr_ <= addr;
276-
state_ <= state_more;
272+
srlo_ = srl[addr];
273+
shift_en_o_ = 1;
274+
shift_en_ = 1;
275+
addr_ = addr;
276+
state_ = state_more;
277277
end
278278
else if (!i_v && o_b) begin // - mid & !i_v & o_b => idle
279-
srlo_ <= 'bx;
280-
shift_en_o_ <= 0;
281-
shift_en_ <= 0;
282-
addr_ <= addr;
283-
state_ <= state_more;
279+
srlo_ = 'bx;
280+
shift_en_o_ = 0;
281+
shift_en_ = 0;
282+
addr_ = addr;
283+
state_ = state_more;
284284
end
285285
else if (!i_v && !o_b) begin // - mid & !i_v & !o_b => produce
286-
srlo_ <= srl[addr];
287-
shift_en_o_ <= 1;
288-
shift_en_ <= 0;
289-
addr_ <= addr_zero_ ? 0 : addr-1;
290-
state_ <= addr_zero_ ? state_one : state_more;
286+
srlo_ = srl[addr];
287+
shift_en_o_ = 1;
288+
shift_en_ = 0;
289+
addr_ = addr_zero_ ? 0 : addr-1;
290+
state_ = addr_zero_ ? state_one : state_more;
291291
end
292292
end // else: !if(addr_full)
293293
end // case: state_more
294294

295295
default: begin
296-
srlo_ <= 'bx;
297-
shift_en_o_ <= 1'bx;
298-
shift_en_ <= 1'bx;
299-
addr_ <= 'bx;
300-
state_ <= 2'bx;
296+
srlo_ = 'bx;
297+
shift_en_o_ = 1'bx;
298+
shift_en_ = 1'bx;
299+
addr_ = 'bx;
300+
state_ = 2'bx;
301301
end // case: default
302302

303303
endcase // case(state)

0 commit comments

Comments
 (0)