4 STEPS How to verify DDR3 memory layout of your board – using a software

What is the best way to test DDR3 interface by running a memory test?

STEP 1: Do DDR3 calibration

Before you start with any testing, be sure you did DDR3 calibration. Every layout is different and needs specific settings in DDR3 controller registers. Run a calibration tool (often provided by chipset / cpu chip manufacturer). Here are screenshots of running diagnostic tools for an AMD design (from BIOS) and for Freescale design (an calibration utility):

The calibration tool basically goes through different memory settings from when they dont work – through when they work – and then when they dont work again. Based on the measurement, the tool suggest the correct values for DDR3 registers.

STEP 2: Do Basic testing

Run your board with a memory test in your lab for couple of days. For all boards (x86 and ARM boards) I use standard memory test and its variants: memtest86, memtester, … These software run some preprogrammed patterns to stress the memory interfaces to maximum. If there is a problem, this software will find it.

STEP 3: Do Extended testing

Place several boards (minimum 5 is recommend) in an environmental chamber. Run memory test for at least 48h. Change temperature in cycles between -40 + 60 (or what is your board maximum temperature). There must be no errors.

STEP 4: Do Long run test

Leave your board running memory test for weeks (months). Be sure you backup your main power source in case of electricity interruption (otherwise you will need to start again).

Summary

  • if your board passes 1 loop of running memory test – that means nothing
  • if your board passes 2h of running memory test – that means nothing
  • if your board passes 24h of running memory test – that looks promising
  • if your board passes 1 week of running memory test – that looks good
  • if 5 of your boards passes 2 days of running memory test in environmental chamber changing temperature in cycles – your layout is good

Other methods of DDR3 testing

There are two other most obvious methods of verifying DDR3 memory layout, but these may not be an option for smaller companies:

Simulation
You need an expensive software and you need someone who understand it (who understand how to set it up, how to simulate and who can interpret the results). Possibly you can outsource the simulation, but it still cost a lot of money. Also, I have seen a board with great results from simulation and …. DDR3 problems.

Measurement
You need an expensive tool and layout which will support the measurements.

How do you verify DDR3 interface? Leave a comment …

4 thoughts on “4 STEPS How to verify DDR3 memory layout of your board – using a software

  1. Hi Robert, thans for the article. I was wondering if you ever used a high bandwitch digital scope to make the debugging and validation of your layout. The memory test software is of course minimum requirment before going into production but when you end up with your board failling the test, how do you debug to check the signal integrity on the board itself?
    Thanks for your time.

    Sabry

    Like

    1. No, I have not measured the signals as I do not have the expensive tool. The best is try to design it correctly. Once the board is failing it may be difficult (imposible) to fix it. You may try to change some memory & memory controller settings, but if there is something wrong in the design, even the measuring the signals may not really help (just confirm it is wrong). Of course, it may be very helpful to see the signals, but you always need to be sure, that buying the expensive tools will pay off (e.g. if you are designing very special boards of FPGA systems, maybe in these cases it could be useful).

      Like

  2. Hi Robert,

    Thanks for this article.
    When doing testing on my ddr3 design, I noticed that 70% are passing with no failures under soak testing (haven’t done temperature stress testing), and the remaining 30% are exhibiting issues specifically with DDR3. Played with the calibration/ddr3 controller settings without getting that to work.
    I even tried reducing the speed of ddr3 memories to less than 100MHz with no change in the results of these 30%.
    Curious if you had ever come up with something like that? could it be a build issue, what more testing can be done to evaluate the layout or at least check the difference. I have done alot of checking on assembly mistakes such as wrong component etc but can’t seem to find any difference between the boards.

    Like

    1. It could be hardware or software issue. Hardware: usually bad layout, power problems, etc … Software: wrong controller settings. Try to fit exactly same type of memories what are on reference design and use same settings from the software for reference design. That is what I usually do to verify hardware.

      Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s