line.jpg (577 bytes)
company
request
references
solution
learn electronics
contact





กก
ICT Programming - FLASH programming on tester, Serial EPROM programming on tester, Boundary scan testing and Write modeling for non-library devices.

  * Advanced Pay-Per-Use technology Pay only for the test you need to be  
     preformed.

   * Testing complex SMT components.
   * Detail documentation on all tests.

ICT Systems in Use:

   * HP3070  Series II and III

   * HP3065  GenRad 2272


An Introduction to In-Circuit Testing

Why In-Circuit Testing?

The idea of in-circuit testing?the rather strange technique of individually testing each component on a circuit board as if it were not actually on the board?is sufficiently anti-intuitive as to require a little explanation. The most obvious way to test a circuit board is to install it in its intended location and then exercise all of its functions by running the complete machine through an exhaustive series of tests. This is known as functional testing. When circuit boards were first developed this is exactly how they were tested, but there are many drawbacks to functional testing, drawbacks that led to the development of in-circuit testing.

One obvious problem is that functional testing requires a dedicated, flawless sample of the machine that the circuit board is designed for. If the circuit board is from something like a supercomputer, the capital tied up in reserving and maintaining one or several machines in-house exclusively for testing can be prohibitive. More drawbacks:

  • Testing boards in situ gives only a pass-fail test; either the complete machine works as expected, or it fails in some way that presumably is the fault of the board being tested. Once the board fails, it has to either be entirely discarded or subjected to a series of component-oriented diagnostic tests that closely resemble in-circuit tests.
  • It is extremely difficult to devise a truly exhaustive functional test?one that exercises all possible functions of the board. It is even harder to determine just how exhaustive a given test is. This means that test confidence is incomplete, and boards can (and often do) go into production with not-yet-discovered flaws in them.
  • For each new circuit board, a completely new functional test must be devised by hand. For a medium-sized board, test development time is typically six months to a year after the first prototype is delivered. In practice, this usually means that new machines are shipped long before their test suites have matured.
  • Mature functional tests are large, with individual test vectors typically running to hundreds of millions of bytes. A tester with that sort of capacity can cost several million dollars, and since execution time for such large tests is very long, multiple testers may be required for each production line.

Given the above problems, a wish-list could be generated: Tests should generate completely automatically, in minutes rather than months; they should require no hardware other than the tester itself; they should be able to pinpoint the failure directly; they should execute quickly; it should be possible to directly determine how exhaustive the tests are. In-circuit testing can do all of these things, at a price. 

In-Circuit Testing?How it Works

The idea behind in-circuit testing is that if all the components on a board are good, and all the interconnections between them are also good, then the board is good. There are many advantages to this approach:

  • Compared to the infinite variety of possible circuit boards, there is a finite number of circuit board components, and since these components are tested individually when they are manufactured, libraries of exhaustive test vectors for them already exist. A complete in-circuit test consists of nothing more than a general interconnection test and a series of component tests. Test vectors for individual components are usually less than a megabyte long, so they execute quickly.
  • If the test for a single component fails, then the board can be repaired by replacing just that component.
  • Fault coverage can be precisely and automatically determined.

However, the price for all this is high. In order to test the individual components, direct electrical access to them must be arranged. Currently, the most common solution for this is to use a slightly Rube Goldberg-Esque, vacuum-actuated "bed of nails" that pulls the circuit board down onto an array of spring-loaded, gold-plated pins that precisely contact the solder points on the board. A medium-sized board can require thousands of these contact points, each with its own test channel that is capable of delivering a synchronized test vector at 200MHz, and even with mature technology it is difficult to get the system to work reliably. When everything works well, there is still the problem of ...

The False Premise of In-Circuit Testing

To wit: How is it possible to "individually test each component on a circuit board as if it were not actually on the board" when it obviously is actually on the board? The existence of adjacent digital and analog components can play havoc with test vectors that were designed to be used on an electrically isolated, solitary component. Two techniques, preconditioning and overdriving, are used to overcome this problem. Preconditioning is a safe, but not always-applicable approach that involves persuading other devices on the board to shut down so that they do not affect the test. A good example would be when several devices share a bus ? there is usually a way to turn all but one of them off so that the remaining device has uninterrupted access to the bus. Overdriving is a more general, brute-force technique that simply pours enough current into the circuit to overcome the effect of adjacent devices?the danger here is that the large amounts of current might damage the other components.

With preconditioning applied whenever possible, and with carefully-minimized doses of overdriving, in-circuit testing works very well on boards that conform to an assumption that is necessarily made in determining what preconditioning, and just how much overdriving, are required. That assumption, unfortunately, is that there are no faults on the board.

Cascading Failures

If a component is bad, then that assumption fails, and as a result, so will many of the tests of components adjacent to the bad one. The result is a cascade of failures, one real, the others spurious. Until recently, determining which failure is the real one was the task of a highly skilled technician, but the techniques used: in-depth understanding of the board geography; knowledge of typical failure patterns; educated guessing?have proven amenable to encoding as an Artificial Intelligence program. The program uses simple, well-proven rules-of-thumb such as: "If there are N devices on a bus, one passes its test and N - 1 identically fail their tests, then the bad device is the one that passed its test," and also uses very complex rules such as: "If an IC chip is failing massively on most or all of its inputs and outputs, in conformance with a certain pattern, then the chip has most likely been inserted onto the board backwards."

Glossary 

Functional testing: Testing the functionality of a circuit board, rather than testing all the possible states the board can be put in. This can either be done by inserting the board in its intended location, or by mounting the board in a functional tester.

Test vectors: To test a digital device, each of its inputs is fed a separate sequence of binary ones and zeros. These sequences (e.g. 01110000111010...) are known as test vectors. While the inputs are receiving their vectors, the device's outputs are compared with a reference set to check that the device is responding properly.

Functional tester: A test bed that can simulate almost any digital environment. The circuit board to be tested is mounted on the test bed in the same way that it would be mounted in its intended location. The functional tester then simulates the board's normal environment by feeding it, in real time, the same type of digital and analog signals that it would normally receive.

Interconnection test: A check to see that all the components that are supposed to be connected to each other, are, and all the components not supposed to be connected to each other, aren't.

Fault coverage: The proportion of all possible board faults that are being tested. This can be determined because a digital circuit board can be put into only a finite number of distinct electrical states, which is the combinatorial product of all the possible states of all the devices on the board. If the individual device tests put each device into all of its possible states, then fault coverage is 100%.

Combinatorial product: A very large number indeed! If there are 100 devices on a board, and each of them can take on 100 distinct states, then the total number of possible states for the complete board is 10**100 (ten followed by 100 zeros, also known as a googol). A functional test that completely exercised such a board would have test vectors that were each a googol long, and would take at least a googol nanoseconds to execute, which is considerably longer than the current age of the universe. 

Mature technology: The design of the precise cut of the heads of these contact points, for which patents and PhDs have been awarded, is perhaps the 1980s equivalent to the old theological argument about how many angels can fit on the head of a pin.

Bus: A group of circuit elements that carry logically-related signals, such as the 16 lines that make up the IBM PC bus, carrying the 16 bits that make up a memory address.


line_.gif (50 bytes)

Send mail to info@rbtech-inc.com with questions or comments about this web site.
Copyright 2001 RB Technology, Inc. All rights reserved. 
Last modified :
July 19, 2003

กก