README revision 11791
110993Sjungma@eit.uni-kl.deThis directory contains a demo of a coupling between gem5 and SystemC-TLM.
210993Sjungma@eit.uni-kl.deIt is based on the gem5-systemc implementation in utils/systemc.
310993Sjungma@eit.uni-kl.deFirst a simple example with gem5's traffic generator is shown, later an full
410993Sjungma@eit.uni-kl.desystem example.
510993Sjungma@eit.uni-kl.de
610993Sjungma@eit.uni-kl.deFiles:
710993Sjungma@eit.uni-kl.de
810993Sjungma@eit.uni-kl.de    main.cc                -- demonstration top level
910993Sjungma@eit.uni-kl.de    sc_port.{cc,hh}        -- transactor that translates beween gem5 and tlm
1010993Sjungma@eit.uni-kl.de    sc_mm.{cc,hh}          -- implementation of a tlm memory manager
1110993Sjungma@eit.uni-kl.de    sc_ext.{cc,hh}         -- a TLM extension that carries the gem5 packet
1210993Sjungma@eit.uni-kl.de    sc_target.{cc,hh}      -- an example TLM LT/AT memory module
1310993Sjungma@eit.uni-kl.de    tlm.py                 -- simple gem5 configuration
1410993Sjungma@eit.uni-kl.de    tgen.cfg               -- configuration file for the traceplayer
1510993Sjungma@eit.uni-kl.de
1610993Sjungma@eit.uni-kl.deOther Files will be used from utils/systemc example:
1710993Sjungma@eit.uni-kl.de
1810993Sjungma@eit.uni-kl.de    sc_logger.{cc,hh},
1910993Sjungma@eit.uni-kl.de    sc_module.{cc,hh},
2010993Sjungma@eit.uni-kl.de    sc_gem5_control.{cc,hh},
2110993Sjungma@eit.uni-kl.de    stats.{cc,hh}
2210993Sjungma@eit.uni-kl.de
2310993Sjungma@eit.uni-kl.de
2410993Sjungma@eit.uni-kl.deI. Traffic Generator Setup
2510993Sjungma@eit.uni-kl.de==========================
2610993Sjungma@eit.uni-kl.de
2710993Sjungma@eit.uni-kl.deTo build:
2810993Sjungma@eit.uni-kl.de
2910993Sjungma@eit.uni-kl.deFirst build a normal gem5 (cxx-config not needed, Python needed).
3010993Sjungma@eit.uni-kl.deSecond build gem5 as a library with cxx-config support and (optionally)
3110993Sjungma@eit.uni-kl.dewithout python.
3210993Sjungma@eit.uni-kl.de
3310993Sjungma@eit.uni-kl.de> cd ../..
3410993Sjungma@eit.uni-kl.de> scons build/ARM/gem5.opt
3510993Sjungma@eit.uni-kl.de> scons --with-cxx-config --without-python build/ARM/libgem5_opt.so
3611099Sabdul.mutaal@gmail.com> cd util/tlm
3710993Sjungma@eit.uni-kl.de
3811791Sjungma@eit.uni-kl.deNote: For MAC / OSX this command should be used:
3911791Sjungma@eit.uni-kl.de> scons --with-cxx-config --without-python build/ARM/libgem5_opt.dylib
4011791Sjungma@eit.uni-kl.de
4110993Sjungma@eit.uni-kl.deSet a proper LD_LIBRARY_PATH e.g. for bash:
4210993Sjungma@eit.uni-kl.de> export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/path/to/gem5/build/ARM/"
4310993Sjungma@eit.uni-kl.de
4411791Sjungma@eit.uni-kl.deor for MAC / OSX:
4511791Sjungma@eit.uni-kl.de> export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/path/to/gem5/build/ARM/"
4611791Sjungma@eit.uni-kl.de
4711791Sjungma@eit.uni-kl.deThen edit the Makefile to set the paths for SystemC:
4811791Sjungma@eit.uni-kl.de
4911791Sjungma@eit.uni-kl.de    Linux:
5011791Sjungma@eit.uni-kl.de    SYSTEMC_INC = /opt/systemc/include
5111791Sjungma@eit.uni-kl.de    SYSTEMC_LIB = /opt/systemc/lib-linux64
5211791Sjungma@eit.uni-kl.de
5311791Sjungma@eit.uni-kl.de    MAC / OSX:
5411791Sjungma@eit.uni-kl.de    SYSTEMC_INC = /opt/systemc/include
5511791Sjungma@eit.uni-kl.de    SYSTEMC_LIB = /opt/systemc/lib-macosx64
5611791Sjungma@eit.uni-kl.de
5711791Sjungma@eit.uni-kl.deThen run make:
5810993Sjungma@eit.uni-kl.de
5910993Sjungma@eit.uni-kl.de> make
6010993Sjungma@eit.uni-kl.de
6110993Sjungma@eit.uni-kl.deMake a config file for the C++-configured gem5 using normal gem5
6210993Sjungma@eit.uni-kl.de
6310993Sjungma@eit.uni-kl.de> ../../build/ARM/gem5.opt ./tlm.py
6410993Sjungma@eit.uni-kl.de
6510993Sjungma@eit.uni-kl.deThe message "fatal: Can't find port handler type 'tlm'" is okay.
6610993Sjungma@eit.uni-kl.deThe configuration will be stored in the m5out/ directory
6710993Sjungma@eit.uni-kl.de
6810993Sjungma@eit.uni-kl.deThe binary 'gem5.opt.sc', that has been created in the make step,
6910993Sjungma@eit.uni-kl.decan now be used to load in the generated config file from the previous
7010993Sjungma@eit.uni-kl.denormal gem5 run.
7110993Sjungma@eit.uni-kl.de
7210993Sjungma@eit.uni-kl.deTry:
7310993Sjungma@eit.uni-kl.de
7410993Sjungma@eit.uni-kl.de> ./gem5.opt.sc m5out/config.ini -e 1000000
7510993Sjungma@eit.uni-kl.de
7610993Sjungma@eit.uni-kl.deIt should run a simulation for 1us.
7710993Sjungma@eit.uni-kl.de
7810993Sjungma@eit.uni-kl.deTo see more information what happens inside the TLM module use the -D flag:
7910993Sjungma@eit.uni-kl.de
8010993Sjungma@eit.uni-kl.de> ./gem5.opt.sc m5out/config.ini -e 1000000 -D
8110993Sjungma@eit.uni-kl.de
8210993Sjungma@eit.uni-kl.deTo see more information about the port coupling use:
8310993Sjungma@eit.uni-kl.de
8410993Sjungma@eit.uni-kl.de> ./gem5.opt.sc m5out/config.ini -e 1000000 -d ExternalPort
8510993Sjungma@eit.uni-kl.de
8610993Sjungma@eit.uni-kl.deII. Full System Setup
8710993Sjungma@eit.uni-kl.de=====================
8810993Sjungma@eit.uni-kl.de
8910993Sjungma@eit.uni-kl.deBuild gem5 as discribed in Section I. Then, make a config file for the
9010993Sjungma@eit.uni-kl.deC++-configured gem5 using normal gem5
9110993Sjungma@eit.uni-kl.de
9210993Sjungma@eit.uni-kl.de> ../../build/ARM/gem5.opt ../../configs/example/fs.py --tlm-memory=memory \
9310993Sjungma@eit.uni-kl.de  --cpu-type=timing --num-cpu=1 --mem-type=SimpleMemory --mem-size=512MB   \
9410993Sjungma@eit.uni-kl.de  --mem-channels=1  --caches --l2cache --machine-type=VExpress_EMM         \
9510993Sjungma@eit.uni-kl.de  --dtb-filename=vexpress.aarch32.ll_20131205.0-gem5.1cpu.dtb              \
9610993Sjungma@eit.uni-kl.de  --kernel=vmlinux.aarch32.ll_20131205.0-gem5                              \
9710993Sjungma@eit.uni-kl.de  --disk-image=linux-aarch32-ael.img
9810993Sjungma@eit.uni-kl.de
9910993Sjungma@eit.uni-kl.deThe message "fatal: Can't find port handler type 'tlm'" is okay.
10010993Sjungma@eit.uni-kl.deThe configuration will be stored in the m5out/ directory
10110993Sjungma@eit.uni-kl.de
10210993Sjungma@eit.uni-kl.deThe binary 'gem5.opt.sc' can now be used to load in the generated config
10310993Sjungma@eit.uni-kl.defile from the previous normal gem5 run.
10410993Sjungma@eit.uni-kl.de
10510993Sjungma@eit.uni-kl.deTry:
10610993Sjungma@eit.uni-kl.de
10710993Sjungma@eit.uni-kl.de> ./gem5.opt.sc m5out/config.ini -o 2147483648
10810993Sjungma@eit.uni-kl.de
10910993Sjungma@eit.uni-kl.deThe parameter -o specifies the begining of the memory region (0x80000000).
11010993Sjungma@eit.uni-kl.deThe system should boot now.
11110993Sjungma@eit.uni-kl.de
11210993Sjungma@eit.uni-kl.deFor conveniance a run_gem5.sh file holds all those commands
11311554Sjungma@eit.uni-kl.de
11411554Sjungma@eit.uni-kl.de
11511554Sjungma@eit.uni-kl.deIII. Elastic Trace Setup
11611554Sjungma@eit.uni-kl.de========================
11711554Sjungma@eit.uni-kl.de
11811554Sjungma@eit.uni-kl.deElastic traces can also be replayed into the SystemC world.
11911554Sjungma@eit.uni-kl.deFor more information on elastic traces please refer to:
12011554Sjungma@eit.uni-kl.de
12111554Sjungma@eit.uni-kl.de - http://www.gem5.org/TraceCPU
12211554Sjungma@eit.uni-kl.de
12311554Sjungma@eit.uni-kl.de - Exploring System Performance using Elastic Traces:
12411554Sjungma@eit.uni-kl.de   Fast, Accurate and Portable
12511554Sjungma@eit.uni-kl.de   R. Jagtap, S. Diestelhorst, A. Hansson, M. Jung, N. Wehn.
12611554Sjungma@eit.uni-kl.de   IEEE International Conference on Embedded Computer Systems Architectures
12711554Sjungma@eit.uni-kl.de   Modeling and Simulation (SAMOS), July, 2016, Samos Island, Greece.
12811554Sjungma@eit.uni-kl.de
12911554Sjungma@eit.uni-kl.deSimilar to I. the simulation can be set up with this command:
13011554Sjungma@eit.uni-kl.de
13111554Sjungma@eit.uni-kl.de> ../../build/ARM/gem5.opt ./tlm_elastic.py
13211554Sjungma@eit.uni-kl.de
13311554Sjungma@eit.uni-kl.deThen:
13411554Sjungma@eit.uni-kl.de
13511554Sjungma@eit.uni-kl.de> ./gem5.opt.sc m5out/config.ini
136