develop #2
|
@ -6,7 +6,7 @@
|
|||
|
||||
#include "PyScModule.h"
|
||||
#define PY_SSIZE_T_CLEAN
|
||||
#include <python3.6/Python.h>
|
||||
#include <Python.h>
|
||||
|
||||
class TPyScriptThreadLocker {
|
||||
PyGILState_STATE m_state;
|
||||
|
|
52
README.md
52
README.md
|
@ -4,26 +4,64 @@ A Python 3 package to use SystemC from Python
|
|||
|
||||
## How to setup the environment
|
||||
|
||||
The installation for PySysC is as follows (using bash shell):
|
||||
The installation for PySysC is as follows (using bash shell). The process has
|
||||
been tested under CentOS7 and Ubuntu 20.04. Make sure a newer version of gcc
|
||||
is in your path (tested with gcc-6.3.0). Also the SystemC installation has to
|
||||
be reference with the environment variable SYSTEMC_HOME.
|
||||
|
||||
If you get an error complaining about
|
||||
missing Python.h, you need to install Python development headers. See the
|
||||
articel under https://blog.ducthinh.net/gcc-no-such-file-python-h.
|
||||
|
||||
```
|
||||
# create virtual environment
|
||||
python3 -m venv pysysc-env
|
||||
# and enable it
|
||||
# and avtivate it
|
||||
. pysysc-env/bin/activate
|
||||
# install needed packages
|
||||
# update pip to mekae sure we have the newest version
|
||||
python3 -m pip install --upgrade pip
|
||||
# install wheel package
|
||||
python3 -m pip install wheel
|
||||
# install cppyy, C++ std version needs to match the version used to build the SystemC library
|
||||
# install cppyy, C++ std version needs to match the version used when building the SystemC library
|
||||
STDCXX=11 python3 -m pip install cppyy
|
||||
# clone of PySysC
|
||||
git clone https://git.minres.com/SystemC/PySysC.git
|
||||
# install PySysC, for development PySysC use 'python3 -m pip install -e`
|
||||
python3 -m pip install -e PySysC
|
||||
SYSTEMC_HOME=<path to SystemC> python3 -m pip install -e PySysC
|
||||
```
|
||||
|
||||
## Testing (preliminary)
|
||||
## Running the example
|
||||
|
||||
To use the tests you also need to clone and build the PySysC-SC repo as sibling of PySysC. It contains the the code and libraries being used in the test.
|
||||
To run the example you also need to clone and build the PySysC-SC repo. It contains the the code and libraries being used in the example. This project uses Conan.io as package manager so it should be installed (see down below).
|
||||
To deactivate conan and use a SystemC installation just comment out the line `setup_conan()` in CMakeLists.txt and set the environment variable SYSTEMC_HOME.
|
||||
|
||||
### Run the router_eample.py
|
||||
|
||||
```
|
||||
# get the PySysC-SC repo
|
||||
git clone --recursive https://git.minres.com/SystemC/PySysC-SC.git
|
||||
# build the project libraries as shared libs
|
||||
cd PySysC-SC
|
||||
mkdir -p build/Debug
|
||||
cd build/Debug
|
||||
cmake -DCMAKE_BUILD_TYPE=Debug -DBUILD_SHARED_LIBS=ON ../..
|
||||
make -j components
|
||||
cd ../..
|
||||
# now we are ready to run the example
|
||||
python3 router_eample.py
|
||||
|
||||
```
|
||||
|
||||
### Installing conan
|
||||
|
||||
```
|
||||
# install conan into our virtual environment pysysc-env
|
||||
python3 -m pip install conan
|
||||
# create the default profile
|
||||
conan profile new default --detect
|
||||
# add the repo for SystemC packages used in the project
|
||||
conan remote add minres https://api.bintray.com/conan/minres/conan-repo
|
||||
```
|
||||
|
||||
## TODO
|
||||
|
||||
|
|
|
@ -138,6 +138,16 @@ def _load_pythonization_lib():
|
|||
if os.path.isfile(full_path):
|
||||
cppyy.include(full_path)
|
||||
return
|
||||
# could not be found in sintall, maybe development environment
|
||||
pkgDir = os.path.join(os.path.dirname( os.path.realpath(__file__)), '..')
|
||||
for file in os.listdir(pkgDir):
|
||||
if re.match(r'pysyscsc.*\.so', file):
|
||||
cppyy.load_library(os.path.join(pkgDir, file))
|
||||
full_path = os.path.join(pkgDir, 'PyScModule.h')
|
||||
if os.path.isfile(full_path):
|
||||
cppyy.include(full_path)
|
||||
return
|
||||
|
||||
|
||||
|
||||
def add_library(file, lib):
|
||||
|
|
|
@ -94,10 +94,10 @@ class Simulation(object):
|
|||
}
|
||||
cpp.sc_core.sc_report_handler.set_verbosity_level(verb_lut[log_level]);
|
||||
cpp.sc_core.sc_report_handler.set_actions(cpp.sc_core.SC_ID_MORE_THAN_ONE_SIGNAL_DRIVER_, cpp.sc_core.SC_DO_NOTHING);
|
||||
try:
|
||||
cpp.scc.init_cci("GlobalBroker")
|
||||
except Exception:
|
||||
pass
|
||||
#try:
|
||||
# cpp.scc.init_cci("GlobalBroker")
|
||||
#except Exception:
|
||||
# pass
|
||||
|
||||
@staticmethod
|
||||
def configure(name="", enable_vcd=False):
|
||||
|
|
2
setup.py
2
setup.py
|
@ -18,7 +18,7 @@ pysyscsc = Extension('pysyscsc',
|
|||
extra_compile_args = ['-std=c++11'],
|
||||
include_dirs = [sysc_home+'/include'],
|
||||
libraries = ['systemc'],
|
||||
library_dirs = [sysc_home+'/lib'],
|
||||
library_dirs = [sysc_home+'/lib64', sysc_home+'/lib'],
|
||||
sources = ['PyScModule.cpp'],
|
||||
depends = ['PyScModule.h'])
|
||||
|
||||
|
|
|
@ -13,7 +13,7 @@ from cppyy import gbl as cpp
|
|||
proj_home='../../PySysC-SC'
|
||||
conan_res = scpy.read_config_from_conan(os.path.join(proj_home, 'conanfile.txt'))
|
||||
scpy.load_systemc()
|
||||
scpy.add_include_path(os.path.join(proj_home, 'sc-components/incl'))
|
||||
scpy.add_include_path(os.path.join(proj_home, 'scc/incl'))
|
||||
scpy.add_library('scc.h', os.path.join(proj_home, 'build/Debug/lib/libscc.so'))
|
||||
scpy.add_include_path(os.path.join(proj_home, 'components'))
|
||||
scpy.add_library('components.h', os.path.join(proj_home, 'build/Debug/lib/libcomponents.so'))
|
||||
|
|
|
@ -22,7 +22,7 @@ class Test(unittest.TestCase):
|
|||
conan_path=os.path.join(proj_home, 'conanfile.txt')
|
||||
conan_res = scpy.read_config_from_conan(conan_path)
|
||||
scpy.load_systemc()
|
||||
scpy.add_include_path(os.path.join(proj_home, 'sc-components/incl'))
|
||||
scpy.add_include_path(os.path.join(proj_home, 'scc/incl'))
|
||||
scpy.add_library('scc.h', os.path.join(proj_home, 'build/Debug/lib/libscc.so'))
|
||||
scpy.add_include_path(os.path.join(proj_home, 'components'))
|
||||
scpy.add_library('components.h', os.path.join(proj_home, 'build/Debug/lib/libcomponents.so'))
|
||||
|
|
Loading…
Reference in New Issue