fixes clang-format handling and applies clang-fomrat changes

This commit is contained in:
2024-08-18 13:21:37 +02:00
parent 31a874b9c6
commit 3c30016830
14 changed files with 154 additions and 122 deletions

View File

@@ -124,11 +124,30 @@
<configuration configurationName="Release"/> <configuration configurationName="Release"/>
</storageModule> </storageModule>
<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/> <storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1730410661.719145049;cdt.managedbuild.toolchain.gnu.base.1730410661.719145049.;cdt.managedbuild.tool.gnu.cpp.compiler.base.1534023345;cdt.managedbuild.tool.gnu.cpp.compiler.input.1510234384">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1730410661.719145049;cdt.managedbuild.toolchain.gnu.base.1730410661.719145049.;cdt.managedbuild.tool.gnu.c.compiler.base.1971017117;cdt.managedbuild.tool.gnu.c.compiler.input.1521427508">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1730410661;cdt.managedbuild.toolchain.gnu.base.1730410661.218663890;cdt.managedbuild.tool.gnu.c.compiler.base.415892287;cdt.managedbuild.tool.gnu.c.compiler.input.1806041557">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1730410661;cdt.managedbuild.toolchain.gnu.base.1730410661.218663890;cdt.managedbuild.tool.gnu.cpp.compiler.base.1878089590;cdt.managedbuild.tool.gnu.cpp.compiler.input.705150349">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule cmakelistsFolder="" moduleId="de.marw.cmake4eclipse.mbs.settings">
<targets>
<target name=""/>
</targets>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"> <storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
<buildTargets> <buildTargets>
<target name="fw-hello-world" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder"> <target name="fw-hello-world" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>CMAKE_BUILD_TOOL</buildCommand> <buildCommand>CMAKE_BUILD_TOOL</buildCommand>
<buildArguments/>
<buildTarget>fw-hello-world</buildTarget> <buildTarget>fw-hello-world</buildTarget>
<stopOnError>true</stopOnError> <stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand> <useDefaultCommand>true</useDefaultCommand>
@@ -150,26 +169,22 @@
<useDefaultCommand>false</useDefaultCommand> <useDefaultCommand>false</useDefaultCommand>
<runAllBuilders>true</runAllBuilders> <runAllBuilders>true</runAllBuilders>
</target> </target>
<target name="format" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments>$&lt;cmake4eclipse_dyn&gt;</buildArguments>
<buildTarget>format</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
<target name="format-check" path="" targetID="org.eclipse.cdt.build.MakeTargetBuilder">
<buildCommand>make</buildCommand>
<buildArguments>$&lt;cmake4eclipse_dyn&gt;</buildArguments>
<buildTarget>format-check</buildTarget>
<stopOnError>true</stopOnError>
<useDefaultCommand>true</useDefaultCommand>
<runAllBuilders>true</runAllBuilders>
</target>
</buildTargets> </buildTargets>
</storageModule> </storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1730410661.719145049;cdt.managedbuild.toolchain.gnu.base.1730410661.719145049.;cdt.managedbuild.tool.gnu.cpp.compiler.base.1534023345;cdt.managedbuild.tool.gnu.cpp.compiler.input.1510234384">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1730410661.719145049;cdt.managedbuild.toolchain.gnu.base.1730410661.719145049.;cdt.managedbuild.tool.gnu.c.compiler.base.1971017117;cdt.managedbuild.tool.gnu.c.compiler.input.1521427508">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1730410661;cdt.managedbuild.toolchain.gnu.base.1730410661.218663890;cdt.managedbuild.tool.gnu.c.compiler.base.415892287;cdt.managedbuild.tool.gnu.c.compiler.input.1806041557">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.base.1730410661;cdt.managedbuild.toolchain.gnu.base.1730410661.218663890;cdt.managedbuild.tool.gnu.cpp.compiler.base.1878089590;cdt.managedbuild.tool.gnu.cpp.compiler.input.705150349">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</scannerConfigBuildInfo>
</storageModule>
<storageModule cmakelistsFolder="" moduleId="de.marw.cmake4eclipse.mbs.settings">
<targets>
<target name=""/>
</targets>
</storageModule>
</cproject> </cproject>

View File

