blob: a3aa8b9a3b70c8d051fcceb204327572c9fdf377 [file] [log] [blame]
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
import logging as log
from pathlib import Path
from mako import exceptions
from mako.template import Template
from pkg_resources import resource_filename
from .xbar import Xbar
def generate_tb(xbar: Xbar,
dv_path: Path,
library_name: str = "ip") -> str: # xbar: Xbar -> str
# list all the generate files for TB
tb_files = [
"xbar_env_pkg__params.sv", "tb__xbar_connect.sv", "xbar.sim.core",
"xbar.bind.core", "xbar.bind.sv", "xbar.sim_cfg.hjson",
"xbar_cov_excl.el", "xbar_cover.cfg"
]
for fname in tb_files:
tpl = Template(filename=resource_filename('tlgen', fname + '.tpl'))
# some files need to be renamed
if fname == "xbar.sim.core":
fname = "xbar_%s_sim.core" % (xbar.name)
elif fname == "xbar.bind.core":
fname = "xbar_%s_bind.core" % (xbar.name)
elif fname == "xbar.bind.sv":
fname = "xbar_%s_bind.sv" % (xbar.name)
elif fname == "xbar.sim_cfg.hjson":
fname = "xbar_%s_sim_cfg.hjson" % (xbar.name)
# save testplan at data directory
if fname == "xbar_%s_testplan.hjson" % (xbar.name):
data_filepath = dv_path / '../../data/autogen'
data_filepath.mkdir(parents=True, exist_ok=True)
dv_filepath = data_filepath / fname
else:
dv_filepath = dv_path / fname
with dv_filepath.open(mode='w', encoding='UTF-8') as fout:
try:
fout.write(tpl.render(xbar=xbar, library_name=library_name))
except: # noqa: E722 for general exception handling
log.error(exceptions.text_error_template().render())