Skip to content

Commit 8d23e52

Browse files
m_axis_sequencer: Update (#109)
- Added clear queue option - Fixed and improved stop policies Signed-off-by: Istvan-Zsolt Szekely <istvan.szekely@analog.com>
1 parent aae26e1 commit 8d23e52

File tree

1 file changed

+36
-13
lines changed

1 file changed

+36
-13
lines changed

common/sv/m_axis_sequencer.sv

Lines changed: 36 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -209,6 +209,11 @@ package m_axis_sequencer_pkg;
209209
@queue_empty;
210210
endtask: wait_empty_descriptor_queue
211211

212+
// clear queue
213+
task clear_descriptor_queue();
214+
descriptor_q.delete();
215+
endtask: clear_descriptor_queue
216+
212217
// generate transfer with transfer descriptors
213218
protected task generator();
214219
`INFOV(("generator start"), 55);
@@ -220,12 +225,13 @@ package m_axis_sequencer_pkg;
220225
fork
221226
begin
222227
@disable_ev;
223-
case (stop_policy)
224-
STOP_POLICY_DESCRIPTOR_QUEUE: @queue_empty;
225-
STOP_POLICY_PACKET: @packet_done;
226-
STOP_POLICY_DATA_BEAT: @beat_done;
227-
STOP_POLICY_IMMEDIATE: ;
228-
endcase
228+
if (this.queue_empty_sig == 0)
229+
case (stop_policy)
230+
STOP_POLICY_DESCRIPTOR_QUEUE: @queue_empty;
231+
STOP_POLICY_PACKET: @packet_done;
232+
STOP_POLICY_DATA_BEAT: @beat_done;
233+
STOP_POLICY_IMMEDIATE: ;
234+
endcase
229235
end
230236
forever begin
231237
if (descriptor_q.size() > 0) begin
@@ -269,6 +275,7 @@ package m_axis_sequencer_pkg;
269275
enabled = 0;
270276
byte_count = 0;
271277
->> disable_ev;
278+
#1step;
272279
endtask: stop
273280

274281
task run();
@@ -351,7 +358,22 @@ package m_axis_sequencer_pkg;
351358
keep[i] = 1'b1;
352359
break;
353360
end else
354-
@byte_stream_ev;
361+
fork begin
362+
fork
363+
@byte_stream_ev;
364+
begin
365+
@disable_ev;
366+
if (tc==0 && i==0) begin
367+
case (stop_policy)
368+
STOP_POLICY_PACKET: ->> packet_done;
369+
STOP_POLICY_DATA_BEAT: ->> beat_done;
370+
default: ;
371+
endcase
372+
end
373+
end
374+
join_any
375+
disable fork;
376+
end join
355377
end
356378
DATA_GEN_MODE_AUTO_INCR: begin
357379
data[i] = byte_count++;
@@ -398,12 +420,13 @@ package m_axis_sequencer_pkg;
398420
fork
399421
begin
400422
@disable_ev;
401-
case (stop_policy)
402-
STOP_POLICY_DESCRIPTOR_QUEUE: @queue_empty;
403-
STOP_POLICY_PACKET: @packet_done;
404-
STOP_POLICY_DATA_BEAT: @beat_done;
405-
STOP_POLICY_IMMEDIATE: ;
406-
endcase
423+
if (this.queue_empty_sig == 0)
424+
case (stop_policy)
425+
STOP_POLICY_DESCRIPTOR_QUEUE: @queue_empty;
426+
STOP_POLICY_PACKET: @packet_done;
427+
STOP_POLICY_DATA_BEAT: @beat_done;
428+
STOP_POLICY_IMMEDIATE: ;
429+
endcase
407430
end
408431
forever begin
409432
@data_av_ev;

0 commit comments

Comments
 (0)