@@ -32,9 +32,6 @@ find_package(elfio)
find_package(Boost REQUIRED COMPONENTS program_options QUIET) find_package(Boost REQUIRED COMPONENTS program_options QUIET)
include(SystemCPackage) include(SystemCPackage)
set(CLANG_FORMAT_EXCLUDE_PATTERNS "scc" "dbt-rise-riscv")
find_package(ClangFormat)
if(ENABLE_COVERAGE) if(ENABLE_COVERAGE)
include(CodeCoverage) include(CodeCoverage)
append_coverage_compiler_flags() append_coverage_compiler_flags()
@@ -58,9 +55,11 @@ if(ENABLE_CLANGTIDY)
endif() endif()
endif () endif ()
set(CLANG_FORMAT_EXCLUDE_PATTERNS /build/ /scc/ /dbt-rise-core/ /dbt-rise-riscv/)
add_subdirectory(scc) add_subdirectory(scc)
add_subdirectory(dbt-rise-core) add_subdirectory(dbt-rise-core)
add_subdirectory(dbt-rise-riscv) add_subdirectory(dbt-rise-riscv)
if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dbt-rise-plugins) if(IS_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}/dbt-rise-plugins)
add_subdirectory(dbt-rise-plugins) add_subdirectory(dbt-rise-plugins)
endif() endif()
@@ -71,6 +70,8 @@ if(NOT LIBS_ONLY)
add_subdirectory(src) add_subdirectory(src)
endif() endif()
find_package(ClangFormat)
if(FW_BUILD) if(FW_BUILD)
include(FetchContent) include(FetchContent)
set(FETCHCONTENT_BASE_DIR ${CMAKE_CURRENT_BINARY_DIR}/..) set(FETCHCONTENT_BASE_DIR ${CMAKE_CURRENT_BINARY_DIR}/..)

2
scc

Submodule scc updated: 2c3c85ad83...81c76224b8

View File

