(57)【要約】      （修正有）【課題】低消費電力で精度の良いスキャンテストを提供する。【解決手段】一つ以上のスキャンチェイン２で共通して設けられ、各セグメントを駆動するための複数のクロック信号を生成するクロックゲーティング回路３と、内部回路の故障の影響が一つのセグメント内で伝搬され、かつ次の故障に対応するケアビットが対応するセグメントに設定されるように、クロック信号を生成する際に利用する制御信号を生成する制御信号生成部７３とを備える。前記クロックゲーティング回路は、前記制御信号に基づいて、前記内部回路の故障の影響をいずれかのセグメント内で伝搬させるべく該セグメントに前記クロック信号を供給し、かつ故障を顕在化させるためのケアビットを対応するセグメントに取り込むべく該セグメントに前記クロック信号を供給し、かつ、前記ケアビットの設定と前記故障の影響の取り出しに関与しないセグメントへの前記クロック信号の供給を停止する。【選択図】図１
2012181138.tif 000002
【特許請求の範囲】
【請求項１】
内部回路に存在するフリップフロップを直列接続した一つ以上のスキャンチェインを備えた半導体集積回路であって、
前記一つ以上のスキャンチェインのそれぞれは、個別にクロック信号のタイミングを制御可能な複数のセグメントに分かれており、
前記一つ以上のスキャンチェインで共通して設けられ、前記セグメントごとに各セグメントを駆動するための複数のクロック信号を生成するクロックゲーティング回路と、
前記内部回路の故障の影響が一つのセグメント内で伝搬され、かつ次の故障に対応するケアビットが対応するセグメントに設定されるように、前記クロックゲーティング回路が前記クロック信号を生成する際に利用する制御信号を生成するセグメント制御信号生成部と、を備え、
前記クロックゲーティング回路は、前記制御信号に基づいて、前記内部回路の故障の影響をいずれかのセグメント内で伝搬させるべく該セグメントに前記クロック信号を供給し、かつ故障を顕在化させるためのケアビットを対応するセグメントに取り込むべく該セグメントに前記クロック信号を供給し、かつ、前記ケアビットの設定と前記故障の影響の取り出しに関与しないセグメントへの前記クロック信号の供給を停止することを特徴とする半導体集積回路。
【請求項２】
前記スキャンチェイン、前記クロックゲーティング回路および前記セグメント制御信号生成部のそれぞれに入力される入力信号に対応する疑似乱数信号を生成する疑似乱数生成器と、
前記疑似乱数信号を前記入力信号に変換する解凍器と、
前記スキャンチェインの出力信号の数を圧縮する第１圧縮器と、
前記圧縮器で圧縮した信号の数をさらに圧縮する第２圧縮器と、を備え、
前記疑似乱数生成器は、前記制御信号生成部が生成する前記制御信号に関連のある前記疑似乱数信号を生成することを特徴とする請求項１に記載の半導体集積回路。
【請求項３】
回路内に存在するフリップフロップを直列接続した一つ以上のスキャンチェインと、前記一つ以上のスキャンチェインで共通して設けられ、前記フリップフロップを駆動するためのクロック信号を生成するクロックゲーティング回路と、を備え、前記一つ以上のスキャンチェインのそれぞれは、複数のセグメントに分かれており、各セグメントを個別に駆動可能な半導体集積回路を設計する設計装置であって、
前記半導体集積回路内のすべてのノードについて、該ノードの故障を顕在化させるために必要なケアビットを含むテストパターンを生成するテストパターン生成部と、
前記半導体集積回路内の故障の影響がいずれかのセグメント内で伝搬し、かつ前記ケアビットが対応するセグメントに取り込まれるように、前記クロックゲーティング回路が前記クロック信号を生成するタイミングを制御するための制御信号を生成して前記半導体集積回路に供給する制御信号生成部と、
前記スキャンチェインから出力された故障の影響を取得して、テストパターンの検証を行うパターン検証部と、を備えることを特徴とする設計装置。
【請求項４】
前記制御信号生成部は、個々の前記スキャンチェイン内の前記複数のセグメントのうち、同時に駆動可能なセグメントの割合を規定した活性化率を超えないように、前記制御信号を生成することを特徴とする請求項３に記載の設計装置。
【請求項５】
前記一つ以上のスキャンチェインのそれぞれについて、前記故障の影響が対応するセグメントから出力されるまでに該セグメントに入力される前記クロック信号の数と、前記ケアビットを対応するセグメントに設定するまでに該セグメントに入力される前記クロック信号の数と、の和が最小になるように、前記複数のセグメントの接続順序を調整するテスト容易化部を備え、
前記テストパターン生成部は、前記テスト容易化部で接続順序が調整された前記複数のセグメントに付与される前記テストパターンを生成することを特徴とする請求項３または４に記載の設計装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、スキャンチェインにより回路内の故障の有無を検証可能な半導体集積回路、設計装置および設計方法に関する。
【背景技術】
【０００２】
近年の低消費電力型の半導体集積回路は、低消費電力技術を利用してシステム全体が低消費電力で動作するように設計されている。低消費電力技術の代表として、クロックゲーティング技術がある。クロックゲーティング技術は、システム動作で利用しないブロックのレジスタのクロックを止めることで、レジスタとその先に接続される組み合わせ回路で発生する消費電力を削減できる技術である。その際、レジスタに繋がるクロック信号線にクロックゲーティング回路を接続して、この回路に入力される制御信号により、クロックゲーティング回路からクロック信号が出力されないようにする。
【０００３】
通常、低消費電力の半導体集積回路は、通常のシステム動作時とテスト動作時によってクロック信号の制御が異なる。システム動作時は、半導体集積回路内のクロック制御回路からの信号がクロックゲーティング回路に入力されて、同回路から必要以上にクロック信号が出力されないようにして、消費する電力が抑えられる。しかし、テスト時にはクロックゲーティング回路から常にクロック信号が出力されるように設計されているため、システム動作時に比べて、消費電力が増大するおそれがある。
【０００４】
ところで、半導体回路をテストするために通常使われる手法として、スキャンテスト手法と圧縮スキャンテスト手法とがある。
【０００５】
スキャンテストは、半導体回路に外部スキャン入力端子と外部スキャン出力端子を備えておき、これら端子間に、半導体回路内のフリップフロップ（スキャンレジスタ）を直列に接続した一つ以上のスキャンチェインを接続して、スキャンチェインの信号伝搬を観察することで行われる。シミュレータ等の外部テスト装置から供給されるテストデータは、外部スキャン入力端子からスキャンチェインに入力されて、順次シフトされて、スキャンチェイン内の各スキャンレジスタに設定される。スキャンレジスタに設定されたテストデータは、システムクロックにより順次シフトされて、外部スキャン出力端子を介してテスト装置に入力される。
【０００６】
圧縮スキャンテストは、外部スキャン入力端子側にデータ展開回路を、外部スキャン出力端子側にデータ圧縮回路を備え、これらデータ展開回路とデータ圧縮回路の間に、多数のスキャンチェインを接続している。圧縮スキャンテストでは、テスト用の外部入出力端子の本数を削減できるという特徴を有する。
【０００７】
スキャンテストと圧縮スキャンテストの双方とも、外部スキャン入力端子から外部スキャン出力端子までデータを順次シフトするとき、スキャンパス上の全てのスキャンレジスタにクロック信号を常に入力するため、スキャンレジスタとスキャンレジスタに繋がる組み合わせ論理が常に活性化された状態になる。したがって、電源電圧が急激に降下するＩＲドロップや、設計時の消費電力の制約を超える電力を消費する動作が発生し、半導体集積回路が正常に動作しないケースが起こりうる。この結果、システム動作では正常に動作するチップがテスト中は正常に動作しないケースが起こり、必定以上に不良品と判定してしまうOver Killが発生するという問題がある。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−５１８４０５号公報
【特許文献２】特開２０１０−６０２８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明の実施形態は、低消費電力で精度よくスキャンテストを行うことができる半導体集積回路、設計装置および設計方法を提供するものである。
【課題を解決するための手段】
【００１０】
本実施形態は、内部回路に存在するフリップフロップを直列接続した一つ以上のスキャンチェインを備えた半導体集積回路に関する。半導体集積回路は、前記一つ以上のスキャンチェインのそれぞれは、個別にクロック信号のタイミングを制御可能な複数のセグメントに分かれている。半導体集積回路は、前記一つ以上のスキャンチェインで共通して設けられ、前記セグメントごとに各セグメントを駆動するための複数のクロック信号を生成するクロックゲーティング回路と、前記内部回路の故障の影響が一つのセグメント内で伝搬され、かつ次の故障に対応する前記ケアビットが対応するセグメントに設定されるように、前記クロックゲーティング回路が前記クロック信号を生成する際に利用する制御信号を生成するセグメント制御信号生成部と、を備える。前記クロックゲーティング回路は、前記制御信号に基づいて、前記内部回路の故障の影響をいずれかのセグメント内で伝搬させるべく該セグメントに前記クロック信号を供給し、かつ故障を顕在化させるためのケアビットを対応するセグメントに取り込むべく該セグメントに前記クロック信号を供給し、かつ、前記ケアビットの設定と前記故障の影響の取り出しに関与しないセグメントへの前記クロック信号の供給を停止する
【図面の簡単な説明】
【００１１】
【図１】本実施形態に係る半導体集積回路１の回路図。
【図２】クロックゲーティング回路３の内部構成の一例を示す回路図。
【図３】セグメント制御回路５の内部構成の一例を示す回路図。
【図４】図３のＰＲＰＧ回路１４の内部構成の一例を示す回路図。
【図５】設計装置７が行うテストパターンの生成処理の一例を示すフローチャート。
【図６】本実施形態の故障検出処理の概略を説明する図。
【図７】半導体集積回路１内の故障の影響Ｄをセグメントから出力しつつ、次の故障を顕在化するためのケアビットをセグメントに設定する処理動作を説明する図。
【図８】第２の実施形態における、半導体集積回路１内の故障の影響Ｄをセグメントから出力しつつ、次の故障を顕在化するためのケアビットをセグメントに設定する処理動作を説明する図。
【図９】スキャンチェイン２内のセグメントの並び順を変更する例を示す図。
【図１０】第４の実施形態に係る半導体集積回路１の概略構成を示す回路図。
【図１１】第５の実施形態に係る半導体集積回路１の概略構成を示す回路図。
【発明を実施するための形態】
【００１２】
以下、図面を参照しながら、本発明の実施形態を説明する。
【００１３】
（実施形態の基本コンセプト）
まず、本実施形態の基本コンセプトについて説明する。半導体集積回路内には、数多くのフリップフロップが存在する。これらフリップフロップを直列接続してスキャンチェインを構成し、半導体集積回路にテストパターンを与えて動作させた結果の内部信号を、スキャンチェインで伝搬させて、外部に出力して検査する手法は、スキャンテストと呼ばれている。また、スキャンチェイン内の各フリップフロップは、スキャンレジスタと呼ばれている。
【００１４】
自動テストパターン生成器を用いてスキャンテストを行う場合、半導体集積回路内の故障を検出するために観測しなければならないスキャンレジスタは、スキャンチェイン中の一部のスキャンレジスタだけであり、すべてのスキャンレジスタの値を設定および観測する必要はない。すなわち、故障の影響Ｄを受け取るスキャンレジスタの値を観測するとともに、次の故障を顕在化するのに必要なケアビットをスキャンレジスタに設定すれば十分である。
【００１５】
ところが、スキャンチェインは、複数のスキャンレジスタを直列接続したシフトレジスタで構成されており、入力側から出力側に、順にデータをシフトしなければならないため、一部のスキャンレジスタのみにクロック信号を付与しても、正常なシフト動作は行えない。
【００１６】
そこで、本実施形態では、スキャンチェインを、複数のセグメントに分割して、各セグメントごとに個別にクロック信号を付与してシフト動作を行うか否かを選択できるようにした。すなわち、現在のスキャンテストには関係のないセグメントにはクロック信号を付与しないようにして、あるテストパターンを入力することにより顕在化された故障の影響Ｄを迅速に外部に取り出せるようにしつつ、次の故障を顕在化するために必要なケアビットを所望のセグメントに迅速に設定できるようにしたものである。
【００１７】
（具体的な実施形態）
図１は本実施形態に係る半導体集積回路１の回路図である。図１の半導体集積回路１は、一つ以上のスキャンチェイン２と、複数のクロックゲーティング回路３と、複数の制御信号選択回路４と、セグメント制御回路５と、ユーザ回路６とを備えている。半導体集積回路１の入出力端子は、図１に破線で示した設計装置７に接続されている。場合によっては、設計装置７は、複数の装置で構成される場合もありうるが、図１では一つのみを示している。
【００１８】
図１には、一つのスキャンチェイン２のみが図示されているが、複数のスキャンチェイン２を設けてもよい。複数のスキャンチェイン２を設ける場合は、各スキャンチェイン２ごとに、複数のクロックゲーティング回路３と複数の制御信号選択回路４とが設けられる。ただし、複数のスキャンチェイン２を設ける場合でも、セグメント制御回路５は一つだけ設けられる。すなわち、セグメント制御回路５は、すべてのスキャンチェイン２で共有される。
【００１９】
スキャンチェイン２は、スキャンテストのために、半導体集積回路１内のフリップフロップ（スキャンレジスタ）８を直列接続したものであり、半導体集積回路１内に１個または複数個設けられる。個々のスキャンチェイン２は、複数のセグメントに分かれており、各セグメントごとにクロックゲーティング回路３が設けられている。
【００２０】
スキャンチェイン２にはスキャンイネーブル端子Ｔ１が設けられている。スキャンイネーブル端子Ｔ１の信号論理を切り替えることで、スキャンチェイン２がシフト動作を行うか、あるいはパラレル入力データ９の取込み（キャプチャ）を行うかを切り替えることができる。パラレル入力データ９は、半導体集積回路１内の内部ノードの信号論理である。スキャンイネーブル端子Ｔ１の切替タイミングを制御することにより、半導体集積回路１にテストパターンを与えて動作させた任意の状態での内部ノードの信号論理を、任意のタイミングでスキャンレジスタ８に取り込むことができる。
【００２１】
この他、半導体集積回路１は、外部スキャン入力端子Ｔ２、外部クロック端子Ｔ３、外部制御信号切替端子Ｔ４、初期化端子Ｔ５、シード入力端子Ｔ６、およびホールド端子Ｔ７と、シフトアウト端子Ｔ８とを有する。これら各端子は、設計装置７に接続されている。
【００２２】
個々のクロックゲーティング回路３は、対応するセグメント内の各スキャンレジスタ８にクロック信号５４を供給するか否かを制御する。制御信号選択回路４は、外部制御信号切替端子Ｔ４の信号論理により、セグメント制御回路５で生成された信号と、ユーザ回路６で生成された信号とのいずれかを選択する。選択された信号は、クロックゲーティング回路３に入力されて、外部クロック信号５３に同期化され、上述したクロック信号５４が生成される。
【００２３】
ユーザ回路６は、半導体集積回路１の本来の機能を実現するための回路である。制御信号選択回路４は、半導体集積回路１を通常動作させる場合には、ユーザ回路６からの信号を選択する。すなわち、制御信号選択回路４は、スキャンテストを行う場合のみ、セグメント制御回路５で生成された信号を選択する。
【００２４】
図１の設計装置７は、半導体集積回路１の設計、テストパターン検証、およびテストパターンを用いた半導体集積回路１の動作検証を行うものである。設計装置７の処理動作は、後述する図５で説明するが、設計装置７の内部構成としては、例えば、テスト容易化部７１と、テストパターン生成部７２と、制御信号生成部７３と、パターン検証部７４とを有する。
【００２５】
図２はクロックゲーティング回路３の内部構成の一例を示す回路図である。図２のクロックゲーティング回路３は、セグメント制御回路５で生成されたゲーティング制御信号５１と、ユーザ回路６で生成された信号５２との論理和信号を生成するＯＲ回路１１と、ＯＲ回路１１の出力信号を外部クロック信号５３でラッチするラッチ回路１２と、ラッチ回路１２の出力信号と外部クロック信号５３との論理積信号を生成するＡＮＤ回路１３とを有する。ＯＲ回路１１の出力がロウであれば、ラッチ回路１２の出力とＡＮＤ回路１３の出力もロウになり、クロックゲーティング回路３はクロック信号５４を出力しなくなる。すなわち、対応するセグメントへのクロック信号５４の供給を停止したい場合は、セグメント制御回路５の出力信号とユーザ回路６の出力信号の双方ともロウレベルにしてＯＲ回路１１の出力信号をロウにすればよい。あるいは、外部クロック信号５３が停止した場合も、セグメントへのクロック信号５４の供給が停止される。
【００２６】
図１に示すように、セグメント制御回路５は、初期化信号５５と、ホールド信号５７と、シード入力信号５６とに基づいて、ゲーティング制御信号５１を生成する。初期化信号５５は初期化端子から、ホールド信号５７はホールド端子Ｔ７から、シード入力信号５６はシード入力端子Ｔ６からそれぞれ入力される。
【００２７】
図３はセグメント制御回路５の内部構成の一例を示す回路図である。図３のセグメント制御回路５は、３ビットのＰＲＰＧ（Pseudo Random Pattern Generation）回路１４と、ＰＲＰＧ回路１４の出力端子に接続される複数のＡＮＤ回路１５と、ＰＲＰＧ回路１４に供給するクロック信号５３を生成するクロックゲーティング回路１６とを有する。
【００２８】
ＰＲＰＧ回路１４は、シード入力信号５６を初期値として、クロックゲーティング回路１６から出力されたクロック信号６０に同期してシフト動作を行い、所定の周期で複数の疑似乱数を順繰りに繰り返し生成する。ＡＮＤ回路１５とクロックゲーティング回路１６にはホールド信号５７が入力される。ホールド信号５７が例えばハイの場合は、クロックゲーティング回路１６はクロック信号６０を出力しない。したがって、ＰＲＰＧ回路１４はシフト動作を行わずに、直前の疑似乱数を保持する。また、ＡＮＤ回路１５は、ＰＲＰＧ回路１４が保持している疑似乱数をそのまま出力する。一方、ホールド信号５７が例えばロウの場合は、クロックゲーティング回路１６は外部クロック信号５３に同期したクロック信号６０を出力する。したがって、ＰＲＰＧ回路１４はシフト動作を行い、新たな疑似乱数を生成する。ＡＮＤ回路１５は、ホールド信号５７がロウであれば、ＰＲＰＧ回路１４で生成された疑似乱数を出力せず、セグメント制御回路５の出力信号はロウ固定になる。
【００２９】
図４は図３のＰＲＰＧ回路１４の内部構成の一例を示す回路図であり、３ビットのシード入力信号５６に基づいて、３ビットの疑似乱数を生成する例を示している。図４のＰＲＰＧ回路１４は、リング状に接続される３つのフリップフロップ２１と、これらフリップフロップ２１の段間に接続されるマルチプレクサ２２およびＥＸＯＲ回路２３とを有する。ＰＲＰＧ回路１４は、所定の生成多項式に初期値（シード入力信号５６）を与えて、クロック信号６０に同期してシフト動作を行うことにより、疑似乱数を生成する。ＰＲＰＧ回路１４の内部構成は、生成多項式を回路化したものであり、生成多項式の種類が変われば、回路構成も変化する。
【００３０】
ＰＲＰＧ回路１４の生成多項式は予め既知であるため、初期値によって、各クロック周期ごとにどのような疑似乱数が生成されるかは、予め予測できる。したがって、初期値とクロック信号６０の数を調整することで、複数のクロックゲーティング回路３から出力されるクロック信号６０のタイミングを任意に制御することができる。したがって、ＰＲＰＧ回路１４を設けることで、スキャンチェイン２の各セグメントごとに、任意のクロックゲーティングを行うことが容易になる。
【００３１】
ここで、クロックゲーティングとは、スキャンチェイン２内の各セグメントごとに、クロック信号５４をどのようなタイミングで入力するかを任意に制御できることを意味する。
【００３２】
半導体集積回路１内には、ここでは一例として、複数のスキャンチェイン２が設けられる。本実施形態では、各スキャンチェイン２ごとに、複数のセグメントに分けて、各セグメントに与えるクロック信号５４のタイミングをセグメント制御回路５で制御する。以下では、説明の簡略化のために、一つのスキャンチェイン２についてのみ説明するが、他のスキャンチェイン２についても、同様の処理動作が行われる。
【００３３】
次に、図１の半導体集積回路１を設計する設計装置７について説明する。設計装置７は、与えられた設計情報に基づいて、図１の半導体集積回路１を設計し、その後に、設計した半導体集積回路１の動作検証を行う。動作検証を行うには、半導体集積回路１にテストパターンを与えて、動作シミュレーションを行う必要がある。動作シミュレーションを行う前段階として、テストパターンを生成して、生成したテストパターンが有効か否かを検証しなければならない。
【００３４】
図５は設計装置７が行うテストパターンの生成処理の一例を示すフローチャートである。このフローチャートは、設計装置７が図１に示すように、テストパターン生成部７２と、制御信号生成部７３と、パターン検証部７４とを有する場合の処理手順を示している。
【００３５】
まず、テストパターン生成部７２は、設計した半導体集積回路１の動作検証のためのテストパターンを生成する（ステップＳ１）。このテストパターンの中には、制御信号生成部７３が生成する各種の制御信号が含まれている。これら制御信号は、テストパターンを用いて半導体集積回路１の動作検証を行う際に、半導体集積回路１に入力されるものである。
【００３６】
次に、パターン検証部７４は、ステップＳ１で生成したテストパターンが半導体集積回路１の動作検証を行う上で有効か否かを判定するためのパターン検証を行う（ステップＳ２）。
【００３７】
次に、故障シミュレーションを行って、ステップＳ１で生成したテストパターンにより検出可能な故障数の割合を示す故障検出率を算出する（ステップＳ３）。故障検出率が低い場合には、ステップＳ１以降の処理を繰り返すことになる。故障検出率が高いテストパターンは、有効なテストパターンと判断されて、不図示の記憶装置に格納される。
【００３８】
以下、図５のフローチャートに従って故障シミュレーションを行うのに必要な、故障の影響Ｄの検出処理と、次の故障を顕在化するのに必要なケアビットをスキャンチェイン２に設定する処理とを詳述する。以下では、これらの処理をまとめて、故障検出処理と呼ぶ。
【００３９】
本実施形態では、設計装置７で設計した半導体集積回路１内のフリップフロップ８を直列接続して、一つ以上のスキャンチェイン２を生成する。また、各スキャンチェイン２ごとに、複数のセグメントに分けて、各セグメントごとにクロック信号５４を与えてシフト動作を行うか否かを切り替えるクロックゲーティングを行う。これにより、生成したテストパターンで顕在化した故障の影響Ｄをいずれかのセグメントから外部に出力する。
【００４０】
図６は本実施形態の故障検出処理の概略を説明する図である。図６は、半導体集積回路１内のフリップフロップ８を用いてＳＩ０からＳＯ０までのスキャンチェインｓｃ１と、ＳＩ１からＳＯ１までのスキャンチェインｓｃ２を生成する例を示している。スキャンチェインｓｃ１は、２つのセグメントｓｇ１，ｓｇ２を備えており、スキャンチェインｓｃ２は、１つのセグメントｓｇ３を備えている。
【００４１】
例えば、半導体集積回路１の組合せ回路１７内に故障ｆがあったとする。この場合、半導体集積回路１に所定のテストパターンを与えることで、セグメントｓｇ２内のレジスタと、セグメントｓｇ３内のレジスタに故障の影響Ｄが取り込まれる。セグメントｓｇ２，ｓｇ３に取り込まれた故障の影響Ｄは、これらセグメントにクロック信号５４を供給して、各セグメント内でシフトさせることで、外部に取り出すことができる。
【００４２】
なお、組合せ回路１７内に故障ｆがあっても、テストパターンの種類によっては、故障ｆの影響Ｄがセグメントｓｇ２，ｓｇ３に伝搬しない可能性がある。そこで、図５のステップＳ２では、故障ｆの影響Ｄが正しく伝搬するようなテストパターンであるか否かを検証して、ステップＳ３で故障検出率を算出する。
【００４３】
次に、図１の半導体集積回路１内の故障を検出する例について説明する。まず、図１の半導体集積回路１のスキャンイネーブル端子Ｔ１を例えばロウにして、各スキャンレジスタ８にパラレル入力データ９を取り込むモードに設定する。このとき、セグメント制御回路５内のＰＲＰＧ回路１４はホールド状態に設定される。
【００４４】
図７は、半導体集積回路１内の故障の影響Ｄを特定のセグメントから出力しつつ、次の故障を顕在化するためのケアビットを各セグメントに設定する処理動作を説明する図である。図７は、一つのスキャンチェイン２内に３つのセグメントｓｇ１〜ｓｇ３が存在する例を示している。上述したように、各セグメントは、個別にクロックゲーティングが可能であり、個別にシフト動作を行う。
【００４５】
ここで、故障の影響Ｄとは、テストパターン中のあるケアビットにより顕在化した故障値を指している。
【００４６】
設計装置７は、テストパターンを生成した段階で、どのノードから故障の影響Ｄが出力されるかを特定できる。そこで、設計装置７は、故障の影響Ｄを特定のセグメントに取り込むべく、セグメント制御回路５を制御する。例えば、図７（ａ）の例では、セグメントｓｇ２に故障の影響Ｄを取り込むべく、セグメントｓｇ２のみにクロック信号５４を与えるようにする。このとき、セグメントｓｇ２内の全スキャンレジスタ８にデータが取り込まれるが、故障の影響Ｄが取り込まれるのはそのうちの一つであり、他のスキャンレジスタ８に取り込まれたデータは故障検出には寄与しない。ただし、故障検出に寄与しないデータは無視すればよいため、全スキャンレジスタ８がデータを取り込んでも問題はない。
【００４７】
セグメントｓｇ２に故障の影響Ｄを取り込むためには、セグメント制御回路５内のＰＲＰＧ回路１４の３つのレジスタの値を「０１０」として、この値を保持するようにする。これにより、クロックゲーティング回路３は、セグメントｓｇ２のみに、クロック信号５４を供給する。
【００４８】
次に、図７（ｂ）に示すように、スキャンイネーブル端子Ｔ１をハイにして、スキャンレジスタ１０をシフトするモードに切り替える。また、セグメント制御回路５内のＰＲＰＧ回路１４にクロック信号６０を供給して疑似乱数を生成させ、セグメントｓｇ２とｓｇ３にクロック信号５４が供給されるようにする。
【００４９】
図７（ｂ）の例では、セグメントｓｇ２とｓｇ３に、それぞれ３サイクル分ずつクロック信号５４が供給された例を示している。これにより、セグメントｓｇ２に当初存在していた故障の影響Ｄは、セグメントｓｇ３までシフトされる。また、セグメントｓｇ２には、次の故障を顕在化するのに必要なケアビットが取り込まれる。
【００５０】
ケアビットは、図７の破線で示す値である。これらケアビットは、次の故障を顕在化するために必要となる値であり、故障の影響Ｄとともに、セグメントの外部に取り出す必要がある。故障検出率を求めるのに必要となるためである。
【００５１】
図７（ｂ）に示すように、セグメントｓｇ２とｓｇ３のみにクロック信号５４を供給するべく、セグメント制御回路５内のＰＲＰＧ回路１４の３つのレジスタの値を、上述した「０１０」から２サイクル分シフトさせて、「０１１」にする。この状態で、ＰＲＰＧ回路１４をホールド状態にして、クロックゲーティング回路３からセグメントｓｇ２とｓｇ３にそれぞれ３サイクル分ずつクロック信号５４を供給する。
【００５２】
次に、図７（ｃ）に示すように、セグメントｓｇ３に対して６つのクロック信号５４を供給して、セグメントｓｇ３に存在していた故障の影響Ｄをセグメントｓｇ３から出力（シフトアウト）する。セグメントｓｇ３のみにクロック信号５４を供給するべく、セグメント制御回路５内のＰＲＰＧ回路１４の３つのレジスタの値を、上述した「０１１」から４サイクル分シフトさせて、「００１」にする。この状態で、ＰＲＰＧ回路１４をホールド状態にして、クロックゲーティング回路３からセグメントｓｇ４に６つのクロック信号５４を供給する。
【００５３】
これにより、故障の影響Ｄがスキャンチェイン２から外部に出力され、この故障の影響Ｄを取得することで、故障の有無を判断できる。
【００５４】
図７（ｃ）の状態では、破線で示すように、３ビット分のケアビットがセグメントに取り込まれているが、次の故障顕在化のために取り込むべきケアビットがまだ残っている場合は、図７（ｄ）に示すように、残りのケアビットの取込みを行う。図７（ｄ）の例では、セグメントｓｇ１にケアビットを取り込む例を示している。この場合、ＰＲＰＧ回路１４の３つのレジスタの値を、「００１」から２サイクル分シフトさせて、「１００」にして、ＰＲＰＧ回路１４をホールド状態にする。そして、クロックゲーティング回路３からセグメントｓｇ１に対して１クロック分のクロック信号５４を供給する。
【００５５】
以上により、故障の影響Ｄをスキャンチェイン２から出力できるとともに、次の故障を顕在化するのに必要なケアビットを各セグメントに設定できる。したがって、以後、上述した処理動作を繰り返すことで、ケアビットをスキャンチェイン２に設定しつつ、設定したケアビットにより顕在化した故障の影響Ｄを出力できる。
【００５６】
本実施形態では、故障の影響Ｄの外部取り出しと次の故障顕在化のためのケアビット設定のために必要なセグメントのみにクロック信号５４を与えるため、必要最小限のセグメントのみを駆動して故障検出処理を行うことができ、スキャンテスト時の消費電力を大幅に削減できる。
【００５７】
（第２の実施形態）
スキャンチェイン２内の各セグメントには、複数のスキャンレジスタ８が直列接続されている。各セグメント内の複数のスキャンレジスタ８のそれぞれを同時に動作させる割合を活性化率と呼ぶが、この活性化率について制限を設ける場合がある。活性化率の制限がある場合は、その制限の範囲内の個数のスキャンレジスタ８しか同時に動作させることができない。
【００５８】
以下に説明する第２の実施形態は、各セグメント内のスキャンレジスタ８の活性化率に制限がある場合の故障検出処理を説明する。以下では、本実施形態との相違点を中心に説明する。
【００５９】
図８は、第２の実施形態における、半導体集積回路１内の故障の影響Ｄをセグメントから出力しつつ、次の故障を顕在化するためのケアビットをセグメントに設定する処理動作を説明する図である。図８では、スキャンレジスタ８の活性化率が５０％に制限されているものとする。図８のスキャンチェイン２には、合計１２個のスキャンレジスタ８が存在するため、活性化率が５０％であれば、同時に動作可能なスキャンレジスタ８は６個になる。
【００６０】
まず、図８（ａ）に示すように、セグメント制御回路５内のＰＲＰＧ回路１４の出力を「００１」にしてホールドさせ、クロックゲーティング回路３からセグメントｓｇ３のみに１サイクル分のクロック信号５４を与えて、故障の影響Ｄをセグメントｓｇ３に取り込む。
【００６１】
次に、図８（ｂ）に示すように、ＰＲＰＧ回路１４をホールド状態にしたまま、クロックゲーティング回路３からセグメントｓｇ３に、６サイクル分のクロック信号５４を与えて、故障の影響Ｄをセグメントｓｇ３から出力（シフトアウト）する。このとき、セグメントｓｇ１とｓｇ３の破線の丸で示した位置に、次の故障を顕在化するために必要なケアビットが存在するものとする。
【００６２】
図８（ｂ）の場合も、セグメントｓｇ３内のスキャンレジスタ８のみが動作しているため、活性化率は５０％である。
【００６３】
次に、図８（ｃ）に示すように、次の故障を顕在化するために必要なケアビットのうち、まだ各セグメントに取り込まれていないものを取り込むべく、セグメントｓｇ１とｓｇ２に1サイクル分ずつクロック信号５４を与える。このクロック信号５４を生成するべく、ＰＲＰＧ回路１４の３つのレジスタの値を「００１」から３サイクル分シフトさせて「１１０」にする。この状態でＰＲＰＧ回路１４をホールド状態にして、クロックゲーティング回路３からセグメントｓｇ１とｓｇ２にそれぞれ３サイクル分ずつクロック信号５４を供給する。
【００６４】
図８（ｃ）の場合は、セグメントｓｇ１，ｓｇ２内のスキャンレジスタ８のみが動作しているため、活性化率は５０％である。
【００６５】
このように、スキャンレジスタ８の活性化率に制限がある場合であっても、その制限の範囲内でセグメントを動作させることが可能であり、消費電力をより抑制しつつ、精度よく故障検出を行うことができる。
【００６６】
（第３の実施形態）
第１および第２の実施形態で説明したように、故障検出を行うには、テストパターンにより顕在化される故障の影響Ｄをセグメントの外部に取り出しつつ、次の故障を顕在化するためのケアビットを各セグメントに設定する必要がある。このとき、できるだけ少ないクロック数で故障の影響Ｄをセグメントの外部に取り出すのが望ましい。
【００６７】
そこで、以下に説明する第３の実施形態は、故障検出を行う際に、まず最初にセグメントの並び換えを行って、故障の影響Ｄをより少ないクロック数でセグメント内を伝搬させるようにしたことを特徴とする。この並び換えは、設計装置７内のテスト容易化部７１により行われる。
【００６８】
図９はスキャンチェイン２内のセグメントの並び順を変更する例を示す図である。図９（ａ）はセグメントの並び順を変更する前のスキャンチェイン２、図９（ｂ）は並び順を変更した後のスキャンチェイン２を示している。図９（ａ）の場合は、セグメントｓｇ２内に存在する故障の影響Ｄをスキャンチェイン２の出力端子ＳＯから出力するまでに、９サイクル分のクロック信号５４を入力する必要がある。これに対して、図９（ｂ）の場合は、故障の影響Ｄを含むセグメントをスキャンチェイン２の最終段のセグメントと入れ替えるため、故障の影響Ｄを出力端子ＳＯから出力するまでに、３サイクル分のクロック信号５４しか必要としない。これにより、クロック信号５４の入力数を大幅に削減でき、消費電力の削減が図れる。
【００６９】
なお、図９では、故障の影響Ｄの伝搬のしやすさを念頭に置いて、スキャンチェイン２内のセグメントの入れ替えを行ったが、シフト動作に大きな電力を消費する図２のクロックゲーティング回路３内のラッチ回路１２についても、スキャンチェイン２内の最終段側に配置するのが望ましい。
【００７０】
上述したテスト容易化部７１による入れ替え処理は、図５のフローチャートのステップＳ１の前に行うのが望ましい。すなわち、まず、スキャンチェイン２内のセグメントの入れ替え処理を行った後に、テストパターンの生成処理を行うことで、故障の影響Ｄをより少ないクロック数で伝搬させることが可能なテストパターンを生成できる。
【００７１】
このように、第３の実施形態では、故障の影響Ｄやシフト動作時の電力消費量を念頭に置いて、スキャンチェイン２内のセグメントの入れ替えを行った後にテストパターンを生成するため、故障の影響Ｄを外部に取り出すまでのクロック数を削減でき、消費電力の削減が図れる。
【００７２】
（第４の実施形態）
上述した第１〜第３の実施形態では、セグメント制御回路５内にＰＲＰＧ回路１４を設けて、スキャンレジスタ８内の各セグメントのクロックゲーティングを行ったが、ＰＲＰＧ回路１４を省略することも可能である。以下に説明する第４の実施形態は、セグメント制御回路５内からＰＲＰＧ回路１４を省略したことを特徴とする。
【００７３】
図１０は第４の実施形態に係る半導体集積回路１の概略構成を示す回路図である。図１０では、図１と共通する回路部品には同一の符号を付しており、以下では相違点を中心に説明する。
【００７４】
図１０の半導体集積回路１は、ＰＲＰＧ回路１４がない代わりに、各セグメントおよびクロックゲーティング回路３に対応して、ＡＮＤ回路３１と、フリップフロップ３２と、クロックゲーティング回路３３とを備えている。ＡＮＤ回路３１は、ホールド信号５７とシフト入力信号６１との論理積を出力する。シフト入力端子Ｔ９に入力されるシフト入力信号６１は、図１にはない信号であり、ＰＲＰＧ回路１４を規定サイクル分だけシフトさせた結果得られるビットパターンを、シフト入力端子Ｔ９を介して入力する信号である。すなわち、図１０の半導体集積回路１では、設計装置７側で疑似乱数を生成して、生成された疑似乱数をシフト入力信号６１としてシフト入力端子Ｔ９から入力する。このシフト入力信号６１は、フリップフロップ３２でシフトされて、対応するＡＮＤ回路３１に入力される。フリップフロップ３２は、クロックゲーティング回路３３からのクロック信号５８に同期してシフト動作を行う。
【００７５】
このようにすることで、図１０の半導体集積回路１の内部にＰＲＰＧ回路１４が不要となり、半導体集積回路１の内部構成を簡略化できる。図１０の半導体集積回路１を用いることで、図７と同様の処理動作を行うことができる。以下、図７を用いて、図１０の半導体集積回路１におけるテスト故障検出処理を説明する。
【００７６】
まず、図７（ａ）では、セグメントｓｇ２に故障の影響Ｄを取り込んでいる。この取込みを行うために、シフト入力端子から、「０１０」の３ビットからなるシフト入力信号６１をＡＮＤ回路３１に与えるとともに、ホールド端子Ｔ７からハイレベルのホールド信号５７を１サイクル分与える。これにより、クロックゲーティング回路３は、セグメントｓｇ２に対してのみ、１サイクル分のクロック信号５４を与え、故障の影響Ｄがセグメントｓｇ２に取り込まれる。
【００７７】
次に、図７（ｂ）では、セグメントｓｇ２とｓｇ３に３サイクル分ずつクロック信号５４を与えて、故障の影響Ｄのシフト動作を行っている。このシフト動作を行うために、シフト入力端子から「０１１」の３ビットからなるシフト入力信号６１をＡＮＤ回路３１に与えるともに、ホールド端子Ｔ７からハイレベルのホールド信号５７を３サイクル分与える。これにより、クロックゲーティング回路３は、セグメントｓｇ２とｓｇ３に対してのみ、３サイクル分のクロック信号５４を与えて、故障の影響Ｄをセグメントｓｇ２からｓｇ３にシフトする。
【００７８】
次に、図７（ｃ）では、セグメントｓｇ３に６サイクル分ずつクロック信号５４を与えて、故障の影響Ｄをセグメントｓｇ３から外部にシフトさせている。このシフト動作を行うために、シフト入力端子から「００１」の３ビットからなるシフト入力信号６１をＡＮＤ回路３１に与えるとともに、ホールド端子Ｔ７からハイレベルのホールド信号５７を６サイクル分与える。これにより、クロックゲーティング回路３は、セグメントｓｇ３に対してのみ、６サイクル分のクロック信号５４を与えて、故障の影響Ｄをセグメントｓｇ３から外部にシフトアウトする。
【００７９】
次に、図７（ｄ）では、セグメントｓｇ１に１サイクル分のクロック信号５４を与えて、次の故障を顕在化するためのケアビットをセグメントｓｇ１に取り込んでいる。この取込みを行うために、シフト入力端子から、「１００」の３ビットからなるシフト入力信号６１をＡＮＤ回路３１に与えるとともに、ホールド端子Ｔ７からハイベルのホールド信号５７を１サイクル分与える。これにより、クロックゲーティング回路３は、セグメントｓｇ１に対してのみ、１サイクル分のクロック信号５４を与えて、ケアビットをセグメントｓｇ１に取り込む。
【００８０】
このように、第４の実施形態では、セグメントｓｇ１〜ｓｇ３のクロック制御のためのゲーティング制御信号５１を、半導体集積回路１の外部から与えられるシフト入力信号６１を用いて生成するため、半導体集積回路１内に、ゲーティング制御信号５１を生成するためのＰＲＰＧ回路１４等を設けなくて済み、半導体集積回路１の内部構成を簡略化できる。
【００８１】
また、半導体集積回路１内にＰＲＰＧ回路１４を設けてゲーティング制御信号５１を生成する場合、ゲーティング制御信号５１が生成されるまでに要するＰＲＰＧ回路１４内のシフト回数がその都度変動するため、ゲーティング制御信号５１の生成時間にばらつきが生じてしまう。これに対して、本実施形態では、外部で生成したシフト入力信号６１を用いるため、半導体集積回路１内では、均一な時間で、迅速にゲーティング制御信号５１を生成できる。
【００８２】
（第５の実施形態）
以下に説明する第５の実施形態は、圧縮スキャンのために半導体集積回路１内に設けられているＰＲＰＧ回路３４を流用して、ゲーティング制御信号５１を生成するものである。
【００８３】
図１１は第５の実施形態に係る半導体集積回路１の概略構成を示す回路図である。図１１では、図１と共通する構成部分には同一符号を付しており、以下では相違点を中心に説明する。
【００８４】
図１１の半導体集積回路１は、スキャン入力側にＰＲＰＧ回路３４と解凍器（De-Compressor）３５とを有し、スキャン出力側に圧縮器（Compressor、第１圧縮器）３６とＭＩＳＲ（第２圧縮器）３７を有する。解凍器３５と圧縮器３６の間に、複数のスキャンレジスタ８が直列接続されたスキャンチェイン２が配置されている。図１１は、解凍器３５と圧縮器３６の間に二つのスキャンチェイン２を並列して配置した例を示しているが、解凍器３５と圧縮器３６の間に配置されるスキャンチェイン２の数には特に制限はない。
【００８５】
ＰＲＰＧ回路３４が生成した疑似乱数パターンは、解凍器３５により、スキャンチェイン２を制御するための制御信号やクロック信号５３に変換される。ＰＲＰＧ回路３４は、設計装置７から与えられるシード値を初期値として、所定の生成多項式に基づいて、所定の周期を持つ疑似乱数を生成する。このため、設計装置７は、予め、制御信号やクロック信号５３の動作タイミングを想定した上で、所望のシード値をＰＲＰＧ回路３４に与える。これにより、解凍器３５は、設計装置７が想定したタイミングを持つ制御信号とクロック信号５３を出力する。
【００８６】
本実施形態は、圧縮スキャン用に設けられるＰＲＰＧ回路３４を流用して、セグメント制御回路５がゲーティング制御信号５１を生成するのに必要な信号（以下、シフト入力信号６１）を生成する点に特徴がある。すなわち、本実施形態によれば、セグメント制御回路５内に、図３に示すような専用のＰＲＰＧ回路３４を設ける必要がなくなり、その代わりに、圧縮スキャン用のＰＲＰＧ回路３４を流用して、上述したシフト入力信号６１を生成して、セグメント制御回路５に入力する。
【００８７】
シフト入力信号６１を外部から入力する点では、図１０に示した半導体集積回路１と同じであり、したがって、図１１のセグメント制御回路５の内部構成は、図１０のセグメント制御回路５の内部構成に類似している。
【００８８】
以下では、図１１のセグメント制御回路５が図１０のセグメント制御回路５と異なる箇所を中心に説明する。上述したように、本実施形態では、圧縮スキャン用のＰＧＰＧ回路にて、ゲーティング制御信号生成用のシフト入力信号６１も生成する。これを実現するには、設計装置７がＰＲＰＧ回路３４にシード値を与える際に、ゲーティング制御信号５１の動作タイミングを予め想定して、解凍器３５が所望のシフト入力信号６１を出力できるように、シード値を調整してＰＲＰＧ回路３４に与える。
【００８９】
図１１のセグメント制御回路５は、図１０とほぼ同様に構成されているが、ＡＮＤ回路３１に、さらに別のＡＮＤ回路３８を接続している。このＡＮＤ回路３８は、信号６２により、ＰＲＰＧ回路３４で生成したゲーティング制御信号のシフト動作が完了するまで、スキャンチェイン２の各セグメントをホールド状態にするために設けられている。図１１の半導体集積回路１を用いることで、図７と同様の処理動作を行うことができる。
【００９０】
このように、第５の実施形態では、圧縮スキャン用のＰＲＰＧ回路３４を、ゲーティング制御信号生成用のシフト入力信号６１を生成するためにも流用するため、セグメント制御回路５内にＰＲＰＧ回路１４を設けなくて済み、セグメント制御回路５の内部構成を簡略化できる。
【００９１】
上述した実施形態で説明した設計装置の少なくとも一部は、ハードウェアで構成してもよいし、ソフトウェアで構成してもよい。ソフトウェアで構成する場合には、設計装置の少なくとも一部の機能を実現するプログラムをフレキシブルディスクやＣＤ−ＲＯＭ等の記録媒体に収納し、コンピュータに読み込ませて実行させてもよい。記録媒体は、磁気ディスクや光ディスク等の着脱可能なものに限定されず、ハードディスク装置やメモリなどの固定型の記録媒体でもよい。
【００９２】
また、設計装置の少なくとも一部の機能を実現するプログラムを、インターネット等の通信回線（無線通信も含む）を介して頒布してもよい。さらに、同プログラムを暗号化したり、変調をかけたり、圧縮した状態で、インターネット等の有線回線や無線回線を介して、あるいは記録媒体に収納して頒布してもよい。
【００９３】
上記の記載に基づいて、当業者であれば、本発明の追加の効果や種々の変形を想到できるかもしれない。したがって、本発明の態様は、上述した個々の実施形態には限定されない。特許請求の範囲に規定された内容およびその均等物から導き出される本発明の概念的な思想と趣旨を逸脱しない範囲で種々の追加、変更および部分的削除が可能である。
【符号の説明】
【００９４】
１  半導体集積回路、２  スキャンチェイン、３  クロックゲーティング回路、４  制御信号選択回路、５  セグメント制御回路、６  ユーザ回路、７  設計回路、７１  テスト容易化部、７２  テストパターン生成部、７３  制御信号生成部、７４  パターン検証部
【図１】
2012181138.tif 000003
【図２】
2012181138.tif 000004
【図３】
2012181138.tif 000005
【図４】
2012181138.tif 000006
【図５】
2012181138.tif 000007
【図６】
2012181138.tif 000008
【図７】
2012181138.tif 000009
【図８】
2012181138.tif 000010
【図９】
2012181138.tif 000011
【図１０】
2012181138.tif 000012
【図１１】
2012181138.tif 000013