TGC-VP/pysysc/tgc-vp-toplevel.py

67 lines
2.9 KiB
Python
Executable File

#
# Copyright (c) 2019 -2021 MINRES Technolgies GmbH
#
# SPDX-License-Identifier: Apache-2.0
#
import os.path
import logging
import cppyy
from cppyy import gbl as cpp
import pysysc
import pysysc.scc as scc
from pysysc.structural import Module, Simulation
###############################################################################
# Include and load section
###############################################################################
logging.basicConfig(level=logging.DEBUG)
###############################################################################
current_dir = os.path.dirname(os.path.realpath(__file__))
project_dir = os.path.dirname(current_dir)
logging.info(f"Project dir: {project_dir}")
if os.path.isdir(os.path.join(project_dir, 'build/Debug')):
pysysc.read_config_from_conan(os.path.join(project_dir, 'build/Debug'))
elif os.path.isdir(os.path.join(project_dir, 'build/Release')):
pysysc.read_config_from_conan(os.path.join(project_dir, 'build/Release'))
elif os.path.isdir(os.path.join(project_dir, 'build')):
pysysc.read_config_from_conan(os.path.join(project_dir, 'build'))
else:
sys.exit("Could not find build dir")
pysysc.load_systemc()
###############################################################################
scc.load_lib(project_dir)
###############################################################################
logging.debug("Loading TGC-VP Peripherals libs")
pysysc.add_include_path(os.path.join(project_dir, 'vpvper'))
pysysc.add_library('sifive.h', 'libvpvper_sifive.so', project_dir)
###############################################################################
logging.debug("Loading TGC-ISS")
pysysc.add_include_path(os.path.join(project_dir, 'tgc-iss/dbt-rise-tgc/incl/sysc'))
pysysc.add_library('core_complex.h', 'libdbt-rise-tgc_sc.so', project_dir)
###############################################################################
# Include section
###############################################################################
cppyy.include(os.path.join(project_dir, 'src/tgfs_vp/rst_gen.h'))
###############################################################################
# configure
###############################################################################
scc.setup(logging.root.level)
scc.configure(enable_trace=True)
###############################################################################
# instantiate
###############################################################################
from modules import TopModule
dut = Module(TopModule).create("dut")
# Load FW
dut.core_complex.instance.elf_file.set_value(os.path.join(project_dir, 'fw/hello-world/prebuilt/hello.elf'))
#dut.core_complex.instance.enable_disass.set_value(True)
###############################################################################
# run if it is standalone
###############################################################################
if __name__ == "__main__":
Simulation.run()
logging.debug("Done")