Between Tuesday August 20th, 5:00pm and Thursday August 22nd, 8:00am git.uwaterloo.ca will be down for an upgrade to version 10.8.7.

Name Last Update
..
tests Loading commit data...
ExtMaster.cc Loading commit data...
ExtMaster.hh Loading commit data...
ExtSlave.cc Loading commit data...
ExtSlave.hh Loading commit data...
LICENSE Loading commit data...
Makefile Loading commit data...
README Loading commit data...
gem5.cc Loading commit data...
gem5.hh Loading commit data...
libgem5.cc Loading commit data...
This directory contains a connector that allows gem5 to be used as a
component in SST (Structural Simulation Toolkit, sst-simulator.org). More
specifically, it creates a .so that wraps the libgem5_*.so library. At a
high level, this allows memory traffic to pass between the two simulators.
SST Links are roughly analogous to gem5 Ports, although Links do not have
a notion of master and slave. This distinction is important to gem5, so
when connecting a gem5 CPU to an SST cache, an ExternalSlave must be used,
and similarly when connecting the memory side of SST cache to a gem5 port
(for memory <-> I/O), an ExternalMaster must be used.

The connector handles the administrative aspects of gem5
(initialization, simulation, shutdown) as well as translating
SST's MemEvents into gem5 Packets and vice-versa.

Step-by-step instructions:

0. install SST and its dependencies

Note: the Makefile assumes you installed from an SVN checkout, not a release.
If you install a release, modify SST_VERSION at the top of the Makefile.

0b. set/append to the PKG_CONFIG_PATH variable the path where SST installed
    its pkgconfig, if not in a system-wide location.

Then from gem5 root:

1. build gem5 library:
% scons build/ARM/libgem5_opt.so

Note: if you would rather use a fast, debug, etc. variant instead,
modify GEM5_LIB at the top of the Makefile.

2. build gem5 SST component:
% make -C ext/sst

3. run SST like so:
% sst --add-lib-path <path to ./ext/sst> <config script, e.g. ext/sst/*.py>

===========

Note: if you want to use an arch other than ARM (not tested/supported),
tweak the Makefile to get includes from that build directory instead.

===========

This directory provides:
1. an SST "Component" for gem5;
2. a class that implements gem5's "ExternalMaster" interface to connect with
   SST "Link"s exchanging "memEvents"
   (sst/elements/memHierarchy stuff - caches, memories, etc.)
   This lets gem5 receive packets from SST, as in
   an SST LL$ (a master external to gem5) <-> I/O devices.
3. a class that implements gem5's "ExternalSlave" interface to connect with
   SST "Link"s exchanging "memEvents" once again with the packet flow reversed:
   gem5 CPU <-> SST L1 cache (a slave external to gem5)
4. an example configuration that uses both as follows:
   gem5 CPUs
       ^
       | [ExternalSlave]
       v
   SST cache hierarchy <-> SST memory
       ^
       | [ExternalMaster]
       v
   gem5 I/O devices (terminal, disk, etc.)