diff --git a/DRAMSys/library/resources/configs/mcconfigs/fifo.xml b/DRAMSys/library/resources/configs/mcconfigs/fifo.xml index d01b9248..fc05a577 100644 --- a/DRAMSys/library/resources/configs/mcconfigs/fifo.xml +++ b/DRAMSys/library/resources/configs/mcconfigs/fifo.xml @@ -34,13 +34,6 @@ - - - - - - - diff --git a/DRAMSys/library/resources/configs/mcconfigs/fifoStrict.xml b/DRAMSys/library/resources/configs/mcconfigs/fifoStrict.xml index ed869b57..bc54f607 100644 --- a/DRAMSys/library/resources/configs/mcconfigs/fifoStrict.xml +++ b/DRAMSys/library/resources/configs/mcconfigs/fifoStrict.xml @@ -34,13 +34,6 @@ - - - - - - - diff --git a/DRAMSys/library/resources/configs/mcconfigs/fifo_ecc.xml b/DRAMSys/library/resources/configs/mcconfigs/fifo_ecc.xml index d01b9248..fc05a577 100644 --- a/DRAMSys/library/resources/configs/mcconfigs/fifo_ecc.xml +++ b/DRAMSys/library/resources/configs/mcconfigs/fifo_ecc.xml @@ -34,13 +34,6 @@ - - - - - - - diff --git a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs.xml b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs.xml index 20db08cd..bcaf76dd 100644 --- a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs.xml +++ b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs.xml @@ -34,13 +34,6 @@ - - - - - - - diff --git a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_bw_buffer16.xml b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_bw_buffer16.xml index 61221894..d92d32da 100644 --- a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_bw_buffer16.xml +++ b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_bw_buffer16.xml @@ -33,13 +33,6 @@ - - - - - - - diff --git a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_bw_buffer16_close_page.xml b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_bw_buffer16_close_page.xml index ff37370c..d4aa4a4c 100644 --- a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_bw_buffer16_close_page.xml +++ b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_bw_buffer16_close_page.xml @@ -33,13 +33,6 @@ - - - - - - - diff --git a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_grp.xml b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_grp.xml index dad77bf6..042cc5fb 100644 --- a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_grp.xml +++ b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_grp.xml @@ -34,13 +34,6 @@ - - - - - - - diff --git a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_nbw_buffer16.xml b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_nbw_buffer16.xml index d6410aea..7cb5befd 100644 --- a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_nbw_buffer16.xml +++ b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_nbw_buffer16.xml @@ -17,22 +17,6 @@ - - - - - - - - - diff --git a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_nbw_buffer16_close_page.xml b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_nbw_buffer16_close_page.xml index c8dd13c2..aa65b3ff 100644 --- a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_nbw_buffer16_close_page.xml +++ b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_nbw_buffer16_close_page.xml @@ -33,13 +33,6 @@ - - - - - - - diff --git a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_rp.xml b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_rp.xml index 3f636ba0..4c0b43c6 100644 --- a/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_rp.xml +++ b/DRAMSys/library/resources/configs/mcconfigs/fr_fcfs_rp.xml @@ -34,13 +34,6 @@ - - - - - - - diff --git a/DRAMSys/library/resources/configs/mcconfigs/grp.xml b/DRAMSys/library/resources/configs/mcconfigs/grp.xml index 753cca46..8b34759d 100644 --- a/DRAMSys/library/resources/configs/mcconfigs/grp.xml +++ b/DRAMSys/library/resources/configs/mcconfigs/grp.xml @@ -34,13 +34,6 @@ - - - - - - - diff --git a/DRAMSys/library/resources/configs/mcconfigs/par_bs.xml b/DRAMSys/library/resources/configs/mcconfigs/par_bs.xml index 478ec618..aaec39ca 100644 --- a/DRAMSys/library/resources/configs/mcconfigs/par_bs.xml +++ b/DRAMSys/library/resources/configs/mcconfigs/par_bs.xml @@ -34,13 +34,6 @@ - - - - - - - diff --git a/DRAMSys/library/resources/configs/mcconfigs/rgrmccfg.xml b/DRAMSys/library/resources/configs/mcconfigs/rgrmccfg.xml index b17e59ce..2f8fb337 100644 --- a/DRAMSys/library/resources/configs/mcconfigs/rgrmccfg.xml +++ b/DRAMSys/library/resources/configs/mcconfigs/rgrmccfg.xml @@ -33,13 +33,6 @@ - - - - - - - diff --git a/DRAMSys/library/resources/configs/mcconfigs/sms.xml b/DRAMSys/library/resources/configs/mcconfigs/sms.xml index e1ccb478..3d9433da 100644 --- a/DRAMSys/library/resources/configs/mcconfigs/sms.xml +++ b/DRAMSys/library/resources/configs/mcconfigs/sms.xml @@ -34,13 +34,6 @@ - - - - - - - diff --git a/DRAMSys/library/src/controller/core/configuration/ConfigurationLoader.cpp b/DRAMSys/library/src/controller/core/configuration/ConfigurationLoader.cpp index cf7bfaa4..76b0b971 100644 --- a/DRAMSys/library/src/controller/core/configuration/ConfigurationLoader.cpp +++ b/DRAMSys/library/src/controller/core/configuration/ConfigurationLoader.cpp @@ -115,17 +115,16 @@ void ConfigurationLoader::loadMCConfig(Configuration &config, void ConfigurationLoader::loadMCConfig(Configuration &config, XMLElement *mcconfig) { - if (mcconfig->Attribute("src")) { + if (mcconfig->Attribute("src")) + { XMLDocument doc; string src(mcconfig->Attribute("src")); config.mcconfigUri = src; loadXML(src, doc); loadMCConfig(config, doc.FirstChildElement("mcconfig")); - } else { - loadConfig(config, mcconfig); } - - + else + loadConfig(config, mcconfig); } void ConfigurationLoader::loadMemSpec(Configuration &config, string memspecUri) @@ -143,32 +142,30 @@ void ConfigurationLoader::loadMemSpec(Configuration &config, string memoryType = queryStringParameter(memspec, "memoryType"); if (memoryType == "DDR4") { - Configuration::getInstance().memSpec = new MemSpecDDR4; + Configuration::getInstance().memSpec = new MemSpecDDR4(); loadCommons(config, memspec); loadDDR4(config, memspec); } else if (memoryType == "DDR3") { - Configuration::getInstance().memSpec = new MemSpecDDR3; + Configuration::getInstance().memSpec = new MemSpecDDR3(); loadCommons(config, memspec); loadDDR3(config, memspec); } else if (memoryType == "LPDDR4") { - Configuration::getInstance().memSpec = new MemSpecLPDDR4; + Configuration::getInstance().memSpec = new MemSpecLPDDR4(); loadCommons(config, memspec); loadLPDDR4(config, memspec); } else if (memoryType == "WIDEIO_SDR") { - Configuration::getInstance().memSpec = new MemSpecWideIO; + Configuration::getInstance().memSpec = new MemSpecWideIO(); loadCommons(config, memspec); loadWideIO(config, memspec); } else - { reportFatal("ConfigurationLoader", "Unsupported DRAM type"); - } } void ConfigurationLoader::loadCommons(Configuration &config, XMLElement *xmlSpec) @@ -181,7 +178,6 @@ void ConfigurationLoader::loadCommons(Configuration &config, XMLElement *xmlSpec // MemArchitecture XMLElement *architecture = xmlSpec->FirstChildElement("memarchitecturespec"); memSpec->NumberOfBanks = queryUIntParameter(architecture, "nbrOfBanks"); - //memSpec->NumberOfRanks = queryUIntParameter(architecture, "nbrOfRanks"); memSpec->BurstLength = queryUIntParameter(architecture, "burstLength"); memSpec->DataRate = queryUIntParameter(architecture, "dataRate"); memSpec->NumberOfRows = queryUIntParameter(architecture, "nbrOfRows"); @@ -243,11 +239,6 @@ void ConfigurationLoader::loadDDR3(Configuration &config, XMLElement *xmlSpec) memSpec->tXPDLL = clk * queryUIntParameter(timings, "XPDLL"); memSpec->tXSDLL = clk * queryUIntParameter(timings, "XSDLL"); - memSpec->refreshTimings.clear(); - for (unsigned int i = 0; i < memSpec->NumberOfBanks; ++i) - memSpec->refreshTimings[Bank(i)] = RefreshTiming(memSpec->tRFC, - memSpec->tREFI); - // Currents and Volatages: TODO Check if this is correct. XMLElement *powers = xmlSpec->FirstChildElement("mempowerspec"); memSpec->iDD2P0 = queryDoubleParameter(powers, "idd2p0"); @@ -272,8 +263,8 @@ void ConfigurationLoader::loadDDR4(Configuration &config, XMLElement *xmlSpec) sc_time clk = memSpec->clk; memSpec->tCCD_S = clk * queryUIntParameter(timings, "CCD_S"); memSpec->tCCD_L = clk * queryUIntParameter(timings, "CCD_L"); - memSpec->tFAW = clk * queryUIntParameter(timings, "FAW"); - memSpec->tREFI = clk * queryUIntParameter(timings, "REFI"); + memSpec->tFAW = clk * queryUIntParameter(timings, "FAW"); + memSpec->tREFI = clk * queryUIntParameter(timings, "REFI"); unsigned refMode = Configuration::getInstance().getRefMode(); if (refMode == 1) memSpec->tRFC = clk * queryUIntParameter(timings, "RFC"); @@ -283,7 +274,7 @@ void ConfigurationLoader::loadDDR4(Configuration &config, XMLElement *xmlSpec) memSpec->tRFC = clk * queryUIntParameter(timings, "RFC4"); else SC_REPORT_FATAL("ConfigurationLoader", "Refresh Mode not supported"); - memSpec->tRP = clk * queryUIntParameter(timings, "RP"); + memSpec->tRP = clk * queryUIntParameter(timings, "RP"); memSpec->tRRD_S = clk * queryUIntParameter(timings, "RRD_S"); memSpec->tRRD_L = clk * queryUIntParameter(timings, "RRD_L"); memSpec->tWTR_S = clk * queryUIntParameter(timings, "WTR_S"); @@ -291,11 +282,6 @@ void ConfigurationLoader::loadDDR4(Configuration &config, XMLElement *xmlSpec) memSpec->tXPDLL = clk * queryUIntParameter(timings, "XPDLL"); memSpec->tXSDLL = clk * queryUIntParameter(timings, "XSDLL"); - memSpec->refreshTimings.clear(); - for (unsigned int i = 0; i < memSpec->NumberOfBanks; ++i) - memSpec->refreshTimings[Bank(i)] = RefreshTiming(memSpec->tRFC, - memSpec->tREFI); - // Currents and Volatages: XMLElement *powers = xmlSpec->FirstChildElement("mempowerspec"); memSpec->iDD02 = queryDoubleParameter(powers, "idd02"); @@ -336,11 +322,6 @@ void ConfigurationLoader::loadLPDDR4(Configuration &config, XMLElement *xmlSpec) memSpec->tRP = clk * queryUIntParameter(timings, "RPPB"); memSpec->tRRD = clk * queryUIntParameter(timings, "RRD"); - memSpec->refreshTimings.clear(); - for (unsigned int i = 0; i < memSpec->NumberOfBanks; ++i) - memSpec->refreshTimings[Bank(i)] = RefreshTiming(memSpec->tRFCPB, - memSpec->tREFIPB); - // Currents and Volatages: XMLElement *powers = xmlSpec->FirstChildElement("mempowerspec"); memSpec->iDD02 = queryDoubleParameter(powers, "idd02"); @@ -373,11 +354,6 @@ void ConfigurationLoader::loadWideIO(Configuration &config, XMLElement *memspec) memSpec->tTAW = clk * queryUIntParameter(timings, "TAW"); memSpec->tWTR = clk * queryUIntParameter(timings, "WTR"); - memSpec->refreshTimings.clear(); - for (unsigned int i = 0; i < memSpec->NumberOfBanks; ++i) - memSpec->refreshTimings[Bank(i)] = RefreshTiming(memSpec->tRFC, - memSpec->tREFI); - // Currents and Volatages: XMLElement *powers = memspec->FirstChildElement("mempowerspec"); memSpec->iDD02 = queryDoubleParameter(powers, "idd02"); diff --git a/DRAMSys/library/src/controller/core/configuration/MemSpec.cpp b/DRAMSys/library/src/controller/core/configuration/MemSpec.cpp index 30e8dd04..e94b1bbd 100644 --- a/DRAMSys/library/src/controller/core/configuration/MemSpec.cpp +++ b/DRAMSys/library/src/controller/core/configuration/MemSpec.cpp @@ -40,6 +40,8 @@ #include "../../Command.h" #include "Configuration.h" +using namespace tlm; + const std::vector &MemSpec::getBanks() const { static std::vector banks; @@ -76,7 +78,7 @@ sc_time MemSpec::getMinExecutionTimeForPowerDownCmd(Command command) const // Returns the execution time for commands that have a fixed execution time // TODO: override this method for different MemSpecs? -sc_time MemSpec::getExecutionTime(Command command, tlm::tlm_generic_payload &payload) const +sc_time MemSpec::getExecutionTime(Command command, tlm_generic_payload &) const { if (command == Command::PRE || command == Command::PREA) return tRP; @@ -93,8 +95,7 @@ sc_time MemSpec::getExecutionTime(Command command, tlm::tlm_generic_payload &pay else if (command == Command::REFA) return tRFC; else if (command == Command::REFB) - return getElementFromMap(refreshTimings, - DramExtension::getExtension(payload).getBank()).tRFC; + return tRFC; else if (command == Command::PDXA || command == Command::PDXP || command == Command::SREFEX) return clk; else @@ -105,7 +106,7 @@ sc_time MemSpec::getExecutionTime(Command command, tlm::tlm_generic_payload &pay } } -sc_time MemSpecLPDDR4::getExecutionTime(Command command, tlm::tlm_generic_payload &payload) const +sc_time MemSpecLPDDR4::getExecutionTime(Command command, tlm_generic_payload &) const { if (command == Command::PRE) return tRP; @@ -124,10 +125,7 @@ sc_time MemSpecLPDDR4::getExecutionTime(Command command, tlm::tlm_generic_payloa else if (command == Command::REFA) return tRFC; else if (command == Command::REFB) - { - return getElementFromMap(refreshTimings, - DramExtension::getExtension(payload).getBank()).tRFC; - } + return tRFCPB; else if (command == Command::PDXA || command == Command::PDXP || command == Command::SREFEX) return clk; else diff --git a/DRAMSys/library/src/controller/core/configuration/MemSpec.h b/DRAMSys/library/src/controller/core/configuration/MemSpec.h index dd2c204d..059b78cb 100644 --- a/DRAMSys/library/src/controller/core/configuration/MemSpec.h +++ b/DRAMSys/library/src/controller/core/configuration/MemSpec.h @@ -45,15 +45,6 @@ using namespace tlm; -struct RefreshTiming -{ - RefreshTiming() {} - RefreshTiming(sc_time tRFC, sc_time tREFI) : tRFC(tRFC), tREFI(tREFI) {} - - sc_time tRFC; - sc_time tREFI; -}; - struct MemSpec { const std::vector &getBanks() const; @@ -110,8 +101,8 @@ struct MemSpec double iDD6; double vDD; - std::map refreshTimings; - //ensure that map is populated completely in memspecloader + // For different refresh frequencies on different banks, not implemented + //std::map refreshTimings; virtual ~MemSpec() {} };