blob: 56d772b1069ba90a92314b9d87de2ef8b3dca459 [file] [log] [blame]
# Copyright lowRISC contributors.
# Licensed under the Apache License, Version 2.0, see LICENSE for details.
# SPDX-License-Identifier: Apache-2.0
"""Generate SystemVerilog UVM agent extended freom our DV lib
"""
import os
from mako import exceptions
from mako.template import Template
from pkg_resources import resource_filename
def gen_agent(name, has_separate_host_device_driver, root_dir, vendor):
# set sub name
agent_dir = root_dir + "/" + name + "_agent"
# yapf: disable
# flake8: noqa
# 4-tuple - path, ip name, class name, file ext
agent_srcs = [(agent_dir, name + '_', 'if', '.sv'),
(agent_dir, name + '_', 'item', '.sv'),
(agent_dir, name + '_', 'agent_cfg', '.sv'),
(agent_dir, name + '_', 'agent_cov', '.sv'),
(agent_dir, name + '_', 'monitor', '.sv'),
(agent_dir, name + '_', 'driver', '.sv'),
(agent_dir, name + '_', 'host_driver', '.sv'),
(agent_dir, name + '_', 'device_driver', '.sv'),
(agent_dir, name + '_', 'agent_pkg', '.sv'),
(agent_dir, name + '_', 'agent', '.sv'),
(agent_dir, name + '_', 'agent', '.core'),
(agent_dir, "", 'README', '.md'),
(agent_dir + "/seq_lib", name + '_', 'seq_list', '.sv'),
(agent_dir + "/seq_lib", name + '_', 'base_seq', '.sv')]
# yapf: enable
for tup in agent_srcs:
path_dir = tup[0]
src_prefix = tup[1]
src = tup[2]
src_suffix = tup[3]
if has_separate_host_device_driver:
if src == "driver": continue
else:
if src == "host_driver": continue
if src == "device_driver": continue
ftpl = src + src_suffix + '.tpl'
fname = src_prefix + src + src_suffix
# read template
tpl = Template(filename=resource_filename('uvmdvgen', ftpl))
if not os.path.exists(path_dir): os.system("mkdir -p " + path_dir)
with open(path_dir + "/" + fname, 'w') as fout:
try:
fout.write(
tpl.render(name=name,
has_separate_host_device_driver=
has_separate_host_device_driver,
vendor=vendor))
except:
log.error(exceptions.text_error_template().render())