bankwise logic in xml
This commit is contained in:
@@ -4,7 +4,7 @@
|
||||
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
|
||||
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
|
||||
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
|
||||
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-64906255729110141" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11">
|
||||
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-2055719358" id="org.eclipse.cdt.managedbuilder.core.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings" parameter="${COMMAND} -E -P -v -dD "${INPUTS}" -std=c++11">
|
||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||
<language-scope id="org.eclipse.cdt.core.g++"/>
|
||||
</provider>
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
<memspec>
|
||||
<memconfig>
|
||||
<parameter id="bankwiseRefresh" type="bool" value="0" />
|
||||
<parameter id="bankwisePowerDown" type="bool" value="0" />
|
||||
<parameter id="bankwiseLogic" type="bool" value="1" />
|
||||
<parameter id="openPagePolicy" type="bool" value="1" />
|
||||
<parameter id="adaptiveOpenPagePolicy" type="bool" value="1" />
|
||||
</memconfig>
|
||||
|
||||
@@ -35,15 +35,16 @@ ControllerCore::ControllerCore(IWrapperConnector& wrapperConnector, std::map<Ban
|
||||
commandChecker[Command::Read] = new ReadChecker(config, state);
|
||||
commandChecker[Command::Write] = new WriteChecker(config, state);
|
||||
|
||||
if (config.BankwiseRefresh)
|
||||
if (config.BankwiseLogic)
|
||||
{
|
||||
refreshManager = new RefreshManagerBankwise(*this);
|
||||
else
|
||||
refreshManager = new RefreshManager(*this);
|
||||
|
||||
if (config.BankwisePowerDown)
|
||||
powerDownManager = new PowerDownManager(*this);
|
||||
}
|
||||
else
|
||||
{
|
||||
refreshManager = new RefreshManager(*this);
|
||||
powerDownManager = new PowerDownManagerGrouped(*this);
|
||||
}
|
||||
}
|
||||
|
||||
ControllerCore::~ControllerCore()
|
||||
@@ -76,20 +77,23 @@ void ControllerCore::triggerRefresh(tlm::tlm_generic_payload& payload, sc_time t
|
||||
if (refreshManager->isInvalidated(payload, time))
|
||||
return;
|
||||
|
||||
if (!powerDownManager->isInSelfRefresh(bank))
|
||||
if (config.BankwiseLogic)
|
||||
{
|
||||
if(config.BankwiseRefresh)
|
||||
if (!powerDownManager->isInSelfRefresh(bank))
|
||||
{
|
||||
printDebugMessage("Waking up bank " + to_string(bank.ID()) + " for refresh");
|
||||
powerDownManager->wakeUpForRefresh(bank, time);//expects PDNA and PDNP to exit without delay
|
||||
powerDownManager->wakeUpForRefresh(bank, time); //expects PDNA and PDNP to exit without delay
|
||||
refreshManager->scheduleRefresh(payload, time);
|
||||
}
|
||||
else
|
||||
}
|
||||
else if (!config.BankwiseLogic)
|
||||
{
|
||||
if (!powerDownManager->allBanksInSelfRefresh())
|
||||
{
|
||||
printDebugMessage("Waking up all banks for refresh");
|
||||
powerDownManager->wakeUpAllForRefresh(time);
|
||||
refreshManager->scheduleRefresh(payload, time);
|
||||
}
|
||||
|
||||
refreshManager->scheduleRefresh(payload, time);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -184,7 +188,6 @@ void ControllerCore::send(const CommandSchedule& schedule, tlm::tlm_generic_payl
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ICommandChecker& ControllerCore::getCommandChecker(Command command)
|
||||
{
|
||||
return *getElementFromMap(commandChecker, command);
|
||||
|
||||
@@ -37,10 +37,9 @@ struct Configuration
|
||||
TimingConfiguration Timings;
|
||||
|
||||
//MemConfiguration
|
||||
bool BankwiseRefresh;
|
||||
bool BankwisePowerDown;
|
||||
bool BankwiseLogic;
|
||||
bool OpenPagePolicy;
|
||||
bool adaptiveOpenPagePolicy;
|
||||
bool AdaptiveOpenPagePolicy;
|
||||
|
||||
private:
|
||||
Configuration();
|
||||
|
||||
@@ -46,10 +46,9 @@ void MemSpecLoader::loadConfig(Configuration& config, XMLElement* memspec)
|
||||
//MemConfiguration
|
||||
XMLElement* configuration = memspec->FirstChildElement("memconfig");
|
||||
|
||||
config.BankwiseRefresh = queryBoolParameter(configuration, "bankwiseRefresh");
|
||||
config.BankwisePowerDown = queryBoolParameter(configuration, "bankwisePowerDown");
|
||||
config.BankwiseLogic = queryBoolParameter(configuration, "bankwiseLogic");
|
||||
config.OpenPagePolicy = queryBoolParameter(configuration, "openPagePolicy");
|
||||
config.adaptiveOpenPagePolicy = queryBoolParameter(configuration, "adaptiveOpenPagePolicy");
|
||||
config.AdaptiveOpenPagePolicy = queryBoolParameter(configuration, "adaptiveOpenPagePolicy");
|
||||
}
|
||||
|
||||
void MemSpecLoader::loadDDR4(Configuration& config, XMLElement* memspec)
|
||||
|
||||
@@ -114,6 +114,16 @@ bool PowerDownManager::isInSelfRefresh(Bank bank)
|
||||
return getPowerDownState(bank) == PowerDownState::PDNSelfRefresh;
|
||||
}
|
||||
|
||||
bool PowerDownManager::allBanksInSelfRefresh()
|
||||
{
|
||||
for (Bank bank : controller.getBanks())
|
||||
{
|
||||
if(!isInSelfRefresh(bank))
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
bool PowerDownManager::isAwakeForRefresh(Bank bank)
|
||||
{
|
||||
return getPowerDownState(bank) == PowerDownState::AwakeForRefresh;
|
||||
|
||||
@@ -37,6 +37,7 @@ public:
|
||||
virtual void wakeUpAllForRefresh(sc_time time);
|
||||
|
||||
virtual bool isInSelfRefresh(Bank bank);
|
||||
virtual bool allBanksInSelfRefresh();
|
||||
virtual bool isInPowerDown(Bank bank);
|
||||
virtual bool isAwake(Bank bank);
|
||||
virtual bool isAwakeForRefresh(Bank bank);
|
||||
|
||||
Reference in New Issue
Block a user