Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MemPowerSpec iddX specification effort reduction #5

Closed
Sv3n opened this issue Jul 22, 2014 · 4 comments
Closed

MemPowerSpec iddX specification effort reduction #5

Sv3n opened this issue Jul 22, 2014 · 4 comments

Comments

@Sv3n
Copy link
Collaborator

Sv3n commented Jul 22, 2014

MemPowerSpec iddX specification

This issue is related to a discussion that took place in an earlier email thread, so I'll copy-paste some relevant bits:

For the non-DDR2/3 memory types, the definition of the currents as defined in the vendor data sheets is not the same as the values we need to plug into the MemPowerSpec. This makes it hard to define new memspecs and to verify that the ones we currently have are correct.

Goal

It should be easy to create the spec (since that is a manual process) and the burden of calculating intermediate values or remapping variable names should sit in the tool / parser. The way it's done now is very error-prone, difficult to check and time consuming.

I would vote for a usage scheme like this:

User: [1) User reads datasheet 2) Inserts required currents as defined in the datasheet into memspec] --> Program: [ 3) uses given currents and memory type to derive model input variables, 4) Model uses variables and performs generic calculations]

This separates the concern of specification and modeling, and provides a cleaner and more intuitive interface for the users. Similarly, duplicating IDD2P0 into IDD2P1 for other memories could be done in this intermediate layer, if the model really requires this.

Datasheet to MemPowerSpec mappings

Feel free to extend this with other memories. It would also be good to have the list of required currents per memory type.

LPDDR2 mapping

This is what I think the mapping from LPDDR2 datasheet currents to MemPowerSpec variables is (written in the xml comments):

    <parameter id="idd0"    type="double" value="20.0"  /> <!-- IDD01 -->
    <parameter id="idd02"   type="double" value="53.0"  /> <!-- IDD02 = IDD02 + IDD0,in = 47 + 6 = 53 -->
    <parameter id="idd2n"   type="double" value="1.7"   /> <!-- IDD2N1 -->
    <parameter id="idd2n2"  type="double" value="21.0"  /> <!-- IDD2N2 + IDD2N,in = 15 + 6 -->
    <parameter id="idd2p0"  type="double" value="0.5"   /> <!-- IDD2P1 -->
    <parameter id="idd2p02" type="double" value="1.7"   /> <!-- IDD2P2 + IDD2P,in = 1600 + 100 = 1.7 -->
    <parameter id="idd2p1"  type="double" value="0.5"   /> <!-- IDD2PS1 -->
    <parameter id="idd2p12" type="double" value="1.7"   /> <!-- IDD2PS2 + IDD2PS,in = 1600 + 100 = 1.7 -->
    <parameter id="idd3n"   type="double" value="1.2"   /> <!-- IDD3N1 -->
    <parameter id="idd3n2"  type="double" value="29.0"  /> <!-- IDD3N2 + IDD3N,in = 23 + 6 = 29 -->
    <parameter id="idd3p0"  type="double" value="1.2"   /> <!-- IDD3P1 -->
    <parameter id="idd3p02" type="double" value="4.12"  /> <!-- IDD3P2 + IDD3P,in = 4 + 0.12 = 4.12 -->
    <parameter id="idd3p1"  type="double" value="1.2"   /> <!-- IDD3PS1 (?) -->
    <parameter id="idd3p12" type="double" value="4.12"  /> <!-- IDD3PS2 + IDD3PS,in = 4 + 0.12 = 4.12 -->
    <parameter id="idd4r"   type="double" value="5.0"   /> <!-- IDD4R1 -->
    <parameter id="idd4r2"  type="double" value="206.0" /> <!-- IDD4R2 + IDD4R,in = 200 + 6 = 206 -->
    <parameter id="idd4w"   type="double" value="10.0"  /> <!-- IDD4W1 -->
    <parameter id="idd4w2"  type="double" value="203.0" /> <!-- IDD4W2 + IDD4W,in = 175 + 28 = 203 -->
    <parameter id="idd5"    type="double" value="15.0"  /> <!-- IDD51 -->
    <parameter id="idd52"   type="double" value="136.0" /> <!-- IDD52 + IDD5,in = 130 + 6 = 136 -->
    <parameter id="idd6"    type="double" value="1.2"   /> <!-- IDD61 -->
    <parameter id="idd62"   type="double" value="2.6"   /> <!-- IDD62 + IDD6,in = 2.5 + 0.1 = 2.6 -->
    <parameter id="vdd"     type="double" value="1.8"   /> <!-- VDD1 -->
    <parameter id="vdd2"    type="double" value="1.2"   /> <!-- VDD2 -->

DDR2 mapping

# Format: xml value = datasheet value
idd0 = IDD0
idd2n = IDD2N
idd2p0 = IDD2P
idd2p1 = IDD2P
idd3n = IDD3N
idd3p0 = IDD3Ps
idd3p1 = IDD3Pf
idd4r = IDD4R
idd4w = IDD4W
idd5 = IDD5
idd6 = IDD6
vdd = VDD
@Sv3n
Copy link
Collaborator Author

