**내장 자체 시험(BIST: Built-in Self-test)** 또는 **내장 시험 장치(BIT: Built-in Test)**는 기계가 스스로 테스트할 수 있게 하는 매커니즘이다. 내장 자체시험 장치는 다음과 같은 요구사항을 충족시키기 위해서 설계되었다.

* 높은 신뢰성
* 낮은 수리 주기 횟수

그리고 다음의 제약조건들을 고려하여 설계되었다.

* 제한된 기술자 접근성
* 제조시 테스트 비용

BIST의 주요 목적은 복잡함을 감소시킴으로써 비용을 줄이고 외부(패턴 프로그램) 테스트 장비에 대한 의존도를 줄이는 것이다. BIST는 두 가지 방법으로 비용을 절감한다 :

1. 테스트 순환 주기를 감소시킨다
2. 테스트 제어에 있어 꼭 구동/검사 되어야할 I/O신호의 수를 줄임으로써 테스트/프로브 셋업의 복잡성을 줄인다.

두 방법 모두 자동 시험 장치(ATE) 서비스에 대한 시간당 비용을 감소시키는 결과를 낳는다.

Naming
------

BIST의 이름과 컨셉은 유사난수 생성기(PRNG)와 집적 회로(IC)의 순환 중복 검사(CRC) 등의 개념에서 유래되었다. 만약 집적 회로의 상태를 유지하는 모든 레지스터가 하나 이상의 내부 스캔 체인이라면, 레지스터와 레지스터 간의 조합 논리는 임의 입력의 충분히 많은 표본에 대해 특별한 CRC 신호를 발생시킬 것이다. 그래서 집적 회로는 PRNG로부터 충분히 많은 임의 표본을 추출한 후 예상 CRC 신호를 저장하고 테스트한다. 예상 신호 또는 그 결과로 생긴 실제 CRC 신호와의 CRC 비교는 일반적으로 JTAG IEEE 1149.1 표준을 통해 액세스 할 수 있다.

용도
--

BIST는 무기, 항공 전자 공학, 의료 기기, 자동차 전자 시스템, 모든 종류의 복잡한 기계, 모든 종류의 무인 기계 및 집적 회로에서 흔히 쓰인다.

### 자동차

자동차는 안전성과 신뢰성을 향상시키기 위해 자체 테스트를 실행한다. 예를 들어, 잠김 방지 브레이크를 포함한 대부분의 차량은 안전 기간당 한 번씩 자체 테스트를 실행한다. 만약 잠김 방지 제동 장치에 단선이나 그밖의 다른 결함이 있는 경우, 제동 장치는 일반 제동 장치로서 작동을 다시 시작한다. 대부분의 자동차 엔진 제어기는 각 센서를 위한 '림프 모드'를 포함하고 있다. 그래서 만약 센서나 센서의 연결에 결함이 생기더라도 엔진은 계속 작동할 것이다. 자동차가 도어 스위치에 결함에 생길 때 도어 스위치를 테스트하고 안전 벨트 사용 센서를 사용하여 자동적으로 불을 켜는 것은 림프 모드의 또 다른 사용 예시이다.

### 항공

거의 모든 항공은 이제 BIST를 포함한다. 항공에서 쓰이는 BIST의 목적은 고장난 현장 교환 가능 부품을 분리하는 것이다. 그리고 분리된 현장 교환 가능 부품은 보통 차고나 제조 업체에서 제거된 뒤에 수리된다. 상용항공은 운항 중에만 수익을 내기 때문에 지상에서 수리하는데 필요한 시간을 최소화하고 BIST를 포함하는 시스템의 안전 수준을 높이기 위해서 BIST를 사용한다. 그리고 이는 군용 항공기에도 적용된다. BIST가 항공 운항 중에 사용되는 경우, BIST의 결함은 시스템을 대체모드 또는 여진히 작동 중인 장비로 전환시킨다. 대단히 중요한 비행 장비는 일반적으로 복제되거나 중복된다. 그에 반해, 오락 시스템과 같은 덜 중요한 비행 장비는 몇몇 기능들을 제공하는 "림프 모드"를 갖고 있을 수도 있다.

### 전자 공학

#### 집적 회로 제조

BIST는 더 빠르고 저렴한 집적 회로 제조 테스트를 만드는데 사용된다. 집적 회로는 집적 회로의 내부 기능의 전부 혹은 일부를 확인하는 기능을 갖고 있다. 어떤한 경우에는, 이 기능이 고객에게도 유용하다. 예를 들어, BIST 메커니즘은 기능을 확인하기 위한 고급 필드버스 시스템에 제공된다. 높은 수준에서 이는 RAM의 자체 시험과 작동 시작의 버스를 실행하는 PC BIOS의 시동 자체 시험 (POST) 과 유사하다.

