(57)【要約】【課題】複数のクロックドメインを用いる半導体集積回路のテスト回路において、ダブルクロックを印加するタイミングを任意に設定することを可能にする。【解決手段】複数のトリガクロックのうち、被テスト回路の複数のクロックドメインのクロックうちの選択クロックに対応する選択トリガクロックにおいてダブルクロックの抽出トリガを検出するとイネーブル信号を出力するダブルクロック抽出回路と、イネーブル信号をトリガとして選択クロックからダブルクロックを抽出するクロックマスク回路と、ダブルクロックを入力して被テスト回路に対してスキャンテストを実行するスキャンフリップフロップとを備える。ダブルクロック抽出回路と、クロックマスク回路と、スキャンフリップフロップとは、複数のクロックドメインに対応して設けられる。抽出トリガは、複数のクロックドメイン間においてダブルクロックを出力するべきタイミング関係に基づいて選択トリガクロックの各々に設定される。【選択図】図１０
2011203158.tif 000002
【特許請求の範囲】
【請求項１】
被テスト回路の動作に用いられる複数のクロックドメインのうちから選択される選択クロックと前記複数のクロックドメインに対応して設けられた複数のトリガクロックのうちの前記選択クロックに対応する選択トリガクロックとを入力して、前記選択トリガクロックにおいて前記被テスト回路のスキャンテストに用いられるダブルクロックの抽出トリガを検出するとイネーブル信号を出力するダブルクロック抽出回路と、
前記選択クロックと前記イネーブル信号とを入力して、前記イネーブル信号をトリガとして前記選択クロックからダブルクロックを抽出するクロックマスク回路と、
前記ダブルクロックを入力して前記被テスト回路に対して前記スキャンテストを実行するスキャンフリップフロップと
を備え、
前記ダブルクロック抽出回路と、前記クロックマスク回路と、前記スキャンフリップフロップとは、前記複数のクロックドメインに対応して設けられ、
前記抽出トリガは、前記複数のクロックドメイン間において前記ダブルクロックを出力するべきタイミング関係に基づいて前記選択トリガクロックの各々に設定される
半導体集積回路のテスト回路。
【請求項２】
請求項１に記載の半導体集積回路のテスト回路であって、
前記ダブルクロック抽出回路は、前記タイミング関係として、当該クロックドメインにおいて出力されるべき前記ダブルクロックと他のクロックドメインにおいて出力されるべき前記ダブルクロックとが、前記スキャンテストにおけるテストレートの繰り返し周期を１単位としたときに何周期分の間隔を空けて出力すべきかを示すテストレート間隔数に基づいて前記抽出トリガの設定された前記選択トリガクロックを入力する
半導体集積回路のテスト回路。
【請求項３】
請求項２に記載の半導体集積回路のテスト回路であって、
前記テストレート間隔数は、前記複数のクロックドメイン間において前記ダブルクロックを出力するタイミングの違反値と前記トリガクロックのテストレートとに基づいて算出される
半導体集積回路のテスト回路。
【請求項４】
請求項３に記載の半導体集積回路のテスト回路であって、
前記テストレート間隔数は、前記違反値であるＳＬＡＣＫ値と前記テストレートとを用いて、ｉｎｔ（）を引数の整数とすると、
テストレート間隔数＝ｉｎｔ（−１×ＳＬＡＣＫ値／テストレート＋３）  
により算出される
半導体集積回路のテスト回路。
【請求項５】
請求項１から請求項４までのいずれかに記載の半導体集積回路のテスト回路であって、
前記抽出トリガは、前記トリガクロックにおける２クロックのハイパルスであり、
前記ダブルクロック抽出回路は、前記抽出トリガの２クロック目の立ち上がりを起点として、前記選択クロックにおける２クロック分のハイパルスを前記イネーブル信号として出力する
半導体集積回路のテスト回路。
【請求項６】
被テスト回路の動作に用いられる複数のクロックドメインのうちから選択される選択クロックと前記複数のクロックドメインに対応して設けられた複数のトリガクロックのうちの前記選択クロックに対応する選択トリガクロックとを入力するステップと、
前記選択トリガクロックにおいて前記被テスト回路のスキャンテストに用いられるダブルクロックの抽出トリガを検出するとイネーブル信号を出力するステップと、
前記選択クロックと前記イネーブル信号とを入力して、前記イネーブル信号をトリガとして前記選択クロックからダブルクロックを抽出するステップと、
前記ダブルクロックを入力して前記被テスト回路に対して前記スキャンテストを実行するステップと
を備え、
前記抽出トリガは、前記複数のクロックドメイン間において前記ダブルクロックを出力するべきタイミング関係に基づいて前記選択トリガクロックの各々に設定される
半導体集積回路のテスト方法。
【請求項７】
請求項６に記載の半導体集積回路のテスト方法であって、前記選択トリガクロックを入力するステップは、
前記タイミング関係として、当該クロックドメインにおいて出力されるべき前記ダブルクロックと他のクロックドメインにおいて出力されるべき前記ダブルクロックとが、前記スキャンテストにおけるテストレートの繰り返し周期を１単位としたときに何周期分の間隔を空けて出力すべきかを示すテストレート間隔数に基づいて前記抽出トリガの設定された前記選択トリガクロックを入力するステップ
を含む半導体集積回路のテスト方法。
【請求項８】
請求項７に記載の半導体集積回路のテスト方法であって、テストレート間隔数に基づいて前記抽出トリガの設定された前記選択トリガクロックを入力するステップは、
前記複数のクロックドメイン間において前記ダブルクロックを出力するタイミングの違反値と前記トリガクロックのテストレートとに基づいて前記テストレート間隔数を算出するステップ
を含む半導体集積回路のテスト方法。
【請求項９】
請求項８に記載の半導体集積回路のテスト方法であって、前記算出するステップは、
前記テストレート間隔数を、前記違反値であるＳＬＡＣＫ値と前記テストレートとを用いて、ｉｎｔ（）を引数の整数とすると、
テストレート間隔数＝ｉｎｔ（−１×ＳＬＡＣＫ値／テストレート＋３）  
により算出するステップ
を含む半導体集積回路のテスト方法。
【請求項１０】
請求項６から請求項９までのいずれかに記載の半導体集積回路のテスト方法であって、
抽出トリガは、前記トリガクロックにおける２クロックのハイパルスであり、
前記出力するステップは、
前記抽出トリガの２クロック目の立ち上がりを起点として、前記選択クロックにおける２クロック分のハイパルスを前記イネーブル信号として出力するステップ
を含む半導体集積回路のテスト方法。
【請求項１１】
請求項１から請求項５までのいずれかに記載の半導体集積回路のテスト回路のテストパタンを作成する半導体集積回路のテストパタン作成方法であって、
コンピュータが、被テスト回路に入力されるテストパタンの繰り返し周期の１サイクル時間であるテストレートを抽出するステップと、
前記コンピュータが、前記被テスト回路で用いられる複数のクロックドメインを抽出するステップと、
前記コンピュータが、前記複数のクロックドメインのうちから選択される２つの選択クロックドメインの選択クロック間において、前記被テスト回路のスキャンテストに用いられるダブルクロックを出力するべきタイミング関係が存在するか否かを判定するステップと、
前記コンピュータが、前記タイミング関係が存在する場合に、前記タイミング関係に基づいて、前記複数のクロックドメインに対応して設けられた複数のトリガクロックのうちの前記選択クロックに対応する選択トリガクロックに前記抽出トリガを設定したテストパタンを作成するステップと
を備える半導体集積回路のテストパタン作成方法。
【請求項１２】
請求項１１に記載の半導体集積回路のテストパタン作成方法であって、前記テストパタンを作成するステップは、
前記コンピュータが、前記選択クロック間において前記テストレートの何周期分の間隔を空けて前記ダブルクロックを出力すべきかを示すテストレート間隔数を算出するステップと、
前記コンピュータが、前記選択トリガクロックに前記抽出トリガを設定したテストパタンを前記テストレート間隔数に基づいて作成するステップと
を含む半導体集積回路のテストパタン作成方法。
【請求項１３】
請求項１２に記載の半導体集積回路のテストパタン作成方法であって、前記算出するステップは、
コンピュータが、前記選択クロックドメインのクロック間において前記ダブルクロックを出力するタイミングの違反値であるＳＬＡＣＫ値と、前記トリガクロックのテストレートとを用いて、ｉｎｔ（）を引数の整数とすると、
テストレート間隔数＝ｉｎｔ（−１×ＳＬＡＣＫ値／テストレート＋３）  
によりテストレート間隔数を算出するステップ
を含む半導体集積回路のテストパタン作成方法。
【請求項１４】
請求項１１から請求項１３までのいずれかに記載の半導体集積回路のテストパタン作成方法であって、前記判定するステップは、
コンピュータが、前記複数のクロックドメインのうちから組み合わせ可能な全ての組み合わせによる２つの選択クロックドメインを抽出するステップと、
コンピュータが、前記２つの選択クロックドメインの各々全ての間において前記タイミング関係が存在するか否かを判定するステップと
を含む半導体集積回路のテストパタン作成方法。
【請求項１５】
請求項１１から請求項１４までのいずれかに記載の半導体集積回路のテストパタン作成方法であって、前記テストパタンを作成するステップは、
コンピュータが、前記選択クロックドメイン間に前記タイミング関係が存在しない場合、前記選択クロックドメイン間における前記テストレート間隔数を「２」と設定したテストパタンを作成するステップ
を含む半導体集積回路のテストパタン作成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、遅延故障試験を行う半導体集積回路のテスト回路に関する。
【背景技術】
【０００２】
半導体集積回路は、製造後に不良の有無を確認するために試験（以下、テスト）が行われる。このようなテストに関し、テスタビリティを高めるテスト設計の一手法として、スキャンテスト設計が知られている。
【０００３】
遅延故障テストは、スキャンテストのうちの一つのテスト技術である。遅延故障テストは、半導体集積回路が実動作速度で正常に動作するかを確認するテストである。スキャンテストは、高速化の進む半導体集積回路における必須の技術である。半導体集積回路の１チップに搭載される機能ブロック数の増加に伴い、テスト設計の困難性が増して半導体集積回路の設計期間も長期化している。また、半導体集積回路の回路規模の増加により、テストパタンも膨大な量となりテスト実行時間も増加している。半導体集積回路のテスタビリティを高めて製造後の不良を減少させ、かつ、設計期間やテスト実行時間の増加を抑えることが可能なテスト設計やテストパタン生成技術が求められている。
【０００４】
遅延故障テストは、シフト動作と、ラウンチ動作と、キャプチャ動作とからなる。シフト動作は、スキャンチェーンを用いて、複数のスキャンフリップフロップにデータを順に設定する動作である。ラウンチ動作は、設定されたデータをユーザ仕様に基づいて構成された回路（以下、ユーザ回路）のうち、テスト対象の回路（以下、被テスト回路）の信号ラインに遷移させる動作である。キャプチャ動作は、遷移させたデータを実動作速度でスキャンフリップフロップに取り込む動作である。
【０００５】
また、遅延故障テストには、シングルキャプチャ手法と、マルチキャプチャ（以下、「複数キャプチャ」も同義）手法とが存在する。シングルキャプチャ手法は、前述の３つの動作からなる一連の動作を１パタンセットとする場合に、複数クロックドメインからなる半導体集積回路において、１パタンセットで１つのクロックドメインの被テスト回路のパスのみをテストする手法である。一方、マルチキャプチャ手法は、前述の３つの動作からなる一連の動作を１パタンセットとする場合に、複数クロックドメインからなる半導体集積回路において、１パタンセットで複数のクロックドメインの被テスト回路の信号ラインをテストする手法である。特許文献１は、マルチキャプチャ手法により、複数パタンセット実施するようなテスト設計の効率化を図る技術を開示している。
【０００６】
なお、以下では、半導体集積回路においてユーザ回路の被テスト回路に対するスキャンテストを行うためにユーザ回路へ組み込まれた回路をテスト回路と呼ぶ。また、ユーザ回路が活性化された状態をユーザモードと呼び、ユーザ回路をテストする為にテスト回路が活性化した状態をテストモードと呼ぶ。ユーザモードとテストモードとは、モードを切り替えるための信号により切り替えを行えるものとする。
【０００７】
［半導体集積回路の設計手順］
以下に、従来の半導体集積回路設計における仕様設計からテストパタン作成までのフローを説明する。図１は、従来の半導体集積回路設計における仕様設計からテストパタン作成までを説明するフローチャートである。本説明では、テスト容易化手法としてマルチキャプチャ手法を含むテスト設計手法を適用してテストパタンを作成する。
【０００８】
まず、半導体集積回路で実現するべき仕様やシステム設計が行われる（ステップＳ１１０１）。次に、動作レベル設計が行われた後に（ステップＳ１１０２）、動作レベル検証が行われる（ステップＳ１１０３）。動作レベル検証に問題がある場合、仕様と動作レベル検証の結果とが一致するまで繰り返される（ステップＳ１１０３のＮＧ）。一方、仕様と動作レベル検証の結果が一致すると（ステップＳ１１０３のＯＫ）、論理合成が行われて、動作レベル記述がゲートレベルの回路に置き換えられる（ステップＳ１１０４）。続いて、ゲートレベル回路に置き換えられた回路の動作速度やチップサイズを考慮したタイミング検証が行われる（ステップＳ１１０５）。タイミング検証に問題がある場合（ステップＳ１１０５のＮＧ）、論理合成で修正可能であるかが判定され（ステップＳ１１０６）、論理合成で修正が可能な場合（ステップＳ１１０６のＹＥＳ）、ステップＳ１１０４へ戻って再び論理合成が行われる。一方、論理合成で修正可能でない場合（ステップＳ１１０６のＮＯ）、ステップＳ１１０２の動作レベル設計へ戻る。タイミング検証に問題がない場合（ステップＳ１１０５のＯＫ）、ユーザ回路が完成されて、テスト容易化設計工程（ステップＳ１１５１）へ移行する。
【０００９】
テスト容易化設計工程（ステップＳ１１５１）では、スキャンテストによりユーザ回路のテストを行うテスト回路を、ユーザ回路内に構築するためのテスト容易化設計が行われる（ステップＳ１１０７）。テスト回路が構築されると、論理検証が行われてテスト回路の妥当性が検証される（ステップＳ１１０８）。論理検証において問題がある場合（ステップＳ１１０８のＮＧ）、ゲートレベルの回路修正で修正可能であるかが判定され（ステップＳ１１０９）、ゲートレベルの回路修正で修正可能な場合（ステップＳ１１０９のＹＥＳ）、ステップＳ１１０７へ戻って回路修正が行われる。ゲートレベルの回路修正で修正可能でない場合（ステップＳ１１０９のＮＯ）、ステップＳ１１０６へ戻って、論理合成で修正可能であるかが判定される。論理検証において問題がない場合（ステップＳ１１０８のＯＫ）、内部にテスト回路の構築されたユーザ回路のゲートレベルのネットリストが完成される。
【００１０】
続いて、完成されたネットリストを用いて回路のレイアウト設計を行う（ステップＳ１１１０）。レイアウト設計により遅延情報とネットリストが出力されると、パタン作成工程（ステップＳ１１５２）へ移行する。
【００１１】
パタン作成工程（ステップＳ１１５２）では、レイアウト設計により出力された遅延情報とネットリストを用いたタイミング検証が実行される（ステップＳ１１１１）。タイミング検証に問題がある場合（ステップＳ１１１１のＮＧ）、レイアウト修正で修正可能かどうかが判定され（ステップＳ１１１２）、レイアウト修正で修正可能な場合（ステップＳ１１１２のＹＥＳ）、ステップＳ１１１０へ戻ってレイアウト設計が行われる。レイアウト修正で修正可能でない場合（ステップＳ１１１２のＮＯ）ステップＳ１１０９へ戻り、ゲートレベルの回路修正で修正可能であるかが判定される。タイミング検証に問題がない場合（ステップＳ１１１１のＯＫ）、ステップＳ１１１０で出力されたネットリストを用いて、テストパタン生成ツール（ＡＴＰＧ：Ａｕｔｏｍａｔｉｃ  Ｔｅｓｔ  Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｏｒ）によりテストパタンが作成される（ステップＳ１１１３）。このようにして、半導体集積回路設計において回路の仕様設計からテストパタン作成までが行われる。
【００１２】
以上が、従来の半導体集積回路設計における仕様設計からテストパタン作成までのフローの説明である。
【００１３】
［テスト容易化設計工程の手順］
次に、マルチキャプチャ手法を含むテスト容易化設計のフローを説明する。図２は、特許文献１におけるテスト容易化設計を説明する流れ図である。なお、本説明は、図１のステップＳ１１５１におけるテスト容易化設計工程を詳細に説明するものであり、特許文献１において複数キャプチャセルフテスト計算機援用設計（ＣＡＤ）システムとして開示されている。
【００１４】
複数キャプチャセルフテスト計算機援用設計（ＣＡＤ）システムは、ユーザが供給するＨＤＬコードまたはネットリスト２４０２を、セルフテスト制御ファイル２４０１および選択されたファウンドリライブラリ２４０３と共に受け入れる。セルフテスト制御ファイル２４０１には、コンパイル２４０４、セルフテストルールチェック２４０６、セルフテストルール修復２５０７、および複数キャプチャセルフテスト合成２４０８に必要なすべてのセットアップ情報およびスクリプトが含まれる。その結果、同等の組合せ回路モデル２４０９が生成される。その後、組合せ故障シミュレーション２４１０を実行することができる。最後に、後処理２４１１を使用して、最終的なセルフテストのＨＤＬコードまたはネットリスト２４１３ならびにＨＤＬテストベンチおよびＡＴＥテストプログラム２４１２を作る。すべてのレポートおよびエラーが、レポートファイル２４１４に保管され、テスト容易化設計工程（ステップＳ１１５１）が完了する。
【００１５】
以上が、マルチキャプチャ手法を含むテスト容易化設計のフローの説明である。
【００１６】
［半導体集積回路のテスト回路の構成］
次に、特許文献１による半導体集積回路のテスト回路の構成例の説明を行う。ここでは、図２で説明を行ったテスト容易化設計工程（ステップＳ１１５１）の複数キャプチャセルフテスト合成２４０８で構築される半導体集積回路のテスト回路の構成例の説明を行う。図３は、特許文献１による半導体集積回路のテスト回路の構成例を示す図である。従来、複数キャプチャを用いたテスト回路では、デイジーチェーンクロックトリガ技法を使用して、キャプチャクロックを次々に生成し、順序付ける。これにより、デイジーチェーンクロックトリガ技法を使った回路構成は、キャプチャクロックのエッジによって第２のキャプチャクロックがトリガされるカスケード接続構成とすることで容易に実現できる。デイジーチェーンクロックトリガ技法は、特許文献１に開示されている。
【００１７】
図３に示された半導体集積回路は、ダブルクロック抽出回路ユニット１３００と、マルチプレクサ６０３、６０４、６０７、６０８と、スキャンフリップフロップ６０９、６１０、６１１、６１２と、組み合わせ回路６１３と、インバータ回路６１４と、２入力ＡＮＤ回路６１５と、クロックマスク回路６０５、６０６とを備える。
【００１８】
ここで、ダブルクロックとは、遅延故障テストにおけるラウンチ期間からキャプチャ期間に検出されるラウンチクロックとキャプチャクロックの二つのクロックを示す。ダブルクロック抽出回路は、ユーザ回路の動作に用いられるクロック信号からダブルクロックを抽出するためのイネーブル信号を出力する回路であり、ユーザ回路中に構築される。
【００１９】
ダブルクロック抽出回路ユニット１３００は、遅延故障テストのマルチキャプチャ手法において、２つのクロックドメインが存在する場合の、ダブルクロック抽出回路１３０１、１３０３を備える。ダブルクロック抽出回路１３０１、１３０３は、第１入力端子（ｉ＿ｅｎａｂｌｅ）がハイレベルの時に、第２入力端子（ｉ＿ｓｔａｒｔ＿ｎ）がロウレベルになったのを起点として、第３入力端子（ｉ＿ｃｌｏｃｋ）へ入力されるクロック信号の２クロック分のハイパルスを、第１出力端子（ｏ＿ｃｌｋ＿ｅｎ＿ｃｔｒｌ）から出力する。また、ダブルクロック抽出回路１３０１は、第１出力端子から出力されるハイパルスがロウレベルになるのと同時に、第２出力端子（ｏ＿ｆｉｎｉｓｈ＿ｎ）からロウレベルの終了信号を出力する。ダブルクロック抽出回路１３０１の第２出力端子と、ダブルクロック抽出回路１３０３の第２入力端子とは接続されている。ダブルクロック抽出回路１３０３は、ダブルクロック抽出回路１３０１からの終了信号を、第２入力端子入力する。
【００２０】
マルチプレクサ６０３、６０４、６０７、６０８は、入力端子Ｓ０に入力された値に応じて入力端子Ｄ０とＤ１のいずれかの値を出力端子Ｙに出力する。クロックマスク回路６０５、６０６は、入力端子ＩＮ１がハイレベルのとき、入力端子ＩＮ２の値を出力端子ＯＵＴ１へ出力する。
【００２１】
スキャンフリップフロップ６０９、６１０、６１１、６１２は、入力端子ＣＬＫに入力されるクロック信号の立ち上がりに同期して、入力端子Ｄ、または入力端子ＳＩに入力されるデータを記憶して、出力端子Ｑから出力する。また、スキャンフリップフロップ６０９、６１０、６１１、６１２は、入力端子ＳＭＣにロウレベルが入力されると入力端子Ｄの値を出力端子Ｑに出力し、入力端子ＳＭＣにハイレベルが入力されると入力端子ＳＩの値を出力端子Ｑに出力する。
【００２２】
組み合わせ回路６１３は、入力端子ＤＩ、ＩＮ１１、ＩＮ１２、ＩＮ２１、ＩＮ２２と、出力端子ＯＵＴ１１、ＯＵＴ１２、ＯＵＴ２１、ＯＵＴ２２、ＤＯとを備えるユーザ回路である。インバータ回路６１４は、入力端子Ａの値を論理反転して出力端子ＹＢから出力する。ＡＮＤ回路６１５は、入力端子Ａと入力端子Ｂに入力された値をＡＮＤ演算して出力端子Ｙから出力する。
【００２３】
また、入力信号ＳＩＮ１は、シフト期間中にスキャンフリップフロップ６０９の入力端子ＳＩへ入力されるシフトデータである。入力信号ＳＩＮ２は、シフト期間中にスキャンフリップフロップ６１０の入力端子ＳＩへ入力されるシフトデータである。入力信号ＤＩは、組み合わせ回路６１３の入力端子ＤＩへ入力される入力データである。
【００２４】
入力信号ＣＬＫ１と、ＣＬＫ２とは、ユーザ回路の動作に用いるクロック信号である。入力信号ＣＬＫ１、ＣＬＫ２は、それぞれ、二つのクロックドメインにおけるクロック信号である。入力信号ＣＬＫ１は、ダブルクロック抽出回路１３０１の第３入力端子と、クロックマスク回路６０５の入力端子ＩＮ２に入力されるクロック信号である。入力信号ＣＬＫ２は、ダブルクロック抽出回路１３０３の第３入力端子と、クロックマスク回路６０６の入力端子ＩＮ２に入力されるクロック信号である。入力信号ＣＬＫ１とＣＬＫ２は、半導体集積回路の外部（以下、外部）から入力されたＬＳＩテスタ装置で扱うことが可能な動作周波数の低速クロック（以下、低速クロック）信号である。
【００２５】
入力信号ＩＮＣＬＫ１は、マルチプレクサ６０７の入力端子Ｄ１に入力されるクロック信号である。入力信号ＩＮＣＬＫ２は、マルチプレクサ６０８の入力端子Ｄ１に入力するクロック信号である。入力信号ＴＥは、ユーザモード時にロウレベル、テストモード時にハイレベルに切り替わるテストイネーブル信号である。入力信号ＴＥは、ダブルクロック抽出回路１３０１、１３０３の第１入力端子と、インバータ回路６１４の入力端子Ａと、マルチプレクサ６０３、６０４の入力端子Ｓと、ＡＮＤ回路６１５の入力端子Ａとへ入力される。入力信号ＳＥは、テストモード時において、ハイレベルの場合にシフト期間となり、ロウレベルの場合にラウンチ−キャプチャ期間となるよう切り替えを行うためのスキャンイネーブル信号である。入力信号ＳＥは、ダブルクロック抽出回路１３０１の第２入力端子と、ＡＮＤ回路６１５の入力端子Ｂと、スキャンフリップフロップ６０９、６１０、６１１、６１２のＳＭＣ端子とに、それぞれ入力される。
【００２６】
以上が、特許文献１による半導体集積回路のテスト回路の構成例の説明である。
【００２７】
［半導体集積回路のテスト回路の動作方法］
次に、以上のような、特許文献１による半導体集積回路のテスト回路の構成例における動作方法の説明を行う。ここでは、ダブルクロック抽出回路のユーザモード時、及びテストモード時の動作方法を説明する。
【００２８】
まず、ユーザモード時の説明を行う。ユーザモード時において、入力信号ＴＥは、ロウレベルである。ユーザモードにおいて、ダブルクロック抽出回路１３０１、１３０３は、半導体集積回路の動作には無関係であり、入力信号ＣＬＫ１、ＣＬＫ２がユーザ回路のクロックとして使用される。
【００２９】
ダブルクロック抽出回路１３０１、１３０３の第１入力端子は、ロウレベルの入力信号ＴＥを入力している。この間、第１出力端子は、ロウレベルの信号を、マルチプレクサ６０３、６０４の入力端子Ｄ１へ出力する。マルチプレクサ６０３、６０４の入力端子Ｓ０は、ロウレベルの入力信号ＴＥを入力している。そのため、マルチプレクサ６０３、６０４の出力端子Ｙは、入力端子Ｄ０を選択している。これにより、ダブルクロック抽出回路１３０１、１３０３の動作は、スキャンフリップフロップ６０９、６１０、６１１、６１２の入力端子ＣＬＫのクロック印加には関係しない。
【００３０】
ユーザモード時において、スキャンフリップフロップ６０９、６１０、６１１、６１２の入力端子ＣＬＫには、ユーザ回路の動作に用いる入力信号ＣＬＫ１，ＣＬＫ２が、クロックマスク回路６０５、６０６、及びマルチプレクサ６０７、６０８を経由して印加され、組み合わせ回路６１３を含むユーザ回路が動作する。
【００３１】
次に、テストモード時の説明を行う。まず、テストモード時におけるシフト動作が行われるシフト期間中は、入力信号ＴＥ、入力信号ＳＥがそれぞれハイレベルである。このとき、ダブルクロック抽出回路１３０１、１３０３は、半導体集積回路の動作には無関係であり、入力信号ＩＮＣＬＫ１、ＣＬＫ２がシフトクロックとして使用される。
【００３２】
まず、シフト期間において、ダブルクロック抽出回路１３０１、１３０３の第２入力端子は、ハイレベルの入力信号ＳＥを入力している。この間、第１出力端子は、ロウレベルの信号をマルチプレクサ６０３、６０４へ出力する。マルチプレクサ６０３、６０４の入力端子Ｓ０は、ハイレベルの入力信号ＴＥを入力している。そのため、マルチプレクサ６０３、６０４の出力端子Ｙは、入力端子Ｄ１を選択する。マルチプレクサ６０３、６０４は、入力端子Ｄ１にダブルクロック抽出回路１３０１、１３０３からのロウレベルの信号が入力しているため、出力端子Ｙからロウレベルの信号をクロックマスク回路６０５、６０６へ出力する。クロックマスク回路６０５、６０６は、入力端子ＩＮ１にロウレベルの信号が入力されるため、入力端子ＩＮ２に入力される入力信号ＣＬＫ１、ＣＬＫ２を出力しない。このように、ダブルクロック抽出回路１３０１、１３０３の動作により入力信号ＣＬＫ１、ＣＬＫ２はマスクされる。
【００３３】
マルチプレクサ６０７、６０８は、入力端子Ｓ０にハイレベルの信号が入力されるため、入力端子Ｄ１が出力として選択される。スキャンフリップフロップ６０９、６１０、６１１、６１２の入力端子ＣＬＫは、マルチプレクサ６０７、６０８の出力端子Ｙから出力された入力信号ＩＮＣＬＫ１、ＩＮＣＬＫ２が入力される。また、スキャンフリップフロップ６０９、６１０、６１１、６１２の入力端子ＳＭＣには、ハイレベルの入力信号ＳＥを入力しており、入力端子ＳＩからデータがシフトされる。
【００３４】
次に、テストモード時におけるラウンチ動作及びキャプチャ動作を行うラウンチ−キャプチャ期間において、入力信号ＴＥはハイレベルであり、入力信号ＳＥはロウレベルである。このとき、ダブルクロック抽出回路１３０１、１３０３は、ダブルクロックを抽出するためのハイレベルのイネーブル信号を出力しており、このイネーブル信号によって抽出されたダブルクロックを用いて遅延故障テストが行われる。なお、ダブルクロック抽出回路１３０１と１３０３とは、カスケード接続されているため、ダブルクロック抽出回路１３０１からハイレベルのイネーブル信号が出力された後、ダブルクロック抽出回路１３０３からハイレベルのイネーブル信号が出力される。
【００３５】
まず、入力信号ＳＥが、ユーザ回路の動作に用いるクロックである入力信号ＣＬＫ１ドメイン側となるダブルクロック抽出回路１３０１の第２入力端子へ入力される。入力信号ＳＥがハイレベルからロウレベルへ変化するのを起点として、第１出力端子は、第３入力端子に入力される入力信号ＣＬＫ１における２クロック分のハイパルスをマルチプレクサ６０３へ出力する。このとき、マルチプレクサ６０３は、入力端子Ｓ０にハイレベルの入力信号ＴＥを入力しているので、入力端子Ｄ１を出力として選択する。そのため、マルチプレクサ６０３は、ダブルクロック抽出回路１３０１から入力端子Ｄ１へ入力した入力信号ＣＬＫ１における２クロック分のハイパルスを出力端子Ｙからクロックマスク回路６０５へ出力する。
【００３６】
クロックマスク回路６０５は、入力端子ＩＮ１へ入力信号ＣＬＫ１における２クロック分のハイパルスが入力されている間、入力端子ＩＮ２に入力される入力信号ＣＬＫを、出力端子ＯＵＴ１へ出力する。すなわち、クロックマスク回路６０５は、入力端子ＩＮ２に入力される入力信号ＣＬＫ１からダブルクロックが抽出される。マルチプレクサ６０７は、入力端子Ｓ０にロウレベルの信号を入力する。そのため、マルチプレクサ６０７は、入力端子Ｄ０に入力されるダブルクロックを出力として選択して、出力端子Ｙへ出力する。スキャンフリップフロップ６０９、６１１は、入力端子ＣＬＫに、マルチプレクサ６０７からダブルクロックを入力し、遅延故障テストが行われる。
【００３７】
一方、ダブルクロック抽出回路１３０３は、ダブルクロック抽出回路１３０１の第２出力端子がハイレベルからロウレベルへ変化したのを起点として、第３入力端子へ入力される入力信号ＣＬＫ２における２クロック分のハイパルスを第１出力端子からマルチプレクサ６０４へ出力する。マルチプレクサ６０４は、入力端子Ｓ０にハイレベルの入力信号ＴＥを入力しており、入力端子Ｄ１を出力として選択する。マルチプレクサ６０４は、入力端子Ｄ１に入力する入力信号ＣＬＫ２における２クロック分のハイパルスを出力Ｙからクロックマスク回路６０６へ出力する。
【００３８】
クロックマスク回路６０６は、入力端子ＩＮ１に２クロック分のハイパルスを入力している間、入力端子ＩＮ２に入力する入力信号ＣＬＫ２を出力端子ＯＵＴ１へ出力からマルチプレクサ６０８へ出力してダブルクロックを抽出する。マルチプレクサ６０８は、入力端子Ｓ０にロウレベルの信号を入力しており、入力端子Ｄ０を出力として選択する。マルチプレクサ６０８は、入力端子Ｄ０に入力されるダブルクロックを出力Ｙから、スキャンフリップフロップ６１０、６１２へ出力する。スキャンフリップフロップ６１０、６１２は、入力端子ＣＬＫにダブルクロックを入力して、遅延故障テストを実行する。
【００３９】
以上が、従来技術による半導体集積回路のテスト回路の構成例における動作方法の説明である。
【００４０】
次に、特許文献１によるキャプチャクロックの順序付けを行って各クロックドメイン内の遅延故障およびクロックドメインにまたがる縮退故障を検出するか突き止める動作の説明を行う。図４Ａは、特許文献１による半導体集積回路のテスト回路のデイジーチェーンクロックトリガ技法のタイミングチャートである。
【００４１】
図４Ａを参照すると異なる周波数で動作する４つのキャプチャクロックＣＫ１、ＣＫ２、ＣＫ３、ＣＫ４の波形のシーケンスが示されている。各シフトサイクル１０１４中に、異なる周波数の一連のクロックパルスが、キャプチャクロックＣＫ１からＣＫ４を介して印加される。各キャプチャサイクル１０１５中に、４組のキャプチャクロックパルスが、次の順序で印加される。第１に、ＣＫ１のダブルクロックが印加されて、クロックドメイン内の遅延故障が検出されるか突き止められる。第２に、ＣＫ２のダブルクロックが印加されて、クロックドメイン内の遅延故障が検出されるか突き止められる。第３に、ＣＫ３のダブルクロックが印加されて、クロックドメイン内の遅延故障が検出されるか突き止められる。第４に、ＣＫ４のダブルクロックが印加されて、クロックドメイン内の遅延故障が検出されるか突き止められる。
【００４２】
さらに、それぞれのクロッシングクロックドメイン間の縮退故障も、下記の条件が満足される場合に同時に検出されるか突き止められる。ＣＫ１のダブルクロックの第２のパルスの立ち上がりエッジとＣＫ２のダブルクロックの第１のパルスの立ち上がりエッジの間の相対クロック遅延を調整し、その結果、クロッシングクロックドメイン論理を介してキャプチャされている間に競合またはタイミング違反が発生しないようにしなければならない。同一の原理が、それぞれ、ＣＫ２とＣＫ３の間の相対クロック遅延、およびＣＫ３とＣＫ４の間の相対クロック遅延にも適用される。
【００４３】
デイジーチェーンクロックトリガ技法を使用して、次の形でキャプチャクロックのシーケンスを次々に生成し、順序付ける。シフトサイクルの最後のパルスの立ち上がりエッジによって、グローバル走査イネーブルＧＳＥ８０１に０を印加するイベント１００１がトリガされ、テスト動作がシフトサイクルからキャプチャサイクルに切り替えられる。ＧＳＥ８０１の立ち下がりエッジによって、ＣＫ１にダブルクロックを印加するイベント１００２がトリガされる。同様に、ＣＫ１の第２のキャプチャパルスの立ち上がりエッジによって、ＣＫ２にダブルクロックを印加するイベント１００３がトリガされ、ＣＫ２の第２のキャプチャパルスの立ち上がりエッジによって、ＣＫ３にダブルクロックを印加するイベント１００４がトリガされ、ＣＫ３の第２のキャプチャパルスの立ち上がりエッジによって、ＣＫ４にダブルクロックを印加するイベント１００５がトリガされる。最後に、ＣＫ４の第２のキャプチャパルスの立ち上がりエッジによって、グローバル走査イネーブルＧＳＥ８０１に１を印加するイベント１００６がトリガされ、テスト動作が、キャプチャサイクルからシフトサイクルに切り替えられる。
【００４４】
次に、図４Ｂを参照して、特許文献１による半導体集積回路のテスト回路の一例におけるタイミングチャートの説明を行う。図４Ｂは、特許文献１による半導体集積回路のテスト回路の構成例におけるタイミングチャートである。図４Ａにおいて説明したデイジーチェーンクロックトリガ技法を取り込んだ具体的なテスト回路の構成例を図３に示しており、図４Ｂでは、図３の回路の動作を示すタイミングチャートを示している。図４Ｂにおいて、縦軸は、各信号のレベルを示しており、横軸は、時間を示している。なお、入力信号ＣＬＫ１、及びＣＬＫ２は、簡易のため、まとめて記載している。
【００４５】
入力信号ＴＥは、ユーザモードとテストモードとの切り替え信号である。入力信号ＴＥは、時刻Ｔ１４０１から時刻Ｔ１４１０までハイレベルであり、この期間がテストモードの期間となる。入力信号ＳＥは、ラウンチ−キャプチャ期間の切り替え信号である。入力信号ＳＥは、時刻Ｔ１４０２から時刻Ｔ１４０９までロウレベルであり、この期間がラウンチ−キャプチャ期間となる。
【００４６】
テストモード時のラウンチ−キャプチャ期間は、入力信号ＴＥがハイレベル、ＳＥがロウレベルである。ダブルクロック抽出回路１３０１は、ラウンチ−キャプチャ期間において、入力信号ＳＥがハイレベルからロウレベルに変化した（Ｔ１４０２）のを起点として、第１出力端子から入力信号ＣＬＫ１の２クロック分のハイパルスを出力する（Ｔ１４０３−Ｔ１４０５）。クロックマスク回路６０５は、ダブルクロック抽出回路１３０１からハイレベルの信号を入力端子ＩＮ１に入力する。クロックマスク回路６０５は、入力端子ＩＮ１にハイレベルの信号を入力している間、入力信号ＣＬＫ１の２クロックを出力端子ＯＵＴ１からダブルクロックとして出力する（Ｔ１４０４−１４０５）。
【００４７】
また、ダブルクロック抽出回路１３０３は、ダブルクロック抽出回路１３０１の第１出力信号がハイレベルからロウレベルに変化した（Ｔ１４０５）のを起点として、第１出力端子から入力信号ＣＬＫ２の２クロック分のハイパルスを出力する（Ｔ１４０６−１４０７）。クロックマスク回路６０６は、ダブルクロック抽出回路１３０３からハイレベルの信号を入力端子ＩＮ１に入力する。クロックマスク回路６０６は、入力端子ＩＮ１にハイレベルの信号を入力している間、入力信号ＣＬＫ１の２クロックを出力端子ＯＵＴ１からダブルクロックとして出力する（Ｔ１４０７−１４０８）。
【００４８】
このように、ダブルクロックは、ダブルクロック抽出回路１３０１、１３０３の出力に基づいて、ユーザ回路で用いられるクロック信号から抽出される。以上が、従来技術による半導体集積回路のテスト回路におけるタイミングチャートの説明である。
【００４９】
一般に遅延故障テストのマルチキャプチャ手法では、シフト動作、ラウンチ動作、キャプチャ動作からなる一連の動作を１パタンセットとして、半導体集積回路のユーザ回路に複数のクロックドメインが存在する場合、１パタンセットで複数のクロックドメインの被テスト回路であるユーザ回路の信号ラインをテストする手法である。そのため、マルチキャプチャ手法は、被テスト回路であるユーザ回路にラウンチ−キャプチャ期間中に複数のクロックドメインのダブルクロックを印加する。
【００５０】
このとき、ユーザ回路の２つのクロックドメインにおいて、２つのクロックドメイン間を接続する信号が存在する場合、どちらか片方のクロックドメインのキャプチャデータが確定した後に、もう片方のクロックドメインのラウンチ動作を開始するべきというタイミング関係が存在する。
【００５１】
上述した従来技術のマルチキャプチャ手法において、例えば、２つのクロックドメイン間にタイミング関係が存在するのであれば、これを満たす必要がある。つまり、図３のダブルクロック抽出１３０１、１３０３は、ダブルクロックを抽出するためのハイレベルの信号を出力するタイミングにおいて、所定のタイミング関係を満たさなければならない。そのため、従来技術では、ダブルクロック抽出回路１３０１と１３０３とをカスケード接続することで、クロックを印加する順番を固定して、ダブルクロック抽出回路１３０１、１３０３の中に、予めタイミングマージンを確保して、所定のタイミング関係を実現している。これによって、従来技術の半導体集積回路は、テストモード時において入力信号ＣＬＫ１に同期するスキャンフリップフロップ６１０、６１２にタイミング関係が存在する場合、ダブルクロック抽出回路１３０１からダブルクロックを抽出するためのハイパルスを出力後に、ダブルクロック抽出回路１３０３からダブルクロックを抽出するためのハイパルスを、タイミング関係を満たすように出力させている。
【先行技術文献】
【特許文献】
【００５２】
【特許文献１】特開２００９−１０９５１２号公報
【発明の概要】
【発明が解決しようとする課題】
【００５３】
しかし、２つのクロックドメイン間において、ダブルクロックを出力するタイミングは、ユーザ回路におけるタイミング関係に依存しており、一様に順番を固定することはできない。クロックドメインの規模や、多数存在するロジックコーンの深さによって、ダブルクロックの印加順を変更しなければならない場合も存在する。ここで、ロジックコーンは、スキャンフリップフロップ間にはさまれた組み合わせ回路の部分を示す。
【００５４】
また、２つ以上の多数のクロックドメインが存在する場合には、それぞれのクロックドメイン間の接続がより複雑になり、クロック印加順を固定できるものではない。そのため、従来技術のように、ダブルクロック抽出回路１３０１、１３０３をカスケード接続にして、ダブルクロックの印加順を固定してしまうと、ユーザモード時に存在しないタイミング関係ができてしまうことがある。これでは、図１で説明を行ったレイアウト設計（ステップＳ１１１０）において、タイミング関係を予め作りこむことができない。そのため、タイミング検証（ステップＳ１１１１）において、複数のクロックドメイン間のタイミング違反が判明することになり、ダブルクロック抽出回路１３０１、１３０３の再設計が発生してしまう。
【００５５】
このように、従来技術では、ダブルクロック抽出回路１３０１、１３０３をカスケード接続することによりダブルクロックの印加順が固定されている。このような、テスト回路によりテストパタンを作成すると、テストパタンを、非テスト回路、及びテスト回路のタイミングが収束したネットリストから生成する必要があるにも関わらす、タイミングが収束するまで何度もイタレーションを繰り返すことになり、設計期間が増大するという課題がある。
【課題を解決するための手段】
【００５６】
以下に、（発明を実施するための形態）で使用される番号を用いて、課題を解決するための手段を説明する。これらの番号は、（特許請求の範囲）の記載と（発明を実施するための形態）との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、（特許請求の範囲）に記載されている発明の技術的範囲の解釈に用いてはならない。
【００５７】
本発明の半導体集積回路のテスト回路は、被テスト回路（６１３）の動作に用いられる複数のクロックドメイン（ＣＬＫ１、ＣＬＫ２）のうちから選択される選択クロックと複数のクロックドメインに対応して設けられた複数のトリガクロック（ＩＮＣＬＫ１、ＩＮＣＬＫ２）のうちの選択クロックに対応する選択トリガクロックとを入力して、選択トリガクロックにおいて被テスト回路（６１３）のスキャンテストに用いられるダブルクロックの抽出トリガを検出するとイネーブル信号を出力するダブルクロック抽出回路（６０１、６０２）と、選択クロックとイネーブル信号とを入力して、イネーブル信号をトリガとして選択クロックからダブルクロックを抽出するクロックマスク回路（６０５、６０６）と、ダブルクロックを入力して被テスト回路（６１３）に対してスキャンテストを実行するスキャンフリップフロップ（６０９、６１０、６１１、６１２）とを備え、ダブルクロック抽出回路（６０１、６０２）と、クロックマスク回路（６０５、６０６）と、スキャンフリップフロップ（６０９、６１０、６１１、６１２）とは、複数のクロックドメインに対応して設けられ、抽出トリガは、複数のクロックドメイン間においてダブルクロックを出力するべきタイミング関係に基づいて選択トリガクロックの各々に設定される。
【００５８】
本発明の半導体集積回路のテスト方法は、被テスト回路（６１３）の動作に用いられる複数のクロックドメイン（ＣＬＫ１、ＣＬＫ２）のうちから選択される選択クロックと複数のクロックドメインに対応して設けられた複数のトリガクロック（ＩＮＣＬＫ１、ＩＮＣＬＫ２）のうちの選択クロックに対応する選択トリガクロックとを入力するステップと、選択トリガクロックにおいて被テスト回路（６１３）のスキャンテストに用いられるダブルクロックの抽出トリガを検出するとイネーブル信号を出力するステップと、選択クロックとイネーブル信号とを入力して、イネーブル信号をトリガとして選択クロックからダブルクロックを抽出するステップと、ダブルクロックを入力して被テスト回路（６１３）に対してスキャンテストを実行するステップとを備え、抽出トリガは、複数のクロックドメイン間においてダブルクロックを出力するべきタイミング関係に基づいて選択トリガクロックの各々に設定される。
【００５９】
本発明の半導体集積回路のテストパタン作成方法は、上述の半導体集積回路のテスト回路のテストパタンを作成する半導体集積回路のテストパタン作成方法であって、コンピュータ（１０）が、被テスト回路（６１３）に入力されるテストパタンの繰り返し周期の１サイクル時間であるテストレートを抽出するステップと、コンピュータ（１０）が、被テスト回路で用いられる複数のクロックドメインを抽出するステップと、コンピュータ（１０）が、複数のクロックドメインのうちから選択される２つの選択クロックドメインの選択クロック（ＣＬＫ１、ＣＬＫ２）間において、被テスト回路（６１３）のスキャンテストに用いられるダブルクロックを出力するべきタイミング関係が存在するか否かを判定するステップと、コンピュータ（１０）が、タイミング関係が存在する場合に、タイミング関係に基づいて、複数のクロックドメインに対応して設けられた複数のトリガクロックのうちの選択クロック（ＣＬＫ１、ＣＬＫ２）に対応する選択トリガクロック（ＩＮＣＬＫ１、ＩＮＣＬＫ２）に、抽出トリガを設定したテストパタンを作成するステップとを備える。
【発明の効果】
【００６０】
本発明によれば、複数のクロックドメインを用いる半導体集積回路のテスト回路において、ダブルクロックを印加するタイミングを任意に設定することが可能となる。そのため、ダブルクロックを印加するべきタイミングが収束するまでイタレーションを繰り返す必要が無くなる。
【図面の簡単な説明】
【００６１】
【図１】図１は、従来の半導体集積回路設計における仕様設計からテストパタン作成までを説明するフローチャートである。
【図２】図２は、特許文献１におけるテスト容易化設計を説明する流れ図である。
【図３】図３は、特許文献１による半導体集積回路のテスト回路の構成例を示す図である。
【図４Ａ】図４Ａは、特許文献１による半導体集積回路のテスト回路のデイジーチェーンクロックトリガ技法のタイミングチャートである。
【図４Ｂ】図４Ｂは、特許文献１による半導体集積回路のテスト回路の構成例におけるタイミングチャートである。
【図５】図５は、本発明の実施形態における半導体集積回路のテスト回路設計システムの構成を示す図である。
【図６Ａ】図６Ａは、本発明の実施形態における半導体集積回路のテスト回路設計システムの動作を説明するフローチャートである。
【図６Ｂ】図６Ｂは、本発明の実施形態における半導体集積回路のテスト回路設計システムの動作を説明するフローチャートである。
【図７】図７は、本発明の実施形態におけるテストレートとＳＬＡＣＫ値に対応したテストレート間隔数Ｂを示す表である。
【図８】図８は、本発明の実施形態におけるテストレート間隔数Ｂが「５」である場合のテストパタンのタイミングチャートの一例である。
【図９】図９は、本発明の実施形態におけるテストレート間隔数Ｂが「２」である場合のテストパタンのタイミングチャートの一例である。
【図１０】図１０は、本発明の実施形態における半導体集積回路のテスト回路の構成を示す図である。
【図１１】図１１は、本発明の実施形態における半導体集積回路のテスト回路のタイミングチャートである。
【発明を実施するための形態】
【００６２】
添付図面を参照して、本発明の実施形態による半導体集積回路のテスト回路を以下に説明する。
【００６３】
［構成の説明］
まず、図５を参照して、本実施形態における半導体集積回路のテスト回路の設計を行うための半導体集積回路のテスト回路設計システムの構成の説明を行う。本実施形態における半導体集積回路のテスト回路は、以下に説明を行う半導体集積回路のテスト回路設計システムにより構築される。図５は、本実施形態における半導体集積回路のテスト回路設計システムの構成を示す図である。
【００６４】
本実施形態の半導体集積回路のテスト回路設計システムは、コンピュータ１０と、サーバ１４と、インターネット１６とを備える。
【００６５】
まず、インターネット１６は、コンピュータ１０とサーバ１４との間の通信を接続する。インターネット１６は、コンピュータ１０とサーバ１４との間の通信を接続可能であれば、インターネットに限定しない。例えば、ネットワーク１６は、移動体通信網や、専用線網や、ＬＡＮ(Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ)といった有線通信や無線通信を含めた各種のネットワーク、あるいはこれらのネットワークが相互に接続されたネットワークを適用可能である。
【００６６】
サーバ１４は、本実施形態における半導体集積回路のテスト回路設計システムを実現するための実行プログラムや、回路素子データ、マクロのライブラリ、回路のネットリストといったデータを記録する記憶部１５を備える。記憶部１５は、ハードディスクやＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）やＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）といった記憶装置で構成される。また、サーバ１４は、図示されない通信部を備え、インターネット１６を介してコンピュータ１０と通信を行うことが可能である。さらに、サーバ１４は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）で構成される図示されない処理部を備える。処理部は、記憶部１５に記憶されたサーバ１４の機能を実現するための実行プログラムを読み込んで実行することで、サーバ１４の機能を実現する。なお、各実行プログラムやデータは、サーバ１４の管理者により、キーボードやマウスや、ＬＣＤ（Ｌｉｑｕｉｄ  Ｃｒｙｓｔａｌ  Ｄｉｓｐｌａｙ）といった図示されない入出力部を用いて外部から記憶部１５へ記憶される。このような構成により、サーバ１４は、実行プログラムやデータを、インターネット１６を介してコンピュータ１０へ提供することが可能である。
【００６７】
コンピュータ１０は、本実施形態における半導体集積回路のテスト回路設計システムを実行する。コンピュータ１０は、例えば、パーソナルコンピュータのような一般的な汎用コンピュータである。コンピュータ１０は、図示されない通信部を備え、インターネット１６を介してサーバ１４と通信が可能である。コンピュータ１０は、インターネット１６を介してサーバ１４へ接続して、本実施形態における半導体集積回路のテスト回路設計システムを実現するための実行プログラムやデータを取得し、図示されない記憶部へ記憶する。記憶部１５は、ハードディスクやＲＡＭやＲＯＭといった記憶装置で構成される。コンピュータ１０は、ＣＰＵで構成される処理部を備える。処理部は、記憶部に記憶されたコンピュータ１０の機能を実現するための実行プログラムを読み込んで、実行することによりコンピュータ１０の機能を実現する。なお、コンピュータ１０は、コンピュータ１０の使用者との入出力インターフェースである図示されない入出力部を備える。入出力部は、キーボードやマウスや、ＬＣＤで構成される。コンピュータ１０は、このような構成により、サーバ１４から取得された半導体集積回路のテスト回路設計システムを実現するための実行プログラムを読み込んで、実行し、本実施形態における半導体集積回路のテスト回路設計システムを実現する。
【００６８】
ここで、本実施形態における半導体集積回路のテスト回路設計システムを実現するための実行プログラムは、サーバ１４の記憶部１５に記憶される形態には限定しない。実行プログラムは、例えば、ＣＤ（Ｃｏｍｐａｃｔ  Ｄｉｓｋ）やフラッシュメモリを搭載したＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）メモリといった持ち運び可能な記憶媒体に記録されてもよい。この場合、実行プログラムは、これらの持ち運び可能な記憶媒体から、コンピュータ１０の備えるＣＤドライブや、ＵＳＢポート等を介して導入される。
【００６９】
以上が、本実施形態における半導体集積回路のテスト回路設計システムの構成の説明である。
【００７０】
［動作方法の説明］
次に、図６Ａ、図６Ｂを参照して、本実施形態の半導体集積回路のテスト回路設計システムにおける動作方法の説明を行う。図６Ａ、図６Ｂは、本実施形態における半導体集積回路のテスト回路設計システムの動作を説明するフローチャートである。図６Ａ、図６Ｂの半導体集積回路のテスト回路設計システムにおける動作フローは、テスト容易化設計工程（ステップＳ１５１）と、レイアウト設計（ステップＳ１０６）と、タイミング検証及びテストパタン作成工程（ステップＳ１５２）とを含む。
【００７１】
はじめに、テスト容易化設計工程（ステップＳ１５１）が実行される。まず、ユーザ回路中にロジックＢＩＳＴ、及び圧縮スキャンが構築される（ステップＳ１０１）。続いて、ユーザ回路中に本発明のダブルクロック抽出回路ユニット６００を備えたテスト回路が構築される（ステップＳ１０２）。なお、ダブルクロック抽出回路ユニット６００を備えたテスト回路の実施例については、後述する。ダブルクロック抽出回路ユニット６００が構築されると、ダブルクロック抽出回路ユニット６００が正常に動作するか否かを確認するシミュレーションが実行される（ステップＳ１０３）。シミュレーション結果に問題がある場合（ステップＳ１０３のＮＧ）、ステップＳ１０４へ進む。一方、シミュレーション結果に問題がない場合（ステップＳ１０３のＯＫ）、ステップＳ１０５へ進む。シミュレーション結果に問題がある場合、ダブルクロック抽出回路ユニットのデバッグが行われて、問題の調査、修正が行われ（ステップＳ１０４）、その後、ステップＳ１０２へ戻る。一方、シミュレーション結果に問題がない場合、ネットリストが作成される（ステップＳ１０５）。以上で、テスト容易化設計工程（ステップＳ１５１）が完了する。
【００７２】
続いて、作成されたネットリストに基づいて半導体集積回路のレイアウト設計が行われる（ステップＳ１０６）。レイアウト設計が完了すると、遅延情報とネットリストが出力されて、タイミング検証及びパタン作成工程（ステップＳ１５２）へ移行する。
【００７３】
タイミング検証及びパタン作成工程（ステップＳ１５２）へ移行すると、まず、テストパタンの繰り返し周波数の１サイクル時間（以下、テストレート）が決定される（ステップＳ１０７）。続いて、テストパタンを作成する際のテストモードのタイミング検証を実行するために、テストイネーブル信号がテストモードに切り替えられる（ステップＳ１０８）。次に、クロックドメイン情報が抽出される（ステップＳ１０９）。抽出されたクロックドメイン情報の組み合わせに基づく組み合わせ情報により組み合わせ数を算出して、定数Ａへ代入する（ステップＳ１１０）。これは、例えば、ステップＳ１０９において、クロックドメインａ、ｂ、ｃ、ｄの４つが抽出されたとすると、この４つのクロックドメインの組み合わせである（ａ、ｂ）、（ａ、ｃ）、（ａ、ｄ）、（ｂ、ｃ）、（ｂ、ｄ）、（ｃ、ｄ）の６通りの組み合わせ情報が得られることを意味する。この場合、定数Ａには、「６」が代入される。定数Ａが確定すると変数ｉが生成されて、変数ｉは初期値「１」に設定される（ステップＳ１１１）。
【００７４】
次に、変数ｉと定数Ａとの数値の大小が比較される（ステップＳ１１２）。変数ｉの値が定数Ａの値以下である場合（ステップＳ１１２のＹｅｓ）、ステップＳ１１３へ進む。一方、変数ｉの値が定数Ａより大きい場合（ステップＳ１１２のＮｏ）、ステップＳ１１８へ進む。変数ｉの値が定数Ａの値以下である場合、ステップＳ１１０で抽出されたクロックドメインの組み合わせ情報のうちから任意に一つ選択して、クロックドメイン間の接続にタイミング関係が存在するかの判定が行われる（ステップＳ１１３）。例えば、前述の６つのクロックドメインのうちから（ａ、ｂ）が選択されたとして、クロックドメインａからクロックドメインｂへタイミング関係が有るか否か、また、クロックドメインｂからクロックドメインａへタイミング関係が有るか否かの判定が行われる。いずれにおいても、タイミング関係が存在しない場合、（ａ、ｂ）のクロックドメイン間には接続関係が無いと判定され（ステップＳ１１３のＮｏ）、ステップＳ１１４へ進む。一方、いずれかにおいて、タイミング関係が存在する場合（ステップＳ１１３のＹｅｓ）、（ａ、ｂ）のクロックドメイン間に接続関係があると判断され、ステップＳ１１６へ進む。
【００７５】
クロックドメイン間にタイミング関係がないと判断された場合、クロックドメイン（a、ｂ）の組み合わせのテストレート間隔数Ｂに「０」が設定される（ステップＳ１１４）。ここで、テストレート間隔数とは、繰り返し周波数の１サイクルを１単位とした時のクロックドメイン（ａ、ｂ）のダブルクロック同士の間隔である。テストレート間隔数Ｂの設定が完了すると、変数ｉに「１」が加算されて（ステップＳ１１５）、ステップＳ１１２へ戻る。一方、クロックドメイン間にタイミング関係があると判断された場合、クロックドメイン間のＳＬＡＣＫ解析が行われて、ＳＬＡＣＫ値が抽出される（ステップＳ１１６）。ここで、ＳＬＡＣＫ値とは、クロックドメイン間のタイミング違反値である。ＳＬＡＣＫ値が抽出されると、ステップＳ１０７で抽出されたテストレートを用いて、クロックドメイン（ａ、ｂ）のそれぞれのダブルクロック間においてタイミング違反を起こさないテストレート間隔数Ｂが算出される（ステップＳ１１７）。テストレート間隔数Ｂは、以下の式（１）に基づいて算出される。なお、式（１）において、ｉｎｔ（）は、引数の整数である。
【００７６】
テストレート間隔数Ｂ＝ｉｎｔ（−１×ＳＬＡＣＫ値／テストレート＋３）・・・（式１）
【００７７】
ここで、図７は、本実施形態におけるテストレートとＳＬＡＣＫ値に対応したテストレート間隔数Ｂを示す表である。図７の表は、横軸にＳＬＡＣＫ値、縦軸にテストレートをとっている。例えば、ステップＳ１０７でテストレートが２［ＮＳ］と抽出され、ステップＳ１１６でＳＬＡＣＫ値が−５［ＮＳ］を抽出された場合、テストレート間隔数Ｂ＝ｉｎｔ（−１×（−５）／２＋３）＝５となる。これは、テストモード時のラウンチキャプチャ期間中に外部から入力される低速のダブルクロック同士のテストレート間隔数Ｂが「５」であることを示している。
【００７８】
さらに、図８は、本実施形態におけるテストレート間隔数Ｂが「５」である場合のテストパタンのタイミングチャートの一例である。図８のタイミングチャートは、横軸に時刻、縦軸に信号区分をとっている。入力信号ＩＮＣＬＫ１、ＩＮＣＬＫ２は、外部から入力される低速クロック信号である。入力信号ＴＥは、ユーザモードとテストモードの切り替えを行う信号である。入力信号ＳＥは、シフト期間とラウンチ−キャプチャ期間の切り替えを行うスキャンイネーブル信号である。図８において、例えば、テストレートは、時刻Ｔ４０１から時刻Ｔ４０２までの２［ＮＳ］である。また、テストレート間隔数Ｂは、時刻Ｔ４０３から時刻Ｔ４０８までの５個分のテストレートが必要であることを示している。
【００７９】
図６Ａ、Ｂに戻り、動作フローの説明を続ける。テストレート間隔数Ｂが抽出されると、ステップＳ１１５において変数ｉに「１」が加算されて、ステップＳ１１２へ戻る。この後、ステップＳ１１２において、変数ｉが定数Ａより大きくなるまで、ステップＳ１１３からステップＳ１１７が繰り返される。
【００８０】
ステップＳ１１２において、変数ｉの値が定数Ａより大きくなると、外部から入力される低速クロック信号のラウンチ−キャプチャ期間中の２クロックを、２テストレートの間隔を空けたタイミングで発生するようにした制約を有するテストパタンが作成される（ステップＳ１１８）。
【００８１】
ここで、図９は、本実施形態におけるテストレート間隔数Ｂが「２」である場合のテストパタンのタイミングチャートの一例である。図９のタイミングチャートに示されるテストパタンは、前述のステップＳ１１８で作成される。図９のタイミングチャートは、横軸に時刻、縦軸に信号区分をとっている。入力信号ＩＮＣＬＫ１、ＩＮＣＬＫ２は、外部から入力される低速クロック信号である。入力信号ＴＥは、ユーザモードとテストモードの切り替えを行う信号である。入力信号ＳＥは、シフト期間とラウンチ−キャプチャ期間の切り替えを行うスキャンイネーブル信号である。ラウンチ−キャプチャ期間中において、入力信号ＩＮＣＬＫの時刻Ｔ３０３から時刻Ｔ３０５までの２クロックに対して、入力信号ＩＮＣＬＫ２の２クロックは、時刻Ｔ３０５から時刻Ｔ３０７にテストレート間隔数Ｂを「２」としたタイミングのテストパタンを示している。すなわち、入力信号ＩＮＣＬＫ１のキャプチャクロック（時刻Ｔ３０４から時刻Ｔ３０５までの間のクロック）で被テスト回路を遷移したデータが、入力信号ＩＮＣＬＫ２のラウンチクロック（時刻Ｔ３０６から時刻Ｔ３０７までの間のクロック）で取り込むデータとなるため、ステップＳ１１８においてＡＴＰＧで生成するテストパタンには、最低でもテストレート間隔数Ｂを「２」空ける必要があることを表している。
【００８２】
再び図６Ａ、Ｂに戻り、動作フローの説明を続ける。続いて、ステップＳ１１４、ステップＳ１１７で抽出されたテストレート間隔数Ｂに基づいて、ステップＳ１１８で作成されたテストパタンにおいて、外部から入力された低速クロック信号のラウンチ−キャプチャ期間中のダブルクロックの印加タイミングを修正して（ステップＳ１１９）、タイミング検証及びテストパタン作成工程（ステップＳ１５２）を終了する。
【００８３】
以上が、本実施形態における半導体集積回路のテスト回路設計システムにおける動作方法の説明である。このようにして、半導体集積回路の被テスト回路の動作に用いられる複数のクロックドメイン間のタイミング関係が抽出されて、この複数のクロックドメイン間のタイミング関係に基づいて、入力信号ＩＮＣＬＫ１、２間のテストレート間隔数Ｂが設定される。そのため、後述する半導体集積回路のテスト回路は、複数のクロックドメイン間において、適切なタイミングでＩＮＣＬＫ１、２を入力することができる。
【００８４】
［半導体集積回路のテスト回路構成］
次に、半導体集積回路のテスト回路設計システムにより作成されたテストパタンを用いてテストを実行する本実施形態における半導体集積回路のテスト回路の構成の説明を行う。図１０は、本実施形態における半導体集積回路のテスト回路の構成を示す図である。
【００８５】
図１０に示された半導体集積回路のテスト回路は、ダブルクロック抽出回路ユニット６００と、マルチプレクサ６０３、６０４、６０７、６０８と、スキャンフリップフロップ６０９、６１０、６１１、６１２と、組み合わせ回路６１３と、インバータ回路６１４と、ＡＮＤ回路６１５と、クロックマスク回路６０５、６０６とを備える。
【００８６】
入力信号ＴＥは、ユーザモードとテストモードとの切り替え信号である。入力信号ＳＥは、ラウンチ−キャプチャ期間の切り替え信号である。入力信号ＣＬＫ１、ＣＬＫ２は、ユーザ回路の動作に使用されるそれぞれ異なるクロックドメインに属したクロック信号である。入力信号ＩＮＣＬＫ１、ＩＮＣＬＫ２は、半導体集積回路のテスト回路で扱うことができる動作周波数の低速クロック信号である。入力信号ＳＩＮ１、ＳＩＮ２は、それぞれ、スキャンフリップフロップ６０９、６１０へ入力されるシフトデータである。入力信号ＤＩは、組み合わせ回路６１３に入力される入力データである。
【００８７】
ダブルクロック抽出回路ユニット６００は、遅延故障テストのマルチキャプチャ手法における２つのクロックドメインに対応するダブルクロック抽出回路６０１、６０２を備える。ダブルクロック抽出回路６０１、６０２は、それぞれ、第１入力端子（ｉ＿ｅｎａｂｌｅ）と、第２入力端子（ｉ＿ｓｔａｒｔ＿ｎ）と、第３入力端子（ｉ＿ｃｌｋ）と、第４入力端子（ｉ＿ｃｌｋ＿ｂｙｐｓ）と、出力端子（ｏ＿ｃｌｋ＿ｅｎ＿ｃｔｒｌ１）とを備える。
【００８８】
ダブルクロック抽出回路６０１の第１入力端子は、入力信号ＴＥを入力する。ダブルクロック抽出回路６０１の第２入力端子は、入力信号ＳＥを入力する。ダブルクロック抽出回路６０１の第３入力端子は、入力信号ＣＬＫ１を入力する。ダブルクロック抽出回路６０１の第４入力端子は、入力信号ＩＮＣＬＫ１を入力する。また、ダブルクロック抽出回路６０２の第１入力端子は、入力信号ＴＥを入力する。ダブルクロック抽出回路６０２の第２入力端子は、入力信号ＳＥを入力する。ダブルクロック抽出回路６０２の第３入力端子は、入力信号ＣＬＫ２を入力する。ダブルクロック抽出回路６０２の第４入力端子は、入力信号ＩＮＣＬＫ２を入力する。
【００８９】
ダブルクロック抽出回路６０１は、第１入力端子に入力する入力信号ＴＥがハイレベルで第２入力端子に入力する入力信号ＳＥがロウレベルであるラウンチキャプチャ期間中に、第４入力端子に入力する入力信号ＩＮＣＬＫ１の２クロック目の立ち上がりを起点として、第３入力端子に入力する入力信号ＣＬＫ１の２クロック分のハイパルスを、出力端子に出力する。また、ダブルクロック抽出回路６０２は、第１入力端子に入力する入力信号ＴＥがハイレベルで第２入力端子に入力する入力信号ＳＥがロウレベルであるラウンチキャプチャ期間中に、第４入力端子に入力する入力信号ＩＮＣＬＫ２の２クロック目の立ち上がりを起点として、第３入力端子に入力する入力信号ＣＬＫ２の２クロック分のハイパルスを、出力端子に出力する。
【００９０】
マルチプレクサ６０３、６０４は、入力端子Ｄ０にインバータ回路６１４で反転された入力信号ＴＥを入力する。マルチプレクサ６０３の入力端子Ｄ１はダブルクロック抽出回路６０１の出力端子と接続されており、マルチプレクサ６０４の入力端子Ｄ１はダブルクロック抽出回路６０２の出力端子と接続される。マルチプレクサ６０３、６０４は、共に入力端子Ｓ０に入力信号ＴＥを入力して、入力信号ＴＥに基づいて、出力端子Ｙへの出力を入力端子Ｄ０と入力端子Ｄ１のうちから選択する。
【００９１】
クロックマスク回路６０５は、入力端子ＩＮ２に入力信号ＣＬＫ１を入力する。クロックマスク回路６０５の入力端子ＩＮ１は、マルチプレクサ６０３の出力端子Ｙと接続される。クロックマスク回路６０５は、入力端子ＮＩ１がハイレベルのときに、入力端子ＩＮ２に入力する値を出力端子ＯＵＴに出力する。また、クロックマスク回路６０６は、入力端子ＩＮ２に入力信号ＣＬＫ２を入力する。クロックマスク回路６０６の入力端子ＩＮ１は、マルチプレクサ６０４の出力端子Ｙと接続される。クロックマスク回路６０６は、入力端子ＮＩ１がハイレベルのときに、入力端子ＩＮ２に入力する値を出力端子ＯＵＴに出力する。
【００９２】
マルチプレクサ６０７の入力端子Ｄ０は、クロックマスク回路６０５の出力端子ＯＵＴと接続される。マルチプレクサ６０７の入力端子Ｄ１は、入力信号ＩＮＣＬＫ１を入力する。マルチプレクサ６０８の入力端子Ｄ０は、クロックマスク回路６０６の出力端子ＯＵＴと接続される。マルチプレクサ６０８の入力端子Ｄ１は、入力信号ＩＮＣＬＫ２を入力する。マルチプレクサ６０７、６０８の入力端子Ｓ０は、ＡＮＤ回路６１５の出力端子Ｙと接続される。マルチプレクサ６０７、６０８は、入力端子Ｓ０へ入力される信号に基づいて、出力端子Ｙへの出力を入力端子Ｄ０と入力端子Ｄ１のうちから選択する。
【００９３】
ＡＮＤ回路６１５の入力端子Ａは、入力信号ＴＥを入力する。ＡＮＤ回路６１５の入力端子Ｂは、入力信号ＳＥを入力する。ＡＮＤ回路６１５の出力端子Ｙの出力は、入力端子Ａ及び入力端子Ｂの入力に基づいて決定される。
【００９４】
スキャンフリップフロップ６０９の入力端子Ｄは、組み合わせ回路６１３の出力端子ＯＵＴ１１と接続される。スキャンフリップフロップ６０９の入力端子ＳＩは、入力信号ＳＩＮ１を入力する。スキャンフリップフロップ６０９の入力端子ＳＭＣは、入力信号ＳＥを入力する。スキャンフリップフロップ６０９の入力端子ＣＬＫは、マルチプレクサ６０７の出力端子Ｙと接続される。スキャンフリップフロップ６０９の出力端子Ｑは、組み合わせ回路６１３の入力端子ＩＮ１１と、スキャンフリップフロップ６１１の入力端子ＳＩと、それぞれ接続される。また、スキャンフリップフロップ６１１の入力端子Ｄは、組み合わせ回路６１３の出力端子ＯＵＴ１２と接続される。スキャンフリップフロップ６１１の入力端子ＳＩは、スキャンフリップフロップ６０９の出力端子Ｑと接続される。スキャンフリップフロップ６１１の入力端子ＳＭＣは、入力信号ＳＥを入力する。スキャンフリップフロップ６１１の入力端子ＣＬＫは、マルチプレクサ６０７の出力端子Ｙと接続される。スキャンフリップフロップ６１１の出力Ｑは、組み合わせ回路６１３の入力端子１２と接続されると共に、後段への出力ＳＯＴ１となる。
【００９５】
スキャンフリップフロップ６１０の入力端子Ｄは、組み合わせ回路６１３の出力端子ＯＵＴ２１と接続される。スキャンフリップフロップ６１０の入力端子ＳＩは、入力信号ＳＩＮ２を入力する。スキャンフリップフロップ６１０の入力端子ＳＭＣは、入力信号ＳＥを入力する。スキャンフリップフロップ６１０の入力端子ＣＬＫは、マルチプレクサ６０８の出力端子Ｙと接続される。スキャンフリップフロップ６１０の出力端子Ｑは、組み合わせ回路６１３の入力端子ＩＮ２１と、スキャンフリップフロップ６１２の入力端子ＳＩと、それぞれ接続される。また、スキャンフリップフロップ６１２の入力端子Ｄは、組み合わせ回路６１３の出力端子ＯＵＴ２２と接続される。スキャンフリップフロップ６１２の入力端子ＳＩは、スキャンフリップフロップ６１０の出力端子Ｑと接続される。スキャンフリップフロップ６１２の入力端子ＳＭＣは、入力信号ＳＥを入力する。スキャンフリップフロップ６１２の入力端子ＣＬＫは、マルチプレクサ６０７の出力端子Ｙと接続される。スキャンフリップフロップ６１２の出力Ｑは、組み合わせ回路６１３の入力端子２２と接続されると共に、後段への出力ＳＯＴ２となる。
【００９６】
組み合わせ回路６１３の入力端子ＤＩは入力信号ＤＩを入力する。組み合わせ回路６１３の出力端子１１は、スキャンフリップフロップ６０９の入力端子Ｄと接続され、入力端子１１は、スキャンフリップフロップ６０９の出力端子Ｑと接続される。組み合わせ回路６１３の出力端子１２は、スキャンフリップフロップ６１１の入力端子Ｄと接続され、入力端子１２は、スキャンフリップフロップ６１１の出力端子Ｑと接続される。組み合わせ回路６１３の出力端子２１は、スキャンフリップフロップ６１０の入力端子Ｄと接続され、入力端子２１は、スキャンフリップフロップ６１０の出力端子Ｑと接続される。組み合わせ回路６１３の出力端子２２は、スキャンフリップフロップ６１２の入力端子Ｄと接続され、入力端子２２は、スキャンフリップフロップ６１２の出力端子Ｑと接続される。また、組み合わせ回路６１３の出力端子ＤＯは、後段への出力ＤＯとなる。
【００９７】
以上が、本実施形態における半導体集積回路のテスト回路の構成の説明である。なお、ダブルクロック抽出回路６０１及び６０２、マルチプレクサ６０３及び６０４、クロックマスク回路６０５及び６０６、マルチプレクサ６０７及び６０８は、クロックドメインの数に対応して設けられている。すなわち、本実施形態では、クロックドメインが２つ存在する場合を例としているため、それぞれ２構成ずつ設けられている。そのため、クロックドメインの数が増加する場合には、これらの各構成をクロックドメインの数に対応して増加させることで対応することができる。また、この場合、入力信号ＣＬＫがクロックドメインの数に対応して存在するのは当然であるが、入力信号ＩＮＣＬＫについてもクロックドメインの数に対応して存在することになる。つまり、クロックドメインが、例えば４つ存在する場合には、入力信号ＣＬＫも４入力存在し、また、入力信号ＩＮＣＬＫも４入力存在し、さらに各構成も４構成ずつ設けられることになる。これによって、複数のクロックドメインが存在する場合にも、対応することが可能となる。
【００９８】
［動作方法の説明］
次に、上述のような構成を備える本実施形態における半導体集積回路のテスト回路の動作方法の説明を行う。なお、本実施形態における半導体集積回路のテスト回路は、ユーザモードとテストモードの切り替えが可能であるが、ユーザモード時の動作は、図３を用いて説明を行った特許文献１による半導体集積回路のテスト回路の構成例と同様であるので説明を省略して、テストモード時の説明のみを行う。また、以下の説明において、ダブルクロックの印加順は、入力信号ＣＬＫ１のドメインから入力信号ＣＬＫ２のドメインの順とする。
【００９９】
テストモード時のラウンチ−キャプチャ期間において、入力信号ＴＥはハイレベルであり、入力信号ＳＥはロウレベルである。このラウンチ−キャプチャ期間において、ダブルクロック抽出回路６０１、６０２は、ダブルクロックを抽出するためのハイレベルのイネーブル信号を出力している。このイネーブル信号に基づいて抽出されたダブルクロックを用いて、遅延故障テストが行われる。このダブルクロック抽出回路６０１、６０２から出力されるハイレベルのイネーブル信号は、図６のステップＳ１１４、及びステップＳ１１７におけるテストレート間隔数Ｂに基づいて、外部から入力される低速クロック信号である入力信号ＩＮＣＬＫ１、及び入力信号ＩＮＣＬＫ２の印加タイミングで決定される。
【０１００】
まず、入力信号ＣＬＫ１側のクロックドメインの説明を行う。ダブルクロック抽出回路６０１は、入力信号ＩＮＣＬＫ１を第４入力端子に入力する。ダブルクロック抽出回路６０１は、入力信号ＩＮＣＬＫ１の２クロック目の立ち上がりを起点に、入力信号ＣＬＫ１の２クロック分のハイパルスを出力端子に出力する。このときマルチプレクサ６０３は、入力端子Ｓ０にハイレベルの入力信号ＴＥを入力しているため、ダブルクロック抽出回路６０１の出力端子から入力端子Ｄ１に入力される入力信号ＣＬＫ１の２クロック分のハイパルスを出力端子Ｙに出力する。
【０１０１】
クロックマスク回路６０５は、マルチプレクサ６０３の出力端子から入力信号ＣＬＫ１の２クロック分のハイパルスを入力端子ＩＮ１に入力している間、入力端子ＩＮ２に入力する入力信号ＣＬＫ１を出力端子ＯＵＴ１に出力する。これによって、入力信号ＣＬＫ１側のクロックドメインにおけるダブルクロック信号が抽出される。ここで、マルチプレクサ６０７は、ＡＮＤ回路６１５からロウレベルの信号を入力端子Ｓ０に入力しているため、クロックマスク回路６０５の出力端子ＯＵＴから入力端子Ｄ０に入力するダブルクロック信号を出力端子Ｙに出力する。スキャンフリップフロップ６０９、６１１は、マルチプレクサ６０７の出力端子Ｙから出力されるダブルクロック信号を入力端子ＣＬＫに入力して、ダブルクロック信号により遅延故障テストを行う。
【０１０２】
次に、入力信号ＣＬＫ２側のクロックドメインの説明を行う。ダブルクロック抽出回路６０２は、を第４入力端子に入力する入力信号ＩＮＣＬＫ２の２クロック目の立ち上がりを起点に、第３入力端子に入力する入力信号ＣＬＫ２の２クロック分のハイパルスを出力端子に出力する。このときマルチプレクサ６０４は、入力端子Ｓ０にハイレベルの入力信号ＴＥを入力しているため、ダブルクロック抽出回路６０２の出力端子から入力端子Ｄ１に入力する入力信号ＣＬＫ２の２クロック分のハイパルスを出力端子Ｙに出力する。
【０１０３】
クロックマスク回路６０６は、マルチプレクサ６０４の出力端子から入力信号ＣＬＫ２の２クロック分のハイパルスを入力端子ＩＮ１に入力している間、入力端子ＩＮ２に入力する入力信号ＣＬＫ２を出力端子ＯＵＴ１に出力する。これによって、入力信号ＣＬＫ２側のクロックドメインにおけるダブルクロック信号が抽出される。ここで、マルチプレクサ６０８は、ＡＮＤ回路６１５からロウレベルの信号を入力端子Ｓ０に入力しているため、クロックマスク回路６０６の出力端子ＯＵＴから入力端子Ｄ０に入力するダブルクロック信号を出力端子Ｙに出力する。スキャンフリップフロップ６１０、６１２は、マルチプレクサ６０８の出力端子Ｙから出力されるダブルクロック信号を入力端子ＣＬＫに入力して、ダブルクロック信号により遅延故障テストを行う。
【０１０４】
図１１は、本実施形態における半導体集積回路のテスト回路のタイミングチャートである。図１１において、横軸は時刻、縦軸は信号区分を示している。
【０１０５】
図１１のタイミングチャートは、テストモード時のラウンチ−キャプチャ期間中において、ダブルクロック抽出回路６０１は、第４入力端子へ入力する入力信号ＩＮＣＬＫ１の２クロック目の立ち上がりを起点に、第３入力端子へ入力する入力信号ＣＬＫ１の２クロック分のハイパルスを出力端子から出力し、ダブルクロック抽出回路６０２は、第４入力端子へ入力する入力信号ＩＮＣＬＫ２の２クロック目の立ち上がりを起点に、第３入力端子へ入力する入力信号ＣＬＫ２の２クロック分のハイパルスを出力端子から出力することを示している。
【０１０６】
入力信号ＴＥは、ユーザモードとテストモードとの切り替え信号であり、ハイレベルでテストモードとなる。時刻Ｔ７０１以降、入力信号ＴＥはハイレベルであり、テストモード期間となる。また、入力信号ＳＥは、ラウンチ−キャプチャ期間の切り替え信号であり、ロウレベルでラウンチ−キャプチャ期間となる。時刻Ｔ７０２から時刻Ｔ７１１までの間、入力信号ＳＥはロウレベルであり、ラウンチ−キャプチャ期間となる。
【０１０７】
入力信号ＩＮＣＬＫ１と入力信号ＩＮＣＬＫ２は、外部から入力する低速のクロック信号である。入力信号ＩＮＣＬＫ１と入力信号ＩＮＣＬＫ２は、シフト期間中に、スキャンフリップフロップ６０９、６１０、６１１、６１２へシフトデータを供給し、ラウンチ−キャプチャ期間中に、入力信号ＣＬＫ１、入力信号ＣＬＫ２からダブルクロックを抽出するための２クロックの信号を供給する。また、入力信号ＣＬＫ１と入力信号ＣＬＫ２は、ユーザ回路の動作に用いられるクロック信号である。入力信号ＣＬＫ１と入力信号ＣＬＫ２は、クロックドメインが異なり、それぞれ異なる周波数を有する。
【０１０８】
まず、図１１において、シフト期間は、時刻Ｔ７０１から時刻Ｔ７０２の期間である。シフト期間において、入力信号ＴＥと入力信号ＳＥとは、それぞれハイレベルである。このとき、マルチプレクサ６０７、６０８は、入力端子Ｄ１を出力として選択しており、それぞれ、入力端子Ｄ１に入力する入力信号ＩＮＣＬＫ１、ＩＮＣＬＫ２を出力端子Ｙに出力する。スキャンフリップフロップ６０９、６１１は、マルチプレクサ６０７の出力端子Ｙから出力される入力信号ＩＮＣＬＫ１を入力端子ＣＬＫに入力する。また、スキャンフリップフロップ６１０、６１２は、マルチプレクサ６０８の出力端子Ｙから出力される入力信号ＩＮＣＬＫ２を入力端子ＣＬＫに入力する。
【０１０９】
次に、図１１において、ラウンチ−キャプチャ期間は、時刻Ｔ７０２から時刻Ｔ７１１までの期間である。ラウンチ−キャプチャ期間において、入力信号ＴＥはハイレベルであり、入力信号ＳＥはロウレベルである。ダブルクロック抽出回路６０１は、時刻Ｔ７０３において、入力信号ＩＮＣＬＫ１によるダブルクロックを抽出するための２クロックの信号を第４入力端子に入力すると、時刻Ｔ７０４から時刻Ｔ７０６までの間に、第３入力端子に入力する入力信号ＣＬＫ１の２クロック分の期間のハイパルスであるイネーブル信号を出力端子に出力する。マルチプレクサ６０３は、入力端子Ｄ１を出力として選択しており、ダブルクロック抽出回路６０１の出力端子から入力端子Ｄ１へ入力するイネーブル信号を出力端子Ｙに出力する。クロックマスク回路６０５は、マルチプレクサ６０３の出力端子Ｙから入力端子ＩＮ１に入力するイネーブル信号がハイレベルである間、入力端子ＩＮ２に入力する入力信号ＣＬＫ１の２クロック分をダブルクロック信号として出力端子ＯＵＴ１に出力する。マルチプレクサ６０７は、入力端子Ｄ０を出力として選択しており、クロックマスク回路６０５から入力端子Ｄ０へ入力するダブルクロック信号を出力端子Ｙに出力する。スキャンフリップフロップ６０９、６１１は、マルチプレクサ６０７の出力端子Ｙから出力されるダブルクロック信号を、それぞれの入力端子ＣＬＫへ入力する。
【０１１０】
また、ダブルクロック抽出回路６０２は、時刻Ｔ７０７において、入力信号ＩＮＣＬＫ２によるダブルクロックを抽出するための２クロックの信号を第４入力端子に入力すると、時刻Ｔ７０８から時刻Ｔ７１０までの間に、第３入力端子に入力する入力信号ＣＬＫ２の２クロック分の期間のハイパルスであるイネーブル信号を出力端子に出力する。マルチプレクサ６０４は、入力端子Ｄ１を出力として選択しており、ダブルクロック抽出回路６０２の出力端子から入力端子Ｄ１へ入力するイネーブル信号を出力端子Ｙに出力する。クロックマスク回路６０６は、マルチプレクサ６０４の出力端子Ｙから入力端子ＩＮ１に入力するイネーブル信号がハイレベルである間、入力端子ＩＮ２に入力する入力信号ＣＬＫ２の２クロック分をダブルクロック信号として出力端子ＯＵＴ１に出力する。マルチプレクサ６０８は、入力端子Ｄ０を出力として選択しており、クロックマスク回路６０６から入力端子Ｄ０へ入力するダブルクロック信号を出力端子Ｙに出力する。スキャンフリップフロップ６１０、６１２は、マルチプレクサ６０８の出力端子Ｙから出力されるダブルクロック信号を、それぞれの入力端子ＣＬＫへ入力する。
【０１１１】
なお、各クロックドメイン間のダブルクロックの出力タイミングは、時刻Ｔ７０６から時刻Ｔ７０９までの期間をおかれている。この期間は、タイミング検証の結果に基づいて、テストパタンにおける入力信号ＩＮＣＬＫ１、及び入力信号ＩＮＣＬＫ２の印加タイミングにより修正が行われる。
【０１１２】
２つのクロックドメインにおけるそれぞれのラウンチ動作、キャプチャ動作を終了した後、時刻Ｔ７１１で入力信号ＳＥがハイレベルとなりシフト期間へ移行すると、スキャンチェーンを用いてスキャンフリップフロップ６０９、６１０、６１１、６１２のキャプチャデータをシフトして、出力信号ＳＯＴ１、ＳＯＴ２として出力する。
【０１１３】
以上が、本実施形態における半導体集積回路のテスト回路の動作方法の説明である。
【０１１４】
ここまで、実施形態により半導体集積回路のテスト回路を説明してきた。本発明によれば、クロックドメインの数に対応して設けられたダブルクロック抽出回路とクロックマスク回路によりダブルクロックを抽出する。複数のクロックドメイン間におけるダブルクロックの出力タイミングは、各クロックドメインの数に対応して設けられた低速クロック信号である入力信号ＩＮＣＬＫの２つのハイパルスのタイミングによって決定される。また、各クロックドメインに対応する入力信号ＩＮＣＬＫの２つのハイパルスのタイミングは、前述した半導体集積回路のテスト回路設計システムにより、半導体集積回路のテスト回路におけるテストレートとクロックドメイン間のＳＬＡＣＫ値に基づいて設定される。このように、本実施形態の半導体集積回路のテスト回路は、各クロックドメインに対応する入力信号ＩＮＣＬＫの２つのハイパルスのタイミングによって、複数のクロックドメイン間におけるダブルクロックの出力タイミングを決定できるため、半導体集積回路のレイアウト設計後においてもクロックドメイン間のタイミング関係を調整することが可能となる。これによって、半導体集積回路のレイアウト設計後のタイミング検証において、前述したテスト容易化設計工程やレイアウト設計工程へのイタレーションの発生を抑えることができ、半導体集積回路の設計期間が増大することを防ぐことが可能になる。
【０１１５】
また、テスト容易化設計工程後に、マルチキャプチャにおける全てのクロックドメインの印加順を任意に変更することができるため、タイミング検証の解析結果で求めたテストレート間隔数Ｂに基づいて、全てのクロックドメインにおける最短の組み合わせを考慮してテストパタンを修正することで、最短のテストパタンを作成することができる。さらに、被テスト回路の構成に応じて、被テスト回路の故障が検出しやすいダブルクロックの印加順を考えてテストパタンを作成することが可能となり、テストパタン数の削減も可能となる。
【０１１６】
加えて、本発明の半導体集積回路のテスト回路とテストパタン作成フローは、レイアウト設計後におけるタイミング検証の結果に応じて、複数のクロックドメインの各々のダブルクロックの印加タイミングをテストパタンに反映できる。そのため、テスト容易化設計工程、レイアウト設計工程で、テストモード時に活性化するパスのタイミングを考慮する必要が無くなり、テスト設計が容易になる。また、タイミング検証の結果に応じたテストパタンを作成することができるため、レイアウト設計の途中でユーザ回路の変更が発生し、遅延故障テスト時のタイミングパスの遅延が変わっても、テスト容易化設計工程、レイアウト設計工程へのイタレーションが発生しない。
【０１１７】
以上、実施形態を参照して本願発明を説明したが、本願発明は、上記実施形態に限定されるものではない。本願発明の構成や詳細には、本願発明の範囲内で当業者が理解し得る様々な変更を行うことが可能である。
【符号の説明】
【０１１８】
１０  コンピュータ
１４  サーバ
１５  記憶部
１６  インターネット
６００  ダブルクロック抽出回路ユニット
６０１  ダブルクロック抽出回路
６０２  ダブルクロック抽出回路
６０３  マルチプレクサ
６０４  マルチプレクサ
６０５  クロックマスク回路
６０６  クロックマスク回路
６０７  マルチプレクサ
６０８  マルチプレクサ
６０９  スキャンフリップフロップ
６１０  スキャンフリップフロップ
６１１  スキャンフリップフロップ
６１２  スキャンフリップフロップ
６１３  組み合わせ回路
６１４  インバータ回路
６１５  ＡＮＤ回路
１３００  ダブルクロック抽出回路ユニット
１３０１  ダブルクロック抽出回路
１３０３  ダブルクロック抽出回路
【図１】
2011203158.tif 000003
【図２】
2011203158.tif 000004
【図３】
2011203158.tif 000005
【図４Ａ】
2011203158.tif 000006
【図４Ｂ】
2011203158.tif 000007
【図５】
2011203158.tif 000008
【図６Ａ】
2011203158.tif 000009
【図６Ｂ】
2011203158.tif 000010
【図７】
2011203158.tif 000011
【図８】
2011203158.tif 000012
【図９】
2011203158.tif 000013
【図１０】
2011203158.tif 000014
【図１１】
2011203158.tif 000015