From 0120610f83fe459e5d4a0d3b5d238ba997f3d0a6 Mon Sep 17 00:00:00 2001 From: Eyck Jentzsch Date: Tue, 1 Jan 2019 14:45:58 +0100 Subject: [PATCH] Added SystemC toplevel for comparison purposes --- CMakeLists.txt | 1 + components/CMakeLists.txt | 5 +--- top/CMakeLists.txt | 4 ++++ top/sc_main.cpp | 49 +++++++++++++++++++++++++++++++++++++++ 4 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 top/CMakeLists.txt create mode 100644 top/sc_main.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index 07d171f..37d588b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -72,6 +72,7 @@ include(sc-components/cmake/clang-format.cmake) add_subdirectory(sc-components) add_subdirectory(components) +add_subdirectory(top) # CTest is a testing tool that can be used to test your project. # enable_testing() diff --git a/components/CMakeLists.txt b/components/CMakeLists.txt index 1b05f9d..ea1c1af 100644 --- a/components/CMakeLists.txt +++ b/components/CMakeLists.txt @@ -1,15 +1,12 @@ -FILE(GLOB LibHeaders *.h) -set(LIB_HEADERS ${LibHeaders} ) set(LIB_SOURCES initiator.cpp logging.cpp target.cpp ) - # Define two variables in order not to repeat ourselves. set(LIBRARY_NAME components) - # Define the library add_library(${LIBRARY_NAME} SHARED ${LIB_SOURCES}) target_link_libraries (${LIBRARY_NAME} LINK_PUBLIC sc-components) +target_include_directories (components PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/top/CMakeLists.txt b/top/CMakeLists.txt new file mode 100644 index 0000000..818261c --- /dev/null +++ b/top/CMakeLists.txt @@ -0,0 +1,4 @@ +cmake_minimum_required(VERSION 3.3) +set(APP_NAME top) +add_executable(${APP_NAME} sc_main.cpp) +target_link_libraries (${APP_NAME} LINK_PUBLIC components) diff --git a/top/sc_main.cpp b/top/sc_main.cpp new file mode 100644 index 0000000..ed65ad2 --- /dev/null +++ b/top/sc_main.cpp @@ -0,0 +1,49 @@ +//////////////////////////////////////////////////////////////////////////////// +// Copyright 2017 eyck@minres.com +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. +//////////////////////////////////////////////////////////////////////////////// +/* + * sc_main.cpp + * + * Created on: 17.09.2017 + * Author: eyck@minres.com + */ + +#include "top.h" +#include + +using namespace scc; + +int sc_main(int argc, char *argv[]) { + /////////////////////////////////////////////////////////////////////////// + // configure logging + /////////////////////////////////////////////////////////////////////////// + scc::init_logging(logging::INFO); + + /////////////////////////////////////////////////////////////////////////// + // instantiate top level + /////////////////////////////////////////////////////////////////////////// + Top i_top("i_top"); + + /////////////////////////////////////////////////////////////////////////// + // run simulation + /////////////////////////////////////////////////////////////////////////// + sc_start(); + // todo: provide end-of-simulation macros + + if (!sc_core::sc_end_of_simulation_invoked()) { + sc_core::sc_stop(); + } + return 0; +}