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