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