Skip to content

LPDDR6 implementation#137

Draft
marcomoerz wants to merge 47 commits into
masterfrom
feat/lpddr6_dev
Draft

LPDDR6 implementation#137
marcomoerz wants to merge 47 commits into
masterfrom
feat/lpddr6_dev

Conversation

@marcomoerz
Copy link
Copy Markdown
Collaborator

No description provided.

@marcomoerz marcomoerz requested a review from lsteiner-tukl May 21, 2026 19:07
@marcomoerz marcomoerz self-assigned this May 21, 2026
else if constexpr (std::is_same_v<T, DRAMUtils::MemSpec::MemSpecLPDDR6>)
{
MemSpecLPDDR6 ddr (static_cast<DRAMUtils::MemSpec::MemSpecLPDDR6>(arg));
result = std::make_unique<LPDDR6>(ddr);
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warum bekommt LPDDR6 keine simconfig?

COUNT, // 23
};

namespace CmdTypeUtil
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Müssen die restlichen Funktionen hier nicht auch erweitert werden?

bitset[n] = patternApplyBitSpec(settings, descriptor, ((lastpattern >> n) & 1) == 1, column_bits[10]);
break;
case C11:
bitset[n] = column_bits[C11];
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

column_bits[11] oder column_bits[C11]?

struct command_stats_t : public util::Serialize, public util::Deserialize {
uint64_t act = 0;
uint64_t pre = 0;
uint64_t preSameBank = 0;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warum gibt es ein Stat für Same-Bank Precharge aber nicht All-Bank Precharge?

uint64_t refAllBank = 0;
uint64_t refPerBank = 0;
uint64_t refPerTwoBanks = 0;
uint64_t refSameBank = 0;
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fehlt hier nicht noch der neue Refresh?

@@ -0,0 +1,155 @@
#ifndef DRAMPOWER_STANDARDS_LPDDR6_LPDDR6INTERFACE_H
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wo wird das CS-Signal modelliert?

#include "DRAMPower/simconfig/simconfig.h"

#include <array>
#include <stdint.h>
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cstdint

case BG1:
bitset[n] = bank_group_bits[1];
break;
case DBG0:
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Wird das anders gehandhabt oder ist die Zuweisung falsch?

std::bitset<2> bank_bits(targetCoordinate.bank & 0x3);
std::bitset<17> row_bits(targetCoordinate.row & 0x1FFFF);
std::bitset<6> column_bits(targetCoordinate.column & 0x3F);
std::bitset<2> bank_group_bits(targetCoordinate.bankGroup & 0x2);
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warum & 0x2?

std::bitset<2> bank_group_bits(targetCoordinate.bankGroup & 0x2);
auto dbank = targetCoordinate.dbank.value_or((targetCoordinate.bank + extraData.perTwoBankOffset) % extraData.numberOfBanks);
auto dbankGroup = dbank / 4; // TODO enforce
std::bitset<2> dbank_group_bits(dbankGroup & 0x2);
Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warum & 0x2? Und die Variable wird nicht benutzt.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants