(57)【要約】【課題】半導体集積回路装置の中に故障検出率の目標値が異なる回路があった場合に、回路毎に目標値に合わせた最適なテストを実行し、トータルのテスト時間を短縮する。【解決手段】半導体集積回路装置は、複数のフリップフロップを複数のスキャンチェインで連結し、パターン生成回路の出力をスキャンチェインを用いてフリップフロップに入力した後に論理回路を動作させ、その論理回路の動作によって変化したフリップフロップの値をスキャンチェインを用いて取り出し比較回路で期待値と比較することで故障を検出する。そのスキャンチェインは複数のスキャンチェイン群で構成され、第一のスキャンチェイン群にパターン生成回路の出力を入力後、第二のスキャンチェイン群の期待値比較を複数回行う。【選択図】  図９Ｂ
2016218533.tif 000002
【特許請求の範囲】
【請求項１】
複数のフリップフロップと論理回路とパターン生成回路と比較回路とを備え、前記複数のフリップフロップを複数のスキャンチェインで連結し、前記パターン生成回路の出力を前記複数のスキャンチェインを用いて前記複数のフリップフロップに入力した後に前記論理回路の動作によって変化した前記複数のフリップフロップの値を前記複数のスキャンチェインを用いて取り出し前記比較回路で期待値と比較することで故障を検出する半導体集積回路装置であって、
前記複数のスキャンチェインは第一のスキャンチェイン群および第二のスキャンチェイン群を有し、前記第一のスキャンチェイン群に前記パターン生成回路の出力を入力後、前記比較回路は前記第一のスキャンチェイン群の期待値比較を行わず、前記第二のスキャンチェイン群の期待値比較を複数回行う
半導体集積回路装置。
【請求項２】
請求項１において、
故障検出率の異なる複数の回路群を有し、
前記複数のフリップフロップのうち目標故障検出率の高い回路群に含まれるフリップフロップが前記第二のスキャンチェイン群に割り当てられている
半導体集積回路装置。
【請求項３】
請求項１において、
前記パターン生成回路は第一および第二のパターン生成回路を有し、
前記第二のスキャンチェイン群に前記第二のパターン生成回路から入力するパターンのビット数が前記第一のスキャンチェイン群に前記第一のパターン生成回路から入力するパターンのビット数より少ない
半導体集積回路装置。
【請求項４】
請求項１において、
前記第二のスキャンチェイン群のスキャンチェイン長が前記第一のスキャンチェイン群のスキャンチェイン長より短い
半導体集積回路装置。
【請求項５】
第一のスキャンチェイン群を有する第一の機能ブロックと、
第二のスキャンチェイン群を有する第二の機能ブロックと、
を備え、
前記第一のスキャンチェイン群を用いた前記第一の機能ブロックのテストと前記第二のスキャンチェイン群を用いた前記第二の機能ブロックのテストとを並行して実行する第一のテストモードと、
前記第一のスキャンチェイン群への入力を行うが前記第一の機能ブロックのテストを実行せず、前記第二のスキャンチェイン群を用いた前記第二の機能ブロックのテストを実行する第二のテストモードと、
を備える
半導体集積回路装置。
【請求項６】
請求項５において、
前記第一のテストモードと前記第二のテストモードとのいずれでテストするかを設定可能な状態制御回路を有するテスト制御回路を備える
半導体集積回路装置。
【請求項７】
請求項６において、
前記状態制御回路はテスト開始情報が設定可能であり、テスト終了情報が格納可能である
半導体集積回路装置。
【請求項８】
請求項５において、
前記第一の機能ブロックは前記第一のスキャンチェイン群にテストパターンを出力する第一のパターン生成回路と前記第一のスキャンチェイン群から受け取るデータを圧縮する第一のパターン圧縮回路とを備え、
前記第二の機能ブロックは前記第二のスキャンチェイン群にテストパターンを出力する第二のパターン生成回路と前記第二のスキャンチェイン群から受け取るデータを圧縮する第二のパターン圧縮回路とを備え、
前記テスト制御回路は、期待値記憶回路と、前記期待値記憶回路の値と第一または第二の圧縮回路の値とを比較する比較回路とを備える
半導体集積回路装置。
【請求項９】
請求項８において、
前記テスト制御回路は前記第一のパターン生成回路および第二のパターン生成回路の初期値を格納する初期値記憶回路を備える
半導体集積回路装置。
【請求項１０】
ＣＰＵと、
メモリと、
機器に接続され、半導体集積回路装置で構成される入出力回路と、
を備え、
前記入出力回路は、
複数のフリップフロップと、
論理回路と、
パターン生成回路と、
比較回路と、
を備え、
前記複数のフリップフロップを複数のスキャンチェインで連結し、前記パターン生成回路の出力を前記複数のスキャンチェインを用いて前記複数のフリップフロップに入力した後に前記論理回路の動作によって変化した前記複数のフリップフロップの値を前記複数のスキャンチェインを用いて取り出し前記比較回路で期待値と比較することで故障を検出し、前記複数のスキャンチェインは第一のスキャンチェイン群および第二のスキャンチェイン群を有し、前記第一のスキャンチェイン群に前記パターン生成回路の出力を入力後、前記比較回路は前記第一のスキャンチェイン群の期待値比較を行わず、前記第二のスキャンチェイン群の期待値比較を複数回行う
制御装置。
【請求項１１】
請求項１０において、
前記入出回路はテスト制御回路を備え、
前記ＣＰＵは前記テスト制御回路に対して書き込みをすることにより前記入出回路のテストを開始し、前記テスト制御回路に読み出しをすることにより前記入出回路の故障の有無を検出する
制御装置。
【請求項１２】
請求項１０において、
前記第一のスキャンチェイン群を有する第一の機能ブロックと、
前記第二のスキャンチェイン群を有する第二の機能ブロックと、
を備え、
前記第一のスキャンチェイン群を用いた前記第一の機能ブロックのテストと前記第二のスキャンチェイン群を用いた前記第二の機能ブロックのテストとを並行して実行する第一のテストモードと、
前記第一のスキャンチェイン群への入力を行うが前記第一の機能ブロックのテストを実行せず、前記第二のスキャンチェイン群を用いた前記第二の機能ブロックのテストを実行する第二のテストモードと、
を備える
制御装置。
【請求項１３】
請求項１２において、
前記テスト制御回路は、前記第一のテストモードと前記第二のテストモードとのいずれでテストするかを設定可能な状態制御回路を備える
制御装置。
【請求項１４】
請求項１２において、
前記パターン生成回路は第一および第二のパターン生成回路を備え、
前記第一の機能ブロックは前記第一のスキャンチェイン群にテストパターンを出力する前記第一のパターン生成回路と前記第一のスキャンチェイン群から受け取るデータを圧縮する第一のパターン圧縮回路とを備え、
前記第二の機能ブロックは前記第二のスキャンチェイン群にテストパターンを出力する前記第二のパターン生成回路と前記第二のスキャンチェイン群から受け取るデータを圧縮する第二のパターン圧縮回路とを備え、
前記テスト制御回路は、期待値記憶回路と、前記期待値記憶回路の値と第一または第二の圧縮回路の値とを比較する比較回路とを備える
制御装置。
【請求項１５】
請求項１４において、
前記テスト制御回路は前記第一のパターン生成回路および第二のパターン生成回路の初期値を格納する初期値記憶回路を備える
制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路装置および制御装置に関する。
【背景技術】
【０００２】
高度な処理を行う制御装置は半導体集積回路を搭載する場合が多い。制御装置の用途によっては、半導体集積回路の故障による誤動作の影響を最小限にするため、稼働中に故障検出を行うことが求められる場合がある。
【０００３】
半導体集積回路の故障を検出する技術として、例えば、特開２００１−１７４５１５号公報（特許文献１）がある。特許文献１には「論理集積回路内のフリップフロップ群をスキャンチェインで連結し、該論理集積回路内に乱数生成回路と符号圧縮器を組み込み、クロック信号をフリップフロップ群、乱数生成回路及び符号圧縮器に供給し、該クロック信号に同期して、順次、乱数生成回路で生成した乱数パターンをフリップフロップ群に書き込んでシフトスキャンし、その結果を符号圧縮器で圧縮する構成の自己診断型論理集積回路において、乱数生成回路を構成するラッチ素子の一部又は全体のクロック信号を一時遮断して乱数の生成又は出力を一時停止させ、論理集積回路内のフリップフロップ群をシフトスキャンする乱数の１又は０の連続する長さの平均値を増大させる」という記載がある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００１−１７４５１５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１では、半導体集積回路全体を一様にテストしているため、故障検出率の目標値が低い回路と高い回路がある場合、故障検出率の目標値が低い回路に必要以上に高い故障検出率を実現するテストを行い、テスト時間が長くなるという可能性がある。
本発明はテストを効率的に行う技術を提供することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するため、代表的な本発明の半導体集積回路装置の一つは、複数のフリップフロップを複数のスキャンチェインで連結し、パターン生成回路の出力をスキャンチェインを用いてフリップフロップに入力した後に論理回路を動作させ、その論理回路の動作によって変化したフリップフロップの値をスキャンチェインを用いて取り出し比較回路で期待値と比較することで故障を検出し、そのスキャンチェインは複数のスキャンチェイン群で構成され、第一のスキャンチェイン群にパターン生成回路の出力を入力後、第二のスキャンチェイン群の期待値比較を複数回行う。
【発明の効果】
【０００７】
本発明によれば、テストを効率的に行うことが可能である。
【０００８】
上記した以外の課題、構成及び効果は、以下の実施形態の説明により明らかにされる。
【図面の簡単な説明】
【０００９】
【図１】本発明を適用した制御システムの構成例を示すブロック図。
【図２】図１の制御システムの入出力回路の第一の構成例を示すブロック図。
【図３】図２の入出力回路のスキャンフリップフロップの構成例を示すブロック図。
【図４】図２の入出力回路のパターン生成回路の構成例を示すブロック図。
【図５】図２の入出力回路のパターン圧縮回路の構成例を示すブロック図。
【図６】図２の入出力回路のテスト制御回路の構成例を示すブロック図。
【図７】図６のテスト制御回路と他の回路との間の信号の例を示す図。
【図８】図２の第一の機能ブロックのテストを行うときのテスト制御回路の動作の例を示す図。
【図９Ａ】図２の第一の機能ブロックと第二の機能ブロックの両方をテストするときのタイミングチャート。
【図９Ｂ】図２の第二の機能ブロックのみをテストするときのタイミングチャート。
【図１０】図９Ａおよび図９Ｂのタイミングチャートの処理サイクル数の例を示す図。
【図１１】図１の制御システムの入出力回路の第二の構成例を示すブロック図。
【図１２Ａ】図１１の第一の機能ブロックと第二の機能ブロックの両方をテストするときのタイミングチャート。
【図１２Ｂ】図１１の第二の機能ブロックのみをテストするときのタイミングチャート。
【図１３】図１２Ａおよび図１２Ｂのタイミングチャートの処理サイクル数の例を示す図。
【図１４】図１の制御システムの入出力回路の第三の構成例を示すブロック図。
【図１５】制御装置の動作を示すフローチャート。
【図１６】制御装置のテスト動作を示すフローチャート。
【発明を実施するための形態】
【００１０】
以下、本発明の実施例について図面を用いて説明する。
【実施例１】
【００１１】
図１は、本発明を適用した制御システムの構成例を示すブロック図である。
図１の制御システム１００は、制御装置１０２と制御対象の機器１１４を有する。制御装置１０２は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０４、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０６、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０８、入出力回路（ＩＯ回路）１１０および通信回路１１２を有する。ＣＰＵ１０４、ＲＡＭ１０６、ＲＯＭ１０８、入出力回路１１０および通信回路１１２は、全てが単一の半導体集積回路に格納されていても良いし、複数の半導体集積回路に分割されていても良い。入出力回路１１０は例えばＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）で構成してもよい。機器１１４は例えばインバータ等の電力変換装置である。
【００１２】
ＣＰＵ１０４は、バス１２２を経由してＲＡＭ１０６またはＲＯＭ１０８から命令コードを受け取り、実行する。また、ＣＰＵ１０４は実行した命令コードに従い、バス１２２を経由してＲＡＭ１０６、ＲＯＭ１０８、入出力回路１１０または通信回路１１２からデータを読み出し、処理を施したのち、バス１２２を経由して結果をＲＡＭ１０６、ＲＯＭ１０８、入出力回路１１０または通信回路１１２に書き込む。
【００１３】
ＲＡＭ１０６は、バス１２２を経由してＣＰＵ１０４または通信回路１１２から命令コードまたはデータの読み出し要求を受け取ると、指定されたアドレスに格納された命令コードまたはデータを読み出し、バス１２２を経由してＣＰＵ１０４または通信回路１１２に渡す。また、ＲＡＭ１０６は、バス１２２を経由してＣＰＵ１０４または通信回路１１２からデータの書き込み要求を受け取ると、指定されたアドレスにデータを書き込む。ＲＡＭ１０６は揮発性のメモリであり、電源投入直後の初期値は不定である。ＣＰＵ１０４からＲＡＭ１０６に書き込みを行うことにより初めて値が定まる。ＲＡＭ１０６に命令コードや初期値の定められたデータを格納する場合は、ＣＰＵ１０４がＲＯＭ１０８からＲＡＭ１０６に該当する命令コードやデータをコピーする。
【００１４】
ＲＯＭ１０８の動作もＲＡＭ１０６と同様である。ＲＯＭ１０８は不揮発性のメモリであり、電源投入直後の初期値は前回電源を遮断した時に格納していた値と同じである。ＲＯＭ１０８は命令コードや初期値の定められたデータを格納するために用いられる。通常ＲＯＭ１０８に書き込みは行われないが、プログラムのバージョンアップ等の際にはＣＰＵ１０４からＲＯＭ１０８に書き込みが行われる。ＲＯＭ１０８に書き込まれる命令コードまたはデータは、信号線１２８に接続されたＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）から通信回路１１２およびＲＡＭ１０６を経由してＣＰＵ１０４に供給される。
【００１５】
入出力回路１１０は、バス１２２を経由してＣＰＵ１０４から読み出し要求を受け取ると、信号線１２４を経由して機器１１４の状態を読み出し、バス１２２を経由してＣＰＵ１０４に出力する。また、入出力回路１１０は、バス１２２を経由してＣＰＵ１０４から書き込み要求を受け取ると、機器１１４の制御信号１２６を指定された値に変化させる。
【００１６】
通信回路１１２は、内部に動作モードを指定したり動作状態を表示したりするための複数のレジスタを有しており、バス１２２を経由してＣＰＵ１０４から読み出し要求を受け取ると、指定されたアドレスのレジスタの値を、バス１２２を経由してＣＰＵ１０４に出力する。また、通信回路１１２は、バス１２２を経由してＣＰＵ１０４から書き込み要求を受け取ると、指定されたアドレスのレジスタに値を格納する。また、通信回路１１２は、動作モードを示すレジスタが送信起動状態を示しているときには、バス１２２を経由してＲＡＭ１０６から送信データを受け取り、通信路１２８に出力する。ＲＡＭ１０６に格納されている送信データは、予めＣＰＵ１０４から書き込まれたデータである。また、通信回路１１２は、通信路１２８から受信データを受け取ると、バス１２２を経由してＲＡＭ１０６に受信データを書き込む。ＲＡＭ１０６に書き込まれたデータは、その後ＣＰＵ１０４に読み出される。
【００１７】
図２は、図１の制御システムの入出力回路の第一の構成例を示す図である。なお、本実施例では入出力回路１１０に本発明を適用した例を示すが、ＣＰＵ１０４または通信回路１１２に本発明を適用することも可能である。
【００１８】
入出力回路１１０は、インタフェース回路（ｉ／ｆ）２０２、テスト制御回路２０４、第一の機能ブロック２１６、第二の機能ブロック２１８およびインタフェース回路（ｉ／ｆ）２１４を有する。
【００１９】
第一の機能ブロック２１６は、パターン生成回路２０６、ｎ×ｍ個のスキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）、ｍ個の論理回路２２ｃ（ｃは１からｍまでの整数）およびパターン圧縮回路２１０を有する。
【００２０】
第二の機能ブロック２１８は、パターン生成回路２０８、ｎ×ｍ個のスキャンフリップフロップ２３ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）、ｍ個の論理回路２４ｃ（ｃは１からｍまでの整数）およびパターン圧縮回路２１２を有する。
【００２１】
インタフェース回路２０２は、バス１２２を経由してＣＰＵ１０４から読み出し要求を受け取ると、どの回路に対する読み出し要求かを調べる。テスト制御回路２０４に対する読み出し要求であった場合は、インタフェース回路２０２は信号線２２４を通してテスト制御回路２０４に要求を出力し、信号線２２４を通してテスト制御回路２０４から読み出しデータを受け取ると、バス１２２に出力する。第一の機能ブロック２１６に対する読み出し要求であった場合は、インタフェース回路２０２は信号線２２２を通して第一の機能ブロック２１６に読み出し要求を出力し、信号線２２２を通して第一の機能ブロック２１６から読み出しデータを受け取ると、バス１２２に出力する。第二の機能ブロック２１８またはインタフェース回路２１４に対する読み出し要求であった場合も同様であり、要求および読み出しデータの転送は信号線２２２を介して行われる。また、インタフェース回路２０２は、バス１２２を経由してＣＰＵ１０４から書き込み要求を受け取ると、どの回路に対する書き込み要求かを調べる。テスト制御回路２０４に対する書き込み要求であった場合は、信号線２２４を通してテスト制御回路２０４に要求と書き込みデータを出力する。第一の機能ブロック２１６に対する書き込み要求であった場合は、信号線２２２を通して第一の機能ブロック２１６に要求と書き込みデータを出力する。第二の機能ブロック２１８またはインタフェース回路２１４に対する書き込み要求であった場合も同様であり、要求および書き込みデータの転送は信号線２２２を介して行われる。ここで、信号線２２２は第一の機能ブロック２１６の論理回路、第二の機能ブロック２１８およびインタフェース回路２１４に接続されている。
【００２２】
テスト制御回路２０４は、信号線２２４を通して読み出し要求を受け取ると、読み出し要求に対応するデータを信号線２２４に出力する。また、テスト制御回路２０４は信号線２２４を通して書き込み要求を受け取ると、信号線２２４から受け取った書き込みデータを指示された場所に格納する。また、テスト制御回路２０４は、書き込み要求によってテスト開始が指示された場合は、信号線２２６を介してパターン生成回路２０６、スキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）、パターン圧縮回路２１０、パターン生成回路２０８、スキャンフリップフロップ２３ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）およびパターン圧縮回路２１２を制御し、第一の機能ブロック２１６または第二の機能ブロック２１８のテストを行う。テスト制御回路２０４は、信号線２２６を介してパターン圧縮回路２１０またはパターン圧縮回路２１２から受け取ったデータがテスト制御回路２０４の内部に格納した期待値と一致するかどうかでテスト結果の判定（故障が存在するかどうか）を行う。テスト制御回路２０４は、一致の場合は故障を検出していないと判定し、不一致の場合は故障を検出したと判定する。判定結果は信号線２２４を介して読み出される。なお、図２ではスペースの都合上、テスト制御回路２０４とスキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）およびスキャンフリップフロップ２３ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）とを接続する信号線は省略した。
【００２３】
第一の機能ブロック２１６は、信号線２２６を通してテスト制御回路２０４から非テスト時の動作を指示されている場合には、信号線２２２を通してインタフェース回路２０２、第二の機能ブロック２１８およびインタフェース回路２１４と信号のやり取りを行い、予め定められた処理を行う。処理内容は論理回路２２ｃ（ｃは１からｍまでの整数）の回路構成によって決まり、入出力回路１１０の通常の機能の一部を担うものである。また、第一の機能ブロック２１６は、信号線２２６を通してテスト制御回路２０４からテスト時の動作を指示されている場合には、信号線２２６で与えられた指示に従い内部のテストを行い、結果を信号線２２６に出力する。
【００２４】
第二の機能ブロック２１８の動作は第一の機能ブロック２１６の動作と同様である。
【００２５】
インタフェース回路２１４は、信号線２２２を介して読み出し要求を受け取ると、信号線１２４を通して受け取った機器１１４の状態を示す信号の値を信号線２２２に出力する。また、インタフェース回路２１４は、信号線２２２を介して書き込み要求を受け取ると、信号線２２２を介して受け取った書き込みデータを指定された場所に格納する。格納された値は信号線１２６を介して機器１１４に出力される。
【００２６】
パターン生成回路２０６は、テスト制御回路２０４の指示に従いテストパターンを生成し、スキャンフリップフロップ２１１ｂ（ｂは１からｍまでの整数）に出力する。
【００２７】
スキャンフリップフロップ２１ａ１（ａは１からｎまでの整数）は、信号線２２６を通してテスト制御回路２０４から受け取ったスキャン指示信号の値が０の場合には、テスト制御回路２０４からのクロック信号の立ち上がりエッジで論理回路２２ｍから受け取った値を格納し、論理回路２２１に出力する。また、スキャンフリップフロップ２１ａ１（ａは１からｎまでの整数）は、信号線２２６を通してテスト制御回路２０４から受け取ったスキャン指示信号の値が１の場合には、テスト制御回路２０４からのクロック信号の立ち上がりエッジで図面上一つ上のスキャンフリップフロップ（スキャンフリップフロップ２１１１の場合はパターン生成回路２０６）から受け取った値を格納し、図面上一つ下のスキャンフリップフロップ（スキャンフリップフロップ２１ｎ１の場合はパターン圧縮回路２１０）に出力する。これによって、スキャンフリップフロップ２１ａ１（ａは１からｎまでの整数）は、パターン生成回路２０６からパターン圧縮回路２１０に至るｎビットのシフトレジスタとして動作することになる。スキャンフリップフロップ２１ａ１（ａは１からｎまでの整数）によって構成されるシフトレジスタをスキャンチェインと呼ぶ。
【００２８】
スキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは２からｍまでの整数）の動作は、スキャンフリップフロップ２１ａ１（ａは１からｎまでの整数）と同様である。ｂを特定の値に固定したときのスキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数）が１つのスキャンチェインを構成し、第一の機能ブロック２１６にはｂが１からｍまでの合わせてｍ本のスキャンチェインが存在していることになる。
【００２９】
論理回路２２１は、スキャンフリップフロップ２１ａ１（ａは１からｎまでの整数）、及び信号線２２２から受け取ったデータに所定の演算を施し、スキャンフリップフロップ２１ａ２（ａは１からｎまでの整数）および信号線２２２に出力する。論理回路２２１は値を記憶する素子は含まず、クロック信号とは無関係に入力の値に応じで出力が変化する。
【００３０】
論理回路２２ｃ（ｃは２からｍまでの整数）の動作は、論理回路２２１と同様である。
【００３１】
パターン圧縮回路２１０は、テスト制御回路２０４の指示に従いスキャンフリップフロップ２１ｎｂ（ｂは１からｍまでの整数）から受け取ったデータを圧縮し、圧縮結果を信号線２２６を通してテスト制御回路２０４に出力する。
【００３２】
パターン生成回路２０８の動作はパターン生成回路２０６と同様である。
【００３３】
スキャンフリップフロップ２３ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）の動作は、スキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）と同様である。第二の機能ブロック２１８にもｍ本のスキャンチェインが存在する。
【００３４】
論理回路２４ｃ（ｃは１からｍまでの整数）の動作は、論理回路２２ｃ（ｃは１からｍまでの整数）の動作と同様である。
【００３５】
パターン圧縮回路２１２の動作は、パターン圧縮回路２１０と同様である。
【００３６】
図３は、図２の入出力回路のスキャンフリップフロップの構成例を示す図である。なお、本実施例では図２のスキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）、スキャンフリップフロップ２３ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）は全て同一の構成となっており、図３と同様である。
【００３７】
スキャンフリップフロップ２１11は、選択回路３０２とフリップフロップ３０４を有する。選択回路３０２は、テスト制御回路２０４から受け取ったスキャン指示信号の値が１のときには、パターン生成回路２０６から受け取った値を選択して信号線３１２に出力する。また、選択回路３０２はテスト制御回路２０４から受け取ったスキャン指示信号の値が０のときには、論理回路２２ｍから受け取った値を選択して信号線３１２に出力する。フリップフロップ３０４は、テスト制御回路２０４から受け取ったクロック信号の立ち上がりエッジで信号線３１２の値を取り込み、論理回路２２１およびスキャンフリップフロップ２１２1に出力する。
【００３８】
図４は、図２の入出力回路のパターン生成回路の構成例を示す図である。図４のパターン生成回路２０６は、ＬＦＳＲ（Ｌｉｎｅａｒ  Ｆｅｅｄｂａｃｋ  Ｓｈｉｆｔ  Ｒｅｇｉｓｔｅｒ）と呼ばれている回路の一種であり、擬似的な乱数を出力する。ＬＦＳＲは様々な構成が知られており、本実施例以外の構成のＬＦＳＲが使用される場合もある。また、パターン生成回路として複数のＬＳＦＲの組み合わせや、ＬＦＳＲ以外の回路構成を使用してもよい。なお、本実施例では図２のパターン生成回路２０８の構成もパターン生成回路２０６と同様である。
【００３９】
パターン生成回路２０６は、選択回路４０２、排他的論理和（ＥＯＲ）回路４０４およびフリップフロップ４１ｄ（ｄは１からｍまでの整数）を有する。選択回路４０２は、信号線２２６を経由して受け取った初期化指示信号（２２６−４−２）の値が１のときには、信号線２２６を経由して受け取った初期値（２２６−４−１）の値を選択して信号線４１２に出力する。また、選択回路４０２は、信号線２２６を経由して受け取った初期化指示信号（２２６−４−２）の値が０のときには、信号線４１４の値を選択して信号線４１２に出力する。ＥＯＲ回路４０４は、フリップフロップ４１ｍ−１とフリップフロップ４１ｍから受け取った値の排他的論理和を取り、信号線４１４に出力する。フリップフロップ４１ｄ（ｄは１からｍまでの整数）は、信号線２２６を経由して受け取ったクロック信号（２２６−４−３）の立ち上がりエッジで、図面上左側のフリップフロップ（フリップフロップ４１１の場合は選択回路４０２）が出力した値を取り込み、格納する。格納された値は、図面上右側のフリップフロップ、ＥＯＲ回路４０４および外部（スキャンフリップフロップ２１１ｂ（ｂは１からｍまでの整数））に出力される。
【００４０】
図５は、図２の入出力回路のパターン圧縮回路の構成例を示す図である。図５のパターン圧縮回路２１０は、ＭＩＳＲ（Ｍｕｌｔｉｐｌｅ  Ｉｎｐｕｔ  Ｓｉｇｎａｔｕｒｅ  Ｒｅｇｉｓｔｅｒ）と呼ばれている回路の一種である。ＭＩＳＲは様々な構成が知られており、本実施例以外の構成のＭＩＳＲが使用される場合もある。また、パターン圧縮回路としてＭＩＳＲ以外の回路構成を使用する場合もある。その様な場合でも本発明の適用は可能である。なお、本実施例では図２のパターン圧縮回路２１２の構成もパターン圧縮回路２１０と同様である。
【００４１】
パターン圧縮回路２１０は、ＥＯＲ回路５０２、ＥＯＲ回路５２ｅ（ｅは１からｍまでの整数）およびフリップフロップ５１ｆ（ｆは１からｍまでの整数）を有する。ＥＯＲ回路５０２は、フリップフロップ５１ｍ−１とフリップフロップ５１ｍから受け取った値の排他的論理和を取り、信号線５１２に出力する。ＥＯＲ回路５２ｅ（ｅは１からｍまでの整数）は、図面上左側のフリップフロップ（ＥＯＲ回路５２１の場合はＥＯＲ回路５０２）が出力した値と、外部からの入力値（スキャンフリップフロップ２１ｎｂ（ｂは１からｍまでの整数）からの値）の排他的論理和を取り、フリップフロップ５１ｆ（ｆは１からｍまでの整数）に出力する。フリップフロップ５１ｆ（ｆは１からｍまでの整数）は、信号線２２６を経由して受け取ったクロック信号（２２６−５−３）の立ち上がりエッジで、図面上左側のＥＯＲ回路が出力した値を取り込み、格納する。格納された値は、図面上右側のＥＯＲ回路５２ｅ（ｅは２からｍまでの整数）およびＥＯＲ回路５０２に出力される。フリップフロップ５１ｍの出力は、信号（２２６−５−１）として信号線２２６にも出力される。また、フリップフロップ５１ｆ（ｆは１からｍまでの整数）は信号線２２６を経由して受け取った初期化指示信号（２２６−５−２）の値が１となると、格納している値を０に初期化する。
【００４２】
図６は、図２の入出力回路のテスト制御回路の構成例を示す図である。図６のテスト制御回路２０４は、インタフェース回路（ｉ／ｆ）６０２、初期値記憶回路６０４、期待値記憶回路６０６、比較回路６０８、状態制御回路６１０およびクロック生成回路６１２を有する。
【００４３】
インタフェース回路６０２は、信号線２２４から読み出し要求を受け取ると、信号線６２２を介して比較回路６０８または状態制御回路６１０から要求のあったデータを読み出し、信号線２２４に出力する。また、インタフェース回路６０２は、信号線２２４から書き込み要求を受け取ると、信号線２２４から受け取ったデータを信号線６２２を介して初期値記憶回路６０４、期待値記憶回路６０６または状態制御回路６１０に書き込む。
【００４４】
初期値記憶回路６０４は、信号線６２２から書き込み要求を受け取ると、指示された場所に信号線６２２から受け取ったデータを格納する。書き込みは予め定められたワード幅（例えば３２ビット）毎に行われる。また、初期値記憶回路６０４は、信号線６２４から受け取った情報がＬＦＳＲ初期化を示しているときには、格納しているデータを１ビットずつ順次信号線２２６に出力する。初期値記憶回路６０４はパターン生成回路２０６、２０８の初期値を格納するのに用いられる。パターン生成回路２０６、２０８の初期化にそれぞれｍビットの情報が必要であり、１連のテストで複数回の初期化が行われることから、初期値記憶回路６０４は初期化回数（パターン生成回路２０６とパターン生成回路２０８の初期化回数の和）とｍの積以上のビット数を格納できる必要がある。
【００４５】
期待値記憶回路６０６は、信号線６２２から書き込み要求を受け取ると、指示された場所に信号線６２２から受け取ったデータを格納する。書き込みは予め定められたワード幅（例えば３２ビット）毎に行われる。また、期待値記憶回路６０６は、信号線６２４から受け取った情報が比較を示しているときには、格納しているデータを１ビットずつ順次比較回路６０８に出力する。期待値記憶回路６０６はパターン圧縮回路２１０、２１２の期待値を格納するのに用いられる。パターン圧縮回路２１０、及び２１２の期待値比較にそれぞれｍビットの情報が必要であり、１連のテストで複数回の期待値比較が行われることから、期待値記憶回路６０６は期待値比較回数（パターン圧縮回路２１０とパターン圧縮回路２１２の期待値比較回数の和）とｍの積以上のビット数を格納できる必要がある。
【００４６】
比較回路６０８は、信号線６２４から受け取った情報がパターン圧縮回路２１０の比較を示しているときには、期待値記憶回路６０６から受け取った値と、信号線２２６を経由して受け取ったパターン圧縮回路２１０の圧縮結果を比較する。比較の結果不一致であった場合には、不一致が発生した箇所に関する情報を内部のレジスタ等に記憶する。また、比較回路６０８は、信号線６２４から受け取った情報がパターン圧縮回路２１２の比較を示しているときには、期待値記憶回路６０６から受け取った値と、信号線２２６を経由して受け取ったパターン圧縮回路２１２の圧縮結果を比較する。比較の結果不一致であった場合には、不一致が発生した箇所に関する情報を記憶する。なお、比較回路６０８は、期待値とパターン圧縮回路２１０の比較と、期待値とパターン圧縮回路２１２の比較とは同時に行うことはできず、一度に行うのは片方のみである。また、比較回路６０８は、信号線６２２を経由して読み出し要求を受け取ると、比較不一致発生箇所の情報を信号線６２２に出力する。
【００４７】
状態制御回路６１０は、信号線６２２を経由して書き込み要求を受け取ると、信号線６２２から受け取ったデータを内部のレジスタ等に格納する。格納したデータのうちテスト起動を示すビットが１であった場合には、信号線２２６および信号線６２４に必要な信号を出力し、テストを実行する。また、状態制御回路６１０は信号線６２２を経由して読み出し要求を受け取ると、内部のレジスタ等に格納されているテストの実行状態を示すデータを信号線６２２に出力する。
【００４８】
クロック生成回路６１２は、信号線６２４から受け取った情報に従い、クロック信号を生成し信号線２２６に出力する。
【００４９】
図７は、図６のテスト制御回路と他の回路との間の信号の例を示す図である。
【００５０】
信号Ｎ０１は、初期値格納回路６０４からパターン生成回路２０６、２０８に初期値を出力する。信号Ｎ０１はパターン生成回路２０６とパターン生成回路２０８で兼用であり、一度に片方のみしか初期化することができない。
【００５１】
信号Ｎ０２は、パターン圧縮回路２１０から比較回路６０８に圧縮結果を出力する。
【００５２】
信号Ｎ０３は、パターン圧縮回路２１２から比較回路６０８に圧縮結果を出力する。
【００５３】
信号Ｎ０４は、状態制御回路６１０からパターン生成回路２０６、２０８に初期化指示を出力する。パターン生成回路２０６とパターン生成回路２０８は一度にいずれか片方のみしか初期化できないが、どちらを初期化するかは後述するクロック信号によって制御し、信号Ｎ０４はパターン生成回路２０６の初期化とパターン生成回路２０８の初期化のＯＲ条件で１となる。
【００５４】
信号Ｎ０５は、状態制御回路６１０からパターン圧縮回路２１０、２１２に初期化指示を出力する。
【００５５】
信号Ｎ０６は、状態制御回路６１０からスキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）、スキャンフリップフロップ２３ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）へのスキャン指示を出力する。信号Ｎ０６は、図３のスキャン指示信号である。
【００５６】
信号Ｎ０７〜Ｎ１２は、クロック生成回路６１２からパターン生成回路２０６、２０８、パターン圧縮回路２１０、２１２、スキャンＦＦ２１、２３のそれぞれの回路へのクロック信号を出力する。信号Ｎ１１は、図３のクロック信号である。
【００５７】
図８は、図２の第一の機能ブロックのテストを行うときのテスト制御回路の動作の例を示す図である。
【００５８】
ステップＳ００とステップＳ２０は非テスト状態であり、テスト制御回路２０４は停止状態にある。この状態では、第一の機能ブロック２１６は通常の処理を行う。第一の機能ブロック２１６のテストが起動されると、テスト制御回路２０４は図８の上から下の順に、ステップＳ１１１、Ｓ１２１１、Ｓ１３１１、Ｓ１４１１、(途中略)、Ｓ１２１ｘ、Ｓ１３１ｘ、Ｓ１４１ｘ、Ｓ１５２、Ｓ１２２１、Ｓ１３２１、Ｓ１４２１、(途中略)、Ｓ１２２ｘ、Ｓ１３２ｘ、Ｓ１４２ｘ、Ｓ１５３、(途中略)、Ｓ１５ｗ、Ｓ１２ｗ１、Ｓ１３ｗ１、Ｓ１４ｗ１、(途中略)、Ｓ１２ｗｘ、Ｓ１３ｗｘ、Ｓ１４ｗｘ、Ｓ１６ｗの処理を行う。ＬＦＳＲ初期化（ステップＳ１１またはステップＳ１５）から比較（ステップＳ１５またはステップＳ１６）に至る一連の処理がｗ回（ｗは１以上の整数）行われる。ｗの値は可変であり、テスト制御回路２０４の内部にｗを指定するための記憶領域（例えばレジスタ）が存在する。また、ＬＦＳＲ初期化から比較に至る一連の処理の１回につき、ステップＳ１２〜Ｓ１４の処理がｘ回（ｘは１以上の整数）行われる。ｘの値も可変であり、テスト制御回路２０４の内部にｘを指定するための記憶領域（例えばレジスタ）が存在する。
【００５９】
なお、第二の機能ブロック２１８のテストを行う場合も、使用する信号が異なるのみで、実質的な動作は図８と同じである。
【００６０】
ステップＳ１１１：テスト制御回路２０４は、パターン圧縮回路２１０（ＭＩＳＲ）とパターン生成回路２０６（ＬＦＳＲ）の初期化を行う。信号Ｎ０５の初期化指示を１とすることで、パターン圧縮回路２１０の初期化が行われる。また、信号Ｎ０７のクロックを動作、信号Ｎ０４の初期化指示を１とすることで、パターン生成回路２０６が信号Ｎ０１の初期値の値で初期化される。この状態をｍクロック継続することで、パターン生成回路２０６の全てのフリップフロップに初期値記憶回路６０４に格納されている値がコピーされることになる。
【００６１】
ステップＳ１２１ｇ（ｇは１からｘの整数）：テスト制御回路２０４は、パターン生成回路２０６からスキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）に値を入力する。信号Ｎ０７のクロックを動作、信号Ｎ０４の初期化指示を０とすることで、パターン生成回路２０６は擬似的な乱数を出力する。信号Ｎ１１のクロックを動作、信号Ｎ０６のスキャン指示を１とすることで、スキャンチェインに沿ってパターン生成回路２０６の出力値がスキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）の上部から下部（ａの小さい方から大きい方）に順次シフトされる。この状態をｎクロックサイクル継続することで、スキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）の全てにパターン生成回路２０６が生成した擬似的な乱数が格納されることになる。
【００６２】
ステップＳ１３１ｇ（ｇは１からｘの整数）：テスト制御回路２０４は、論理回路２２ｃ（ｃは１からｍまでの整数）の出力をスキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）に取り込む。信号Ｎ１１のクロックを動作、信号Ｎ０６のスキャン指示を０とすることで、論理回路２２ｃ（ｃは１からｍまでの整数）の出力がスキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）に取り込まれる。
【００６３】
ステップＳ１４１ｇ（ｇは１からｘの整数）：テスト制御回路２０４は、スキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）の値をパターン圧縮回路２１０で圧縮する。信号Ｎ１１のクロックを動作、信号Ｎ０６のスキャン指示を１とすることで、スキャンチェインに沿ってスキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）の値が上部から下部（ａの小さい方から大きい方）に順次シフトされ、パターン圧縮回路２１０に入力される。また、信号Ｎ０９のクロックを動作、信号Ｎ０５の初期化指示を０とすることで、パターン圧縮回路２１０がスキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）からシフトされてきたデータを圧縮する。この状態をｎクロックサイクル継続することで、スキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）の全ての値がパターン圧縮回路２１０に入力され圧縮されることになる。
【００６４】
ステップＳ１５２：テスト制御回路２０４は、パターン圧縮回路２１０の出力の期待値の比較と、パターン生成回路２０６（ＬＦＳＲ）の初期化を行う。信号Ｎ０９のクロックを動作、信号Ｎ０５の初期化指示を０とすることで、パターン圧縮回路２１０内部のフリップフロップの値が順次比較回路６０８に出力され、期待値との比較が行われる。パターン生成回路２０６（ＬＦＳＲ）の初期化の動作はステップＳ１１１と同様である。
【００６５】
ステップＳ１２２ｇ（ｇは１からｘの整数）、Ｓ１３２ｇ（ｇは１からｘの整数）、Ｓ１４２ｇ（ｇは１からｘの整数）の動作はそれぞれ、ステップＳ１２１ｇ（ｇは１からｘの整数）、Ｓ１３１ｇ（ｇは１からｘの整数）、Ｓ１４１ｇ（ｇは１からｘの整数）と同様である。
【００６６】
ステップＳ１５３、Ｓ１５ｗの処理は、ステップＳ１５２と同様である。
【００６７】
ステップＳ１２ｗｇ（ｇは１からｘの整数）、Ｓ１３ｗｇ（ｇは１からｘの整数）、Ｓ１４ｗｇ（ｇは１からｘの整数）の動作はそれぞれ、ステップＳ１２１ｇ（ｇは１からｘの整数）、Ｓ１３１ｇ（ｇは１からｘの整数）、Ｓ１４１ｇ（ｇは１からｘの整数）と同様である。
【００６８】
ステップＳ１６ｗ：テスト制御回路２０４は、ステップＳ１５２と同様にパターン圧縮回路２１０の出力と期待値との比較を行う。
【００６９】
図９Ａは、図２の第一の機能ブロックと第二の機能ブロックの両方をテストするときのタイミングチャートであり、図９Ｂは、第二の機能ブロックのみをテストするときのタイミングチャートである。
【００７０】
図９Ａおよび図９Ｂは、図８のｗが２、ｘが１のケースを示している。図９Ａの第一の機能ブロック２１６と第二の機能ブロック２１８の両方をテストする場合（第一のテストモードの場合）、パターン生成回路２０６の初期化とパターン生成回路２０８の初期化は同時に行うことができず、また、パターン圧縮回路２１０とパターン圧縮回路２１２の期待値比較も同時に行うことができない。そのため、時刻ｔ１〜ｔ２、ｔ４〜ｔ５、ｔ７〜ｔ８に第一の機能ブロック２１６に待ち時間が発生し、時刻ｔ２〜ｔ３、ｔ５〜ｔ６、ｔ８〜ｔ９に第二の機能ブロック２１８に待ち時間が発生する。
【００７１】
一方、図９Ｂの第二の機能ブロック２１８のみをテストする場合（第二のテストモードの場合）、第一の機能ブロック２１６はステップＳ１１１、Ｓ１２１１の処理を行ったのち待機状態となる。そのため、ｔ５〜ｔ６、ｔ８〜ｔ９の第二の機能ブロック２１８の待ち時間が不要となり、テスト時間が短縮される。
【００７２】
例えば、第一の機能ブロック２１６の目標故障検出率が第二の機能ブロック２１８の目標故障検出率より低い場合、第一の機能ブロック２１６の目標故障検出率に到達するまで図９Ａの第一のテストモードのテストを繰り返し、その後、第二の機能ブロック２１８の目標故障検出率に到達するまで図９Ｂの第二のテストモードのテストを繰り返す方法が考えられる。これによって、図９Ａの第一のテストモードのテストのみを繰り返す場合に比べ、トータルのテスト時間を短縮することが可能である。
【００７３】
なお、図９Ｂの第二の機能ブロック２１８のみをテストする場合に、第一の機能ブロック２１６でステップＳ１１１、Ｓ１２１１の処理を行うのは、スキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）に値を設定するのが目的であるが、その理由は二つある。一つは、第一の機能ブロック２１６の出力が第二の機能ブロック２１８の入力となっている場合、その値を確定させる必要があるためである。もう一つは、第一の機能ブロック２１６内部の配線と、第二の機能ブロック２１８内部の配線の短絡を検出するためには、第一の機能ブロック２１６内部の配線の全てに対して値が０の場合と１の場合の両方のケースをテストする必要があるためである。後者の目的のためには、スキャンフリップフロップ２１ａｂ（ａは１からｎまでの整数、ｂは１からｍまでの整数）に１度値を設定しただけでは不十分で、図９Ｂのテストを複数回繰り返す必要がある。但し、各配線の値がそれぞれ０と１の状態を１回以上作れば良いため、繰り返し回数は比較的少なくて済むと考えられる。ＦＰＧＡでは配線の接続は記憶素子を用い、記憶素子は単純な配線よりも故障が発生しやすく、配線の故障検出が必要である。配線の故障検出は上述のように行うことができるので、本実施例はＦＰＧＡのテストに有効である。
【００７４】
図１０は、図９Ａおよび図９Ｂのタイミングチャートの処理サイクル数の例を示す図である。図１０の（＊１）に示すように、第一の機能ブロック２１６と第二の機能ブロック２１８が並列に動作可能なステップでは、第二の機能ブロック２１８の欄にサイクル数を記入し、第一の機能ブロック２１６を０とした。なお、図１０の（＊２）に示すステップは実行されない。
【００７５】
第一の機能ブロック２１６と第二の機能ブロック２１８の両方をテストする場合（第一のテストモードの場合）は６ｍ＋４ｎ＋２サイクル必要であるのに対し、第二の機能ブロック２１８のみをテストする場合（第二のテストモードの場合）は４ｍ＋４ｎ＋２サイクルで済み２ｍサイクルテスト時間を短縮することが可能である。
【００７６】
図９Ａでは第一の機能ブロック２１６と第二の機能ブロック２１８の２つの機能ブロックをテストする場合を示したが、２つの機能ブロックに限定されるものではなく、３つ以上の機能ブロックのテストにも適用することができる。本実施例の半導体集積回路装置は複数の機能ブロックを並行してテストする第一のテストモードと複数の機能ブロックのうち一つのみをテストする第二のテストモードを備える。
【００７７】
図１５は制御装置の動作のフローチャートである。図１５のフローチャートに基づく動作は以下のとおりである。
ステップＳ３１：電投入後通常処理前に制御装置１０２はテストを行う。
ステップＳ３２：制御装置１０２は異常がないかどうかをチェックする。ＹＥＳならばステップＳ３３に移り、ＮＯならばステップＳ３６に移る。
ステップＳ３３：制御装置１０２は通常処理を行う。
ステップＳ３４：制御装置１０２は通常処理の空き時間にテストを行う。
ステップＳ３５：制御装置１０２は異常がないかどうかをチェックする。ＹＥＳならばステップＳ３３に戻り、ＮＯならばステップＳ３６に移る。
ステップＳ３６：制御装置１０２は故障をＰＣに通知し、例えばＰＣは故障を表示装置の画面に表示する。
【００７８】
このように、制御装置１０２はテストを電源投入時および通常処理の空き時間に行うことで、稼働中に故障検出を行う。電源投入、遮断の回数が多く、制御装置の連続動作時間が比較的短い場合は、電源投入時にテストするだけでもよい。一度電源投入後電源を遮断することがほとんどなく連続動作時間が非常に長い場合は通常処理の空き時間のテストが適している。本実施例はテスト時間が短縮できるので、稼働中の故障検出に適している。
【００７９】
図１６は制御装置のテスト動作のフローチャートである。図１６のフローチャートに基づく動作は以下のとおりである。
【００８０】
ステップ４１：ＣＰＵ１０４はテスト制御回路２０４にテスト条件を設定する。ＣＰＵ１０４は初期値記憶回路６０４に初期値を設定し、期待値記憶回路６０６に期待値を設定する。また、ＣＰＵ１０４は状態制御回路６１０にどのテストモード（第一のテストモードでテストまたは第二のテストモード）でテストするのかを設定し、第二のテストモードでテストする場合はどの機能ブロックをテストするのかを設定する。また、ＣＰＵ１０４は状態制御回路６１０に図８で説明したｗおよびｘを設定する。最後に、ＣＰＵ１０４は状態制御回路６１０のテスト起動ビットに１を設定する。状態制御回路６１０のテスト起動ビットに１が設定されると、テストが開始される。
【００８１】
ステップＳ４２：ＣＰＵ１０４は状態制御回路６１０のテスト実行状態を読み出す。
【００８２】
ステップＳ４３：ＣＰＵ１０４は読み出した実行状態に基づいて、テストが終了したかどうかをチェックする。ＹＥＳであれば、ステップＳ４４に移り、ＮＯであればステップＳ４２に戻る。
【００８３】
ステップＳ４４：ＣＰＵ１０４は比較回路６０８から比較結果を読み出す。
【００８４】
ステップＳ４５：ＣＰＵ１０４は比較結果が一致するかどうかをチェックする。ＹＥＳであれば、ステップＳ４６に移り、ＮＯであればステップＳ４７に移る。
【００８５】
ステップＳ４６：ＣＰＵ１０４は次の通常処理を行う。
【００８６】
ステップＳ４７：ＣＰＵ１０４はＰＣに故障を通知する。
【００８７】
ＣＰＵは第一のテストモードと第二のテストモードとのいずれでテストするかを指定することができる。また、ＣＰＵは、第二のテストモードでは複数の機能ブロックのうちテストする一つの機能ブロックを指定することができる。第一のテストモードのテストと第二のテストモードのテストを組み合わせることにより、複数の機能ブロックの目標故障検出率が異なる場合でも、テスト時間を短縮することができる。第二のテストモードでは基本的に複数の機能ブロックのうち一つの機能ブロックしかテストされないので、半導体集積回路装置の消費電力を低減することができる。
【００８８】
本実施例では制御装置に適用した例を説明したが、これに限定されるものではなく、情報処理装置等の半導体集積回路装置を用いた装置に適用することができる。
【実施例２】
【００８９】
図１１は、図１の制御システムの入出力回路の第二の構成例を示すブロック図である。図１１の入出力回路と図２の入出力回路との違いは、第二の機能ブロック１１１８のスキャンフリップフロップの数が異なる点である。このため、本実施例では、スキャンチェインの本数をｐ本、スキャンチェインの長さをｑビットとした。ｐとｑの個々の値に制限値は無いが、ｐとｑの積がスキャンフリップフロップの必要数以上である必要がある。ｐとｑの選択肢は複数あり、テスト時間を最小化するための最適化の余地がある。例えば、ｐが少ない方がテスト時間が小さくなる場合は、ｐを極端に少なくしてｑがｎを大幅に超えても良いし、逆にｑが少ない方がテスト時間が小さくなる場合はｑを極端に少なくしてｐがｍを大幅に超えても良い。
【００９０】
論理回路６４ｃ（ｃは１からｐまでの整数）の動作は、論理回路２２ｃ（ｃは１からｍまでの整数）の動作と同様である。
【００９１】
パターン生成回路１１０８とパターン圧縮回路１１１２の構成は図４と図５のフリップフロップの個数をｍ個からｐ個に変更したものを使用する。
【００９２】
テスト制御回路１１０４は、第二の機能ブロック１１１８のテストを行う際の各処理ステップのサイクル数が図８に示したものと異なる。具体的には、ステップＳ１１１、Ｓ１５２、Ｓ１５３、Ｓ１５ｗ、Ｓ１６ｗのサイクル数をｍサイクルからpサイクルに変更し、ステップＳ１２ｈｇ（ｈは１からｗの整数、ｇは１からｘの整数）、Ｓ１４ｈｇ（ｈは１からｗの整数、ｇは１からｘの整数）のサイクル数をｎサイクルからｑサイクルに変更する。
【００９３】
図１２Ａは、図１１の第一の機能ブロックと第二の機能ブロックの両方をテストするときのタイミングチャートであり、図１２Ｂは、第二の機能ブロックのみをテストするときのタイミングチャートである。
【００９４】
図１２Ａおよび図１２Ｂでは、図９Ａおよび図９Ｂに比べてｐはｍより小さく、ｑはｎより小さい場合のタイミングチャートを示している。すなわち、第二の機能ブロック１１１８のパターン生成回路１１０８から入力するパターンのビット数は第一の機能ブロック２１６のパターン生成回路２０６から入力するｐパターンのビット数よりも少ない。また、第二の機能ブロック１１８のスキャンチェイン長が第一の機能ブロック２１６のスキャンチェイン長より短い。これにより、第二の機能ブロック１１１８のステップＳ１１１、Ｓ１２１１、Ｓ１４１１、Ｓ１５２、Ｓ１２２１、Ｓ１４２１、Ｓ１６２の処理時間が、第一の機能ブロック２１６より短くなっている。
【００９５】
第一の機能ブロック２１６と第二の機能ブロック１１１８の両方をテストする場合には、第二の機能ブロック１１１８のステップＳ１２１１、Ｓ１４１１、Ｓ１２２１、Ｓ１４２１の処理時間が短縮された結果、時刻ｔ４〜ｔ５、ｔ６〜ｔ７、ｔ１０〜ｔ１１、ｔ１２〜ｔ１３に第二の機能ブロック１１１８に待ち時間が発生し、テスト時間の短縮に結びついていない。
【００９６】
一方、第二の機能ブロック１１１８のみをテストする場合は、第二の機能ブロック１１１８のステップＳ１４１１、Ｓ１２２１、Ｓ１４２１の処理時間の短縮がそのままテスト時間の短縮に結びついている。
【００９７】
このように、第二の機能ブロック１１１８のスキャンフリップフロップの数が少ない場合には、本発明の効果はより顕著になる。
【００９８】
図１３は、図１２Ａおよび図１２Ｂのタイミングチャートの処理サイクル数の例を示す図である。ここでは、ｐはｍの半分、ｑはｎの半分である例を示した。第一の機能ブロック２１６と第二の機能ブロック１１１８の両方をテストする場合は４．５ｍ＋４ｎ＋２サイクル必要であるのに対し、第二の機能ブロック１１１８のみをテストする場合は２．５ｍ＋２．５ｎ＋２サイクルで済み２ｍ＋１．５ｎサイクルテスト時間を短縮することが可能である。なお、図１３（＊１）に示すステップは第一の機能ブロック２１６と第二の機能ブロック１１１８と並列に動作するため、第一の機能ブロック２１６の実質的なサイクル数は０である。図１３（＊２）に示すステップは第一の機能ブロック２１６と第二の機能ブロック１１１８と並列に動作するため、実質的なサイクル数は０．５ｎである。図１３の（＊３）に示すステップは実行されない。
【実施例３】
【００９９】
図１４は、図１の制御システムの入出力回路の第三の構成例を示す図である。図１４の入出力回路と図２の入出力回路との違いは、第二の機能ブロックにおいて、論理回路２４ｍが削除され、スキャンフリップフロップ２３ａ１（ａは１からｎまでの整数）の入力が直接信号線２２２に接続されている点、スキャンフリップフロップ２３ａｍ（ａは１からｎまでの整数）の出力が直接信号線２２２に接続されている点、および、論理回路２４ｃ（ｃは１からｍ−１の整数）が信号線２２２ではなく信号線１４２２に接続されている点である。
【０１００】
図２の入出力回路では、第二の機能ブロック２１８のみをテストする場合に、論理回路２４ｃ（ｃは１からｍの整数）の出力が第一の機能ブロック２１６に信号線２２２を介して接続されていた場合、その値はパターン圧縮回路２１２に入力されないため、故障検出率が低下する可能性がある。また、論理回路２４ｃ（ｃは１からｍの整数）の入力が第一の機能ブロック２１６に信号線２２２を介して接続されていた場合、その値が固定値となり取りうる値の全てのケースをテストすることができないため、故障検出率が低下する可能性がある。
【０１０１】
図１４の入出力回路では、第二の機能ブロック１４１８の論理回路２４ｃ（ｃは１からｍ−１の整数）の入力と出力は第一の機能ブロック２１６に信号線２２２を介して接続されていないため、図２の入出力回路のようなことが起こらず、故障検出率の低下を防止することが可能である。
【符号の説明】
【０１０２】
１０２：制御装置
１１０：入出力回路
２１、２３：スキャンフリップフロップ
２０４：テスト制御回路
２０６、２０８：パターン生成回路
２１０、２１２：パターン圧縮回路
６０４：初期値記憶回路
６０６：期待値記憶回路
６０８：比較回路
６１０：状態制御回路
６１２：クロック生成回路
１１０８：パターン生成回路
１１１２：パターン圧縮回路
【図１】
2016218533.tif 000003
【図２】
2016218533.tif 000004
【図３】
2016218533.tif 000005
【図４】
2016218533.tif 000006
【図５】
2016218533.tif 000007
【図６】
2016218533.tif 000008
【図７】
2016218533.tif 000009
【図８】
2016218533.tif 000010
【図９Ａ】
2016218533.tif 000011
【図９Ｂ】
2016218533.tif 000012
【図１０】
2016218533.tif 000013
【図１１】
2016218533.tif 000014
【図１２Ａ】
2016218533.tif 000015
【図１２Ｂ】
2016218533.tif 000016
【図１３】
2016218533.tif 000017
【図１４】
2016218533.tif 000018
【図１５】
2016218533.tif 000019
【図１６】
2016218533.tif 000020