English

BIST (Built-In Self-Test) : 組込み自己テスト

BISTとは、その名前が示すようにLSI内部にテストのための回路を組み込み、LSI自身でLSIをテストするための仕組みです。 ここでは、なぜBISTが重要な技術であるのか、考えるべき課題が何かについて議論したいと思います。

テストのためのデータ量について

LSIのテストでは,(1)テストパタンとその期待値の準備、(2)LSIにテストパタンを印加、 (3)LSIからの応答の取り込み、(4)応答と期待値を比較することで故障の有無を判定します。

一般に、ロジック回路(メモリ、アナログ、ミックスドシグナル以外の論理回路部分)は、スキャン設計というテスト容易化設計に 基づいたテストが行われます。 スキャン設計では、回路中の全FF(フリップフロップ)にテストパターンを設定し、通常動作をさせた後に、 再び全FFに格納されたデータ(応答)を取り出すことでテストを実行します(スキャン設計を知らない方はウェブで検索してみて下さい)。

したがって、スキャン設計における1テストパターンおよび期待値のデータ量は、それぞれ回路中のFF(フリップフロップ)の数と同じビット数になります。 現在のLSIでは、回路中に数百万個以上のFFが存在し、テストデータは膨大な量になります。

テストパターンを組み込む方法について

膨大な量のテストパターンを回路内部に組み込むことは非現実的なので、 BISTでは擬似乱数パターン生成回路(PRPG : Pseudo Random Pattern Generator)が一般的に用いられます。 PRPGとしては、LFSR(Linear Feedback Shift Register)やCA(Cellular Automata)がよく用いられます (LFSR、CAを知らない方はウェブで検索してみて下さい)。テスト応答の圧縮(TRC:Test Response Compactor)については後で議論します。

例えば、nビットのLFSRを用いた場合、時間方向にデータを伸長することで2^n-1種類のパターンから成る 擬似乱数テスト系列が生成されます。 2^n番目のパターンは1番目のパターンと同一となり、同一の擬似乱数テスト系列が繰り返し生成されることになります。 この循環した2^n-1個の擬似乱数系列のどのパターンから生成を開始するかは、 LFSRの初期値であるシード(乱数の種)と呼ばれるnビットのデータで決定します。 これにより、少ないデータ量(シードのみ)で大量のテストパターンを回路内部で発生可能となります。

テスト応答・期待値を組み込む方法について

テストパターンと同じようにテスト応答およびその期待値のデータ量も膨大となり、回路内部に組み込むことは非現実的ではありません。 そこで、BISTではテスト応答圧縮回路(TRC : Test Response Compactor)が一般的に用いられます。 TRCとしては、MISR(Multiple Input Shift Register)がよく用いられます (MISRを知らない方はウェブで検索してみて下さい)。

例えば、nビットのMISRを用いた場合、長大なテスト応答系列を時間方向に圧縮することでnビットのデータとすることが可能です。 nビットの圧縮結果はシグネチャと呼ばれます。 回路に故障のない場合のシグネチャのみを期待値として回路に組み込み、実際のテスト結果であるシグネチャと 比較することで故障の有無を判定します。 これにより、テスト応答および期待値のデータ量も大幅に削減可能となります。

BISTの利点・問題点について

ここまでで、BISTがどのように自己テストを実現しているかについて説明しました。 要約すると、以下のようになります。

これにより、LSIの自己テストが可能となります。BISTは大量のテストデータの保持、テストパターンの印加、テスト応答の 観測のための高価な外部テスタ(ATE: Automatic Test Equipment)を必要としないため、コストの削減が可能となります。 また、外部テスタを必要としないことから、製造テストのみでなく、出荷後のフィールドテストの実施が可能という利点もあります。

しかし、PRPGが発生するのは擬似乱数系列ですので、全てのパターンが故障検出に寄与する有効なパターンとなるわけではありません。 例えば、1番目のパターンは故障を検出する有効なパターンであるとします。 続く2番目のパターンも故障を検出する有効なパターンですが、一部検出故障が1番目のパターンと重複する可能性があります。 これに対し、3番目のパターンも故障を検出しますが、全てがそれ以前のパターンで検出されており、 新たな故障を検出しない無効なパターンとなる場合があります。 これ以降、i-1番目のパターンまでは新たな故障を検出しない無効なパターンとなり、 i番目で新たな故障を検出する有効なパターンとなる場合もあります。 さらには、PRPGが発生する擬似乱数系列では検出できない故障が存在する可能性もあります。

このため、PRPGを用いた擬似乱数系列によるテストでは、所望の故障検出率に達するまでの時間(テスト実行時間)が 非常に長くなる、高い故障検出率の達成が困難といった問題点があります。

これらの問題を解決するために、BISTに関連した様々な研究が行われており、以下のようなものがあります。

ディペンダブルシステム学研究室での取り組みについて1

本研究室でも、このBISTに対する研究としてシード生成方法に関する研究を行っています。

T. Yoneda, M. Inoue, A. Taketani and H. Fujiwara, “Seed Ordering and Selection for High Quality Delay Test,” IEEE 19th Asian Test Symposium (ATS’10), pp.313-318, Dec. 2010

先に述べたように、PRPGを用いた擬似乱数系列によるテストでは、 所望の故障検出率に達するまでの時間(テスト実行時間)が非常に長くなるという問題点がありました。 この問題を解決する一つの方法として、リシードという技術が用いられています。 リシードとは擬似乱数系列の生成を一旦停止し、擬似乱数系列の種であるシードを入れ替えることにより、 別の位置から擬似乱数系列の生成を再開する技術です。 この技術により故障検出に寄与しない無効なパターンの生成をスキップすることが可能となり、 テスト実行時間の短縮につながります。

しかし、リシードのためには、リシードの回数分の種となるnビットのシードが必要となり、 テストデータ量としては増加します。 したがって、どのシードから擬似乱数系列の生成を開始し、何パターン生成後に生成を停止するか、 さらにその後、どのシードを用いてリシードするか(どこに系列をスキップさせるか)を考えることが 所望のトレードオフの実現のために非常に重要となります。

提案手法では、既存手法と同一のテスト品質を約10%少ないシード数で実現しています。 また、既存手法に対し2%のテスト品質を低下を許容した場合では、約70%シード数の削減に成功しています。

さらに本研究室では、上記提案手法を大規模回路に適用可能とするために処理(計算時間)の高速化にも取り組みました。 その結果、わずか3%のテスト品質の低下で、100倍の高速化に成功しています。

ディペンダブルシステム学研究室での取り組みについて2

本研究室では、このTRCの設計方法に関する研究にも取り組んでいます。

吉見優太,畠山一実,大和勇太,米田友和,井上美智子,”フィールドでの組込み自己テストにおける不定値処理に関するデータ量の削減手法,” 信学技報, Vol. 112, No. 429,DC2012-90, pp.61-66, Feb. 2013.

実際の回路には、その出力に不定値を含むものが存在します。 不定値とは、回路の設計・検証段階では、その値が0か1のどちらになるか判別できない値です (製造後の回路では0か1のどちらかの値をとる)。 回路出力に不定値が存在する場合、故障のない場合のシグネチャの期待値も不定値となってしまい、 故障の有無の判定ができないという問題点が生じます。 提案手法では、この不定値が存在する場合のテスト応答圧縮技術を提案し、 既存手法に対して約25%のデータ量の削減に成功しています。