From a3ae038f4f0f43fd59549f62620f5f9d48dcf976 Mon Sep 17 00:00:00 2001 From: Sean Anderson Date: Wed, 11 Jan 2023 17:26:20 -0500 Subject: [PATCH] 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 --- tb/axis_mii_tx.py | 42 +++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 23 deletions(-) diff --git a/tb/axis_mii_tx.py b/tb/axis_mii_tx.py index 447e45a..f252347 100644 --- a/tb/axis_mii_tx.py +++ b/tb/axis_mii_tx.py @@ -216,31 +216,27 @@ async def test_underflow(mac): send, status = await start(mac, range(32), ratio=30) await underflow(mac, send, status) - send, status = await start(mac, [*range(56), None]) - await underflow(mac, send, status) - send, status = await start(mac, [*range(58), None]) - await underflow(mac, send, status) - send, status = await start(mac, [*range(60), None]) - await underflow(mac, send, status) + #from math import floor + # Solution to (IPG + PREAMBLE + x) * BIT_TIME = ratio * x + # end = floor(200 / (ratio - 10)) - send, status = await start(mac, [*range(56), None, 1]) - await underflow(mac, send, status) - send, status = await start(mac, [*range(58), None, 1]) - await underflow(mac, send, status) - send, status = await start(mac, [*range(60), None, 1]) - await underflow(mac, send, status) + for x in (56, 58, 60): + # Error on last byte + send, status = await start(mac, [*range(x), None]) + await underflow(mac, send, status) - send, status = await start(mac, [*range(56), None]) - await restart(mac, (8 + 55) * BYTE_TIME_NS) - await underflow(mac, send, status) - send, status = await start(mac, [*range(58), None]) - await restart(mac, (8 + 57) * BYTE_TIME_NS) - await send.join() - assert await status.join() == Status.LATE_COLLISION - send, status = await start(mac, [*range(60), None]) - await restart(mac, (8 + 59) * BYTE_TIME_NS) - await send.join() - assert await status.join() == Status.LATE_COLLISION + # Error with more to come + send, status = await start(mac, [*range(x), None, 1]) + await underflow(mac, send, status) + + # Underflow with collision + send, status = await start(mac, [*range(x), None]) + await restart(mac, (8 + x) * BYTE_TIME_NS - 1) + if x <= 56: + await underflow(mac, send, status) + else: + await send.join() + assert await status.join() == Status.LATE_COLLISION @cocotb.test(timeout_time=1250, timeout_unit='us', skip=skip_slow) async def test_backoff(mac):