Use tCCDMW for masked write in LPDDR4
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 4,
|
||||
"CMDCKE": 3,
|
||||
"DQS2DQ": 0,
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 4,
|
||||
"CMDCKE": 3,
|
||||
"DQS2DQ": 0,
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 6,
|
||||
"CMDCKE": 3,
|
||||
"DQS2DQ": 0,
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 9,
|
||||
"CMDCKE": 3,
|
||||
"DQS2DQ": 0,
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 10,
|
||||
"CMDCKE": 3,
|
||||
"DQS2DQ": 0,
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 12,
|
||||
"CMDCKE": 3,
|
||||
"DQS2DQ": 0,
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 15,
|
||||
"CMDCKE": 4,
|
||||
"DQS2DQ": 0,
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 17,
|
||||
"CMDCKE": 4,
|
||||
"DQS2DQ": 0,
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 4,
|
||||
"CMDCKE": 3,
|
||||
"DQS2DQ": 0,
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 4,
|
||||
"CMDCKE": 3,
|
||||
"DQS2DQ": 0,
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 6,
|
||||
"CMDCKE": 3,
|
||||
"DQS2DQ": 0,
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 9,
|
||||
"CMDCKE": 3,
|
||||
"DQS2DQ": 0,
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 10,
|
||||
"CMDCKE": 3,
|
||||
"DQS2DQ": 0,
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 12,
|
||||
"CMDCKE": 3,
|
||||
"DQS2DQ": 0,
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 15,
|
||||
"CMDCKE": 4,
|
||||
"DQS2DQ": 0,
|
||||
|
||||
@@ -15,6 +15,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 17,
|
||||
"CMDCKE": 4,
|
||||
"DQS2DQ": 0,
|
||||
|
||||
@@ -65,6 +65,7 @@
|
||||
},
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 12,
|
||||
"CMDCKE": 3,
|
||||
"DQS2DQ": 2,
|
||||
|
||||
@@ -72,6 +72,7 @@ MemSpecLPDDR4::MemSpecLPDDR4(const DRAMSys::Config::MemSpec &memSpec)
|
||||
tFAW (tCK * memSpec.memtimingspec.entries.at("FAW")),
|
||||
tRRD (tCK * memSpec.memtimingspec.entries.at("RRD")),
|
||||
tCCD (tCK * memSpec.memtimingspec.entries.at("CCD")),
|
||||
tCCDMW (tCK * memSpec.memtimingspec.entries.at("CCDMW")),
|
||||
tRL (tCK * memSpec.memtimingspec.entries.at("RL")),
|
||||
tRPST (tCK * memSpec.memtimingspec.entries.at("RPST")),
|
||||
tDQSCK (tCK * memSpec.memtimingspec.entries.at("DQSCK")),
|
||||
|
||||
@@ -65,6 +65,7 @@ public:
|
||||
const sc_core::sc_time tFAW;
|
||||
const sc_core::sc_time tRRD;
|
||||
const sc_core::sc_time tCCD;
|
||||
const sc_core::sc_time tCCDMW;
|
||||
const sc_core::sc_time tRL;
|
||||
const sc_core::sc_time tRPST;
|
||||
const sc_core::sc_time tDQSCK;
|
||||
|
||||
@@ -178,6 +178,17 @@ sc_time CheckerLPDDR4::timeToSatisfyConstraints(Command command, const tlm_gener
|
||||
if (lastCommandStart != scMaxTime)
|
||||
earliestTimeToStart = std::max(earliestTimeToStart, lastCommandStart + tBURST + memSpec->tRTRS);
|
||||
|
||||
if (command == Command::MWR || command == Command::MWRA)
|
||||
{
|
||||
lastCommandStart = lastScheduledByCommandAndBank[Command::WR][bank];
|
||||
if (lastCommandStart != scMaxTime)
|
||||
earliestTimeToStart = std::max(earliestTimeToStart, lastCommandStart + memSpec->tCCDMW);
|
||||
|
||||
lastCommandStart = lastScheduledByCommandAndBank[Command::WRA][bank];
|
||||
if (lastCommandStart != scMaxTime)
|
||||
earliestTimeToStart = std::max(earliestTimeToStart, lastCommandStart + memSpec->tCCDMW);
|
||||
}
|
||||
|
||||
lastCommandStart = lastScheduledByCommandAndRank[Command::PDXA][rank];
|
||||
if (lastCommandStart != scMaxTime)
|
||||
earliestTimeToStart = std::max(earliestTimeToStart, lastCommandStart + memSpec->tXP);
|
||||
|
||||
@@ -68,6 +68,7 @@
|
||||
"memoryType": "LPDDR4",
|
||||
"memtimingspec": {
|
||||
"CCD": 8,
|
||||
"CCDMW": 32,
|
||||
"CKE": 12,
|
||||
"CMDCKE": 3,
|
||||
"DQS2DQ": 2,
|
||||
|
||||
Reference in New Issue
Block a user