組み込み自己診断(くみこみじこしんだん、英: built-in self-test, or built-in test、BIST, or BIT)は、自己診断機能(じこしんだんきのう、英: self-diagnosis function)ともいい、機械が自分自身を検査できる機構である。技術者は、次のような要件を満たすためにBISTを設計する。

- 信頼性の向上
- 修理サイクルタイムの短縮

また、次のような制約が伴う。

- 技術者のアクセス制限
- 製造時のテスト費用

BISTの主な目的は、複雑さの軽減、それによる費用の削減、そして外部テスト機器(パターンプログラム)への依存を減らすことである。BISTは2つの方法で費用を削減する。

- テストサイクル期間を短縮する。
- テスターの制御下で駆動/検査する必要があるI/O信号数を減らすことにより、テスト/プローブのセットアップの複雑さを軽減する。

どちらも、自動試験装置サービスの時間当たり料金の削減につながる。

## 命名

BISTの名称と概念は、集積回路(IC)に疑似乱数発生器(PRNG)と巡回冗長検査(CRC)を含めるという考え方に端を発する。IC内の状態を保持するすべてのレジスタが1つ以上の内部スキャンチェイン上にある場合、レジスタの機能とそれらの間の組み合わせ論理は、ランダム入力の十分に大きなサンプルに対して、一意のCRC署名を生成する。したがって、ICが行う必要があるのは、期待されるCRC署名を保存し、PRNGからの十分大きなサンプルセットの後でそれをテストすることだけである。期待されるCRC署名または実際の結果としてのCRC署名の比較は、通常、JTAG IEEE 1149.1標準を介してアクセスされる。

## 用途

BISTは通常、兵器、航空電子機器、医療機器、自動車用電子機器、あらゆる種類の複雑な機械、あらゆる種類の無人機械、および集積回路に搭載されている。

### 自動車

自動車は、安全性と信頼性を高めるために自らテストを行う。たとえば、アンチロック・ブレーキ・システムを搭載したほとんどの車種では、安全間隔ごとに1回テストを行う。アンチロック・ブレーキ・システムに断線または他の故障が起こった場合、そのシステムは通常のブレーキシステムとして動作するように戻される。また、ほとんどの自動車用エンジンコントローラーには、センサーごとに「リンプ・モード(limp mode)」が組み込まれているため、センサーやその配線が故障した場合でも、エンジンは動作を続ける。また、リンプ・モードのもう1つの簡単な例は、ドアスイッチをテストし、ドアスイッチが故障した場合にシートベルト着座センサーを用いて自動的に警告灯を点灯させる車もある。

### 航空

現在、ほとんどすべての航空電子機器にBISTが組み込まれている。航空電子機器での目的は、故障したライン交換ユニット(作業現場で交換可能な一式)を取り外し、発着場やメーカーなどで修理することである。民間航空機は、飛んでいるときだけ利益を上げるので、BISTを用いて修理に必要な地上での時間を最小化し、かつBISTを含むシステムの安全度を高める。同様の議論は軍用機にも当てはまる。飛行中にBISTを使用し、障害が発生した場合、システムは代替モードまたはまだ動作する機器に切り替わる。重要な航空機材は通常、二重化または冗長化されている。娯楽システムのような重要度の低い航空機材には、一部の機能を提供する「リンプ・モード」をもつ場合がある。

### 電子機器

#### 集積回路製造

ビルトインセルフテストは、集積回路(IC)の製造テストをより速く、安価に行うために使用される。ICには、ICの内部機能の全部または一部を検証する機能がある。これは顧客にとっても価値がある場合がある。たとえば、高度なフィールドバスシステムでは、機能を検証するためにBIST機構が用意されている。大まかに言えば、これはパーソナルコンピュータのBIOSが電源投入時にメモリやバスの自己診断を行うPOSTと似たものと見なすことができる。

#### コンピュータ

一般的なパーソナルコンピュータは、非常に複雑な機械であるため、起動時に自分自身をテスト(POST)する。この機器はコンピュータ機能を含んでいるため、コンピュータによるセルフテストは明らかに安価な機能であった。組み込みシステムも含む、最近のほとんどのコンピュータは、コンピュータ自身、メモリ、ソフトウェアのセルフテスト機能を備えている。

