added fix for bankgroups and ranks in addressdecoder

This commit is contained in:
Janik Schlemminger
2014-09-10 16:10:07 +02:00
parent 5a7efb4d88
commit e105d54045
3 changed files with 9 additions and 3 deletions

View File

@@ -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;