| ~ | | Changeset 10426:c5ec71d6ca6f |
| | ~ | Changeset 10440:faea9dd0b3b1 |
| | |
|
| | | config: Add the ability to read a config file using C++ and Python |
| | |
|
| | | This patch adds the ability to load in config.ini files generated from
|
| | | gem5 into another instance of gem5 built without Python configuration
|
| | | support. The intended use case is for configuring gem5 when it is a
|
| | | library embedded in another simulation system. |
| | |
|
| | | A parallel config file reader is also provided purely in Python to
|
| | | demonstrate the approach taken and to provided similar functionality
|
| | | for as-yet-unknown use models. The Python configuration file reader
|
| | | can read both .ini and .json files. |
| | |
|
| | | C++ configuration file reading: |
| | |
|
| | | A command line option has been added for scons to enable C++ configuration
|
| | | file reading: --with-cxx-config |
| | |
|
| | | There is an example in util/cxx_config that shows C++ configuration in action.
|
| | | util/cxx_config/README explains how to build the example. |
| | |
|
| | | Configuration is achieved by the object CxxConfigManager. It handles
|
| | | reading object descriptions from a CxxConfigFileBase object which
|
| | | wraps a config file reader. The wrapper class CxxIniFile is provided
|
| | | which wraps an IniFile for reading .ini files. Reading .json files
|
| | | from C++ would be possible with a similar wrapper and a JSON parser. |
| | |
|
| | | After reading object descriptions, CxxConfigManager creates
|
| | | SimObjectParam-derived objects from the classes in the (generated with this
|
| | | patch) directory build/ARCH/cxx_config |
| | |
|
| | | CxxConfigManager can then build SimObjects from those SimObjectParams (in an
|
| | | order dictated by the SimObject-value parameters on other objects) and bind
|
| | | ports of the produced SimObjects. |
| | |
|
| | | A minimal set of instantiate-replacing member functions are provided by
|
| | | CxxConfigManager and few of the member functions of SimObject (such as drain)
|
| | | are extended onto CxxConfigManager. |
| | |
|
| | | Python configuration file reading (configs/example/read_config.py): |
| | |
|
| | | A Python version of the reader is also supplied with a similar interface to
|
| | | CxxConfigFileBase (In Python: ConfigFile) to config file readers. |
| | |
|
| | | The Python config file reading will handle both .ini and .json files. |
| | |
|
| | | The object construction strategy is slightly different in Python from the C++
|
| | | reader as you need to avoid objects prematurely becoming the children of other
|
| | | objects when setting parameters. |
| | |
|
| | | Port binding also needs to be strictly in the same port-index order as the
|
| | | original instantiation. |