/* * Copyright (c) 2022, RPTU Kaiserslautern-Landau * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are * met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. * * 3. Neither the name of the copyright holder nor the names of its * contributors may be used to endorse or promote products derived from * this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER * OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * Authors: * Iron Prando da Silva */ #pragma once #include "../dramtimedependenciesbase.h" #include "businessObjects/dramTimeDependencies/dbEntries/specialized/DDR5dbphaseentry.h" class TimeDependenciesInfoDDR5 final : public DRAMTimeDependenciesBase { public: TimeDependenciesInfoDDR5(const QJsonObject& memspec, const uint clk); static const std::vector getPossiblePhases(); void rankIDToRankIDs(size_t rankID, size_t& dimmRID, size_t& physRID, size_t& logRID) const; void bankIDToBankInGroup(size_t logicalRankID, size_t bankID, size_t& bankInGroup) const; protected: void mInitializeValues() override; DependencyMap mSpecializedGetDependencies() const override; protected: uint mNumOfRanks; uint mNumOfDIMMRanks; uint mNumLogicalRanksPerPhysicalRank; uint mNumPhysicalRanksPerDIMMRank; uint mNumBanksPerGroup; uint burstLength; uint dataRate; uint refMode; uint tRCD; uint tPPD; uint tRP; uint tRAS; uint tRC; uint tRL; uint RBL; uint tRTP; uint tRPRE; uint tRPST; uint tRDDQS; uint tWL; uint WBL; uint tWPRE; uint tWPST; uint tWR; uint tCCD_L_slr; uint tCCD_L_WR_slr; uint tCCD_L_WR2_slr; uint tCCD_S_slr; uint tCCD_S_WR_slr; uint tCCD_dlr; uint tCCD_WR_dlr; uint tCCD_WR_dpr; uint tRRD_S_slr; uint tRRD_L_slr; uint tRRD_dlr; uint tFAW_slr; uint tFAW_dlr; uint tWTR_L; uint tWTR_S; uint tRFC_slr; uint tRFC_dlr; uint tRFC_dpr; uint tRFCsb_slr; uint tRFCsb_dlr; uint tREFI; uint tREFSBRD_slr; uint tREFSBRD_dlr; uint tRTRS; uint UNKNOWN; uint tCPDED; uint tPD; uint tXP; uint tACTPDEN; uint tPRPDEN; uint tREFPDEN; uint tRD_BURST; uint tWR_BURST; uint tWTRA; uint tWRRDA; uint tWRPRE; uint tRDAACT; uint tWRAACT; uint tCCD_L_RTW_slr; uint tCCD_S_RTW_slr; uint tCCD_RTW_dlr; uint tRDRD_dpr; uint tRDRD_ddr; uint tRDWR_dpr; uint tRDWR_ddr; uint tCCD_L_WTR_slr; uint tCCD_S_WTR_slr; uint tCCD_WTR_dlr; uint tWRWR_dpr; uint tWRWR_ddr; uint tWRRD_dpr; uint tWRRD_ddr; uint tRDPDEN; uint tWRPDEN; uint tWRAPDEN; uint cmdMode; uint bitWidth; uint cmdLengthDiff; uint shortCmdOffset; uint longCmdOffset; uint tBURST16; uint tBURST32; };