Sv3n commented Aug 25, 2014

DRAMPower DRAMPower Comment DDR2 DDR3 DDR4 LPDDR LPDDR2 LPDDR3 WIDEIO_SDR
idd0 IDD0 IDD01
idd2n IDD2N IDD2N1
idd2p0 slow-exit precharged power-down IDD2P IDD2P1
idd2p1 fast-exit precharged power-down IDD2P IDD2PS1
idd3n IDD3N IDD3N1
idd3p0 slow-exit active power-down IDD3Ps IDD3P1
idd3p1 fast-exit active power-down IDD3Pf IDD3PS1 (?)
idd4r IDD4R IDD4R1
idd4w IDD4W IDD4W1
idd5 IDD5 IDD51
idd6 IDD6 IDD61
vdd VDD VDD1
idd02 x IDD02 + IDD0,in
idd2n2 x IDD2N2 + IDD2N,in
idd2p02 x IDD2P2 + IDD2P,in
idd2p12 x IDD2PS2 + IDD2PS,in
idd3n2 x IDD3N2 + IDD3N,in
idd3p02 x IDD3P2 + IDD3P,in
idd3p12 x IDD3PS2 + IDD3PS,in
idd4r2 x IDD4R2 + IDD4R,in
idd4w2 x IDD4W2 + IDD4W,in
idd52 x IDD52 + IDD5,in
idd62 x IDD62 + IDD6,in
vdd2 x VDD2

@kchandrasekar
Copy link
Collaborator

These are numbers from the 3rd voltage domain (VDDca/VDDq), which we have
not explicitly modeled. So, I added the current for these domains with VDD2
since they have the same rating (1.2V).

2014-08-25 14:18 GMT+05:30 Sven Goossens notifications@github.com:

DRAMPower DRAMPower Comment DDR2 DDR3 DDR4 LPDDR LPDDR2 LPDDR3 WIDEIO_SDR
idd0 IDD0 IDD01 idd2n IDD2N IDD2N1 idd2p0 slow-exit precharged
power-down IDD2P IDD2P1 idd2p1 fast-exit precharged power-down IDD2P
IDD2PS1 idd3n IDD3N IDD3N1 idd3p0 slow-exit active power-down IDD3Ps
IDD3P1 idd3p1 fast-exit active power-down IDD3Pf IDD3PS1 (?) idd4r
IDD4R IDD4R1 idd4w IDD4W IDD4W1 idd5 IDD5 IDD51 idd6 IDD6 IDD61
vdd VDD VDD1 idd02 x IDD02 + IDD0,in idd2n2 x IDD2N2 +
IDD2N,in idd2p02 x IDD2P2 + IDD2P,in idd2p12 x IDD2PS2 + IDD2PS,in
idd3n2 x IDD3N2 + IDD3N,in idd3p02 x IDD3P2 + IDD3P,in idd3p12 x IDD3PS2

  • IDD3PS,in idd4r2 x IDD4R2 + IDD4R,in idd4w2 x IDD4W2 + IDD4W,in
    idd52 x IDD52 + IDD5,in idd62 x IDD62 + IDD6,in vdd2 x VDD2


Reply to this email directly or view it on GitHub
#5 (comment).

@Sv3n
Copy link
Collaborator Author

Sv3n commented Apr 30, 2015

The DDR4 mapping (comments tells which value to read from the datasheet):

    <parameter id="idd0"   value="58"  comment="IDD0" />
    <parameter id="idd02"  value="4"   comment="IPP0"  />
    <parameter id="idd2n"  value="44"  comment="IDD2N" />
    <parameter id="idd2p0" value="30"  comment="IDD2P" />
    <parameter id="idd2p1" value="30"  comment="IDD2P (copy)" />
    <parameter id="idd3n"  value="61"  comment="IDD3N" />
    <parameter id="idd3p0" value="44"  comment="IDD3P" />
    <parameter id="idd3p1" value="44"  comment="IDD3P (copy)" />
    <parameter id="idd4r"  value="140" comment="IDD4R" />
    <parameter id="idd4w"  value="156" comment="IDD4W" />
    <parameter id="idd5"   value="190" comment="IDD5B" />
    <parameter id="idd6"   value="20"  comment="IDD6N" />
    <parameter id="idd62"  value="0"   comment="Should be equal to IPP6N, but this value is not mentioned in the datasheet." />
    <parameter id="vdd"    value="1.2" comment="VDD"  />
    <parameter id="vdd2"   value="2.5" comment="VPP"  />

FYI, this particular set of values corresponds to a DDR4-1866 according to the latest(?) micron datasheet (4gb_ddr4_dram.pdf - Rev. B 10/14 EN), at speed grade -107E. Once I have had time to test with these numbers, I might update the full memspec that ships with drampower.

IESE-T3 added a commit that referenced this issue Oct 26, 2022
@lsteiner-tukl
Copy link
Collaborator

The different current measurement conditions will be handeled internally in the new version 5.0 of DRAMPower.

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

No branches or pull requests

3 participants