#### 컴퓨터

대표적인 개인용 컴퓨터는 스타트업에서 자체 테스트를 한다(POST). 왜냐하면 스타트업은 기계의 매우 복잡한 부분이기 때문이다. 그것은 컴퓨터를 포함하기 때문에, 컴퓨터 자체 테스트는 확실하고 저렴한 것이 특징이었다. 임베디드 시스템을 포함한 대부분의 최신 컴퓨터는 컴퓨터, 메모리, 소프트웨어를 자체 테스트한다.

#### 무인 기계

무인 기계는 유지보수나 수리가 필요한지의 여부를 발견하기 위해서 자체 테스트를 수행한다. 일반적인 테스트는 온도, 습도, 불량 통신, 강도, 또는 불량 전원 공급 장치에 대해 알아내기 위해서 행해진다. 예를 들어, 전원 시스템 또는 배터리는 스트레스를 자주 받게 되고, 쉽게 과열되거나 고장날 수 있다. 그렇기 때문에, 전원 시스템과 배터리는 종종 테스트 받아야 한다.

종종 통신 테스트는 원격 시스템에서 매우 중요한 항목이다. 가장 일반적이지만 잘 알려지지 않은 무인 시스템 중 하나는 humble telephone concentrator box이다. 이는 전화선이나 데이터를 축적하기 위한 복잡한 전자 제품을 포함하고 그것을 중앙 스위치로 보낸다. Telephone concentrators는 프레임이라고 불리는 주기적인 데이터 패턴의 존재를 확이함으로써 통신을 계속적으로 테스트한다 (SONET 참조) 프레임은 초당 8,000 번 반복한다.

원격 시스템은 종종 근처의 통신을 루프백 하기 위해서, 전송기와 수신기를 테스트 하기 위해서, 그리고 원격 장치에서 컴퓨터와 소프트웨어를 사용하지 않고 통신 회선을 원격적으로 테스트 하기 위해서 테스트를 한다. 그리고 전자 루프백이 존재하지 않는 경우, 소프트웨어가 일반적으로 그 기능을 제공한다. 예를 들어, IP는 소프트웨어 루프백인 로컬 주소를 정의한다.

많은 원격 시스템은 원격 컴퓨터를 다시 시작할 수 있는 자동 재설정 기능을 가지고 있다. 이는 통신의 부족, 부적절한 소프트웨어 작동, 또는 다른 중대한 이벤트로 인해서 실행될 수 있다. 위성은 자동 재설정 기능을 갖고있고, 전력 및 자세 제어를 위해 자동 재시작 시스템도 포함시킨다.

### 의학

의료 기기는 지속적인 안전을 보장하기 위해 자세 테스트를 수행한다. 그리고 일반적으로 두 가지의 테스트가 있다. 시동 자체 시험 (POST)은 종합적인 테스트를 수행한다. 그런 다음, 주기적인 테스트는 장치가 시동 자체 시험 이후에 안전하게 되었음을 확인할 것이다. 필수 안전 장치는 일반적으로 "안전 기간"을 오류가 발생하기에 너무 짧은 시간 간격이라고 정의한다. 가장 중요한 기능의 자체 테스트는 일반적으로 안전 기간 당 한 번 이상 시행된다. 주기적인 검사는 일반적으로 시동 자체 시험의 일부분이다.

### 군대

컴퓨터가 제어하는 최초의 BIST 시스템 중 하나는 미니트맨 미사일에 탑재되어 있었다. 그리고 테스트를 제어하기 위해 내부 컴퓨터를 사용했던 것은 케이블과 테스트를 위한 커넥터의 무게를 감소시켰다. 미니트맨은 영구적으로 설치된 컴퓨터 제어 자체 테스트를 처리하는 최초의 주요 무기 시스템 중 하나였다.

전문화
---

어떠한 기능을 수행하는지, 혹은 어떻게 구현되는지에 따라 BIST의 여러 특화된 버전이 존재한다 :

* 프로그램이 가능한 내장 자체시험 (pBIST)
* 메모리 내장 자체시험 (MBIST) - 예로 Marinescu 알고리즘이 있다
* 로직 내장 자체시험
* 아날로그 및 혼합 신호 내장 자체시험 (AMBIST)
* 연속성의 내장 자체시험 (CBIST)
* 주기적인 내장 자체시험
* 자체 테스트 (IBIST) 내장 또는 자체 테스트 내장 사용자 시작 인터럽트 구동
* 작동 시작 내장 자체시험 (PupBIST)
* 자동 내장 자체시험 (ABIST)