summaryrefslogtreecommitdiff
path: root/util/tlm/README
diff options
context:
space:
mode:
Diffstat (limited to 'util/tlm/README')
-rw-r--r--util/tlm/README96
1 files changed, 96 insertions, 0 deletions
diff --git a/util/tlm/README b/util/tlm/README
new file mode 100644
index 000000000..f3cb4fbfd
--- /dev/null
+++ b/util/tlm/README
@@ -0,0 +1,96 @@
+This directory contains a demo of a coupling between gem5 and SystemC-TLM.
+It is based on the gem5-systemc implementation in utils/systemc.
+First a simple example with gem5's traffic generator is shown, later an full
+system example.
+
+Files:
+
+ main.cc -- demonstration top level
+ sc_port.{cc,hh} -- transactor that translates beween gem5 and tlm
+ sc_mm.{cc,hh} -- implementation of a tlm memory manager
+ sc_ext.{cc,hh} -- a TLM extension that carries the gem5 packet
+ sc_target.{cc,hh} -- an example TLM LT/AT memory module
+ tlm.py -- simple gem5 configuration
+ tgen.cfg -- configuration file for the traceplayer
+
+Other Files will be used from utils/systemc example:
+
+ sc_logger.{cc,hh},
+ sc_module.{cc,hh},
+ sc_gem5_control.{cc,hh},
+ stats.{cc,hh}
+
+
+I. Traffic Generator Setup
+==========================
+
+To build:
+
+First build a normal gem5 (cxx-config not needed, Python needed).
+Second build gem5 as a library with cxx-config support and (optionally)
+without python.
+
+> cd ../..
+> scons build/ARM/gem5.opt
+> scons --with-cxx-config --without-python build/ARM/libgem5_opt.so
+> cd util/systemc_tlm
+
+Set a proper LD_LIBRARY_PATH e.g. for bash:
+> export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/path/to/gem5/build/ARM/"
+
+Then edit the Makefile to set the paths for SystemC and run make
+
+> make
+
+Make a config file for the C++-configured gem5 using normal gem5
+
+> ../../build/ARM/gem5.opt ./tlm.py
+
+The message "fatal: Can't find port handler type 'tlm'" is okay.
+The configuration will be stored in the m5out/ directory
+
+The binary 'gem5.opt.sc', that has been created in the make step,
+can now be used to load in the generated config file from the previous
+normal gem5 run.
+
+Try:
+
+> ./gem5.opt.sc m5out/config.ini -e 1000000
+
+It should run a simulation for 1us.
+
+To see more information what happens inside the TLM module use the -D flag:
+
+> ./gem5.opt.sc m5out/config.ini -e 1000000 -D
+
+To see more information about the port coupling use:
+
+> ./gem5.opt.sc m5out/config.ini -e 1000000 -d ExternalPort
+
+II. Full System Setup
+=====================
+
+Build gem5 as discribed in Section I. Then, make a config file for the
+C++-configured gem5 using normal gem5
+
+> ../../build/ARM/gem5.opt ../../configs/example/fs.py --tlm-memory=memory \
+ --cpu-type=timing --num-cpu=1 --mem-type=SimpleMemory --mem-size=512MB \
+ --mem-channels=1 --caches --l2cache --machine-type=VExpress_EMM \
+ --dtb-filename=vexpress.aarch32.ll_20131205.0-gem5.1cpu.dtb \
+ --kernel=vmlinux.aarch32.ll_20131205.0-gem5 \
+ --disk-image=linux-aarch32-ael.img
+
+The message "fatal: Can't find port handler type 'tlm'" is okay.
+The configuration will be stored in the m5out/ directory
+
+The binary 'gem5.opt.sc' can now be used to load in the generated config
+file from the previous normal gem5 run.
+
+Try:
+
+> ./gem5.opt.sc m5out/config.ini -o 2147483648
+
+The parameter -o specifies the begining of the memory region (0x80000000).
+The system should boot now.
+
+For conveniance a run_gem5.sh file holds all those commands