Included LPDDR4 memspec.

This commit is contained in:
Lukas Steiner (2)
2019-09-26 13:26:17 +02:00
parent cfbce483bd
commit 47949922f3
3 changed files with 115 additions and 1 deletions

View File

@@ -0,0 +1,98 @@
<!DOCTYPE memspec SYSTEM "memspec.dtd">
<!--Single channel device with 8Gb, Set A WL-->
<memspec>
<parameter id="memoryId" type="string" value="JEDEC_8Gb_LPDDR4-3200_16bit" />
<parameter id="memoryType" type="string" value="LPDDR4" />
<memarchitecturespec>
<parameter id="width" type="uint" value="16" />
<parameter id="nbrOfBanks" type="uint" value="8" />
<parameter id="nbrOfRanks" type="uint" value="1" />
<parameter id="nbrOfRows" type="uint" value="65536" />
<parameter id="nbrOfColumns" type="uint" value="1024" />
<parameter id="dataRate" type="uint" value="2" />
<parameter id="burstLength" type="uint" value="16" />
</memarchitecturespec>
<memtimingspec>
<parameter id="clkMhz" type="double" value="1600" />
<parameter id="REFI" type="uint" value="6246" />
<parameter id="REFIPB" type="uint" value="780" />
<parameter id="RFCAB" type="uint" value="448" />
<parameter id="RFCPB" type="uint" value="224" />
<parameter id="RL" type="uint" value="28" />
<parameter id="WL" type="uint" value="14" />
<parameter id="RPAB" type="uint" value="34" />
<parameter id="RPPB" type="uint" value="29" />
<parameter id="PPD" type="uint" value="4" />
<parameter id="RAS" type="uint" value="68" />
<parameter id="RCD" type="uint" value="29" />
<parameter id="FAW" type="uint" value="64" />
<parameter id="RRD" type="uint" value="16" />
<parameter id="RTP" type="uint" value="12" />
<!--parameter id="nWR" type="uint" value="30" /-->
<parameter id="WR" type="uint" value="29" />
<parameter id="CCD" type="uint" value="8" />
<parameter id="WTR" type="uint" value="16" />
<parameter id="DQSCK" type="uint" value="6" />
<parameter id="DQSS" type="uint" value="1" />
<parameter id="DQS2DQ" type="uint" value="2" />
<parameter id="XP" type="uint" value="12" />
<parameter id="XSR" type="uint" value="460" />
<parameter id="ESCKE" type="uint" value="3" />
<parameter id="CKE" type="uint" value="12" />
<parameter id="CMDCKE" type="uint" value="3" />
<parameter id="RPST" type="uint" value="0" />
</memtimingspec>
<mempowerspec>
<parameter id="idd0" type="double" value="3.5" />
<parameter id="idd02" type="double" value="45.0" />
<parameter id="idd0ql" type="double" value="0.75" />
<parameter id="idd2p" type="double" value="1.2" />
<parameter id="idd2p2" type="double" value="3.0" />
<parameter id="idd2pQ" type="double" value="0.75" />
<parameter id="idd2ps" type="double" value="1.2" />
<parameter id="idd2ps2" type="double" value="3.0" />
<parameter id="idd2psq" type="double" value="0.75" />
<parameter id="idd2n" type="double" value="2.0" />
<parameter id="idd2n2" type="double" value="27.0" />
<parameter id="idd2nQ" type="double" value="0.75" />
<parameter id="idd2ns" type="double" value="2.0" />
<parameter id="idd2ns2" type="double" value="23.0" />
<parameter id="idd2nsq" type="double" value="0.75" />
<parameter id="idd3p" type="double" value="1.2" />
<parameter id="idd3p2" type="double" value="9.0" />
<parameter id="idd3pQ" type="double" value="0.75" />
<parameter id="idd3ps" type="double" value="1.2" />
<parameter id="idd3ps2" type="double" value="9.0" />
<parameter id="idd3psq" type="double" value="0.75" />
<parameter id="idd3n" type="double" value="2.25" />
<parameter id="idd3n2" type="double" value="30.0" />
<parameter id="idd3nQ" type="double" value="0.75" />
<parameter id="idd3ns" type="double" value="2.25" />
<parameter id="idd3ns2" type="double" value="30.0" />
<parameter id="idd3nsq" type="double" value="0.75" />
<parameter id="idd4r" type="double" value="2.25" />
<parameter id="idd4r2" type="double" value="275.0" />
<parameter id="idd4rq" type="double" value="150.0" />
<parameter id="idd4w" type="double" value="2.25.0" />
<parameter id="idd4w2" type="double" value="210.0" />
<parameter id="idd4wq" type="double" value="55.0" />
<!-- refresh after every trfc -->
<parameter id="idd5" type="double" value="10.0" />
<parameter id="idd52" type="double" value="90.0" />
<parameter id="idd5q" type="double" value="0.75" />
<!-- ref once in every trefi -->
<parameter id="idd5ab" type="double" value="2.5" />
<parameter id="idd5ab2" type="double" value="30.0" />
<parameter id="idd5abq" type="double" value="0.75" />
<!-- perbank ref, ref once in every trefi/8 -->
<parameter id="idd5b" type="double" value="2.5" />
<parameter id="idd5b2" type="double" value="30.0" />
<parameter id="idd5bq" type="double" value="0.75" />
<parameter id="idd6" type="double" value="0.3" />
<parameter id="idd62" type="double" value="0.5" />
<parameter id="idd6q" type="double" value="0.1" />
<parameter id="vdd" type="double" value="1.8" />
<parameter id="vdd2" type="double" value="1.1" />
<parameter id="vddq" type="double" value="1.1" />
</mempowerspec>
</memspec>

View File

@@ -65,3 +65,18 @@ sc_time MemSpecLPDDR4::getExecutionTime(Command command) const
}
}
TimeInterval MemSpecLPDDR4::getIntervalOnDataStrobe(Command command) const
{
if (command == Command::RD || command == Command::RDA)
return TimeInterval(sc_time_stamp() + tRL + tDQSCK /*+ DQSQ*/,
sc_time_stamp() + tRL + tDQSCK /*+ DQSQ*/ + getReadAccessTime());
else if (command == Command::WR || command == Command::WRA)
return TimeInterval(sc_time_stamp() + tWL /*+ tDQSS + tDQS2DQ*/,
sc_time_stamp() + tWL /*+ tDQSS + tDQS2DQ*/ + getWriteAccessTime());
else
{
SC_REPORT_FATAL("MemSpecLPDDR4", "Method was called with invalid argument");
return TimeInterval();
}
}

View File

@@ -59,7 +59,8 @@ struct MemSpecLPDDR4 : public MemSpec
double iDD62;
double vDD2;
virtual sc_time getExecutionTime(Command) const override;
sc_time getExecutionTime(Command) const override;
TimeInterval getIntervalOnDataStrobe(Command) const override;
};
#endif // MEMSPECLPDDR4_H