apb: Update testbenches to use cocotb.parametrize

Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
Alex Forencich
2026-08-14 22:34:30 -07:00
parent 6d5f27b8e5
commit 0769fcfce6
6 changed files with 151 additions and 132 deletions

View File

@@ -20,7 +20,6 @@ import pytest
import cocotb
from cocotb.clock import Clock
from cocotb.triggers import RisingEdge, Timer
from cocotb.regression import TestFactory
from cocotbext.axi import ApbBus, ApbMaster, ApbRam
@@ -57,6 +56,15 @@ class TB(object):
await RisingEdge(self.dut.clk)
def cycle_pause():
return itertools.cycle([1, 1, 1, 0])
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
("backpressure_inserter", [None, cycle_pause]),
)
async def run_test_write(dut, data_in=None, idle_inserter=None, backpressure_inserter=None):
tb = TB(dut)
@@ -88,6 +96,11 @@ async def run_test_write(dut, data_in=None, idle_inserter=None, backpressure_ins
await RisingEdge(dut.clk)
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
("backpressure_inserter", [None, cycle_pause]),
)
async def run_test_read(dut, data_in=None, idle_inserter=None, backpressure_inserter=None):
tb = TB(dut)
@@ -115,6 +128,11 @@ async def run_test_read(dut, data_in=None, idle_inserter=None, backpressure_inse
await RisingEdge(dut.clk)
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
("backpressure_inserter", [None, cycle_pause]),
)
async def run_stress_test(dut, idle_inserter=None, backpressure_inserter=None):
tb = TB(dut)
@@ -151,20 +169,6 @@ async def run_stress_test(dut, idle_inserter=None, backpressure_inserter=None):
await RisingEdge(dut.clk)
def cycle_pause():
return itertools.cycle([1, 1, 1, 0])
if getattr(cocotb, 'top', None) is not None:
for test in [run_test_write, run_test_read, run_stress_test]:
factory = TestFactory(test)
factory.add_option("idle_inserter", [None, cycle_pause])
factory.add_option("backpressure_inserter", [None, cycle_pause])
factory.generate_tests()
# cocotb-test
tests_dir = os.path.abspath(os.path.dirname(__file__))

View File

@@ -20,7 +20,6 @@ import pytest
import cocotb
from cocotb.clock import Clock
from cocotb.triggers import RisingEdge, Timer
from cocotb.regression import TestFactory
from cocotbext.axi import ApbBus, ApbMaster, AxiLiteBus, AxiLiteRam
@@ -61,7 +60,16 @@ class TB(object):
await RisingEdge(self.dut.clk)
async def run_test_write(dut, data_in=None, idle_inserter=None, backpressure_inserter=None):
def cycle_pause():
return itertools.cycle([1, 1, 1, 0])
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
("backpressure_inserter", [None, cycle_pause]),
)
async def run_test_write(dut, idle_inserter=None, backpressure_inserter=None):
tb = TB(dut)
@@ -92,7 +100,12 @@ async def run_test_write(dut, data_in=None, idle_inserter=None, backpressure_ins
await RisingEdge(dut.clk)
async def run_test_read(dut, data_in=None, idle_inserter=None, backpressure_inserter=None):
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
("backpressure_inserter", [None, cycle_pause]),
)
async def run_test_read(dut, idle_inserter=None, backpressure_inserter=None):
tb = TB(dut)
@@ -119,6 +132,11 @@ async def run_test_read(dut, data_in=None, idle_inserter=None, backpressure_inse
await RisingEdge(dut.clk)
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
("backpressure_inserter", [None, cycle_pause]),
)
async def run_stress_test(dut, idle_inserter=None, backpressure_inserter=None):
tb = TB(dut)
@@ -155,20 +173,6 @@ async def run_stress_test(dut, idle_inserter=None, backpressure_inserter=None):
await RisingEdge(dut.clk)
def cycle_pause():
return itertools.cycle([1, 1, 1, 0])
if getattr(cocotb, 'top', None) is not None:
for test in [run_test_write, run_test_read, run_stress_test]:
factory = TestFactory(test)
factory.add_option("idle_inserter", [None, cycle_pause])
factory.add_option("backpressure_inserter", [None, cycle_pause])
factory.generate_tests()
# cocotb-test
tests_dir = os.path.abspath(os.path.dirname(__file__))

View File

