#include "dramExtension.h" #include #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 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(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); }