Source code for elasticai.creator.ir2vhdl.testing.testing
from importlib import resources
from logging import getLogger
from pathlib import Path
from vunit import VUnit
[docs]
def run_vunit_vhdl_testbenches(deps: list[str], test_dir: Path | str):
logger = getLogger(__name__)
if isinstance(test_dir, str):
test_dir = Path(test_dir)
test_dir = test_dir.absolute()
logger.info("using test_dir {}".format(test_dir))
vu = VUnit.from_argv()
vu.add_vhdl_builtins()
lib = vu.add_library("lib")
for testbench in test_dir.glob("*_tb.vhd"):
logger.info("adding testbench {}".format(testbench))
lib.add_source_file(testbench.absolute())
for dep in deps:
vhdl_dir = resources.files(dep).joinpath("vhdl")
if not vhdl_dir.is_dir():
raise IOError("could not find directory under {}".format(vhdl_dir))
for file in vhdl_dir.glob("*.vhd"): # type: ignore
lib.add_source_files(str(file.absolute()))
vu.main()