51 lines
1.4 KiB
Python
51 lines
1.4 KiB
Python
"""Pytest wrapper launching the APB4 cocotb smoke test."""
|
|
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
from peakrdl_busdecoder.cpuif.apb4.apb4_cpuif_flat import APB4CpuifFlat
|
|
|
|
try: # pragma: no cover - optional dependency shim
|
|
from cocotb.runner import get_runner
|
|
except ImportError: # pragma: no cover
|
|
from cocotb_tools.runner import get_runner
|
|
|
|
from tests.cocotb_lib.utils import compile_rdl_and_export, get_verilog_sources
|
|
|
|
|
|
@pytest.mark.simulation
|
|
@pytest.mark.verilator
|
|
def test_apb4_smoke(tmp_path: Path) -> None:
|
|
"""Compile the APB4 design and execute the cocotb smoke test."""
|
|
repo_root = Path(__file__).resolve().parents[4]
|
|
|
|
module_path, package_path = compile_rdl_and_export(
|
|
str(repo_root / "tests" / "cocotb_lib" / "multiple_reg.rdl"),
|
|
"multi_reg",
|
|
tmp_path,
|
|
cpuif_cls=APB4CpuifFlat,
|
|
)
|
|
|
|
sources = get_verilog_sources(
|
|
module_path,
|
|
package_path,
|
|
[repo_root / "hdl-src" / "apb4_intf.sv"],
|
|
)
|
|
|
|
runner = get_runner("verilator")
|
|
build_dir = tmp_path / "sim_build"
|
|
|
|
runner.build(
|
|
sources=sources,
|
|
hdl_toplevel=module_path.stem,
|
|
build_dir=build_dir,
|
|
)
|
|
|
|
runner.test(
|
|
hdl_toplevel=module_path.stem,
|
|
test_module="tests.cocotb.apb4.smoke.test_register_access",
|
|
build_dir=build_dir,
|
|
log_file=str(tmp_path / "sim.log"),
|
|
)
|