/* * Copyright (c) 2025 Fraunhofer IESE. All rights reserved. * * Authors: * Iron Prando da Silva */ #include "LPDDR4dbphaseentry.h" LPDDR4DBPhaseEntry::LPDDR4DBPhaseEntry(const QSqlQuery& query) { id = query.value(0).toLongLong(); phaseName = StringMapper(query.value(1).toString()); phaseBegin = query.value(2).toLongLong(); phaseEnd = query.value(3).toLongLong(); transact = query.value(4).toLongLong(); tBank = query.value(5).toLongLong(); tRank = query.value(6).toLongLong(); } bool LPDDR4DBPhaseEntry::potentialDependency(const TimeDependency& dep, const std::shared_ptr otherPhase) { auto other = std::dynamic_pointer_cast(otherPhase); if (!other) return false; bool isCmdPool = dep.phaseDep == StringMapper::Identifier::CMD_BUS; bool const skipOnIntraBankAndDifferentBanks = {dep.depType == DependencyType::IntraBank && tBank != other->tBank}; bool const skipOnIntraRankAndDifferentRanks = {dep.depType == DependencyType::IntraRank && tRank != other->tRank}; bool const skipOnInterRankAndSameRank = {dep.depType == DependencyType::InterRank && tRank == other->tRank && !isCmdPool}; return !(skipOnIntraBankAndDifferentBanks || skipOnIntraRankAndDifferentRanks || skipOnInterRankAndSameRank); }