Jump to content

maarten

Members
  • Content Count

    2
  • Joined

  • Last visited

About maarten

  • Rank
    Member

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

  1. @Philipp A Hartmann Many thanks! That fixed the problem! @Eyck The systemc package is available for the conan package manager. Since conan is a simple python package, it can be installed as python -m pip install --user conan I'll create a very simple project to show you how easy it is to use. Create a conanfile.txt file: [requires] systemc/2.3.3 [generators] cmake cmake_find_package Create a simple systemc model, systemc_example.cpp: #include <systemc.h> #include <iostream> SC_MODULE(Not1) { sc_in<bool> in; sc_out<bool> out; SC_CTOR(Not1) : in("in"), out("out") { SC_METHOD(behaviors); sensitive << in; } void behaviors() { out.write(!in); } }; int sc_main (int argc, char* argv[]) { sc_signal<bool> in; sc_signal<bool> out; Not1 notm("not"); notm.in(in); notm.out(out); for (unsigned i = 4; i; --i) { in = false; sc_start(1, SC_NS); std::cout << "@" << sc_time_stamp() <<" in = " << in << " out = " << out << "\n"; in = true; sc_start(1, SC_NS); std::cout << "@" << sc_time_stamp() <<" in = " << in << " out = " << out << "\n"; } return 0; } Create a CMakeLists.txt build script: cmake_minimum_required(VERSION 3.0) project(systemc_conan) # Include and run file generated by 'cmake' generator: # this makes sure your compiler is the same as conan thinks it is include("${CMAKE_BINARY_DIR}/conanbuildinfo.cmake") conan_basic_setup(TARGETS) list(APPEND CMAKE_MODULE_PATH "${CMAKE_BINARY_DIR}") # Find systemc using the 'cmake_find_package' generator find_package(SystemC REQUIRED) add_executable(systemc_example systemc_example.cpp) target_link_libraries(systemc_example SystemC::SystemC) Run the following commands to install/download the dependencies and build the project. mkdir build && cd build conan install .. cmake .. # We can run the example bin/systemc_example Installing a dependency using conan, means downloading them and saving them to a path in the user directory. On Linux, this is ~/.conan/data/systemc/2.3.3/_/_/package. This is a list of all available systemc configurations (os/arch/compiler) The build script for conan is available online systemc-cci will also be availble soon
  2. I'm trying to use Accellera's SystemC on Windows 10, using Visual Studio 15 2017. I'm using the systemc package from conan. So systemc is built using cmake. Using the simple systemc module at the bottom of this post, a read access violation is thrown. At the crash site, the following code is executed: (m_semantics_host_p->*m_semantics_method_p)(); Some advice about how to fix this problem would be appreciated. This code runs fine on mingw, so I assume the problem is MSVC specific. The call stack is: > main.exe!sc_core::sc_process_b::semantics() Line 685 C++ main.exe!sc_core::sc_method_process::run_process() Line 306 C++ main.exe!sc_core::sc_simcontext::crunch(bool once) Line 486 C++ main.exe!sc_core::sc_simcontext::simulate(const sc_core::sc_time & duration) Line 888 C++ main.exe!sc_core::sc_start(const sc_core::sc_time & duration, sc_core::sc_starvation_policy p) Line 1722 C++ main.exe!sc_core::sc_start(int duration, sc_core::sc_time_unit unit, sc_core::sc_starvation_policy p) Line 106 C++ main.exe!sc_main(int argc, char * * argv) Line 27 C++ main.exe!sc_elab_and_sim(int argc, char * * argv) Line 89 C++ main.exe!main(int argc, char * * argv) Line 37 C++ [External Code] simple module: #include <systemc.h> #include <iostream> SC_MODULE(Not1) { sc_in<bool> in; sc_out<bool> out; SC_CTOR(Not1) : in("in"), out("out") { SC_METHOD(behaviors); sensitive << in; } void behaviors() { out.write(!in); } }; int sc_main (int argc, char* argv[]) { sc_signal<bool> in; sc_signal<bool> out; Not1 notm("not"); notm.in(in); notm.out(out); for (unsigned i = 4; i; --i) { in = false; sc_start(1, SC_NS); std::cout << "@" << sc_time_stamp() <<" in = " << in << " out = " << out << "\n"; in = true; sc_start(1, SC_NS); std::cout << "@" << sc_time_stamp() <<" in = " << in << " out = " << out << "\n"; } return 0; }
×
×
  • Create New...