- How to install SystemC TLM models in MAC
- download SystemC2.3
- cd $
- %mkdir build
- %cd build
- %../configure
- %make install
- %export SYSTEMC_HOME=$
- cd $
/examples/tlm/build-unix - replace Makefile.config TARGET_ARCH ?= macosx64
- make install
- embedded SystemC to python env
- advantages
- script language easy to extend
- more libraries support
- more easily to reuse and rebuild(no compiler knowledge)
- swig
- download and setup
- how to do it?
- wrapper SystemC thread/method to python call back
- void sc_module_swig::method (PyObject * f){
sc_python_callback * callback =
new sc_python_callback (f);
PyObject* name = PyObject_GetAttrString (f,"__name__");
if(name == NULL || !PyString_Check(name)){
std::cerr << "python name error\n";
return;
}
sc_method_handle handle = simcontext()->
register_method_process(
PyString_AsString (name), callback,this );
sc_module::sensitive << handle;
sc_module::sensitive_pos << handle;
sc_module::sensitive_neg << handle;
} - wrapper SystemC start/end simulation
class sc_module_swig : public sc_module {
public:sc_module_swig (const char * nm): sc_module ((sc_module_name)nm){}
virtual void beforeEndOfElaboration(){}
virtual void endOfElaboration(){}
virtual void startOfSimulation(){}
virtual void endOfSimulation (){}
inline void dontInitialize ()
{sc_module::dont_initialize ();}
inline sc_sensitive & getSensitive (){return sensitive;}
...
protected:
inline void before_end_of_elaboration()
{this->beforeEndOfElaboration ();}
inline void end_of_elaboration()
{this->endOfElaboration ();}
inline void start_of_simulation()
{this->startOfSimulation ();}
inline void end_of_simulation()
{this->endOfSimulation ();}
...
};- wrapper SystemC module
- set up SystemC map table "*.i"
- %module sc_module_swig
%{
#include "systemc.h"
#include "sc_module_swig.h"
%}
%include "sc_module_swig.h" - swig -c++ -I"
-python *.i - ref
2013年2月12日 星期二
python + SystemC = pySystemC
Wrapper SystemC TLM models in Python
訂閱:
張貼留言 (Atom)
沒有留言:
張貼留言