67 lines
2.9 KiB
Python
Executable File
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")
|
|
|