Skip to content

Commit c4f298d

Browse files
committed
Add overflow test, previous test is actually an oversize frame test
Signed-off-by: Alex Forencich <[email protected]>
1 parent 330d6f4 commit c4f298d

File tree

4 files changed

+160
-4
lines changed

4 files changed

+160
-4
lines changed

tb/axis_async_fifo/test_axis_async_fifo.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -457,6 +457,44 @@ async def run_test_overflow(dut):
457457

458458
tb.sink.pause = True
459459

460+
size = (16*byte_lanes)
461+
count = depth*2 // size
462+
463+
test_data = bytearray(itertools.islice(itertools.cycle(range(256)), size))
464+
test_frame = AxiStreamFrame(test_data)
465+
for k in range(count):
466+
await tb.source.send(test_frame)
467+
468+
for k in range((depth//byte_lanes)*2):
469+
await RisingEdge(dut.s_clk)
470+
471+
assert not tb.source.idle()
472+
473+
tb.sink.pause = False
474+
475+
for k in range(count):
476+
rx_frame = await tb.sink.recv()
477+
478+
assert rx_frame.tdata == test_data
479+
assert not rx_frame.tuser
480+
481+
assert tb.sink.empty()
482+
483+
await RisingEdge(dut.s_clk)
484+
await RisingEdge(dut.s_clk)
485+
486+
487+
async def run_test_oversize(dut):
488+
489+
tb = TB(dut)
490+
491+
depth = dut.DEPTH.value
492+
byte_lanes = tb.source.byte_lanes
493+
494+
await tb.reset()
495+
496+
tb.sink.pause = True
497+
460498
test_data = bytearray(itertools.islice(itertools.cycle(range(256)), depth*2))
461499
test_frame = AxiStreamFrame(test_data)
462500
await tb.source.send(test_frame)
@@ -558,7 +596,8 @@ def incrementing_payload(length):
558596
run_test_shift_out_source_reset,
559597
run_test_shift_out_sink_reset,
560598
run_test_pause,
561-
run_test_overflow
599+
run_test_overflow,
600+
run_test_oversize
562601
]:
563602

564603
factory = TestFactory(test)

tb/axis_async_fifo_adapter/test_axis_async_fifo_adapter.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -454,6 +454,44 @@ async def run_test_overflow(dut):
454454

455455
tb.sink.pause = True
456456

457+
size = (16*byte_lanes)
458+
count = depth*2 // size
459+
460+
test_data = bytearray(itertools.islice(itertools.cycle(range(256)), size))
461+
test_frame = AxiStreamFrame(test_data)
462+
for k in range(count):
463+
await tb.source.send(test_frame)
464+
465+
for k in range((depth//byte_lanes)*2):
466+
await RisingEdge(dut.s_clk)
467+
468+
assert not tb.source.idle()
469+
470+
tb.sink.pause = False
471+
472+
for k in range(count):
473+
rx_frame = await tb.sink.recv()
474+
475+
assert rx_frame.tdata == test_data
476+
assert not rx_frame.tuser
477+
478+
assert tb.sink.empty()
479+
480+
await RisingEdge(dut.s_clk)
481+
await RisingEdge(dut.s_clk)
482+
483+
484+
async def run_test_oversize(dut):
485+
486+
tb = TB(dut)
487+
488+
depth = dut.DEPTH.value
489+
byte_lanes = min(tb.source.byte_lanes, tb.sink.byte_lanes)
490+
491+
await tb.reset()
492+
493+
tb.sink.pause = True
494+
457495
test_data = bytearray(itertools.islice(itertools.cycle(range(256)), depth*2))
458496
test_frame = AxiStreamFrame(test_data)
459497
await tb.source.send(test_frame)
@@ -555,7 +593,8 @@ def incrementing_payload(length):
555593
run_test_shift_out_source_reset,
556594
run_test_shift_out_sink_reset,
557595
run_test_pause,
558-
run_test_overflow
596+
run_test_overflow,
597+
run_test_oversize
559598
]:
560599

561600
factory = TestFactory(test)

tb/axis_fifo/test_axis_fifo.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,44 @@ async def run_test_overflow(dut):
243243

244244
tb.sink.pause = True
245245

246+
size = (16*byte_lanes)
247+
count = depth*2 // size
248+
249+
test_data = bytearray(itertools.islice(itertools.cycle(range(256)), size))
250+
test_frame = AxiStreamFrame(test_data)
251+
for k in range(count):
252+
await tb.source.send(test_frame)
253+
254+
for k in range((depth//byte_lanes)*2):
255+
await RisingEdge(dut.clk)
256+
257+
assert not tb.source.idle()
258+
259+
tb.sink.pause = False
260+
261+
for k in range(count):
262+
rx_frame = await tb.sink.recv()
263+
264+
assert rx_frame.tdata == test_data
265+
assert not rx_frame.tuser
266+
267+
assert tb.sink.empty()
268+
269+
await RisingEdge(dut.clk)
270+
await RisingEdge(dut.clk)
271+
272+
273+
async def run_test_oversize(dut):
274+
275+
tb = TB(dut)
276+
277+
depth = dut.DEPTH.value
278+
byte_lanes = tb.source.byte_lanes
279+
280+
await tb.reset()
281+
282+
tb.sink.pause = True
283+
246284
test_data = bytearray(itertools.islice(itertools.cycle(range(256)), depth*2))
247285
test_frame = AxiStreamFrame(test_data)
248286
await tb.source.send(test_frame)
@@ -338,7 +376,8 @@ def incrementing_payload(length):
338376
run_test_init_sink_pause,
339377
run_test_init_sink_pause_reset,
340378
run_test_pause,
341-
run_test_overflow
379+
run_test_overflow,
380+
run_test_oversize
342381
]:
343382

344383
factory = TestFactory(test)

tb/axis_fifo_adapter/test_axis_fifo_adapter.py

Lines changed: 40 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -243,6 +243,44 @@ async def run_test_overflow(dut):
243243

244244
tb.sink.pause = True
245245

246+
size = (16*byte_lanes)
247+
count = depth*2 // size
248+
249+
test_data = bytearray(itertools.islice(itertools.cycle(range(256)), size))
250+
test_frame = AxiStreamFrame(test_data)
251+
for k in range(count):
252+
await tb.source.send(test_frame)
253+
254+
for k in range((depth//byte_lanes)*2):
255+
await RisingEdge(dut.clk)
256+
257+
assert not tb.source.idle()
258+
259+
tb.sink.pause = False
260+
261+
for k in range(count):
262+
rx_frame = await tb.sink.recv()
263+
264+
assert rx_frame.tdata == test_data
265+
assert not rx_frame.tuser
266+
267+
assert tb.sink.empty()
268+
269+
await RisingEdge(dut.clk)
270+
await RisingEdge(dut.clk)
271+
272+
273+
async def run_test_oversize(dut):
274+
275+
tb = TB(dut)
276+
277+
depth = dut.DEPTH.value
278+
byte_lanes = min(tb.source.byte_lanes, tb.sink.byte_lanes)
279+
280+
await tb.reset()
281+
282+
tb.sink.pause = True
283+
246284
test_data = bytearray(itertools.islice(itertools.cycle(range(256)), depth*2))
247285
test_frame = AxiStreamFrame(test_data)
248286
await tb.source.send(test_frame)
@@ -338,7 +376,8 @@ def incrementing_payload(length):
338376
run_test_init_sink_pause,
339377
run_test_init_sink_pause_reset,
340378
run_test_pause,
341-
run_test_overflow
379+
run_test_overflow,
380+
run_test_oversize
342381
]:
343382

344383
factory = TestFactory(test)

0 commit comments

Comments
 (0)