Embedded Design Handbook

ID 683689
Date 8/28/2023
Public
Document Table of Contents

6.3.2.1.1. Data Trace Failure

If your board fabrication facility does not perform bare board testing, you must perform these tests. To detect data trace failures on your memory interface you should use a pattern typically referred to as “walking ones.” The walking ones pattern shifts a logical 1 through all of the data traces between the FPGA and the memory device. The pattern can be increasing or decreasing; the important factor is that only one data signal is 1 at any given time. The increasing version of this pattern is as follows: 1, 2, 4, 8, 16, and so on.

Using this pattern you can detect a few issues with the data traces such as short or open circuit signals. A signal is short circuited when it is accidentally connected to another signal. A signal is open circuited when it is accidentally left unconnected. Open circuits can have a random signal behavior unless a pull-up or pull-down resistor is connected to the trace. If a pull-up or pull-down resistor is used, the signal drives a 0 or 1; however, the resistor is weak relative to a signal being driven by the test, so that test value overrides the pull-up or pull-down resistor.

To avoid mixing potential address and data trace issues in the same test, test only one address location at a time. To perform the test, write the test value out to memory, and then read it back. After verifying that the two values are equal, proceed to testing the next value in the pattern. If the verification stage detects a variation between the written and read values, a bit failure has occurred. The table below provides an example of the process used to find a data trace failure. It makes the simplifying assumption that sequential data bits are routed consecutively on the PCB.

Table 50.  Walking Ones Example
Written Value Read Value Failure Detected
00000001 00000001 No failure detected
00000010 00000000 Error, most likely the second data bit, D[1] stuck low or shorted to ground
00000100 00000100 No failure detected, confirmed D[1] is stuck low or shorted to another trace that is not listed in this table.
00001000 00001000 No failure detected
00010000 00010000 No failure detected
00100000 01100000 Error, most likely D[6] and D[5] short circuited
01000000 01100000 Error, confirmed that D[6] and D[5] are short circuited
10000000 10000000 No failure detected