Files
DRAMSys/dram/src/common/dramExtension.cpp
2014-04-11 12:42:49 +02:00

117 lines
2.3 KiB
C++

#include "dramExtension.h"
#include <assert.h>
#include "../core/configuration/Configuration.h"
#include "map"
using namespace tlm;
/* Static methods
*
*/
DramExtension& DramExtension::getExtension(const tlm_generic_payload *payload)
{
DramExtension *result = NULL;
payload->get_extension(result);
assert(result != NULL);
return *result;
}
DramExtension& DramExtension::getExtension(const tlm_generic_payload &payload)
{
return DramExtension::getExtension(&payload);
}
bool operator ==(const Thread& lhs, const Thread& rhs)
{
return lhs.ID() == rhs.ID();
}
bool operator !=(const Thread& lhs, const Thread& rhs)
{
return !(lhs == rhs);
}
bool operator <(const Thread& lhs, const Thread& rhs)
{
return lhs.ID() < rhs.ID();
}
bool operator ==(const Channel& lhs, const Channel& rhs)
{
return lhs.ID() == rhs.ID();
}
bool operator !=(const Channel& lhs, const Channel& rhs)
{
return !(lhs == rhs);
}
BankGroup Bank::getBankGroup()
{
static std::map<Bank, BankGroup> bankgroups;
if (bankgroups.size() == 0)
{
SC_ASSERT_(config.NumberOfBanks % config.NumberOfBankGroups == 0, "Number of banks must be a multiple of number of bankgroups");
for (unsigned int bank = 0; bank < core::Configuration::getInstance().NumberOfBanks; bank++)
{
unsigned int group = bank % core::Configuration::getInstance().NumberOfBankGroups;
bankgroups.insert(std::pair<Bank, BankGroup>(Bank(bank), BankGroup(group)));
}
}
return bankgroups.at(*this);
}
bool operator ==(const Bank& lhs, const Bank& rhs)
{
return lhs.ID() == rhs.ID();
}
bool operator !=(const Bank& lhs, const Bank& rhs)
{
return !(lhs == rhs);
}
bool operator ==(const BankGroup& lhs, const BankGroup& rhs)
{
return lhs.ID() == rhs.ID();
}
bool operator !=(const BankGroup& lhs, const BankGroup& rhs)
{
return !(lhs == rhs);
}
bool operator <(const Bank& lhs, const Bank& rhs)
{
return lhs.ID() < rhs.ID();
}
const Row Row::NO_ROW;
bool operator ==(const Row& lhs, const Row& rhs)
{
if(lhs.isNoRow != rhs.isNoRow)
return false;
return lhs.ID() == rhs.ID();
}
bool operator !=(const Row& lhs, const Row& rhs)
{
return !(lhs == rhs);
}
bool operator ==(const Column& lhs, const Column& rhs)
{
return lhs.ID() == rhs.ID();
}
bool operator !=(const Column& lhs, const Column& rhs)
{
return !(lhs == rhs);
}