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.)
