(57)【要約】【課題】フルスキャンテスト方式に見られるチップ面積の無駄を解消するとともに、高速動作が行えるようにする。【解決手段】第１の工程は、集積回路に対し所定のテストパターンに基づく故障シミュレーションを行って検出可能な故障と検出不可能な故障とを弁別する。第２の工程は、未検出故障をリストアップする。第３の工程は、未検出故障のテスト条件を求める。第４の工程は、所定のテストパターンのうち第３の工程のテスト条件に最も近いテストパターンを求める。第５の工程は、未検出故障に対応するレジスタをスキャンレジスタに置き換えるとともに、スキャンレジスタをスキャンチェーン接続して修正回路を構成する。第６の工程は、修正回路に対して所定のテストパターンを用いながら未検出故障相当のタイミングでは第４の工程で求めたテストパターンに切り換えて故障シミュレーションを行う。【選択図】　図２
2004110265.tif 000002
【特許請求の範囲】
【請求項１】
半導体集積回路に対して所定のテストパターンに基づく故障シミュレーションを行って検出可能な故障と検出不可能な故障との弁別を行う第１の工程と、
前記検出不可能な故障を未検出故障としてリストアップする第２の工程と、
前記未検出故障をテストするためのテスト条件を求める第３の工程と、
前記第１の工程の故障シミュレーションの所定のテストパターンのうち前記第３の工程のテスト条件に最も近いテストパターンを求める第４の工程と、
前記第２の工程の未検出故障に対応するレジスタをスキャンレジスタに置き換えるとともに、前記スキャンレジスタをスキャンチェーン接続して修正回路を構成する第５の工程と、
前記修正回路に対して前記第１の工程における前記所定のテストパターンを用いながら前記未検出故障相当のタイミングでは前記第４の工程で求めたテストパターンに切り換えて故障シミュレーションを行う第６の工程とを含む半導体集積回路のテスト容易化方法。
【請求項２】
請求項１に記載の半導体集積回路のテスト容易化方法において、
前記第５の工程は、前記未検出故障に対応する入力側のレジスタを、スキャンレジスタに置き換えることに代えて、セット付きレジスタまたはリセット付きレジスタに置き換えて修正回路を構成する半導体集積回路のテスト容易化方法。
【請求項３】
半導体集積回路におけるテスト対象の組み合わせ回路に接続のレジスタ群を、搭載プロセッサで直接に制御および観察が可能な第１のレジスタ、前記半導体集積回路の端子から直接に制御および観察が可能な第２のレジスタ、および、前記第１および第２のレジスタ以外の第３のレジスタに区分した上で、前記第３のレジスタをスキャンレジスタに置き換えるとともに、前記スキャンレジスタをスキャンチェーン接続して修正回路を構成する第１の工程と、
前記第１および第２のレジスタに対して前記プロセッサまたは前記集積回路端子からテスト用データを設定入力する第２の工程と、
前記第３のレジスタに対して前記スキャンチェーンを介するシフト動作を伴ってテスト用データを設定入力する第３の工程と、
前記組み合わせ回路に対する前記テスト用データのキャプチャー動作を行う第４の工程と、
前記第３のレジスタにあるテスト結果のデータを前記スキャンチェーンを介するシフト動作を伴って出力する第５の工程と、
前記第１および第２のレジスタにあるテスト結果のデータを出力する第６の工程とを含む半導体集積回路のテスト容易化方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、半導体集積回路のテスト容易化方法に関する。
【０００２】
【従来の技術】
図１２は従来の集積回路テスト方法の構成図である（例えば、特許文献１参照。）。図１２において、０２０１はチップ、０２０２は内部メモリ手段（ＲＡＭ）、０２０３はＣＰＵ、０２０４は被テスト回路、０２０５はこれらを相互に接続する内部バス、０２０６は内部バス０２０５と被テスト回路０２０４に接続されたスキャンテスト用回路、０２０６ａは被テスト回路０２０４のスキャンテスト関連端子をスキャンテスト用回路０２０６と接続する信号線、０２０７は内部バス０２０５を入出力端子０２０８に接続する外部バスＩＦユニットである。
【０００３】
被テスト回路０２０４のテストにおいて、ＣＰＵ０２０３または入出力端子０２０８からバス０２０５を介してスキャンテスト用回路０２０６を制御することにより、被テスト回路０２０４のスキャンテスト関連端子にテスト用データを設定入力するとともに、被テスト回路０２０４のスキャンテスト関連端子の値を読み出すことができる。
【０００４】
【特許文献１】
特開平１１−１０８９９８号公報（第３−４頁、図１）
【０００５】
【発明が解決しようとする課題】
上記した従来の集積回路テスト方法はフルスキャンテストと呼ばれる方式で、被テスト回路０２０４内のレジスタをすべてスキャンレジスタに置き換えてスキャンチェーン接続することを前提としている。このため、バスから直接制御／観測可能なレジスタについてもスキャンレジスタに置き換えているが、スキャンレジスタは通常のレジスタに比べて、面積が大きいものであり、すべてを置き換えることから大きなチップ面積を必要としていた。
【０００６】
また、通常動作時のクロックとは別に、バス０２０５を介してＣＰＵ０２０３または入出力端子０２０８からスキャンテスト用回路０２０６を制御し、スキャンテスト用回路０２０６からスキャンテスト用のスキャンクロックを被テスト回路０２０４に入力しテストを行う構成である。このため、チップが高速で動作する場合に、通常、バスのスピードは内部クロックのスピード以下であり、通常動作と同じスピードでテストを行うことは不可能であった。
【０００７】
本発明は、このような事情に鑑みて創案されたものであり、チップ面積の無駄を削減するとともに、高速動作が行えるようにすることを目的とする。
【０００８】
【課題を解決するための手段】
上記の課題を解決するために、本発明は次のような手段を講じる。すなわち、半導体集積回路のテスト容易化方法について、次のような複数の工程を含むものである。
【０００９】
第１の工程において、半導体集積回路に対して所定のテストパターンに基づく故障シミュレーションを行って検出可能な故障と検出不可能な故障との弁別を行う。
【００１０】
第２の工程において、前記検出不可能な故障を未検出故障としてリストアップする。
【００１１】
第３の工程において、前記未検出故障をテストするためのテスト条件を求める。
【００１２】
第４の工程において、前記第１の工程の故障シミュレーションの所定のテストパターンのうち前記第３の工程のテスト条件に最も近いテストパターンを求める。
【００１３】
第５の工程において、前記第２の工程の未検出故障に対応するレジスタをスキャンレジスタに置き換えるとともに、前記スキャンレジスタをスキャンチェーン接続して修正回路を構成する。
【００１４】
第６の工程において、前記修正回路に対して前記第１の工程における前記所定のテストパターンを用いながら前記未検出故障相当のタイミングでは前記第４の工程で求めたテストパターンに切り換えて故障シミュレーションを行う。
【００１５】
この構成による作用は次のとおりである。すなわち、従来方式のすべてのレジスタをスキャンレジスタに置き換えるフルスキャンテストとは異なり、未検出故障に対応するレジスタのみをスキャンレジスタに置き換えるだけである。テスト対象の組み合わせ回路の入力側のスキャンレジスタに対しては外部よりテスト用データを設定入力する。組み合わせ回路の入力側でスキャンレジスタに関連するが故障相当ではないレジスタに対しては、搭載プロセッサまたは集積回路端子からテスト用データを設定入力する。組み合わせ回路の出力側のスキャンレジスタに対しては外部よりテスト用データを設定入力して出力の初期化を行う。このようにすれば、故障シミュレーション用にあらかじめ用意されている所定のテストパターンを利用して、故障相当ではないレジスタにテスト用データを設定入力するとともに、外部よりスキャンレジスタにテスト用データを設定入力し、故障シミュレーションを遂行することができる。フルスキャンテスト方式に比べて、スキャンレジスタに置き換えるべきレジスタの数を必要最小限とでき、チップ面積の増大を効果的に抑制することができる。また、故障相当ではないレジスタを動作させる通常の基本クロックのもとで、あらかじめ用意された所定のテストパターンを利用して、入出力動作全体を制御でき、高速処理が可能である。
【００１６】
上記の半導体集積回路のテスト容易化方法の代替として、前記第５の工程については、前記未検出故障に対応する入力側のレジスタを、スキャンレジスタに置き換えることに代えて、セット付きレジスタまたはリセット付きレジスタに置き換えて修正回路を構成するのでもよい。この場合、上記同様の作用のほか、セット付きレジスタまたはリセット付きレジスタは搭載プロセッサまたは集積回路端子からの制御性が向上し、より効率の良い処理が可能である。
【００１７】
別の解決手段として、本発明は次のような手段を講じる。すなわち、半導体集積回路のテスト容易化方法について、次のような複数の工程を含むものである。
【００１８】
第１の工程において、半導体集積回路におけるテスト対象の組み合わせ回路に接続のレジスタ群を、搭載プロセッサで直接に制御および観察が可能な第１のレジスタ、前記半導体集積回路の端子から直接に制御および観察が可能な第２のレジスタ、および、前記第１および第２のレジスタ以外の第３のレジスタに区分する。そして、その上で、前記第３のレジスタをスキャンレジスタに置き換えるとともに、前記スキャンレジスタをスキャンチェーン接続して修正回路を構成する。
【００１９】
第２の工程において、前記第１および第２のレジスタに対して前記プロセッサまたは前記集積回路端子からテスト用データを設定入力する。
【００２０】
第３の工程において、前記第３のレジスタに対して前記スキャンチェーンを介するシフト動作を伴ってテスト用データを設定入力する。
【００２１】
第４の工程において、前記組み合わせ回路に対する前記テスト用データのキャプチャー動作を行う。
【００２２】
第５の工程において、前記第３のレジスタにあるテスト結果のデータを前記スキャンチェーンを介するシフト動作を伴って出力する。
【００２３】
第６の工程において、前記第１および第２のレジスタにあるテスト結果のデータを出力する。
【００２４】
この構成による作用は次のとおりである。すなわち、従来方式のすべてのレジスタをスキャンレジスタに置き換えるフルスキャンテストとは異なり、搭載プロセッサで直接に制御および観察が不可能な、および、集積回路端子から直接に制御および観察が不可能な第３のレジスタのみをスキャンレジスタに置き換えるだけである。そして、故障シミュレーションにおいては、第１および第２のレジスタに対しては通常のテスト用データの設定入力を行い、第３のレジスタはスキャンチェーンを利用してテスト用データの設定入力・シフト動作を行い、テスト結果のデータの観測のための出力に際しては第３のレジスタはスキャンチェーンを利用してシフト動作・出力を行い、第１および第２のレジスタでは通常のテスト結果のデータの読み出しとする。このようにすれば、フルスキャンテスト方式に比べて、スキャンレジスタに置き換えるべきレジスタの数を削減することができ、チップ面積の増大を抑制することができる。
【００２５】
【発明の実施の形態】
以下、本発明にかかわる半導体集積回路のテスト容易化方法の実施の形態について図面に基づいて詳細に説明する。
【００２６】
（実施の形態１）
図１はテスト容易化設計を行う前の元の回路Ｃ０を示す。論理回路設計段階において、元の回路Ｃ０に対してテスト容易化のための回路修正すなわちテスト容易化設計を行う。
【００２７】
図１において、１０１，１０２，１０３は、入力が決まると出力が一意に決まる組み合わせ回路である。この組み合わせ回路は、内部にレジスタ、ラッチ、メモリを含まない。今回の例では、組み合わせ回路１０２がテスト対象であり、説明の簡単のため、ＡＮＤ回路２９が１個のみ入っている回路としている。１０４は半導体集積回路に搭載されているプロセッサ、１０５はプロセッサ１０４と各部を接続するバス、１０６はアドレスデコーダである。アドレスデコーダ１０６は、バス１０５のアドレス部分をデコードし、書き込み制御信号ＷＥ２、読み出し制御信号ＲＥ１，ＲＥ３を生成して出力する。
【００２８】
１，２，３，４，５，６，７，８，９，１０，１１，１２，１３，１４はＤフリップフロップからなるレジスタである。
【００２９】
レジスタ１は、プロセッサ１０４から書き込み制御可能なレジスタであり、アドレスデコーダ１０６からの書き込み制御信号ＷＥ２により、バス１０５のデータ部分の値をセレクタ３０を介して取り込むことができるように構成されている。
【００３０】
レジスタ８は、プロセッサ１０４からデータ読み込み制御が可能なレジスタであり、アドレスデコーダ１０６からの読み出し制御信号ＲＥ１によりトライステートバッファ（読み出し制御回路）３１を介してバス１０５のデータ部分に値を出力する。
【００３１】
プロセッサ１０４は、バス１０５のデータ部分に出力された値を読む込むことができる。ＣＫは組み合わせ回路で使用される基本クロックであり、プロセッサ１０４から供給される。
【００３２】
図２は、テスト容易化設計を行う前の元の回路Ｃ０に対して、テスト容易化のために修正を行った後の修正回路Ｃ１を示す。図示例の修正回路Ｃ１は、元の回路Ｃ０におけるレジスタ２およびレジスタ１０がスキャンレジスタ２′およびスキャンレジスタ１０′に置き換えられている（置き換え方法については、図４、図５で説明する）。スキャンレジスタ２′，１０′がスキャンチェーンを構成する。
【００３３】
図３（ａ）は、図２に示す修正回路Ｃ１で使用されたスキャンレジスタの構成を示す。図３（ｂ）は等価回路を示す。このスキャンレジスタは、通常動作時のデータ入力（Ｄ）とは別にスキャンテスト用のデータ入力（ＴＤ）を有し、さらに、スキャンイネーブル入力（ＳＥ）を有している。スキャンレジスタにおいて、スキャンイネーブル入力（ＳＥ）が“０”のときは、クロック入力（ＣＫ）の立ち上がりタイミングで、データ入力（Ｄ）の値を内部に取り込む。また、スキャンイネーブル入力（ＳＥ）が“１”のときは、クロック入力（ＣＫ）の立ち上がりタイミングで、テスト用データ入力（ＴＤ）の値を内部に取り込む。
【００３４】
図２において、ＴＤＩ（Ｔｅｓｔ　Ｄａｔａ　Ｉｎｐｕｔ）は、スキャンレジスタ２′，１０′からなるスキャンチェーンに対するデータ入力端子である。ＴＤＯ（ＴｅｓｔＤａｔａＯｕｔｐｕｔ）は、スキャンレジスタ２′，１０′からなるスキャンチェーンのデータ出力端子である。ＴＣＫはテストクロック入力端子であり、テストデータ入力端子ＴＤＩからデータを取り込み、スキャンチェーン内でテスト用データをシフトさせ、組み合わせ回路１０２を経て得られたデータをテストデータ出力端子ＴＤＯへ出力する動作において、テストクロック入力端子ＴＣＫからのテストクロックはタイミング制御を司る。
【００３５】
３２はＯＲ回路であり、外部のテストクロック入力端子ＴＣＫからのテストクロックとプロセッサ１０４からの基本クロックＣＫとを２入力とし、出力はスキャンチェーンを構成するスキャンレジスタ２′およびスキャンレジスタ１０′のクロック入力（ＣＫ）に接続する。
【００３６】
修正回路Ｃ１において、レジスタから置き換えられたスキャンレジスタ２′，１０′およびこれに接続されたテストデータ入力端子ＴＤＩ、テストデータ出力端子ＴＤＯでスキャンチェーンが構成される。このスキャンチェーンをテストするときは、プロセッサ１０４は基本クロックＣＫの出力を停止するとともに、スキャンイネーブル信号ＳＥをアクティブの“１”に切り換える。このスキャンイネーブル信号ＳＥはスキャンレジスタ２′，１０′のスキャンイネーブル入力（ＳＥ）に与えられる。これにより、スキャンレジスタ２′，１０′はデータ入力端子を通常動作時のデータ入力（Ｄ）からテスト用データ入力（ＴＤ）に切り換える。そして、外部のテストクロック入力端子ＴＣＫからのテストクロックをＯＲ回路３２を介してスキャンレジスタ２′，１０′のクロック入力（ＣＫ）に供給する。これにより、外部のテストデータ入力端子ＴＤＩから任意のテスト用データをスキャンレジスタ２′のテスト用データ入力（ＴＤ）に入力することができる。スキャンレジスタ２′のデータ出力（Ｑ）から出力されたデータは組み合わせ回路１０２において論理合成され、その結果がスキャンレジスタ１０′のデータ入力（Ｄ）に入力され、さらにスキャンレジスタ１０′のデータ出力（Ｑ）から外部のテストデータ出力端子ＴＤＯに出力される。すなわち、組み合わせ回路１０２による論理合成を観測することができる。
【００３７】
図４は、図１に示す元の回路Ｃ０を図２に示す修正回路Ｃ１に修正するとともに、修正回路Ｃ１用のテストパターンを作成して行うテスト動作を示すフローチャートである。
【００３８】
元の回路Ｃ０に対するテストパターンが既にあるとする。故障検出率を上げるためにテスト容易化設計、テストパターン追加を行う。故障検出率とは、全故障のうち、与えられたテストパターンにより何％が検出できるかという割合であり、テストパターンの完成度の指標である。
【００３９】
初めに、ステップＳ１において、元の回路Ｃ０で故障シミュレーションを行う。故障シミュレーションとは、設計、特にテスト関連の設計を行うテスト設計の一過程であり、与えられたテストパターン系列によって検出可能な故障、検出不可能な故障を調べることである。故障シミュレーションは、元の回路Ｃ０に対して、既に作成済みのテストパターンを印加することにより行う。
【００４０】
次に、ステップＳ２において、故障シミュレーションで未検出であった故障をリストアップする。故障シミュレーションで未検出の故障とは、たとえ、その箇所が故障していても、故障シミュレーションで使用したテストパターンでは検出・発見できない故障のことである。今回の例では、元の回路Ｃ０のレジスタ２の出力の信号線１６が“１”に縮退している故障（Ｓｔｕｃｋ　Ａｔ　“１”であり、これを“ＳＡ１”と記載する）が未検出であるとする。
【００４１】
次に、ステップＳ３において、未検出故障〔信号線１６：ＳＡ１〕をテストするための条件（テスト条件）を求める。未検出故障〔信号線１６：ＳＡ１〕を検出するためには、信号線１６が“１”に縮退するという故障が発生したときに期待値として観測される値が変るようなテストであればよい。そのための入力側のテスト条件は、
レジスタ１の出力の信号線１５　……“１”
レジスタ２の出力の信号線１６　……“０”
レジスタ３の出力の信号線１７　……“１”
レジスタ４の出力の信号線１８　……“１”
という入力条件になる。この条件のとき、〔信号線１６：ＳＡ１〕という故障がなければ、ＡＮＤ回路２９の出力の信号線２４が“０”になり、〔信号線１６：ＳＡ１〕という故障が起これば、ＡＮＤ回路２９の出力の信号線２４が“１”となる。
【００４２】
次に、ステップＳ４において、テストパターンを作成するために、故障シミュレーションの実施中でテスト条件に最も近い状態を探す。今回の例では、時刻Ｔ１２の状態、
レジスタ１の出力の信号線１５　……“１”
レジスタ２の出力の信号線１６　……“１”
レジスタ３の出力の信号線１７　……“１”
レジスタ４の出力の信号線１８　……“１”
が最も近い状態であるとする。
【００４３】
次に、テストパターンが容易に作成できるように元の回路Ｃ０に対して修正を加える。
【００４４】
すなわち、ステップＳ５において、テスト条件に最も近い状態で条件に合わないレジスタをスキャンレジスタに置き換える。今回の例では、レジスタ２をスキャンレジスタ２′に置き換える。また、故障が無いときと故障が起きたときとで出力／期待値の変化が起きる信号を設定入力するレジスタをスキャンレジスタに置き換える。今回の例では、レジスタ１０をスキャンレジスタ１０′に置き換える。
【００４５】
併せて、スキャン用のテスト用データを設定入力するためのテストデータ入力端子ＴＤＩ、スキャンデータを観測するためのテストデータ出力端子ＴＤＯ、テスト用データの設定入力・シフト・出力のためのテストクロックを入力するテストクロック入力端子ＴＣＫを加える。また、プロセッサ１０４において、スキャンモードを設定するためのスキャンイネーブル信号ＳＥを加える。そして、テストデータ入力端子ＴＤＩをスキャンチェーンの初段のレジスタとなるスキャンレジスタ２′のテスト用データ入力（ＴＤ）に接続する。また、テストデータ出力端子ＴＤＯをスキャンチェーンの最後のレジスタとなるスキャンレジスタ１０′のデータ出力（Ｑ）に接続する。スキャンイネーブル信号ＳＥをスキャンレジスタ２′，１０′のスキャンイネーブル入力（ＳＥ）に接続する。テストクロック入力端子ＴＣＫをＯＲ回路３２の１つの入力に接続し、ＯＲ回路３２のもうひとつの入力をプロセッサ１０４の基本クロックＣＫに接続し、ＯＲ回路３２の出力をスキャンレジスタ２′，１０′のクロック入力（ＣＫ）に接続する。スキャンレジスタ２′のデータ出力（Ｑ）をスキャンレジスタ１０′のテスト用データ入力（ＴＤ）に接続する。
【００４６】
今回の例では、未検出故障が１つなので、以上によって、図１に示す元の回路Ｃ０が図２に示す修正回路Ｃ１に修正されたことになる。未検出故障が複数ある場合には、未検出故障の数だけスキャンレジスタへの置き換えを繰り返す。
【００４７】
次に、ステップＳ６において、図２に示す修正回路Ｃ１において、未検出故障〔信号線１６：ＳＡ１〕を検出できるテストパターンを作成する。テスト条件に最も近い状態となる時刻Ｔ１２まではステップＳ１の故障シミュレーションで用いたテストパターンをそのまま用いる（これについては、図５で詳述する）。そのテストパターンでは、時刻Ｔ１２において、
レジスタ１の出力の信号線１５　……“１”
レジスタ２の出力の信号線１６　……“１”
レジスタ３の出力の信号線１７　……“１”
レジスタ４の出力の信号線１８　……“１”
となっている。この状態から、スキャンチェーンを動作させることにより、未検出故障〔信号線１６：ＳＡ１〕を検出できるテストパターンを作る。今回の例では、作成されたテストパターンは、
レジスタ１の出力の信号線１５　……“１”
レジスタ２の出力の信号線１６　……“０”
レジスタ３の出力の信号線１７　……“１”
レジスタ４の出力の信号線１８　……“１”
となる。
【００４８】
未検出故障が複数ある場合は、以上のパターン作成を繰り返す。
【００４９】
図５は、図２に示す修正回路Ｃ１の動作を説明するタイミングチャートである。基本クロックＣＫ、テストクロック入力端子ＴＣＫ、スキャンイネーブル信号ＳＥ、テストデータ入力端子ＴＤＩ、テストデータ出力端子ＴＤＯにおける各波形、レジスタ１〜４が保持する値およびレジスタ１０が保持する値を示している。
【００５０】
時刻Ｔ１から時刻Ｔ１２はスキャン動作でない通常の動作モードで故障シミュレーションを行う。時刻Ｔ１から時刻Ｔ１２では、テストクロック入力端子ＴＣＫは“０”であり、また、スキャンイネーブル信号ＳＥは“０”であり、レジスタ１〜４（２′はスキャンレジスタ）およびスキャンレジスタ１０′は、故障シミュレーションと同様に値を変化させていく。
【００５１】
時刻Ｔ１２において、レジスタ１〜４が図４のテスト設計フローの中のテスト条件に最も近い状態になる。この状態になると、一時的にスキャンレジスタ２′をスキャン動作に切り換える。スキャン動作により、スキャンレジスタ２′の値を書き換えてテスト条件を作る。時刻Ｔ１２の後半から基本クロックＣＫを“０”、スキャンイネーブル信号ＳＥを“１”、テストデータ入力端子ＴＤＩをスキャンレジスタ２′に設定入力するデータ“０”にする。
【００５２】
時刻Ｔ１３の開始タイミングにおいて、テストクロック入力端子ＴＣＫを立ち上げてテストデータ入力端子ＴＤＩのデータ“０”をスキャンレジスタ２′に取り込む。この状態で、テスト条件が整うことになる。作成されたテストパターンは、
レジスタ１の出力の信号線１５　………“１”
レジスタ２′の出力の信号線１６　……“０”
レジスタ３の出力の信号線１７　………“１”
レジスタ４の出力の信号線１８　………“１”
となる。
【００５３】
テスト条件でのＡＮＤ回路２９の出力をスキャンレジスタ１０′に取り込むため、時刻Ｔ１３の後半からスキャンイネーブル信号ＳＥを“０”にする。
【００５４】
時刻Ｔ１４の開始タイミングにおいて、テストクロック入力端子ＴＣＫを立ち上げてＡＮＤ回路２９の出力をスキャンレジスタ１０′に取り込む。この例では、時刻Ｔ１４でスキャンレジスタ１０′が“０”の値をもち、テストデータ出力端子ＴＤＯにスキャンレジスタ１０′の値が出力されている。時刻Ｔ１４でのテストデータ出力端子ＴＤＯを期待値データ“０”と比較することにより未検出故障〔信号線１６：ＳＡ１〕を検出することができる。今回の例では、未検出故障が１つであるので、これで必要なテストが終了する。
【００５５】
未検出故障が複数の場合は、未検出故障の数だけテストを繰り返す。
【００５６】
本実施の形態はパーシャルスキャンテストであり、必要なレジスタのみをスキャンレジスタに置き換えるため、すべてのレジスタをスキャンレジスタに置き換えるフルスキャンテストに比べて、チップ面積の増加が少ない。
【００５７】
また、フルスキャンテストではスキャンチェーンを構成するレジスタが増え、チェーンが長くなると、テスト条件を設定入力するために多くのデータをテストデータ入力端子ＴＤＩから設定入力してなければならず、多くの時間がかかってしまう。また、結果をテストデータ出力端子ＴＤＯに読み出すのにも同様に多くの時間がかかってしまう。
【００５８】
これに対して、本発明のこの実施の形態では、レジスタ群が並列に動作している通常の動作状態（ステップＳ１のテストパターンの動作状態）を利用してテスト条件を作成するとともに、スキャンチェーンの長さを必要最小限にしていることから、より短いテスト時間で未検出の故障を捕捉することができる。
【００５９】
（実施の形態２）
図６は、図１に示すテスト容易化設計を行う前の元の回路Ｃ０に対して、テスト容易化のために修正を行った後の修正回路Ｃ２を示す。図示例の修正回路Ｃ２は、元の回路Ｃ０におけるレジスタ２がリセット付きレジスタ２″に置き換えられ、レジスタ１０がスキャンレジスタ１０′に置き換えられている。
【００６０】
すなわち、図１において、プロセッサ１０４が制御しても、その値を“０”にすることが難しいと判断されたレジスタ２を強制的に“０”に設定入力できるようにするためにリセット付きレジスタ２″に置き換えている。ＲＥＳＥＴは、強制リセットのためのリセット信号であり、今回の例ではプロセッサ１０４が出力するものとしている。ただし、プロセッサ１０４の出力に限定する必要性はない。また、図１のレジスタ１０は、プロセッサ１０４の制御では観測が難しいとされたもので、スキャンレジスタ１０′に置き換えられている。リセット付きレジスタ２″への置き換え方法およびスキャンレジスタ１０′への置き換え方法については、図７で説明する。
【００６１】
スキャンイネーブル信号ＳＥは、スキャンレジスタ１０′がテスト用データ入力（ＴＤ）よりデータを取り込むことを指定する。スキャンレジスタ１０′のデータ出力（Ｑ）には、スキャンチェーンのデータ出力端子ＴＤＯが接続されている。今回の例ではスキャンレジスタはスキャンレジスタ１０′の１つのみであるので、スキャンチェーンとなっていないが、スキャンレジスタが複数ある場合に、データ出力（Ｑ）を次のスキャンレジスタのテスト用データ入力（ＴＤ）に連続して接続することによりスキャンチェーンを構成する。テストクロック入力端子ＴＣＫは、ＯＲ回路３２を介してスキャンレジスタ１０′のクロック入力（ＣＫ）に接続されている。すなわち、ＯＲ回路３２は、プロセッサ１０４からの基本クロックＣＫと外部からのテストクロック入力端子ＴＣＫを２入力とし、出力はスキャンレジスタ１０′のクロック入力（ＣＫ）に接続する。テストクロック入力端子ＴＣＫからのテストクロックは、スキャンチェーンのデータをシフトさせ、テストデータ出力端子ＴＤＯへ出力する動作をタイミング制御する。
【００６２】
図７は、図１に示す元の回路Ｃ０を図６に示す修正回路Ｃ２に修正するとともに、修正回路Ｃ２用のテストパターンを作成して行うテスト動作を示すフローチャートである。
【００６３】
元の回路Ｃ０に対するテストパターンが既にあるとする。故障検出率を上げるためにテスト容易化設計、テストパターン追加を行う。
【００６４】
初めに、ステップＳ１１において、元の回路Ｃ０で故障シミュレーションを行う。
【００６５】
次に、ステップＳ１２において、故障シミュレーションで未検出であった故障をリストアップする。今回の例では、元の回路Ｃ０のレジスタ２の出力の信号線１６が“１”に縮退している故障が未検出であるとする。
【００６６】
次に、ステップＳ１３において、未検出故障〔信号線１６：ＳＡ１〕をテストするための条件（テスト条件）を求める。未検出故障〔信号線１６：ＳＡ１〕を検出するための入力側のテスト条件は、上記同様に、
レジスタ１の出力の信号線１５　……“１”
レジスタ２の出力の信号線１６　……“０”
レジスタ３の出力の信号線１７　……“１”
レジスタ４の出力の信号線１８　……“１”
である。この条件のとき、〔信号線１６：ＳＡ１〕という故障がなければ、ＡＮＤ回路２９の出力側の信号線２４が“０”になり、〔信号線１６：ＳＡ１〕という故障が起これば、信号線２４が“１”となる。
【００６７】
次に、ステップＳ１４において、テストパターンを作成するために、故障シミュレーションの実施中でテスト条件に最も近い状態を探す。今回の例では、時刻Ｔ１２の状態、
レジスタ１の出力の信号線１５　……“１”
レジスタ２の出力の信号線１６　……“１”
レジスタ３の出力の信号線１７　……“１”
レジスタ４の出力の信号線１８　……“１”
が最も近い状態であるとする。
【００６８】
次に、テストパターンが容易に作成できるように元の回路Ｃ０に対して修正を加える。
【００６９】
すなわち、ステップＳ１５において、テスト条件に最も近い状態で条件に合わないレジスタをテスト条件に合うように、セット付きレジスタまたはリセット付きレジスタに置き換える。今回の例では、レジスタ２をリセット付きレジスタ２″に置き換える。また、故障が無いときと故障が起きたときとで出力／期待値の変化が起きる信号を設定入力するレジスタをスキャンレジスタに置き換える。今回の例では、レジスタ１０をスキャンレジスタ１０′に置き換える。
【００７０】
併せて、スキャンデータを観測するためのテストデータ出力端子ＴＤＯ、テスト用データの設定入力・シフト・出力のためのテストクロックを入力するテストクロック入力端子ＴＣＫを加える。また、プロセッサ１０４において、スキャンモードを設定するためのスキャンイネーブル信号ＳＥを加える。そして、テストデータ出力端子ＴＤＯをスキャンレジスタ１０′（一般的にはスキャンチェーンの最後のスキャンレジスタ）のデータ出力（Ｑ）に接続する。スキャンイネーブル信号ＳＥの信号線をスキャンレジスタ１０′のスキャンイネーブル入力（ＳＥ）に接続する。テストクロック入力端子ＴＣＫをＯＲ回路３２の１つの入力に接続し、ＯＲ回路３２のもうひとつの入力をプロセッサ１０４の基本クロックＣＫに接続し、ＯＲ回路３２の出力をスキャンレジスタ１０′のクロック入力（ＣＫ）に接続する。
【００７１】
この例では、スキャンレジスタ１０′（一般的にはスキャンチェーンの最初のスキャンレジスタ）のテスト用データ入力（ＴＤ）をＶＤＤに固定している。ＧＮＤに固定しても良い。あるいは、スキャン用データを設定入力するためのテストデータ入力端子ＴＤＩを設けて、スキャンレジスタ１０′のテスト用データ入力（ＴＤ）に接続しても良い。
【００７２】
今回の例では、未検出故障が１つなので、以上によって、図１に示す元の回路Ｃ０が図６に示す修正回路Ｃ２に修正される。未検出故障が複数ある場合には、未検出故障の数だけレジスタの置き換えを繰り返す。
【００７３】
次に、ステップＳ１６において、図６に示す修正回路Ｃ２において、未検出故障〔信号線１６：ＳＡ１〕を検出できるテストパターンを作成する。テスト条件に最も近い状態となる時刻Ｔ１２まではステップＳ１１のシミュレーションパターンをそのまま用いる（これについては、図８で詳述する）。この状態では、
レジスタ１の出力の信号線１５　………“１”
レジスタ２″の出力の信号線１６　……“１”
レジスタ３の出力の信号線１７　………“１”
レジスタ４の出力の信号線１８　………“１”
となっている。この状態から、リセット信号ＲＥＳＥＴを動作させることにより、未検出故障〔信号線１６：ＳＡ１〕を検出できるテストパターンを作る。今回の例では、作成されたテストパターンは、
レジスタ１の出力の信号線１５　………“１”
レジスタ２″の出力の信号線１６　……“０”
レジスタ３の出力の信号線１７　………“１”
レジスタ４の出力の信号線１８　………“１”
となる。
【００７４】
未検出故障が複数ある場合は、以上のパターン作成を繰り返す。
【００７５】
図８は図６に示す修正回路Ｃ２の動作を説明するタイミングチャートである。
【００７６】
時刻Ｔ１から時刻Ｔ１２はスキャン動作でない通常の動作モードで故障シミュレーションを行う。時刻Ｔ１から時刻Ｔ１２では、テストクロック入力端子ＴＣＫは“０”であり、また、スキャンイネーブル信号ＳＥは“０”であり、レジスタ１〜４（２はリセット付きレジスタ）およびスキャンレジスタ１０′は、故障シミュレーションと同様に値を変化させていく。
【００７７】
時刻Ｔ１２において、レジスタ１〜４が図１０のテスト設計フローの中のテスト条件に最も近い状態になる。時刻Ｔ１３において、基本クロックＣＫを止め、リセット信号ＲＥＳＥＴを立ち上げてリセット付きレジスタ２″の値を書き換え、テスト条件を作る。作成されたテストパターンは、
レジスタ１の出力の信号線１５　………“１”
レジスタ２″の出力の信号線１６　……“０”
レジスタ３の出力の信号線１７　………“１”
レジスタ４の出力の信号線１８　………“１”
となる。
【００７８】
テスト条件でのＡＮＤ回路２９の出力をスキャンレジスタ１０′に取り込むため、時刻Ｔ１４の後半でスキャンイネーブル信号ＳＥを“１”にし、時刻Ｔ１５でテストクロック入力端子ＴＣＫを１発動作させ、ＡＮＤ回路２９の出力をスキャンレジスタ１０′に取り込む。今回の例では、スキャンチェーンがスキャンレジスタ１０′のみであり、スキャンレジスタ１０′の値をテストデータ出力端子ＴＤＯから観測できる。スキャンチェーンが複数のレジスタからなる場合は、スキャンイネーブル信号ＳＥを“１”にしたままテストクロック入力端子ＴＣＫを動作させ、スキャンチェーンを通して順次、レジスタの値をテストデータ出力端子ＴＤＯから観測する。今回の例では、未検出故障が１つなので、これで必要なテストが終了する。
【００７９】
未検出故障が複数の場合は、未検出故障の数だけテストを繰り返す。
【００８０】
本実施の形態もパーシャルスキャンテストであり、必要なレジスタのみをリセット付きレジスタ（あるいはセット付きレジスタ）とスキャンレジスタに置き換えるため、すべてのレジスタをスキャンレジスタに置き換えるフルスキャンテストに比べて、チップ面積の増加が少ない。
【００８１】
また、実施の形態１と同様に、レジスタ群が並列に動作している通常の動作状態（ステップＳ１１のテストパターンの動作状態）を利用してテスト条件を作成するとともに、スキャンチェーンの長さを必要最小限にしていることから、より短いテスト時間で未検出の故障を捕捉することができる。
【００８２】
（実施の形態３）
図９は、図１に示すテスト容易化設計を行う前の元の回路Ｃ０に対して、テスト容易化のために修正を行った後の修正回路Ｃ３を示す。元の回路Ｃ０において、レジスタ１はプロセッサ１０４からデータを設定入力でき、レジスタ８はそのデータをプロセッサ１０４から読み出すことができる。この２つのレジスタ１，８以外のレジスタをスキャンレジスタに置き換えて図９に示す修正回路Ｃ３としている。すなわち、元の回路Ｃ０におけるレジスタ２〜７およびレジスタ９〜１４がスキャンレジスタ２′〜７′およびスキャンレジスタ９′〜１４′に置き換えられている（置き換え方法については、図１０、図１１で説明する）。スキャンレジスタ２′〜７′，１４′〜９′がスキャンチェーンを構成する。各スキャンレジスタのデータ出力（Ｑ）は次段のスキャンレジスタのテスト用データ入力（ＴＤ）に接続されている。
【００８３】
テストデータ入力端子ＴＤＩはスキャンチェーンにおける初段のスキャンレジスタ２′のテスト用データ入力（ＴＤ）に接続されている。テストデータ出力端子ＴＤＯはスキャンチェーンにおける最終段のスキャンレジスタ９′のデータ出力（Ｑ）に接続されている。プロセッサ１０４からの基本クロックＣＫがＯＲ回路３２と外部からのテストクロック入力端子ＴＣＫを２入力とし、出力はスキャンチェーンを構成するスキャンレジスタ２′〜７′およびスキャンレジスタ９′〜１４′のクロック入力（ＣＫ）に接続する。プロセッサ１０４からのスキャンイネーブル信号ＳＥの信号線は各スキャンレジスタ２′〜７′，９′〜１４′のスキャンイネーブル入力（ＳＥ）に接続されている。
【００８４】
修正回路Ｃ３において、レジスタから置き換えられたスキャンレジスタ２′〜７′，１４′〜９′およびこれに接続されたテストデータ入力端子ＴＤＩ、テストデータ出力端子ＴＤＯでスキャンチェーンが構成される。このスキャンチェーンをテストするときは、プロセッサ１０４は基本クロックＣＫの出力を停止するとともに、スキャンイネーブル信号ＳＥをアクティブの“１”に切り換える。これにより、スキャンレジスタ２′〜７′，１４′〜９′はデータ入力端子を通常動作時のデータ入力（Ｄ）からテスト用データ入力（ＴＤ）に切り換える。そして、外部からテストクロックをテストクロック入力端子ＴＣＫから入力する。このテストクロックはＯＲ回路３２を介してスキャンレジスタ２′〜７′，１４′〜９′のクロック入力（ＣＫ）に供給される。したがって、外部から任意のテスト用データをテストクロック入力端子ＴＣＫから初段のスキャンレジスタ２′のテスト用データ入力（ＴＤ）に設定入力、順次、次段のスキャンレジスタにシフトさせることができる。スキャンレジスタ２′〜７′に所望のテスト用データを設定入力した状態で、キャプチャー動作を行い、スキャンレジスタ２′〜７′のデータ出力（Ｑ）から出力されたデータは組み合わせ回路１０２において論理合成され、その結果がスキャンレジスタ９′〜１４′のデータ入力（Ｄ）に設定入力される。再びスキャン動作を行い、スキャンレジスタ１４′のデータをスキャンレジスタ１３′に、スキャンレジスタ１３′のデータをスキャンレジスタ１２′に、以下同様にして、スキャンレジスタ１０′のデータをスキャンレジスタ９′にそれぞれシフトさせ、さらにスキャンレジスタ９′のデータ出力（Ｑ）から外部のテストデータ出力端子ＴＤＯに出力させる。すなわち、組み合わせ回路１０２による論理合成を観測することができる。
【００８５】
図１０は、図１に示す元の回路Ｃ０を図９に示す修正回路Ｃ３に修正するとともに、修正回路Ｃ３のテストパターンを作成する動作を示すフローチャートである。本実施の形態では、実施の形態１，２のテスト容易化設計とは違い、元の回路Ｃ０用の既存テストパターンはなく、図９の状態になってからテストパターンを作成する。
【００８６】
初めに、ステップＳ２１において、元の回路Ｃ０で、データの設定入力または読み出しを直接に行えないレジスタをスキャンレジスタに置き換える。今回の例では、レジスタ２〜７，９〜１４をスキャンレジスタに置き換える。
【００８７】
併せて、スキャン用のテスト用データを設定入力するためのテストデータ入力端子ＴＤＩ、スキャンデータを観測するためのテストデータ出力端子ＴＤＯ、テスト用データの設定入力・シフト・出力のためのテストクロックを入力するテストクロック入力端子ＴＣＫを加える。また、プロセッサ１０４において、スキャンモードを設定するためのスキャンイネーブル信号ＳＥを加える。そして、テストデータ入力端子ＴＤＩをスキャンチェーンの初段のレジスタとなるスキャンレジスタ２′のテスト用データ入力（ＴＤ）に接続する。テストデータ出力端子ＴＤＯをスキャンチェーンの最終段のレジスタとなるスキャンレジスタ９′のデータ出力（Ｑ）に接続する。スキャンイネーブル信号ＳＥをスキャンレジスタ２′〜７′，１４′〜９′のスキャンイネーブル入力（ＳＥ）に接続する。テストクロック入力端子ＴＣＫをＯＲ回路３２の１つの入力に接続し、ＯＲ回路３２のもうひとつの入力をプロセッサ１０４の基本クロックＣＫに接続し、ＯＲ回路３２の出力をスキャンレジスタ２′〜７′，１４′〜９′のクロック入力（ＣＫ）に接続する。以上によって、図１に示す元の回路Ｃ０が図９に示す修正回路Ｃ３に修正される。
【００８８】
次に、ステップＳ２２において、対象故障をリストアップする。今回の例では、信号線１６が“１”に縮退している故障ＳＡ１の場合を考える。故障が複数ある場合は、以下の考え方／手順によるパターン作成を故障の数だけ繰り返す。
【００８９】
ステップＳ２３において、対象とする故障をテストするための条件を求める。今回の例では、組み合わせ回路１０２において、ＡＮＤ回路２９の入出力にかかわる信号線を対象とする。ＡＮＤ回路２９の入力側はレジスタ１、スキャンレジスタ２′，３′，４′の出力の信号線１５〜１８であり、出力側はスキャンレジスタ１０′の信号線２４である。そして、信号線１６が“１”に縮退していることをテストするためのテスト条件を求める。そのテスト条件は、
レジスタ１の出力の信号線１５　………“１”
レジスタ２′の出力の信号線１６　……“０”
レジスタ３′の出力の信号線１７　……“１”
レジスタ４′の出力の信号線１８　……“１”
である。
【００９０】
ステップＳ２４において、プログラムでプロセッサ１０４を動作させて、または集積回路端子からの入力でテスト用データの設定入力ができるレジスタについては、プログラムまたは集積回路端子を用いてテスト用データを設定入力する。今回の例では、レジスタ１に対してプログラムによりテスト用データを設定入力するようなパターンとする。
【００９１】
次に、ステップＳ２５において、プログラムでプロセッサ１０４を動作させて、または集積回路端子からの入力でテスト用データの設定ができないレジスタについては、スキャンチェーンで値を設定入力する。今回の例では、スキャンレジスタ２′，３′，４′をスキャンチェーンでテスト用データを設定入力するパターンとする。以上でテスト条件を満たすようなパターンとなる。
【００９２】
テスト条件が満たされた後、結果を観測するため、ステップＳ２６において、プログラムでプロセッサ１０４を動作させて、または集積回路端子からの出力でテスト用データの観測ができないレジスタについては、スキャンチェーンでテスト用データを観測する。今回の例では、スキャンレジスタ１０′の値をスキャンチェーンで観測する。すなわち、スキャンレジスタ９′にシフトした上で、データ出力端子ＴＤＯから読み出す。
【００９３】
次に、ステップＳ２７において、プログラムでプロセッサ１０４を動作させて、または集積回路端子からの出力でテスト用データの観測ができるレジスタについては、プログラムまたは集積回路端子を用いてテスト用データを観測する。今回の例では、本来必要無いが、例えば、レジスタ８の値などをプログラムでプロセッサ１０４を動作させて観測する。
【００９４】
図１１は図９に示す修正回路Ｃ３の動作を説明するタイミングチャートである。図５の場合と同じ要素と、書き込み制御信号ＷＥ２および読み出し制御信号ＲＥ１が示されている。
【００９５】
時刻Ｔ１から時刻Ｔ２にかけては、スキャン動作でなく、通常の動作モードにおいて、プログラムまたは集積回路端子で制御できるレジスタに対してテスト用データの設定入力を行う。今回の例ではプロセッサ１０４を動作させてレジスタ１に“１”を設定入力する。すなわち、時刻Ｔ１において、プロセッサ１０４はバス１０５に対して、レジスタ１を示すアドレスとレジスタ１に書き込むデータ“１”を出力する。
【００９６】
時刻Ｔ２において、基本クロックＣＫの立ち上がりタイミングで、レジスタ１に“１”が書き込まれる。
【００９７】
時刻Ｔ３から時刻Ｔ５にかけてはスキャン動作を行って、スキャンレジスタ２′，３′，４′にテスト用データの設定入力を行う。スキャン動作にするために、時刻Ｔ２の後半からスキャンイネーブル信号ＳＥを“１”にし、プロセッサ１０４からの基本クロックＣＫを停止する一方、テストクロック入力端子ＴＣＫからテストクロックを供給する。
【００９８】
時刻Ｔ２の後半からテストデータ入力端子ＴＤＩを“１”にする。これは、最終的にスキャンレジスタ４′に設定入力すべき値である。
【００９９】
時刻Ｔ３において、テストクロック入力端子ＴＣＫの立ち上がりタイミングでスキャンレジスタ２′にテストデータ入力端子ＴＤＩの値が取り込まれる。
【０１００】
時刻Ｔ３の後半からテストデータ入力端子ＴＤＩを“１”にする。これは、最終的にスキャンレジスタ３′に設定入力すべき値である。
【０１０１】
時刻Ｔ４において、テストクロック入力端子ＴＣＫの立ち上がりタイミングでスキャンレジスタ２′の値がスキャンレジスタ３′に取り込まれ、スキャンレジスタ２′にテストデータ入力端子ＴＤＩの値が取り込まれる。
【０１０２】
時刻Ｔ４の後半からテストデータ入力端子ＴＤＩを“０”にする。これは、最終的にスキャンレジスタ２′に設定入力すべき値である。
【０１０３】
時刻Ｔ５において、テストクロック入力端子ＴＣＫの立ち上がりタイミングでスキャンレジスタ３′の値がスキャンレジスタ４′に取り込まれ、スキャンレジスタ２′の値がスキャンレジスタ３′に取り込まれ、スキャンレジスタ２′にテストデータ入力端子ＴＤＩの値が取り込まれる。時刻Ｔ５の状態でテスト状態となる。すなわち、レジスタ１，２′，３′，４′にデータ“１”，“０”，“１”，“１”が設定入力される。
【０１０４】
時刻Ｔ５の後半からスキャンイネーブル信号ＳＥを“０”にする。
【０１０５】
時刻Ｔ６において、基本クロックＣＫを１発動作させ、テスト状態でのＡＮＤ回路２９の出力をスキャンレジスタ１０′に取り込む。スキャンレジスタ１０′の値をスキャンチェーンによりテストデータ出力端子ＴＤＯに読み出すため、時刻Ｔ６の後半からスキャンイネーブル信号ＳＥを“１”にし、時刻Ｔ７において、テストクロック入力端子ＴＣＫを１発動作させ、スキャンレジスタ１０′の値をスキャンレジスタ９′に取り込む。スキャンレジスタ９′のデータ出力（Ｑ）からテストデータ出力端子ＴＤＯに出力され、その値を観測することができる。
【０１０６】
以上により信号線１６が“１”に縮退している故障ＳＡ１を検出することができる。
【０１０７】
今回の例では本来必要無いが、プログラムでプロセッサ１０４を動作させてレジスタ８を観測する場合は、時刻Ｔ７の後半からスキャンイネーブル信号ＳＥを“０”にするとともに、、バス１０５のアドレス部分にレジスタ８を指すアドレスを載せる。時刻Ｔ８に基本クロックＣＫを動作させ、レジスタ８の値をバス１０５のデータ部分に読み出し観測する。
【０１０８】
レジスタ１〜１４のすべてをスキャンレジスタに置き換えるフルスキャンテストに比べて、本実施の形態では、プロセッサ１０４から直接制御／観測可能なレジスタ１，８についてはそのままとし、直接制御／観測が不可能なレジスタ２〜７，９〜１４に限ってスキャンレジスタと置き換えるようにしたので、チップ面積の増加を抑制することができる。また、レジスタ群が並列に動作している通常の動作状態（プロセッサが動作している状態）を利用して、テスト条件を作成するとともに、スキャンチェーンの長さをなるべく短いものにしていることから、より短いテスト時間で未検出の故障を捕捉することができる。
【０１０９】
以上、３つの実施の形態について説明したが、実施の形態１と実施の形態２との組み合わせ、実施の形態２と実施の形態３との組み合わせ、実施の形態１と実施の形態３との組み合わせ、実施の形態１と実施の形態２と実施の形態３との組み合わせがある。
【０１１０】
【発明の効果】
本発明によれば、従来方式のすべてのレジスタをスキャンレジスタに置き換えるフルスキャンテストとは異なり、未検出故障に対応するレジスタのみをスキャンレジスタに置き換えるだけ、あるいは、セット付きレジスタ・リセット付きレジスタとスキャンレジスタとに置き換えるだけである。あるいは、搭載プロセッサまたは集積回路端子から直接に制御／観測できないレジスタのみをスキャンレジスタに置き換えるだけである。このようなパーシャルスキャンテスト方式を採用しているので、フルスキャンテスト方式に比べて、スキャンレジスタに置き換えるべきレジスタの数を少なくすることができ、チップ面積の増大を抑制できる。そして、一部のテストは通常の基本クロックのもとで実行でき、高速処理が可能である。
【０１１１】
セット付きレジスタまたはリセット付きレジスタとすれば、プロセッサまたは集積回路端子からの制御性が向上する。
【図面の簡単な説明】
【図１】本発明の実施の形態１〜３に共通のテスト容易化設計を行う前の元の回路を示す回路図
【図２】本発明の実施の形態１におけるテスト容易化のために元の回路に対して修正を行った後の修正回路を示す回路図
【図３】実施の形態１における修正回路で使用されたスキャンレジスタの構成を示すレジスタ構成図とその等価回路の回路図
【図４】実施の形態１における修正回路の作成とテストパターンの作成を含むテスト動作を示すフローチャート
【図５】実施の形態１における修正回路の動作を説明するタイミングチャート
【図６】本発明の実施の形態２におけるテスト容易化のために元の回路に対して修正を行った後の修正回路を示す回路図
【図７】実施の形態２における修正回路の作成とテストパターンの作成を含むテスト動作を示すフローチャート
【図８】実施の形態２における修正回路の動作を説明するタイミングチャート
【図９】本発明の実施の形態３におけるテスト容易化のために元の回路に対して修正を行った後の修正回路を示す回路図
【図１０】実施の形態３における修正回路の作成とテストパターンの作成を含むテスト動作を示すフローチャート
【図１１】実施の形態３における修正回路の動作を説明するタイミングチャート
【図１２】従来の集積回路テスト方法の構成図
【符号の説明】
Ｃ０　元の回路
Ｃ１，Ｃ２，Ｃ３　修正回路
１〜１４　レジスタ（Ｄフリップフロップ）
１，８　プロセッサから直接制御可能なレジスタ
２〜７　プロセッサから直接制御できないレジスタ
９〜１４　プロセッサから直接制御できないレジスタ
２　スキャンレジスタ、リセット付きレジスタ
１０　スキャンレジスタ
２９　ＡＮＤ回路
３０　セレクタ
３１　トライステートバッファ（読み出し制御回路）
３２　ＯＲ回路
１０１，１０２，１０３　組み合わせ回路
１０４　プロセッサ
１０５　バス
１０６　アドレスデコーダ
ＷＥ２　書き込み制御信号
ＲＥ１，ＲＥ３　読み出し制御信号
ＣＫ　基本クロック
ＴＤＩ　データ入力端子
ＴＤＯ　データ出力端子
ＴＣＫ　テストクロック入力端子
ＳＥ　スキャンイネーブル信号
【図１】
2004110265.tif 000003
【図２】
2004110265.tif 000004
【図３】
2004110265.tif 000005
【図４】
2004110265.tif 000006
【図５】
2004110265.tif 000007
【図６】
2004110265.tif 000008
【図７】
2004110265.tif 000009
【図８】
2004110265.tif 000010
【図９】
2004110265.tif 000011
【図１０】
2004110265.tif 000012
【図１１】
2004110265.tif 000013
【図１２】
2004110265.tif 000014