@@ -468,14 +468,14 @@ async def run_test_overflow(dut):
468
468
for k in range ((depth // byte_lanes )* 3 ):
469
469
await RisingEdge (dut .s_clk )
470
470
471
- if dut .DROP_WHEN_FULL .value :
471
+ if dut .DROP_WHEN_FULL .value or dut . MARK_WHEN_FULL . value :
472
472
assert tb .source .idle ()
473
473
else :
474
474
assert not tb .source .idle ()
475
475
476
476
tb .sink .pause = False
477
477
478
- if dut .DROP_WHEN_FULL .value :
478
+ if dut .DROP_WHEN_FULL .value or dut . MARK_WHEN_FULL . value :
479
479
for k in range ((depth // byte_lanes )* 3 ):
480
480
await RisingEdge (dut .s_clk )
481
481
@@ -484,9 +484,14 @@ async def run_test_overflow(dut):
484
484
while not tb .sink .empty ():
485
485
rx_frame = await tb .sink .recv ()
486
486
487
+ if dut .MARK_WHEN_FULL .value and rx_frame .tuser :
488
+ continue
489
+
487
490
assert rx_frame .tdata == test_data
488
491
assert not rx_frame .tuser
489
492
493
+ rx_count += 1
494
+
490
495
assert rx_count < count
491
496
492
497
else :
@@ -529,8 +534,11 @@ async def run_test_oversize(dut):
529
534
else :
530
535
rx_frame = await tb .sink .recv ()
531
536
532
- assert rx_frame .tdata == test_data
533
- assert not rx_frame .tuser
537
+ if dut .MARK_WHEN_FULL .value :
538
+ assert rx_frame .tuser
539
+ else :
540
+ assert rx_frame .tdata == test_data
541
+ assert not rx_frame .tuser
534
542
535
543
assert tb .sink .empty ()
536
544
@@ -566,7 +574,7 @@ async def run_stress_test(dut, idle_inserter=None, backpressure_inserter=None):
566
574
567
575
cur_id = (cur_id + 1 ) % id_count
568
576
569
- if dut .DROP_WHEN_FULL .value :
577
+ if dut .DROP_WHEN_FULL .value or dut . MARK_WHEN_FULL . value :
570
578
cycles = 0
571
579
while cycles < 100 :
572
580
cycles += 1
@@ -577,9 +585,14 @@ async def run_stress_test(dut, idle_inserter=None, backpressure_inserter=None):
577
585
while not tb .sink .empty ():
578
586
rx_frame = await tb .sink .recv ()
579
587
588
+ if dut .MARK_WHEN_FULL .value and rx_frame .tuser :
589
+ continue
590
+
591
+ assert not rx_frame .tuser
592
+
580
593
while True :
581
594
test_frame = test_frames .pop (0 )
582
- if not rx_frame . tuser and rx_frame .tid == test_frame .tid and rx_frame .tdest == test_frame .tdest and rx_frame .tdata == test_frame .tdata :
595
+ if rx_frame .tid == test_frame .tid and rx_frame .tdest == test_frame .tdest and rx_frame .tdata == test_frame .tdata :
583
596
break
584
597
585
598
assert len (test_frames ) < 512
@@ -653,13 +666,16 @@ def incrementing_payload(length):
653
666
654
667
655
668
@pytest .mark .parametrize (("s_clk" , "m_clk" ), [(10 , 10 ), (10 , 11 ), (11 , 10 )])
656
- @pytest .mark .parametrize (("frame_fifo" , "drop_oversize_frame" , "drop_bad_frame" , "drop_when_full" ),
657
- [(0 , 0 , 0 , 0 ), (1 , 0 , 0 , 0 ), (1 , 1 , 0 , 0 ), (1 , 1 , 1 , 0 ), (1 , 1 , 1 , 1 )])
669
+ @pytest .mark .parametrize (("frame_fifo" , "drop_oversize_frame" , "drop_bad_frame" ,
670
+ "drop_when_full" , "mark_when_full" ),
671
+ [(0 , 0 , 0 , 0 , 0 ), (1 , 0 , 0 , 0 , 0 ), (1 , 1 , 0 , 0 , 0 ), (1 , 1 , 1 , 0 , 0 ),
672
+ (1 , 1 , 1 , 1 , 0 ), (0 , 0 , 0 , 0 , 1 )])
658
673
@pytest .mark .parametrize (("ram_pipeline" , "output_fifo" ),
659
674
[(0 , 0 ), (1 , 0 ), (4 , 0 ), (0 , 1 ), (1 , 1 ), (4 , 1 )])
660
675
@pytest .mark .parametrize ("data_width" , [8 , 16 , 32 , 64 ])
661
676
def test_axis_async_fifo (request , data_width , ram_pipeline , output_fifo ,
662
- frame_fifo , drop_oversize_frame , drop_bad_frame , drop_when_full , s_clk , m_clk ):
677
+ frame_fifo , drop_oversize_frame , drop_bad_frame ,
678
+ drop_when_full , mark_when_full , s_clk , m_clk ):
663
679
664
680
dut = "axis_async_fifo"
665
681
module = os .path .splitext (os .path .basename (__file__ ))[0 ]
@@ -690,6 +706,7 @@ def test_axis_async_fifo(request, data_width, ram_pipeline, output_fifo,
690
706
parameters ['DROP_OVERSIZE_FRAME' ] = drop_oversize_frame
691
707
parameters ['DROP_BAD_FRAME' ] = drop_bad_frame
692
708
parameters ['DROP_WHEN_FULL' ] = drop_when_full
709
+ parameters ['MARK_WHEN_FULL' ] = mark_when_full
693
710
parameters ['PAUSE_ENABLE' ] = 1
694
711
parameters ['FRAME_PAUSE' ] = 1
695
712
0 commit comments