@@ -20,7 +20,6 @@ import pytest
import cocotb
from cocotb.clock import Clock
from cocotb.triggers import RisingEdge, Timer
from cocotb.regression import TestFactory
from cocotbext.axi import ApbBus, ApbMaster
@@ -61,7 +60,16 @@ class TB(object):
await RisingEdge(self.dut.a_clk)
async def run_test_write(dut, port=0, data_in=None, idle_inserter=None):
def cycle_pause():
return itertools.cycle([1, 1, 1, 0])
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
("port", [0, 1]),
)
async def run_test_write(dut, port=0, idle_inserter=None):
tb = TB(dut)
@@ -90,7 +98,12 @@ async def run_test_write(dut, port=0, data_in=None, idle_inserter=None):
await RisingEdge(dut.a_clk)
async def run_test_read(dut, port=0, data_in=None, idle_inserter=None):
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
("port", [0, 1]),
)
async def run_test_read(dut, port=0, idle_inserter=None):
tb = TB(dut)
@@ -117,7 +130,11 @@ async def run_test_read(dut, port=0, data_in=None, idle_inserter=None):
await RisingEdge(dut.a_clk)
async def run_test_arb(dut, data_in=None, idle_inserter=None):
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
)
async def run_test_arb(dut, idle_inserter=None):
tb = TB(dut)
@@ -145,6 +162,10 @@ async def run_test_arb(dut, data_in=None, idle_inserter=None):
await RisingEdge(dut.a_clk)
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
)
async def run_stress_test(dut, idle_inserter=None):
tb = TB(dut)
@@ -180,28 +201,6 @@ async def run_stress_test(dut, idle_inserter=None):
await RisingEdge(dut.a_clk)
def cycle_pause():
return itertools.cycle([1, 1, 1, 0])
if getattr(cocotb, 'top', None) is not None:
for test in [run_test_write, run_test_read]:
factory = TestFactory(test)
factory.add_option("idle_inserter", [None, cycle_pause])
factory.add_option("port", [0, 1])
factory.generate_tests()
factory = TestFactory(run_test_arb)
factory.add_option("idle_inserter", [None, cycle_pause])
factory.generate_tests()
factory = TestFactory(run_stress_test)
factory.add_option("idle_inserter", [None, cycle_pause])
factory.generate_tests()
# cocotb-test
tests_dir = os.path.abspath(os.path.dirname(__file__))

View File

@@ -14,12 +14,13 @@ import logging
import os
import random
import cocotb
import cocotb_test.simulator
import pytest
import cocotb
from cocotb.clock import Clock
from cocotb.regression import TestFactory
from cocotb.triggers import RisingEdge, Timer
from cocotbext.axi import ApbBus, ApbMaster, ApbRam
@@ -63,9 +64,26 @@ class TB(object):
await RisingEdge(self.dut.clk)
async def run_test_write(
dut, data_in=None, idle_inserter=None, backpressure_inserter=None, s=0, m=0
):
s_cnt = 1
m_cnt = 1
if getattr(cocotb, "top", None) is not None:
s_cnt = len(cocotb.top.s_apb)
m_cnt = len(cocotb.top.m_apb)
def cycle_pause():
return itertools.cycle([1, 1, 1, 0])
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
("backpressure_inserter", [None, cycle_pause]),
("s", range(min(s_cnt, 2))),
("m", range(min(m_cnt, 2))),
)
async def run_test_write(dut, idle_inserter=None, backpressure_inserter=None, s=0, m=0):
tb = TB(dut)
byte_lanes = tb.apb_master[s].byte_lanes
@@ -102,9 +120,14 @@ async def run_test_write(
await RisingEdge(dut.clk)
async def run_test_read(
dut, data_in=None, idle_inserter=None, backpressure_inserter=None, s=0, m=0
):
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
("backpressure_inserter", [None, cycle_pause]),
("s", range(min(s_cnt, 2))),
("m", range(min(m_cnt, 2))),
)
async def run_test_read(dut, idle_inserter=None, backpressure_inserter=None, s=0, m=0):
tb = TB(dut)
byte_lanes = tb.apb_master[s].byte_lanes
@@ -131,6 +154,11 @@ async def run_test_read(
await RisingEdge(dut.clk)
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
("backpressure_inserter", [None, cycle_pause]),
)
async def run_stress_test(dut, idle_inserter=None, backpressure_inserter=None):
tb = TB(dut)
@@ -176,28 +204,6 @@ async def run_stress_test(dut, idle_inserter=None, backpressure_inserter=None):
await RisingEdge(dut.clk)
def cycle_pause():
return itertools.cycle([1, 1, 1, 0])
if getattr(cocotb, "top", None) is not None:
s_cnt = len(cocotb.top.s_apb)
m_cnt = len(cocotb.top.m_apb)
for test in [run_test_write, run_test_read]:
factory = TestFactory(test)
factory.add_option("idle_inserter", [None, cycle_pause])
factory.add_option("backpressure_inserter", [None, cycle_pause])
factory.add_option("s", range(min(s_cnt, 2)))
factory.add_option("m", range(min(m_cnt, 2)))
factory.generate_tests()
factory = TestFactory(run_stress_test)
factory.add_option("idle_inserter", [None, cycle_pause])
factory.add_option("backpressure_inserter", [None, cycle_pause])
factory.generate_tests()
# cocotb-test
tests_dir = os.path.abspath(os.path.dirname(__file__))

