added fix for bankgroups and ranks in addressdecoder
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#include <systemc.h>
|
||||
#include "Utils.h"
|
||||
#include "bitset"
|
||||
#include "../controller/core/configuration/Configuration.h"
|
||||
|
||||
using namespace std;
|
||||
using namespace tinyxml2;
|
||||
@@ -48,10 +49,12 @@ DecodedAddress xmlAddressDecoder::decodeAddress(sc_dt::uint64 addr)
|
||||
{
|
||||
DecodedAddress result;
|
||||
result.channel = (addr & masks["channel"]) >> shifts["channel"];
|
||||
result.rank = (addr & masks["rank"]) >> shifts["rank"];
|
||||
result.bankgroup = (addr & masks["bankgroup"]) >> shifts["bankgroup"];
|
||||
result.row = (addr & masks["row"]) >> shifts["row"];
|
||||
//result.rank = (addr & masks["rank"]) >> shifts["rank"];
|
||||
//result.bankgroup = (addr & masks["bankgroup"]) >> shifts["bankgroup"];
|
||||
result.bank = (addr & masks["bank"]) >> shifts["bank"];
|
||||
result.bankgroup = result.bank % core::Configuration::getInstance().memSpec.NumberOfBankGroups;
|
||||
result.rank = result.bank % core::Configuration::getInstance().memSpec.NumberOfRanks;
|
||||
result.row = (addr & masks["row"]) >> shifts["row"];
|
||||
result.column = (addr & masks["column"]) >> shifts["column"];
|
||||
result.bytes = (addr & masks["bytes"]) >> shifts["bytes"];
|
||||
return result;
|
||||
|
||||
@@ -111,6 +111,7 @@ void ConfigurationLoader::loadDDR4(Configuration& config, XMLElement* memspec)
|
||||
|
||||
config.memSpec.NumberOfBanks = queryUIntParameter(architecture, "nbrOfBanks");
|
||||
config.memSpec.NumberOfBankGroups = queryUIntParameter(architecture, "nbrOfBankGroups");
|
||||
config.memSpec.NumberOfRanks = queryUIntParameter(architecture, "nbrOfRanks");
|
||||
config.memSpec.BurstLength = queryUIntParameter(architecture, "burstLength");
|
||||
config.memSpec.nActivate = 4;
|
||||
config.memSpec.DataRate = queryUIntParameter(architecture, "dataRate");
|
||||
@@ -161,6 +162,7 @@ void ConfigurationLoader::loadWideIO(Configuration& config, XMLElement* memspec)
|
||||
|
||||
config.memSpec.NumberOfBanks = queryUIntParameter(architecture, "nbrOfBanks");
|
||||
config.memSpec.NumberOfBankGroups = 1;
|
||||
config.memSpec.NumberOfRanks = 1;
|
||||
config.memSpec.BurstLength = queryUIntParameter(architecture, "burstLength");
|
||||
config.memSpec.nActivate = 2;
|
||||
config.memSpec.DataRate = queryUIntParameter(architecture, "dataRate");
|
||||
|
||||
@@ -48,6 +48,7 @@ struct MemSpec
|
||||
|
||||
unsigned int NumberOfBanks;
|
||||
unsigned int NumberOfBankGroups;
|
||||
unsigned int NumberOfRanks;
|
||||
unsigned int BurstLength;
|
||||
unsigned int nActivate;
|
||||
unsigned int DataRate;
|
||||
|
||||
Reference in New Issue
Block a user