Because of the Thanksgiving holiday in the U.S., TI E2E™ design support forum responses may be delayed from November 25 through December 2. Thank you for your patience.

This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AM3351: eMMC timing analysis

Part Number: AM3351
Other Parts Discussed in Thread: AM4376

Hello expert team.

We have two development platforms based on the AM3351 and the AM4376 CPUs. Both platforms have a JEDEC compliant eMMC connected to the MMC interface of the CPU. Currently, we have some problems understanding the timing of the MMC bus and the behavior of the system.

For both platforms, the MMC bus is operating at 48 MHz with CPU@OPP100. The relevant timing parameters (obtained from data sheets) are as follows:

PCB
Signal delay: 320 ps (approx.)
eMMC (JEDEC compliant)
Minimum setup requirement:  3 ns
Minimum hold requirement: 3 ns
Output delay (min / max):    2,5 ns / 13,7 ns
AM3351
Minimum setup requirement:   4,1 ns
Minimum hold requirement: 3,76 ns
Output delay in standard mode (min / max):  -4 ns / 14 ns
Output delay in high-speed-mode (min / max):  3 ns / 14 ns
AM4376
Minimum setup requirement:      4,1 ns
Minimum hold requirement:  3,76 ns
Output delay in standard mode (min / max):  -7,4 ns / 4,4 ns
Output delay in high-speed-mode (min / max):   0,8 ns / 7,4 ns

 

Input timing

For the input timing, data is output and sampled on the rising edge of the clock signal. Because setup and hold requirements are equal for both CPU types, the setup and hold margins can be calculated as follows:

Setup margin: [MMC clock period] – [eMMC max. output delay] – [CPU hold requirement] – [2 x PCB signal delay] =

for AM3351/AM4376: 20,83 ns – 13,7 ns – 4,1 ns – 0,64 ns = 2,39 ns

Hold margin: [eMMC min. output delay] + [2 x PCB signal delay] =

for AM3351/AM4376: 2,5 ns + 0,64 ns = 3,14 ns

 

Output timing (standard mode)

In standard mode, the CPU changes data on the falling edge of a clock cycle. The eMMC samples data on the rising edge.

Setup margin: [MMC clock period / 2] – [CPU max. output delay] – [eMMC setup requirement] =

for AM3351: 10,415 ns – 14 ns – 3 ns = -6,515 ns

for AM4376: 10,415 ns – 4,4 ns – 3 ns = 3,015 ns

Hold margin: [MMC clock period / 2] + [CPU min. output delay] – [eMMC hold requirement] =

for AM3351: 10,415 ns + (-4 ns) – 3 ns = 3,415 ns

for AM4376: 10,415 ns + (-7,4 ns) – 3 ns = 0,015 ns

  

Output timing (high-speed mode)

In high-speed mode, the CPU changes data on the rising edge of a clock cycle. The eMMC samples data on the rising edge, too.

Setup margin: [MMC clock period] – [CPU max. output delay] – [eMMC setup requirement] =

for AM3351: 20,83 ns – 14 ns – 3 ns = 3,83 ns

for AM4376: 20,83 ns – 4,4 ns – 3 ns = 13,43 ns

Hold margin: [MMC clock period] + [CPU min. output delay] – [eMMC hold requirement] =

for AM3351: 3 ns – 3 ns = 0 ns

for AM4376: 0,8 – 3 ns = -2,2 ns

  

Conclusion

The input timing provides sufficient margin for both CPU platform.

The output timing depends on the mode of operation (setting of the HSPE bit): For the AM3351, only the high-speed mode (HSPE = 1) provides sufficient margin. For the AM4376, only the standard mode (HSPE = 0) provides sufficient margin.

Do you agree, with the timing analysis above and the final conclusion?

Surprisingly, the AM3351 also operates in standard mode without getting any access errors. We are very confused about that, because the setup requirement is violated. Do you have any idea, why?

 

Thank you in advance and best regards

Stefan

  • With respect to your input timing analysis, your setup margin formula shows CPU hold requirement being subtracted from the clock period. This should have been CPU setup requirement rather than CPU hold requirement. You used the correct values in the calculations, so I agree with your margin results. Note: Your calculations assume all PCB delays are equal.

    I also agree with your analysis of output timing (standard mode).

    I spotted three issues with your analysis of output timing (high-speed mode).

    1. You used to wrong value for CPU max output delay in your AM4376 setup margin calculation. The correct value is 7.4 ns rather than 4.4ns, which reduces the margin from 13.43ns to 10.43ns.
    2. You forgot to include the clock period in your AM3351 hold margin calculation. The result should have been 20.83ns + 3ns – 3ns = 20.83ns.
    3. You forgot to include the clock period in your AM4376 hold margin calculation. The result should have been 20.83ns + 0.8ns – 3ns = 18.63ns.

     

    The parameter that shows negative margin for AM3351 operating in standard mode is based on a maximum output delay of 14ns from the CPU. This delay is worst case and may only be observed on a worst case process corner device while operating at worst case temperature and voltage. The output delay of typical device operating at nominal operating conditions is very likely to be much less than 14ns. I’m not sure how many systems you tested, but it is very unlikely to find a worst case process device in a small sample. I suspect the eMMC device also has margin to account for process, temperature, and voltage.

    Hopefully this answers your questions.

    Regards,
    Paul

  • Hello Paul,

    thank you for your support. Your conclusion confirms my own assumptions. I agree with the issues you have found in my timing analysis.

    We will dicuss the results in our team on next monday. I will keep this thread open in case there are related questions. 

    Best regards

    Stefan

     

  • Hello,

    in my opinion the timing calculation is not fully correct:

    (1) Input timing hold margin:

    The time calculated (2,5 ns + 0,64 ns) is the hold time (not margin) which is present at the CPU input. However minimum hold requirement of CPU side is 3,76ns, so we have a margin of (2,5ns + 0,64ns) - 3,76ns = -0,62ns

    (2) Output timing, HS mode, hold for AM335x

    The clock period does not matter for output hold time. CPU output delay is 3ns minimum, this means that the CPU can change its data/cmd output in earliest case 3ns after clock low-high-transition in worst case. With equal delays for clk, data, cmd this directly converts to the hold time at the eMMC, that means data hold at the emmc is also 3ns, which is exactly the JEDEC minimum requirement, with margin = 0.

    Is there any error in my assumptions/calculations?

    tom

  • Tom, you are correct. 

    I completely missed the first issue you highlighted and have no idea what I was thinking when adding a clock cycle to eMMC hold margin calculation when operating in high speed mode.

    I should have known something didn't look right with respect to the first issue. It has always been a challenge to meet CPU hold time requirement. In this case, it may be necessary to add PCB trace delay to resolve this hold time issue. This can be resolved by increasing the length of all signal traces, or only CMD/DAT, or only CLK. However, you need to look at eMMC device timing to determine which option is compatible with its timing margins.

    It is better to operate AM3351 in high-speed mode, where there is 3.83ns of setup margin and 0ns of hold margin for the eMMC device when all signal traces are equal length. For the case being discussed here we need to add at least 620ps of trace delay to resolve the CPU hold issue. This can be done by increasing the length of the CMD/DAT signals which also provides additional hold margin to the eMMC device without compromising eMMC setup margin.

    It is better to operate AM436 in standard mode, where there is 3.415ns of setup margin and 0.015ns of hold margin for the eMMC device when all signal traces are equal length. The same is true here, where at least 620ps of trace delay needs to be added to resolve the CPU hold issue. This can be done by increasing the length of the CMD/DAT signals which also provides additional hold margin to the eMMC device without compromising eMMC setup margin.

    Regards,

    Paul