README revision 11791
1This directory contains a demo of a coupling between gem5 and SystemC-TLM.
2It is based on the gem5-systemc implementation in utils/systemc.
3First a simple example with gem5's traffic generator is shown, later an full
4system example.
5
6Files:
7
8    main.cc                -- demonstration top level
9    sc_port.{cc,hh}        -- transactor that translates beween gem5 and tlm
10    sc_mm.{cc,hh}          -- implementation of a tlm memory manager
11    sc_ext.{cc,hh}         -- a TLM extension that carries the gem5 packet
12    sc_target.{cc,hh}      -- an example TLM LT/AT memory module
13    tlm.py                 -- simple gem5 configuration
14    tgen.cfg               -- configuration file for the traceplayer
15
16Other Files will be used from utils/systemc example:
17
18    sc_logger.{cc,hh},
19    sc_module.{cc,hh},
20    sc_gem5_control.{cc,hh},
21    stats.{cc,hh}
22
23
24I. Traffic Generator Setup
25==========================
26
27To build:
28
29First build a normal gem5 (cxx-config not needed, Python needed).
30Second build gem5 as a library with cxx-config support and (optionally)
31without python.
32
33> cd ../..
34> scons build/ARM/gem5.opt
35> scons --with-cxx-config --without-python build/ARM/libgem5_opt.so
36> cd util/tlm
37
38Note: For MAC / OSX this command should be used:
39> scons --with-cxx-config --without-python build/ARM/libgem5_opt.dylib
40
41Set a proper LD_LIBRARY_PATH e.g. for bash:
42> export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/path/to/gem5/build/ARM/"
43
44or for MAC / OSX:
45> export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/path/to/gem5/build/ARM/"
46
47Then edit the Makefile to set the paths for SystemC:
48
49    Linux:
50    SYSTEMC_INC = /opt/systemc/include
51    SYSTEMC_LIB = /opt/systemc/lib-linux64
52
53    MAC / OSX:
54    SYSTEMC_INC = /opt/systemc/include
55    SYSTEMC_LIB = /opt/systemc/lib-macosx64
56
57Then run make:
58
59> make
60
61Make a config file for the C++-configured gem5 using normal gem5
62
63> ../../build/ARM/gem5.opt ./tlm.py
64
65The message "fatal: Can't find port handler type 'tlm'" is okay.
66The configuration will be stored in the m5out/ directory
67
68The binary 'gem5.opt.sc', that has been created in the make step,
69can now be used to load in the generated config file from the previous
70normal gem5 run.
71
72Try:
73
74> ./gem5.opt.sc m5out/config.ini -e 1000000
75
76It should run a simulation for 1us.
77
78To see more information what happens inside the TLM module use the -D flag:
79
80> ./gem5.opt.sc m5out/config.ini -e 1000000 -D
81
82To see more information about the port coupling use:
83
84> ./gem5.opt.sc m5out/config.ini -e 1000000 -d ExternalPort
85
86II. Full System Setup
87=====================
88
89Build gem5 as discribed in Section I. Then, make a config file for the
90C++-configured gem5 using normal gem5
91
92> ../../build/ARM/gem5.opt ../../configs/example/fs.py --tlm-memory=memory \
93  --cpu-type=timing --num-cpu=1 --mem-type=SimpleMemory --mem-size=512MB   \
94  --mem-channels=1  --caches --l2cache --machine-type=VExpress_EMM         \
95  --dtb-filename=vexpress.aarch32.ll_20131205.0-gem5.1cpu.dtb              \
96  --kernel=vmlinux.aarch32.ll_20131205.0-gem5                              \
97  --disk-image=linux-aarch32-ael.img
98
99The message "fatal: Can't find port handler type 'tlm'" is okay.
100The configuration will be stored in the m5out/ directory
101
102The binary 'gem5.opt.sc' can now be used to load in the generated config
103file from the previous normal gem5 run.
104
105Try:
106
107> ./gem5.opt.sc m5out/config.ini -o 2147483648
108
109The parameter -o specifies the begining of the memory region (0x80000000).
110The system should boot now.
111
112For conveniance a run_gem5.sh file holds all those commands
113
114
115III. Elastic Trace Setup
116========================
117
118Elastic traces can also be replayed into the SystemC world.
119For more information on elastic traces please refer to:
120
121 - http://www.gem5.org/TraceCPU
122
123 - Exploring System Performance using Elastic Traces:
124   Fast, Accurate and Portable
125   R. Jagtap, S. Diestelhorst, A. Hansson, M. Jung, N. Wehn.
126   IEEE International Conference on Embedded Computer Systems Architectures
127   Modeling and Simulation (SAMOS), July, 2016, Samos Island, Greece.
128
129Similar to I. the simulation can be set up with this command:
130
131> ../../build/ARM/gem5.opt ./tlm_elastic.py
132
133Then:
134
135> ./gem5.opt.sc m5out/config.ini
136