(57)【特許請求の範囲】
【請求項１】
半導体集積回路内に仮定された故障を検出するための検査系列を生成する検査系列生成方法であって、
前記半導体集積回路は、
複数の論理ブロックと、
１つ又は複数のスキャンフリップフロップが直列に接続されることにより構成され、入力端子及び出力端子が前記半導体集積回路の外部端子に各々接続されている１つ又は複数のスキャンチェーンとを備え、
前記複数の論理ブロックのうち少なくとも一つは、
他の論理ブロックからの信号を受信する少なくとも１つのスキャンフリップフロップ及び他の論理ブロックに信号を送信する少なくとも１つのスキャンフリップフロップを含む複数のスキャンフリップフロップを有し、該複数のスキャンフリップフロップは各々前記１つ又は複数のスキャンチェーンのいずれかに属するスキャン論理ブロックであるものであり、
当該検査系列生成方法は、
仮定された故障が属するスキャン論理ブロックを１つの回路とみなし、前記故障を検出するための検査系列であるブロック検査系列を生成する第１の処理と、
前記ブロック検査系列の中の、前記スキャン論理ブロックに各スキャンチェーンを介して入力データをシフトインするパターンに、前記スキャン論理ブロックよりも入力側にあるスキャンフリップフロップをシフトさせるパターンを追加する第２の処理と、
前記ブロック検査系列の中の、前記スキャン論理ブロックから各スキャンチェーンを介して期待値比較用データをシフトアウトするパターンに、前記スキャン論理ブロックよりも出力側にあるスキャンフリップフロップをシフトさせるパターンを追加する第３の処理とを備えている
ことを特徴とする検査系列生成方法。
【請求項２】
半導体集積回路内に仮定された故障を検出するための検査系列を生成する検査系列生成方法であって、
前記半導体集積回路は、
複数の論理ブロックと、
１つ又は複数のスキャンフリップフロップが直列に接続されることにより構成され、入力端子及び出力端子が前記半導体集積回路の外部端子に各々接続されている１つ又は複数のスキャンチェーンとを備え、
前記複数の論理ブロックのうち少なくとも一つは、
他の論理ブロックからの信号を受信する少なくとも１つのスキャンフリップフロップ及び他の論理ブロックに信号を送信する少なくとも１つのスキャンフリップフロップを含む複数のスキャンフリップフロップを有し、該複数のスキャンフリップフロップは各々前記１つ又は複数のスキャンチェーンのいずれかに属するスキャン論理ブロックであるものであり、
当該検査系列生成方法は、
仮定された故障が属するスキャン論理ブロックを１つの回路とみなし、前記故障を検出するための検査系列であるブロック検査系列を生成する第１の処理と、
前記スキャン論理ブロックを通過するスキャンチェーンの中でスキャンフリップフロップを最も多く含むスキャンチェーンに含まれているスキャンフリップフロップの数をＭとし、前記スキャン論理ブロックを通過するスキャンチェーンの中で前記スキャン論理ブロックの中にあるスキャンフリップフロップを最も多く含むスキャンチェーンに含まれている前記スキャン論理ブロックの中にあるスキャンフリップフロップの数をＳとしたとき、
前記スキャン論理ブロックを通過する各スキャンチェーンに対して前記スキャン論理ブロックよりも入力側にあるスキャンフリップフロップの数とＳとの合計数をＭから減じた数を求め、前記ブロック検査系列の中の、前記スキャン論理ブロックに各スキャンチェーンを介して入力データをシフトインするパターンの前に、求めた数のスキャンフリップフロップをシフトさせるパターンを各々追加する一方、
前記スキャン論理ブロックを通過する各スキャンチェーンに対して前記スキャン論理ブロックよりも入力側にあるスキャンフリップフロップの数を求め、前記ブロック検査系列の中の、前記スキャン論理ブロックに各スキャンチェーンを介して入力データをシフトインするパターンの後に、求めた数のスキャンフリップフロップをシフトさせるパターンを各々追加する第２の処理と、
前記スキャン論理ブロックを通過する各スキャンチェーンに対して前記スキャン論理ブロックよりも出力側にあるスキャンフリップフロップの数を求め、前記ブロック検査系列の中の、前記スキャン論理ブロックから各スキャンチェーンを介して期待値比較用データをシフトアウトするパターンの前に、求めた数のスキャンフリップフロップをシフトさせるパターンを各々追加する一方、
前記スキャン論理ブロックを通過する各スキャンチェーンに対して前記スキャン論理ブロックよりも出力側にあるスキャンフリップフロップの数とＳとの合計数をＭから減じた数を求め、前記ブロック検査系列の中の、前記スキャン論理ブロックから各スキャンチェーンを介して期待値比較用データをシフトアウトするパターンの後に、求めた数のスキャンフリップフロップをシフトさせるパターンを各々追加する第３の処理とを備えている
ことを特徴とする検査系列生成方法。
【請求項３】
請求項２に記載の検査系列方法において、
前記スキャン論理ブロックを通過するスキャンチェーンの中で、前記半導体集積回路の外部端子から前記スキャン論理ブロックの入力端子まで入力データがシフトする間に信号が反転するスキャンチェーンがあるとき、前記ブロック検査系列の中の前記スキャンチェーンに対する入力データを反転させる第４の処理と、
前記スキャン論理ブロックを通過するスキャンチェーンの中で、前記スキャン論理ブロックの出力端子から前記半導体集積回路の外部端子まで期待値比較用データがシフトする間に信号が反転するスキャンチェーンがあるとき、前記ブロック検査系列の中の前記スキャンチェーンに対する期待値比較用データを反転させる第５の処理とをさらに備えている
ことを特徴とする検査系列生成方法。
【請求項４】
半導体集積回路内に仮定された複数の故障を検出するための検査系列を生成する検査系列生成方法であって、
前記半導体集積回路は、
複数の論理ブロックと、
１つ又は複数のスキャンフリップフロップが直列に接続されることにより構成され、入力端子及び出力端子が前記半導体集積回路の外部端子に各々接続されている１つ又は複数のスキャンチェーンとを備え、
前記複数の論理ブロックのうち少なくとも一つは、
他の論理ブロックからの信号を受信する少なくとも１つのスキャンフリップフロップ及び他の論理ブロックに信号を送信する少なくとも１つのスキャンフリップフロップを含む複数のスキャンフリップフロップを有し、該複数のスキャンフリップフロップは各々前記１つ又は複数のスキャンチェーンのいずれかに属するスキャン論理ブロックであるものであり、
当該検査系列生成方法は、
仮定された故障が属する各スキャン論理ブロックを１つの回路とみなし、該故障を検出するための検査系列であるブロック検査系列を各々生成し、生成された各ブロック検査系列を前記半導体集積回路全体を対象とした検査系列に各々変換する検査系列生成処理と、
前記検査系列生成処理によって生成された複数の検査系列をマージすることにより前記複数の故障を検出するための検査系列を生成する検査系列合成処理とを備えている
ことを特徴とする検査系列生成方法。
【請求項５】
請求項４に記載の検査系列生成方法において、
前記検査系列生成処理は、仮定された故障が属するスキャン論理ブロックが前記１つ又は複数のスキャンチェーンのいずれにも属さないフリップフロップを有しているとき、該フリップフロップをブラックボックスとみなし、前記スキャン論理ブロックをフルスキャン回路と仮定してブロック検査系列を生成する処理を有する
ことを特徴とする検査系列生成方法。
【請求項６】
半導体集積回路内に仮定された複数の故障を検出するための検査系列を生成する検査系列生成方法であって、
前記半導体集積回路は、
複数の論理ブロックと、
１つ又は複数のスキャンフリップフロップが直列に接続されることにより構成され、入力端子及び出力端子が前記半導体集積回路の外部端子に各々接続されている１つ又は複数のスキャンチェーンとを備え、
前記複数の論理ブロックのうち少なくとも一つは、
他の論理ブロックからの信号を受信する少なくとも１つのスキャンフリップフロップ及び他の論理ブロックに信号を送信する少なくとも１つのスキャンフリップフロップを含む複数のスキャンフリップフロップを有し、該複数のスキャンフリップフロップは各々前記１つ又は複数のスキャンチェーンのいずれかに属するスキャン論理ブロックであるものであり、
当該検査系列生成方法は、
仮定された故障が属するＡ個のスキャン論理ブロックのうちｉ（１≦ｉ≦Ａ）番目のスキャン論理ブロックに対し、該スキャン論理ブロックを１つの回路とみなしたときの検査系列であるブロック検査系列を生成する第１の処理と、
前記Ａ個のスキャン論理ブロックのいずれかを通過するスキャンチェーンの中で最も多くのスキャンフリップフロップを含むスキャンチェーンに含まれているスキャンフリップフロップの数をＮとし、前記Ａ個のスキャン論理ブロックのいずれかを通過するスキャンチェーンの中で前記ｉ番目のスキャン論理ブロックの中にあるスキャンフリップフロップを最も多く含むスキャンチェーンに含まれている前記ｉ番目のスキャン論理ブロックの中にあるスキャンフリップフロップの数をＴi とするとき、
前記ｉ番目のスキャン論理ブロックを通過する各スキャンチェーンに対して前記ｉ番目のスキャン論理ブロックよりも入力側にあるスキャンフリップフロップの数とＴi との合計数をＮから減じた数を求め、前記ブロック検査系列の中の、前記ｉ番目のスキャン論理ブロックに各スキャンチェーンを介して入力データをシフトインするパターンの前に、求めた数のスキャンフリップフロップをシフトさせるパターンを各々追加する一方、
前記ｉ番目のスキャン論理ブロックを通過する各スキャンチェーンに対して前記ｉ番目のスキャン論理ブロックよりも入力側にあるスキャンフリップフロップの数を求め、前記ブロック検査系列の中の、前記ｉ番目のスキャン論理ブロックに各スキャンチェーンを介して入力データをシフトインするパターンの後に、求めた数のスキャンフリップフロップをシフトさせるパターンを各々追加する第２の処理と、
前記ｉ番目のスキャン論理ブロックを通過する各スキャンチェーンに対して前記ｉ番目のスキャン論理ブロックよりも出力側にあるスキャンフリップフロップの数を求め、前記ブロック検査系列の中の、前記ｉ番目のスキャン論理ブロックから各スキャンチェーンを介して期待値比較用データをシフトアウトするパターンの前に、求めた数のスキャンフリップフロップをシフトさせるパターンを各々追加する一方、
前記ｉ番目のスキャン論理ブロックを通過する各スキャンチェーンに対して前記ｉ番目のスキャン論理ブロックよりも出力側にあるスキャンフリップフロップの数とＴi との合計数をＮから減じた数を求め、前記ブロック検査系列の中の、前記ｉ番目のスキャン論理ブロックから各スキャンチェーンを介して期待値比較用データをシフトアウトするパターンの後に、求めた数のスキャンフリップフロップをシフトさせるパターンを各々追加する第３の処理とを備え、
前記第１〜第３の処理を繰り返し実行することにより、前記Ａ個のスキャン論理ブロックに対する検査系列を各々生成し、さらに、
生成された複数の検査系列を時刻順に重ね合わせてマージすることにより前記複数の故障を検出するための検査系列を生成する第４の処理を備えている検査系列生成方法。
【請求項７】
請求項６に記載の検査系列生成方法において、
前記ｉ番目のスキャン論理ブロックを通過するスキャンチェーンの中で、前記半導体集積回路の外部端子から前記ｉ番目のスキャン論理ブロックの入力端子まで入力データがシフトする間に信号が反転するスキャンチェーンがあるとき、前記ｉ番目のスキャン論理ブロックに対するブロック検査系列の中の前記スキャンチェーンに対する入力データを反転させる第５の処理と、
前記ｉ番目のスキャン論理ブロックを通過するスキャンチェーンの中で、前記ｉ番目のスキャン論理ブロックの出力端子から前記半導体集積回路の外部端子まで期待値比較用データがシフトする間に信号が反転するスキャンチェーンがあるとき、前記ｉ番目のスキャン論理ブロックに対するブロック検査系列の中の前記スキャンチェーンに対する期待値比較用データを反転させる第６の処理とをさらに備えていることを特徴とする検査系列生成方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数のスキャンフリップフロップからなるスキャンチェーンを備えている半導体集積回路及びその故障検出のための検査系列生成方法に関するものである。
【０００２】
【従来の技術】
従来、半導体集積回路内に発生した故障を検査するために、予め構成されている複数のスキャンフリップフロップ（以下、スキャンＦＦと略記する）からなるスキャンチェーンを用いる方法が利用されている。
【０００３】
スキャンチェーンを用いた半導体集積回路の検査方法について、以下に説明する。
【０００４】
図２５はスキャンチェーンが構成されている半導体集積回路の回路図の例である。図２５において、半導体集積回路５０はスキャンＦＦ５１、５２及び５３並びにＡＮＤゲート５４を備えている。
【０００５】
スキャンＦＦ５１、５２及び５３は、ピンＮＴの状態が“０”のとき通常のフリップフロップとして動作し、入力されるクロックの立上がりエッジによってピンＤの状態を内部データとして取り込む（これを通常モードという）。一方、ピンＮＴの状態が“１”のときは、入力されるクロックの立上がりエッジによってピンＤＴの状態を内部データとして取り込む（これをスキャンモードという）。
【０００６】
半導体集積回路５０のスキャンイン（Scan In ）用外部端子ＳＩはスキャンＦＦ５１のピンＤＴに接続されており、スキャンＦＦ５１のピンＱはスキャンＦＦ５２のピンＤＴに接続されており、スキャンＦＦ５２のピンＱはスキャンＦＦ５３のピンＤＴに接続されている。さらに、スキャンＦＦ５３のピンＱは半導体集積回路５０のスキャンアウト（Scan Out）用外部端子ＳＯに接続されている。すなわち、スキャンＦＦ５１、５２及び５３は、スキャンモードにおいて、スキャンイン用外部端子ＳＩを入力としスキャンアウト用外部端子ＳＯを出力とするシフトレジスタを構成する。これがスキャンチェーンである。
【０００７】
このスキャンチェーンのシフト動作によって、各スキャンＦＦへの状態の設定及び各スキャンＦＦの状態の観測を容易に行うことができるので、半導体集積回路中の故障の検査が容易に実行できる。
【０００８】
半導体集積回路の故障を検出するための検査系列について、図２５に示す回路を対象にして説明する。
【０００９】
図２５に示す回路において、信号線Ａにおける１縮退故障の有無を検出する場合を考える。信号線Ａの１縮退故障を検出するためには、信号線Ａに“０”が設定され信号線Ｂに“１”が設定されたときの信号線Ｙの状態が観測できれば良い。信号線Ｙの状態が“０”であれば正常であり、“１”であれば故障が存在するということになる。
【００１０】
信号線Ａ及びＢの状態はスキャンチェーンを用いることによって容易に設定できる。半導体集積回路５０の外部端子ＮＴから“１”を入力してピンＮＴの状態を“１”にすることによりスキャンＦＦ５１、５２及び５３をスキャンモードにし、スキャンイン用外部端子ＳＩから“１”を、続いて“０”を入力してシフト動作を行うことによって、スキャンＦＦ５２に“１”を、スキャンＦＦ５１に“０”を内部データとして各々取り込ませれば良い。
【００１１】
また、信号線Ｙの状態はスキャンチェーンを用いることによって容易に観測できる。半導体集積回路５０の外部端子ＮＴから“０”を入力してピンＮＴの状態を“０”にすることによりスキャンＦＦ５１、５２及び５３を通常モードにし、１クロック分の通常の動作を行わせることにより信号線Ｙの状態をスキャンＦＦ５３にピンＤから取り込ませる。その後、ピンＮＴの状態を“１”にすることによりスキャンＦＦ５１、５２及び５３をスキャンモードにし、シフト動作によってスキャンＦＦ５３の内部データすなわち信号線Ｙの状態をスキャンアウト用外部端子ＳＯから出力させれば良い。
【００１２】
以上のような動作を行う際の半導体集積回路５０の各外部端子のデータは図２６のようになる。図２６において、０及び１は各々入力“０”及び“１”を表し、Ｌは出力における期待値が“０”であることを表す。また、Ｘはドントケアである。
【００１３】
図２６において、時刻０〜５は、スキャンモード（ＮＴ＝１）においてシフトイン動作を行っている。時刻０及び１は、スキャンＦＦ５３に設定する値を外部端子ＳＩから入力している。スキャンＦＦ５３には値を設定する必要がないので入力はドントケアである。時刻２及び３は、スキャンＦＦ５２に設定する値を外部端子ＳＩから入力している。スキャンＦＦ５２には“１”を設定する必要があるので“１”を入力している。さらに時刻４及び５は、スキャンＦＦ５１に設定する値を外部端子ＳＩから入力している。スキャンＦＦ５１には“０”を設定する必要があるので“０”を入力している。ここまででシフトイン動作が完了する。
【００１４】
時刻６及び７は、通常モード（ＮＴ＝０）において、信号線Ｙの状態をスキャンＦＦ５３に取り込んでいる。
【００１５】
時刻８〜１３は、スキャンモード（ＮＴ＝１）においてシフトアウト動作を行っている。時刻８及び９は、スキャンＦＦ５３に取り込まれたデータを外部端子ＳＯから出力している。このデータが“０”であれば正常であり“１”であれば故障であると判断する（このようなデータを期待値比較用データという）。さらに、時刻１０及び１１はスキャンＦＦ５２に取り込まれたデータを外部端子ＳＯから出力し、時刻１２及び１３はスキャンＦＦ５１に取り込まれたデータを外部端子ＳＯから出力している。ここまででシフトアウト動作が完了する。
【００１６】
図２６に示すようなデータのパターンを検査系列という。クロックの立ち上がりによってデータが１つのフリップフロップ分シフトするので、検査系列の２行分が１つのシフトパターンに当たる。また、スキャンチェーンを備えた半導体集積回路の故障検出のために図２６に示すような検査系列を生成する方法を検査系列生成方法といい、従来から様々な方法が提案されている。
【００１７】
【発明が解決しようとする課題】
ところが、従来の検査系列生成方法には以下のような問題がある。
【００１８】
従来の検査系列生成方法では、検査系列の生成を半導体集積回路全体に対して行っていた。すなわち、スキャンイン用外部端子からのデータ入力、スキャンチェーンにおける入力データのシフトイン動作及び期待値比較用データのシフトアウト動作、スキャンアウト用外部端子からのデータ出力といった一連の動作を半導体集積回路全体に対して行うための検査系列の生成を行っていた。
【００１９】
半導体集積回路の規模が小さいときは、従来の検査系列生成方法で特に問題はなかった。しかし、集積技術の進歩に伴い半導体集積回路の規模が大きくなるにつれて、検査系列の生成に膨大な時間を要するようになった。特に近年、電子計算機によって検査系列を自動生成する場合が多いが、半導体集積回路の集積度の飛躍的な向上により従来の検査系列生成方法では検査系列生成及び系列長の圧縮に膨大な時間及び膨大な記憶容量が必要となるという問題があった。
【００２０】
前記の問題に鑑み、本発明は、検査系列生成及び系列長の圧縮を容易に行うことができる半導体集積回路を対象にした検査系列生成方法を提供するものである。
【００２１】
【課題を解決するための手段】
前記の目的を達成するため、本発明は、スキャンチェーンに属するスキャンＦＦによって他の論理ブロックとの信号の送受信を行うスキャン論理ブロックを備えた半導体集積回路を対象にし、前記スキャン論理ブロックを１つの回路と見なしてブロック検査系列を生成した後に、このブロック検査系列を半導体集積回路全体を対象とする検査系列に変換する検査系列生成方法である。
【００２２】
具体的に本発明が対象とする半導体集積回路は、複数の論理ブロックを備え、１つ又は複数のスキャンフリップフロップが直列に接続されることにより構成され、入力端子及び出力端子が前記半導体集積回路の外部端子に各々接続されている１つ又は複数のスキャンチェーンを備え、前記複数の論理ブロックのうち少なくとも一つは、他の論理ブロックからの信号を受信する少なくとも１つのスキャンフリップフロップ及び他の論理ブロックに信号を送信する少なくとも１つのスキャンフリップフロップを含む複数のスキャンフリップフロップを有し、該複数のスキャンフリップフロップは各々前記１つ又は複数のスキャンチェーンのいずれかに属するスキャン論理ブロックである構成とする。
【００２３】
この半導体集積回路の構成により、スキャンチェーンのシフト動作を用いることによって、スキャン論理ブロック中のスキャンフリップフロップに外部からデータを設定したりスキャンフリップフロップが保持するデータを外部から観測したりすることが可能となる。すなわち、スキャン論理ブロック中のスキャンフリップフロップは可制御又は可観測となる。スキャン論理ブロックは半導体集積回路の外部又は他の論理ブロックからの信号をスキャンフリップフロップで受信するので、スキャン論理ブロックの入力が可制御となり、半導体集積回路の外部又は他の論理ブロックへの信号もスキャンフリップフロップから送信するのでスキャン論理ブロックの出力が可観測となる。このため、スキャン論理ブロックを１つの回路として単独で検査を行うことができる。
【００２４】
そして、請求項１の発明が講じた解決手段は、前記半導体集積回路内に仮定された故障を検出するための検査系列を生成する検査系列生成方法を対象とし、仮定された故障が属するスキャン論理ブロックを１つの回路とみなし、前記故障を検出するための検査系列であるブロック検査系列を生成する第１の処理と、前記ブロック検査系列の中の、前記スキャン論理ブロックに各スキャンチェーンを介して入力データをシフトインするパターンに、前記スキャン論理ブロックよりも入力側にあるスキャンフリップフロップをシフトさせるパターンを追加する第２の処理と、前記ブロック検査系列の中の、前記スキャン論理ブロックから各スキャンチェーンを介して期待値比較用データをシフトアウトするパターンに、前記スキャン論理ブロックよりも出力側にあるスキャンフリップフロップをシフトさせるパターンを追加する第３の処理とを備えている構成とするものである。
【００２５】
また、請求項２の発明が講じた解決手段は、前記半導体集積回路内に仮定された故障を検出するための検査系列を生成する検査系列生成方法を対象とし、仮定された故障が属するスキャン論理ブロックを１つの回路とみなし、前記故障を検出するための検査系列であるブロック検査系列を生成する第１の処理と、前記スキャン論理ブロックを通過するスキャンチェーンの中でスキャンフリップフロップを最も多く含むスキャンチェーンに含まれているスキャンフリップフロップの数をＭとし、前記スキャン論理ブロックを通過するスキャンチェーンの中で前記スキャン論理ブロックの中にあるスキャンフリップフロップを最も多く含むスキャンチェーンに含まれている前記スキャン論理ブロックの中にあるスキャンフリップフロップの数をＳとしたとき、前記スキャン論理ブロックを通過する各スキャンチェーンに対して前記スキャン論理ブロックよりも入力側にあるスキャンフリップフロップの数とＳとの合計数をＭから減じた数を求め、前記ブロック検査系列の中の、前記スキャン論理ブロックに各スキャンチェーンを介して入力データをシフトインするパターンの前に、求めた数のスキャンフリップフロップをシフトさせるパターンを各々追加する一方、前記スキャン論理ブロックを通過する各スキャンチェーンに対して前記スキャン論理ブロックよりも入力側にあるスキャンフリップフロップの数を求め、前記ブロック検査系列の中の、前記スキャン論理ブロックに各スキャンチェーンを介して入力データをシフトインするパターンの後に、求めた数のスキャンフリップフロップをシフトさせるパターンを各々追加する第２の処理と、前記スキャン論理ブロックを通過する各スキャンチェーンに対して前記スキャン論理ブロックよりも出力側にあるスキャンフリップフロップの数を求め、前記ブロック検査系列の中の、前記スキャン論理ブロックから各スキャンチェーンを介して期待値比較用データをシフトアウトするパターンの前に、求めた数のスキャンフリップフロップをシフトさせるパターンを各々追加する一方、前記スキャン論理ブロックを通過する各スキャンチェーンに対して前記スキャン論理ブロックよりも出力側にあるスキャンフリップフロップの数とＳとの合計数をＭから減じた数を求め、前記ブロック検査系列の中の、前記スキャン論理ブロックから各スキャンチェーンを介して期待値比較用データをシフトアウトするパターンの後に、求めた数のスキャンフリップフロップをシフトさせるパターンを各々追加する第３の処理とを備えている構成とするものである。
【００２６】
請求項２の発明の構成により、第１の処理によって、スキャン論理ブロックを１つの回路とみなしたときの検査系列であるブロック検査系列が生成される。第２の処理によって、第１の処理によって得られたブロック検査系列において、各スキャンチェーンを介して前記スキャン論理ブロックに入力データをシフトインするシフトパターンの前後に、スキャン論理ブロックよりも入力側の構成に応じたシフトパターンが追加される。第３の処理によって、第１の処理によって得られたブロック検査系列において、各スキャンチェーンを介して前記スキャン論理ブロックから期待値比較用データをシフトアウトするシフトパターンの前後に、スキャン論理ブロックよりも出力側の構成に応じたシフトパターンが追加される。このため、前記ブロック検査系列が半導体集積回路全体を対象とした検査系列に変換されることになる。
【００２７】
また、請求項３の発明は、請求項２の発明の構成に、前記スキャン論理ブロックを通過するスキャンチェーンの中で、前記半導体集積回路の外部端子から前記スキャン論理ブロックの入力端子まで入力データがシフトする間に信号が反転するスキャンチェーンがあるとき、前記ブロック検査系列の中の前記スキャンチェーンに対する入力データを反転させる第４の処理と、前記スキャン論理ブロックを通過するスキャンチェーンの中で、前記スキャン論理ブロックの出力端子から前記半導体集積回路の外部端子まで期待値比較用データがシフトする間に信号が反転するスキャンチェーンがあるとき、前記ブロック検査系列の中の前記スキャンチェーンに対する期待値比較用データを反転させる第５の処理とをさらに備えている構成を付加するものである。
【００２８】
請求項３の発明の構成により、半導体集積回路の外部端子から前記スキャン論理ブロックの入力端子まで入力データがシフトする間に信号が反転するスキャンチェーンがあるとき、第４の処理によって、前記ブロック検査系列の中の前記スキャンチェーンに対する入力データは反転される。また、前記スキャン論理ブロックの出力端子から前記半導体集積回路の外部端子まで期待値比較用データがシフトする間に信号が反転するスキャンチェーンがあるとき、第５の処理によって、前記ブロック検査系列の中の前記スキャンチェーンに対する期待値比較用データは反転される。
【００２９】
また、請求項４の発明が講じた解決手段は、前記半導体集積回路内に仮定された複数の故障を検出するための検査系列を生成する検査系列生成方法を対象とし、仮定された故障が属する各スキャン論理ブロックを１つの回路とみなし、該故障を検出するための検査系列であるブロック検査系列を各々生成し、生成された各ブロック検査系列を前記半導体集積回路全体を対象とした検査系列に各々変換する検査系列生成処理と、前記検査系列生成処理によって生成された複数の検査系列をマージして前記複数の故障を検出するための検査系列を生成する検査系列合成処理とを備えている構成とするものである。
【００３０】
請求項５の発明は、請求項４の発明の構成に、前記検査系列生成処理は、仮定された故障が属するスキャン論理ブロックが前記１つ又は複数のスキャンチェーンのいずれにも属さないフリップフロップを有しているとき、該フリップフロップをブラックボックスとみなし前記スキャン論理ブロックをフルスキャン回路と仮定してブロック検査系列を生成する処理を有する構成を付加するものである。
【００３１】
また、請求項６の発明が講じた解決手段は、前記半導体集積回路内に仮定された複数の故障を検出するための検査系列を生成する検査系列生成方法を対象とし、仮定された故障が属するＡ個のスキャン論理ブロックのうちｉ（１≦ｉ≦Ａ）番目のスキャン論理ブロックに対し、該スキャン論理ブロックを１つの回路とみなしたときの検査系列であるブロック検査系列を生成する第１の処理と、前記Ａ個のスキャン論理ブロックのいずれかを通過するスキャンチェーンの中で最も多くのスキャンフリップフロップを含むスキャンチェーンに含まれているスキャンフリップフロップの数をＮとし、前記Ａ個のスキャン論理ブロックのいずれかを通過するスキャンチェーンの中でｉ番目のスキャン論理ブロックの中にあるスキャンフリップフロップを最も多く含むスキャンチェーンに含まれている前記ｉ番目のスキャン論理ブロックの中にあるスキャンフリップフロップの数をＴi とするとき、前記ｉ番目のスキャン論理ブロックを通過する各スキャンチェーンに対して前記ｉ番目のスキャン論理ブロックよりも入力側にあるスキャンフリップフロップの数とＴi との合計数をＮから減じた数を求め、前記ブロック検査系列の中の、前記ｉ番目のスキャン論理ブロックに各スキャンチェーンを介して入力データをシフトインするパターンの前に、求めた数のスキャンフリップフロップをシフトさせるパターンを各々追加する一方、前記ｉ番目のスキャン論理ブロックを通過する各スキャンチェーンに対して前記ｉ番目のスキャン論理ブロックよりも入力側にあるスキャンフリップフロップの数を求め、前記ブロック検査系列の中の、前記ｉ番目のスキャン論理ブロックに各スキャンチェーンを介して入力データをシフトインするパターンの後に、求めた数のスキャンフリップフロップをシフトさせるパターンを各々追加する第２の処理と、前記ｉ番目のスキャン論理ブロックを通過する各スキャンチェーンに対して前記ｉ番目のスキャン論理ブロックよりも出力側にあるスキャンフリップフロップの数を求め、前記ブロック検査系列の中の、前記ｉ番目のスキャン論理ブロックから各スキャンチェーンを介して期待値比較用データをシフトアウトするパターンの前に、求めた数のスキャンフリップフロップをシフトさせるパターンを各々追加する一方、前記ｉ番目のスキャン論理ブロックを通過する各スキャンチェーンに対して前記ｉ番目のスキャン論理ブロックよりも出力側にあるスキャンフリップフロップの数とＴi との合計数をＮから減じた数を求め、前記ブロック検査系列の中の、前記ｉ番目のスキャン論理ブロックから各スキャンチェーンを介して期待値比較用データをシフトアウトするパターンの後に、求めた数のスキャンフリップフロップをシフトさせるパターンを各々追加する第３の処理とを備え、前記第１〜第３の処理を繰り返し実行することにより、前記Ａ個のスキャン論理ブロックに対する検査系列を各々生成し、さらに、生成された複数の検査系列を時刻順に重ね合わせてマージすることによりＡ個のスキャン論理ブロック内に各々仮定した故障を検出するための検査系列を生成する第４の処理を備えている構成とするものである。
【００３２】
請求項６の発明の構成により、第１の処理によって、ｉ番目のスキャン論理ブロックを１つの回路とみなしたときの検査系列であるブロック検査系列が生成される。第２の処理によって、第１の処理によって得られたブロック検査系列において、各スキャンチェーンを介して前記スキャン論理ブロックに入力データをシフトインするシフトパターンの前後に、スキャン論理ブロックよりも入力側の構成に応じたシフトパターンが追加される。第３の処理によって、第１の処理によって得られたブロック検査系列において、各スキャンチェーンを介して前記スキャン論理ブロックから期待値比較用データをシフトアウトするシフトパターンの前後に、スキャン論理ブロックよりも出力側の構成に応じたシフトパターンが追加される。このため、前記ブロック検査系列が半導体集積回路全体を対象とした検査系列に変換される。前記第１〜第３の処理を繰り返し実行されると、Ａ個のスキャン論理ブロックに対する検査系列が各々生成されることになる。第４の処理によって、Ａ個のスキャン論理ブロックに対する各検査系列がマージされることにより仮定した故障を検出するための検査系列が生成される。
【００３３】
請求項７の発明は、請求項６の発明の構成に、前記ｉ番目のスキャン論理ブロックを通過するスキャンチェーンの中で、前記半導体集積回路の外部端子から前記ｉ番目のスキャン論理ブロックの入力端子まで入力データがシフトする間に信号が反転するスキャンチェーンがあるとき、前記ｉ番目のスキャン論理ブロックに対するブロック検査系列の中の前記スキャンチェーンに対する入力データを反転させる第５の処理と、前記ｉ番目のスキャン論理ブロックを通過するスキャンチェーンの中で、前記ｉ番目のスキャン論理ブロックの出力端子から前記半導体集積回路の外部端子まで期待値比較用データがシフトする間に信号が反転するスキャンチェーンがあるとき、前記ｉ番目のスキャン論理ブロックに対するブロック検査系列の中の前記スキャンチェーンに対する期待値比較用データを反転させる第６の処理とをさらに備えている構成を付加するものである。
【００３４】
【発明の実施の形態】
以下、本発明の実施形態について図面を参照しながら説明する。
【００３５】
（第１の実施形態）
図１は本発明の第１の実施形態に係る半導体集積回路１０の回路図である。図１において、半導体集積回路１０は４つの論理ブロック１２、１４、１６及び１８を備えている。論理ブロック１２はスキャンＦＦ１２ａ、１２ｂ及び１２ｃ、ＮＡＮＤゲート１２ｄ及びＤフリップフロップ１２ｅを有している。また、論理ブロック１４はスキャンＦＦ１４ａ及び１４ｂを有しており、論理ブロック１８はスキャンＦＦ１８ａを有している。スキャンＦＦ１４ａ、１４ｂ、１２ｂ、１２ｃ及び１８ａによって第１のスキャンチェーンが構成され、スキャンＦＦ１２ａによって第２のスキャンチェーンが構成されている。
【００３６】
論理ブロック１２は、他の論理ブロック１４及び１６からの信号をスキャンＦＦ１２ａ及び１２ｂによって受信する一方、論理ブロック１８への信号をスキャンＦＦ１２ｃによって送信する。本実施形態では、他の論理ブロックからの信号をスキャンＦＦによって受信する一方、他の論理ブロックへの信号をスキャンＦＦによって送信する論理ブロックをスキャン論理ブロックと呼ぶ。スキャン論理ブロック１２において、スキャンＦＦ１２ｂ及び１２ｃによって第１の部分スキャンチェーンが構成され、スキャンＦＦ１２ａによって第２の部分スキャンチェーンが構成されている。第１の部分スキャンチェーンの入力はブロックスキャンインピンＢ＿ＳＩに接続されており、ブロックスキャンインピンＢ＿ＳＩは論理ブロック１４の有するスキャンＦＦ１４ａ及び１４ｂを介して第１のスキャンイン用外部端子ＳＩ１に接続されている。一方、第１の部分スキャンチェーンの出力はブロックスキャンアウトピンＢ＿ＳＯに接続されており、ブロックスキャンアウトピンＢ＿ＳＯは論理ブロック１８の有するスキャンＦＦ１８ａを介して第１のスキャンアウト用外部端子ＳＯ１に接続されている。第２の部分スキャンチェーンの入力は第２のスキャンイン用外部端子ＳＩ２に直接接続されている一方、その出力は第２のスキャンアウト用外部端子ＳＯ２に直接接続されている。
【００３７】
図２は本発明の第１の実施形態に係る検査系列生成方法における処理の流れを示す流れ図である。
【００３８】
図２において、処理Ｓ１１は、スキャン論理ブロックを１つの回路とみなしたときの検査系列であるブロック検査系列を生成する処理である。
【００３９】
処理Ｓ１２は、処理Ｓ１１によって生成されたブロック検査系列において、実際の回路と対応するように、スキャン論理ブロックに入力データをシフトインするパターンの前後にスキャンＦＦをシフトさせるパターン（以下、シフトパターンという）を追加する処理である。
【００４０】
処理Ｓ１３は、処理Ｓ１１によって生成されたブロック検査系列において、実際の回路と対応するように、スキャン論理ブロックから出力データをシフトアウトするパターンの前後にシフトパターンを追加する処理である。
【００４１】
図１に示す半導体集積回路において、スキャン論理ブロック１２の信号線Ａにおける０縮退故障の有無を検査するための検査系列を図２に示す検査系列生成方法によって生成する場合を例にとって、本実施形態を説明する。
【００４２】
ここで、検査対象となるスキャン論理ブロックを通過するスキャンチェーンの中でスキャンＦＦを最も多く含むスキャンチェーンに含まれているスキャンＦＦの数をＭとし、検査対象となるスキャン論理ブロックを通過するスキャンチェーンの中で前記スキャン論理ブロックの中にあるスキャンＦＦを最も多く含むスキャンチェーンに含まれている前記スキャン論理ブロックの中にあるスキャンＦＦの数をＳとする。
【００４３】
図１に示す半導体集積回路では、第１のスキャンチェーンに含まれるスキャンＦＦの数は５であり第２のスキャンチェーンに含まれるスキャンＦＦの数は１であるので、Ｍの値は５となる。また、スキャン論理ブロック１２の中にあるスキャンＦＦのうち、第１のスキャンチェーンに含まれるスキャンＦＦの数は２であり第２のスキャンチェーンに含まれるスキャンＦＦの数は１であるので、Ｓの値は２となる。
【００４４】
また、第１のスキャンチェーンに含まれるスキャンＦＦの中でスキャン論理ブロック１２よりも入力側にあるものの数は２、出力側にあるものの数は１、第２のスキャンチェーンに含まれるスキャンＦＦの中でスキャン論理ブロック１２よりも入力側にあるものの数は０、出力側にあるものの数は０である。
【００４５】
まず、処理Ｓ１１によって、図３に示すようなブロック検査系列が得られる。図３において、ＣＬＫ、ＮＴ、ＩＮ、ＳＩ２及びＳＯ２は半導体集積回路１０の外部端子であり、Ｂ＿ＳＩ、Ｂ＿ＳＯは検査対象となるスキャン論理ブロック１２のピンである。０及び１は各々入力“０”及び“１”を表し、Ｈは出力における期待値が“１”であることを表す。また、Ｘはドントケアである。さらに、クロックの立ち上がりによってデータが１つシフトするので、検査系列の２行分が１つのシフトパターンに当たる。
【００４６】
時刻０〜３は、スキャンモード（ＮＴ＝１）において、スキャン論理ブロック１２の各部分スキャンチェーンに入力データをシフトインする。時刻４〜７は、通常モード（ＮＴ＝０）において、信号線ＡのデータをスキャンＦＦ１２ｃに取り込む。時刻８〜１１は、スキャンモード（ＮＴ＝１）において、スキャン論理ブロック１２の各部分スキャンチェーンから期待値比較用のデータをシフトアウトする。
【００４７】
次に、処理Ｓ１２によって、図３に示す検査系列において、シフトインするパターンの前後にシフトパターンを追加する。
【００４８】
具体的には次のような処理を行う。各部分スキャンチェーンが属するスキャンチェーン毎に、スキャン論理ブロック１２よりも入力側にあるスキャンＦＦの数とＳとをＭから減じた数を求め、求めた数のシフトパターンを各部分スキャンチェーンに入力データをシフトインするパターンの前に追加する。Ｍの値が５でありＳの値が２であることから、第１の部分スキャンチェーンに入力データをシフトインするパターンの前に１（＝Ｍ−Ｓ−２）個のシフトパターンが追加され、第２の部分スキャンチェーンに入力データをシフトインするシフトパターンの前に３（＝Ｍ−Ｓ−０）個のシフトパターンが追加される。
【００４９】
また、各部分スキャンチェーンに入力データをシフトインするパターンの後に、各部分スキャンチェーンが属するスキャンチェーンにおいてスキャン論理ブロック１２よりも入力側にあるスキャンＦＦの数のシフトパターンを追加する。第１の部分スキャンチェーンに入力データをシフトインするパターンの後に２個のシフトパターンが追加され、第２の部分スキャンチェーンに入力データをシフトインするシフトパターンの後に０個のシフトパターンが追加される。処理Ｓ１２を行った結果得られる検査系列を図４に示す。
【００５０】
次に、処理Ｓ１３によって、図４に示す検査系列において、シフトアウトするパターンの前後にシフトパターンを追加する。
【００５１】
具体的には次のような処理を行う。各部分スキャンチェーンから出力データをシフトアウトするパターンの前に、各部分スキャンチェーンが属するスキャンチェーンにおけるスキャン論理ブロック１２よりも出力側にあるスキャンＦＦの数のシフトパターンを追加する。第１の部分スキャンチェーンから出力データをシフトアウトするパターンの後に１個のシフトパターンが追加され、第２の部分スキャンチェーンから出力データをシフトアウトするパターンの後に０個のシフトパターンが追加される。
【００５２】
また、各部分スキャンチェーンが属するスキャンチェーン毎に、スキャン論理ブロック１２よりも出力側にあるスキャンＦＦの数とＳとをＭから減じた数を求め、求めた数のシフトパターンを各部分スキャンチェーンから出力データをシフトアウトするパターンの後に追加する。Ｍの値が５でありＳの値が２であることから、第１の部分スキャンチェーンから出力データをシフトアウトするパターンの後に２（＝Ｍ−Ｓ−１）個のシフトパターンが追加され、第２の部分スキャンチェーンから出力データをシフトアウトするシフトパターンの後に３（＝Ｍ−Ｓ−０）個のシフトパターンが追加される。処理Ｓ１３を行った結果得られる検査系列を図５に示す。Ｂ＿ＳＩをＳＩに、Ｂ＿ＳＯをＳＯにそれぞれ変更することによって、図５に示す検査系列は半導体集積回路１０全体を対象とした検査系列となる。
【００５３】
以上説明したように、本実施形態によると、スキャン論理ブロックを１つの回路とみなしてブロック検査系列を生成した後に、シフトインするパターンの前後及びシフトアウトするパターンの前後に求められた数のシフトパターンを追加することによって、半導体集積回路全体を対象とした検査系列を従来よりも容易に生成することができる。
【００５４】
なお、本実施形態によると、シフトインに要するクロック数とシフトアウトに要するクロック数とが等しくなることから、複数の故障の検出のために検査系列を連続して生成する場合に、ある検査系列のシフトアウトパターンと次の検査系列のシフトインパターンとのマージが可能となり、より短い検査系列を容易に生成することができる。
【００５５】
（第２の実施形態）
図６は本発明の第２の実施形態に係る半導体集積回路２０の回路図である。図１に示した第１の実施形態に係る半導体集積回路１０と比較すると、論理ブロック１４中のスキャンＦＦ１４ｂの出力が反転している（ピンＮＱから出力されている）点、及び論理ブロック１８中のスキャンＦＦ１８ａの出力が反転している（ピンＮＱから出力されている）点を除いて構成は同一であり、同一の構成要素には同一符号を付している。
【００５６】
図７は本発明の第２の実施形態に係る検査系列生成方法の処理の流れを示す流れ図である。図２に示す第１の実施形態に係る検査系列生成方法と比較すると、処理Ｓ１１と処理Ｓ２１、処理Ｓ１２と処理Ｓ２４、及び処理Ｓ１３と処理Ｓ２５とは各々同じ処理である。
【００５７】
処理Ｓ２２は、スキャン論理ブロックを通過する各スキャンチェーンの中で、半導体集積回路のスキャンイン用外部端子からスキャン論理ブロックの入力ピンまでスキャンチェーンを介して入力データがシフトする間に信号が反転するスキャンチェーンについては、シフトインするパターン中の入力データを反転させる処理である。
【００５８】
処理Ｓ２３は、スキャン論理ブロックを通過する各スキャンチェーンの中で、スキャン論理ブロックの出力ピンから半導体集積回路のスキャンアウト用外部端子までスキャンチェーンを介して期待値比較用データがシフトする間に信号が反転するスキャンチェーンについては、シフトアウトするシフトパターン中の期待値比較用のデータを反転させる処理である。
【００５９】
図６に示す半導体集積回路において、スキャン論理ブロック１２の信号線Ａにおける０縮退故障の有無を検査するための検査系列を図７に示す検査系列生成方法によって生成する場合を例にとって、本実施形態を説明する。
【００６０】
まず、処理Ｓ２１によって、第１の実施形態と同様に図３に示すようなブロック検査系列が得られる。
【００６１】
次に、処理Ｓ２２によって、図３に示すブロック検査系列が図８に示すようなブロック検査系列に変換される。ここでは、第１のスキャンチェーンを構成し且つスキャン論理ブロック１２よりも入力側にあるスキャンＦＦ１４ｂの出力が反転しているので、時刻２及び３のブロックスキャンインピンＢ＿ＳＩの入力データが“１”から“０”に変換される。
【００６２】
次に、処理Ｓ２３によって、図８に示すブロック検査系列が図９に示すようなブロック検査系列に変換される。ここでは、第１のスキャンチェーンを構成し且つスキャン論理ブロック１２よりも出力側にあるスキャンＦＦ１８ａの出力が反転しているので、時刻８のブロックスキャンアウトピンＢ＿ＳＯの期待値比較用データが“Ｈ”から“Ｌ”に変換される。Ｌは出力における期待値が“０”であることを示す。
【００６３】
次に、処理Ｓ２４及びＳ２５によって、第１の実施形態と同様にシフトインパターンの前後及びシフトアウトパターンの前後にシフトパターンの追加が行われ、図１０に示すような検査系列が得られる。Ｂ＿ＳＩをＳＩに、Ｂ＿ＳＯをＳＯにそれぞれ変更することによって、図１０に示す検査系列は半導体集積回路２０全体を対象とした検査系列となる。
【００６４】
以上説明したように、本実施形態によると、半導体集積回路のスキャンイン用外部端子からスキャン論理ブロックの入力までスキャンチェーンを介して入力データがシフトする間に信号が反転する回路、及びスキャン論理ブロックの出力からスキャンアウト用外部端子までスキャンチェーンを介して期待値比較用のデータがシフトする間に信号が反転する回路についても、検査系列の生成をスキャン論理ブロック毎に行うことができる。
【００６５】
なお、第１及び第２の実施形態に係る半導体集積回路のスキャン論理ブロックは、他の論理ブロックからの信号を必ずしも全てスキャンＦＦによって受信していなくても構わない。また、他の論理ブロックへの信号を必ずしも全てスキャンＦＦによって送信していなくても構わない。
【００６６】
図１１は本実施形態に係る半導体集積回路の他の例を示す回路図である。図１１において、２０Ａは半導体集積回路であり、図６に示す半導体集積回路２０と比較すると、スキャン論理ブロック１２にピンＩＮＸ１及びＯＲゲート１２ｆが追加され、論理ブロック１４中のスキャンＦＦ１４ｂの出力がピンＩＮＸ１に入力されている点を除いて同じ構成であり、同一の構成要素には同一符号を付している。
【００６７】
スキャン論理ブロック１２は、ピンＩＮＸ１の信号をスキャンＦＦで受信していない。しかし、外部端子ＩＮからの入力を“１”にすればピンＩＮＸ１の入力に関わらず（ドントケアとして扱えば良い）ＯＲゲート１２ｆの出力を“１”にすることができるので、すでに説明した図６に示す回路に対する方法と同様の方法によって検査系列を生成することができる。
【００６８】
（第３の実施形態）
本発明の第３の実施形態は、複数のスキャン論理ブロックを対象にして検査系列を生成するものである。
【００６９】
図１２は本発明の第３の実施形態に係る半導体集積回路３０の回路図である。図１２において、半導体集積回路３０は第１のスキャン論理ブロック３２、第２のスキャン論理ブロック３４、論理ブロック３６及び３８を備えている。第１のスキャン論理ブロック３２はスキャンＦＦ３２ａ、３２ｂ及び３２ｃ、Ｄフリップフロップ３２ｄ、ＮＡＮＤゲート３２ｅ及びＡＮＤゲート３２ｆを有している。第２のスキャン論理ブロック３４はスキャンＦＦ３４ａ及び３４ｂを有している。論理ブロック３８はスキャンＦＦ３８ａを有している。スキャンＦＦ３４ａ、３４ｂ、３２ｂ、３２ｃ及び３８ａによって第１のスキャンチェーンが構成され、スキャンＦＦ３２ａによって第２のスキャンチェーンが構成される。
【００７０】
第１のスキャン論理ブロック３２は、第２のスキャン論理ブロック３４及び論理ブロック３６からの信号をスキャンＦＦ３２ａ及び３２ｂによって受信する一方、論理ブロック３８への信号をスキャンＦＦ３２ｃによって送信する。スキャンＦＦ３２ｂ及び３２ｃによって第１の部分スキャンチェーンが構成され、スキャンＦＦ３２ａによって第２の部分スキャンチェーンが構成されている。第１の部分スキャンチェーンの入力はブロックスキャンインピンＢ＿ＳＩに接続されており、ブロックスキャンインピンＢ＿ＳＩは第２のスキャン論理ブロック３４の有するスキャンＦＦ３４ａ及び３４ｂを介して第１のスキャンイン用外部端子ＳＩ１に接続されている。第１の部分スキャンチェーンの出力はブロックスキャンアウトピンＢ＿ＳＯに接続されており、ブロックスキャンアウトピンＢ＿ＳＯは論理ブロック３８の有するスキャンＦＦ３８ａを介して第１のスキャンアウト用外部端子ＳＯ１に接続されている。また、第２の部分スキャンチェーンの入力は第２のスキャンイン用外部端子ＳＩ２に直接接続されている一方、その出力は第２のスキャンアウト用外部端子ＳＯ２に直接接続されている。
【００７１】
第２のスキャン論理ブロック３４は、第１のスキャンイン用外部端子ＳＩ１からの信号をスキャンＦＦ３４ａによって受信する一方、第１の論理ブロック３２への信号をスキャンＦＦ３４ｂによって送信する。
【００７２】
図１３は本発明の第３の実施形態に係る検査系列生成方法における処理の流れを示す流れ図である。図７に示す第２の実施形態に係る検査系列生成方法と比較すると、処理Ｓ３１は処理Ｓ２１と同じであり、処理Ｓ３２は処理Ｓ２２と同じであり、処理Ｓ３３は処理Ｓ２３と同じである。処理Ｓ３４は処理Ｓ２４とほぼ同様であるが、追加するシフトパターンの数を求める方法が若干異なる。また、処理Ｓ３５も処理Ｓ２５とほぼ同様であるが、追加するシフトパターンの数を求める方法が若干異なる。この点については後述する。
【００７３】
処理Ｓ３１から処理Ｓ３５までをスキャン論理ブロック毎に実行する。処理Ｓ３６は、検査対象となる全てのスキャン論理ブロックについて検査系列を生成したか否かを判定する処理である。
【００７４】
処理Ｓ３７は、各スキャン論理ブロックについて生成された検査系列をマージする処理である。
【００７５】
図１２に示す半導体集積回路３０において、第１のスキャン論理ブロック３２の信号線Ｂにおける１縮退故障の有無を検査すると共に第２のスキャン論理ブロック３４の信号線Ｃにおける０縮退故障の有無を検査するための検査系列を図１３に示す検査系列方法によって生成する場合を例にとって、本実施形態を説明する。
【００７６】
ここで、検査対象となるスキャン論理ブロックのいずれかを通過するスキャンチェーンの中で最も多くのスキャンＦＦを含むスキャンチェーンのスキャンＦＦの数をＮとする。また、検査対象となるスキャン論理ブロック毎に、スキャン論理ブロックを通過するスキャンチェーンの中でスキャン論理ブロックの中にあるスキャンＦＦを最も多く含むスキャンチェーンに含まれているスキャン論理ブロックの中にあるスキャンＦＦの数を求め、その数をＴi （ｉはスキャン論理ブロックの番号を示す）とする。
【００７７】
図１２に示す半導体集積回路では、第１のスキャンチェーンに含まれるスキャンＦＦの数は５であり第２のスキャンチェーンに含まれるスキャンＦＦの数は１であるので、Ｎの値は５となる。また、第１のスキャン論理ブロック３２の中にあるスキャンＦＦのうち第１のスキャンチェーンに含まれるスキャンＦＦの数は２であり第２のスキャンチェーンに含まれるスキャンＦＦの数は１であるので、Ｔ1 は２となる。第２のスキャン論理ブロック３４の中にある２つのスキャンＦＦは共に第１のスキャンチェーンに含まれるので、Ｔ2 は２となる。
【００７８】
まず、第１のスキャン論理ブロック３２について検査系列を生成する。第１のスキャンチェーンに含まれるスキャンＦＦの中で第１のスキャン論理ブロック３２よりも入力側にあるものの数は２、出力側にあるものの数は１であり、第２のスキャンチェーンに含まれるスキャンＦＦの中で第１のスキャン論理ブロック３２よりも入力側にあるものの数は０、出力側にあるものの数は０である。
【００７９】
処理Ｓ３１によって、Ｄフリップフロップ３２ｄをブラックボックスとして、図１４に示すようなブロック検査系列が得られる。図１４において、ＣＬＫ、ＮＴ、ＳＩ２及びＳＯ２は半導体集積回路３０の外部端子のデータであり、Ｂ＿ＳＩ及びＢ＿ＳＯは検査対象となる第１のスキャン論理ブロック３２のピンのデータである。
【００８０】
スキャンＦＦ３４ｂの出力が反転している（ピンＮＱから出力されている）ので、処理Ｓ３２によって、図１４に示すブロック検査系列が図１５に示すようなブロック検査系列に変換される。また、スキャンＦＦ３８ａの出力が反転している（ピンＮＱから出力されている）ので、処理Ｓ３３によって、図１５に示すブロック検査系列が図１６に示すようなブロック検査系列に変換される。
【００８１】
次に、処理Ｓ３４によって、図１６に示す検査系列において、シフトインするパターンの前後にシフトパターンを追加する。
【００８２】
具体的には次のような処理を行う。各部分スキャンチェーンが属するスキャンチェーン毎に、第１のスキャン論理ブロック３２よりも入力側にあるスキャンＦＦの数とＴ1 とをＮから減じた数を求め、求めた数のシフトパターンを各部分スキャンチェーンに入力データをシフトインするパターンの前に追加する。Ｎの値が５でありＴ1 の値が２であることから、第１の部分スキャンチェーンに入力データをシフトインするパターンの前に１（＝Ｎ−Ｔ1 −２）個のシフトパターンが追加され、第２の部分スキャンチェーンに入力データをシフトインするパターンの前に３（＝Ｎ−Ｔ1 −０）個のシフトパターンが追加される。
【００８３】
また、各部分スキャンチェーンに入力データをシフトインするパターンの後に、各部分スキャンチェーンの属するスキャンチェーンにおいて第１のスキャン論理ブロック３２よりも入力側にあるスキャンＦＦの数のシフトパターンを追加する。第１の部分スキャンチェーンに入力データをシフトインするパターンの後に２個のシフトパターンが追加され、第２の部分スキャンチェーンに入力データをシフトインするシフトパターンの後に０個のシフトパターンが追加される。処理Ｓ３４を行った結果得られる検査系列を図１７に示す。
【００８４】
次に、処理Ｓ３５によって、図１７に示す検査系列において、シフトアウトするパターンの前後にシフトパターンを追加する。
【００８５】
具体的には次のような処理を行う。各部分スキャンチェーンから出力データをシフトアウトするパターンの前に、各部分スキャンチェーンが属するスキャンチェーンにおいて第１のスキャン論理ブロック３２よりも出力側にあるスキャンＦＦの数のシフトパターンを追加する。第１の部分スキャンチェーンから出力データをシフトアウトするパターンの前に１個のシフトパターンが追加され、第２の部分スキャンチェーンから出力データをシフトアウトするパターンの前に０個のシフトパターンが追加される。
【００８６】
また、各部分スキャンチェーンが属するスキャンチェーン毎に、第１のスキャン論理ブロック３２よりも出力側にあるスキャンＦＦの数とＴ1 とをＮから減じた数を求め、求めた数のシフトパターンを各部分スキャンチェーンから出力データをシフトアウトするパターンの後に追加する。Ｎの値が５でありＴ1 の値が２であることから、第１の部分スキャンチェーンから出力データをシフトアウトするパターンの後に２（＝Ｎ−Ｔ1 −１）個のシフトパターンが追加され、第２の部分スキャンチェーンから出力データをシフトアウトするパターンの後に３（＝Ｎ−Ｔ1 −０）個のシフトパターンが追加される。
【００８７】
処理Ｓ３５を行った結果得られる検査系列を図１８に示す。Ｂ＿ＳＩをＳＩ１に、Ｂ＿ＳＯをＳＯ２にそれぞれ変更することによって、図１８に示す検査系列は半導体集積回路３０全体を対象とした検査系列となる。
【００８８】
次に、処理Ｓ３６によって、全てのスキャン論理ブロックに対して検査系列の生成が終了したか否かを判断する。第２のスキャン論理ブロック３４の検査系列はまだ生成されていないので、処理Ｓ３１へ戻る。
【００８９】
次に、第２のスキャン論理ブロック３４に対して検査系列を生成する。第２のスキャン論理ブロック３４を通過するスキャンチェーンは、第１のスキャンチェーンのみであり、第１のスキャンチェーンに含まれるスキャンＦＦの中で第２のスキャン論理ブロック３２よりも入力側にあるものの数は０、出力側にあるものの数は３である。
【００９０】
まず、処理Ｓ３１によって図１９に示すブロック検査系列が得られる。
【００９１】
第１のスキャンチェーンにおいて第２のスキャン論理ブロック３４よりも入力側では信号が反転しないので、処理Ｓ３２はスキップされる。スキャンＦＦ３８ａの出力が反転しているので、処理Ｓ３３によって、図１９に示すブロック検査系列が図２０に示すようなブロック検査系列に変換される。
【００９２】
次に、処理Ｓ３４によって、Ｎが５、Ｔ2 が２であることから、第１のスキャンチェーンに入力データをシフトインするパターンの前に３個のシフトパターンが追加され、その後に０個のシフトパターンが追加される。処理Ｓ３４の結果得られる検査系列を図２１に示す。
【００９３】
次に、処理Ｓ３５によって、第１のスキャンチェーンから出力データをシフトアウトするパターンの前に３個のシフトパターンが追加され、その後に０個のシフトパターンが追加される。
【００９４】
処理Ｓ３５を行った結果得られる検査系列を図２２に示す。Ｂ＿ＳＩをＳＩ２に変更することによって、図２２に示す検査系列は半導体集積回路３０全体を対象とした検査系列となる。
【００９５】
次に、処理Ｓ３６によって、全てのスキャン論理ブロックに対して検査系列が生成されたと判断されるので、処理Ｓ３７へ進む。
【００９６】
処理Ｓ３７によって、第１のスキャン論理ブロック３２に対して生成された検査系列及び第２のスキャン論理ブロック３４に対して生成された検査系列をマージする。
【００９７】
図１８に示す検査系列においてＢ＿ＳＩをＳＩ１に変更すると共にＢ＿ＳＯをＳＯ２に変更し、また、図２２に示す検査系列においてＢ＿ＳＩをＳＩ２に変更する。得られた２つの検査系列の各ピンのデータを、時刻順に重ね合わせて行く。データが異なる場合は、Ｘ（ドントケア）でない方を優先して選択する。この結果、図２３に示すような検査系列を得ることができる。図２３に示す検査系列を用いれば、第１のスキャン論理ブロック３２の信号線Ｂにおける１縮退故障の有無及び第２のスキャン論理ブロック３４の信号線Ｃにおける０縮退故障の有無を共に検査することができる。
【００９８】
以上説明したように、本実施形態によると、検査系列の生成をスキャン論理ブロック毎に行った後にそのパターンをマージすることによって検査系列の圧縮を行うことができる。
【００９９】
また、半導体集積回路の外部端子からスキャン論理ブロックの入力までスキャンチェーンを介して入力データがシフトする間に信号が反転する回路、及びスキャン論理ブロックの出力から半導体集積回路の外部端子までスキャンチェーンを介して出力データがシフトする間に信号が反転する回路が含まれていても、検査系列の生成及び圧縮を行うことができる。
【０１００】
なお、本実施形態によると、シフトインに要するクロック数とシフトアウトに要するクロック数とが等しくなることから、複数の故障の検出のために検査系列を連続して生成する場合に、ある検査系列のシフトアウトパターンと次の検査系列のシフトインパターンとのマージが可能となり、より短い検査系列を容易に生成することができる。
【０１０１】
なお、本実施形態に係る半導体集積回路のスキャン論理ブロックは、他の論理ブロックからの信号を必ずしも全てスキャンＦＦによって受信していなくても構わない。また、他の論理ブロックへの信号を必ずしも全てスキャンＦＦによって送信していなくても構わない。
【０１０２】
図２４は本実施形態に係る半導体集積回路の回路図である。図２４において、３０Ａは半導体集積回路であり、図１２に示す半導体集積回路３０と比較すると、第１のスキャン論理ブロック３２の２入力ＡＮＤゲート３２ｆの代わりに３入力ＡＮＤゲート３２ｇが配置され、さらにピンＩＮＸ２が追加され、第２のスキャン論理ブロック３４中のスキャンＦＦ３４ｂの出力がピンＩＮＸ２に入力されている点を除いて同じ構成であり、同一の構成要素には同一符号を付している。
【０１０３】
第１のスキャン論理ブロック３２は、ピンＩＮＸ２の信号をスキャンＦＦで受信していない。しかし、スキャンＦＦ３２ａ及び３２ｂの出力をシフトイン動作によって各々“１”に設定すればピンＩＮＸ２の入力に関わらず（ドントケアとして扱えば良い）ＡＮＤゲート３２ｇの出力を“０”にできるので、すでに説明した図１２に示す回路に対する方法と同様の方法によって検査系列を生成することができる。
【０１０４】
【発明の効果】
請求項１〜３の発明に係る検査系列生成方法によると、スキャン論理ブロックを１つの回路とみなしてブロック検査系列を生成した後、簡単な処理によって半導体集積回路全体を対象とした検査系列に変換することができるので、大規模な半導体集積回路に対しても検査系列を容易に生成することができる。
【０１０５】
請求項４〜７の発明に係る検査系列生成方法によると、スキャン論理ブロック毎に検査系列を生成した後マージすることにより複数の故障を検査するための検査系列を生成することができるので、大規模な半導体集積回路に対しても検査系列を容易に生成することができると共に従来よりも検査系列を圧縮することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施形態に係る半導体集積回路の回路図である。
【図２】本発明の第１の実施形態に係る検査系列生成方法における処理の流れを示す流れ図である。
【図３】本発明の第１の実施形態に係る検査系列生成方法の処理Ｓ１１によって得られる検査系列を示す図である。
【図４】本発明の第１の実施形態に係る検査系列生成方法の処理Ｓ１２によって得られる検査系列を示す図である。
【図５】本発明の第１の実施形態に係る検査系列生成方法によって得られる検査系列を示す図である。
【図６】本発明の第２の実施形態に係る半導体集積回路の回路図である。
【図７】本発明の第２の実施形態に係る検査系列生成方法における処理の流れを示す流れ図である。
【図８】本発明の第２の実施形態に係る検査系列生成方法の処理Ｓ２２によって得られる検査系列を示す図である。
【図９】本発明の第２の実施形態に係る検査系列生成方法の処理Ｓ２３によって得られる検査系列を示す図である。
【図１０】本発明の第２の実施形態に係る検査系列生成方法によって得られる検査系列を示す図である。
【図１１】本発明の第２の実施形態に係る半導体集積回路の回路図である。
【図１２】本発明の第３の実施形態に係る半導体集積回路の回路図である。
【図１３】本発明の第３の実施形態に係る検査系列生成方法における処理の流れを示す流れ図である。
【図１４】本発明の第３の実施形態に係る検査系列生成方法の処理Ｓ３１によって得られる検査系列を示す図である。
【図１５】本発明の第３の実施形態に係る検査系列生成方法の処理Ｓ３２によって得られる検査系列を示す図である。
【図１６】本発明の第３の実施形態に係る検査系列生成方法の処理Ｓ３３によって得られる検査系列を示す図である。
【図１７】本発明の第３の実施形態に係る検査系列生成方法の処理Ｓ３４によって得られる検査系列を示す図である。
【図１８】本発明の第３の実施形態に係る検査系列生成方法の処理Ｓ３５によって得られる検査系列を示す図である。
【図１９】本発明の第３の実施形態に係る検査系列生成方法の処理Ｓ３１によって得られる検査系列を示す図である。
【図２０】本発明の第３の実施形態に係る検査系列生成方法の処理Ｓ３３によって得られる検査系列を示す図である。
【図２１】本発明の第３の実施形態に係る検査系列生成方法の処理Ｓ３４によって得られる検査系列を示す図である。
【図２２】本発明の第３の実施形態に係る検査系列生成方法の処理Ｓ３５によって得られる検査系列を示す図である。
【図２３】本発明の第３の実施形態に係る検査系列生成方法によって得られる検査系列を示す図である。
【図２４】本発明の第３の実施形態に係る半導体集積回路の回路図である。
【図２５】従来の検査系列生成方法を説明するための半導体集積回路の回路図である。
【図２６】検査系列の例である。
【符号の説明】
１０  半導体集積回路
１２  スキャン論理ブロック
１２ａ，１２ｂ，１２ｃ，１４ａ，１４ｂ，１８ａ  スキャンフリップフロップ１４，１６，１８  論理ブロック
２０，２０Ａ  半導体集積回路
３０，３０Ａ  半導体集積回路
３２  スキャン論理ブロック
３２ａ，３２ｂ，３２ｃ，３４ａ，３４ｂ，３８ａ  スキャンフリップフロップ３４，３６，３８  論理ブロック
【図１】
0003544415.tif 000002
【図２】
0003544415.tif 000003
【図３】
0003544415.tif 000004
【図４】
0003544415.tif 000005
【図５】
0003544415.tif 000006
【図６】
0003544415.tif 000007
【図７】
0003544415.tif 000008
【図８】
0003544415.tif 000009
【図９】
0003544415.tif 000010
【図１０】
0003544415.tif 000011
【図１１】
0003544415.tif 000012
【図１２】
0003544415.tif 000013
【図１３】
0003544415.tif 000014
【図１４】
0003544415.tif 000015
【図１５】
0003544415.tif 000016
【図１６】
0003544415.tif 000017
【図１７】
0003544415.tif 000018
【図１８】
0003544415.tif 000019
【図１９】
0003544415.tif 000020
【図２０】
0003544415.tif 000021
【図２１】
0003544415.tif 000022
【図２２】
0003544415.tif 000023
【図２３】
0003544415.tif 000024
【図２４】
0003544415.tif 000025
【図２５】
0003544415.tif 000026
【図２６】
0003544415.tif 000027