(57)【要約】【課題】スキャンテストに要する時間を削減するテストパタン作成方法を提供する。【解決手段】テストパタン作成方法は、組み合わせ論理回路と少なくとも一つのスキャンチェーンとに関する情報を、記録媒体から読み出し、少なくとも一つのスキャンチェーンの入力側に近いフリップフロップから順番に抽出し（ステップＳ２１）、抽出したフリップフロップがスキャンキャプチャ動作によって組み合わせ論理回路から取り込むキャプチャデータと照合する期待値の必要性を判定し（ステップＳ２２〜Ｓ２５）、期待値が不要と判定されたフリップフロップが入力側から連続して存在するフリップフロップの数を取得し（ステップＳ２７）、スキャンチェーンに含まれるフリップフロップの総数と、取得したフリップフロップの数との差分を、スキャンキャプチャ動作後のスキャンシフト回数として決定する（ステップＳ２８）。【選択図】図２
2013036874.tif 000002
【特許請求の範囲】
【請求項１】
スキャンテストのテストパタン作成方法であって、
組み合わせ論理回路と少なくとも一つのスキャンチェーンとに関する情報を、記録媒体から読み出し、
前記少なくとも一つのスキャンチェーンの入力側に近いフリップフロップから順番に抽出し、前記抽出したフリップフロップがスキャンキャプチャ動作によって前記組み合わせ論理回路から取り込むキャプチャデータと照合する期待値の必要性を判定し、
前記期待値が不要と判定されたフリップフロップが前記入力側から連続して存在するフリップフロップの数を取得し、
前記スキャンチェーンに含まれるフリップフロップの総数と、前記取得したフリップフロップの数との差分を、スキャンキャプチャ動作後のスキャンシフト回数として決定するテストパタン作成方法。
【請求項２】
前記期待値の必要性の判定は、前記抽出したフリップフロップについて、前記期待値が不定値である場合、前記期待値が不要と判定することを特徴とする請求項１記載のテストパタン作成方法。
【請求項３】
前記期待値の必要性の判定は、前記抽出したフリップフロップが接続される組み合わせ論理回路において新規故障箇所が検出されない場合、前記期待値が不要と判定することを特徴とする請求項１または２記載のテストパタン作成方法。
【請求項４】
前記テストパタンは、前記スキャンシフト回数に応じて生成され、
生成されたテストパタンが記録媒体に格納されることを特徴とする請求項１乃至３のいずれか一項に記載のテストパタン作成方法。
【請求項５】
前記テストパタンは、前記スキャンシフト回数のスキャンシフト動作が実施されると、前記スキャンシフト動作によって入力端子から入力されるシフトデータと、前記スキャンキャプチャ動作によってフリップフロップが取り込んだキャプチャデータとのいずれかを、前記スキャンチェーンを構成するフリップフロップが保持するように生成されることを特徴とする請求項１乃至４のいずれか一項に記載のテストパタン作成方法。
【請求項６】
前記テストパタンは、次のスキャンシフト動作で入力するシフトデータとして、前記スキャンシフト回数と同じ数のシフトデータを含むことを特徴とする請求項１乃至５のいずれか一項に記載のテストパタン作成方法。
【請求項７】
前記テストパタンは、前記期待値として、前記スキャンシフト回数と同じ数の期待値を含むことを特徴とする請求項１乃至６のいずれか一項に記載のテストパタン作成方法。
【請求項８】
前記スキャンチェーン内に、前記期待値が必要と判定されるフリップフロップが存在せず、かつ、すべての故障検出が完了していないと判定される場合、前記スキャンシフト回数を、前記スキャンチェーンに含まれるフリップフロップの総数に一致させることを特徴とする請求項１乃至７のいずれか一項に記載のテストパタン作成方法。
【請求項９】
前記少なくとも一つのスキャンチェーンが、複数のスキャンチェーンから構成され、
前記複数のスキャンチェーンそれぞれに含まれるフリップフロップについて、前記期待値が不要と判定されたフリップフロップが連続して存在するフリップフロップの数を取得し、
スキャンチェーン毎に、一つのスキャンチェーンに含まれるフリップフロップの総数から、前記取得したフリップフロップの数との差分を、前記一つのスキャンチェーンのスキャンシフト回数として取得し、
スキャンチェーン毎に取得したスキャンシフト回数のうち、最大値をスキャンキャプチャ動作後のスキャンシフト回数として決定することを特徴とする請求項１乃至８のいずれか一項に記載のテストパタン作成方法。
【請求項１０】
前記テストパタンは、複数種類の前記スキャンシフト回数に応じて生成され、
スキャンシフト動作を３回以上のＸ回（Ｘは、３以上の整数）行う場合、フリップフロップの総数をＭ（Ｍは１以上の整数）、Ｋ回目のスキャンシフト動作のスキャンシフト回数をＮ［Ｋ］（Ｋは１以上Ｘ以下の整数、Ｎは０以上Ｍ以下の整数）とすると、各スキャンシフト動作で用いるテスト用のデータとして、
１回目のスキャンシフト動作に対して、個数Ｍのシフトデータ、
Ｘ−１回目のスキャンシフト動作に対して、個数（Ｍ−Ｎ［Ｘ−１］）のシフトデータ及び期待値、または、個数Ｍのシフトデータ、及び
Ｘ回目のスキャンシフト動作に対して、個数（Ｍ−Ｎ［Ｘ］）の期待値、
を含むテストパタンが作成されることを特徴とする請求項１乃至９のいずれか一項に記載のテストパタン作成方法。
【請求項１１】
前記期待値は、前記シフトデータと、前記スキャンキャプチャ動作によっていずれかのフリップフロップが取り込んだキャプチャデータとの、少なくとも一方を用いて前記組み合わせ回路が演算する演算結果であることを特徴とする請求項５記載のテストパタン作成方法。
【請求項１２】
前記テストパタンは、スキャンシフト動作を実施すると、前記入力側に最も近いフリップフロップから前記スキャンシフト回数に一致するフリップフロップまでに、前記シフトデータが保持され、他のフリップフロップには、一つ前のスキャンキャプチャ動作によって前記組み合わせ回路から各フリップフロップへ取り込まれ、前記スキャンシフト動作によってシフトされるキャプチャデータが保持されるように生成されることを特徴とする請求項５または１１記載のテストパタン作成方法。
【請求項１３】
スキャンテストのテストパタン作成方法を実現するプログラムであって、
コンピュータに、
組み合わせ論理回路と少なくとも一つのスキャンチェーンとに関する情報を、記録媒体から読み出す処理と、
前記少なくとも一つのスキャンチェーンの入力側に近いフリップフロップから順番に抽出し、抽出したフリップフロップがスキャンキャプチャ動作によって前記組み合わせ論理回路から取り込むキャプチャデータと照合する期待値の必要性を判定する処理と、
前記期待値が不要と判定されたフリップフロップが前記入力側から連続して存在するフリップフロップの数を取得する処理と、
前記スキャンチェーンに含まれるフリップフロップの総数と、前記取得したフリップフロップの数との差分を、スキャンキャプチャ動作後のスキャンシフト回数として決定する処理とを実行させるプログラム。
【請求項１４】
スキャンテストのテストパタン作成装置であって、
組み合わせ論理回路と少なくとも一つのスキャンチェーンとに関する情報を格納する記録媒体と、
前記少なくとも一つのスキャンチェーンの情報を前記記録媒体から読み出し、スキャンチェーンの入力側に近いフリップフロップから順番に抽出し、抽出したフリップフロップがスキャンキャプチャ動作によって前記組み合わせ論理回路から取り込むキャプチャデータと照合する期待値の必要性を判定し、前記期待値が不要と判定されたフリップフロップが前記入力側から連続して存在するフリップフロップの数を取得する抽出部と、
前記スキャンチェーンに含まれるフリップフロップの総数と、前記取得したフリップフロップの数との差分を、スキャンキャプチャ動作後のスキャンシフト回数として決定する決定部と、を備えるテストパタン作成装置。
【請求項１５】
前記請求項１乃至１１に記載のテストパタン作成方法によって生成されたテストパタンを用いて、スキャンテストを実施するテスタ。
【請求項１６】
前記請求項１乃至１１に記載のテストパタン作成方法によって生成されたテストパタンを用いて、スキャンテストを実施する半導体集積回路のテスト方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体集積回路のスキャンテストに関し、特にスキャンテストの時間を短縮するためのスキャンパタン作成方法に関する。
【背景技術】
【０００２】
半導体集積回路（以降、ＬＳＩと称す）の微細化、大規模化に伴い、ＬＳＩをテストする際の、テストパタンやテスト時間が膨大となり、テストコストが増加してきている。その為、ＬＳＩのテストコストを削減するために、テスト容易化設計として、スキャンテストが一般に用いられている。
スキャンテストは、組み合わせ論理回路の出力端子に接続されているフリップフロップを利用し、各フリップフロップの出力端子を、他のフリップフロップの入力端子へと直列に接続して、チェーン状に接続したスキャンチェーンを形成して行なう。
【０００３】
スキャンテストには、スキャンシフト動作とスキャンキャプチャ動作がある。
「スキャンシフト動作」とは、形成されたスキャンチェーンの入力端子からシフトデータを入力し、この値を伝達することによって、各フリップフロップに任意の入力値を設定することができ、同時に各フリップフロップが保持するデータを出力する事をいう。
「スキャンキャプチャ動作」とは、組み合わせ論理回路によって各フリップフロップに設定された値が演算された結果を、組み合わせ論理回路の出力端子に接続されているフリップフロップに保持させる事をいう。
【０００４】
近年、更なるＬＳＩの微細化、大規模化に伴い、フリップフロップの数が多くなり、スキャンチェーンの長さが長くなり、スキャンシフト動作に対するテスト時間が膨大となり、テストコストが増加してきている。その為、スキャンシフト動作にかかる時間を削減する技術が求められている。
【０００５】
例えば、非特許文献１には、スキャンテストで使用するＬＳＩ内部回路のデザインに関する技術が開示されている。
図１２Ａに一般的な同期回路、図１２Ｂに一般的なスキャンチェーンを形成した回路を示す。
図１２Ａの回路は、Ｍ個（Ｍは１以上の整数）のフリップフロップ（以降、適宜「ＦＦ」ともいう）１〜Ｍから構成されるフリップフロップ群７０１とＣｏｍｂｉｎａｔｉｏｎａｌ  Ｃｉｒｃｕｉｔ７０２（以降、適宜「組み合わせ論理回路」ともいう）を搭載する一般的な同期回路である。これに対して、図１２Ｂの回路は、各フリップフロップ７０３、７０５、７０７の入力端子（Ｄ端子）に出力端子が接続された、２−ｔｏ−１型ＭＵＸ（以降、適宜「ＭＵＸ」ともいう）７０４、７０６、７０８を配置してスキャンチェーンを形成した回路である。この回路では、最前段のＭＵＸ７０４の入力端子は、組み合わせ論理回路７０２の出力端子７０９と、ＳＩ端子７１０とが接続される。中間のＭＵＸ７０６の入力端子には、組み合わせ論理回路７０２の出力端子７１１と、前段のフリップフロップの出力端子（Ｑ端子）７１２が接続される。最後段には、ＭＵＸ７１３を配置し、その入力端子には、組み合わせ論理回路７０２の出力端子（Ｚｎ端子）７１４と最後段のフリップフロップの出力端子（Ｑ端子）７１５が接続される。その出力は、ＳＯ端子７１６である。すべてのＭＵＸには、同じスキャンイネーブル信号（以降、適宜「ＳＥ信号」ともいう）７１７を供給する。
【０００６】
例えば、ＳＥ信号が"１"の時、シフト動作となり、最前段のＭＵＸ７０４を除くすべてのＭＵＸ７０６、７０８、７１４には前段のフリップフロップの出力がインプットされ、すべてのフリップフロップ７０３、７０５、７０７はシフトレジスタとして動作する。最前段のＭＵＸ７０４にはＳＩ信号（Ｘｋ）がインプットされ、最後段のＭＵＸ７１３の出力は、ＳＯ信号となる。ＳＥ信号が"０"の時、スキャンキャプチャ動作となり、組み合わせ論理回路７０２の出力がそれぞれ接続されたＭＵＸにインプットされ、全てのフリップフロップに組み合わせ論理回路７０２の出力が格納される。この回路が、一般的なスキャンチェーンを形成した回路（図１２Ｂ）になる。
【０００７】
図１３に、一般的なスキャンチェーンを形成した回路（図１２Ｂ）に対して、スキャンテスト用のテストパタン作成の動作例のフローチャートを示す。図１３では、テストパタンを作成するツール（プログラム）を用いて図１３に示す各ステップの処理を実施することを前提として説明する。
ステップＳ８２では、一般的なスキャンチェーンを形成した回路のネットリスト（組み合わせ論理回路とスキャンチェーンとに関する情報を含む回路構成情報）を記録媒体から読み込み、ネットリストから組み合わせ論理回路及びスキャンチェーンの情報などの回路構成の抽出を行いステップＳ８３に進む（ステップＳ８２）。ネットリストは予め作成され、記録媒体に保存されている。
続いて、ステップＳ８３では、スキャンシフト動作を行い、抽出したスキャンチェーンの情報に含まれる全フリップフロップに対して、シフトインによりＳＩ端子からシフトデータをシフトさせることにより、各フリップフロップの値を確定させ、ステップＳ８４に進む（ステップＳ８３）。
ステップＳ８４では、スキャンキャプチャ動作を行い、組み合わせ論理回路７０２の出力を全フリップフロップに取り込み、Ｓ８５に進む（ステップＳ８４）。
【０００８】
ステップＳ８５では、スキャンシフト動作を行い、ステップＳ８４もしくはステップＳ８６にて各フリップフロップが取り込んだ組み合わせ論理回路７０２の出力（演算結果）を期待値として、ＳＯ端子から順次シフトアウトし、Ｍ個の期待値からなる期待値パタンを作成する。同時に、シフトインにより、ＳＩ端子から新たなシフトデータをシフトさせ、各フリップフロップの値を確定させ、ステップＳ８６に進む（ステップＳ８５）。
ステップＳ８６では、スキャンキャプチャ動作を行い、組み合わせ論理回路７０２の出力を全フリップフロップに取り込み、ステップＳ８７に進む（ステップＳ８６）。
ステップＳ８７では、組み合わせ論理回路７０２及びフリップフロップ７０３、７０５、７０７に対して、故障検出箇所の抽出を行い、故障検出が全て完了した、もしくは、新規の故障検出ができないかどうかの判定を行う。新規故障検出ができる場合はステップＳ８５へ進み、新規故障検出が出来ない場合はステップＳ８８へ進む（ステップＳ８７）。
ステップＳ８８では、スキャンシフト動作を行い、ステップＳ８６にて取り込んだ組み合わせ論理回路７０２の出力を期待値として、ＳＯ端子から順次シフトアウトし、Ｍ個の期待値からなる期待値パタンを作成して、終了する（ステップＳ８８）。
【０００９】
図１４に、一般的なスキャンチェーンを形成した回路（図１２Ｂ）のタイミングチャートを示す。シフト動作１ｐが、ステップＳ８３のタイミングチャートに相当する。シフト動作１ｐでは、ＳＥ信号を"１"に設定し、ＳＩ端子よりシフトデータ（ＳＤ１１、ＳＤ１２、ＳＤ１Ｍ−２・・・ＳＤ１Ｍ−１、ＳＤ１Ｍ）を入力し、ＣＬＫ動作により１番目のフリップフロップ７０３（図１４では、"ＦＦ１"と表示）から順次伝播させ、ＣＬＫをＭ回入れる事でＭ番目のフリップフロップ７０７（図１４では、"ＦＦＭ"と表示）までシフトデータを伝播する。キャプチャ動作１ｐがステップＳ８４、キャプチャ動作２ｐがステップＳ８６のタイミングチャートに相当する。キャプチャ動作１ｐ、２ｐでは、ＳＥ信号を"０"に設定しＣＬＫを入力する事で、組み合わせ論理回路７０２の出力（ＣＤ１１、ＣＤ１２・・・ＣＤ１Ｍ）を全フリップフロップに取り込む。シフト動作２ｐが、ステップＳ８５のタイミングチャートに相当する。シフト動作２ｐでは、ＳＥ信号を"１"に設定し、ＳＯ端子より、キャプチャ動作にて取り込んだデータ（ＣＤ１１、ＣＤ１２・・・ＣＤ１Ｍ）を、ＣＬＫをＭ回入れる事で、全て出力する。同時にＳＩ端子よりシフトデータ（ＳＤ２１、ＳＤ２２・・・ＳＤ２Ｍ−２、ＳＤ２Ｍ−１、ＳＤ２Ｍ）を入力し、ＣＬＫ動作により１番目のフリップフロップ７０３から順次伝播させ、ＣＬＫをＭ回入れる事でＭ番目のフリップフロップ７０７までシフトデータを伝播する。
【００１０】
シフト動作２ｐにおいて、ＳＥ信号を"１"に設定し、ＳＯ端子より、キャプチャ動作にて取り込んだデータ（ＣＤ１１、ＣＤ１２・・・ＣＤ１Ｍ）を、ＣＬＫをＭ回入れる事で、全て出力する動作のみ実行するのが、ステップＳ８８の動作となる。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開２００９−０４２０１７号公報
【特許文献２】特開２００６−０４７０１３号公報
【非特許文献】
【００１２】
【非特許文献１】"ＬＳＩのテストのためのＬＳＩ内部回路、１  スキャンテスト、１−２  スキャンデザイン"、［ｏｎｌｉｎｅ］、特許庁ホームページ  資料室（その他参考資料）  標準技術集について、［平成２３年６月２２日検索］、インターネット＜https://www.jpo.go.jp/shiryou/s_sonota/hyoujun_gijutsu/lsi_test/lsi-test-1-2.htm＞
【発明の概要】
【発明が解決しようとする課題】
【００１３】
しかしながら、従来技術は、ＬＳＩのテスト時間が増大するという問題がある。その理由は、シフト動作２ｐにおいて、ＣＬＫをＭ回入れる事で、シフトアウトを行なうが、シフトインを行いフリップフロップの値を確定する為に、不定値となり期待値を出力する必要ないフリップフロップのデータを出力する。加えて、新規故障検出を伴わず期待値を出力する必要ないフリップフロップのデータも出力する。このように、フリップフロップが組み込み論理回路から取り込んだ期待値のうち、シフトアウト動作により出力する必要のない、不必要なシフト動作を行なっている。
【００１４】
また、スキャンテスト時間を短縮する手法として、特許文献１、２に関連する技術が開示されている。しかしながら、いずれもスキャン回路の回路構成を変える必要があり、回路面積の増加、制御信号の追加が必要となる。
このように、スキャンテストに要する時間を削減することが望まれていた。
【課題を解決するための手段】
【００１５】
発明者は、スキャンテストにおけるスキャンシフト動作を削減することにより、スキャン回路の構成を変えることなく、ＬＳＩテストに要する時間を削減できることを発見した。
【００１６】
本発明に係るテストパタン作成方法の一態様は、スキャンテストのテストパタン作成方法であって、組み合わせ論理回路と少なくとも一つのスキャンチェーンとに関する情報を、記録媒体から読み出し、前記少なくとも一つのスキャンチェーンの入力側に近いフリップフロップから順番に抽出し、前記抽出したフリップフロップがスキャンキャプチャ動作によって前記組み合わせ論理回路から取り込むキャプチャデータと照合する期待値の必要性を判定し、前記期待値が不要と判定されたフリップフロップが前記入力側から連続して存在するフリップフロップの数を取得し、前記スキャンチェーンに含まれるフリップフロップの総数と、前記取得したフリップフロップの数との差分を、スキャンキャプチャ動作後のスキャンシフト回数として決定する。
【００１７】
上述した通り、テストパタン作成方法では、スキャンチェーンを構成する各フリップフロップについて、スキャンキャプチャ動作によって当該フリップフロップが取り込むキャプチャデータを期待値と照合する必要性を判定する。判定結果に基づいて、入力端子側に近いフリップフロップから、期待値が不要なフリップフロップが連続する場合、言い換えると、入力端子側から期待値が必要なフリップフロップが検出されるまでの間に存在するフリップフロップに対して、スキャンテストにおいてキャプチャデータを出力しないでスキャンシフト動作を実施するような、スキャンテスト回数が変動するテストパタンを作成する手法を提供する。その結果、スキャンテストにおいて、スキャンシフト回数をスキャンチェーンに含まれるフリップフロップの総数に一致させることなく、フリップフロップの総数以下のスキャンシフト動作を実行可能にする。これにより、スキャンシフト回数が削減できるため、スキャンテストに掛かる時間を削減することができる。
【００１８】
本発明に係るプログラムの一態様は、スキャンテストのテストパタン作成方法を実現するプログラムであって、コンピュータに、少なくとも次の処理を実行させる。
組み合わせ論理回路と少なくとも一つのスキャンチェーンとに関する情報を、記録媒体から読み出す処理。
前記少なくとも一つのスキャンチェーンの入力側に近いフリップフロップから順番に抽出し、抽出したフリップフロップがスキャンキャプチャ動作によって前記組み合わせ論理回路から取り込むキャプチャデータと照合する期待値の必要性を判定する処理。
前記期待値が不要と判定されたフリップフロップが前記入力側から連続して存在するフリップフロップの数を取得する処理。
前記スキャンチェーンに含まれるフリップフロップの総数と、前記取得したフリップフロップの数との差分を、スキャンキャプチャ動作後のスキャンシフト回数として決定する処理。
【００１９】
本発明に係るテストパタン作成装置の一態様は、スキャンテストのテストパタン作成装置であって、記録媒体、抽出部、及び決定部を備える。
記録媒体は、組み合わせ論理回路と少なくとも一つのスキャンチェーンとに関する情報を格納する。
抽出部は、前記少なくとも一つのスキャンチェーンの情報を前記記録媒体から読み出し、スキャンチェーンの入力側に近いフリップフロップから順番に抽出し、抽出したフリップフロップがスキャンキャプチャ動作によって前記組み合わせ論理回路から取り込むキャプチャデータと照合する期待値の必要性を判定し、前記期待値が不要と判定されたフリップフロップが前記入力側から連続して存在するフリップフロップの数を取得する。
決定部は、前記スキャンチェーンに含まれるフリップフロップの総数と、前記取得したフリップフロップの数との差分を、スキャンキャプチャ動作後のスキャンシフト回数として決定する。
【００２０】
さらに、本発明に係るテスタ、または、テスト方法の一態様は、上述したテストパタン作成方法によって生成されたテストパタンを用いて、スキャンテストを実施する。
【発明の効果】
【００２１】
本発明によれば、スキャンテストに要する時間を削減するテストパタンを提供することが可能となる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施形態１のテストパタン作成方法の動作例を示すフローチャートである。
【図２】図１のスキャンシフト回数決定処理の詳細な動作例を示すフローチャートである。
【図３】本発明のテストパタン作成方法を実行させるシステムの構成例を示す図である。
【図４】期待値が不要のフリップフロップがゼロでない場合について、期待値が不要のフリップフロップ群と、期待値が必要なフリップフロップ群に切り分けたスキャンチェーン回路を表すイメージ図ある。
【図５】期待値が不要のフリップフロップがゼロでない場合について、ＳＩ端子よりシフトインされ値が確定されたフリップフロップ群と、キャプチャデータをシフトインデータとして流用するフリップフロップ群に切り分けたスキャンチェーン回路を表すイメージ図である。
【図６】本発明の実施形態１のテストパタン作成方法でテストパタンを作成する動作例を示すタイミングチャートである。
【図７】本実施形態により生成されるテストパタンのデータ構成例を示すイメージ図である。
【図８】複数のスキャンチェーンが形成された例を示すイメージ図である。
【図９】本発明の実施形態２のテストパタン作成方法（複数のスキャンチェーンが形成される場合）の動作例を示すフローチャートである。
【図１０】本発明の実施形態３に係るテストパタン生成装置の構成例を示す図である。
【図１１】本発明の実施形態４のテストパタン作成方法（フリップフロップのインスタンス名を保存する場合）の動作例を示すフローチャートである。
【図１２Ａ】一般的な同期回路を示す図である。
【図１２Ｂ】一般的なスキャンチェーンを形成した回路を示す図である。
【図１３】一般的なスキャンチェーンを形成した回路に対して、スキャンテスト用のテストパタン作成の動作例を示すフローチャートである。
【図１４】一般的なスキャンチェーンを形成した回路のタイミングチャートである。
【発明を実施するための形態】
【００２３】
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明は省略する。
【００２４】
本発明のテストパタン作成方法は、期待値を必要としないフリップフロップが、ＳＩ端子から連続して存在する数を取得するステップと、スキャンチェーンを構成するフリップフロップの総数と、期待値を必要としないフリップフロップがＳＩ端子から連続して存在する数との差分からスキャンシフト動作時のスキャンシフト回数を決定するステップとを有する。期待値を必要としないフリップフロップは、期待値が不定値となるため、期待値を必要としないこと、及び／または、新規故障検出を伴わないため、期待値を必要としないこと、の要件を満たすフリップフロップの個数を取得する。取得したフリップフロップの個数に応じて、スキャンシフト動作を実施することを可能にする。これにより、シフト動作の回数削減が可能となり、ＬＳＩのテスト時間を短縮することができる。
【００２５】
実施形態１．
実施形態１の構成
図１，２に、本発明の実施形態１のテストパタン作成方法の動作例を示すフローチャートを示す。図１，２に示すフローチャートでは、図１３と同様の処理を実施する工程には同じステップ番号を付している。本実施形態では、テストパタン作成方法をプログラム（ソフトウェア）によって実現することを前提として説明する。
まず、図３を参照して、テストパタン作成方法を実行する装置の構成例を説明する。図３は、本発明の実行プログラムなどを実行させる為のシステムの構成例を示す図である。システムは、一つ以上のコンピュータ装置６０１、サーバ６０２、記録媒体６０３、及び、ネットワーク６０４で構成される。
【００２６】
コンピュータ装置６０１は、エンジニアリングワークステーション等の情報処理装置であり、例えば、ＣＰＵ（Central Processing Unit）で構成される処理部、ハードディスクやＲＡＭ（Random Access Memory）やＲＯＭ（Read Only Memory）といった記録部(記録領域)、ネットワーク６０４とのインターフェースである通信部、及び、キーボードやマウスなどの入出力インターフェースである入出力部等を備える。コンピュータ装置６０１は、ネットワーク６０４を介してサーバと接続する。
サーバ６０２は、記録媒体６０３に加え、ＣＰＵで構成される処理部６１１と、ネットワーク６０４とのインターフェースである通信部６１２とを少なくとも備える。サーバ６０２は、さらに、入出力インターフェースである入出力部、ハードディスクやＲＡＭやＲＯＭといった記録部（記録領域）を備えていてもよい。サーバ６０２は、ネットワーク６０４を介してコンピュータ装置６０１に接続する。
【００２７】
記録媒体６０３は、プログラム（実行プログラム）、ネットリスト、及び、テストパタンなどを格納する記憶装置であり、サーバ６０２に保持されている。図３では、記録媒体６０３は、サーバ６０２に配置される構成例を示しているが、これに限られることはなく、例えば、ネットワーク６０４を介してサーバ６０２が読み出し、書き込み可能な場所に配置してもよい。
「回路構成情報」は、少なくとも組み合わせ論理回路とスキャンチェーンとに関する情報を含む。
「テストパタン」は、シフトデータ（入力パタン）と期待値（期待値パタン、出力パタン）とを含む。
「シフトデータ」は、スキャンシフト動作（シフトイン）により入力される値であり、各フリップフロップが保持する値を確定させるために用いる。
「期待値」は、スキャンシフト動作（シフトアウト）により出力される、フリップフロップのキャプチャデータを照合するための値である。スキャンテストのキャプチャ動作では、フリップフロップは組み合わせ論理回路の演算結果をキャプチャデータとして、当該回路から取り込み、保持している。
【００２８】
ネットワーク６０４は、コンピュータ装置６０１とサーバ６０２との間の通信を接続する。例えば、ネットワーク６０４は、インターネット、移動体通信網や、専用線網や、ＬＡＮ（Local Area Network）といった有線通信や無線通信を含めた各種のネットワーク、あるいはこれらのネットワークが相互に接続されたネットワークを適用可能である。
【００２９】
記録媒体６０３に格納されているプログラムは、ネットワーク６０４を介してコンピュータ装置６０１により実行される構成になっている。言い換えると、ユーザがコンピュータ装置６０１を介してプログラムのコマンドを入力することによって、コンピュータ装置６０１は、ネットワーク６０４を介してサーバ６０２へプログラムの起動を指示する。サーバ６０２では、プログラムの起動の指示を通信部６１２によって受け付けると、処理部６１１が、記録媒体６０３に格納されたプログラムを読み出し、プログラムに含まれる命令群を順次実行する。本実施形態では、処理部６１１が、図１，２のフローチャートに示す動作例を実現するプログラムを実行する。
【００３０】
本実施形態では、プログラムはサーバ６０２に、少なくとも次の処理を実行させる。
・組み合わせ論理回路と少なくとも一つのスキャンチェーンとに関する情報（回路構成情報）を、記録媒体６０３から読み出す処理。
・少なくとも一つのスキャンチェーンの入力（ＳＩ端子）側に近いフリップフロップから順番に抽出して、期待値の必要性を判定することを、期待値が必要なフリップフロップが検出されるまで繰り返す処理。
・スキャンチェーンの入力側から連続して存在する、期待値が不要と判定されたフリップフロップの数を取得する処理。言い換えると、入力側に近いフリップフロップから期待値が必要と判定されたフリップフロップの直前のフリップフロップまでの数を取得する処理。
・スキャンチェーンに含まれるフリップフロップの総数と、取得したフリップフロップの数との差分を、スキャンキャプチャ動作後のスキャンシフト回数として決定する処理。
各処理ついては、図１，２を参照して動作の説明において詳述する。
【００３１】
実施形態１の動作
次に、実施形態１のテストパタン作成方法の動作を、図１，２を参照して説明する。図１では、図１３の動作に加え、スキャンシフト回数を決定する処理（ステップＳ１１）、決定したスキャンシフト回数のスキャンシフト動作を行う処理（ステップＳ１３及びＳ１４）、及び、期待値を必要としないフリップフロップの数がゼロであるかを判定する処理（ステップＳ１２）を有する。
ステップＳ８２−Ｓ８４、及びステップＳ８７の動作は、図１３と同様であるため、適宜説明を省略する。ステップＳ８２では、ネットリスト、スキャンシフト動作で用いるシフトデータ等は、予めあるいは処理の工程に応じて、記録媒体６０３に格納されていることを前提とする。
【００３２】
ここでは、一例として、図４に示すスキャンチェーンを形成したスキャンチェーン回路のテストパタンを生成する場合を説明する。従って、記録媒体６０３には、図４に示すスキャンチェーンを形成した回路に関して、組み合わせ論理回路７０２とスキャンチェーンとに関する情報を含むネットリストが格納されていることを前提とする。
【００３３】
以降の説明では個数Ｍ（Ｍは１以上の整数）と個数Ｎ（Ｎは０以上Ｍ以下の整数）とを用いてスキャンシフト回数を決定する動作を説明する。
「個数Ｍ」は、ＳＩ端子からＳＯ端子までのスキャンチェーンに含まれるフリップフロップの総数である。
「個数Ｎ」は、期待値を必要としないフリップフロップの個数である。個数Ｎは、各フリップフロップについて、期待値の必要性を判定することによって取得される数である。なお、図４、５では、期待値が不要のフリップフロップの個数Ｎがゼロでない場合を前提として示している。加えて、図４では、個数Ｎは２より大きく、個数（Ｎ＋１）が個数Ｍより小さい場合を示し、図５では、個数Ｎは２より大きく、個数（Ｍ−Ｎ＋１）が個数Ｍより小さい場合を示している。これは、説明をわかりやすくするため、個数Ｍと個数Ｎとの関係の一例を示したものであり、個数Ｍと個数Ｎとの関係、個数Ｍの値、個数Ｎの値などはこれらに限定されるものではない。例えば個数Ｎはゼロ、１、２、あるいは個数Ｍと一致する場合があり得る。また、その他の図面においても、説明をわかりやすくするために、個数Ｍ、個数Ｎ、及び、個数Ｍと個数Ｎとの関係の一例を示したものであり、本発明を限定して解釈するものではない。
【００３４】
「スキャンシフト回数」は、次のスキャンシフト動作で実施するシフトの数であり、個数Ｍと個数Ｎとの差分により決定される。
「期待値の必要性」は、テストパタンに、フリップフロップの期待値を含める必要があるか否かを意味する。言い換えると、実際に回路をスキャンテストする場合に、スキャンキャプチャ動作によってフリップフロップが組み合わせ論理回路から取り込んだキャプチャデータについて、キャプチャデータと期待値との照合が必要か不要かを意味する。
期待値が不要なフリップフロップを抽出するため、テストパタンを作成するときに、（１）キャプチャデータ（期待値）が不定値となるため、期待値が必要ないフリップフロップ、及び／または、（２）新規故障検出箇所がないため、期待値が必要ないフリップフロップを抽出する。
本実施形態では、個数Ｎを、上述した（１）、及び（２）の要件の少なくとも一方に合致するフリップフロップを抽出する場合を説明する。
【００３５】
スキャンキャプチャ動作後（ステップＳ８４）、スキャンシフト回数決定処理を行う（ステップＳ１１）。
スキャンシフト回数決定処理（ステップＳ１１）では、スキャンチェーンの情報から、ＳＩ端子から近い順にフリップフロップを抽出し、（１）キャプチャデータが不定値となるフリップフロップの個数、及び、（２）新規故障検出箇所がないフリップフロップの個数を、期待値が必要なフリップフロップを検出するまでカウントする。これにより、削減できるスキャンシフトの数（個数Ｎ）を計算すること、スキャンシフト動作を実施する直前のスキャンキャプチャ動作において、組み合わせ論理回路からフリップフロップに取り込まれたデータ（組み合わせ論理回路の演算結果）をシフトデータとして用いる。
【００３６】
図２に、図１のスキャンシフト回数決定処理（ステップＳ１１）の詳細な動作例を示す。
ステップＳ２１において、ステップＳ８２にて抽出された、図４のスキャンチェーン回路に含まれるフリップフロップのうち、ＳＩ端子に最も近い１番目のフリップフロップ７０３を抽出する。この処理では、ステップＳ８４にてキャプチャされたデータが、ステップＳ２２にて不定値であるかの判定と、ステップＳ２５にて新規故障検出箇所があるかを判定する。判定した結果、再びステップＳ２１に戻ってきた場合は、次にＳＩ端子に近い２番目のフリップフロップ７０５を抽出する。以後、ステップＳ２１に戻ってくる度に、３番目のフリップフロップ、・・・、Ｍ番目のフリップフロップ７０７とスキャンチェーンの順番にフリップフロップを抽出する（ステップＳ２１）。
【００３７】
ステップＳ２２において、ステップＳ２１にて抽出されたフリップフロップについて、当該フリップフロップのキャプチャデータ（直前のスキャンキャプチャ動作でキャプチャされたキャプチャデータ）が不定値であるか否かを比較する（ステップＳ２２）。直前のスキャンキャプチャ動作により、スキャンチェーンを構成する各フリップフロップには、各フリップフロップにシフトインされたシフトデータに基づいて、組み合わせ論理回路を動作させたときの出力結果が、キャプチャデータとして取り込まれている。
【００３８】
テストパタン生成における各フリップフロップに取り込まれたキャプチャデータは、実際に回路をスキャンテストする場合には、各フリップフロップからシフトアウトされたキャプチャデータと照合する期待値となる。
キャプチャデータが不定値であるということは、実際に回路をスキャンテストしたとき、フリップフロップに取り込まれているキャプチャデータと期待値との照合が必要ないことを意味する。従って、このようなフリップフロップのキャプチャデータに対する期待値をテストパタンに含める必要がない。このため、期待値の必要性の判定に、キャプチャデータが不定値であるか否かを用いる。
【００３９】
不定値である場合（ステップＳ２２でＹＥＳ）、ステップＳ２３へと進み、期待値が不要なフリップフロップとしてカウントし、ステップＳ２１へ戻る（ステップＳ２３）。カウントしたカウント値は、サーバ６０２内の記録媒体６０３に保持してもよいし、サーバ６０２内の他の記録部（記録領域）に保持してもよい。
不定値でない場合（ステップＳ２２でＮＯ）、ステップＳ２４へ進み、回路構成情報に含まれる組み合わせ論理回路の情報を用いて、フリップフロップに接続されている組み合わせ論理回路を抽出し、ステップＳ２５に進む（ステップＳ２４）。
【００４０】
ステップＳ２５では、キャプチャデータが、ステップＳ２４で抽出した組み合わせ論理回路に対して、新規故障検出箇所を抽出しているか判定を行う（ステップＳ２５）。この判定は、既存のテストパタンを作成するツールにより実現できるものであるため、詳細な説明を省略する。
新規故障検出箇所を抽出していない場合（ステップＳ２５でＹＥＳ）、ステップＳ２６へ進み、期待値が必要ないフリップフロップとしてカウントし、ステップＳ２１へ戻る（ステップＳ２３）。
新規故障検出箇所を抽出している場合（ステップＳ２５でＮＯ）、ステップＳ２７へと進み、ＳＩ端子から期待値が不要なフリップフロップの個数Ｎを保持するカウント値を読み出すことによって取得し、ステップＳ２８に進む（ステップＳ２７）。図４に、期待値が不要なフリップフロップ群３０１と、期待値が必要なフリップフロップ群３０２に切り分けたスキャンチェーン回路を表す。ＳＩ端子に最も近い１番目のフリップフロップ７０３から順番にフリップフロップを抽出して判定した結果、Ｎ＋１番目のフリップフロップ３０４を期待値が必要となるフリップフロップとして判定した場合を示す。スキャンテストにおいて、フリップフロップ群３０１は、シフトアウトを必要としないグループである。一方、フリップフロップ群３０２は、シフトアウトが必要となるグループである。これは、Ｎ＋１番目のフリップフロップ３０４がキャプチャデータと期待値との照合を必要とするため、Ｎ＋１番目のフリップフロップ３０４を含め、これより後段のフリップフロップについてシフトアウトを必要とするからである。
【００４１】
ステップＳ２８では、スキャンシフト回数を個数Ｍから個数Ｎを差し引いた回数（以下、適宜、（Ｍ−Ｎ）ともいう）と決定し、ステップＳ８７に進む（ステップＳ２８）。
これらの処理により、スキャンシフト回数を決定する。続いて、図１に戻り、動作を説明する。
【００４２】
ステップＳ８７では、組み合わせ論理回路及び各フリップフロップに対して、故障検出箇所の抽出を行い、故障検出が全て完了したもしくは、新規の故障検出ができないかどうかの判定を行う（ステップＳ８７）。この判定は、既存のテストパタン生成のツールを用いて実現可能なため、詳細な説明を省略する。新規故障検出ができない場合（ステップＳ８７でＹＥＳ）、ステップＳ１４へ進み、新規故障検出ができる場合（ステップＳ８７でＮＯ）、ステップＳ１２へ進む。
【００４３】
ステップＳ１２では、（Ｍ−Ｎ）の値の比較を行なう。（Ｍ−Ｎ）がゼロとなる場合（ステップＳ１２でＹＥＳ）、スキャンシフト回数がゼロとなり、スキャンシフト動作が行なわれなくなってしまう。言い換えると、スキャンシフト回数決定処理（ステップＳ１１）によって期待値が不要なフリップフロップの個数Ｎが個数Ｍと一致すると判定されたものの、全故障検出が完了していない（ステップＳ８７でＮＯ）状態である。例えば、新たなシフトデータを設定するテストなど、テストパタンを変更して実施するスキャンテストが必要であると判定される場合である。その為、ステップＳ８３に戻り、新たなシフトデータを用いて、全フリップフロップへスキャンシフト動作を行う。
（Ｍ−Ｎ）がゼロではない場合（ステップＳ１２でＮＯ）、ステップＳ１３へ進む。
【００４４】
ステップＳ１３では、（Ｍ−Ｎ）回のスキャンシフト動作により、期待値パタンとして作成するキャプチャデータを保持する（Ｎ＋１）番目のフリップフロップ３０４からＭ番目のフリップフロップ７０７の値を全てＳＯ端子から出力する。
図５に、ＳＩ端子よりシフトインされ値が確定されたフリップフロップ群４０３と、キャプチャデータをシフトインデータとして流用するフリップフロップ群４０４に切り分けたスキャンチェーン回路を表す。スキャンシフト回数が（Ｍ−Ｎ）であるため、ＳＩ端子に最も近い１番目のフリップフロップ７０３から（Ｍ−Ｎ）番目のフリップフロップ４０１までは、シフトデータにより値が確定する。（Ｍ−Ｎ＋１）番目のフリップフロップ４０２以降では、前段のフリップフロップ、具体的には、１番目から（Ｍ−Ｎ）番目のフリップフロップのいずれかが保持する値がシフトされて設定されることになる。
通常、スキャンシフト動作の際、シフトインにより１番目からＭ番目のフリップフロップの値を設定させる。しかしながら、本実施形態では、Ｎ回分シフト回数を削減する為、シフトデータを、ＳＩ端子に一番近い１番目のフリップフロップから（Ｍ−Ｎ）番目のフリップフロップ４０１までしか送ることができない。その結果、（Ｍ−Ｎ＋１）番目のフリップフロップ４０２からＭ番目のフリップフロップ７０７までのフリップフロップ群４０４へ、シフトデータのシフトインによる値を入力させる事ができない。
【００４５】
この為、ステップＳ１３では、直前のスキャンキャプチャ動作（ステップＳ８４）によって、１番目のフリップフロップ７０３からＮ番目のフリップフロップ３０３が取り込んだキャプチャデータを、シフトデータとして流用する。フリップフロップ群４０３が保持するキャプチャデータを、シフトデータのかわりに用いる事で、（Ｍ−Ｎ＋１）番目のフリップフロップ４０２からＭ番目のフリップフロップ７０７までのフリップフロップ群４０４の値を、テスト実施者が把握できる値に設定する事が可能となる。
「テスト実施者が把握できる値」とは、テスト実施者が各フリップフロップにどのような値を設定しているかが把握できる値であることを意味する。具体的には、キャプチャデータをシフトデータとして流用するため、フリップフロップに設定する値として、確定した値のみならず、不定値である場合も含むことを意味する。このような場合、スキャンテストでは、所定のフリップフロップでは不定値が設定されていることを前提として、組み合わせ論理回路の出力結果の期待値パタンを生成する。
【００４６】
上記では、ステップＳ１３に関して、図５を用いて、個数Ｎがゼロでなく、かつ、個数Ｎは２より大きく、個数（Ｍ−Ｎ＋１）が個数Ｍより小さい場合を一例として具体的に説明した。しかし、ステップＳ１３では、個数Ｎがゼロである場合も含まれる。具体的には（Ｍ−Ｎ）が個数Ｍと一致する場合である。この場合、全フリップフロップのキャプチャデータをスキャンアウトするとともに、シフトデータを各フリップフロップへシフトインすることになる。
このようにして、（Ｍ−Ｎ）回のスキャンシフト動作によって、フリップフロップに保持されたデータがシフトアウトされ、シフトアウトされたデータを期待値とするテストパタンを作成する。（Ｍ−Ｎ）回のシフト動作後は、ステップＳ８４へ進む（ステップＳ１３）。
【００４７】
ステップＳ１４では、（Ｍ−Ｎ）回のスキャンシフト動作によりキャプチャデータを保持する（Ｎ＋１）番目のフリップフロップ３０４からＭ番目のフリップフロップ７０７の値を全てＳＯ端子から出力し、出力された値を期待値としてテストパタンを生成して動作を終了する（ステップＳ１４）。
上述のように、ステップＳ８３〜Ｓ１４までを繰り返すことにより、シフトイン時にＳＩ端子に入力するシフトデータ、及び、シフトアウト時にＳＯ端子から出力される値を期待値とするテストパタンを順次作成していく。
【００４８】
実施形態１のメカニズムおよび効果
実施形態１のスキャンテストのテストパタン作成方法は、ＬＳＩのスキャンテスト時間を短縮することが出来る。その理由は、図１４の一般的なスキャンチェーンを形成した回路のタイミングチャートのシフト動作２ｐがスキャンシフト動作をＭ回繰り返すのに対し、本実施形態は、図６の本発明のタイミングチャートのシフト動作２のように、スキャンシフト回数（Ｍ−Ｎ）を決定し（ステップＳ１１）、（Ｍ−Ｎ）回のスキャンシフト動作を行う（ステップＳ１３及びＳ１４）為、Ｎ回分のシフト動作を省略する事が出来る為である。
【００４９】
本実施形態では、図４に示すように、ステップＳ２７にて決定された、期待値が不要のフリップフロップであるためにシフトアウトが不要なフリップフロップ群３０１と、シフトアウトが必要なフリップフロップ群３０２に切り分けた回路イメージになる。
加えて、図５に示すように、ステップＳ１３にて、ＳＩ端子よりシフトデータがシフトインされ、値が確定されるフリップフロップ群４０３と、キャプチャデータをシフトインデータとして使用するフリップフロップ群４０４に切り分けた回路イメージになる。
【００５０】
図６は、実施形態１のテストパタン作成方法でテストパタンを作成する動作例を示すタイミングチャートである。
シフト動作２が、ステップＳ１３のタイミングチャートになる。シフト動作１では、ＳＥ信号を"１"に設定し、ＳＩ端子よりシフトデータ（ＳＤ２１、ＳＤ２２、ＳＤ２Ｍ−２、・・・、ＳＤ２Ｍ−Ｎ−１、ＳＤ２Ｍ−Ｎ）を入力する。ＣＬＫ動作により１番目のフリップフロップ７０３（図６では、"ＦＦ１"と表示）からシフトデータを順次伝播させ、ＣＬＫを（Ｍ−Ｎ）回入れる事で（Ｍ−Ｎ）番目のフリップフロップ４０１（図１４では、"ＦＦ（Ｍ−Ｎ）"と表示）までシフトデータを伝播する。（Ｍ−Ｎ＋１）番目のフリップフロップ４０２（図１４では、"ＦＦ（Ｍ−Ｎ＋１）"と表示）からＭ番目のフリップフロップ７０７（図１４では、"ＦＦＭ"と表示）には、キャプチャ動作１にて、任意のフリップフロップより前段に配置されたフリップフロップが取り込んだキャプチャデータ（ＣＤ１１、ＣＤ１２、・・・、ＣＤ１Ｎ）が、順次伝播される。
キャプチャ動作２では、シフト動作２により伝播されたシフトデータまたはキャプチャデータ（ＳＤ２Ｍ−Ｎ、ＳＤ２Ｍ−Ｎ−１、・・・、ＳＤ２１、ＣＤ１１、・・・、ＣＤ１Ｎ）を用いて、組み合わせ論理回路の出力（ＣＤ２１、ＣＤ２２・・・、ＣＤ２Ｍ−Ｎ、ＣＤ２Ｍ−Ｎ＋１・・・、ＣＤ１Ｍ）を全フリップフロップに取り込む。
【００５１】
次に、テストパタンについて説明する。テストパタンは、次のデータから構成される。
・１回目のスキャンシフト動作において、スキャンチェーンを構成する複数のフリップフロップへ既知の値を設定する（シフトイン）ためのシフトデータ。
・２回目以降、最後のスキャンシフト動作の一つ前のスキャンシフト動作において、複数のフリップフロップへ設定するための複数のシフトデータ（入力パタン）と、直前のスキャンキャプチャ動作によって各フリップフロップに取り込まれたキャプチャデータを出力させ（シフトアウト）、出力されたキャプチャデータと照合させるための複数の期待値（期待値パタン）。
・最後のスキャンシフト動作において、直前のスキャンキャプチャ動作によって各フリップフロップに取り込まれたキャプチャデータを出力させ（シフトアウト）、出力されたキャプチャデータと照合させるための複数の期待値。
【００５２】
本実施形態に係るテストパタン作成方法を用いてテストパタンを作成すると、スキャンシフト動作で用いるテストパタンは、スキャンテスト回数に応じて作成されるため、シフトデータ及び期待値は、１回目からＺ回目まで同一個数でなく、複数種類の個数となる。
スキャンシフト動作を３回以上のＸ回（Ｘは、３以上の整数）行う場合、フリップフロップの総数をＭ（Ｍは１以上の整数）、Ｋ回目（Ｋは１以上Ｘ以下の整数）のスキャンシフト動作が不要なフリップフロップの数をＮ［Ｋ］（Ｎは０以上Ｍ以下の整数）、Ｋ回目のスキャンシフト動作のスキャンシフト回数を（Ｍ−Ｎ）［Ｋ］とすると、テストパタンには、各スキャンシフト動作で用いるテスト用のデータとして、
・１回目のスキャンシフト動作に対して、個数Ｍのシフトデータ、
・Ｘ−１回目のスキャンシフト動作それぞれに対して、個数（Ｍ−Ｎ）［Ｘ−１］と、個数Ｍとのいずれかのシフトデータ及び期待値、
・Ｘ回目のスキャンシフト動作に対して、個数（Ｍ−Ｎ）［Ｘ］の期待値、
を含むことになる。
【００５３】
図７に、テストパタン作成方法により作成したテストパタンのデータ構成例のイメージを示す。図７では、作成されるシフトデータ及び期待値の数の変動をわかりやすく示すため、データの値には記号を用い、一つのシフトデータを三角、一つの期待値を丸で示している。なお、図７に示すスキャンテスト回数、シフトデータ、または、期待値等の個数は一例であり、説明を容易にするために、Ｍ−５、Ｍ−１０、Ｍ−１５等の数値を用いている。しかしながら、本発明のテストパタン作成方法により作成したテストパタンが図７に示すイメージに限定されるものでない。以下、図７を参照してテストパタンの一例を説明する。
【００５４】
シフト動作１（１回目のシフト動作、２回目以降も同様）では、シフトインのみであり、スキャンシフト回数は、フリップフロップの総数と一致するため、Ｍ個のシフトデータが作成される。図１のステップ８３で用いるシフトデータに相当する。
シフト動作２では、期待値が不要なフリップフロップ数Ｎ［２］が５、決定されたスキャンシフト回数、Ｍ−Ｎ［２］が（Ｍ−５）である場合を一例として示す。従って、（Ｍ−５）個のシフトデータと期待値とが作成される。図１のステップＳ１３でシフトインするシフトデータ及びシフトアウトする期待値に相当する。
シフト動作（Ｘ−２）では、期待値が不要なフリップフロップ数Ｎ［Ｘ−２］がＭ、決定されたスキャンシフト回数、Ｍ−Ｎ［Ｘ−２］がゼロ、すなわち、個数Ｍと個数Ｎとが一致する場合を一例として示す。これは、図２のステップＳ１２でＹＥＳとなり、ステップＳ８３に戻って処理をすることになる。従って、フリップフロップの総数と一致するＭ個のシフトデータが作成される。
シフト動作（Ｘ−１）では、期待値が不要なフリップフロップ数Ｎ［Ｘ−１］が１０、決定されたスキャンシフト回数、Ｍ−Ｎ［Ｘ−１］が（Ｍ−１０）である場合を一例として示す。従って、図２のステップＳ１２でＹＥＳとなる。従って、（Ｍ−１０）個のシフトデータと期待値とが作成される。シフト動作２と同様に、図１のステップＳ１３でシフトインするシフトデータ及びシフトアウトする期待値に相当する。
シフト動作Ｘでは、シフトアウトが実施される。期待値が不要なフリップフロップ数Ｎ［Ｘ］が１５、決定されたスキャンシフト回数、Ｍ−Ｎ［Ｘ］が（Ｍ−１５）である場合を一例として示す。従って、（Ｍ−１０）個のシフトデータと期待値とが作成される。図１のステップＳ１４でシフトアウトする期待値に相当する。
【００５５】
なお、図７では示していないが、図１のステップＳ１３において、個数Ｎがゼロの場合、（Ｍ−Ｎ）は個数Ｍと一致する。従って、スキャンシフト回数がＭとなり、Ｍ個のシフトデータと期待値とが作成されることになる。
【００５６】
以上説明したように、本実施形態によれば、スキャンチェーンを構成するフリップフロップについて、入力側のＳＩ端子に近いものから順番に、期待値の必要性を判定し、期待値の要否に応じて、スキャンシフト回数を決定する。これにより、スキャンテストにおいて、スキャンシフト動作の回数を削減することができる。従って、スキャンテストに係る時間を削減することが可能になる。その結果、ＬＳＩテストのコストを抑制することができる。
【００５７】
実施形態２．
実施形態１では、一つのスキャンチェーンが形成されている回路を前提として説明したが、実施形態２は、複数のスキャンチェーンが形成されている回路に適用する場合を説明する。本実施形態では、実施形態１で説明した図３の構成でテストパタン作成方法を実現することを前提として説明する。
【００５８】
図８は、複数のスキャンチェーンが形成された例を示すイメージ図である。図８では、テスト対象回路に、ＳＣ１からＳＣＺ（Ｚは２以上の整数）までのＺ個のスキャンチェーンが形成され、ＳＣ１は、Ｍ個のフリップフロップ、ＳＣ２は、（Ｍ−２）個のフリップフロップ、ＳＣＺは、（Ｍ−１）個のフリップフロップから構成される例を示す。
複数のスキャンチェーンが異なるフリップフロップの数によって構成されている場合においても、スキャンシフト動作は、同じクロックを用いて同時に複数のスキャンチェーンを構成するフリップフロップに対して処理する。
【００５９】
このため、フリップフロップの総数（個数Ｍ）には、複数のスキャンチェーンのうち、一番多いフリップフロップの個数を設定する。また、スキャンシフト回数（Ｍ−Ｎ）には、各スキャンチェーンでシフトアウトを必要とするフリップフロップの数に対応することが必要となる。従って、各スキャンチェーンでスキャンシフト回数を取得し、取得した複数のスキャンシフト回数から最大値をスキャンシフト回数（Ｍ−Ｎ）として決定する。スキャンチェーン毎に取得したスキャンシフト回数の最大値を用いることにより、複数のスキャンチェーンすべてにおいて、スキャンシフトが必要なキャプチャデータを取り出すことが可能になる。
【００６０】
例えば、ＳＣ１のスキャンチェーンでは、個数Ｍが１０、個数Ｎが６、スキャンシフト回数（Ｍ−Ｎ）が４、ＳＣＺのスキャンチェーンでは、個数Ｍが４、個数Ｎが１、スキャンシフト回数（Ｍ−Ｎ）が３という値を取得した場合、より大きいスキャンシフト回数を選択して、スキャンシフト回数（Ｍ−Ｎ）４を決定する。
以降の説明では、任意のスキャンチェーンを示すため、変数Ｊ（Ｊは１からＺの整数）を用いる。Ｊ番目のスキャンチェーンについて、フリップフロップの総数をＭ［Ｊ］、期待値が不要と判定されるフリップフロップの個数をＮ［Ｊ］、スキャンシフト回数を、（Ｍ−Ｎ）［Ｊ］とする。
【００６１】
なお、図８では、異なる個数のフリップフロップから構成される複数のスキャンチェーンが形成されている場合を示したが、同じ数のフリップフロップから構成される複数のスキャンチェーンが形成されている場合であっても同様に本発明を適用することができる。
以下に、本実施形態の図１のスキャンシフト回数決定処理の詳細を、図９を参照して説明する。
【００６２】
図９は、実施形態２のテストパタン作成方法（複数のスキャンチェーンが形成される場合）の動作例を示すフローチャートである。図２と同じステップ番号の処理は実施形態１と同様であるため、適宜説明を省略する。実施形態２では、図１のステップＳ８２において、複数のスキャンチェーンの情報が抽出されることになる。具体的には、Ｊ番目のスキャンチェーンについて、Ｍ［Ｊ］、Ｎ［Ｊ］が抽出される。
まず、複数のスキャンチェーンから、未解析のスキャンチェーンを選択する（ステップＳ３１）。ここでは、ＳＣ１から順番にＳＣＺまでのスキャンチェーンを解析するものとする。
選択されたスキャンチェーンに対して、ステップＳ２１からＳ２５の処理を実施形態１と同様に実行する。その際、実施形態１のステップＳ２３にかえて、ステップＳ３２の処理を実行する。ステップＳ３２では、スキャンチェーン毎に、期待値が不要なフリップフロップをカウントする。例えば、個数Ｎ［１］をスキャンチェーンＳＣ１、個数Ｎ［２］をスキャンチェーンＳＣ２、・・・、個数Ｎ［Ｚ］をスキャンチェーンＳＣＺというように、各スキャンチェーンについて期待値が不要なフリップフロップをカウントし、記録媒体６０３に保持する。
【００６３】
解析中のスキャンチェーンについて、ステップＳ２１からＳ２５、及びＳ３２の処理を繰り返して、期待値が必要なフリップフロップが検出されると、期待値が不要なフリップフロップの数のカウントが終了すると（ステップＳ２２でＮＯ、及びステップＳ２５でＮＯ）、未解析のスキャンチェーンが存在するかを判定する(ステップＳ３３)。
未解析のスキャンチェーンが存在する場合（ステップＳ３３でＹＥＳ）、ステップＳ３１へ戻り、次のスキャンチェーンを選択してステップＳ２１以降の処理を繰り返す。
未解析のスキャンチェーンが存在せず、全部のスキャンチェーンの解析が終了した場合（ステップＳ３３でＮＯ）、スキャンチェーン毎にスキャンシフト回数（Ｍ−Ｎ）［Ｊ］を取得する。具体的には、各スキャンチェーンについて、Ｍ［Ｊ］からＮ［Ｊ］を差し引いて、（Ｍ−Ｎ）［Ｊ］を算出する（ステップＳ３４）。
次に、複数のスキャンシフト回数から最大値を選択し、次のスキャンシフト動作のスキャンシフト回数として決定する（ステップＳ３５）。ここで決定した回数が、図１に記載の、スキャンシフト回数（Ｍ−Ｎ）に対応する。
【００６４】
このように、複数のスキャンチェーンが形成された回路であっても、各スキャンチェーンを解析し、期待値が不要なフリップフロップ数（個数Ｎ）として、複数のスキャンチェーンで取得されたスキャンシフト回数のうち最大値を選択することにより、スキャンシフト回数を決定することができる。これにより、実施形態１と同様の効果を奏することが可能となる。
【００６５】
実施形態３．
上記各実施形態では、本発明に係るテストパタン作成方法をプログラムによって実現する場合を説明したが、これに限られるわけではない。テストパタン作成方法は、例えば、組み込みシステムのように、ハードウェアとソフトウェアとの組合せにより実現してもよく、ハードウェア、ファームウェア、ソフトウェアのいずれか、あるいは、これらの二つ以上の組合せにより実現してもよい。
【００６６】
図１０は、テストパタン作成方法を実現するテストパタン作成装置の構成例を示すブロック図である。テストパタン作成装置１００は、抽出部（シフトアウト不要フリップフロップ抽出部）１、決定部（スキャンシフト回数決定部）２、及び、記録媒体３を備え、抽出部１は、判定部１１と計数部１２とを含む。
記録媒体３は、組み合わせ論理回路とスキャンチェーンとに関する情報を含む回路構成情報（ネットリスト）を格納する。図３の記録媒体６０３に相当する。
【００６７】
抽出部１は、実施形態１で説明した、期待値が不要なフリップフロップを抽出する。具体的には、抽出部１の判定部１１は、組み合わせ論理回路と少なくとも一つのスキャンチェーンに関する情報を含む回路構成情報を記録媒体３から読み出し、回路構成情報から、少なくとも一つのスキャンチェーンの入力側に近いフリップフロップから順番に抽出する。抽出したフリップフロップについて、当該フリップフロップが組み合わせ論理回路から取り込むキャプチャデータと照合する期待値の必要性を判定する。判定部１１は、期待値が必要なフリップフロップを検出するまで、入力側から近いフリップフロップの順に、期待値の必要性を判定する。続いて、抽出部１の計数部１２は、期待値が不要と判定されたフリップフロップが入力側から連続して存在するフリップフロップの数を取得する。抽出部１は、図２のステップＳ２１からＳ２７までの処理、図９のステップＳ３１からＳ３３までの処理に対応する。
【００６８】
決定部２は、スキャンチェーンに含まれるフリップフロップの総数（個数Ｍ）と、取得した期待値が不要なフリップフロップの数（個数Ｎ）との差分（Ｍ−Ｎ）を、スキャンキャプチャ動作後のスキャンシフト回数として決定する。決定部２は、図２及び図９のステップＳ２８の処理に対応する。
【００６９】
上述したように、図１０に示す抽出部１と決定部２とを、ハードウェア、ファームウェア、ソフトウェアのいずれか、あるいは、これらの二つ以上の組合せにより実現してもよい。また、図１０には図示していないが、テストパタン作成装置は、構成形態に応じて、各構成要素あるいは装置全体に、ＣＰＵで構成される一つ以上の処理部を備え、処理部が各処理の実行を制御する。
【００７０】
図１０では、テストパタンのシフトデータ及び期待値パタンを生成する生成部４をテストパタン作成装置１００に外部に備える構成例を示している。生成部４とは、記録媒体３を介して、スキャンシフト回数を受け取り、スキャンシフト回数に応じたテストパタンを作成する。言い換えると、本発明に係るテストパタン作成装置１００は、スキャンシフト回数を生成部４へ提供する装置であるともいえる。
選択的には、テストパタン作成装置１００は、自装置内に記録媒体３を備えていない場合であってもよく、例えば、生成部４を備える装置が利用する記録媒体へ、スキャンシフト回数を書き込む構成であってもよい。
さらに、テストパタン作成装置１００は、テストパタンのシフトデータ及び期待値パタンを生成する生成部４を備える構成（パタン生成装置１０１）であってもよい。例えば、テストパタン作成装置１００あるいはパタン生成装置１０１が、図３のサーバ６０２に組み込まれている形態であってもよい。
【００７１】
実施形態４．
実施形態１では、期待値が不要なフリップフロップの数をカウントして個数Ｎを取得する場合を説明したが、実施形態４では、フリップフロップのインスタンス名を図３の記録媒体６０３（図１０の場合、記録媒体３）に格納する場合を説明する。
図１１は、本発明の実施形態４のテストパタン作成方法（フリップフロップのインスタンス名を保存する場合）の動作例を示すフローチャートである。図２と同じステップ番号の処理は、実施形態１と同様であるため、適宜説明を省略する。ここでは、主に、ステップＳ４１、Ｓ４２、及び、関連する処理について説明する。
【００７２】
ステップＳ２２において、キャプチャデータが不定値となる場合（ステップＳ２２でＹＥＳ）、ステップＳ４１へと進み、不定値となるフリップフロップであり、期待値を持たないフリップフロップとして記録媒体６０３に当該フリップフロップのインスタンス名を格納し、ステップＳ２１へ戻る（ステップ４１）。
不定値でない場合（ステップＳ２２でＮＯ）、ステップＳ２４へ進み、フリップフロップに接続されている組み合わせ論理回路の抽出を行いステップＳ２５に進む（ステップＳ２４）。
ステップＳ２５において、新規故障検出箇所を抽出していない場合（ステップＳ２５でＹＥＳ）、ステップＳ４２へ進み、新規故障を検出しないフリップフロップとして記録媒体６０３にインスタンス名を格納し、ステップＳ２１へ戻る（ステップＳ４２）。
新規故障検出箇所を抽出している場合（ステップＳ２５でＮＯ）、ステップＳ４３へと進む。
ステップＳ４３において、ステップＳ４１及びステップＳ４２において記録媒体６０３へ格納した、期待値を持たないフリップフロップのインスタンス名の数と、新規故障を検出しないフリップフロップのインスタンス名の数とをカウントし、両方のインスタンス名の数を加算して、期待値が不要なフリップフロップ数（個数Ｎ）を取得する（ステップＳ４３）。
【００７３】
図１１では、実施形態１の動作例を変更した場合を説明したが、実施形態２の動作例にも同様に適用することが可能になる。
ステップＳ４１、Ｓ４２において期待値が不要なフリップフロップのインスタンス名を格納することにより、例えば、テストパタンの生成するツール（図１０の生成部４など）がインスタンス名に応じてテストパタンを作成することが可能になる。例えば、インスタンス名を用いることにより、スキャンテストの効率を向上させるテストパタンの作成に用いることが期待できる。
【００７４】
実施形態５．
上記各実施形態では、期待値が不要なフリップフロップを、（１）キャプチャデータ（期待値）が不定値となるため、期待値を必要としないフリップフロップ、及び、（２）新規故障検出箇所がないため、期待値を必要としないフリップフロップのいずれかに合致するフリップフロップを抽出する場合を説明した。しかし、期待値が不要なフリップフロップの個数Ｎを、上述した（１）、または（２）のいずれが一方のみを用いて抽出する場合であってもよい。
【００７５】
期待値が不要なフリップフロップとして、（１）キャプチャデータ（期待値）が不定値となるフリップフロップのみを抽出する場合、図２及び図９では、ステップＳ２４、Ｓ２５の処理を実施しない動作例となる。図１１では、ステップＳ２５、Ｓ４２の処理を実施しない動作例となる。
期待値が不要なフリップフロップとして、（２）新規故障検出箇所がないフリップフロップのみ抽出する場合、図２及び図９では、ステップＳ２２の処理を実施しない動作例となる。図１１では、ステップＳ２２、Ｓ４１の処理を実施しない動作例となる。
【００７６】
加えて、期待値が不要なフリップフロップを、（１）キャプチャデータ（期待値）が不定値となるフリップフロップ、及び、（２）新規故障検出箇所がないフリップフロップのうち、（１）、（２）の両方、（１）のみ、（２）のみ、のいずれの手法を用いるかについて、テストパタン作成時に選択可能とすることもできる。例えば、ユーザが、コンピュータ装置６０１の入出力部を介してコマンドを入力する際に、オプションとして、期待値パタンを出力する必要のないフリップフロップを抽出する要件を選択できるようにしてもよい。この場合、プログラムでは、オプションに対応する実行プログラム（サブルーチン）を用意しておき、入力されたオプションに応じて、読み出すサブルーチンを変更することによって動作するようにできる。
【００７７】
上記各実施形態では、期待値が不要なフリップフロップを判定する二つの要件を用いる場合を説明したが、本実施形態によれば、テストパタンを作成する要件をユーザの要望に対応させるテストパタン作成方法を提供することができる。さらに、ユーザがテストパタン作成時にオプションとして要件を選択可能とすることにより、ユーザがテストパタン作成方法を利用する際に、ユーザの要望に柔軟に対応させることが可能となる。
【００７８】
その他の実施形態
上述の各実施形態において、プログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００７９】
加えて、本発明のテストパタン作成方法を実現するプログラムは、テストパタンを生成するツールの一部分として組み込まれている場合であってもよい。あるいは、独立したプログラムとして存在可能であり、テストパタンを生成するツールと組み合わせて用いられる場合、例えば、ツールから呼び出される（起動される）ことによってプログラムが実行される場合であってもよい。
【００８０】
尚、スキャンテスト時間を短縮する従来技術である特許文献１、特許文献２についても不必要なシフトが発生する可能性がある為、上記各実施形態のテストパタン作成方法を適用する事で、更なるスキャンテスト時間削減が可能となる。
【００８１】
上記各実施形態で説明した通り、本発明に係るテストパタン作成方法によれば、スキャンテストを実施するテスト方法において、スキャンシフト回数を削減することが可能になる。従って、スキャンテストに要するテスト時間（コスト）を削減することが可能になる。加えて、スキャンシフト動作によってシフトインするシフトデータ及びシフトアウトする期待値パタンを削減することになるため、テストパタンとして記録媒体に保持するデータ量を削減することができる。例えば、テスタにテストパタンを書き込む場合にも、テストパタンに含まれるデータ数を削減することが可能になることから、テストに係る時間を削減することができる。
【００８２】
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。
【符号の説明】
【００８３】
１  抽出部
２  決定部
３  記録媒体
４  生成部
１１  判定部
１２  計数部
１００  テストパタン作成装置
１０１  パタン生成装置
３０１  期待値が不要であり、シフトアウトが不要なフリップフロップ群
３０２  期待値が必要であり、シフトアウトが必要なフリップフロップ群
３０３  Ｎ番目のフリップフロップ（期待値が不要なフリップフロップ）
３０４  （Ｎ＋１）番目のフリップフロップ（期待値が必要なフリップフロップ）
４０１  （Ｍ−Ｎ）番目のフリップフロップ（ＦＦ（Ｍ−Ｎ））
４０２  （Ｍ−Ｎ＋１）番目のフリップフロップ（ＦＦ（Ｍ−Ｎ＋１））
４０３  シフトデータがシフトインされるフリップフロップ群
４０４  キャプチャデータをシフトデータとして使用するフリップフロップ群
６０１  コンピュータ装置
６０２  サーバ
６０３  記録媒体
６０４  ネットワーク
６１１  処理部
６１２  通信部
７０１  フリップフロップ群
７０２  組み合わせ論理回路
７０３  １番目のフリップフロップ（ＦＦ１）
７０４、７０６、７０８、７１３  ＭＵＸ
７０５  ２番目のフリップフロップ（ＦＦ２）
７０７  Ｍ番目のフリップフロップ（ＦＦＭ）
７０９、７１１  組み合わせ論理回路の出力端子
７１０  ＳＩ端子
７１２  ＦＦ１の出力端子（Ｑ端子）
７１４  組み合わせ論理回路の出力端子（Ｚｎ端子）
７１５  ＦＦＭの出力端子
７１６  ＳＯ端子
７１７  ＳＥ信号
【図１】
2013036874.tif 000003
【図２】
2013036874.tif 000004
【図３】
2013036874.tif 000005
【図４】
2013036874.tif 000006
【図５】
2013036874.tif 000007
【図６】
2013036874.tif 000008
【図７】
2013036874.tif 000009
【図８】
2013036874.tif 000010
【図９】
2013036874.tif 000011
【図１０】
2013036874.tif 000012
【図１１】
2013036874.tif 000013
【図１２Ａ】
2013036874.tif 000014
【図１２Ｂ】
2013036874.tif 000015
【図１３】
2013036874.tif 000016
【図１４】
2013036874.tif 000017