Hi Jack,

If you look at the HiPEAC tutorial slides there is an overview of "the big
picture" that shows roughly what is going on. gem5 kicks off a python
interpreter that reads your configuration script, for example se.py. This
script works with a bunch of Python classes to assemble and configure your
system. The System() class you mention is a Python class with a bunch of
knobs (and some of these also have ports).

Once you have got all these configured and assembled, the simulate.py
script goes and turns them into their corresponding C++ classes and passes
the parameters that you set in the Python code. Thus, the Python code is
used to assemble and configure the system (and orchestrate the
simulation), and the C++ classes actually _do_ something during the
simulation itself.

I hope that makes things a bit more clear.

Andreas

On 10/07/2013 16:52, "Jack Wu" <[email protected]> wrote:

>Dear Community,
>
>I am new to gem5 and trying to understand gem5 by looking at the source
>code starting from the main() function and configuration scripts such as
>config/example/se.py.
>
>I don't quite understand the interaction between python and c++. The
>following are what I think how it works, please correct me if something
>is not right.
>
>1) Python accessing c++ objects:
>
>-SWIG is used to provide the abstraction of c++ object through *.i files
>so these objects can be used in python like regular python objects (e.g.
>list or dictionary).
>
>- all c++ objects are compiled into a python module called "m5", which is
>compiled directly into the gem5 binary (e.g. gem.opt).
>
>-an example of using c++ objects in python would something like (from
>se.py):  system = System(Š.)  // I am guessing System is an object in c++?
>
>
>2) c++ accessing python objects:
>
>-while looking at the main() function, it calls initM5python(), which in
>turn calls a) EmeddedSwig::initAll() and b) EmbeddedPython::initAll()
>
>-I am quite confused about these function calls and their purpose. Are
>they trying to access certain objects in python?
>
>-For example:  I see an variable called "PyObject" and it's a  "typedef
>_object PyObject" (in src/sim/init.hh). However "_object" is declared as
>"struct _object" and it's not defined anywhere.
>
>-There are a bunch of other variables which are declared but not defined
>and it seems to have something to do with python, but I am not sure how
>this works
>
>
>Comments and feedback are much appreciated.
>
>Thanks In Advance,
>Jack
>_______________________________________________
>gem5-users mailing list
>[email protected]
>http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users
>


-- IMPORTANT NOTICE: The contents of this email and any attachments are 
confidential and may also be privileged. If you are not the intended recipient, 
please notify the sender immediately and do not disclose the contents to any 
other person, use it for any purpose, or store or copy the information in any 
medium.  Thank you.

_______________________________________________
gem5-users mailing list
[email protected]
http://m5sim.org/cgi-bin/mailman/listinfo/gem5-users

Reply via email to