@@ -5,7 +5,6 @@
*/ */
#include "CLIParser.h" #include "CLIParser.h"
#include <scc/report.h>
#include <iostream> #include <iostream>
#include <iss/log_categories.h> #include <iss/log_categories.h>
#include <scc/report.h> #include <scc/report.h>
@@ -20,31 +19,34 @@ using namespace sc_core;
namespace { namespace {
std::unordered_set<std::string> backend_opts = {"interp", "tcc", "llvm", "asmjit"}; std::unordered_set<std::string> backend_opts = {"interp", "tcc", "llvm", "asmjit"};
} }
CLIParser::CLIParser(int argc, char *argv[]) CLIParser::CLIParser(int argc, char* argv[])
: desc("Options") : desc("Options")
, valid(false) { , valid(false) {
build(); build();
try { try {
po::store(po::parse_command_line(argc, argv, desc), vm_); // can throw po::store(po::parse_command_line(argc, argv, desc), vm_); // can throw
// --help option // --help option
if (vm_.count("help")) { if(vm_.count("help")) {
std::cout << "DBT-RISE-TGC based virtual platform of TGC cores" << std::endl << desc << std::endl; std::cout << "DBT-RISE-TGC based virtual platform of TGC cores" << std::endl << desc << std::endl;
} }
po::notify(vm_); // throws on error, so do after help in case there are any problems po::notify(vm_); // throws on error, so do after help in case there are any problems
valid = true; valid = true;
if(backend_opts.find(vm_["backend"].as<std::string>())== std::end(backend_opts)) if(backend_opts.find(vm_["backend"].as<std::string>()) == std::end(backend_opts))
throw po::error("Illegal value for switch backend"); throw po::error("Illegal value for switch backend");
} catch (po::error &e) { } catch(po::error& e) {
std::cerr << "ERROR: " << e.what() << std::endl << std::endl; std::cerr << "ERROR: " << e.what() << std::endl << std::endl;
std::cerr << desc << std::endl; std::cerr << desc << std::endl;
exit(-1); exit(-1);
} }
auto log_level = vm_["verbose"].as<scc::log>(); auto log_level = vm_["verbose"].as<scc::log>();
auto log_level_num = static_cast<unsigned>(log_level); auto log_level_num = static_cast<unsigned>(log_level);
LOGGER(DEFAULT)::reporting_level() = logging::as_log_level(log_level_num > 6 ? 6 : log_level_num);; LOGGER(DEFAULT)::reporting_level() = logging::as_log_level(log_level_num > 6 ? 6 : log_level_num);
;
LOGGER(DEFAULT)::print_time() = false; LOGGER(DEFAULT)::print_time() = false;
LOG_OUTPUT(DEFAULT)::ostream() = &std::cout; LOG_OUTPUT(DEFAULT)::ostream() = &std::cout;
LOGGER(connection)::reporting_level() = logging::as_log_level(log_level_num > 4 ? log_level_num-1 : log_level_num);; LOGGER(connection)::reporting_level() =
logging::as_log_level(log_level_num > 4 ? log_level_num - 1 : log_level_num);
;
LOGGER(connection)::print_time() = false; LOGGER(connection)::print_time() = false;
LOG_OUTPUT(connection)::ostream() = &std::cout; LOG_OUTPUT(connection)::ostream() = &std::cout;
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
@@ -59,7 +61,8 @@ CLIParser::CLIParser(int argc, char *argv[])
scc::stream_redirection cerr_redir(std::cerr, scc::log::ERROR); scc::stream_redirection cerr_redir(std::cerr, scc::log::ERROR);
sc_core::sc_report_handler::set_actions("/IEEE_Std_1666/deprecated", sc_core::SC_DO_NOTHING); sc_core::sc_report_handler::set_actions("/IEEE_Std_1666/deprecated", sc_core::SC_DO_NOTHING);
sc_core::sc_report_handler::set_actions(sc_core::SC_ID_MORE_THAN_ONE_SIGNAL_DRIVER_, sc_core::SC_DO_NOTHING); sc_core::sc_report_handler::set_actions(sc_core::SC_ID_MORE_THAN_ONE_SIGNAL_DRIVER_, sc_core::SC_DO_NOTHING);
sc_core::sc_report_handler::set_actions(sc_core::SC_ERROR, sc_core::SC_LOG | sc_core::SC_CACHE_REPORT | sc_core::SC_DISPLAY | sc_core::SC_STOP); sc_core::sc_report_handler::set_actions(sc_core::SC_ERROR, sc_core::SC_LOG | sc_core::SC_CACHE_REPORT |
sc_core::SC_DISPLAY | sc_core::SC_STOP);
} }
void CLIParser::build() { void CLIParser::build() {

View File

@@ -8,22 +8,22 @@
#define PLATFORM_SRC_CLIPARSER_H_ #define PLATFORM_SRC_CLIPARSER_H_
#include <boost/program_options.hpp> #include <boost/program_options.hpp>
#include <scc/report.h>
#include <memory> #include <memory>
#include <scc/report.h>
class CLIParser { class CLIParser {
public: public:
CLIParser(int argc, char *argv[]); CLIParser(int argc, char* argv[]);
virtual ~CLIParser(); virtual ~CLIParser();
bool is_valid() { return valid; } bool is_valid() { return valid; }
const boost::program_options::variables_map &vm() { return vm_; } const boost::program_options::variables_map& vm() { return vm_; }
bool is_set(const char *option) { return vm_.count(option) != 0; } bool is_set(const char* option) { return vm_.count(option) != 0; }
template <typename T> const T &get(const char *option) { return vm_[option].as<T>(); } template <typename T> const T& get(const char* option) { return vm_[option].as<T>(); }
private: private:
void build(); void build();

View File

@@ -10,18 +10,18 @@
#include <scc/configurable_tracer.h> #include <scc/configurable_tracer.h>
#include <scc/configurer.h> #include <scc/configurer.h>
#include <scc/hierarchy_dumper.h> #include <scc/hierarchy_dumper.h>
#include <scc/perf_estimator.h>
#include <scc/report.h> #include <scc/report.h>
#include <scc/scv/scv_tr_db.h> #include <scc/scv/scv_tr_db.h>
#include <scc/tracer.h> #include <scc/tracer.h>
#include <scc/perf_estimator.h>
#ifdef WITH_LLVM #ifdef WITH_LLVM
#include <iss/llvm/jit_helper.h> #include <iss/llvm/jit_helper.h>
#endif #endif
#include <boost/program_options.hpp>
#include "vp/tb.h" #include "vp/tb.h"
#include <iostream> #include <boost/program_options.hpp>
#include <fstream> #include <fstream>
#include <iostream>
#include <sstream> #include <sstream>
#ifdef ERROR #ifdef ERROR
#undef ERROR #undef ERROR
@@ -38,7 +38,7 @@ const size_t ERRORR_IN_COMMAND_LINE = 1;
const size_t SUCCESS = 0; const size_t SUCCESS = 0;
} // namespace } // namespace
int sc_main(int argc, char *argv[]) { int sc_main(int argc, char* argv[]) {
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// SystemC >=2.2 got picky about multiple drivers so disable check // SystemC >=2.2 got picky about multiple drivers so disable check
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
@@ -47,7 +47,8 @@ int sc_main(int argc, char *argv[]) {
// CLI argument parsing & logging setup // CLI argument parsing & logging setup
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
CLIParser parser(argc, argv); CLIParser parser(argc, argv);
if (!parser.is_valid()) return ERRORR_IN_COMMAND_LINE; if(!parser.is_valid())
return ERRORR_IN_COMMAND_LINE;
scc::stream_redirection cout_redir(std::cout, scc::log::INFO); scc::stream_redirection cout_redir(std::cout, scc::log::INFO);
scc::stream_redirection cerr_redir(std::cerr, scc::log::ERROR); scc::stream_redirection cerr_redir(std::cerr, scc::log::ERROR);
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
@@ -69,14 +70,16 @@ int sc_main(int argc, char *argv[]) {
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
std::unique_ptr<scc::configurable_tracer> tracer; std::unique_ptr<scc::configurable_tracer> tracer;
if( auto trace_level = parser.get<unsigned>("trace-level")) { if(auto trace_level = parser.get<unsigned>("trace-level")) {
auto file_name = parser.get<std::string>("trace-file"); auto file_name = parser.get<std::string>("trace-file");
auto enable_sig_trace = (trace_level&0x1) != 0;// bit0 enables sig trace auto enable_sig_trace = (trace_level & 0x1) != 0; // bit0 enables sig trace
auto tx_trace_type = static_cast<scc::tracer::file_type>(trace_level >> 1); // bit3-bit1 define the kind of transaction trace auto tx_trace_type =
static_cast<scc::tracer::file_type>(trace_level >> 1); // bit3-bit1 define the kind of transaction trace
auto trace_default_on = parser.is_set("trace-default-on"); auto trace_default_on = parser.is_set("trace-default-on");
cfg.set_value("$$$scc_tracer$$$.tx_trace_type", static_cast<unsigned>(scc::tracer::file_type::FTR)); cfg.set_value("$$$scc_tracer$$$.tx_trace_type", static_cast<unsigned>(scc::tracer::file_type::FTR));
cfg.set_value("$$$scc_tracer$$$.sig_trace_type", static_cast<unsigned>(scc::tracer::file_type::SC_VCD)); cfg.set_value("$$$scc_tracer$$$.sig_trace_type", static_cast<unsigned>(scc::tracer::file_type::SC_VCD));
tracer = scc::make_unique<scc::configurable_tracer>(file_name, tx_trace_type, enable_sig_trace, trace_default_on); tracer =
scc::make_unique<scc::configurable_tracer>(file_name, tx_trace_type, enable_sig_trace, trace_default_on);
} }
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// instantiate top level // instantiate top level
@@ -85,18 +88,21 @@ int sc_main(int argc, char *argv[]) {
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// add non-implemented 'enableTracing' properties // add non-implemented 'enableTracing' properties
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
if(tracer) tracer->add_control(); if(tracer)
tracer->add_control();
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// dump configuration if requested // dump configuration if requested
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
if (parser.get<std::string>("dump-config").size() > 0) { if(parser.get<std::string>("dump-config").size() > 0) {
std::ofstream of{parser.get<std::string>("dump-config")}; std::ofstream of{parser.get<std::string>("dump-config")};
if (of.is_open()) cfg.dump_configuration(of, true); if(of.is_open())
cfg.dump_configuration(of, true);
} }
cfg.configure(); cfg.configure();
std::unique_ptr<scc::hierarchy_dumper> dumper; std::unique_ptr<scc::hierarchy_dumper> dumper;
if(parser.is_set("dump-structure")) if(parser.is_set("dump-structure"))
dumper.reset(new scc::hierarchy_dumper(parser.get<std::string>("dump-structure"), scc::hierarchy_dumper::D3JSON)); dumper.reset(
new scc::hierarchy_dumper(parser.get<std::string>("dump-structure"), scc::hierarchy_dumper::D3JSON));
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
// overwrite config with command line settings // overwrite config with command line settings
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
@@ -104,23 +110,25 @@ int sc_main(int argc, char *argv[]) {
cfg.set_value(core_path + ".dump_ir", parser.is_set("dump-ir")); cfg.set_value(core_path + ".dump_ir", parser.is_set("dump-ir"));
cfg.set_value(core_path + ".backend", parser.get<std::string>("backend")); cfg.set_value(core_path + ".backend", parser.get<std::string>("backend"));
cfg.set_value(core_path + ".core_type", parser.get<std::string>("isa")); cfg.set_value(core_path + ".core_type", parser.get<std::string>("isa"));
if(parser.is_set("plugin")){ if(parser.is_set("plugin")) {
auto plugins = util::join(parser.get<std::vector<std::string>>("plugin"),","); auto plugins = util::join(parser.get<std::vector<std::string>>("plugin"), ",");
cfg.set_value(core_path + ".plugins", plugins); cfg.set_value(core_path + ".plugins", plugins);
} }
if (parser.is_set("elf")) cfg.set_value(core_path + ".elf_file", parser.get<std::string>("elf")); if(parser.is_set("elf"))
if (parser.is_set("quantum")) cfg.set_value(core_path + ".elf_file", parser.get<std::string>("elf"));
if(parser.is_set("quantum"))
tlm::tlm_global_quantum::instance().set(sc_core::sc_time(parser.get<unsigned>("quantum"), sc_core::SC_NS)); tlm::tlm_global_quantum::instance().set(sc_core::sc_time(parser.get<unsigned>("quantum"), sc_core::SC_NS));
if (parser.is_set("reset")) { if(parser.is_set("reset")) {
auto str = parser.get<std::string>("reset"); auto str = parser.get<std::string>("reset");
uint64_t start_address = str.find("0x") == 0 ? std::stoull(str.substr(2), nullptr, 16) : std::stoull(str, nullptr, 10); uint64_t start_address =
str.find("0x") == 0 ? std::stoull(str.substr(2), nullptr, 16) : std::stoull(str, nullptr, 10);
cfg.set_value(core_path + ".reset_address", start_address); cfg.set_value(core_path + ".reset_address", start_address);
} }
if (parser.is_set("disass")) { if(parser.is_set("disass")) {
cfg.set_value(core_path + ".enable_disass", true); cfg.set_value(core_path + ".enable_disass", true);
LOGGER(disass)::reporting_level() = logging::INFO; LOGGER(disass)::reporting_level() = logging::INFO;
auto file_name = parser.get<std::string>("disass"); auto file_name = parser.get<std::string>("disass");
if (file_name.length() > 0) { if(file_name.length() > 0) {
LOG_OUTPUT(disass)::stream() = fopen(file_name.c_str(), "w"); LOG_OUTPUT(disass)::stream() = fopen(file_name.c_str(), "w");
LOGGER(disass)::print_time() = false; LOGGER(disass)::print_time() = false;
LOGGER(disass)::print_severity() = false; LOGGER(disass)::print_severity() = false;
@@ -130,12 +138,13 @@ int sc_main(int argc, char *argv[]) {
// run simulation // run simulation
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
try { try {
if (parser.is_set("max_time")) { if(parser.is_set("max_time")) {
sc_core::sc_start(scc::parse_from_string(parser.get<std::string>("max_time"))); sc_core::sc_start(scc::parse_from_string(parser.get<std::string>("max_time")));
} else } else
sc_core::sc_start(); sc_core::sc_start();
if (!sc_core::sc_end_of_simulation_invoked()) sc_core::sc_stop(); if(!sc_core::sc_end_of_simulation_invoked())
} catch (sc_core::sc_report &rep) { sc_core::sc_stop();
} catch(sc_core::sc_report& rep) {
sc_core::sc_report_handler::get_handler()(rep, sc_core::SC_DISPLAY | sc_core::SC_STOP); sc_core::sc_report_handler::get_handler()(rep, sc_core::SC_DISPLAY | sc_core::SC_STOP);
} }
return 0; return 0;

View File

@@ -1,21 +1,22 @@
/* /*
* Copyright (c) 2023 - 2024 MINRES Technologies GmbH * Copyright (c) 2023 - 2024 MINRES Technologies GmbH
* *
* SPDX-License-Identifier: Apache-2.0 * SPDX-License-Identifier: Apache-2.0
* *
* Generated at 2024-02-08 14:41:56 UTC * Generated at 2024-02-08 14:41:56 UTC
* by peakrdl_mnrs version 1.2.2 * by peakrdl_mnrs version 1.2.2
*/ */
#pragma once #pragma once
// need double braces, see https://stackoverflow.com/questions/6893700/how-to-construct-stdarray-object-with-initializer-list#6894191 // need double braces, see
// https://stackoverflow.com/questions/6893700/how-to-construct-stdarray-object-with-initializer-list#6894191
const std::array<scc::target_memory_map_entry<scc::LT>, 7> PipelinedMemoryBusToApbBridge_map = {{ const std::array<scc::target_memory_map_entry<scc::LT>, 7> PipelinedMemoryBusToApbBridge_map = {{
{ gpio0.socket, 0x0, 0xc }, {gpio0.socket, 0x0, 0xc},
{ uart0.socket, 0x1000, 0x14 }, {uart0.socket, 0x1000, 0x14},
{ timer0.socket, 0x20000, 0x1c }, {timer0.socket, 0x20000, 0x1c},
{ aclint.socket, 0x30000, 0xc000 }, {aclint.socket, 0x30000, 0xc000},
{ irq_ctrl.socket, 0x40000, 0x8 }, {irq_ctrl.socket, 0x40000, 0x8},
{ qspi.socket, 0x50000, 0x5c }, {qspi.socket, 0x50000, 0x5c},
{ boot_rom.target, 0x80000, 0x2000 }, {boot_rom.target, 0x80000, 0x2000},
}} ; }};

View File

@@ -11,13 +11,13 @@ namespace tgc_vp {
class rst_gen : public sc_core::sc_module { class rst_gen : public sc_core::sc_module {
SC_HAS_PROCESS(rst_gen); SC_HAS_PROCESS(rst_gen);
public: public:
rst_gen(sc_core::sc_module_name const& nm) { rst_gen(sc_core::sc_module_name const& nm) { SC_THREAD(run); }
SC_THREAD(run);
}
sc_core::sc_out<bool> rst_n{"rst_n"}; sc_core::sc_out<bool> rst_n{"rst_n"};
private: private:
void run(){ void run() {
rst_n.write(false); rst_n.write(false);
wait(100_ns); wait(100_ns);
rst_n.write(true); rst_n.write(true);

View File

@@ -17,7 +17,7 @@ using namespace vpvper::minres;
system::system(sc_core::sc_module_name nm) system::system(sc_core::sc_module_name nm)
: sc_core::sc_module(nm) : sc_core::sc_module(nm)
, NAMED(ahb_router, 3, 2) , NAMED(ahb_router, 3, 2)
, NAMED(apbBridge, PipelinedMemoryBusToApbBridge_map.size(), 1){ , NAMED(apbBridge, PipelinedMemoryBusToApbBridge_map.size(), 1) {
core_complex.ibus(ahb_router.target[0]); core_complex.ibus(ahb_router.target[0]);
core_complex.dbus(ahb_router.target[1]); core_complex.dbus(ahb_router.target[1]);
@@ -29,7 +29,7 @@ system::system(sc_core::sc_module_name nm)
ahb_router.set_target_range(2, 0xF0000000, 256_MB); ahb_router.set_target_range(2, 0xF0000000, 256_MB);
size_t i = 0; size_t i = 0;
for (const auto &e : PipelinedMemoryBusToApbBridge_map) { for(const auto& e : PipelinedMemoryBusToApbBridge_map) {
apbBridge.initiator.at(i)(e.target); apbBridge.initiator.at(i)(e.target);
apbBridge.set_target_range(i, e.start, e.size); apbBridge.set_target_range(i, e.start, e.size);
i++; i++;
@@ -42,7 +42,7 @@ system::system(sc_core::sc_module_name nm)
irq_ctrl.clk_i(clk_i); irq_ctrl.clk_i(clk_i);
qspi.clk_i(clk_i); qspi.clk_i(clk_i);
core_complex.clk_i(clk_i); core_complex.clk_i(clk_i);
//mem_ram.clk_i(clk_i); // mem_ram.clk_i(clk_i);
gpio0.rst_i(rst_s); gpio0.rst_i(rst_s);
uart0.rst_i(rst_s); uart0.rst_i(rst_s);
@@ -85,11 +85,11 @@ system::system(sc_core::sc_module_name nm)
SC_METHOD(gen_reset); SC_METHOD(gen_reset);
sensitive << erst_n; sensitive << erst_n;
} }
void system::gen_reset(){ void system::gen_reset() {
if(erst_n.read()) if(erst_n.read())
rst_s = 0; rst_s = 0;
else rst_s = 1; else
rst_s = 1;
} }
} // namespace tgc_vp
} /* namespace sysc */

View File

@@ -9,42 +9,42 @@
#include "minres/irq.h" #include "minres/irq.h"
#include "minres/timer.h" #include "minres/timer.h"
#include <array>
#include <cci_configuration>
#include <memory>
#include <minres/aclint.h> #include <minres/aclint.h>
#include <minres/gpio.h> #include <minres/gpio.h>
#include <minres/qspi.h> #include <minres/qspi.h>
#include <sysc/communication/sc_clock.h>
#include <sysc/communication/sc_signal_ports.h>
#include <sysc/core_complex.h>
#include <minres/uart.h> #include <minres/uart.h>
#include <cci_configuration>
#include <scc/memory.h> #include <scc/memory.h>
#include <scc/router.h> #include <scc/router.h>
#include <scc/utilities.h> #include <scc/utilities.h>
#include <sysc/communication/sc_clock.h>
#include <sysc/communication/sc_signal_ports.h>
#include <sysc/core_complex.h>
#include <sysc/kernel/sc_module.h>
#include <sysc/kernel/sc_time.h> #include <sysc/kernel/sc_time.h>
#include <sysc/utils/sc_vector.h> #include <sysc/utils/sc_vector.h>
#include <tlm/scc/tlm_signal_sockets.h> #include <tlm/scc/tlm_signal_sockets.h>
#include <array>
#include <memory>
#include <sysc/kernel/sc_module.h>
namespace tgc_vp { namespace tgc_vp {
class system : public sc_core::sc_module { class system : public sc_core::sc_module {
public: public:
SC_HAS_PROCESS(system);// NOLINT SC_HAS_PROCESS(system); // NOLINT
sc_core::sc_vector<sc_core::sc_out<bool>> pins_o{"pins_o",32}; sc_core::sc_vector<sc_core::sc_out<bool>> pins_o{"pins_o", 32};
sc_core::sc_vector<sc_core::sc_out<bool>> pins_oe_o{"pins_oe_o", 32}; sc_core::sc_vector<sc_core::sc_out<bool>> pins_oe_o{"pins_oe_o", 32};
sc_core::sc_vector<sc_core::sc_in<bool>> pins_i{"pins_i", 32}; sc_core::sc_vector<sc_core::sc_in<bool>> pins_i{"pins_i", 32};
sc_core::sc_out<bool> uart0_tx_o {"uart0_tx_o"}; sc_core::sc_out<bool> uart0_tx_o{"uart0_tx_o"};
sc_core::sc_in<bool> uart0_rx_i {"uart0_rx_i"}; sc_core::sc_in<bool> uart0_rx_i{"uart0_rx_i"};
sc_core::sc_vector<sc_core::sc_in<bool>> t0_clear_i {"t0_clear_i", vpvper::minres::timer::CLEAR_CNT}; sc_core::sc_vector<sc_core::sc_in<bool>> t0_clear_i{"t0_clear_i", vpvper::minres::timer::CLEAR_CNT};
sc_core::sc_vector<sc_core::sc_in<bool>> t0_tick_i {"t0_tick_i", vpvper::minres::timer::TICK_CNT-1}; sc_core::sc_vector<sc_core::sc_in<bool>> t0_tick_i{"t0_tick_i", vpvper::minres::timer::TICK_CNT - 1};
sc_core::sc_out<bool> ssclk_o{"ssclk_o"}; sc_core::sc_out<bool> ssclk_o{"ssclk_o"};
sc_core::sc_vector<sc_core::sc_out<bool>> dq_o{"dq_o", 4}; sc_core::sc_vector<sc_core::sc_out<bool>> dq_o{"dq_o", 4};
sc_core::sc_vector<sc_core::sc_out<bool>> dq_oe_o{"dq_oe_o", 4}; sc_core::sc_vector<sc_core::sc_out<bool>> dq_oe_o{"dq_oe_o", 4};
sc_core::sc_vector<sc_core::sc_in<bool>> dq_i{"dq_i", 4}; sc_core::sc_vector<sc_core::sc_in<bool>> dq_i{"dq_i", 4};
sc_core::sc_in<sc_core::sc_time> clk_i{"clk_i"}; sc_core::sc_in<sc_core::sc_time> clk_i{"clk_i"};
sc_core::sc_in<bool> erst_n{"erst_n"}; sc_core::sc_in<bool> erst_n{"erst_n"};
@@ -61,18 +61,20 @@ private:
vpvper::minres::irq_tl irq_ctrl{"irq_ctrl"}; vpvper::minres::irq_tl irq_ctrl{"irq_ctrl"};
vpvper::minres::qspi_tl qspi{"qspi"}; vpvper::minres::qspi_tl qspi{"qspi"};
scc::memory<128_kB, scc::LT> mem_ram {"mem_ram"}; scc::memory<128_kB, scc::LT> mem_ram{"mem_ram"};
scc::memory<8_kB, scc::LT> boot_rom {"boot_rom"}; scc::memory<8_kB, scc::LT> boot_rom{"boot_rom"};
sc_core::sc_signal<bool, sc_core::SC_MANY_WRITERS> rst_s{"rst_s"}, mtime_int_s{"mtime_int_s"}, msip_int_s{"msip_int_s"}; sc_core::sc_signal<bool, sc_core::SC_MANY_WRITERS> rst_s{"rst_s"}, mtime_int_s{"mtime_int_s"},
msip_int_s{"msip_int_s"};
sc_core::sc_vector<sc_core::sc_signal<bool, sc_core::SC_MANY_WRITERS>> irq_int_s{"irq_int_s", 32}, local_int_s{"local_int_s", 16};
sc_core::sc_vector<sc_core::sc_signal<bool, sc_core::SC_MANY_WRITERS>> irq_int_s{"irq_int_s", 32},
local_int_s{"local_int_s", 16};
sc_core::sc_signal<bool, sc_core::SC_MANY_WRITERS> core_int_s{"core_int_s"}; sc_core::sc_signal<bool, sc_core::SC_MANY_WRITERS> core_int_s{"core_int_s"};
void gen_reset(); void gen_reset();
#include "../vp/gen/PipelinedMemoryBusToApbBridge.h" #include "../vp/gen/PipelinedMemoryBusToApbBridge.h"
}; };
} /* namespace sysc */ } // namespace tgc_vp
#endif /* _PLATFORM_H_ */ #endif /* _PLATFORM_H_ */

View File

@@ -10,7 +10,8 @@
namespace tgc_vp { namespace tgc_vp {
SC_HAS_PROCESS(tb); SC_HAS_PROCESS(tb);
tb::tb(const sc_core::sc_module_name &nm): sc_core::sc_module(nm) { tb::tb(const sc_core::sc_module_name& nm)
: sc_core::sc_module(nm) {
top.erst_n(rst_n); top.erst_n(rst_n);
rst_gen.rst_n(rst_n); rst_gen.rst_n(rst_n);
top.pins_o(pins_o); top.pins_o(pins_o);
@@ -27,4 +28,4 @@ tb::tb(const sc_core::sc_module_name &nm): sc_core::sc_module(nm) {
top.clk_i(clk_i); top.clk_i(clk_i);
clk_i = 10_ns; clk_i = 10_ns;
} }
} } // namespace tgc_vp

View File

@@ -20,13 +20,13 @@ public:
tgc_vp::system top{"top"}; tgc_vp::system top{"top"};
tgc_vp::rst_gen rst_gen{"rst_gen"}; tgc_vp::rst_gen rst_gen{"rst_gen"};
sc_core::sc_signal<bool> rst_n{"rst_n"}; sc_core::sc_signal<bool> rst_n{"rst_n"};
sc_core::sc_vector<sc_core::sc_signal<bool>> pins_o{"pins_o",32}; sc_core::sc_vector<sc_core::sc_signal<bool>> pins_o{"pins_o", 32};
sc_core::sc_vector<sc_core::sc_signal<bool>> pins_oe_o{"pins_oe_o", 32}; sc_core::sc_vector<sc_core::sc_signal<bool>> pins_oe_o{"pins_oe_o", 32};
sc_core::sc_vector<sc_core::sc_signal<bool>> pins_i{"pins_i", 32}; sc_core::sc_vector<sc_core::sc_signal<bool>> pins_i{"pins_i", 32};
sc_core::sc_signal<bool> uart0_tx_o {"uart0_tx_o"}; sc_core::sc_signal<bool> uart0_tx_o{"uart0_tx_o"};
sc_core::sc_signal<bool> uart0_rx_i {"uart0_rx_i"}; sc_core::sc_signal<bool> uart0_rx_i{"uart0_rx_i"};
sc_core::sc_vector<sc_core::sc_signal<bool>> t0_clear_i {"t0_clear_i", vpvper::minres::timer::CLEAR_CNT}; sc_core::sc_vector<sc_core::sc_signal<bool>> t0_clear_i{"t0_clear_i", vpvper::minres::timer::CLEAR_CNT};
sc_core::sc_vector<sc_core::sc_signal<bool>> t0_tick_i {"t0_tick_i", vpvper::minres::timer::TICK_CNT-1}; sc_core::sc_vector<sc_core::sc_signal<bool>> t0_tick_i{"t0_tick_i", vpvper::minres::timer::TICK_CNT - 1};
sc_core::sc_signal<bool> ssclk_o{"ssclk_o"}; sc_core::sc_signal<bool> ssclk_o{"ssclk_o"};
sc_core::sc_vector<sc_core::sc_signal<bool>> dq_o{"dq_o", 4}; sc_core::sc_vector<sc_core::sc_signal<bool>> dq_o{"dq_o", 4};
sc_core::sc_vector<sc_core::sc_signal<bool>> dq_oe_o{"dq_oe_o", 4}; sc_core::sc_vector<sc_core::sc_signal<bool>> dq_oe_o{"dq_oe_o", 4};

2
vpvper

Submodule vpvper updated: 99f8c5dd4a...23230f8992