# Built-in self-test

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:
* high reliability
* lower repair cycle times
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.

## Applications

BIST is commonly placed in weapons, avionics, medical devices, automotive electronics, complex machinery of all types, unattended machinery of all types, and integrated circuits.

### Automotive

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.

### Aviation

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.

### Electronics
#### Integrated circuit manufacturing

Built-In-Self-Test 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.

#### Computers

The typical personal computer tests itself at start-up 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

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 unattended system is the 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.

### Medicine

Medical devices test themselves to assure their continued safety. Normally there are two tests. A POST will perform a comprehensive test. Then, a periodic test will assure that the device has not become unsafe since the POST. 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 POST.

### Military

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.

## Specializations

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 (LBIST)
* Analog and mixed-signal built-in self-test (AMBIST)
* Continuous built-in self-test (CBIST, C-BIT)
* Event-driven built-in self-test, such as the BIST done to an aircraft's systems after the aircraft lands.
* Periodic built-in self-test (C-BIT/P-BIT)
* Interrupt-driven built-in self-test (IBIST) or user/operator-initiated built-in self-test (I-BIT, or O-BIT)
* Power-up built-in self-test (PupBIST, P-BIT)
* Automatic built-in self-test (ABIST)