tb: axis_mii_tx.py: Rework test_underflow
This test has a lot of duplication, which makes it harder to modify. Stick most of it in a loop. Signed-off-by: Sean Anderson <seanga2@gmail.com>
This commit is contained in:
parent
68751229a0
commit
a3ae038f4f
|
@ -216,31 +216,27 @@ async def test_underflow(mac):
|
||||||
send, status = await start(mac, range(32), ratio=30)
|
send, status = await start(mac, range(32), ratio=30)
|
||||||
await underflow(mac, send, status)
|
await underflow(mac, send, status)
|
||||||
|
|
||||||
send, status = await start(mac, [*range(56), None])
|
#from math import floor
|
||||||
await underflow(mac, send, status)
|
# Solution to (IPG + PREAMBLE + x) * BIT_TIME = ratio * x
|
||||||
send, status = await start(mac, [*range(58), None])
|
# end = floor(200 / (ratio - 10))
|
||||||
await underflow(mac, send, status)
|
|
||||||
send, status = await start(mac, [*range(60), None])
|
|
||||||
await underflow(mac, send, status)
|
|
||||||
|
|
||||||
send, status = await start(mac, [*range(56), None, 1])
|
for x in (56, 58, 60):
|
||||||
await underflow(mac, send, status)
|
# Error on last byte
|
||||||
send, status = await start(mac, [*range(58), None, 1])
|
send, status = await start(mac, [*range(x), None])
|
||||||
await underflow(mac, send, status)
|
await underflow(mac, send, status)
|
||||||
send, status = await start(mac, [*range(60), None, 1])
|
|
||||||
await underflow(mac, send, status)
|
|
||||||
|
|
||||||
send, status = await start(mac, [*range(56), None])
|
# Error with more to come
|
||||||
await restart(mac, (8 + 55) * BYTE_TIME_NS)
|
send, status = await start(mac, [*range(x), None, 1])
|
||||||
await underflow(mac, send, status)
|
await underflow(mac, send, status)
|
||||||
send, status = await start(mac, [*range(58), None])
|
|
||||||
await restart(mac, (8 + 57) * BYTE_TIME_NS)
|
# Underflow with collision
|
||||||
await send.join()
|
send, status = await start(mac, [*range(x), None])
|
||||||
assert await status.join() == Status.LATE_COLLISION
|
await restart(mac, (8 + x) * BYTE_TIME_NS - 1)
|
||||||
send, status = await start(mac, [*range(60), None])
|
if x <= 56:
|
||||||
await restart(mac, (8 + 59) * BYTE_TIME_NS)
|
await underflow(mac, send, status)
|
||||||
await send.join()
|
else:
|
||||||
assert await status.join() == Status.LATE_COLLISION
|
await send.join()
|
||||||
|
assert await status.join() == Status.LATE_COLLISION
|
||||||
|
|
||||||
@cocotb.test(timeout_time=1250, timeout_unit='us', skip=skip_slow)
|
@cocotb.test(timeout_time=1250, timeout_unit='us', skip=skip_slow)
|
||||||
async def test_backoff(mac):
|
async def test_backoff(mac):
|
||||||
|
|
Loading…
Reference in New Issue