From 37f579e36ed0fe560c9ae09492ebbd175c27288b Mon Sep 17 00:00:00 2001 From: Lukas Steiner Date: Wed, 3 Jun 2020 19:59:38 +0200 Subject: [PATCH] Included splitting into gem5. --- DRAMSys/docs/Timings.ods | Bin 13502 -> 0 bytes DRAMSys/gem5/CMakeLists.txt | 4 + DRAMSys/gem5/main.cpp | 70 +++++++++++------- .../resources/simulations/sms-example.json | 24 ------ DRAMSys/simulator/main.cpp | 16 ++-- 5 files changed, 55 insertions(+), 59 deletions(-) delete mode 100644 DRAMSys/docs/Timings.ods delete mode 100644 DRAMSys/library/resources/simulations/sms-example.json diff --git a/DRAMSys/docs/Timings.ods b/DRAMSys/docs/Timings.ods deleted file mode 100644 index e3e6139b543a909eba7a96736d27c8852c6a0a90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13502 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 ozTuyR{ #include -#include "DRAMSys.h" -#include "TraceSetup.h" - #include "report_handler.hh" #include "sc_target.hh" #include "sim_control.hh" #include "slave_transactor.hh" #include "stats.hh" -using namespace std; +#include "DRAMSys.h" + +#ifdef RECORDING +#include "DRAMSysRecordable.h" +#include "../common/third_party/nlohmann/single_include/nlohmann/json.hpp" + +using json = nlohmann::json; +#endif + using namespace tlm; -class Gem5SimControlDRAMsys: public Gem5SystemC::Gem5SimControl +class Gem5SimControlDRAMsys : public Gem5SystemC::Gem5SimControl { public: - Gem5SimControlDRAMsys(string configFile) : + Gem5SimControlDRAMsys(std::string configFile) : Gem5SystemC::Gem5SimControl("gem5", configFile, 0, "MemoryAccess") - { - } + {} void afterSimulate() { @@ -68,7 +72,8 @@ public: }; -struct AddressOffset: sc_module { +class AddressOffset : sc_module +{ private: unsigned long long int offset; @@ -86,7 +91,7 @@ public: } //Forward Interface - tlm::tlm_sync_enum nb_transport_fw(tlm_generic_payload &trans, tlm_phase &phase, + tlm_sync_enum nb_transport_fw(tlm_generic_payload &trans, tlm_phase &phase, sc_time &delay) { //std::cout << "NB "<< this->name() <<": " << trans.get_address() << " -" << offset; @@ -95,7 +100,7 @@ public: return i_socket->nb_transport_fw(trans, phase, delay); } - unsigned int transport_dbg(tlm::tlm_generic_payload &trans) + unsigned int transport_dbg(tlm_generic_payload &trans) { // adjust address offset: //std::cout << "Debug "<< this->name() <<": " << trans.get_address() << " -" << offset; @@ -104,7 +109,7 @@ public: return i_socket->transport_dbg(trans); } - void b_transport(tlm::tlm_generic_payload &trans, sc_time &delay) + void b_transport(tlm_generic_payload &trans, sc_time &delay) { // adjust address offset: //std::cout << "B "<< this->name() <<": " << trans.get_address() << " -" << offset; @@ -114,7 +119,7 @@ public: } //Backward Interface - tlm::tlm_sync_enum nb_transport_bw(tlm_generic_payload &trans, tlm_phase &phase, + tlm_sync_enum nb_transport_bw(tlm_generic_payload &trans, tlm_phase &phase, sc_time &delay) { //trans.set_address(trans.get_address()+offset); @@ -123,7 +128,7 @@ public: }; -string pathOfFile(string file) +std::string pathOfFile(std::string file) { return file.substr(0, file.find_last_of('/')); } @@ -132,9 +137,9 @@ int sc_main(int argc, char **argv) { SC_REPORT_INFO("sc_main", "Simulation Setup"); - string SimulationXML; - string gem5ConfigFile; - string resources; + std::string simulationJson; + std::string gem5ConfigFile; + std::string resources; unsigned int numTransactors; Gem5SystemC::Gem5SlaveTransactor *t; std::vector transactors; @@ -142,18 +147,28 @@ int sc_main(int argc, char **argv) if (argc == 4) { // Get path of resources: resources = pathOfFile(argv[0]) - + string("/../../DRAMSys/library/resources/"); + + std::string("/../../DRAMSys/library/resources/"); - SimulationXML = argv[1]; + simulationJson = argv[1]; gem5ConfigFile = argv[2]; - numTransactors = atoi(argv[3]); + numTransactors = std::stoul(argv[3]); } else { SC_REPORT_FATAL("sc_main", "Please provide configuration files and number of ports"); } // Instantiate DRAMSys: - DRAMSys dramSys("DRAMSys", SimulationXML, resources); + DRAMSys *dramSys; +#ifdef RECORDING + json simulationdoc = parseJSON(simulationJson); + json simulatordoc = parseJSON(resources + "configs/simulator/" + + std::string(simulationdoc["simulation"]["simconfig"])); + + if (simulatordoc["simconfig"]["DatabaseRecording"]) + dramSys = new DRAMSysRecordable("DRAMSys", simulationJson, resources); + else +#endif + dramSys = new DRAMSys("DRAMSys", simulationJson, resources); // Instantiate gem5: Gem5SimControlDRAMsys sim_control(gem5ConfigFile); @@ -164,7 +179,7 @@ int sc_main(int argc, char **argv) // Names generated here must match port names used by the gem5 config file, e.g., config.ini if (numTransactors == 1) { t = new Gem5SystemC::Gem5SlaveTransactor("transactor", "transactor"); - t->socket.bind(dramSys.tSocket); + t->socket.bind(dramSys->tSocket); t->sim_control.bind(sim_control); transactors.push_back(t); } else { @@ -174,7 +189,7 @@ int sc_main(int argc, char **argv) std::string name = "transactor" + std::to_string(index); std::string portName = "transactor" + std::to_string(index); t = new Gem5SystemC::Gem5SlaveTransactor(name.c_str(), portName.c_str()); - t->socket.bind(dramSys.tSocket); + t->socket.bind(dramSys->tSocket); t->sim_control.bind(sim_control); transactors.push_back(t); } @@ -190,9 +205,9 @@ int sc_main(int argc, char **argv) AddressOffset dramOffset("dramOffset", (2147483648 - 67108863)); //+67108863); dramInterface.socket.bind(dramOffset.t_socket); - dramOffset.i_socket.bind(dramSys.tSocket); // ID0 + dramOffset.i_socket.bind(dramSys->tSocket); // ID0 nvmInterface.socket.bind(nvmOffset.t_socket); - nvmOffset.i_socket.bind(dramSys.tSocket); + nvmOffset.i_socket.bind(dramSys->tSocket); dramInterface.sim_control.bind(sim_control); nvmInterface.sim_control.bind(sim_control); @@ -208,9 +223,10 @@ int sc_main(int argc, char **argv) sc_core::sc_stop(); } - for (auto t : transactors) { + for (auto t : transactors) delete t; - } + + delete dramSys; SC_REPORT_INFO("sc_main", "End of Simulation"); diff --git a/DRAMSys/library/resources/simulations/sms-example.json b/DRAMSys/library/resources/simulations/sms-example.json deleted file mode 100644 index e4c6bfd9..00000000 --- a/DRAMSys/library/resources/simulations/sms-example.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "simulation": { - "addressmapping": "am_wideio.xml", - "mcconfig": "sms.xml", - "memspec": "wideio.json", - "simconfig": "sms.xml", - "simulationid": "sms-example", - "thermalconfig": "config.xml", - "tracesetup": [ - { - "clkMhz": 1000, - "name": "random.stl" - }, - { - "clkMhz": 1000, - "name": "chstone-adpcm_32.stl" - }, - { - "clkMhz": 1000, - "name": "stream.stl" - } - ] - } -} diff --git a/DRAMSys/simulator/main.cpp b/DRAMSys/simulator/main.cpp index a7596d09..7a99c49e 100644 --- a/DRAMSys/simulator/main.cpp +++ b/DRAMSys/simulator/main.cpp @@ -68,24 +68,24 @@ int sc_main(int argc, char **argv) sc_set_time_resolution(1, SC_PS); std::string resources; - std::string simulationJSON; + std::string simulationJson; // Run only with default config (ddr3-example.json): if (argc == 1) { // Get path of resources: resources = pathOfFile(argv[0]) + std::string("/../../DRAMSys/library/resources/"); - simulationJSON = resources + "simulations/ddr3-example.json"; + simulationJson = resources + "simulations/ddr3-example.json"; } // Run with specific config but default resource folders: else if (argc == 2) { // Get path of resources: resources = pathOfFile(argv[0]) + std::string("/../../DRAMSys/library/resources/"); - simulationJSON = argv[1]; + simulationJson = argv[1]; } // Run with spefific config and specific resource folder: else if (argc == 3) { - simulationJSON = argv[1]; + simulationJson = argv[1]; resources = argv[2]; } @@ -94,18 +94,18 @@ int sc_main(int argc, char **argv) // Instantiate DRAMSys: DRAMSys *dramSys; #ifdef RECORDING - json simulationdoc = parseJSON(simulationJSON); + json simulationdoc = parseJSON(simulationJson); json simulatordoc = parseJSON(resources + "configs/simulator/" + std::string(simulationdoc["simulation"]["simconfig"])); if (simulatordoc["simconfig"]["DatabaseRecording"]) - dramSys = new DRAMSysRecordable("DRAMSys", simulationJSON, resources); + dramSys = new DRAMSysRecordable("DRAMSys", simulationJson, resources); else #endif - dramSys = new DRAMSys("DRAMSys", simulationJSON, resources); + dramSys = new DRAMSys("DRAMSys", simulationJson, resources); // Instantiate STL Players: - TraceSetup *ts = new TraceSetup(simulationJSON, resources, &players); + TraceSetup *ts = new TraceSetup(simulationJson, resources, &players); // Bind STL Players with DRAMSys: for (size_t i = 0; i < players.size(); i++)