#### 無人化された機械

無人化された機械は、メンテナンスや修理が必要かどうかを見いだすためにセルフテストを行っている。代表的なテストは、温度、湿度、通信不良、盗難、電源不良がある。たとえば、電源システムやバッテリーは負荷がかかることが多く、容易に発熱や故障する可能性があるため、しばしばテストされる。

遠隔システムにおいて、通信テストは重要項目である。無人システムの代表的なものに、電話集線装置がある。これには、電話回線やデータを蓄積し、中央スイッチにルーティングするための複雑な電子回路が含まれている。電話集線装置は、フレームと呼ばれる周期的なデータパターンの存在を確認することで、継続的に通信の有無をテストする(SONETを参照)。フレームは1秒間に約8,000回繰り返される。

多くの場合、遠隔システムには送信機と受信機をテストするため、ローカルで通信をループバックするテスト、およびリモート装置のコンピュータやソフトウェアを使用せずに通信リンクをテストするリモートテストがある。電子ループバックがない場合には通常、ソフトウェアが機能を提供する。たとえば、インターネットプロトコル(IP)では、ソフトウェアループバックであるローカルアドレスを定義する(IPアドレス127.0.0.1、通常は"localhost"という名前でローカルにマッピングされる)。

多くの遠隔システムには、リモートコンピュータを再起動するための自動リセット機能がある。これらは、通信の欠如、不適切なソフトウェア操作、またはその他の重大なイベントによって機能することがある。人工衛星には自動リセット機能だけでなく、電源や姿勢制御のための自動再起動システムも追加されている。

### 医療

医療機器は、継続的な安全性を保証するために自己検査を行う。通常、2つのテストがある。パワーオンセルフテスト(POST)は、総合的なテストを行う。その後、定期的なテストにより、パワーオンセルフテスト以降、機器の安全性が損なわれていないことを確認する。安全重視の機器は通常、障害が発生するには短すぎる期間として「安全間隔(safety interval)」を定義する。最も重要な機能のセルフテストは、通常、安全間隔ごとに少なくとも1回行われる。定期テストは通常、パワーオンセルフテストの一部からなる。

### 兵器

最初のコンピュータ制御のBISTシステムの一つは、米国のミニットマンミサイルである。内蔵コンピュータがテストを制御することで、テスト用のケーブルやコネクタの重量を減らすことができた。ミニットマンミサイルは、コンピュータ制御の自己検査を常設した最初の主要ウェポンシステムの1つであった。

## 特殊化

BISTには、機能や実装方法によって異なる、いくつかの特殊なバージョンがある。

- プログラム可能型ビルトインセルフテスト(pBIST)
- メモリービルトインセルフテスト(mBIST) - Marinescuアルゴリズムを使用。
- 論理ビルトインセルフテスト(LBIST)
- アナログおよび混合信号型ビルトインセルフテスト(AMBIST)
- 連続型ビルトインセルフテスト(CBIST、C-BIT)
- イベント駆動型ビルトイン・セルフテスト - 航空機の着陸後のシステムに対するBISTのようなもの。
- 定期ビルトインセルフテスト(C-BIT/P-BIT)
- 割込駆動型ビルトインセルフテスト(IBIST)またはユーザ/オペレータ起動型ビルトインセルフテスト(I-BIT、またはO-BIT)。
- パワーアップ・ビルトインセルフテスト(PupBIST、P-BIT)
- 自動内蔵型ビルトインセルフテスト(ABIST)

## 参照項目

- システム工学 - 複雑なシステムの設計・統合・管理する方法に焦点を当てた学問
- 安全工学 - 工学的に設計されたシステムが許容できる水準の安全性を保証する工学分野
- 組み込みシステム - 電子システムの中で専用の機能をもつコンピュータシステム
- 組み込み試験装置 - 航空機搭載システムに組み込まれた障害管理および診断機器
- パワーオンセルフテスト - 電子機器の電源を入れた直後にソフトウェアによって実行される自己診断のプロセス
- オンボードダイアグノーシス - 自動車における自己診断機能
- S.M.A.R.T. - コンピューターのハードディスク装置における監視システム
- ウォッチドッグタイマー - コンピュータの誤動作を検出し回復するためのタイマー