README revision 13372
15425Sgblack@eecs.umich.eduThis directory contains a demo of C++ configuration of gem5. The intention 25425Sgblack@eecs.umich.eduis to provide a mechanism to allow pre-generated config.ini files generated 35425Sgblack@eecs.umich.eduby Python-based gem5 to be reloaded in library-base versions of gem5 45425Sgblack@eecs.umich.eduembedded in other systems using C++ calls for simulation control. 55425Sgblack@eecs.umich.edu 65425Sgblack@eecs.umich.eduThis directory contain a demo of hosting a C++ configured version of gem5 75425Sgblack@eecs.umich.eduonto SystemC's event loop. The hosting is achieved by replacing 'simulate' 85425Sgblack@eecs.umich.eduwith a SystemC object which implements an event loop using SystemC scheduler 95425Sgblack@eecs.umich.edumechanisms. 105425Sgblack@eecs.umich.edu 115425Sgblack@eecs.umich.eduThe sc_... files here should probably be hosted in a diferent directory and 125425Sgblack@eecs.umich.edubuildable as a library. 135425Sgblack@eecs.umich.edu 145425Sgblack@eecs.umich.eduFiles: 155425Sgblack@eecs.umich.edu 165425Sgblack@eecs.umich.edu main.cc -- demonstration top level 175425Sgblack@eecs.umich.edu sc_logger.{cc,hh} -- rehosting of DPRINTF onto SC_REPORT 185425Sgblack@eecs.umich.edu sc_module.{cc,hh} -- SystemC simulation loop base class 195425Sgblack@eecs.umich.edu sc_gem5_control.{cc,hh} -- Alternative extra wrapping to allow gem5 205425Sgblack@eecs.umich.edu Systems to be instantiated as single 215425Sgblack@eecs.umich.edu sc_module objects. 225425Sgblack@eecs.umich.edu stats.{cc,hh} -- Stats dumping (copied from util/cxx_config) 235425Sgblack@eecs.umich.edu 245425Sgblack@eecs.umich.eduRead main.cc for more details of the implementation and sc_... files for 255425Sgblack@eecs.umich.edu 265425Sgblack@eecs.umich.eduTo build: 275425Sgblack@eecs.umich.edu 285425Sgblack@eecs.umich.eduFirst build gem5 as a library with cxx-config support and (optionally) 295425Sgblack@eecs.umich.eduwithout python. Also build a normal gem5 (cxx-config not needed, Python 305425Sgblack@eecs.umich.eduneeded): 315425Sgblack@eecs.umich.edu 325425Sgblack@eecs.umich.edu> cd ../../.. 335425Sgblack@eecs.umich.edu> scons build/ARM/gem5.opt 345425Sgblack@eecs.umich.edu> scons --with-cxx-config --without-python build/ARM/libgem5_opt.so 355425Sgblack@eecs.umich.edu> cd util/systemc 365425Sgblack@eecs.umich.edu 375425Sgblack@eecs.umich.eduNote: For MAC / OSX this command should be used: 385425Sgblack@eecs.umich.edu> scons --with-cxx-config --without-python build/ARM/libgem5_opt.dylib 395425Sgblack@eecs.umich.edu 405425Sgblack@eecs.umich.eduSet a proper LD_LIBRARY_PATH e.g. for bash: 415425Sgblack@eecs.umich.edu> export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/path/to/gem5/build/ARM/" 425425Sgblack@eecs.umich.edu 435425Sgblack@eecs.umich.eduor for MAC / OSX: 445425Sgblack@eecs.umich.edu> export DYLD_LIBRARY_PATH="$DYLD_LIBRARY_PATH:/path/to/gem5/build/ARM/" 455425Sgblack@eecs.umich.edu 465425Sgblack@eecs.umich.edu 475425Sgblack@eecs.umich.eduThen edit the Makefile to set the paths for SystemC, e.g: 485425Sgblack@eecs.umich.edu 495425Sgblack@eecs.umich.edu Linux: 505425Sgblack@eecs.umich.edu SYSTEMC_INC = /opt/systemc/include 515425Sgblack@eecs.umich.edu SYSTEMC_LIB = /opt/systemc/lib-linux64 525425Sgblack@eecs.umich.edu 535425Sgblack@eecs.umich.edu MAC / OSX: 545425Sgblack@eecs.umich.edu SYSTEMC_INC = /opt/systemc/include 555425Sgblack@eecs.umich.edu SYSTEMC_LIB = /opt/systemc/lib-macosx64 565425Sgblack@eecs.umich.edu 575425Sgblack@eecs.umich.eduThen run make: 585425Sgblack@eecs.umich.edu 595425Sgblack@eecs.umich.edu> make 605425Sgblack@eecs.umich.edu 615425Sgblack@eecs.umich.eduMake a config file for the C++-configured gem5 using normal gem5 625425Sgblack@eecs.umich.edu 635425Sgblack@eecs.umich.edu> ../../../build/ARM/gem5.opt ../../../configs/example/se.py -c \ 645425Sgblack@eecs.umich.edu> ../../../tests/test-progs/hello/bin/arm/linux/hello 655425Sgblack@eecs.umich.edu 665425Sgblack@eecs.umich.eduThe binary 'gem5.opt.cxx' can now be used to load in the generated config 675425Sgblack@eecs.umich.edufile from the previous normal gem5 run. 685425Sgblack@eecs.umich.edu 695425Sgblack@eecs.umich.eduTry: 705425Sgblack@eecs.umich.edu 715425Sgblack@eecs.umich.edu> ./gem5.opt.cxx m5out/config.ini 725425Sgblack@eecs.umich.edu 735425Sgblack@eecs.umich.eduThis should print: 745425Sgblack@eecs.umich.edu 755425Sgblack@eecs.umich.edu> Hello world! 765425Sgblack@eecs.umich.edu 775425Sgblack@eecs.umich.eduThe .ini file can also be read by the Python .ini file reader example: 785425Sgblack@eecs.umich.edu 795425Sgblack@eecs.umich.edu> ../../../build/ARM/gem5.opt ../../../configs/example/read_ini.py \ 805425Sgblack@eecs.umich.edu> m5out/config.ini 815425Sgblack@eecs.umich.edu 825425Sgblack@eecs.umich.eduIf you are interested in SystemC Transaction Level Modeling (TLM2) please have 835425Sgblack@eecs.umich.edua look into /util/tlm. 845425Sgblack@eecs.umich.edu