gem5/util
Andreas Hansson 66df7b7fd4 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.
2014-10-16 05:49:37 -04:00
..
batch python: Move various utility classes into a new m5.util package so 2008-06-14 20:19:49 -07:00
ccdrv includes: sort all includes 2011-04-15 10:44:06 -07:00
cxx_config config: Add the ability to read a config file using C++ and Python 2014-10-16 05:49:37 -04:00
emacs Make the M5 Emacs C style default to inserting spaces instead 2006-01-30 14:32:00 -05:00
m5 arm: Add Makefile for aarch64 build of util/m5 2014-05-09 18:58:46 -04:00
minorview cpu: `Minor' in-order CPU model 2014-07-23 16:09:04 -05:00
pbs python: Move various utility classes into a new m5.util package so 2008-06-14 20:19:49 -07:00
statetrace ARM: Add vfpv3 support to native trace. 2011-05-04 20:38:26 -05:00
stats stats: fix usage of jobfile 2009-07-02 16:48:21 -07:00
streamline config: Update Streamline scripts and configs 2014-09-03 07:43:02 -04:00
tap includes: sort all includes 2011-04-15 10:44:06 -07:00
term includes: sort all includes 2011-04-15 10:44:06 -07:00
checkpoint-tester.py util: add a script for testing checkpointing 2010-07-05 21:39:38 -07:00
checkpoint_aggregator.py util: update checkpoint aggregation script 2013-12-03 10:36:03 -06:00
checktrace.sh Add checktrace.sh. Checks all the ethertrace files in */ethertrace 2005-11-11 18:43:09 -05:00
chkformat Utilities for doing a format check for some elements of proper 2006-12-17 18:58:05 -08:00
compile Nate's utility for compiling m5 2006-12-17 18:58:50 -08:00
cpt_upgrader.py util: Add DVFS perfLevel to checkpoint upgrade script 2014-07-01 11:58:22 -04:00
cscope-index.py cscope-find.py: 2006-11-29 13:17:41 -08:00
decode_packet_trace.py util: Move packet trace file read to protolib 2014-08-10 05:39:20 -04:00
diff_config.pl Util: Added script to semantically diff two config.ini files 2012-09-25 11:49:40 -05:00
dram_sweep_plot.py mem: Add utility script to plot DRAM efficiency sweep 2014-09-03 07:42:29 -04:00
drampower_trace.py mem: DRAMPower trace formatting script 2014-06-30 13:56:04 -04:00
encode_packet_trace.py mem: Edit proto Packet and enhance the python script 2014-03-07 15:56:23 -05:00
file_types.py file_types: Make code work in Python 2.4 2011-04-17 13:57:03 -07:00
find_copyrights.py copyright: Add code for finding all copyright blocks and create a COPYING file 2011-06-02 17:36:07 -07:00
fixwhite Utilities for doing a format check for some elements of proper 2006-12-17 18:58:05 -08:00
gem5img.py Util: Replace mkblankimage.sh with the new gem5img.py. 2011-04-29 04:46:19 -04:00
hgfilesize.py hgfilesize: skip files that have been removed 2012-01-10 22:50:54 -08:00
minorview.py cpu: `Minor' in-order CPU model 2014-07-23 16:09:04 -05:00
o3-pipeview.py o3: fix tick used for renaming and issue with range selection 2013-02-15 17:40:09 -05:00
on-chip-network-power-area.py util: adds a script for using DSENT 2014-10-11 16:16:00 -05:00
oprofile-top.py Updated Authors from bk prs info 2006-05-31 19:26:56 -04:00
protolib.py util: Move packet trace file read to protolib 2014-08-10 05:39:20 -04:00
qdo Make qdo work with oar. I don't know if this catches every case, but it appears 2007-10-10 23:24:16 -04:00
regress ruby: rename MESI_CMP_directory to MESI_Two_Level 2014-01-04 00:03:33 -06:00
rundiff rundiff: Don't flush stdout until after postcontext is printed. 2009-09-26 10:50:50 -07:00
SConscript Major changes to how SimObjects are created and initialized. Almost all 2007-07-23 21:51:38 -07:00
slicc slicc: Pure python implementation of slicc. 2009-09-22 18:12:39 -07:00
sort_includes.py util: Fix state leakage in the SortIncludes style verifier 2014-08-13 06:57:25 -04:00
style.py style: Add support for a style ignore list and ignore ext/ 2014-08-26 10:14:30 -04:00
tracediff tracediff: Check for --debug-flags now instead of --trace-flags. 2011-07-02 22:52:26 -07:00
valgrind-suppressions util: Valgrind suppression addition 2014-04-23 05:18:29 -04:00