1
0
mirror of https://github.com/corundum/corundum.git synced 2025-01-16 08:12:53 +08:00

Add overflow test, previous test is actually an oversize frame test

Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
Alex Forencich 2023-08-14 16:59:30 -07:00
parent 330d6f41fc
commit c4f298de6f
4 changed files with 160 additions and 4 deletions

View File

@ -457,6 +457,44 @@ async def run_test_overflow(dut):
tb.sink.pause = True
size = (16*byte_lanes)
count = depth*2 // size
test_data = bytearray(itertools.islice(itertools.cycle(range(256)), size))
test_frame = AxiStreamFrame(test_data)
for k in range(count):
await tb.source.send(test_frame)
for k in range((depth//byte_lanes)*2):
await RisingEdge(dut.s_clk)
assert not tb.source.idle()
tb.sink.pause = False
for k in range(count):
rx_frame = await tb.sink.recv()
assert rx_frame.tdata == test_data
assert not rx_frame.tuser
assert tb.sink.empty()
await RisingEdge(dut.s_clk)
await RisingEdge(dut.s_clk)
async def run_test_oversize(dut):
tb = TB(dut)
depth = dut.DEPTH.value
byte_lanes = tb.source.byte_lanes
await tb.reset()
tb.sink.pause = True
test_data = bytearray(itertools.islice(itertools.cycle(range(256)), depth*2))
test_frame = AxiStreamFrame(test_data)
await tb.source.send(test_frame)
@ -558,7 +596,8 @@ if cocotb.SIM_NAME:
run_test_shift_out_source_reset,
run_test_shift_out_sink_reset,
run_test_pause,
run_test_overflow
run_test_overflow,
run_test_oversize
]:
factory = TestFactory(test)

View File

@ -454,6 +454,44 @@ async def run_test_overflow(dut):
tb.sink.pause = True
size = (16*byte_lanes)
count = depth*2 // size
test_data = bytearray(itertools.islice(itertools.cycle(range(256)), size))
test_frame = AxiStreamFrame(test_data)
for k in range(count):
await tb.source.send(test_frame)
for k in range((depth//byte_lanes)*2):
await RisingEdge(dut.s_clk)
assert not tb.source.idle()
tb.sink.pause = False
for k in range(count):
rx_frame = await tb.sink.recv()
assert rx_frame.tdata == test_data
assert not rx_frame.tuser
assert tb.sink.empty()
await RisingEdge(dut.s_clk)
await RisingEdge(dut.s_clk)
async def run_test_oversize(dut):
tb = TB(dut)
depth = dut.DEPTH.value
byte_lanes = min(tb.source.byte_lanes, tb.sink.byte_lanes)
await tb.reset()
tb.sink.pause = True
test_data = bytearray(itertools.islice(itertools.cycle(range(256)), depth*2))
test_frame = AxiStreamFrame(test_data)
await tb.source.send(test_frame)
@ -555,7 +593,8 @@ if cocotb.SIM_NAME:
run_test_shift_out_source_reset,
run_test_shift_out_sink_reset,
run_test_pause,
run_test_overflow
run_test_overflow,
run_test_oversize
]:
factory = TestFactory(test)

View File

@ -243,6 +243,44 @@ async def run_test_overflow(dut):
tb.sink.pause = True
size = (16*byte_lanes)
count = depth*2 // size
test_data = bytearray(itertools.islice(itertools.cycle(range(256)), size))
test_frame = AxiStreamFrame(test_data)
for k in range(count):
await tb.source.send(test_frame)
for k in range((depth//byte_lanes)*2):
await RisingEdge(dut.clk)
assert not tb.source.idle()
tb.sink.pause = False
for k in range(count):
rx_frame = await tb.sink.recv()
assert rx_frame.tdata == test_data
assert not rx_frame.tuser
assert tb.sink.empty()
await RisingEdge(dut.clk)
await RisingEdge(dut.clk)
async def run_test_oversize(dut):
tb = TB(dut)
depth = dut.DEPTH.value
byte_lanes = tb.source.byte_lanes
await tb.reset()
tb.sink.pause = True
test_data = bytearray(itertools.islice(itertools.cycle(range(256)), depth*2))
test_frame = AxiStreamFrame(test_data)
await tb.source.send(test_frame)
@ -338,7 +376,8 @@ if cocotb.SIM_NAME:
run_test_init_sink_pause,
run_test_init_sink_pause_reset,
run_test_pause,
run_test_overflow
run_test_overflow,
run_test_oversize
]:
factory = TestFactory(test)

View File

@ -243,6 +243,44 @@ async def run_test_overflow(dut):
tb.sink.pause = True
size = (16*byte_lanes)
count = depth*2 // size
test_data = bytearray(itertools.islice(itertools.cycle(range(256)), size))
test_frame = AxiStreamFrame(test_data)
for k in range(count):
await tb.source.send(test_frame)
for k in range((depth//byte_lanes)*2):
await RisingEdge(dut.clk)
assert not tb.source.idle()
tb.sink.pause = False
for k in range(count):
rx_frame = await tb.sink.recv()
assert rx_frame.tdata == test_data
assert not rx_frame.tuser
assert tb.sink.empty()
await RisingEdge(dut.clk)
await RisingEdge(dut.clk)
async def run_test_oversize(dut):
tb = TB(dut)
depth = dut.DEPTH.value
byte_lanes = min(tb.source.byte_lanes, tb.sink.byte_lanes)
await tb.reset()
tb.sink.pause = True
test_data = bytearray(itertools.islice(itertools.cycle(range(256)), depth*2))
test_frame = AxiStreamFrame(test_data)
await tb.source.send(test_frame)
@ -338,7 +376,8 @@ if cocotb.SIM_NAME:
run_test_init_sink_pause,
run_test_init_sink_pause_reset,
run_test_pause,
run_test_overflow
run_test_overflow,
run_test_oversize
]:
factory = TestFactory(test)