View File

@@ -14,12 +14,13 @@ import logging
import os
import random
import cocotb
import cocotb_test.simulator
import pytest
import cocotb
from cocotb.clock import Clock
from cocotb.regression import TestFactory
from cocotb.triggers import RisingEdge, Timer
from cocotbext.axi import ApbBus, ApbMaster, ApbRam
@@ -59,9 +60,23 @@ class TB(object):
await RisingEdge(self.dut.clk)
async def run_test_write(
dut, data_in=None, idle_inserter=None, backpressure_inserter=None, m=0
):
m_cnt = 1
if getattr(cocotb, "top", None) is not None:
m_cnt = len(cocotb.top.m_apb)
def cycle_pause():
return itertools.cycle([1, 1, 1, 0])
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
("backpressure_inserter", [None, cycle_pause]),
("m", range(min(m_cnt, 2))),
)
async def run_test_write(dut, idle_inserter=None, backpressure_inserter=None, m=0):
tb = TB(dut)
byte_lanes = tb.apb_master.byte_lanes
@@ -98,9 +113,13 @@ async def run_test_write(
await RisingEdge(dut.clk)
async def run_test_read(
dut, data_in=None, idle_inserter=None, backpressure_inserter=None, m=0
):
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
("backpressure_inserter", [None, cycle_pause]),
("m", range(min(m_cnt, 2))),
)
async def run_test_read(dut, idle_inserter=None, backpressure_inserter=None, m=0):
tb = TB(dut)
byte_lanes = tb.apb_master.byte_lanes
@@ -127,6 +146,11 @@ async def run_test_read(
await RisingEdge(dut.clk)
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
("backpressure_inserter", [None, cycle_pause]),
)
async def run_stress_test(dut, idle_inserter=None, backpressure_inserter=None):
tb = TB(dut)
@@ -172,26 +196,6 @@ async def run_stress_test(dut, idle_inserter=None, backpressure_inserter=None):
await RisingEdge(dut.clk)
def cycle_pause():
return itertools.cycle([1, 1, 1, 0])
if getattr(cocotb, "top", None) is not None:
m_cnt = len(cocotb.top.m_apb)
for test in [run_test_write, run_test_read]:
factory = TestFactory(test)
factory.add_option("idle_inserter", [None, cycle_pause])
factory.add_option("backpressure_inserter", [None, cycle_pause])
factory.add_option("m", range(min(m_cnt, 2)))
factory.generate_tests()
factory = TestFactory(run_stress_test)
factory.add_option("idle_inserter", [None, cycle_pause])
factory.add_option("backpressure_inserter", [None, cycle_pause])
factory.generate_tests()
# cocotb-test
tests_dir = os.path.abspath(os.path.dirname(__file__))

View File

@@ -20,7 +20,6 @@ import pytest
import cocotb
from cocotb.clock import Clock
from cocotb.triggers import RisingEdge, Timer
from cocotb.regression import TestFactory
from cocotbext.axi import ApbBus, ApbMaster
@@ -52,7 +51,15 @@ class TB(object):
await RisingEdge(self.dut.clk)
async def run_test_write(dut, data_in=None, idle_inserter=None):
def cycle_pause():
return itertools.cycle([1, 1, 1, 0])
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
)
async def run_test_write(dut, idle_inserter=None):
tb = TB(dut)
@@ -80,7 +87,11 @@ async def run_test_write(dut, data_in=None, idle_inserter=None):
await RisingEdge(dut.clk)
async def run_test_read(dut, data_in=None, idle_inserter=None):
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
)
async def run_test_read(dut, idle_inserter=None):
tb = TB(dut)
@@ -106,6 +117,10 @@ async def run_test_read(dut, data_in=None, idle_inserter=None):
await RisingEdge(dut.clk)
@cocotb.test()
@cocotb.parametrize(
("idle_inserter", [None, cycle_pause]),
)
async def run_stress_test(dut, idle_inserter=None):
tb = TB(dut)
@@ -141,19 +156,6 @@ async def run_stress_test(dut, idle_inserter=None):
await RisingEdge(dut.clk)
def cycle_pause():
return itertools.cycle([1, 1, 1, 0])
if getattr(cocotb, 'top', None) is not None:
for test in [run_test_write, run_test_read, run_stress_test]:
factory = TestFactory(test)
factory.add_option("idle_inserter", [None, cycle_pause])
factory.generate_tests()
# cocotb-test
tests_dir = os.path.abspath(os.path.dirname(__file__))