README revision 11099
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 3810993Sjungma@eit.uni-kl.deSet a proper LD_LIBRARY_PATH e.g. for bash: 3910993Sjungma@eit.uni-kl.de> export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/path/to/gem5/build/ARM/" 4010993Sjungma@eit.uni-kl.de 4110993Sjungma@eit.uni-kl.deThen edit the Makefile to set the paths for SystemC and run make 4210993Sjungma@eit.uni-kl.de 4310993Sjungma@eit.uni-kl.de> make 4410993Sjungma@eit.uni-kl.de 4510993Sjungma@eit.uni-kl.deMake a config file for the C++-configured gem5 using normal gem5 4610993Sjungma@eit.uni-kl.de 4710993Sjungma@eit.uni-kl.de> ../../build/ARM/gem5.opt ./tlm.py 4810993Sjungma@eit.uni-kl.de 4910993Sjungma@eit.uni-kl.deThe message "fatal: Can't find port handler type 'tlm'" is okay. 5010993Sjungma@eit.uni-kl.deThe configuration will be stored in the m5out/ directory 5110993Sjungma@eit.uni-kl.de 5210993Sjungma@eit.uni-kl.deThe binary 'gem5.opt.sc', that has been created in the make step, 5310993Sjungma@eit.uni-kl.decan now be used to load in the generated config file from the previous 5410993Sjungma@eit.uni-kl.denormal gem5 run. 5510993Sjungma@eit.uni-kl.de 5610993Sjungma@eit.uni-kl.deTry: 5710993Sjungma@eit.uni-kl.de 5810993Sjungma@eit.uni-kl.de> ./gem5.opt.sc m5out/config.ini -e 1000000 5910993Sjungma@eit.uni-kl.de 6010993Sjungma@eit.uni-kl.deIt should run a simulation for 1us. 6110993Sjungma@eit.uni-kl.de 6210993Sjungma@eit.uni-kl.deTo see more information what happens inside the TLM module use the -D flag: 6310993Sjungma@eit.uni-kl.de 6410993Sjungma@eit.uni-kl.de> ./gem5.opt.sc m5out/config.ini -e 1000000 -D 6510993Sjungma@eit.uni-kl.de 6610993Sjungma@eit.uni-kl.deTo see more information about the port coupling use: 6710993Sjungma@eit.uni-kl.de 6810993Sjungma@eit.uni-kl.de> ./gem5.opt.sc m5out/config.ini -e 1000000 -d ExternalPort 6910993Sjungma@eit.uni-kl.de 7010993Sjungma@eit.uni-kl.deII. Full System Setup 7110993Sjungma@eit.uni-kl.de===================== 7210993Sjungma@eit.uni-kl.de 7310993Sjungma@eit.uni-kl.deBuild gem5 as discribed in Section I. Then, make a config file for the 7410993Sjungma@eit.uni-kl.deC++-configured gem5 using normal gem5 7510993Sjungma@eit.uni-kl.de 7610993Sjungma@eit.uni-kl.de> ../../build/ARM/gem5.opt ../../configs/example/fs.py --tlm-memory=memory \ 7710993Sjungma@eit.uni-kl.de --cpu-type=timing --num-cpu=1 --mem-type=SimpleMemory --mem-size=512MB \ 7810993Sjungma@eit.uni-kl.de --mem-channels=1 --caches --l2cache --machine-type=VExpress_EMM \ 7910993Sjungma@eit.uni-kl.de --dtb-filename=vexpress.aarch32.ll_20131205.0-gem5.1cpu.dtb \ 8010993Sjungma@eit.uni-kl.de --kernel=vmlinux.aarch32.ll_20131205.0-gem5 \ 8110993Sjungma@eit.uni-kl.de --disk-image=linux-aarch32-ael.img 8210993Sjungma@eit.uni-kl.de 8310993Sjungma@eit.uni-kl.deThe message "fatal: Can't find port handler type 'tlm'" is okay. 8410993Sjungma@eit.uni-kl.deThe configuration will be stored in the m5out/ directory 8510993Sjungma@eit.uni-kl.de 8610993Sjungma@eit.uni-kl.deThe binary 'gem5.opt.sc' can now be used to load in the generated config 8710993Sjungma@eit.uni-kl.defile from the previous normal gem5 run. 8810993Sjungma@eit.uni-kl.de 8910993Sjungma@eit.uni-kl.deTry: 9010993Sjungma@eit.uni-kl.de 9110993Sjungma@eit.uni-kl.de> ./gem5.opt.sc m5out/config.ini -o 2147483648 9210993Sjungma@eit.uni-kl.de 9310993Sjungma@eit.uni-kl.deThe parameter -o specifies the begining of the memory region (0x80000000). 9410993Sjungma@eit.uni-kl.deThe system should boot now. 9510993Sjungma@eit.uni-kl.de 9610993Sjungma@eit.uni-kl.deFor conveniance a run_gem5.sh file holds all those commands 97