|This article needs additional citations for verification. (February 2011)|
A built-in self-test (BIST) or built-in test (BIT) is a mechanism that permits a machine to test itself. Engineers design BISTs to meet requirements such as:
or constraints such as:
- limited technician accessibility
- cost of testing during manufacture
The main purpose of BIST is to reduce the complexity, and thereby decrease the cost and reduce reliance upon external (pattern-programmed) test equipment. BIST reduces cost in two ways:
- reduces test-cycle duration
- reduces the complexity of the test/probe setup, by reducing the number of I/O signals that must be driven/examined under tester control.
Both lead to a reduction in hourly charges for automated test equipment (ATE) service.
The BIST name and concept originated with the idea of including a pseudorandom number generator (PRNG) and cyclic redundancy check (CRC) on the IC. If all the registers that hold state in an IC are on one or more internal scan chains, then the function of the registers and the combinational logic between them will generate a unique CRC signature over a large enough sample of random inputs. So all an IC need do is store the expected CRC signature and test for it after a large enough sample set from the PRNG. The CRC comparison with expected signature or the actual resultant CRC signature is typically accessed via the JTAG IEEE 1149.1 standard.
Automotive tests itself to enhance safety and reliability. For example, most vehicles with antilock brakes test them once per safety interval. If the antilock brake system has a broken wire or other fault, the brake system reverts to operating as a normal brake system. Most automotive engine controllers incorporate a "limp mode" for each sensor, so that the engine will continue to operate if the sensor or its wiring fails. Another, more trivial example of a limp mode is that some cars test door switches, and automatically turn lights on using seat-belt occupancy sensors if the door switches fail.
Almost all avionics now incorporate BIST. In avionics, the purpose is to isolate failing line-replaceable units, which are then removed and repaired elsewhere, usually in depots or at the manufacturer. Commercial aircraft only make money when they fly, so they use BIST to minimize the time on the ground needed for repair and to increase the level of safety of the system which contains BIST. Similar arguments apply to military aircraft. When BIST is used in flight, a fault causes the system to switch to an alternative mode or equipment that still operates. Critical flight equipment is normally duplicated, or redundant. Less critical flight equipment, such as entertainment systems, might have a "limp mode" that provides some functions.
Integrated circuit manufacturing
BIST is used to make faster, less-expensive integrated circuit manufacturing tests. The IC has a function that verifies all or a portion of the internal functionality of the IC. In some cases, this is valuable to customers, as well. For example, a BIST mechanism is provided in advanced fieldbus systems to verify functionality. At a high level this can be viewed similar to the PC BIOS's power-on self-test (POST) that performs a self-test of the RAM and buses on power-up.
The typical personal computer tests itself at start-up (called POST) because it's a very complex piece of machinery. Since it includes a computer, a computerized self-test was an obvious, inexpensive feature. Most modern computers, including embedded systems, have self-tests of their computer, memory and software.
Unattended machinery performs self-tests to discover whether it needs maintenance or repair. Typical tests are for temperature, humidity, bad communications, burglars, or a bad power supply. For example, power systems or batteries are often under stress, and can easily overheat or fail. So, they are often tested.
Often the communication test is a critical item in a remote system. One of the most common, and unsung unattended system is the humble telephone concentrator box. This contains complex electronics to accumulate telephone lines or data and route it to a central switch. Telephone concentrators test for communications continuously, by verifying the presence of periodic data patterns called frames (See SONET). Frames repeat about 8,000 times per second.
Remote systems often have tests to loop-back the communications locally, to test transmitter and receiver, and remotely, to test the communication link without using the computer or software at the remote unit. Where electronic loop-backs are absent, the software usually provides the facility. For example, IP defines a local address which is a software loopback (IP-Address 127.0.0.1, usually locally mapped to name "localhost").
Many remote systems have automatic reset features to restart their remote computers. These can be triggered by lack of communications, improper software operation or other critical events. Satellites have automatic reset, and add automatic restart systems for power and attitude control, as well.
Medical devices test themselves to assure their continued safety. Normally there are two tests. A power-on self-test (POST) will perform a comprehensive test. Then, a periodic test will assure that the device has not become unsafe since the power-on self test. Safety-critical devices normally define a "safety interval", a period of time too short for injury to occur. The self test of the most critical functions normally is completed at least once per safety interval. The periodic test is normally a subset of the power-on self test.
One of the first computer-controlled BIST systems was in the U.S.'s Minuteman Missile. Using an internal computer to control the testing reduced the weight of cables and connectors for testing. The Minuteman was one of the first major weapons systems to field a permanently installed computer-controlled self-test.
There are several specialized versions of BIST which are differentiated according to what they do or how they are implemented:
- Programmable built-in self-test (pBIST)
- Memory built-in self-test (mBIST) - e.g. with the Marinescu algorithm
- Logic built-in self-test
- Analog and mixed-signal built-in self-test (AMBIST)
- Continuous built-in self-test (CBIST)
- Periodic built-in self-test
- Interrupt-driven built-in self-test (IBIST) or user-initiated built-in self-test
- Power-up built-in self-test (PupBIST)
- Automatic built-in self-test (ABIST)
- Built-in test equipment
- Logic built-in self-test
- Embedded system
- System engineering
- Safety engineering
- Watchdog timer
- Marinescu, M., 1982. Simple and Efficient Algorithms for Functional RAM Testing. 1982 IEEE Test Conference, Philadelphia, (Nov.). IEEE Computer Society, pp. 236-239.