Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

debug broken scan chains

Status
Not open for further replies.

uckingcu

Junior Member level 2
Joined
Sep 2, 2005
Messages
22
Helped
0
Reputation
0
Reaction score
0
Trophy points
1,281
Activity points
1,456
Hi..

this is an interview question.
how to debug broken scan chains using the pattern .....111000 1100 10 .
repetition of pattern '10' .
This pattern length would be length of longest scan chain.
They said this pattern will reduce the length of scan chain to half. so if u apply the same pattern once again, it will reduce your length to half again... this continues and finally we will end up with the flop having problem.

Can someone please explain how could this is possible.
 

Hi, I have been thinking about this question a bit.

I tried simulating a scan chain where one of the chain's flops is SLOW. The circuit behaved like a hold violation on the flop. The "bad" chain acted like it was one flop shorter in length.

Based upon the simulation results, I could not figure out how to identify the specific failing flop.

If you figure out how to identify the bad flop, please let me know.

I include the testcase with this post.
 

Attachments

  • testCaseScanHold.tar
    30 KB · Views: 87

It is theoretically impossible to find out where the broken flop is by just shifting the data in and out.
Only way to do it is shifting in a pattern, do capturing, and shifting out the captured data through the healthy scan chains. Repeat this process with a lot of different scan patterns and eventually you'll be able to find the broken flop.

I'm not a DFT expert, but I can guess how to utilize the pattern that you described. You shift in the pattern by 1 cycle, capture and shift out to check the data(through HEALTHY chains). Another fresh shift in the same pattern by 2 cycles, capture and shift out to check the data.... Repeat this process until you get the mismatch on the captured data. When the result pattern mismatches, you see which flops experiences 0 to 1 or 1 to 0 transition at the last shifting cycle, and you can locate a few candidates of problematic flops. Then you change the pattern to the one with less frequent transitions in the shifting pattern(such as from 11001100 pattern to 11110000 pattern or 00001111 pattern), do the same test, and narrow down the failing flops.
Think about 8 bit scan chain with one of the flop stuck at 1 and another 8 bit healthy scan chain that captures the data from the problematic chain.

However, I don't think the pattern you described is the only way. As long as there is a transition from 0 to 1 or 1 to 0, you should be able to do the same.
Furthermore, I don't think this mathod works universally and it depends on a lot of things. I believe the input pattern should depend on the type of defect, whether those flops in the chains are resettable or settable or not,... etc.. A lot of complications and I don't think it works for arbitrary scan chains.
 
Last edited:
If you figure out how to identify the bad flop, please let me know.

Aside from the original question, this may work.
Let's say there is a chain with 8 flops and one of them has a hold viol. Assuming you have enough data patterns to fill in other chains to find the captuting failure.

1. Shift in all 1 to initialize the chain..
2. You shift in 00001111(right bit first, left bit last) and the capture fails. The cause of failure should be in the 1st 4 flops because the data in the 2nd half is not supposed to change and should have no effect on the capture failure.
3. shift in all 1 to initialize the chain.
4. You shift in 00111111 and the capture passes. The cause of failure should be in the 3rd or 4th flops because the 3rd and 4th flops are only flops that change the value and can contribute to the capture failure.
5. shift in all 1 to initialize the chain,
6. You shift in 00011111 and the capture fails. The the cause of failure should be in the 3rd flop.

Kind of like a divide and conquer.

I think the same idea should work for stuck-at fault. Just need to change the data polarity depending on stuck-at 1 or 0.

Technically, the more the transitions are, the more difficult to locate the failing flops because all the flop beyond the defective flop are all messed up. The pattern from the original question has too many transition. I don't know if that actually works to locate the failing point.
 
Last edited:

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top