diff --git a/DRAMSys/pct/buildDRAMSys.sh b/DRAMSys/pct/buildDRAMSys.sh index 86287294..7b578cc9 100755 --- a/DRAMSys/pct/buildDRAMSys.sh +++ b/DRAMSys/pct/buildDRAMSys.sh @@ -2,6 +2,7 @@ JOBS=$(nproc --all) +rm -rf lib mkdir lib cd lib DRAMSYS_PCT=true qmake ../../simulator/library.pro diff --git a/DRAMSys/pct/createPlatform.tcl b/DRAMSys/pct/createPlatform.tcl index 04958d89..d90015b5 100644 --- a/DRAMSys/pct/createPlatform.tcl +++ b/DRAMSys/pct/createPlatform.tcl @@ -51,14 +51,12 @@ ::pct::set_simulation_build_project_setting Debug {Library Search Paths} [concat ../lib/ /usr/lib64/ ../../simulator/src/common/third_party/DRAMPower/src/] ::pct::set_simulation_build_project_setting Debug {Defined Symbols} SC_INCLUDE_DYNAMIC_PROCESSES=1 -# Configure for dynamic linking -#::pct::set_encap_config_setting Project:DRAMSys/DRAMSys FromSource build dynamic_library true -#::pct::add_encap_config_setting Project:DRAMSys/DRAMSys FromSource package dynamic_library_search_path [concat [glob -type d ../../build*]/simulator/] * - # Disable Fast Linking and Caching and Elaboration ::pct::set_simulation_build_project_setting Debug {Cache Objects} false ::pct::set_simulation_build_project_setting Debug {Fast Linking} false ::scsh::build-options -skip-elab on +### TODO: count number of cores: +::pct::set_simulation_build_project_setting Debug {Make Jobs} 16 # Configure DDR3 Example: ::pct::set_param_value /HARDWARE/i_DRAMSys {Constructor Arguments} pathToResources ../../simulator/resources/ @@ -73,7 +71,12 @@ ::pct::create_connection C_1 /HARDWARE /HARDWARE/i_ClockGenerator/CLK /HARDWARE/i_GFRBM_TLM2/CLK # Configure GFRBM: -::pct::set_param_value /HARDWARE/i_GFRBM_TLM2 {Scml Properties} InputFile ../../simulator/resources/traces/ddr3_example.stl +::pct::set_param_value /HARDWARE/i_GFRBM_TLM2 {Scml Properties} InputFile ../../simulator/resources/traces/pct.stl +::pct::set_param_value /HARDWARE/i_GFRBM_TLM2 {Template Arguments} NUM_IN_IRQ 0 +::pct::set_param_value /HARDWARE/i_GFRBM_TLM2 {Template Arguments} NUM_OUT_IRQ 0 +::pct::set_param_value /HARDWARE/i_GFRBM_TLM2 {Extra properties} /all_encaps/LogFile foo.log +::pct::set_param_value /HARDWARE/i_GFRBM_TLM2 {Extra properties} /all_encaps/DebugLevel 6 # Design: ::pct::set_background_color_rgb /HARDWARE/i_DRAMSys 113 200 55 255 + diff --git a/DRAMSys/simulator/library.pro b/DRAMSys/simulator/library.pro index f31de7d7..0a930c9a 100644 --- a/DRAMSys/simulator/library.pro +++ b/DRAMSys/simulator/library.pro @@ -24,6 +24,8 @@ $$eval(dramsys_pct) { message(PCT Simulation Feature Enabled) systemc_home = /software/Synopsys_CoWare/K-2015.12-SP1/SLS/linux/common INCLUDEPATH += $${systemc_home}/include/tlm + + DEFINES += DRAMSYS_PCT } message(SystemC home is $${systemc_home}) diff --git a/DRAMSys/simulator/src/simulation/DRAMSys.cpp b/DRAMSys/simulator/src/simulation/DRAMSys.cpp index 174dc721..41b80d42 100644 --- a/DRAMSys/simulator/src/simulation/DRAMSys.cpp +++ b/DRAMSys/simulator/src/simulation/DRAMSys.cpp @@ -56,7 +56,7 @@ using namespace std; DRAMSys::DRAMSys(sc_module_name __attribute__((unused)) name, string simulationToRun, - string pathToResources) + string pathToResources) : tSocket("DRAMSys_tSocket") { logo(); @@ -108,7 +108,6 @@ DRAMSys::DRAMSys(sc_module_name __attribute__((unused)) name, // Instantiate all internal DRAMSys modules: instantiateModules(Configuration::getInstance().SimulationName, pathToResources); - // Connect all internal DRAMSys modules: bindSockets(); @@ -159,19 +158,19 @@ void DRAMSys::setupTlmRecorders(const string &traceName, + ".tdb"; std::string recorderName = "tlmRecorder" + std::to_string(i); + TlmRecorder *tlmRecorder = new TlmRecorder(recorderName.c_str(), sqlScriptURI.c_str(), dbName.c_str(), Configuration::getInstance().DatabaseRecording); - tlmRecorder->recordMCconfig(Configuration::getInstance().mcconfigUri); tlmRecorder->recordMemspec(Configuration::getInstance().memspecUri); - tlmRecorders.push_back(tlmRecorder); - std::string traceNames = Configuration::getInstance().SimulationName; tlmRecorder->recordTracenames(traceNames); + + tlmRecorders.push_back(tlmRecorder); } } @@ -189,7 +188,6 @@ void DRAMSys::instantiateModules(const string &traceName, arbiter = new Arbiter("arbiter"); arbiter->setTlmRecorders(tlmRecorders); - for (size_t i = 0; i < Configuration::getInstance().NumberOfMemChannels; i++) @@ -216,10 +214,10 @@ void DRAMSys::instantiateModules(const string &traceName, void DRAMSys::bindSockets() { - tSocket.bind(arbiter->tSocket); + tSocket.bind(arbiter->tSocket); + if(Configuration::getInstance().CheckTLM2Protocol) { - for (size_t i = 0; i < Configuration::getInstance().NumberOfMemChannels; i++) diff --git a/DRAMSys/simulator/src/simulation/DRAMSys.h b/DRAMSys/simulator/src/simulation/DRAMSys.h index 14cbebf4..3f1aeca9 100644 --- a/DRAMSys/simulator/src/simulation/DRAMSys.h +++ b/DRAMSys/simulator/src/simulation/DRAMSys.h @@ -46,6 +46,8 @@ #include "Arbiter.h" #include "TraceGenerator.h" #include "ReorderBuffer.h" +#include +#include #include "../controller/Controller.h" #include "../common/third_party/tinyxml2/tinyxml2.h" #include "../common/tlm2_base_protocol_checker.h" @@ -68,6 +70,7 @@ public: private: + std::string traceName; //DramSetup setup; diff --git a/DRAMSys/simulator/src/simulation/Dram.h b/DRAMSys/simulator/src/simulation/Dram.h index c9e438d1..26375fcf 100644 --- a/DRAMSys/simulator/src/simulation/Dram.h +++ b/DRAMSys/simulator/src/simulation/Dram.h @@ -390,8 +390,9 @@ struct Dram : sc_module } else if (phase == BEGIN_WR) { - +#ifndef DRAMSYS_PCT assert(payload.get_data_length() == bytesPerBurst); +#endif if(powerAnalysis == true){DRAMPower->doCommand(MemCommand::WR, bank, cycle);} numberOfTransactionsServed++;