117 lines
2.3 KiB
C++
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);
|
|
}
|
|
|
|
|