Wednesday, September 11, 2013

DFT Q&A - Part 10

61. What is difference between launch on shift and launch on capture?
Advantage and disadvantage of each?


AC scan test is a 2 pattern test, the first pattern launches a transition at the soure flip-flop(s), and the second captures the transition at the destination flip-flop(s). Hence, we need two clock pulses for each AC test.
There are two ways to achieve this. The first way is to add another clock pulse during scan capture (while your scan enable is inactive). This is called Launch on Capture (LOC).


Code:
Launch on Capture
                         2 fast pulses
                             L   C
            ___    ___              _   _                   ___     ___
clock __|   |__|   |________| |_| |_________|   |___|   |____
        _______________                  _____________________
scanen                        |__________|


The other way is to rely on the last shift clock (while scan enable is still active) to launch the transition (1st pattern), and use 1 clock pulse in the capture cycle as the 2nd pattern to capture the transition. This is called Launch on Shift (LOS).

Code:
Launch on Shift
                 L      C                      
           ___    ___     _                      ___      ___
clock __|   |__|   |___| |_____________|   |___|   |____
        _____________               _____________________
scanen                    |_________|




In general, to make sure the transition reaches the capture flip-flop in time, the delay between the launch and capture cycles should be your cycle time (or the actual path delay, for those who run transition tests faster than at-speed).

As you can see, to run LOS at-speed, your scan enable must switch at-speed also. This is usually problematic in layout, since you need to either treat the scan enable signal as a clock net (require clock tree synthesis with accurate delay/skews), or pipeline the scan enable signal, which increases the area/complexity of your scan enable.

I have seen publications that claim either LOS gives you higher transition fault coverage than LOC, or vice versa. I believe this is design dependent, and it depends on the complexity of the logic cone(s) driving the source flip-flop(s). If the logic cone(s) are simple, it gives ATPG a greater degree of freedom to generate the appropriate 2nd pattern in LOC. Notice that the 2nd pattern in LOS is always 1 bit shifted from the 1st pattern. On the other hand, if the cone is complex, it may be hard to generate the appropriate 2nd pattern through the logic, making LOS coverage numbers more attractive.

62. What all needs to be taken care in scan stitching to get the good coverage?

If you are using Mentor DFTAdvisor or Synopsys DFT Compiler, cleaning up pre-stitch drc errors and most of the warnings (especially clock warnings) will generally lead to good fault coverage.

If coverage is still low after cleaning drc errors/warnings, then there may be issues inherent to the design that causes low coverage (redundant logic, complex reconvergent fanouts, black boxes, constrained nets, etc.)
Both Mentor and Synopsys tools provide ways to analyze low fault coverage in their ATPG tools. Also, some RTL analysis tools may be useful to find these kinds of problems (see http://www.dftdigest.com/miscellaneous/ ... -for-test/ )

62. How to toggle reset to get coverage ?

If the reset is asynchronous (and properly bypassed during scan), you can declare the reset pin as a clock during ATPG, and ATPG will toggle it accordingly to get faults on reset pin.
If the reset is synchronous, you can treat the reset pin as a normal data pin, and ATPG should be able to cover faults on the reset.

Be careful, however, if you run transition fault ATPG. Reset usually cannot toggle at-speed, so you may not want to declare the reset as a clock when running transition fault ATPG.
You can also try to run the patterns that toggle the reset as a clock pin at a reduced speed on the tester, if you worry about transition fault coverage on reset.

63. What are Pattern Faults? I have seen the definition in cadence ET manual but didn't understand.

A pattern fault is a fault model created by IBM Testbench folks (later acquired by Cadence and became Test Encounter). Instead of using a standard fault model like stuck-at, transition, etc., you can use truth tables to describe what the fault free and faulty behavior is for each gate type.
The advantage is that you can use pattern faults to guide ATPG to generate patterns that would not be generated with other fault models. For example, in a 2 input AND gate, to cover single stuck-at faults, you need only 3 patterns, 01, 10, and 11. If you want to force ATPG to generate a pattern for the 00 case in every AND gate, you can define a pattern fault with 00 as its sensitization.

A pattern fault is a mechanism used by Encounter Test to model static or dynamic defects that are not easily, or may be impossible to be represented by stuck-at pin faults. A pattern fault is basically a statement of 1) the requirements to excite the defect being modeled; and 2) the effect the defect being modeled has on the circuit once it has been excited. For the current release of Encounter Test, fault excitation requirements are specified as logic values required to be on circuit pins or nets of a (sub-) circuit. For dynamic pattern faults, the required values include a (two) pattern sequence or required values to excite the defect.

 Encounter Test automatically generates pattern faults to represent defects not possible to represent as pin stuck-at pin faults on LATCH, TSD and XOR primitives. The customer or technology library provider can add additional pattern faults for any sub-circuit used in the circuit design being processed. These user defined pattern faults will be repeated in the Encounter Test fault model for each instance of the sub-circuit.

64. What is the difference between test pattern and test vector?

The terms are sometimes used interchangeably. Me, I tend to say that a test pattern is a set of test vectors.

However, the ATPG tools generally give you stats that claim a certain number of 'patterns', but personally, I would call them 'vectors'.

65. What is a BUS Primitive and clock_PO pattern?

A bus primitive is just a DFT model of a bus - a net that has more than one driver. It's important that you constrain it during test.

A clock PO pattern is a pattern that measures a primary output that has connectivity to a clock. So if a clock signal propagates through combinational logic to a primary output (PO), an ATPG vector can be created to measure the results of that propagation.

Did you find this post helpful