For a conan-only version please check the conan-only branch.
A simple C++ CMake project to jump-start development of SystemC-based models and systems. It also shows the power of using a package manager:
git clone https://github.com/Minres/SystemC-Quickstart
cd SystemC-Quickstart/
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build
gets you to build a SystemC simulation uisng an unoptimized Debug build (for an optimized release build replace Debug
with Release
). To deploy other libraries just add them into the package list in CMakeLists.txt e.g.:
conan_cmake_configure(REQUIRES systemc/2.3.3 systemc-cci/1.0.0 systemc-scv/2.0.1 fmt/8.0.1
OPTIONS systemc-cci:shared=False
SETTINGS compiler.cppstd=${CMAKE_CXX_STANDARD}
GENERATORS cmake_find_package)
is sufficient to be able to start using the FMT library in your models.
When using Eclipse CDT as developemnt environment it is highly recommended to install Martin Webers cmake4eclipse extension as it imports not only the cmake configuration settings rather also those coming from the conan packages
Currently only Linux and MacOS are tested
Building the project from source is simple. First you need to install conan.io according to the instructions and setup the Minres remote:
pip install -r requirements.txt
conan profile new default --detect
conan remote add minres https://git.minres.com/api/packages/Tooling/conan
Then clone the SystemC-Quickstart repo:
git clone https://github.com/Minres/SystemC-Quickstart.git
Now install needed packages (SystemC, CCI and SCV library), build the project and run it:
cd SystemC-Quickstart
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build
build/TransactionExample
Et voila you completed your first SystemC simulation even with transaction recording! If you would like to analyze the recording output further just download the latest release of SCViewer to open the transaction_example.txlog.
Install needed packages (SystemC and SCV library) and set SYSTEMC_HOME and SCV_HOME accordingly (if you install SCV in the same location than SystemC then SYSTEMC_HOME environment variable is sufficient).
Clone the SystemC-Quickstart repo:
git clone https://github.com/Minres/SystemC-Quickstart.git
cd SystemC-Quickstart
fix the CMakeLists.txt by removing the line
setup_conan()
Build the project and run it:
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build
build/TransactionExample
If you encounter issues using conan when linking wrt. c++11 symbols you might have run into GCC ABI incompatibility introduced from GCC 5.0 onwards. You can fix this by adding '-s compiler.libcxx=libstdc++11' to the conan call or changing compiler.libcxx to
compiler.libcxx=libstdc++11
in $HOME/.conan/profiles/default
#prepare system
sudo apt-get install -y git python-pip build-essential cmake libloki-dev zlib1g-dev libncurses5-dev \
libboost-dev libboost-program-options-dev libboost-system-dev libboost-thread-dev llvm-dev llvm-doc
#install conan
pip install --user conan
export PATH=${PATH}:$HOME/.local/bin
#prepare system
dnf install @development-tools gcc-c++ boost-devel zlib-devel loki-lib-devel cmake python2 python3 llvm-devel llvm-static
#install conan
pip3 install --user conan
export PATH=${PATH}:$HOME/.local/bin
# configure conan
conan remote add minres https://git.minres.com/api/packages/Tooling/conan
conan profile new default --detect
# clone the project
git clone https://github.com/Minres/SystemC-Quickstart.git
cd SystemC-Quickstart
cmake -S . -B build -DCMAKE_BUILD_TYPE=Debug
cmake --build build
build/TransactionExample