(57)【要約】【課題】回路規模の小さい自己テスト回路を備えた半導体集積回路を提供する。【解決手段】  入力データを処理し、入力データよりランダム性の高い出力データを出力する被テスト回路１００と、被テスト回路１００の自己テスト動作時に、被テスト回路１００に入力する初期の入力データを保持する記憶部２１０と、被テスト回路１００が入力データを処理し、出力する出力データを被テスト回路１００の入力データとしてフィードバックするフィードバック部２２０と、フィードバック部２２０が被テスト回路１００の出力データを被テスト回路１００の入力データとしてフィードバックする回数を制御する制御部２３０と、被テスト回路１００が出力する出力データと期待値とを比較する比較部２４０と、を有する自己テスト回路。【選択図】  図１
2011075460.tif 000002
【特許請求の範囲】
【請求項１】
入力データを処理し、入力データよりランダム性の高い出力データを出力する被テスト回路と、
前記被テスト回路の自己テスト動作時に、前記被テスト回路に入力する初期の入力データを保持する記憶部と、前記被テスト回路が入力データを処理し、出力する出力データを前記被テスト回路の入力データとしてフィードバックするフィードバック部と、前記フィードバック部が前記被テスト回路の出力データを前記被テスト回路の入力データとしてフィードバックする回数を制御する制御部と、前記被テスト回路が出力する出力データと期待値とを比較する比較部と、を有する自己テスト回路と、
を備えることを特徴とする半導体集積回路。
【請求項２】
前記被テスト回路が、暗号コア回路であることを特徴とする請求項１記載の半導体集積回路。
【請求項３】
前記記憶部が組み合わせ回路で構成されるＲＯＭであることを特徴とする請求項１又は２記載の半導体集積回路。
【請求項４】
前記初期の入力データがｎビット（ｎ＝２５６の倍数）のオール０、又はオール１のデータであることを特徴とする請求項１乃至３いずれか１項に記載の半導体集積回路。
【請求項５】
前記自己テスト回路は、前記フィードバック部が前記被テスト回路の出力データを前記被テスト回路の入力データとしてフィードバックする回数をカウントするカウンター部をさらに備え、前記制御部は、前記カウンター部のカウント数に基づいて、前記フィードバック部が前記被テスト回路の出力データを前記被テスト回路の入力データとしてフィードバックする回数を制御することを特徴とする請求項１乃至４いずれか１項に記載の半導体集積回路。
【請求項６】
前記フィードバック部が、前記被テスト回路が出力する出力データを、前記被テスト回路の暗号鍵データの入力に対してもフィードバックすることを特徴とする請求項２乃至５いずれか１項に記載の半導体集積回路。
【請求項７】
前記被テスト回路が入力データを圧縮して出力する回路である場合において、
前記フィードバッグ部がフィードバックする被テスト回路の出力データと、前記記憶部が出力する前記初期の入力データとの排他的論理演算を行い、排他的論理演算結果を前記被テスト回路の入力データとして出力する排他的論理演算回路をさらに備えることを特徴とする請求項１乃至５いずれか１項に記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路に係り、特に、自己テスト回路を備えた半導体集積回路に関する。
【背景技術】
【０００２】
ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）のテスト法として、スキャンパステストが最もよく用いられている。スキャンパステストでは、スキャン設計された被テスト回路に対して、外部のＬＳＩテスタからテストベクタを入力し、それに対する出力をＬＳＩテスタにより測定、期待値と比較することにより被テスト回路のテストを行う。スキャンパステストは、被テスト回路であるＬＳＩの大規模化に伴い、テストベクタとテストピンの増大、また、高速テストに伴うテスタのコスト増大等の問題が生じている。さらに、ＬＳＩテスタにより被テスト回路内のデータを外部に読み出すため、被テスト回路が暗号回路等である場合には、暗号回路内部に保存されている秘密鍵等がスキャンパスを介して外部に読み出されてしまうおそれがある。
【０００３】
スキャンパステスト以外のＬＳＩのテスト法として、組み込み自己テスト（ＢＩＳＴ：Ｂｕｉｌｔ−ｉｎ  Ｓｅｌｆ  Ｔｅｓｔ）がある。ＢＩＳＴを実施する半導体集積回路は、スキャン設計された被テスト回路と、被テスト回路をテストするＬＳＩテスタの機能をもつ回路（自己テスト回路）を備え、自己テスト回路により、被テスト回路の簡易なテストを行うことが可能である（例えば、特許文献１参照）。これにより、ＢＩＳＴでは、スキャンパステストが有する上述の問題を解決することが可能である。
【０００４】
ＢＩＳＴでは、被テスト回路に含まれる故障を自己テスト回路で検出する確率（故障検出率）は、テストパターンのランダム性に依存する。つまり、ランダム性の高いテストパターンを用いることにより、故障検出率を高くすることが可能である。しかし、通常、自己テスト回路でテストパターン発生回路として用いられるｎ段のＬＦＳＲ（Ｌｉｎｅａｒ  Ｆｅｅｄｂａｃｋ  Ｓｈｉｆｔ  Ｒｅｇｉｓｔｅｒｓ）では、ＬＦＳＲの性質上、発生させるテストパターンは２ｎ−１の周期を持つ擬似ランダムテストパターンとなってしまう。このため、被テスト回路内部の故障を検出するのに必要なテストパターンが生成されない場合がある。また、ＢＩＳＴを実施する半導体集積回路では、通常、テストパターン発生回路としてＬＦＳＲをチップ上に実装するため、チップの回路規模が増大するという課題がある。また、ＢＩＳＴを実施する半導体集積回路では、ＬＳＩと同様に、被テスト回路をスキャン設計するため、スキャンパスによる回路規模増大の課題がある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００７−２４０４１４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
本発明は、回路規模の小さい自己テスト回路を備えた半導体集積回路を提供することを目的とする。
【課題を解決するための手段】
【０００７】
本発明の一態様の半導体集積回路は、入力データを処理し、入力データよりランダム性の高い出力データを出力する被テスト回路と、前記被テスト回路の自己テスト動作時に、前記被テスト回路に入力する初期の入力データを保持する記憶部と、前記被テスト回路が入力データを処理し、出力する出力データを前記被テスト回路の入力データとしてフィードバックするフィードバック部と、前記フィードバック部が前記被テスト回路の出力データを前記被テスト回路の入力データとしてフィードバックする回数を制御する制御部と、前記被テスト回路が出力する出力データと期待値とを比較する比較部と、を有する自己テスト回路と、を備える。
【発明の効果】
【０００８】
本発明によれば、回路規模の小さい自己テスト回路を備えた半導体集積回路を提供することを目的と可能とする。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施例１に係る半導体集積回路が備える被テスト回路と自己テスト回路の概略構成を示すブロック図である。
【図２】本発明の実施例１に係る半導体集積回路が備える被テスト回路と自己テスト回路の構成を示すブロック図である。
【図３】暗号コア回路が有する暗号化アルゴリズムの一態様であるＦｅｉｓｔｅｌ構造について説明する図である。
【図４】記憶部の一態様を示す回路である。
【図５】ＢＩＳＴ実施時のタイミングチャートである。
【図６】集積回路のゲートネットに対してシミュレーションによりＢＩＳＴを行った結果を示す表である。
【図７】本発明の実施例２に係る半導体集積回路が備える被テスト回路と自己テスト回路の構成を示すブロック図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施例について、図面を参照しながら説明する。
【実施例１】
【００１１】
図１を参照して、本実施例の半導体集積回路が備える被テスト回路と自己テスト回路の概略構成を説明する。図１は、本発明の実施例１に係る半導体集積回路が備える被テスト回路と自己テスト回路の概略構成を示すブロック図である。
【００１２】
本実施例の半導体集積回路１は、被テスト回路１００と、被テスト回路１００のＢＩＳＴを実施するための自己テスト回路２００を備える。自己テスト回路２００は、記憶部２１０と、フィードバック部２２０と、制御部２３０と、比較部２４０とを有する。なお、半導体集積回路１は、被テスト回路１００、自己テスト回路２００以外の機能を有する集積回路を備えていてもよい。
【００１３】
ＢＩＳＴ実施時には、まず、記憶部２１０から初期テストパターンＤＡＴＡ＿ＩＮＩＴＩＡＬが入力データＤＡＴＡ＿ＩＮとして被テスト回路１００へ入力する。次に、被テスト回路１００が、入力データＤＡＴＡ＿ＩＮ（初期テストパターンＤＡＴＡ＿ＩＮＩＴＩＡＬ）を処理（演算）し、入力データＤＡＴＡ＿ＩＮ（初期テストパターンＤＡＴＡ＿ＩＮＩＴＩＡＬ）よりランダム性の高い出力データＤＡＴＡ＿ＯＵＴを出力する。次に、フィードバック部２２０は、被テスト回路１００が出力する出力データＤＡＴＡ＿ＯＵＴを、被テスト回路１００の入力データＤＡＴＡ＿ＩＮとしてフィードバックする。次に、被テスト回路１００は、入力データＤＡＴＡ＿ＩＮを処理（演算）し、入力データＤＡＴＡ＿ＩＮよりランダム性の高い出力データＤＡＴＡ＿ＯＵＴを出力する。以下、同様に、フィードバック部２２０が被テスト回路１００の出力する出力データＤＡＴＡ＿ＯＵＴを被テスト回路の入力データＤＡＴＡ＿ＩＮとしてフィードバック（フィードバック動作）し、被テスト回路１００が入力データＤＡＴＡ＿ＩＮを処理（演算）し、入力データＤＡＴＡ＿ＩＮよりランダム性の高い出力データＤＡＴＡ＿ＯＵＴを出力する動作を繰り返す。制御部２３０は、フィードバック動作の回数（フィードバック回数）を制御する。フィードバック回数が設定された回数に達すると、被テスト回路１００の出力する出力データＤＡＴＡ＿ＯＵＴと、期待値とを、比較器２４０が比較する。この出力データと期待値とが一致しない場合には、被テスト回路に故障が含まれることが検出される。
【００１４】
このように、本実施例では、フィードバック動作を繰り返すことにより、入力データＤＡＴＡ＿ＩＮをランダム性の高いデータとすることが可能である。ＢＩＳＴでは、被テスト回路に含まれる故障を検出する確率（故障検出率）は、被テスト回路に入力するデータのランダム性に依存する。このため、本実施例では、ＢＩＳＴ実施による故障検出率を高めることが可能である。さらに、フィードバック動作を繰り返すことにより、入力データＤＡＴＡ＿ＩＮのランダム性を高めることができるため、初期入力データＤＡＴＡ＿ＩＮＩＴＩＡＬをランダム性の低い単純なデータとすることができる。このため、従来のように擬似ランダムテストパターンを発生させるＬＦＳＲを備える必要がない。これにより、初期入力データＤＡＴＡ＿ＩＮＩＴＩＡＬを格納する記憶部２１０の構成を簡略化することが可能となり、実装面積を小さくすることが可能である。さらに、入力データＤＡＴＡ＿ＩＮＩＴＩＡＬをランダム化することにより、ＢＩＳＴ実施時の被テスト回路１００を活性化できるため、被テスト回路１００をスキャン設計しなくてもよい。これにより、被テスト回路１００の回路規模を縮小することが可能となる。
【００１５】
次に、図２を参照して、本実施例の半導体集積回路が備える被テスト回路と自己テストテスト回路の構成をより詳細に説明する。図２は、本発明の実施例１に係る半導体集積回路が備える被テスト回路と自己テスト回路の構成を示すブロック図である。図２において、図１に示す構成部と同一又は同等のものについては、同一符号を付して示している。
【００１６】
被テスト回路１００は、前述したように、被テスト回路１００に入力する入力データＤＡＴＡ＿ＩＮを処理（演算）し、入力データＤＡＴＡ＿ＩＮよりランダム性の高い出力データＤＡＴＡ＿ＯＵＴを出力する。入力データＤＡＴＡ＿ＩＮよりランダム性の高い出力データＤＡＴＡ＿ＯＵＴを出力する被テスト回路１００として、図２では、暗号コア回路を想定する。被テスト回路（暗号コア回路）１００には、入力データＤＡＴＡ＿ＩＮと、暗号鍵データＫＥＹ＿ＤＡＴＡが入力する。被テスト回路（暗号コア回路）１００は、入力データＤＡＴＡ＿ＩＮと、暗号鍵データＫＥＹ＿ＤＡＴＡを攪拌し、ランダム性の高い出力データＤＡＴＡ＿ＯＵＴを出力する。暗号コア回路が入力データＤＡＴＡ＿ＩＮよりランダム性の高い出力データＤＡＴＡ＿ＯＵＴを出力する理由については後述する。
【００１７】
自己テスト回路２００は、前述したように、記憶部２１０と、フィードバック部２２０と、制御部２３０と、比較部２４０を有する。さらに、自己テスト回路２００は、マルチプレクサ２５０、２６０を備え、さらに、カウンター部２７０を備えてもよい。
【００１８】
記憶部２１０は、被テスト回路１００のＢＩＳＴを実施時に、被テスト回路に入力させる初期の入力データ（「初期テストパターン」と称する）ＤＡＴＡ＿ＩＮＩＴＩＡＬを格納する。また、記憶部２１０は、比較部２４０で参照される期待値ＥＸＰＥＣＴＡＴＩＯＮを格納する。また、記憶部２１０は、被テスト回路１００（暗号コア回路）に入力する暗号鍵データＫＥＹ＿ＤＡＴＡを格納する。初期テストパターンＤＡＴＡ＿ＩＮＩＴＩＡＬは、例えば、１２８ビットのオール“０”又はオール“１”の単純なデータでよい。また、初期テストパターンＤＡＴＡ＿ＩＮＩＴＩＡＬを、暗号鍵データＫＥＹ＿ＤＡＴＡとして、共用することも可能である。このため、記憶部２１０としてコンパイルドセルからなるＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）を用いる必要がなく、例えば、組み合わせ回路から構成されるＲＯＭ等で構成することが可能である。これにより、記憶部２１０は、回路規模が小さく、かつ、実装コストが低い回路により実装できる。なお、本実施例では、初期テストパターンと、期待値とを、記憶部２１０が一括して格納しているが、記憶部を２つ設け、初期テストパターンと、期待値とを、別々に格納してもよい。
【００１９】
フィードバック部２２０は、被テスト回路１００が出力する出力データＤＡＴＡ＿ＯＵＴを被テスト回路１００の入力データＤＡＴＡ＿ＩＮとしてフィードバックする。本実施例では、一構成例として、被テスト回路１００の出力データＤＡＴＡ＿ＯＵＴは、フィードバック部２２０によりフィードバックされ、マルチプレクサ２６０に入力される。フィードバック部２２０によりフィードバックされた出力信号ＤＡＴＡ＿ＯＵＴは、マルチプクレサ２６０により選択され、入力データＤＡＴＡ＿ＩＮとして被テスト回路１００に入力する。また、フィードバック部２２０によりフィードバックされた被テスト回路１００の出力データＤＡＴＡ＿ＯＵＴを、被テスト回路１００の暗号鍵データの入力に対しもフィードバックしてもよい。この場合、ＢＩＳＴ実施時に、被テスト回路１００の暗号鍵データの入力に初期に入力するデータは、記憶部２１０から入力され、以降は、フィードバック部２２０によりフィードバックされた被テスト回路１００の出力データＤＡＴＡ＿ＯＵＴを暗号鍵データの入力に入力する。
【００２０】
制御部２３０は、フィードバック部２２０が被テスト回路の出力データＤＡＴＡ＿ＯＵＴを被テスト回路の入力データＤＡＴＡ＿ＩＮとしてフィードバックする回数（フィードバック回数）を制御する。また、制御部２３０は、被テスト回路１００、記憶部２１０、比較器２４０、マルチプクレサ２５０、２６０を制御する。
【００２１】
比較部２４０は、所定のフィードバック回数に達した後、被テスト回路１００から出力される出力データＤＡＴＡ＿ＯＵＴと、記憶部２１０に格納されている期待値ＥＸＰＥＣＴＡＴＩＯＮとを比較する。比較部２４０は、制御部２３０から信号Ｓ１に基づいて、出力データＤＡＴＡ＿ＯＵＴと期待値ＥＸＰＥＣＴＡＴＩＯＮを比較する。ここで、期待値ＥＸＰＥＣＴＡＴＩＯＮとは、故障を含まない被テスト回路に対してＢＩＳＴを行った場合に、被テスト回路１００から出力されるデータである。
【００２２】
マルチプレクサ２５０には、被テスト回路が通常動作時に処理（演算）する通常データＤＡＴＡ＿ＮＯＲＭＡＬと、記憶部２１０に保持されている初期テストパターンＤＡＴＡ＿ＩＮＩＴＩＡＬとが入力する。マルチプレクサ２５０は、制御部２３０からの信号Ｓ２に基づき、通常データＤＡＴＡ＿ＮＯＲＭＡＬ、初期テストパターンＤＡＴＡ＿ＩＮＩＴＩＡＬのいずれかを選択し、マルチプレクサ２６０に出力する。ＢＩＳＴ実施時には、マルチプレクサ２５０は、初期テストパターンＤＡＴＡ＿ＩＮＩＴＩＡＬを選択し、マルチプレクサ２６０に出力する。
【００２３】
マルチプレクサ２６０には、マルチプレクサ２５０からの出力データＤＡＴＡ＿ＩＮＩＴＩＡＬ（ＢＩＳＴ実施時）と、フィードバック部２２０によりフィードバックされた被テスト回路１００の出力データＤＡＴＡ＿ＯＵＴとが入力する。マルチプレクサ２６０は、制御部２３０からの信号Ｓ３に基づき、マルチプレクサ２５０からの出力データＤＡＴＡ＿ＩＮＩＴＩＡＬ、又はフィードバック部２２０によりフィードバックされた被テスト回路１００の出力データＤＡＴＡ＿ＯＵＴのいずれかを選択し、被テスト回路１００の入力データＤＡＴＡ＿ＩＮとして出力する。
【００２４】
カウンター部２７０は、フィードバック回数をカウントする。制御部２３０は、カウンター部２７０がカウントするフィードバック回数に基づいて、フィードバック回数を制御する。
【００２５】
次に、図３を参照して、被テスト回路が入力データよりランダム性の高い出力データを出力する理由について説明する。図３は、暗号コア回路が有する暗号化アルゴリズムの一態様であるＦｅｉｓｔｅｌ構造について説明する図である。
【００２６】
Ｆｅｉｓｔｅｌ構造を有するブロック暗号には、６４ビットの平文データＰ（図２における入力データＤＡＴＡ＿ＩＮに相当）が入力する。平文データＰは、右側６４ビットのブロックデータＲ１と、左側３２ビットのブロックデータＬ１に分割される。右側６４ビットのブロックデータＲ１は、Ｆ関数１０１に入力し、Ｆ関数１０１により変換される。Ｆ関数１０１には、外部から暗号鍵Ｋ１が入力する。暗号鍵Ｋ１は、鍵拡張により、拡張された鍵データ（図２における暗号鍵データＫＥＹ＿ＤＡＴＡに相当）の一部である。Ｆ関数１０１によるブロックデータＲ１の変換は、拡張転置、鍵との排他的論理和演算、Ｓ−ＢＯＸ（Ｓｕｂｓｔｉｔｕｔｉｏｎ−ｂｏｘ）、Ｐ−ＢＯＸ（Ｐｒｅｍｕｔａｔｉｏｎ−ｂｏｘ）転置、の各処理から構成される。Ｆ関数１０１により変換されたブロックデータＲ１は、ブロックデータＦ（Ｒ１，Ｋ１）として出力される。次に、ブロックデータＦ（Ｒ１，Ｋ１）は、右側３２ビットのブロックデータＲ１との排他的論理和演算がなされ、ブロックデータＬ１A  Ｆ（Ｒ１，Ｋ１）が出力される。以上のブロックデータＲ１、Ｌ１から、ブロックデータタＬ１A  Ｆ（Ｒ１，Ｋ１）を算出する処理が１ラウンドの処理である。次に、１ラウンド目の処理から得られたブロックデータタＬ１A  Ｆ（Ｒ１，Ｋ１）をブロックデータＲ２、Ｒ１をＬ２として同様の処理を繰り返す。このように、Ｆｅｉｓｔｅｌ構造は、ラウンド関数となっており、ＤＥＳでは、このようなラウンド関数を１６ラウンド繰り返し、最後に逆転置をし、６４ビットの暗号文Ｃが作成される。
【００２７】
このように、暗号コア回路である被テスト回路１００は、Ｆｅｉｓｔｅｌ構造のような暗号化アルゴリズムにより、単純な入力データ（平文）をラウンド関数により攪拌し、ランダム性の高い出力データ（暗号文）を出力する。このため、前述のように、被テスト回路１００（暗号コア回路）の出力データＤＡＴＡ＿ＯＵＴを、被テスト回路１００の入力データＤＡＴＡ＿ＩＮとしてフィードバックを繰り返すことにより、被テスト回路１００への入力データをランダム性の高いデータとすることが可能となる。さらに、フィードバックを繰り返すことにより、被テスト回路１００への入力データをさらにランダム性の高いデータとすることが可能となる。
【００２８】
また、上記説明では、被テスト回路１００（暗号コア回路）が有する暗号化アルゴリズムの一態様としてＦｅｉｓｔｅｌ構造を説明しているが、被テスト回路１００が有する暗号化アルゴリズムはＳＰＮ構造をもつＡＥＳのようなその他のブロック暗号や、ハッシュ関数系暗号、公開鍵暗号等であってもよく、種々の暗号化アルゴリズムが想定できる。これは、暗号コア回路は、総じて、単純な入力データ（平文）に対して、ランダム性の高い出力データ（暗号文）を出力するためである。
【００２９】
さらに、被テスト回路１００として暗号コア回路以外に、ＪＰＥＧ、ＭＰＥＧ、ＭＰ３等の画像／音声圧縮等、ＺＩＰ等のファイル圧縮系コア等のデータ圧縮系コアが想定できる。これは、画像／音声圧縮等、データ圧縮系コアは、データを伸長、圧縮するための種々のデータ変換のアルゴリズムを実装するため、単純な入力データに対して、ランダム性の高い出力データを出力するためである。
【００３０】
次に、図４を参照して記憶部２１０の構成の一例について説明する。図４は、記憶部の一態様を示す回路である。
【００３１】
記憶部２１０は、アドレス線４０、バッファ４１、４２、インバータ４３、出力線４４を備える。アドレス線４０には、バッファ４１を介して、複数のインバータ４３又はバッファ４２と出力線４４が接続される。
【００３２】
アドレス線４０に入力するデータ“０”は、バッファ４２又はインバータ４３を通り、出力線４４に出力される。出力線４４から出力される値が、記憶部２２０が出力するデータ（即ち、初期入力データＤＡＴＡ＿ＩＮＩＴＩＡＬ）となる。図４においては、アドレス線４０に印加される値“０”に対して、データ“１１１・・・・０”が出力される。アドレス線４０に印加される値が“１”の場合には、反転したデータ“０００・・・・１”が出力される。なお、出力するデータは、バッファ４２、インバータ４３の組み合わせにより変更可能である。例えば、インバータ４３をすべてバッファに置き換えることにより、アドレス線４０の印加される値“０”に対して、データ“０００・・・・０”（オール“０”）が出力される。また、アドレス線４０を“１”又は“０”にプルアップ、又はプルダウンする構成とすることにより、出力するデータを固定することも可能である。なお、アドレスが２ビット以上の場合においても、組み合わせ回路で構成されるＲＯＭは、その出力値に応じてこれらの組み合わせで表現される。
【００３３】
次に、図５を参照して、ＢＩＳＴを実施時の、被テスト回路１００と、自己テスト回路２００の動作について説明する。図５は、ＢＩＳＴ実施時のタイミングチャートである。
【００３４】
まず、時刻Ｔ１において、制御部２３０に、外部からテスト開始信号パルスＴＥＳＴ＿ＳＴＡＲＴが入力することにより、ＢＩＳＴが開始される。次に、制御部２３０が、記憶部２１０に対してアドレス選択信号ＲＯＭ＿ＡＤＤＲ“０”を出力する。これにより、記憶部２１０は、初期テストパターンＤＡＴＡ＿ＩＮＩＴＩＡＬ“ａｌｌ  “０””を出力する。さらに、制御部２３０が、マルチプレクサ２５０に選択信号Ｓ２を出力することにより、マルチプレクサ２５０が初期テストパターンＤＡＴＡ＿ＩＮＩＴＩＡＬを選択し、マルチプレクサ２６０に出力する。さらに、制御部２１０が、マルチプレクサ２６０に選択信号Ｓ３を出力することにより、マルチプレクサ２６０が初期テストパターンＤＡＴＡ＿ＩＮＩＴＩＡＬを選択し、被テスト回路１００に入力データＤＡＴＡ＿ＩＮとして出力する。このとき、カウンター部２７０のカウント値が「０」から「１」に設定される。
【００３５】
次に、時刻Ｔ２に、被テスト回路１００に対して、処理（演算）開始の信号パルスＳＴＡＲＴがアサートされる。これにより、被テスト回路１００は、入力データＤＡＴＡ＿ＩＮの処理（演算）を開始する。
【００３６】
次に、時刻Ｔ３（時刻Ｔ２から十数クロック後）に、被テスト回路１００の演算終了の信号パルスＦＩＮがアサートされ、被テスト回路１００が演算結果を出力データＤＡＴＡ＿ＯＵＴ  “Ａ”を出力する。このとき、カウンター部２７０が、信号パルスＦＩＮをカウントすることにより、カウント値を１増加させる（カウント値を「１」から「２」に設定する）。さらに、フィードバック部２２０が、被テスト回路１００の出力する出力データＤＡＴＡ＿ＯＵＴをフィードバックし、マルチプレクサ２６０に入力させる。マルチプレクサ２６０が演算結果ＤＡＴＡ＿ＯＵＴを選択することにより、被テスト回路１００の入力データＤＡＴＡ＿ＩＮとして出力する。
【００３７】
次に、時刻Ｔ４に、被テスト回路１００に対して、処理（演算）開始の信号パルスＳＴＡＲＴがアサートされる。これにより、被テスト回路１００は、被テスト回路１００の演算結果である出力データＤＡＴＡ＿ＯＵＴを入力データＤＡＴＡ＿ＩＮとして、演算を開始する。これにより、２回目の演算を開始する。
【００３８】
以下、カウンター部２７０のカウント値ＣＯＵＮＴＥＲが、予め設定されたカウント値（例えば、１０００）に達するまで、上記動作（処理（演算）とフィードバック）を繰り返す。
【００３９】
次に、時刻Ｔ５において、カウンター部２７０のカウント値ＣＯＵＮＴＥＲと、制御部２３０に予め設定されたカウント値とが一致したときの被テスト回路１００の出力データＤＡＴＡ＿ＯＵＴ  “Ｂ”と、記憶部２１０に格納された期待値ＥＸＰＥＣＴＡＴＩＯＮとを、比較部２４０が比較する。比較部２４０の比較の結果、出力データＤＡＴＡ＿ＯＵＴと、期待値ＥＸＰＥＣＴＡＴＩＯＮとが一致している場合、比較部２４０が出力信号ＧＯ／ＮＯ＿ＧＯとして“０１”を出力する。比較部２４０の比較の結果、演算結果ＤＡＴＡ＿ＯＵＴと、期待値ＥＸＰＥＣＴＡＴＩＯＮとが一致しない場合、比較部２４０が出力信号ＧＯ／ＮＯ＿ＧＯとして“１１”を出力する。
【００４０】
次に、図６を参照して、本実施例の集積回路において、ＢＩＳＴを実施した結果を示す。図６は、本実施例の集積回路のゲートネットに対してシミュレーションによりＢＩＳＴを行った結果を示す表である。
【００４１】
被テスト回路としてＳＨＡ（Ｓｅｃｕｒｅ  Ｈａｓｈ  Ａｌｇｏｒｉｔｈｍ）を用いて構成した半導体集積回路を６５ｎｍのＣＭＯＳテクノロジーのゲートネットで論理合成したゲートネットに対してシミュレーションによりＢＩＳＴを実施した。このゲートネットに対してランダムに選択した任意の行のプリミティブセル或は接続信号に、任意的に０又は１縮退故障を１箇所挿入し、シミュレーションによりＢＩＳＴを実施した。ここで、入力の初期値５１２ビットがオール“０”とし、フィードバック回数を１０００回とした。
【００４２】
図６に示すように、１０００行目、２０００行目、３０００行目、４０００行目、５０００行目、それぞれに故障を挿入した回路について、１０００回フィードバックを行った後に、被テスト回路から出力される演算結果は、故障を挿入しない回路（正常な回路）について、１０００回フィードバックを行った後に、被テスト回路から出力される演算結果とは一致しなかった。このように、本実施例の半導体集積回路では、被テスト回路に任意に挿入された故障を検出できたことがわかる。なお、実施例では、フィードバック回数が１０００回を例に示しているが、１０００回以下でも故障検出が可能である。但し、故障の検出率は、被テスト回路に入力する入力データのランダム性に依存するため、フィードバック回数を増やした方が故障検出率を高められる。
【００４３】
以上のように、本実施例の半導体集積回路では、被テスト回路１００と自己テスト回路２００とが、処理（演算）とフィードバック動作を繰り返すことにより、被テスト回路１００に入力する入力データをランダム性の高いデータとすることができる。このため、初期入力データＤＡＴＡ＿ＩＮＩＴＩＡＬがランダム性の低い単純なデータとすることができ、初期入力データＤＡＴＡ＿ＩＮＩＴＩＡＬを回路規模の小さい記憶部２２０に格納することが可能である。
【実施例２】
【００４４】
次に、図７を参照して、本発明の実施例２に係る半導体集積回路が備える被テスト回路と自己テストテスト回路の構成を説明する。図７は、本発明の実施例２に係る半導体集積回路が備える被テスト回路と自己テスト回路の構成を示すブロック図である。図７において、図２に示す構成部と同一又は同等のものについては、同一符号を付して示している。
【００４５】
本実施例と実施例１との構成上異なる点は、被テスト回路１００として、ＳＨＡ−２５６暗号コアを用いる点、及び、図２におけるマルチプレクサ２６０を排他的論理演算回路２８０に置き換えている点である。また、被テスト回路１００がＳＨＡ−２５６暗号コアであることに対応して、初期入力データＤＡＴＡ＿ＩＮＩＴＩＡＬは、５１２ビットのランダム性の低い単純なデータとする。
【００４６】
ＳＨＡ−２５６暗号コアでは、５１２ビットの入力データＤＡＴＡ＿ＩＮを暗号化・圧縮し、２５６ビットの出力データＤＡＴＡ＿ＯＵＴとして出力する。
【００４７】
実施例２では、被テスト回路（ＳＨＡ−２５６暗号コア）から出力された２５６ビットの出力データＤＡＴＡ＿ＯＵＴと、マルチプレクサ２５０から出力された５１２ビットの初期入力データＤＡＴＡ＿ＩＮＩＴＩＡＬとを、排他的論理演算回路２８０において演算する。排他的論理演算回路２８０では、初期入力データＤＡＴＡ＿ＩＮＩＴＩＡＬの上位１２８ビットと出力データＤＡＴＡ＿ＯＵＴの上位１２８ビットを、初期入力データＤＡＴＡ＿ＩＮＩＴＩＡＬの次の１２８ビットの上位６４ビットと出力データＤＡＴＡ＿ＯＵＴの次の６４ビットを、初期入力データＤＡＴＡ＿ＩＮＩＴＩＡＬの次の１２８ビットの上位３２ビットと出力データＤＡＴＡ＿ＯＵＴの次の３２ビットを、初期入力データＤＡＴＡ＿ＩＮＩＴＩＡＬの次の１２８ビットの上位３２ビットと出力データＤＡＴＡ＿ＯＵＴの次の３２ビットを、それぞれ排他的論理演算を行う。排他的論理演算回路２８０は、排他的論理演算結果を被テスト回路１００の入力データＤＡＴＡ＿ＩＮとして出力する。
【００４８】
排他的論理演算回路２８０を用いることにより、被テスト回路１００がＳＨＡ−２５６暗号コアのように出力するデータが圧縮されている場合に、被テスト回路１００の入力データに対して出力データをフィードバックすることが可能となる。
【００４９】
なお、前述した各実施例は、本発明の理解を容易にするためのものであり、本発明を限定して解釈するためのものではない。本発明は、その趣旨を逸脱することなく、変更／改良されうると共に、本発明にはその等価物も含まれる。
【符号の説明】
【００５０】
１００  被テスト回路
２００  自己テスト回路
２１０  記憶部
２２０  フィードバック部
２３０  制御部
２４０  比較部
２５０、２６０  マルチプレクサ
２７０  カウンター部
２８０  排他的論理演算回路
４０  アドレス線
４１、４２  バッファ
４３  インバータ
４４  出力線
【図１】
2011075460.tif 000003
【図２】
2011075460.tif 000004
【図３】
2011075460.tif 000005
【図４】
2011075460.tif 000006
【図５】
2011075460.tif 000007
【図６】
2011075460.tif 000008
【図７】
2011075460.tif 000009