diff options
Diffstat (limited to 'util/tlm/examples/slave_port')
-rw-r--r-- | util/tlm/examples/slave_port/SConstruct | 5 | ||||
-rw-r--r-- | util/tlm/examples/slave_port/main.cc | 47 |
2 files changed, 18 insertions, 34 deletions
diff --git a/util/tlm/examples/slave_port/SConstruct b/util/tlm/examples/slave_port/SConstruct index 8ca9959a0..a896a34e4 100644 --- a/util/tlm/examples/slave_port/SConstruct +++ b/util/tlm/examples/slave_port/SConstruct @@ -54,7 +54,8 @@ env.ParseConfig('pkg-config --cflags --libs systemc') # add include dirs env.Append(CPPPATH=[gem5_root + '/build/' + gem5_arch, gem5_root + '/util/systemc', - gem5_root + '/util/tlm']) + gem5_root + '/util/tlm', + '../common']) env.Append(LIBS=['gem5_' + gem5_variant]) env.Append(LIBPATH=[gem5_root + '/build/' + gem5_arch]) @@ -72,6 +73,6 @@ src_systemc = [gem5_root + '/util/systemc/sc_gem5_control.cc', gem5_root + '/util/systemc/stats.cc'] src_tlm = Glob(gem5_root + '/util/tlm/*.cc') -src_main = Glob('*.cc') +src_main = Glob('*.cc') + Glob('../common/*.cc') main = env.Program(target, src_systemc + src_tlm + src_main) diff --git a/util/tlm/examples/slave_port/main.cc b/util/tlm/examples/slave_port/main.cc index 256a99d1b..9f1cadc8d 100644 --- a/util/tlm/examples/slave_port/main.cc +++ b/util/tlm/examples/slave_port/main.cc @@ -43,48 +43,30 @@ * */ -#include <tlm_utils/simple_target_socket.h> - #include <systemc> #include <tlm> +#include "cli_parser.hh" +#include "report_handler.hh" #include "sc_target.hh" #include "sim_control.hh" #include "stats.hh" -// Defining global string variable decalred in stats.hh -std::string filename; - -void -reportHandler(const sc_core::sc_report &report, - const sc_core::sc_actions &actions) -{ - uint64_t systemc_time = report.get_time().value(); - uint64_t gem5_time = curTick(); - - std::cerr << report.get_time(); - - if (gem5_time < systemc_time) { - std::cerr << " (<) "; - } else if (gem5_time > systemc_time) { - std::cerr << " (!) "; - } else { - std::cerr << " (=) "; - } - - std::cerr << ": " << report.get_msg_type() - << ' ' << report.get_msg() << '\n'; -} - int sc_main(int argc, char **argv) { + CliParser parser; + parser.parse(argc, argv); + sc_core::sc_report_handler::set_handler(reportHandler); - SimControl sim_control("gem5", argc, argv); + Gem5SystemC::Gem5SimControl simControl("gem5", + parser.getConfigFile(), + parser.getSimulationEnd(), + parser.getDebugFlags()); Target *memory; - filename = "m5out/stats-systemc.txt"; + unsigned long long int memorySize = 512*1024*1024ULL; tlm::tlm_initiator_socket <> *mem_port = dynamic_cast<tlm::tlm_initiator_socket<> *>( @@ -93,11 +75,10 @@ sc_main(int argc, char **argv) if (mem_port) { SC_REPORT_INFO("sc_main", "Port Found"); - unsigned long long int size = 512*1024*1024ULL; memory = new Target("memory", - sim_control.getDebugFlag(), - size, - sim_control.getOffset()); + parser.getVerboseFlag(), + memorySize, + parser.getMemoryOffset()); memory->socket.bind(*mem_port); } else { @@ -105,6 +86,8 @@ sc_main(int argc, char **argv) std::exit(EXIT_FAILURE); } + SC_REPORT_INFO("sc_main", "Start of Simulation"); + sc_core::sc_start(); SC_REPORT_INFO("sc_main", "End of Simulation"); |