(57)【要約】  各半導体デバイスごとにクロックサイクルごとの制御シーケンスを格納したメモリを用意し、予め計算機上のプログラム等でその制御シーケンスを計算してメモリへ書き込み、該当する半導体デバイスを制御するときは、そのメモリの内容を該当する半導体デバイスに与える。
2010016300.tif 000002
【特許請求の範囲】
【請求項１】
第一番号と第二番号によって半導体デバイス内部にある複数の記憶素子が区別される前記半導体デバイスを検証する半導体検証装置であって、
前記半導体デバイス内部に実装されて前記第一番号の値を供給することで、前記第一番号に対応する第一記憶素子の値を前記半導体デバイス外部に供給する読出手段と、
前記読出手段の入力端子に接続した第一メモリと、
前記読出手段の出力端子に接続し、前記第一番号に対応する第一記憶素子の値を含む前記読出手段の出力端子におけるクロックサイクルごとの値を記録する第二メモリと、
前記第一メモリに格納されて前記読出手段に与えられるべき値を前記読出手段の制御方法を記載した読出手段制御情報に基づいて、クロックサイクルごとに格納した初期値情報と、
前記第一メモリにおける前記第一番号の第一位置情報と、前記第二番号ごとに対応する前記第二メモリにおける位置を格納した第二位置情報とを、前記読出手段制御情報に基づいて計算する初期値計算手段と、
前記第一番号のみを、前記第一位置情報に基づいて、前記第一メモリに書き込む第一番号書換手段と、
前記第二番号と前記第二位置情報に基づいて前記第二メモリにおける前記記憶素子の値が格納されている箇所を求め、そこから一回の取出動作で前記第二番号に対応する記憶素子の値を取り出す取出手段と、を備えたことを特徴とする半導体検証装置。
【請求項２】
前記半導体検証装置は、前記半導体デバイス内部の記憶素子の名前から第一番号と第二番号を求める番号検索手段をさらに有し、
前記番号検索手段が求めた前記第一番号と前記第二番号により動作することを特徴とする請求項１記載の半導体検証装置。
【請求項３】
前記半導体検証装置は、
前記第一メモリと前記第二メモリのアドレス端子およびイネーブル端子を制御することにより、前記第一メモリに格納された前記初期値情報を前記読出手段に供給し、前記読出手段から出力された前記記憶素子の値を前記第二メモリに蓄える制御を行うメモリ制御手段と、
前記半導体デバイスのクロック信号を制御するクロック制御手段と、
前記メモリ制御手段と前記クロック制御手段と前記第一番号書換手段と前記取出手段とを制御する中央制御手段とをさらに備え、
前記中央制御手段は、前記半導体デバイスへのクロック信号の供給が停止したときに、所望の記憶素子の第一番号および第二番号の入力を促し、前記第一番号書換手段により、前記第一番号を前記第一メモリに書き込み、前記メモリ制御手段を動作させ、前記取出手段により、前記第二メモリに記録された前記記憶素子の値を取得することを特徴とする請求項１記載の半導体検証装置。
【請求項４】
前記クロック制御手段は、
１）前記半導体デバイスの特定の出力端子の信号の値が特定の値になった場合、
２）前記半導体デバイスの特定の出力端子の信号の値が特定の値の範囲または範囲外になった場合、
３）前記半導体デバイス内部にあるソフトウェアによって動作する装置においてブレークが発生した場合、
４）１）、２）または３）いずれかが指定した回数発生した場合、
５）上記１）乃至４）の条件を組み合わせた場合
にクロック供給を停止する機能のうち、いずれか、もしくは、複数の機能を有することを特徴とする請求項３記載の半導体検証装置。
【請求項５】
前記中央制御手段は、前記第一番号の値が前回の第一番号と同じ場合は、前記第一書換手段の動作を省略し、さらに、前回記憶素子の値を取得した時からクロック信号を前記半導体デバイスに供給していない場合は、前記メモリ制御手段の動作をも省略して動作を行うことを特徴とする請求項３記載の半導体検証装置。
【請求項６】
前記半導体検証装置は、
前記取出機能に接続され、前記第一番号と前記第一番号に対応する全ての記憶素子の値を格納し、前記半導体デバイスにクロックが供給されたときはそれらの値を削除する記憶手段をさらに備え、
前記取出手段は、前記第一番号の値が前記記憶手段に記録されている場合は、前記記憶手段に記録されている値から前記記憶素子の値を取得し、前記第一番号の値が前記記憶手段に記録されていない場合は、前記第二メモリに格納された前記第一番号に対応する全ての記憶素子の値を取得し、前記第一番号に対応する全ての記憶素子の値を前記記憶手段に記録し、前記記憶手段に記録されている値から前記記憶素子の値を取得するように動作を変更したことを特徴とする請求項１記載の半導体検証装置。
【請求項７】
前記半導体検証装置は、
前記取得手段の動作を規定する取得手順に関する一つの情報と、一つの第一番号と、一つもしくは複数の第二番号から構成されるエントリを一つもしくは複数有する制御情報と、
前記制御情報の各エントリの処理を繰り返して、前記制御情報にある全てのエントリを処理する中央制御機能とをさらに備え、
前記取得手順の第一方法は、前記第二メモリに記録されたすべての値を取得した後、前記第二番号に対応するすべての値を計算する方法であり、
前記取得手順の第二方法は、前記第二メモリに記録された前記第二番号に対応する値を、そのエントリに存在する第二番号の数以下の取出動作で取得する方法であり、
前記取得手段は、前記取得手順によってその動作を規定されることを特徴とする請求項１記載の半導体検証装置。
【請求項８】
前記半導体検証装置は、
前記記憶素子の名前から第一番号と第二番号を求める番号検索手段と、
前記半導体検証装置で取得する記憶素子の名前を記載した観測信号リストを用いて前記制御情報を計算する制御情報計算手段とをさらに備え、
前記制御情報計算手段は、前記番号検索手段により、前記観測信号リストに記載された記憶素子の名前から第一番号と第二番号を取得し、同じ第一番号を持つすべての記憶素子を前記第一方法と前記第二方法で処理する時間を計算し、その第一番号と、その第一番号を持つ前記記憶素子からなるエントリを生成し、前記エントリは取得手順に関する情報と一つの第一番号と一つもしくは複数の第二番号と記憶素子から構成され、このエントリに対して複数の取得手順から一つが選択され、全ての観測信号を処理したかを判断して、前記観測信号リストに記載された全ての記憶素子の値を取得するための前記制御情報を生成することを特徴とする請求項７記載の半導体検証装置。
【請求項９】
前記半導体検証装置は、複数の半導体デバイスを含み、
前記第一番号と前記第二番号の他に前記半導体デバイスの場所を示す場所情報によって、複数の半導体デバイス内部に存在する記憶素子が区別される前記半導体デバイスから、それらの記憶素子の値を読み出すための装置であって、
半導体デバイスの各々に対して前記第一メモリと前記第二メモリと、
を備え、
前記初期値計算手段は、前記半導体デバイスごとに前記初期値情報及び前記第一位置情報と前記第二位置情報を計算し、
前記第一番号書換手段は、前記第一番号のみを、前記場所情報に対応する前記第一位置情報に基づいて、前記場所情報に対応する前記第一メモリに書込み、
前記取出手段は、前記第二番号と前記場所情報に対応する前記第二位置情報とに基づいて、前記場所情報に対応する前記第二メモリから、一回の取り出し動作で前記第二番号に対応する記憶素子の値を取り出す
ことを特徴とする請求項１または７記載の半導体検証装置。
【請求項１０】
前記半導体検証装置は、複数の半導体デバイスを含み、
前記第一番号と前記第二番号の他に前記半導体デバイスの場所を示す場所情報によって、複数の半導体デバイス内部に存在する記憶素子が区別され、前記半導体デバイスの読出手段がバウンダリスキャンテスト用の前記半導体デバイスから、それらの記憶素子の値を読み出すための装置であって、
ＪＴＡＧチェーン接続された前記半導体デバイスごとの前記第一メモリと、
すべての前記第一メモリの出力端子の値のいずれかを選択して、前記バウンダリスキャンテスト用の前記半導体デバイスの入力端子に供給する選択手段と、を備え、
前記初期値計算手段は、前記各半導体デバイスごとに前記初期値情報及び前記第一位置情報と前記第二位置情報を計算し、
前記第一番号書換手段は、前記第一番号のみを、前記場所情報に対応する前記第一位置情報に基づいて、前記場所情報に対応する前記第一メモリに書込み、
前記取出手段は、前記場所情報と前記場所情報に対応する前記第二位置情報とに基づいて、前記第二メモリから一回の取り出し動作で前記第二番号に対応する記憶素子の値を取り出し、
前記選択手段は、前記場所情報に対応する前記第一メモリの値を前記ＪＴＡＧチェーンの入力端子に供給する
ことを特徴とする請求項１または７記載の半導体検証装置。
【請求項１１】
前記半導体デバイスが前記読出手段を持つプログラマブルロジックデバイスであることを特徴とする請求項１乃至１０のいずれか１項に記載の半導体検証装置。
【請求項１２】
前記出力メモリは、脱着可能な不揮発性メモリであることを特徴とする請求項１乃至１１のいずれか１項に記載の半導体検証装置。
【請求項１３】
第一番号と第二番号によって半導体デバイス内部にある複数の記憶素子が区別される前記半導体デバイスから、前記記憶素子の値を読み出すことで前記半導体デバイスを検証する方法であって、
読出機能により、
前記半導体デバイス内部に実装されて前記第一番号の値を供給することで、前記第一番号に対応する前記記憶素子の値を前記半導体デバイス外部に供給し、
前記読出機能により前記第二番号に対応する記憶素子の値を含むクロックサイクルごとの値を第二メモリに記録し、
前記読出機能の制御方法を記載した読出手段制御情報に基づいて、前記読出機能に与えられるべき値をクロックサイクルごとに初期値情報を第一メモリに格納し、
初期値計算機能により、前記第一メモリにおける前記第一番号の第一位置情報と、前記第二番号ごとに対応する前記第二メモリにおける位置を格納した第二位置情報とを、計算し、
第一番号書換機能により、前記第一番号のみを、前記第一位置情報に基づいて、前記第一メモリに書き込み、
取出機能により、前記第二番号と前記第二位置情報に基づいて前記第二メモリにおける前記第二番号に対応する記憶素子の値が格納されている箇所を求め、そこから一回の取出動作で前記第二番号に対応する記憶素子の値を取り出すことを特徴とする半導体検証方法。
【請求項１４】
番号検索機能により、前記半導体デバイスは、さらに前記半導体デバイス内部の記憶素子の名前から第一番号と第二番号を求め、
前記番号検索機能により求めた前記第一番号と前記第二番号により動作することを特徴とする請求項１３記載の半導体検証方法。
【請求項１５】
前記半導体検証方法はさらに、
メモリ制御機能により、前記第一メモリと前記第二メモリのアドレス端子およびイネーブル端子を制御し、前記第一メモリに格納された前記初期値情報を供給し、前記読出機能により出力された前記記憶素子の値を前記第二メモリに蓄える制御を行い、
クロック制御機能により、前記半導体デバイスのクロック信号を制御し、
中央制御機能により、前記メモリ制御機能と前記クロック制御機能と前記第一番号書換機能と前記取出機能とを制御し、
前記中央制御機能は、前記半導体デバイスへのクロック信号の供給が停止したときに、所望の記憶素子の第一番号および第二番号の入力を促し、前記第一番号書換手段により、前記第一番号を前記第一メモリに書き込み、前記メモリ制御機能を作動させ、前記取出機能により、前記第二メモリに記録された前記記憶素子の値を取得することを特徴とする請求項１３記載の半導体検証方法。
【請求項１６】
前記クロック制御機能は、
１）前記半導体デバイスの特定の出力端子の信号の値が特定の値になった場合、
２）前記半導体デバイスの特定の出力端子の信号の値が特定の値の範囲または範囲外になった場合、
３）１）または２）が指定した回数発生した場合、
４）前記半導体デバイス内部にあるソフトウェアによって動作する装置においてブレークが発生した場合、
５）複数の信号に対して上記１）乃至４）の条件を組み合わせた場合
にクロック供給を停止する機能のうち、いずれか、もしくは、複数の機能を有する
ことを特徴とする請求項１５記載の半導体検証方法。
【請求項１７】
前記中央制御機能により、前記第一番号の値が前回の第一番号と同じ場合は、前記第一書換手段の動作を省略し、さらに、前回記憶素子の値を取得した時からクロック信号を前記半導体デバイスに供給していない場合は、前記メモリ制御手段の動作をも省略して動作を行うことを特徴とする請求項１５記載の半導体検証方法。
【請求項１８】
前記半導体検証方法はさらに、
記憶機能により、前記第一番号と前記第一番号に対応する全ての記憶素子の値を格納し、前記半導体デバイスにクロックが供給されたときはそれらの値を削除し、
前記取出機能により、前記第一番号の値が前記記憶手段に記録されている場合は、前記記憶手段に記録されている値から前記記憶素子の値を取得し、前記第一番号の値が前記記憶手段に記録されていない場合は、前記第二メモリに格納された前記第一番号に対応する全ての記憶素子の値を取得し、前記第一番号と前記第二番号に対応する全ての記憶素子の値を記憶手段に記録し、前記記憶手段に記録されている値から前記記憶素子の値を取得するように動作を変更したことを特徴とする請求項１３記載の半導体検証方法。
【請求項１９】
前記半導体検証方法は、
前記取得機能の作動を規定する取得手順に関する一つの情報と、一つの第一番号と、一つもしくは複数の第二番号から構成されるエントリを一つもしくは複数有する制御情報と、
前記制御情報の各エントリの処理を繰り返して、前記制御情報にある全てのエントリを処理する中央制御機能とをさらに備え、
前記取得手順の第一方法は、前記第二メモリに記録されたすべての値を取得した後、前記第二番号に対応するすべての値を計算する方法であり、
前記取得手順の第二方法は、前記第二メモリに記録された前記第二番号に対応する値を、そのエントリに存在する第二番号の数以下の取出動作で取得する方法であり、
前記取得手段は、前記取得手順によってその動作を規定されることを特徴とする請求項１３記載の半導体検証方法。
【請求項２０】
前記半導体検証方法は、さらに、
番号検索機能により、前記記憶素子の名前から第一番号と第二番号を求め、
制御情報計算機能により、前記半導体検証装置で取得する記憶素子の名前を記載した観測信号リストを用いて前記制御情報を計算し、
前記制御情報計算機能により、前記番号検索手段により、前記観測信号リストに記載された記憶素子の名前から第一番号と第二番号を取得し、同じ第一番号を持つすべての記憶素子を前記第一方法と前記第二方法で処理する時間を計算し、その第一番号と、その第一番号を持つ前記記憶素子からなるエントリを生成し、このエントリに対して複数の取得手順から一つが選択され、全ての観測信号を処理したかを判断して、前記観測信号リストに記載された全ての記憶素子の値を取得するための前記制御情報を生成することを特徴とする請求項１９記載の半導体検証方法。
【請求項２１】
前記半導体デバイス内部にあるソフトウェアによって動作する装置において予めブレークポイントを定めてブレークさせることを特徴とする請求項１３乃至２０のいずれか１項に記載の半導体検証方法。
【請求項２２】
第一番号と第二番号によって半導体デバイス内部にある複数の記憶素子が区別される前記半導体デバイスから、前記記憶素子の値を読み出すことで前記半導体デバイスを検証する半導体検証プログラムであって、
前記半導体デバイス内部に実装されて前記第一番号の値を供給することで、前記第一番号に対応する前記記憶素子の値を前記半導体デバイス外部に供給する読出機能と、
前記読出機能により前記第二番号に対応する記憶素子の値を含むクロックサイクルごとの値を第二メモリに記録し、
前記読出機能の制御方法を記載した読出手段制御情報に基づいて、前記読出機能に与えられるべき値をクロックサイクルごとに初期値情報を第一メモリに格納し、
前記第一メモリにおける前記第一番号の第一位置情報と、前記第二番号ごとに対応する前記第二メモリにおける位置を格納した第二位置情報とを計算する初期値計算機能と、
前記第一番号のみを、前記第一位置情報に基づいて、前記第一メモリに書き込む第一番号書換機能と、
前記第二番号と前記第二位置情報に基づいて前記第二メモリにおける前記第二番号に対応する記憶素子の値が格納されている箇所を求め、そこから一回の取出動作で前記第二番号に対応する記憶素子の値を取り出す取出機能とをコンピュータに実行させることを特徴とする半導体検証プログラム。
【請求項２３】
前記半導体検証プログラムは、前記半導体デバイス内部の記憶素子の名前から第一番号と第二番号を求める番号検索機能を前記コンピュータにさらに実行させ、
前記番号検索機能により求めた前記第一番号と前記第二番号により動作することを特徴とする請求項２２記載の半導体検証プログラム。
【請求項２４】
前記半導体検証プログラムは、
前記第一メモリと前記第二メモリのアドレス端子およびイネーブル端子を制御し、前記第一メモリに格納された前記初期値情報を供給し、前記読出機能により出力された前記記憶素子の値を前記第二メモリに蓄える制御を行うメモリ制御機能と、
前記半導体デバイスのクロック信号を制御するクロック制御機能と、
前記メモリ制御機能と前記クロック制御機能と前記第一番号書換機能と前記取出機能とを制御する中央制御機能とを前記コンピュータにさらに実行させ、
前記中央制御機能は、前記半導体デバイスへのクロック信号の供給が停止したときに、所望の記憶素子の第一番号および第二番号の入力を促し、前記第一番号書換手段により、前記第一番号を前記第一メモリに書き込み、前記メモリ制御機能を作動させ、前記取出機能により、前記第二メモリに記録された前記記憶素子の値を取得することを特徴とする請求項２２記載の半導体検証プログラム。
【請求項２５】
前記クロック制御機能は、
１）前記半導体デバイスの特定の出力端子の信号の値が特定の値になった場合、
２）前記半導体デバイスの特定の出力端子の信号の値が特定の値の範囲または範囲外になった場合、
３）１）または２）が指定した回数発生した場合、
４）前記半導体デバイス内部にあるソフトウェアによって動作する装置においてブレークが発生した場合、
５）複数の信号に対して上記１）乃至４）の条件を組み合わせた場合
にクロック供給を停止する機能のうち、いずれか、もしくは、複数の機能を有することを特徴とする請求項２２記載の半導体検証プログラム。
【請求項２６】
前記中央制御機能により、前記第一番号の値が前回の第一番号と同じ場合は、前記第一書換手段の動作を省略し、さらに、前回記憶素子の値を取得した時からクロック信号を前記半導体デバイスに供給していない場合は、前記メモリ制御手段の動作をも省略して動作を行うことを特徴とする請求項２２記載の半導体検証プログラム。
【請求項２７】
前記半導体検証プログラムは、
前記第一番号と前記第一番号に対応する全ての記憶素子の値を格納し、前記半導体デバイスにクロックが供給されたときはそれらの値を削除する記憶機能を前記コンピュータに実行させ、
前記取出機能は、前記第一番号の値が前記記憶手段に記録されている場合は、前記記憶手段に記録されている値から前記記憶素子の値を取得し、前記第一番号の値が前記記憶手段に記録されていない場合は、前記第二メモリに格納された前記第一番号に対応する全ての記憶素子の値を取得し、前記第一番号と前記第二番号に対応する全ての記憶素子の値を記憶手段に記録し、前記記憶手段に記録されている値から前記記憶素子の値を取得するように動作を変更したことを特徴とする請求項２２記載の半導体検証プログラム。
【請求項２８】
前記半導体検証プログラムは、
前記取得機能の作動を規定する取得手順に関する一つの情報と、一つの第一番号と、一つもしくは複数の第二番号から構成されるエントリを一つもしくは複数有する制御情報の各エントリの処理を繰り返して、前記制御情報にある全てのエントリを処理する中央制御機能を前記コンピュータにさらに実行させ、
前記取得手順の第一方法は、前記第二メモリに記録されたすべての値を取得した後、前記第二番号に対応するすべての値を計算する方法であり、
前記取得手順の第二方法は、前記第二メモリに記録された前記第二番号に対応する値を、そのエントリに存在する第二番号の数以下の取出動作で取得する方法であり、
前記取得手段は、前記取得手順によってその動作を規定されることを特徴とする請求項２２記載の半導体検証プログラム。
【請求項２９】
前記半導体検証プログラムは、
前記記憶素子の名前から第一番号と第二番号を求める番号検索機能と、
前記半導体検証装置で取得する記憶素子の名前を記載した観測信号リストを用いて前記制御情報を計算する制御情報計算機能と、
前記番号検索手段により、前記観測信号リストに記載された記憶素子の名前から第一番号と第二番号を取得し、同じ第一番号を持つすべての記憶素子を前記第一方法と前記第二方法で処理する時間を計算し、その第一番号と、その第一番号を持つ前記記憶素子からなるエントリを生成し、このエントリに対して複数の取得手順から一つが選択され、全ての観測信号を処理したかを判断して、前記観測信号リストに記載された全ての記憶素子の値を取得するための前記制御情報を生成する前記制御情報計算機能とを前記コンピュータにさらに実行させることを特徴とする請求項２７記載の半導体検証プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体検証装置、方法およびプログラムに関する。
【背景技術】
【０００２】
本発明に関する現時点での技術水準をより十分に説明する目的で、本願で引用され或いは特定される特許、特許出願、特許公報、科学論文等の全てを、ここに、参照することでそれらの全ての説明を組入れる。【０００３】
半導体技術の進歩により、半導体デバイス（論理ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｅｄ  ｃｉｒｃｕｉｔ））の集積度は、年々向上し、大規模システムを１チップに集積することが可能になってきている。しかしながら、半導体デバイスの製造コストは、極めて高価であるとともに、その製造には多くの時間を必要とするため、製造前に十分な検証を行うことが重要である。【０００４】
半導体デバイスの検証は、設計の様々なフェーズで行われる。設計プロセスは、初期設計における抽象的なレベルから、最終段階における詳細な製造レベルまで多くの段階を踏み、各レベルに応じた論理情報を取り扱う。例えば初期設計段階では入出力関係程度を確定する抽象レベルの論理情報、機能設計段階では論理各部の機能を確定する機能レベルの論理情報、そして、最終的な詳細設計段階では論理構造を確定する構造レベルの論理情報が取り扱われる。一般に使用される各種ハードウェア記述言語（ＳｙｓｔｅｍＣ，  ＳｙｓｔｅｍＶｅｒｉｌｏｇ，Ｖｅｒｉｌｏｇ−ＨＤＬ、ＶＨＤＬ等）により、上述の種々の設計段階の論理情報を表現することが可能である。【０００５】
半導体デバイスや複数の半導体デバイスを使用したシステムの論理検証の方法には、ソフトウェアシミュレータによるものと、ハードウェアエミュレータによるもの、実際の半導体デバイスを利用したものがある。ソフトウェアシミュレータは、ハードウェア記述言語で記述された論理情報をコンピュータプログラムとして実行するため、種々の設計段階において使用することができる。さらに、回路の動作をコンピュータプログラムとして実行しているため、ハードウェア記述言語におけるすべての変数の値等を容易に観測できるという利点を持っている。【０００６】
一方、実際の半導体デバイスやハードウェアエミュレータは、ハードウェアであるため、ソフトウェアシミュレータよりも論理演算を高速に実行することが可能である。ハードウェアエミュレータは、一般的に、ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）やＦＰＩＤ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｉｎｔｅｒｃｏｎｎｅｃｔ  Ｄｅｖｉｃｅ）などの書き換え可能なハードウェア（プログラマブルロジックデバイス）で構成される装置である。しかしながら、一般的な半導体デバイスやハードウェアエミュレータでは、コストやハードウェア的な制約等からすべての信号を観測することが困難であり、回路をデバッグすることが困難という問題点がある。【０００７】
この問題点を解決するための手法として、特許文献１や特許文献２に記載されているように、ＦＰＧＡが有するリードバックキャプチャという機能を、バウンダリスキャンテストやテストアクセサリポート等の規格であるＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）（ＩＥＥＥ１１４９．１）を通じて制御することで、特別なハードウェアのサポートなしに任意のＦＰＧＡに実装された記憶素子の値を読み出す手法が開示されている。この手法を利用することにより、上記に記載したハードウェアエミュレータに関する観測性の問題を大幅に緩和することが可能となる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００５−１７４３４９号公報、段落００５５
【特許文献２】特願２００６−５５３０６３号公報、段落００８５
【非特許文献】
【０００９】
【非特許文献１】ザイリンクス株式会社、Ｖｉｒｔｅｘ−４、コンフィグレーションガイド
【発明の概要】
【発明が解決しようとする課題】
【００１０】
特許文献１や特許文献２記載のハードウェアエミュレータでは、ＦＰＧＡをＪＴＡＧ（ＩＥＥＥ１１４９．１）で制御することにより、ＦＰＧＡ内部の記憶素子の値を読み出す手法を開示している。しかしながら、ＪＴＡＧは４つの信号（ＴＣＫ，ＴＤＩ，ＴＤＯ，ＴＭＳ）を利用して、ＦＰＧＡを含む複数の半導体デバイスを制御する規格であるため、ＦＰＧＡから記憶素子の値を取得するためには、複雑な計算を行って端子の制御情報を決定し、その情報に基づいて半導体デバイスを制御する必要がある。その結果、ＦＰＧＡから記憶素子の値を取得するために費やす時間が長くなるという問題がある。さらにＪＴＡＧの場合は、少ない信号で半導体デバイスの制御を行うので端子制御回数が増加し、この問題はより顕著となる。【００１１】
一般的なハードウェアエミュレータでは、ユーザからの要求によって記憶素子の値を取得する動作を開始するため、要求から値が返されるまでの時間が長くなり、結果として、回路のデバッグが行いにくい、たとえばクロックサイクル毎に値を取得する必要がある波形表示などが遅くなる、などの問題がある。さらに、メモリなどのある程度大きな容量のデータを取得するためには、より多くの時間を費やし、この問題はより顕著となる。【００１２】
そこで、本発明の目的は、半導体デバイスやハードウェアエミュレータで実現されている記憶素子の値を高速に取得するための半導体検証装置、方法およびプログラムを提供することにある。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、本発明の半導体検証装置は、第一番号と第二番号によって半導体デバイス内部にある複数の記憶素子が区別される前記半導体デバイスから、それらの記憶素子の値を読み出すための装置であって、前記半導体デバイス内部に実装され、前記第一番号の値を供給することで、前記第一番号に対応する前記記憶素子の値を前記半導体デバイス外部に供給する読出手段と、前記読出手段の入力端子に直接接続した第一メモリと、前記読出手段の出力端子に直接接続し、前記第一番号と前記第二番号に対応する記憶素子の値を含む前記読出手段の出力端子におけるクロックサイクルごとの値を記録する第二メモリと、前記読出手段の制御方法を記載した読出手段制御情報に基づいて、前記第一メモリに格納する前記読出手段に与えるべき値をクロックサイクルごとに格納した初期値情報と、前記第一メモリにおける前記第一番号の位置方情報である第一位置情報と、前記第二番号ごとに対応する前記第二メモリにおける位置情報を格納した第二位置情報とを、計算する初期値計算手段と、前記第一番号のみを、前記第一位置情報に基づいて、前記第一メモリに書き込む第一番号書換手段と、前記第二番号と前記第二位置情報に基づいて前記第二メモリにおける前記第二番号に対応する記憶素子の値が格納されている箇所を求め、そこから一回の取出動作で前記第一番号と前記第二番号に対応する記憶素子の値を取り出す取出手段と、を備えたことを特徴としている。【００１４】
本発明によれば、記憶素子の値を読み出すために必要な読出手段の入力端子の制御を予め第一メモリに記憶し、記憶素子を取得するときは、第一番号だけを書き換えた後に、第一メモリから値を読み出すのみで読出手段を制御するように構成されているため、取出動作を高速でき、上記目的を達成することができる。さらに、第一メモリと第二メモリを読出手段に直接接続したこと、第一メモリに読出手段から出力された値をクロックサイクル毎に記録し、第二メモリにクロックサイクル毎のデータを格納していることで、第一メモリおよび第二メモリの制御を簡単に出来、読出手段、出力メモリ、入力メモリのデータ授受を高速にできるという効果がある。【００１５】
また、本発明に係る半導体検証方法は、第一番号と第二番号によって半導体デバイス内部にある複数の記憶素子が区別される前記半導体デバイスから、前記記憶素子の値を読み出すことで前記半導体デバイスを検証する方法であって、読出機能により、前記半導体デバイス内部に実装されて前記第一番号の値を供給することで、前記第一番号に対応する前記記憶素子の値を前記半導体デバイス外部に供給し、前記読出機能により前記第一番号と前記第二番号に対応する記憶素子の値を含むクロックサイクルごとの値を第二メモリに記録し、前記読出機能の制御方法を記載した読出手段制御情報に基づいて、前記読出機能に与えるべき値をクロックサイクルごとの初期値情報を第一メモリに格納し、初期値計算機能により、前記第一メモリにおける前記第一番号の第一位置情報と、前記第二番号ごとに対応する前記第二メモリにおける位置を格納した第二位置情報とを、計算し、第一番号書換機能により、前記第一番号のみを、前記第一位置情報に基づいて、前記第一メモリに書き込み、取出機能により、前記第二番号と前記第二位置情報に基づいて前記第二メモリにおける前記第一番号と前記第二番号に対応する記憶素子の値が格納されている箇所を求め、そこから一回の取出動作で前記第一番号と前記第二番号に対応する記憶素子の値を取り出すことを特徴とする。【００１６】
さらに、本発明に係る半導体検証プログラムは、第一番号と第二番号によって半導体デバイス内部にある複数の記憶素子が区別される前記半導体デバイスから、前記記憶素子の値を読み出すことで前記半導体デバイスを検証プログラムであって、前記半導体デバイス内部に実装されて前記第一番号の値を供給することで、前記第一番号に対応する前記記憶素子の値を前記半導体デバイス外部に供給する読出機能と、前記読出機能により前記第一番号と前記第二番号に対応する記憶素子の値を含むクロックサイクルごとの値を第二メモリに記録し、前記読出機能の制御方法を記載した読出手段制御情報に基づいて、前記読出機能に与えるべき値をクロックサイクルごとの初期値情報を第一メモリに格納し、前記第一メモリにおける前記第一番号の第一位置情報と、前記第二番号ごとに対応する前記第二メモリにおける位置を格納した第二位置情報とを計算する初期値計算機能と、前記第一番号のみを、前記第一位置情報に基づいて、前記第一メモリに書き込む第一番号書換機能と、前記第二番号と前記第二位置情報に基づいて前記第二メモリにおける前記第二番号に対応する記憶素子の値が格納されている箇所を求め、そこから一回の取出動作で前記第二番号に対応する記憶素子の値を取り出す取出機能とをコンピュータに実行させることを特徴とする。【００１７】
また、本発明では、第一メモリは予め定められたメモリが半導体検証装置に内蔵されるが、当然不揮発性メモリを脱着可能に配置することも可能である。【００１８】
さらに、第二メモリとは別に、書き換え可能なメモリをさらに同じ大きさの容量以上の大きさで設けておき、予め期待値データを入力させておき、第二メモリとこの新たなメモリと比較させて、期待値との差異を瞬時に把握できるように構成してもよい。【００１９】
加えて、本発明におけるプログラムは、コンピュータによる処理に適した命令の順番付けられた列からなるものである。このプログラムの実施態様は、コンピュータのハードディスクドライブや半導体メモリに格納されて、コンピュータに内蔵されるＣＰＵに対して命令を実行させることで目的を達成するものが主ではある。この他に、プログラムをＣＤ−ＲＯＭやＤＶＤ等の記憶媒体に格納して、必要に応じて読みだすことが可能な場合も、本発明の実施態様に含まれることは言うまでもない。【００２０】
なお、実施の形態の説明では、第一メモリを入力メモリと呼び、第二メモリを出力メモリとする。
【発明の効果】
【００２１】
第１の効果は、半導体デバイスやハードウェアエミュレータで動作させている記憶素子の値を高速に取得できることである。【００２２】
その理由は、半導体デバイス内部に実装された読出手段に対して、第一メモリを直接接続し、第一メモリに記録されたデータを単純に読み出すことによって読出手段を制御するように構成したこと、第一メモリに記録されたデータのうち、取得動作の度に、変更しなければならない箇所のみを書き換えるように構成したこと、第一メモリと第二メモリを読出手段に直接接続したこと、第一メモリにクロックサイクル毎のデータを格納していることと、第二メモリに読出手段から出力された値をクロックサイクル毎に記録させることで、第一メモリおよび第二メモリの制御を簡単に出来、読出手段、出力メモリ、入力メモリのデータ授受を高速に行うように構成したこと、である。
【図面の簡単な説明】
【００２３】
【図１】本発明の第１の発明を実施するための最良の形態の構成を示すブロック図である。
【図２】本発明の実施例における記憶素子とその対応の番号情報を示す。
【図３】本発明の実施例における命令とそのビットパターンの具体例ある。
【図４】メモリ制御ユニット１１７の出力メモリ１１５および入力メモリ１１６の制御例である。
【図５】本発明の実施例におけるクロック信号、アドレス信号その他の波形例である。
【図６】本発明の第１の発明を実施するための最良の形態の構成を示す半導体デバイスの構成図である。
【図７】本発明の第１の発明を実施するための最良の形態の動作を示す流れ図である。
【図８】本発明の第２の発明を実施するための最良の形態の構成を示すブロック図である。
【図９】ザイリンクス社が提供している番号データベース１２４に関するデータの抜粋であるＬｏｇｉｃ  Ｌｏｃａｔｉｏｎ  Ｆｉｌｅの一部を抜粋したものであり、第３カラムが第一番号（Ｆｒａｍｅ  Ａｄｄｒｅｓｓ）、第４カラムが第二番号（Ｆｒａｍｅ  Ｏｆｆｓｅｔ）、第７カラムが記憶素子の名前の表である。
【図１０】本発明の第２の発明を実施するための最良の形態の動作を示す流れ図である。
【図１１】本発明の第４の発明を実施するための最良の形態の構成を示すブロック図である。
【図１２】本発明の第４の発明を実施するための最良の形態の動作を示す流れ図である。
【図１３】本発明の第５の発明を実施するための最良の形態の構成を示すブロック図である。
【図１４】本発明の第５の発明を実施するための最良の形態の構成における観測信号リスト及びその第一番号と第二番号を記した図である。
【図１５】本発明の第５の発明を実施するための制御情報計算機能の動作を示す流れ図である。
【図１６】本発明の第５の発明において、図１４の観測信号リストに対して図１５のフローチャートを適用した結果（制御情報）である。
【図１７】本発明の第５の発明を実施するための最良の形態の構成を示す流れ図である。
【図１８】本発明の第６の発明を実施するための最良の形態の動作を示すブロック図である。
【図１９】本発明の第７の発明を実施するための最良の形態の構成を示すブロック図である。
【図２０】本発明の第８の発明を実施するための最良の形態の構成を示すブロック図である。
【図２１】本発明の第８の発明を実施するための最良の形態の動作を示す流れ図である。
【図２２】本発明の実施例における計算機と半導体テスト装置の構成を示すブロック図である。
【発明を実施するための形態】
【００２４】
次に、発明を実施するための最良の形態について図面を参照して詳細に説明する。
【００２５】
図１を参照すると、本発明の第１の実施の形態は、半導体デバイス１００と、その半導体デバイス１００にある読出ユニット１０１を制御するデバイス制御ユニット１１０と、デバイス制御ユニット１１０の制御行う全体制御機能１２０とを含む。
【００２６】
半導体デバイス１００は、第一番号と第二番号の組み合わせによって一意に区別可能な記憶素子（一例として図２に後述する。）と、その第一番号と読出ユニット制御情報１２５に基づいたアクセスを行うことによって、その第一番号に対応する全ての記憶素子の値を読み出すことのできる読出ユニット１０１とを含む。この記憶素子は、たとえば、フリップフロップやラッチ、メモリ、レジスタ等である。
【００２７】
ここで第一番号と第二番号、そして、読出ユニット制御情報１２５についてより具体的に説明する。
【００２８】
第一番号と第二番号は、半導体デバイス１００内部に存在する複数の記憶素子に割り振られた番号で、第一番号と第二番号の組み合わせと各記憶素子は一対一で対応する。そして、全体制御機能１２０は、第一番号と読出ユニット制御情報１２５に基づいてデバイス制御ユニットの端子を介して読出ユニット１０１を制御する。これにより、第一番号に対応する記憶素子の値が読出ユニット１０１からデバイス制御ユニット１１０に出力される。たとえば各記憶素子に対して図２のような番号が割り当てられている場合、第一番号０ｘ１０２４とデバイス制御情報１２５に基づいて読出ユニット１０１を制御することで、記憶素子ＡおよびＤの値が読出ユニット１０１の出力端子から出力される。
【００２９】
読出ユニット制御情報１２５は読出ユニット１０１をどのように制御すれば、所望する記憶素子の値を読み出すために必用な制御情報で、具体的には図３のような情報である。図３の例では、最初の「デバイス停止命令」で半導体デバイス１００の動作を停止させ、次の第一番号命令で第一番号を読出ユニット１０１に与え、次の読出命令で読出ユニット１０１から第一番号命令で指定した第一番号に対応する記憶素子の値を取得し（このとき、本実施の形態の入力メモリ１１５は、読出ユニットの出力端子の値をクロックサイクルごとに記録する）、デバイス開始命令で半導体デバイス１００が動作可能な状態に戻して、所望の記憶素子の値を取得する例である。具体的な一例を挙げると、ザイリンクス社のＦＰＧＡの場合は、非特許文献１のＣｈａｐｔｅｒ８，Ｔａｂｌｅ８−５に読出ユニット制御情報１２５の詳細が記載されている。
【００３０】
デバイス制御ユニット１１０は、読出ユニット１０１を制御する取得ユニット１１１と、入力メモリ１１５（第二メモリ）の内容を取得したり、出力メモリ１１６（第一メモリ）の内容を書き換たり、全体制御機能１２０からの指示をメモリ制御ユニット１１７へ受渡しする、制御インターフェース（Ｉ／Ｆ）１１３とを含む。さらに取得ユニット１１１は、読出ユニット１０１の出力端子にデータ入力端子を直接接続し、その出力端子の値をクロックサイクルごとに記録する入力メモリ１１５と、読出ユニット１０１の入力端子にデータ入力端子を直接接続し、その入力端子に与えるべきクロックサイクルごとの値（後述するように、これは初期値情報１２７）を格納した出力メモリ１１６と、入力メモリ１１５のアドレス端子１１５１、イネーブル端子１１５２、ライトイネーブル端子１１５３を制御して読出ユニット１０１の出力端子の値を入力メモリ１１５に記録する制御を行い、さらに、出力メモリ１１６のアドレス端子１１６１およびイネーブル端子１１６２を制御して出力メモリ１１６の値を読出ユニット１０１に適切に供給するメモリ制御ユニット１１７とを含む。
【００３１】
メモリ制御ユニット１１７の動作について、図４と図５とを用いて、詳細に説明する。図４は、取得ユニット１１１をより具体的に図示した一つの例である。この回路例では、初期値情報１２７および第一番号書換機能１２９によって出力メモリ１１６の内容を書き換えるときのアドレス端子１１６１およびイネーブル信号１１６２の制御、および、取出機能１２２が値を読み出すときのアドレス端子１１６１やイネーブル端子１１６２の制御については省略しているが、メモリ制御ユニット１１７がこれらの制御を行う場合にも適切に処理すればこれらの機能を実現することは容易である。
【００３２】
図４において、メモリ制御ユニット１１７は入力メモリ１１５のアドレス端子１１５１およびライトイネーブル端子１１５３を制御し、さらに、出力メモリ１１６のアドレス端子１１６１とイネーブル端子１１６２を図５のように制御する。図５においてクロック信号１８０１は読出ユニット１０１、入力メモリ１１５、出力メモリ１１６に供給される信号で、これらすべてユニットが同期して動くために必要な信号である。また、アドレス信号１８０２は、入力メモリ１１５および出力メモリ１１６のアドレス端子１１６１に供給するアドレス信号である。今回の例では入力メモリ１１５のアドレス端子１１５１と出力メモリ１１６のアドレス端子１１６１に供給する信号を同一にしているが、回路の動作速度が低下しない範囲で別々な信号を供給する形態であってもよい。イネーブル信号１８０３は、出力メモリ１１６のイネーブル端子１１６２に供給する信号と、入力メモリ１１５のライトイネーブル端子１１５２に供給する共通な信号である。この信号も、回路の動作速度が低下しない範囲で、別々な信号を供給する形態でも問題ない。また図５記載の１８０４は、出力メモリ１１６のデータ出力端子から出力される値の一例を記載している。この信号が読出ユニット１０１に供給されることで、この信号に含まれる第一番号に基づいて読出ユニット１０１が動作し、半導体デバイス内部に存在する記憶素子の値を出力する。
【００３３】
この例ではメモリ制御ユニット１１７がクロック信号を入力メモリ１１５および出力メモリ１１６、読出ユニット１０１に供給しているが、これは一例であり、外部から供給される形、および、図５のように一サイクルごとにデータを読出ユニット１０１に供給するのではなく、複数サイクルの間に一つのデータを供給する形でも良い。また、この例では記憶素子の値を出力メモリ１１６からデータを供給しながら出力されている形態が採用されているが、出力メモリ１１６のデータの全てを供給した後に出力される形態を採用することも考えられる。さらに、この例ではアドレスをインクリメントしてアドレスの低位からデータを読出ユニット１０１に供給しているが、逆に高位から順番に読み出しても構わないし、他にインクリメントよりも高速に動作するアドレス生成方法があればそれを利用しても構わない。またこの例では正論理で波形図を描いているが、回路として負論理で動作する信号があっても構わない。
【００３４】
メモリ制御ユニット１１７を上述したように構成することで、カスタムＬＳＩ等の半導体デバイスと比較して動作速度が遅いＦＰＧＡでデバイス制御ユニット１１０を実現しても、高速に取出動作を実現することが可能となる。また、読出ユニット１０１に入力端子および出力端子が複数存在する場合は、一つの端子ごとに入力メモリもしくは出力メモリを用意する形態も考えられる。このように構成することでメモリのビット幅と読出ユニットの端子のビット幅が必ず一致するため、メモリの無駄をなくすことが可能になる。さらに、ビット位置を変換する回路等を省略することが出来るため、読出ユニット１０１と取得ユニット１１１を高速に動作させることが出来、短い時間で所望の記憶素子の値を取得することを可能とする。また、端子のビット幅と同じもしくはより大きいビット幅を持つメモリを利用して、端子に対応するメモリのビット位置を固定することによっても、同様なことが実現できる。
【００３５】
全体制御機能１２０は、本実施の形態で所望の記憶素子に関する第一番号と第二番号を格納した番号情報１３０と、読出ユニット制御情報１２５に基づいて、出力メモリ１１６の値である初期値情報１２７と、出力メモリ１１６における第一番号の位置を格納した第一位置情報１３２と、各第二番号に対して、その値を有する記憶素子の値が入力メモリ１１５のどの位置に格納されているかを示す第二位置情報１２８（ここで、第一番号に関わらず第二番号が同じであれば、入力メモリ１１５に格納される位置は同じとしている。）とを計算する初期値計算機能１２６と、番号情報１３０に存在する第一番号を、第一位置情報１３２に基づいて、出力メモリ１１６の該当する部分のみを書き換える第一番号書換機能１２９と、第二位置情報１２８に基づいて、入力メモリ１１５の第二番号に該当する部分のみを入力メモリ１１５から取得する取出機能１２２と、番号情報１３０から、それらの番号に対応する記憶素子の値を取得する制御を行う中央制御機能１２１と、を含む。
【００３６】
ここで初期値計算機能１２６、初期値情報１２７、第一位置情報１３２、第二位置情報１２８、第一番号書換機能１２９、取出機能１２２について、図３を用いて、より具体的に説明する。
【００３７】
初期値計算機能１２６は入力メモリ１１５と出力メモリ１１６の構成読出ユニット制御情報１２５とデバイスの接続形態（ＪＴＡＧ等）に基づいて計算を行うが、具体的には出力メモリ１１６の内容である初期値情報１２７、および、出力メモリ１１６における第一番号のビット位置を示す第一位置情報１３２と、第二番号と入力メモリ１１５の位置を示す一覧である第二位置情報１２８を計算する。たとえば、図３の第一番号が３２ビットで各命令が１２ビット（第一番号命令は命令で１２ビット、第一番号で３２ビットで計４４ビット）とし、各命令のビットパターンを図３のように仮定すると、初期値情報１２７（出力メモリ１１６の初期値）には０ｘ３００＿００５＿ＸＸＸＸＸＸＸＸ＿００１＿３０１（Ｘは、動作の度に書き換えられる第一番号なので、ここでは任意の値で良く、さらにここでは、データの入力方向としてＭＳＢ  Ｆｉｒｓｔを仮定している）を格納し、第一位置情報１３２には開始位置が２４ビット目、終了が５６ビット目を格納する。さらに、初期値計算機能１２６は、読出ユニット制御情報１２５および入力メモリ１１５やメモリ制御ユニット１１７の構成に基づいて、第二番号が０であれば入力メモリのアドレス０ｘ３番地、１であればアドレス０ｘ４番地などの一覧である第二位置情報１２８を計算する。半導体デバイス１００がＪＴＡＧで接続されている場合、ＴＤＩ，ＴＭＳの２つの信号を制御して、適切なステート（状態）で適切な値を読出ユニット１０１に供給する必要があり、さらに、デバイスの接続構成によっても計算方法が異なるため、初期値情報１２７や第一位置情報１３２、第二位置情報１２８の計算は複雑である。そのため、本実施の形態では、読出ユニット１０１を動作させるために第一番号に該当しない初期値情報１２７を計算し、予め出力メモリ１１６に蓄えることで、取得動作の度に行う必要があるこの複雑な計算を省略することで取得動作の高速化を図っている。
【００３８】
第一番号書換機能１２９は番号情報１３０にある第一番号を、第一位置情報１３２に記載されている出力メモリ１１６の第一番号に該当する位置（上記例のＸＸＸＸＸＸＸＸ部分で、２４ビット目から５６ビット目のデータ）を書き換える機能である。たとえば、出力メモリ１１６が３２ビットの１ポートメモリとして実現されている場合、一回目に出力メモリ１１６の２４ビット目から３２ビット目を書換、二回目の動作で出力メモリ１１６の３３ビット目から５６ビット目のデータを書き換えるように動作することで、最小回数で値を書き換えることが出来る。このとき、出力メモリ１１６の第一番号を格納した位置を、メモリ制御ユニット１１７が与えるアドレス信号、および、初期値情報１２７の記録開始位置を工夫することで、出力メモリ１１６への一回の書換動作で書き換えられる場合もある。たとえば、上記例の場合、初期値情報１２７をアドレス８から記録し、メモリ制御ユニット１１７が動作を開始するときはアドレス８から始めるように制御することで、出力メモリ１１６の第一番号に該当する部分は３３ビット目から６４ビット目となり、一回の書換動作ですべて書き換えられ、取得動作をより高速に行うことが出来る。また、出力メモリ１１６としてデュアルポートメモリを利用できる場合は、出力メモリ１１６のデータの読み出しと、第一番号の書換を並列して行うことが出来るため、見かけ上、第一番号書換機能１２９の書換時間を０にすることができ、取得動作をより高速に行うことが出来る。
【００３９】
取出機能１２２は、番号情報１３０に格納されている第二番号と、第二位置情報１２８から、入力メモリ１１５における所望の記憶素子の位置を求め、その位置から一回の取り出し動作で所望の記憶素子を取り出す。たとえば、入力メモリ１１５としてデュアルポートメモリを利用できる場合は、全体制御機能１２０とデバイス制御ユニット１１０間のデータ転送レートを高速にする（効率良くする）ために、入力メモリ１１５の制御Ｉ／Ｆ１１３側のデータ幅を制御Ｉ／Ｆ１１３のデータ幅と合わせると、より高速に読み出すことが可能となる。たとえば、制御Ｉ／Ｆ１１３が、３２ビットのＰＣＩバスであれば、入力メモリ１１５の制御Ｉ／Ｆ１１３側のデータ幅を３２ビットとすることで効率よく全体制御機能１２０とデバイス制御ユニット１１０間のデータ転送を行うことが出来る。（補足：これは特に実施の形態４で最も有効である。）次に半導体デバイス１００、読出ユニット１０１、制御Ｉ／Ｆ１１３、中央制御機能１２１についてその動作を説明する。
【００４０】
半導体デバイス１００は外部から供給されたクロック信号によってその動作を行うデバイス（装置、部品）である。また、半導体デバイス１００は、半導体デバイス１００にある信号の値を読み出すことの出来る読出ユニット１０１を有する。ただし、本実施の形態では記憶素子の値を読み出せれば良く、読み出し方法については規定しない。例えば図６のように各々の記憶素子２００．１．１−２００．Ｍ．Ｎに対してセレクタ２０１、２０１．１−２０１．Ｍを用意する。第一番号Ｘに関する記憶素子２００．Ｘ．１−２００．Ｘ．Ｎの値を読み出す場合には、読出ユニット１０１は始めにインクリメンタ２０２の値を１にして、セレクタ２０１．Ｓ（ここでＳは１〜Ｍを表す）の出力に記憶素子２００．Ｓ．１の値を出力するように制御する。次に読出ユニット１０１は、セレクタ２０１に第一番号を与え、セレクタ２０１．Ｘの出力を読出ユニット１０１に与えられるよう制御する。次に読出ユニット１０１はインクリメンタ２０２の値を２に増加して、読出ユニット１０１が記憶素子２００．Ｘ．２の値を読み出せるよう制御する。インクリメンタ２０２の値をＮまでこの動作を繰り返すことで記憶素子２００．Ｘ．１−２００．Ｘ．Ｎの値を読出ユニット１０１に与え、読出ユニット１０１はその結果を出力端子に供給する。
【００４１】
制御Ｉ／Ｆ１１３は、全体制御機能１２０からの指令に対して、取得ユニット１１１を制御する機能である。たとえば、全体制御機能１２０がＣＰＵを有する一般的な計算機で実現される場合、制御Ｉ／Ｆ１１３は計算機に接続するためのＩ／Ｆ、具体的には、ＰＣＩバス、ＰＣＩｅｘｐｒｅｓｓバス、ＵＳＢ，ＩＥＥＥ１３９４、Ｅｔｈｅｒｎｅｔ（登録商標）等とデータ授受が出来るＩ／Ｆとなる。
【００４２】
中央制御機能１２１は、全体を制御する機能であり、始めに半導体デバイス１００の起動後に、初期値情報１２７の値を出力メモリ１１６に格納する。このとき第一番号に該当する箇所は、記憶素子の読み出しのたびに書き換えられるため、何を書き込んでも構わない。
【００４３】
半導体デバイス１００の動作が停止したら、中央制御機能１２１は、番号情報１３０にある第一番号を第一番号書換機能１２９を利用して出力メモリ１１６を書き換える。次に中央制御機能１２１は、メモリ制御ユニット１１７を経由して出力メモリ１１６と入力メモリ１１５を制御して、読出ユニット１０１から所望の記憶素子の値を読み出すためのデータを供給し、読出ユニット１０１から出力された所望の記憶素子の値を入力メモリ１１５に格納させる。次に中央制御機能１２１は取出機能１２２を通じて所望の記憶素子の値を入力メモリ１１５から取出する。
【００４４】
デバイス制御ユニット１１０は、高速に動作させるため、ハードウェアで実現し、全体制御機能１２０は一般的な計算機上のプログラムとして実現するのが一般的であるが、これに限られたことではない。
【００４５】
次に、図１及び図７のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【００４６】
始めに、図７のステップ３００にて、初期値計算機能１２６が、読出ユニット制御情報１２５から出力メモリ１１６の内容である初期値情報１２７の計算、および、出力メモリ１１６における第一番号の位置を示す第一位置情報１３２と、各第二番号に対して所望の記憶素子の値が格納される入力メモリ１１５における位置情報の一覧である第二位置情報１２８を計算する。
【００４７】
また、ステップ４００では、半導体デバイス１００が動作可能になるように、半導体デバイス１００に、電源が投入されるステップである。半導体デバイス１００がＦＰＧＡで構成されている場合はさらにＦＰＧＡのコンフィグレーションを行うステップである。
【００４８】
続いて、図７のステップ４０１にて、出力メモリ１１６は、初期値情報１２７の内容がセットされるステップである。このステップでは、中央制御機能１２１が初期値情報１２７を読み込み、そのデータを出力メモリ１１６に書き込みを行う。もし出力メモリ１１６が初期値を内蔵できるメモリであった場合には、出力メモリ１１６を構成する段階で、初期値情報１２７を予め出力メモリ１１６に組み込むことも可能である。この場合、このステップは省略することが可能となる。
【００４９】
さらに、図７のステップ４０６にて、中央制御機能１２１は、第一番号書換機能１２９を制御して、番号情報１３０に格納された第一番号を出力メモリ１１６の該当する位置（ステップ３００で求めた第一位置情報１３２に記載されている）に書き込む。
【００５０】
今度は、図７のステップ４０７にて、中央制御機能１２１は、メモリ制御ユニット１１７を動作させ、出力メモリ１１６に格納された値を読出ユニット１０１に供給し、読出ユニット１０１から出力された所望の記憶素子の値を入力メモリ１１５に蓄えるステップである。
【００５１】
ついで、図７のステップ４０８にて、中央制御機能１２１は、取出機能１２２を制御して、番号情報１３０に格納された第二番号と第二位置情報１２８の情報に基づいて、入力メモリ１１５にある所望の記憶素子の値を取り出すステップである。
【００５２】
次に、本実施の形態の効果について説明する。
【００５３】
本実施の形態では、所望の記憶素子の値を読み出すために必要な読出ユニット１０１の入力端子の制御を予め出力メモリ１１６に記憶しておき、実際に記憶素子の値を得るときには、記憶素子によって異なる部分（本実施の形態では第一番号）だけを書き換えた後に、出力メモリ１１６から値を読み出すだけで読出ユニット１０１を制御するように動作させるように構成されているため、取出動作を高速できる効果がある。
【００５４】
また、取得ユニット１１１を単純に構成したこと、さらに、出力メモリ１１６と入力メモリ１１５は読出ユニット１０１が直接接続されているため、読出ユニット１０１の制御を高速にできるという効果がある。これは出力メモリ１１６にクロックサイクル毎のデータを格納していることと、入力メモリ１１５に読出ユニット１０１から出力された値をクロックサイクル毎に記録していることで可能としている。
【００５５】
さらに、中央制御機能１２１は、一回前のメモリ制御ユニット１１７を動作させたときと同じ第一番号を動作させるときは、第一番号の書換を省略して高速化を行い、さらにクロック信号が半導体デバイスに供給されていない場合は、メモリ制御ユニット１１７の動作を省略することによって、さらなる高速化を図ることも可能である。
【００５６】
次に、本発明の第２の発明を実施するための形態を詳細に説明する。
【００５７】
第二の実施の形態は、図８に示すように、最良の実施の形態から、クロック制御ユニット１１２、ユーザＩ／Ｆ機能１３１、番号検索機能１２３、番号データベース１２４を追加した形態であり、その他のユニットおよび機能は最良の実施の形態と同じである。
【００５８】
続いて、クロック制御ユニット１１２、ユーザＩ／Ｆ機能１３１、番号検索機能１２３についてより詳細な説明を行う。
【００５９】
中央制御機能１２１については、本実施の形態のフローチャートにおいてその動作を説明する。
【００６０】
クロック制御ユニット１１２は、中央制御機能１２１からの指令に従って、半導体デバイス１００にクロック信号を供給したり、供給を停止したりするユニットである。このとき、半導体デバイス１００の出力端子の値に基づいてクロックの動作を停止したりする機能（ブレーク設定機能）や指定されたサイクル数分、クロックを送信する機能を有することで、一クロックサイクル単位で記憶素子を観測することを制御できたり、記憶素子の値を観測したい時刻に半導体デバイス１００の動作を停止させたりすることができ、より良い半導体検証装置を提供することができる。さらに、半導体デバイス１００内部にＣＰＵやＤＳＰなどソフトウェアによって動作する回路が実装されている場合は、そのプログラムカウンタを利用してクロックの供給や供給停止を制御したり、半導体デバイス１００内部のメモリへアクセスを取得し、特定のアドレスへの書き込みや読み込みを検出してクロックの供給や供給停止を制御したり、ブレークポイントに到達した回数を指定可能とすることでより半導体検証装置を提供することができる。たとえば、クロック制御ユニット１１２のクロック停止条件として、
１）半導体デバイス１００の特定出力端子の値が特定の値になった場合、
２）半導体デバイス１００の特定出力端子の値が特定の値の範囲または範囲外になった場合、
３）内部の一つもしくは複数のＣＰＵやＤＳＰ等、ソフトウェアによって動作する装置においてブレークが発生した場合、
４）１）、２）３）いずれかが指定した回数発生した場合、
５）また上記条件を組み合わせた場合
などが考えられ、これらのいずれか、もしくは、複数の機能様々な条件でクロックを停止できるように構成することでより良い半導体検証装置を提供することが可能となる。また、ハードウェアエミュレータの場合は、動作対象回路を変更することが可能なため、ブレーク条件（クロックの供給を停止する条件）に半導体デバイス１００のすべての信号を利用できるため、より細かい制御を行うことが可能となる。例えば、ブレーク条件を信号Ａが１かつ信号Ｂが１０である事象が２回起きた時に停止すると設定する。この場合、この条件に合致した場合に、クロックが停止される。
【００６１】
ユーザＩ／Ｆ機能（入力手段、表示手段）１３１は、ユーザからの所望の記憶素子の名前を受け付け、ユーザに対して観測した記憶素子の値を表示する機能を有する。ユーザからの記憶素子の名前の入力は、ＣＰＵ、表示装置、マウス、キーボード等を有する一般的な計算機においてキーボードで観測する記憶素子名を直接入力できるだけでなく、半導体デバイス１００が有する記憶素子の一覧をディスプレイに表示して、マウス操作でユーザに指定させるなどの補助機能があってもよい。さらにバス信号を一括して指定できたり、メモリ全体を指定できたりする補助機能があるとさらによい検証装置が提供できる。
【００６２】
さらに値を表示する機能では、一ビットごとに値を表示させるだけでなく、バス信号を同時に表示したり、その２進数表示だけでなく、１６進数や１０進数の表示、波形による記憶素子の値の表示などを提供することで、より良い検証装置が提供できる。また、本実施の形態ではユーザＩ／Ｆ機能１３１に、観測したい記憶素子の名前だけを入力するのではなく、直接第一番号や第二番号を入力できるようにしてもよい。このように構成することで、番号検索機能１２３の動作を省略することができ、その分取得動作を高速にすることが出来る。
【００６３】
番号検索機能１２３は、ユーザＩ／Ｆ機能１３１から入力された値を取得する記憶素子の名前を検索キーとして、番号データベース１２４を参照して、その記憶素子に対応する第一番号と第二番号を取得して、番号情報１３０を生成する機能である。また、図２は、番号データベース１２４の一例である。
【００６４】
番号データベース１２４はすべての記憶素子に関して第一番号と第二番号を保持しているデータベースで、たとえば図２のような情報である。その具体的な一例をあげると、ザイリンクス社のＦＰＧＡの番号データベース１２４はＬｏｇｉｃ  Ｌｏｃａｔｉｏｎ  Ｆｉｌｅ（非特許文献１のＣｈａｐｔｅｒ８、Ｆｉｇｕｒｅ８−８）であり、そのファイルには半導体デバイス１００内部の記憶素子の名前と第一番号（Ｆｒａｍｅ  Ａｄｄｒｅｓｓ）と第二番号（Ｆｒａｍｅ  Ｏｆｆｓｅｔ）が記載されている。図９はＬｏｇｉｃ  Ｌｏｃａｔｉｏｎ  Ｆｉｌｅの一部を抜粋したものであり、第３カラムが第一番号（Ｆｒａｍｅ  Ａｄｄｒｅｓｓ）、第４カラムが第二番号（Ｆｒａｍｅ  Ｏｆｆｓｅｔ）、第７カラムが記憶素子の名前である。
【００６５】
次に、図１０のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【００６６】
図１０を参照すると、本実施の形態の動作（主に中央制御機能１２１の動作）は、最良の実施の形態からステップ２００２、２００３、２００４，２００５、２００９、２０１０、２０１１が追加になったものである。以下これらのステップについてより詳細に説明する。
【００６７】
ステップ２００２では、中央制御機能１２１が、ブレークポイントの設定を行うステップである。このステップでは、ユーザが、何サイクルクロックを発生させたらクロックを停止させる、または、半導体デバイス１００の信号の値が特定の値になったときにクロックの供給を停止する等をユーザＩ／Ｆ機能１３１、中央制御機能１２１を通じてクロック制御ユニット１１２に設定を行うステップである。ただし、設定する内容はクロック制御ユニット１１２が有する機能により様々である。
【００６８】
さらに、ブレークポイントの設定が終了したら、図１０のステップ２００３にて、中央制御機能１２１が、クロック制御ユニット１１２を動作させクロックを半導体デバイス１００を供給するステップである。これにより半導体デバイス１００は動作を開始する。このステップではステップ２００２で設定したブレークポイントに到達したら、クロックの供給を停止する。これにより半導体デバイス１００の動作は停止する。このときすべてのクロックを停止させるとその他の半導体デバイスを正常に動作させることができない場合がある（たとえばＤＲＡＭのリフレッシュを行う回路や外部とのデータ授受を行う回路など）ため、部分的にクロックを供給していても良い。ただし、所望の信号に関する部分のクロックは完全に停止する必要がある。
【００６９】
また、図１０のステップ２００４は、所望の記憶素子（以下、観測信号と記す）を指定するステップである。このステップでは、たとえば、ユーザＩ／Ｆ機能１３１が、半導体デバイス１００内部に実装されているすべての記憶素子を表示し、ユーザが観測信号を指定するステップである。このステップでは、さらに、入力された値が観測信号の名前である場合は、中央制御機能１２１が、番号検索機能１２３を動作させて、入力された観測信号の名前から第一番号と第二番号を検索し、それを番号情報１３０に格納するステップである。
【００７０】
ステップ２００５では、前回メモリ制御ユニット１１７を動作させたときに利用した第一番号と今回の第一番号が同じ場合で、前回の動作から現在の動作までの間にステップ２００３を動作させていない（前回の動作からクロック信号を半導体デバイス１００に与えていない）場合はステップ４０８へ、そうでない場合はステップ４０７に進むように中央制御機能１２１が、制御を行う判定ステップである。また、前回の第一番号と今回の第一番号が異なる場合はステップ４０６へ進む。
【００７１】
ステップ２００９では、中央制御機能１２１は、ステップ４０８で読み出した値をユーザＩ／Ｆ機能１３１に受け渡すステップである。
【００７２】
一方、図１０のステップ２０１０にて、ユーザＩ／Ｆ機能１３１は、中央制御機能１２１が読み出した値を表示するステップである。
【００７３】
加えて、図１０のステップ２０１１にて、ユーザＩ／Ｆ機能１３１は、ユーザに対して、動作の選択（ブレークポイントの設定、もしくは、さらなる観測信号の指定、もしくは動作終了）を指示するよう促すステップである。このステップにおいて、ブレークポイントの設定を指示された場合は、中央制御機能１２１が、次にステップ２００２へ、さらなる観測信号を指定された場合にはステップ２００４へ制御を移す。
【００７４】
続いて、本実施の形態の効果について説明する。
【００７５】
本実施の形態では、最良に実施の形態と同じように、記憶素子の値を取出動作を高速できる効果だけでなく、記憶素子の第一番号と第二番号などの人にとって使いにくいものではなく、記憶素子の名前から、その記憶素子の値を取得できるという効果がある。
【００７６】
さらに、中央制御機能１２１は、一回前のメモリ制御ユニット１１７を動作させたときと同じ第一番号を動作させるときは、第一番号の書換を省略して高速化を行い、さらにクロック信号が供給されていない場合は、メモリ制御ユニット１１７の動作を省略することによって、さらなる高速化が図られている。
【００７７】
次に、本発明の第３の発明を実施するための形態を詳細に説明する。
【００７８】
第３の実施の形態は、図１の半導体デバイス１００の代わりにＦＰＧＡなどのプログラマブルデバイスを利用した形態であり、各ユニットおよび機能の動作および全体の動作は最良の実施の形態と同じである。また、本発明の実施の形態は、最良の形態のみならず、他の形態とも組み合わせて利用することが可能である。
【００７９】
本実施の形態では、半導体デバイス１０１を利用した場合と比較して動作速度は劣るが汎用性が高く、ＦＰＧＡに実装可能であればどのような回路でも実現可能となるという効果がある。一般的に、半導体デバイス１００は、動作周波数、印加する電圧や入力Ｉ／Ｆ（ＬＶＴＴＬ（Ｌｏｗ  Ｖｏｌｔａｇｅ  ＴＴＬ），ＨＳＴＬ（Ｈｉｇｈ  Ｓｐｅｅｄ  Ｔｒａｎｓｃｅｉｖｅｒ  Ｌｏｇｉｃ），ＬＶＤＳ（Ｌｏｗ  Ｖｏｌｔａｇｅ  Ｄｉｆｆｅｒｅｎｔｉａｌ  Ｓｉｇｎａｌｉｎｇ）等）、パッケージ（ＤＩＰ（Ｄｕａｌ  Ｉｎｌｉｎｅ  Ｐａｃｋａｇｅ），ＢＧＡ（Ｂａｌｌ  Ｇｒｉｄ  Ａｒｒａｙ）等）等いろいろ異なるため、本実施の形態を実現するためには専用ボードを必要とすることが多いが、書き換え可能なハードウェアであるＦＰＧＡを利用して、半導体デバイス１０１をエミュレーションすることでデバイス毎の専用ボードを利用することなく検証出来るという効果がある。
【００８０】
また、ザイリンクス株式会社のＦＰＧＡには、ＪＴＡＧおよびＳｅｌｅｃｔＭＡＰ（商標）用端子を利用することで、すべての記憶素子を読み出すための読出ユニット（機能、方法）が用意されているため、半導体デバイス１００に読出ユニット１０１を新たにつけなくても良いという効果がある（参考：特許文献１、特許文献２、非特許文献１）。つまりＪＴＡＧもしくはＳｅｌｅｃｔＭＡＰ用端子に出力メモリ１１５および入力メモリ１１６を外部端子を介して直接接続すれば、ＦＰＧＡ内部の全記憶素子の値を読み出すことが可能となる。
【００８１】
今度は、本発明の第４の発明を実施するための形態を詳細に説明する。
【００８２】
第４の実施の形態は、図１１に示すとおり、記憶機能５００を追加した形態であり、中央制御機能１２１、取出機能１２２の動作が第二の実施の形態から変更される以外は、その他のユニットおよび機能は第二の実施の形態と同じである。
【００８３】
さらに、記憶機能５００を追加したことにより動作が変更になった、中央制御機能１２１、取出機能１２２の動作について詳細に説明を行う。
【００８４】
取出機能１２２は、最良の実施の形態と異なり、入力メモリ１１６にある全ての記憶素子の値を読み出し、それを記憶手段５００に第一番号と合わせて記憶した後、所望する記憶素子の値を中央制御機能１２１に渡すように動作する。このとき、始めに所望の記憶素子の値を先に読み出し、中央制御機能１２１に値を渡し、次にその他のデータを読み出して記憶機能５００に記憶するようにしても良い。これにより、動作は複雑になるが並列して動かすことができるため動作速度は高速になる。
【００８５】
中央制御機能１２１は始めに第一番号に対応するデータが記憶機能５００に記録されていないか検索する。第一番号に対応するデータが記録されている場合は、そのデータと第二番号を利用して観測信号の値を計算し、ユーザＩ／Ｆ機能１３１に渡すよう動作する。一方、第一番号に対応するデータが記憶機能５００に記録されていない場合は、第二の実施の形態と同じように第一番号書換機能１２９を通じて出力メモリ１１６の第一番号を書き換え、メモリ制御ユニット１１７を動作させて読出ユニット１０１から第一番号に対応するデータを入力メモリ１１５に蓄えさせ、取出機能１２２を利用して入力メモリ１１５に格納されたデータを読み出し、その全データと第一番号を記憶機能５００に記録し、所望する記憶素子の値を中央制御機能１２１に渡すように動作を行う。
【００８６】
続けて、図１１及び図１２のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【００８７】
ただし、最良の実施の形態と同じステップに関しては詳細に説明することを省略する。
【００８８】
一方、図１２のフローチャートに示したとおり、本実施の形態のフローチャートは第二の実施の形態（図１０のフローチャート）からステップ６００の追加、ステップ２００５がステップ６０１に、ステップ４０８がステップ６０２に、ステップ２００９がステップ６０３に、その動作が変更になった形態である。
【００８９】
ステップ６００は、中央制御機能１２１が、記憶機能５００に記録された第一番号とそれに対応するデータを消去するステップである。データは半導体デバイス１００のクロックサイクル毎に異なる可能性があるため、クロック動作ステップ４０３を行う前にデータを破棄する。ただし、ステップ６００はクロック動作ステップ２００３の直後に行っても良い。
【００９０】
ステップ６０１は、ステップ２００４で算出した第一番号に対応するデータが記憶機能５００に存在しているかのチェックを中央制御機能１２１が、行う。第一番号に対応するデータが記憶機能５００に存在している場合はステップ６０３へ、存在していない場合はステップ４０６へ処理を進める。
【００９１】
ステップ６０２は、入力メモリ１１５のデータを取出機能１２２が、読み込むステップである。前述したように第二の実施の形態と異なり、入力メモリ１１５には複数の信号の値を含むデータが記録されているため、取出機能１２２はすべてのデータを読み込み、それを記憶機能５００に第一番号とともに記録する。
【００９２】
ステップ６０３では、取出機能１２２は、記憶機能５００にある第一番号に対応するデータと第二番号に基づいて観測信号の値を計算し、それを中央制御機能１２１を通じて、ユーザＩ／Ｆ機能１３１に受け渡すステップである。
【００９３】
次に、本発明の第５の発明を実施するための形態について図１３を用いて詳細に説明する。
【００９４】
第５の実施の形態は、最良の実施の形態から、全体制御機能１２０を変更し、番号検索機能１２３と制御情報計算機能７０１とユーザＩ／Ｆ機能１３１が追加されたものである。第５の実施の形態では、最良の実施の形態と異なり、ユーザは半導体デバイス１００を動作させるより前に観測信号（観測信号リスト７００）を指定し、中央制御機能１２１は観測信号リスト７００に記載された記憶素子のみの値を取得するように動作する形態である。
【００９５】
さらに、制御情報計算機能７０１について、その動作を具体的に説明する。
【００９６】
制御情報計算機能７０１は、ユーザから予め示された観測信号リスト７００に基づいて、観測信号を観測する順序を格納した制御情報７０２を計算する。
【００９７】
より詳しくは、制御情報計算機能７０１は、
取得手順１）取出機能１２２が、全データを取得する
取得手順２）取出機能１２２が、観測信号の値のみを取得する
という２つの方法を組み合わせて、全ての観測信号の値を取得できるような制御情報７０２を計算する。
【００９８】
取得手順１は一回の取得動作でそのエントリに存在する記憶素子の値すべてを取得できるが、取得手順２は、そのエントリに存在する記憶素子の数以下の回数で、そのエントリに存在するすべての記憶素子に関する値を読み出す。
【００９９】
図１４、図１５、図１６を用いてより具体的に制御情報計算機能７０１の動作について説明する。
【０１００】
今、観測信号リスト７００に記憶素子Ｐ，Ｑ，Ｒ，Ｓ，Ｔ，Ｕが指定されていて、番号データベース１２４には図１４のように格納されているとする。このとき、制御情報計算機能７０１は図１５に示したフローチャートに従って動作し、制御情報７０２（図１６）を生成する。
【０１０１】
はじめに制御情報計算機能７０１は、観測信号リスト７００にある記憶素子に着目し、同じ第一番号を持つ観測信号リストの内の記憶素子からなる一つのエントリを作成する（図１５のステップ９００）。そのエントリは、前述した取得手順に関する一つの情報と、一つの第一番号と、一つもしくは複数の第二番号とそれに対応する記憶素子の名前から構成される。
【０１０２】
次に制御情報計算機能７０１は、各エントリに対して、取得手順１の動作が速いか、取得手順２の動作が速いかを、取出機能１２２が全データを読み込むのに必要な時間Ａと、取出機能１２２が一信号を読み込むのに必要な時間Ｂと、そのエントリに含まれる記憶素子の数Ｎから計算する。つまり、Ａ＜Ｂ×Ｎ（ＢとＮの積）であれば取得手順１を選択し、そうでなければ取得手順２を選択するようにそのエントリの取得手順に関する情報を設定して記録する。（図１５のステップ９０１、９０２，９０３）。
【０１０３】
次にステップ９０４では、全ての観測信号を処理したか判断し、全ての処理が終了していれば終了し、処理が終わっていなければステップ９０１へ戻る。
【０１０４】
Ａ＝５，Ｂ＝２の場合、図１５のフローチャートの処理に従うと、図１４から図１６のような制御情報７０２が得られる。
【０１０５】
また、各エントリで第二番号に関してソートすることにより、データが読出ユニット１０１から読み出されたらすぐに中央制御機能１２１にデータを渡すことができ、より高速に動作させることが出来る。
【０１０６】
次に、図１３及び図１５、図１７のフローチャートを参照して本実施の形態の全体の動作について詳細に説明する。
【０１０７】
最良の実施の形態のフローチャート（図７）から比較すると、本実施の形態のフローチャートはステップ４０１とステップ４０６の間にステップ１１００とステップ１１０１とステップ１１０２とが挟まれ、ステップ４０８をステップ１１０３に変更したものである。以下、追加および置き換えたステップについて詳細に説明を行う。
【０１０８】
ステップ１１００では、ユーザによって、ユーザＩ／Ｆ機能１３１が、どの記憶素子の値を観測するかを指定されるステップである。ユーザＩ／Ｆ機能１３１は、その情報に基づいて観測信号リスト７００を作成する。
【０１０９】
ステップ１１０１は、制御情報計算機能７０１が、観測信号リスト７００に基づいて、図１５のフローチャートに従い制御情報７０２を作成するステップである。
【０１１０】
ステップ１１０２は、中央制御機能１２１が、制御情報７０２にまだ処理をしていないエントリが存在するかチェックし、存在しなければ動作を終了し、存在すれば、そのエントリを処理するためステップ４０６へ進むステップである。
【０１１１】
ステップ４０６では、中央制御機能１２１が、ステップ１１０２で処理していないと判断したエントリの第一番号の値を第一番号書換ユニット１２９を利用して書き換えるステップである。
【０１１２】
ステップ１１０３では、ステップ１１０２で処理していないと判断したエントリにある前述した取得手順に従って、中央制御機能１２１が、取得機能１２２を動作させるステップである。
【０１１３】
本実施の形態は、メモリ制御ユニット１１７を動作させる前に予め制御情報７０２を作成することにより、同じ第一番号を持つ観測信号の読み出しにおいて取得ユニット１１１を一回しか動作させないため、高速に動作させることが出来る。一般的な計算機等では、データを一括して（まとめて）読み出す方が効率的であるため、このように同じ第一番号を持つ観測信号の数に応じて、取得手順２のようにデータを逐一取り出すのか、取得手順１のように一括して取り出すのかを選択することで、取得にかかる時間を短縮することが出来る。さらに、取出機能１２２と第一番号書換機能１２９の動作を並列して行うことで、動作をより高速にすることができる。
【０１１４】
次に、本発明の第６の発明を実施するための形態を詳細に説明する。
【０１１５】
第６の発明の実施の形態は、半導体デバイスが複数で、それぞれの読出ユニットが別々の端子を利用して制御できる場合である。
【０１１６】
図１８に示すように第二の実施の形態から、半導体デバイス１００およびデバイス制御ユニット１１０が複数個の半導体デバイス１００．１−１００．Ｎおよびデバイス制御ユニット１１０．１−１１０．Ｎになった構成である。しかし、各ユニットの動作は変更がなく、各機能が、取得する記憶素子がどの半導体デバイス１００．１−１００．Ｎにあるのかを示す場所情報を利用するように動作を変更しただけである。本実施の形態の全体の動作も、半導体デバイス１００．１−１００．Ｎの位置情報をやり取りする以外は、最良の実施の形態と同じなので省略する。
【０１１７】
本実施の形態に示した方法により、本発明は複数の半導体デバイス１０１．１−１０１．Ｎに容易に適用することが可能である。また、本発明の実施の形態は半導体デバイスが一つの第３の実施の形態、第４の実施の形態、第５の実施の形態にも適用できることは容易に想像できる。また、本実施の形態では、取得ユニット１１１．１−１１１．Ｎは独立に動作させることができるため、このユニットを並列に動作させることで、より高速に読出動作を実現することができるという効果がある。
【０１１８】
次に、本発明の第７の発明を実施するための形態を詳細に説明する。
【０１１９】
第７の発明の実施の形態は、半導体デバイスが複数で、それぞれの読出ユニット１０１．１−１０１．Ｎが共通した端子によって制御されている場合で、たとえば、複数の半導体デバイス１００．１−１００．ＮをＪＴＡＧのチェーン接続した場合である。図１９に示すように第二の実施の形態から、半導体デバイスがＮ個１００．１−１００．Ｎと出力メモリ１１６．１−１１６．ＮがＮ個になり、選択ユニット１３００が追加された構成である。
【０１２０】
次に、出力メモリ１１６．１−１１６．Ｎ、選択ユニット１３００の動作について詳細に説明する。そのほかの機能の関しては、第６の実施の形態同様、半導体デバイス１００．１−１００．Ｎの位置情報を扱えるように機能およびユニット拡張する以外は第２の実施の形態と同じである。
【０１２１】
出力メモリ１１６．１−１１６．Ｎは読出ユニット１０１．１−１０１．Ｎを制御して値を読み出すために必要な入力端子の値が一サイクルごとに記録されているメモリで、出力メモリ１１６．Ｘ（Ｘは１からＮまでのいずれかの値）の内容が読出ユニット１０１．Ｘを制御するために利用される。ＪＴＡＧチェーン接続では、バイパス命令を利用してＪＴＡＧ端子から該当半導体デバイスにデータを送信するが、ＪＴＡＧ端子から該当半導体デバイスまでにある半導体デバイスの数によって入力すべきデータが異なるという特徴がある。逆に、該当半導体デバイスからの出力も該当半導体デバイスからＪＴＡＧ端子までを通過する半導体デバイスの数によって、出力されるタイミングも異なるという特徴がある。このため、各半導体デバイスに与える制御信号はＪＴＡＧチェーンにおける半導体デバイスの位置によって異なる。さらにＪＴＡＧはＴＤＩとＴＭＳ２つの信号を利用してデータを読出ユニットに与えるため、その値を計算するのには複雑な計算が求められる。本実施の形態では、この複雑な計算を避けるために、各半導体デバイス１００．１−１００．Ｎの値を読み出すために必要なデータを予め計算機等で計算しておき、その結果を半導体デバイスごとに出力メモリ１１６．１−１１６．Ｎに格納する。
【０１２２】
次に、選択ユニット１３００は、取得する記憶素子がある半導体デバイス１００．１−１００．Ｎの情報に応じて、その半導体デバイスに対応する出力メモリ１１６．１−１１６．Ｎのデータを選択し、読出ユニット１０１．１に入力するためのユニットである。該当する半導体デバイス以外のデータは無視されるため、ここでメモリ制御ユニット１１７が出力メモリ１１６．１−１１６．Ｎに供給するアドレス信号およびイネーブル信号はすべて共通な信号を与えることでより高速化が図れる。
【０１２３】
本実施の形態に示した方法により、本発明は複数の半導体デバイス１００．１−１００．ＮがＪＴＡＧチェーンで接続された場合でも高速に動作させることが可能となるという効果がある。
【０１２４】
次に、本発明の第８の発明を実施するための形態を詳細に説明する。
【０１２５】
第８の発明の実施の形態は、図２０，図２１を元に説明する。第８の発明の実施の形態は、図２０に示すようにその構成において、第一の実施の形態における出力メモリ１１７に代えて、メモリコネクタ２００４を配置し、そのメモリコネクタ２００４に不揮発性メモリ２００２が着脱自在に装着される構成が用いられる。不揮発性メモリ２００２は、予め装着までに、初期値情報１２７が格納される。このため、初期値情報１２７の内容を改めて再計算する必要がないので、初期値情報１２７を算出する時間が削減される効果を有する。
【０１２６】
続いて図２１を用いて第８の発明の実施の形態の動作について説明する。第一の実施の形態との違いでは、不揮発性メモリ２００２をメモリコネクタ２００４に装着するステップが新たに追加となることである（図２１のステップ３１０）。
【０１２７】
一方、出力メモリをセットするステップ４０１はなくなるため、この分だけステップに係る時間が削減される。それ以降のステップは、第一の実施例と同一である。
【０１２８】
次に、本実施の形態の効果について説明する。
【０１２９】
本第８の発明の実施の形態では、初期値の設定がいらず、予め装着することで、出力メモリ設定工程が時間的に削減されるという効果を有する。
【０１３０】
次に、具体的な実施例を用いて本発明を実施するための最良の形態の動作を説明する。
【０１３１】
図２２に示すように、一般的な計算機１４００に含まれるＣＰＵ１４０１とＲＡＭ１４０２とブリッジ１４０３とＨＤＤ１４０４と、計算機１４００と外部とのやり取りを行うための汎用バスＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｎｅｃｔ）バス１４０５と、そのＰＣＩバス１４０５に接続された半導体テスト装置１４０６と、ユーザＩ／Ｆ機能１３１を実現する入力ユニット１４０８と表示ユニット１４０９から構成される。
【０１３２】
計算機１４００では、全体制御機能１２０を実現し、計算機１４００に接続されたＨＤＤ１４０４には、全体制御機能１２０に関わるプログラムや、デバイス制御情報１２５、初期値情報１２７と第一位置情報１３２と第二位置情報１２８を格納する。もちろんこれらのデータはＲＡＭ１４０２上に保存されても良い。
【０１３３】
半導体テスト装置１４０６はデバイス制御ユニット１１０とクロック制御ユニット１１２とを実現した制御ＦＰＧＡ１４０７と、半導体デバイス１００と、から構成される。このとき、制御Ｉ／Ｆ１１３はＰＣＩバス１４０５とのデータ授受を行う。
【０１３４】
図１および図７、図１４を参照して、具体的な実施例の動作を説明する。
【０１３５】
はじめに、初期値の計算を開始する（図７のステップ３００）。このステップでは計算機１４００の電源投入後、ＣＰＵ１４０１は、初期値計算機能１２６を実現したプログラムを実行することで、ＲＡＭ１４０２やＨＤＤ１４０４に格納されたデバイス制御情報１２５から、初期値情報１２７および第一位置情報１３２と第二位置情報１２８を生成し、ＲＡＭ１４０２やＨＤＤ１４０４に格納する。
【０１３６】
次に、半導体デバイスの動作を開始する（図７のステップ４００）。一般的には、半導体テスト装置１４０６の動作開始（電源の投入）が行われる。たとえば半導体デバイス１００がＦＰＧＡで構成されている場合はＦＰＧＡのコンフィグレーションを行ったり、計算機側ではオペレーティングシステムを起動したり、ＰＣＩバス１４０５が計算機１４００から制御できるように制御ＦＰＧＡ１４０７に含まれるＰＣＩバスインターフェース回路の初期化を行うステップである。このステップ４００はステップ３００と同時であっても、その順序が逆になっても構わない。
【０１３７】
次に、出力メモリ１１６に初期値情報１２７の値をセットするステップである（図７のステップ４０１）。このステップでは、ＣＰＵ１４０１で実現されている中央制御機能１２１のプログラムが、ＲＡＭ１４０２やＨＤＤ１４０４に格納された初期値情報１２７を読み込み、そのデータを制御ＦＰＧＡ１４０７内部に実装された出力メモリ１１６にセットを行う。ただし、ＦＰＧＡ内部のメモリは初期値を持たせることが可能なため、予め初期値情報１２７に対応する情報を出力メモリの初期値としておいても良いＦＰＧＡ用データを作成しても良い。このようにすることでこのステップを省略することができる。
【０１３８】
次に、計算機１４００上のプログラムとして実現されている中央制御機能１２１は、第一番号書換機能１２９を実現させているプログラムを実行し、ＲＡＭ１４０２やＨＤＤ１４０４に記憶された第一番号を、ブリッジ１４０３とＰＣＩバス１４０５を経由して制御して、制御ＦＰＧＡ１４０７で実現されている出力メモリ１１６の第一番号に該当する部分の書換を行う（図７のステップ４０６）。
【０１３９】
次に、計算機１４００上のプログラムとして実現されている中央制御機能１２１は、制御ＦＰＧＡ内部で実現されているメモリ制御ユニット１１７をＰＣＩバス１４０５を経由して制御し、その動作を開始させる。これにより、出力メモリ１１６に格納された初期値情報１２７の値が半導体デバイス１００の読出ユニット１０１の入力端子に供給される。同時に、メモリ制御ユニット１１７は、半導体デバイス１００から出力された観測信号の値を入力メモリ１１５に蓄えるように制御を行う（図７のステップ４０７）。
【０１４０】
次に、計算機１４００上のプログラムとして実現されている中央制御機能１２１は、同じく計算機１４００上のプログラムとして実現されている取出機能１２２を制御して、入力メモリ１１５に格納されている観測信号の値を取得するように動作させる（図７のステップ４０８）。このとき取出機能１２２は、ＰＣＩバス１４０５を通じて、制御ＦＰＧＡ内部に実装されている入力メモリ１１５のデータを取得する。
【０１４１】
このように構成することで、動作速度に起因しない部分を計算機上のプログラムで実現し、動作速度に起因する部分だけをハードウェアで実現することで、ハードウェアも単純になり、より高速に動作させることが可能となる。
【０１４２】
幾つかの好適な実施の形態及び実施例に関連付けして本発明を説明したが、これら実施の形態及び実施例は単に実例を挙げて発明を説明するためのものであって、限定することを意味するものではないことが理解できる。本明細書を読んだ後であれば、当業者にとって等価な構成要素や技術による数多くの変更および置換が容易であることが明白であるが、このような変更および置換は、添付の請求項の真の範囲及び精神に該当するものであることは明白である。
【０１４３】
本発明によれば、半導体検証装置や、その他これに類推するシステムに適用可能である。
【０１４４】
以上、実施形態を参照して本発明を説明したが、本発明は上記実施形態に限定されるものではない。本発明の構成や詳細には、本発明の要旨を逸脱しない範囲で当業者が理解し得る各種の変形が可能である。
【０１４５】
この出願は、２００８年８月５日に出願された日本出願特願２００８−２０２４７５を基礎とする優先権を主張し、その開示のすべてをここに取り込む。
【符号の説明】
【０１４６】
１００  半導体デバイス
１０１  読出ユニット
１１０  デバイス制御ユニット
１１１  取得ユニット
１１２  クロック制御ユニット
１１３  制御Ｉ／Ｆ
１１５  入力メモリ
１１６  出力メモリ
１１７  メモリ制御ユニット
１２０  全体制御機能
１２１  中央制御機能
１２２  取出機能
１２３  番号検索機能
１２４  番号データベース
１２５  読出ユニット制御情報
１２６  初期値計算機能
１２７  初期値情報
１２８  第二位置情報
１２９  第一番号書換機能
１３０  番号情報
１３１  ユーザＩ／Ｆ機能
１３２  第一位置情報
【図１】
2010016300.tif 000003
【図２】
2010016300.tif 000004
【図３】
2010016300.tif 000005
【図４】
2010016300.tif 000006
【図５】
2010016300.tif 000007
【図６】
2010016300.tif 000008
【図７】
2010016300.tif 000009
【図８】
2010016300.tif 000010
【図９】
2010016300.tif 000011
【図１０】
2010016300.tif 000012
【図１１】
2010016300.tif 000013
【図１２】
2010016300.tif 000014
【図１３】
2010016300.tif 000015
【図１４】
2010016300.tif 000016
【図１５】
2010016300.tif 000017
【図１６】
2010016300.tif 000018
【図１７】
2010016300.tif 000019
【図１８】
2010016300.tif 000020
【図１９】
2010016300.tif 000021
【図２０】
2010016300.tif 000022
【図２１】
2010016300.tif 000023
【図２２】
2010016300.tif 000024
【手続補正書】
【提出日】平成21年7月7日(2009.7.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
第一番号と第二番号によって半導体デバイス内部にある複数の記憶素子が区別される前記半導体デバイスを用いて回路を検証する半導体検証装置であって、
前記半導体デバイス内部に実装されて、前記第一番号の値と読出手段制御情報に基づいて制御されることで、前記第一番号に対応する第一記憶素子の値を前記半導体デバイス外部へ出力する読出手段と、
前記読出手段の入力端子に接続し、前記読出手段制御情報に基づいてクロックサイクルごとに前記読出手段へ出力される値である初期値情報を格納した第一メモリと、
前記読出手段の出力端子に接続し、前記第一番号に対応する第一記憶素子の値を含む前記読出手段の出力端子におけるクロックサイクルごとの値を記録する第二メモリと、
前記第一メモリにおける前記第一番号の位置を示す第一位置情報と、前記第二番号ごとに対応する前記第二メモリにおける位置を格納した第二位置情報とを、前記読出手段制御情報に基づいて計算する初期値計算手段と、
前記第一番号のみを、前記第一位置情報に基づいて、前記第一メモリに書き込む第一番号書換手段と、
前記第二番号と前記第二位置情報に基づいて前記第二メモリにおける前記記憶素子の値が格納されている箇所を求め、そこから一回の取出動作で前記第二番号に対応する記憶素子の値を取り出す取出手段と、を備え、
前記第一メモリに格納された初期値情報を前記読出手段に入力し、前記読出手段から出力された前記第一記憶素子の値を前記第二メモリに記憶することを特徴とする半導体検証装置。
【請求項２】
前記半導体検証装置は、前記半導体デバイス内部の記憶素子の名前から第一番号と第二番号を求める番号検索手段をさらに有し、
前記番号検索手段が求めた前記第一番号と前記第二番号により動作することを特徴とする請求項１記載の半導体検証装置。
【請求項３】
前記半導体検証装置は、
前記第一メモリと前記第二メモリのアドレス端子およびイネーブル端子を制御することにより、前記第一メモリに格納された前記初期値情報を前記読出手段に供給し、前記読出手段から出力された前記記憶素子の値を前記第二メモリに蓄える制御を行うメモリ制御手段と、
前記半導体デバイスのクロック信号を制御するクロック制御手段と、
前記メモリ制御手段と前記クロック制御手段と前記第一番号書換手段と前記取出手段とを制御する中央制御手段とをさらに備え、
前記中央制御手段は、前記半導体デバイスへのクロック信号の供給が停止したときに、所望の記憶素子の第一番号および第二番号の入力を促し、前記第一番号書換手段により、前記第一番号を前記第一メモリに書き込み、前記メモリ制御手段を動作させ、前記取出手段により、前記第二メモリに記録された前記記憶素子の値を取得することを特徴とする請求項１記載の半導体検証装置。
【請求項４】
前記クロック制御手段は、
１）前記半導体デバイスの特定の出力端子の信号の値が特定の値になった場合、
２）前記半導体デバイスの特定の出力端子の信号の値が特定の値の範囲または範囲外になった場合、
３）前記半導体デバイス内部にあるソフトウェアによって動作する装置においてブレークが発生した場合、
４）１）、２）または３）いずれかが指定した回数発生した場合、
５）上記１）乃至４）の条件を組み合わせた場合
にクロック供給を停止する機能のうち、いずれか、もしくは、複数の機能を有することを特徴とする請求項３記載の半導体検証装置。
【請求項５】
前記中央制御手段は、前記第一番号の値が前回の第一番号と同じ場合は、前記第一書換手段の動作を省略し、さらに、前回記憶素子の値を取得した時からクロック信号を前記半導体デバイスに供給していない場合は、前記メモリ制御手段の動作をも省略して動作を行うことを特徴とする請求項３記載の半導体検証装置。
【請求項６】
前記半導体検証装置は、
前記取出機能に接続され、前記第一番号と前記第一番号に対応する全ての記憶素子の値を格納し、前記半導体デバイスにクロックが供給されたときはそれらの値を削除する記憶手段をさらに備え、
前記取出手段は、前記第一番号の値が前記記憶手段に記録されている場合は、前記記憶手段に記録されている値から前記記憶素子の値を取得し、前記第一番号の値が前記記憶手段に記録されていない場合は、前記第二メモリに格納された前記第一番号に対応する全ての記憶素子の値を取得し、前記第一番号に対応する全ての記憶素子の値を前記記憶手段に記録し、前記記憶手段に記録されている値から前記記憶素子の値を取得するように動作を変更したことを特徴とする請求項１記載の半導体検証装置。
【請求項７】
前記半導体検証装置は、
前記取得手段の動作を規定する取得手順に関する一つの情報と、一つの第一番号と、一つもしくは複数の第二番号から構成されるエントリを一つもしくは複数有する制御情報と、
前記制御情報の各エントリの処理を繰り返して、前記制御情報にある全てのエントリを処理する中央制御機能とをさらに備え、
前記取得手順の第一方法は、前記第二メモリに記録されたすべての値を取得した後、前記第二番号に対応するすべての値を計算する方法であり、
前記取得手順の第二方法は、前記第二メモリに記録された前記第二番号に対応する値を、そのエントリに存在する第二番号の数以下の取出動作で取得する方法であり、
前記取得手段は、前記取得手順によってその動作を規定されることを特徴とする請求項１記載の半導体検証装置。
【請求項８】
前記半導体検証装置は、
前記記憶素子の名前から第一番号と第二番号を求める番号検索手段と、
前記半導体検証装置で取得する記憶素子の名前を記載した観測信号リストを用いて前記制御情報を計算する制御情報計算手段とをさらに備え、
前記制御情報計算手段は、前記番号検索手段により、前記観測信号リストに記載された記憶素子の名前から第一番号と第二番号を取得し、同じ第一番号を持つすべての記憶素子を前記第一方法と前記第二方法で処理する時間を計算し、その第一番号と、その第一番号を持つ前記記憶素子からなるエントリを生成し、前記エントリは取得手順に関する情報と一つの第一番号と一つもしくは複数の第二番号と記憶素子から構成され、このエントリに対して複数の取得手順から一つが選択され、全ての観測信号を処理したかを判断して、前記観測信号リストに記載された全ての記憶素子の値を取得するための前記制御情報を生成することを特徴とする請求項７記載の半導体検証装置。
【請求項９】
前記半導体検証装置は、複数の半導体デバイスを含み、
前記第一番号と前記第二番号の他に前記半導体デバイスの場所を示す場所情報によって、複数の半導体デバイス内部に存在する記憶素子が区別される前記半導体デバイスから、それらの記憶素子の値を読み出すための装置であって、
半導体デバイスの各々に対して前記第一メモリと前記第二メモリと、
を備え、
前記初期値計算手段は、前記半導体デバイスごとに前記初期値情報及び前記第一位置情報と前記第二位置情報を計算し、
前記第一番号書換手段は、前記第一番号のみを、前記場所情報に対応する前記第一位置情報に基づいて、前記場所情報に対応する前記第一メモリに書込み、
前記取出手段は、前記第二番号と前記場所情報に対応する前記第二位置情報とに基づいて、前記場所情報に対応する前記第二メモリから、一回の取り出し動作で前記第二番号に対応する記憶素子の値を取り出す
ことを特徴とする請求項１または７記載の半導体検証装置。
【請求項１０】
前記半導体検証装置は、複数の半導体デバイスを含み、
前記第一番号と前記第二番号の他に前記半導体デバイスの場所を示す場所情報によって、複数の半導体デバイス内部に存在する記憶素子が区別され、前記半導体デバイスの読出手段がバウンダリスキャンテスト用の前記半導体デバイスから、それらの記憶素子の値を読み出すための装置であって、
ＪＴＡＧチェーン接続された前記半導体デバイスごとの前記第一メモリと、
すべての前記第一メモリの出力端子の値のいずれかを選択して、前記バウンダリスキャンテスト用の前記半導体デバイスの入力端子に供給する選択手段と、を備え、
前記初期値計算手段は、前記各半導体デバイスごとに前記初期値情報及び前記第一位置情報と前記第二位置情報を計算し、
前記第一番号書換手段は、前記第一番号のみを、前記場所情報に対応する前記第一位置情報に基づいて、前記場所情報に対応する前記第一メモリに書込み、
前記取出手段は、前記場所情報と前記場所情報に対応する前記第二位置情報とに基づいて、前記第二メモリから一回の取り出し動作で前記第二番号に対応する記憶素子の値を取り出し、
前記選択手段は、前記場所情報に対応する前記第一メモリの値を前記ＪＴＡＧチェーンの入力端子に供給する
ことを特徴とする請求項１または７記載の半導体検証装置。
【請求項１１】
前記半導体デバイスが前記読出手段を持つプログラマブルロジックデバイスであることを特徴とする請求項１乃至１０のいずれか１項に記載の半導体検証装置。
【請求項１２】
前記出力メモリは、脱着可能な不揮発性メモリであることを特徴とする請求項１乃至１１のいずれか１項に記載の半導体検証装置。
【請求項１３】
第一番号と第二番号によって半導体デバイス内部にある複数の記憶素子が区別される前記半導体デバイスを用いて回路を検証する方法であって、
読出機能により、
前記半導体デバイス内部に実装されて、前記第一番号の値と読出手段制御情報に基づいて制御されることで、前記第一番号に対応する前記記憶素子の値を前記半導体デバイス外部へ出力し、
前記読出機能により前記第二番号に対応する記憶素子の値を含むクロックサイクルごとの値を第二メモリに記録し、
初期値計算機能により、前記読出手段制御情報に基づいてクロックサイクルごとに前記読出機能へ出力される値である初期値情報を格納した第一メモリにおける前記第一番号の位置を示す第一位置情報と、前記第二番号ごとに対応する前記第二メモリにおける位置を格納した第二位置情報とを、計算し、
第一番号書換機能により、前記第一番号のみを、前記第一位置情報に基づいて、前記第一メモリに書き込み、
取出機能により、前記第二番号と前記第二位置情報に基づいて前記第二メモリにおける前記第二番号に対応する記憶素子の値が格納されている箇所を求め、そこから一回の取出動作で前記第二番号に対応する記憶素子の値を取り出し、
前記第一メモリに格納された初期値情報を前記読出機能へ入力し、前記読出機能から出力された前記第一記憶素子の値を前記第二メモリに記憶することを特徴とする半導体検証方法。
【請求項１４】
番号検索機能により、前記半導体デバイスは、さらに前記半導体デバイス内部の記憶素子の名前から第一番号と第二番号を求め、
前記番号検索機能により求めた前記第一番号と前記第二番号により動作することを特徴とする請求項１３記載の半導体検証方法。
【請求項１５】
前記半導体検証方法はさらに、
メモリ制御機能により、前記第一メモリと前記第二メモリのアドレス端子およびイネーブル端子を制御し、前記第一メモリに格納された前記初期値情報を供給し、前記読出機能により出力された前記記憶素子の値を前記第二メモリに蓄える制御を行い、
クロック制御機能により、前記半導体デバイスのクロック信号を制御し、
中央制御機能により、前記メモリ制御機能と前記クロック制御機能と前記第一番号書換機能と前記取出機能とを制御し、
前記中央制御機能は、前記半導体デバイスへのクロック信号の供給が停止したときに、所望の記憶素子の第一番号および第二番号の入力を促し、前記第一番号書換手段により、前記第一番号を前記第一メモリに書き込み、前記メモリ制御機能を作動させ、前記取出機能により、前記第二メモリに記録された前記記憶素子の値を取得することを特徴とする請求項１３記載の半導体検証方法。
【請求項１６】
前記クロック制御機能は、
１）前記半導体デバイスの特定の出力端子の信号の値が特定の値になった場合、
２）前記半導体デバイスの特定の出力端子の信号の値が特定の値の範囲または範囲外になった場合、
３）１）または２）が指定した回数発生した場合、
４）前記半導体デバイス内部にあるソフトウェアによって動作する装置においてブレークが発生した場合、
５）複数の信号に対して上記１）乃至４）の条件を組み合わせた場合
にクロック供給を停止する機能のうち、いずれか、もしくは、複数の機能を有する
ことを特徴とする請求項１５記載の半導体検証方法。
【請求項１７】
前記中央制御機能により、前記第一番号の値が前回の第一番号と同じ場合は、前記第一書換手段の動作を省略し、さらに、前回記憶素子の値を取得した時からクロック信号を前記半導体デバイスに供給していない場合は、前記メモリ制御手段の動作をも省略して動作を行うことを特徴とする請求項１５記載の半導体検証方法。
【請求項１８】
前記半導体検証方法はさらに、
記憶機能により、前記第一番号と前記第一番号に対応する全ての記憶素子の値を格納し、前記半導体デバイスにクロックが供給されたときはそれらの値を削除し、
前記取出機能により、前記第一番号の値が前記記憶手段に記録されている場合は、前記記憶手段に記録されている値から前記記憶素子の値を取得し、前記第一番号の値が前記記憶手段に記録されていない場合は、前記第二メモリに格納された前記第一番号に対応する全ての記憶素子の値を取得し、前記第一番号と前記第二番号に対応する全ての記憶素子の値を記憶手段に記録し、前記記憶手段に記録されている値から前記記憶素子の値を取得するように動作を変更したことを特徴とする請求項１３記載の半導体検証方法。
【請求項１９】
前記半導体検証方法は、
前記取得機能の作動を規定する取得手順に関する一つの情報と、一つの第一番号と、一つもしくは複数の第二番号から構成されるエントリを一つもしくは複数有する制御情報と、
前記制御情報の各エントリの処理を繰り返して、前記制御情報にある全てのエントリを処理する中央制御機能とをさらに備え、
前記取得手順の第一方法は、前記第二メモリに記録されたすべての値を取得した後、前記第二番号に対応するすべての値を計算する方法であり、
前記取得手順の第二方法は、前記第二メモリに記録された前記第二番号に対応する値を、そのエントリに存在する第二番号の数以下の取出動作で取得する方法であり、
前記取得手段は、前記取得手順によってその動作を規定されることを特徴とする請求項１３記載の半導体検証方法。
【請求項２０】
前記半導体検証方法は、さらに、
番号検索機能により、前記記憶素子の名前から第一番号と第二番号を求め、
制御情報計算機能により、前記半導体検証装置で取得する記憶素子の名前を記載した観測信号リストを用いて前記制御情報を計算し、
前記制御情報計算機能により、前記番号検索手段により、前記観測信号リストに記載された記憶素子の名前から第一番号と第二番号を取得し、同じ第一番号を持つすべての記憶素子を前記第一方法と前記第二方法で処理する時間を計算し、その第一番号と、その第一番号を持つ前記記憶素子からなるエントリを生成し、このエントリに対して複数の取得手順から一つが選択され、全ての観測信号を処理したかを判断して、前記観測信号リストに記載された全ての記憶素子の値を取得するための前記制御情報を生成することを特徴とする請求項１９記載の半導体検証方法。
【請求項２１】
前記半導体デバイス内部にあるソフトウェアによって動作する装置において予めブレークポイントを定めてブレークさせることを特徴とする請求項１３乃至２０のいずれか１項に記載の半導体検証方法。
【請求項２２】
第一番号と第二番号によって半導体デバイス内部にある複数の記憶素子が区別される前記半導体デバイスを用いて回路を検証する半導体検証プログラムであって、
前記半導体デバイス内部に実装されて、前記第一番号の値と読出手段制御情報に基づいて制御されることで、前記第一番号に対応する前記記憶素子の値を前記半導体デバイス外部へ出力する読出機能と、
前記読出機能により前記第二番号に対応する記憶素子の値を含むクロックサイクルごとの値を第二メモリに記録し、
前記読出手段制御情報に基づいてクロックサイクルごとに前記読出手段へ出力される値である初期値情報を格納した第一メモリにおける前記第一番号の位置を示す第一位置情報と、前記第二番号ごとに対応する前記第二メモリにおける位置を格納した第二位置情報とを計算する初期値計算機能と、
前記第一番号のみを、前記第一位置情報に基づいて、前記第一メモリに書き込む第一番号書換機能と、
前記第二番号と前記第二位置情報に基づいて前記第二メモリにおける前記第二番号に対応する記憶素子の値が格納されている箇所を求め、そこから一回の取出動作で前記第二番号に対応する記憶素子の値を取り出す取出機能とをコンピュータに実行させ、
前記第一メモリに格納された初期値情報を前記読出機能へ入力し、前記読出機能から出力された前記第一記憶素子の値を前記第二メモリに記憶することを特徴とする半導体検証プログラム。
【請求項２３】
前記半導体検証プログラムは、前記半導体デバイス内部の記憶素子の名前から第一番号と第二番号を求める番号検索機能を前記コンピュータにさらに実行させ、
前記番号検索機能により求めた前記第一番号と前記第二番号により動作することを特徴とする請求項２２記載の半導体検証プログラム。
【請求項２４】
前記半導体検証プログラムは、
前記第一メモリと前記第二メモリのアドレス端子およびイネーブル端子を制御し、前記第一メモリに格納された前記初期値情報を供給し、前記読出機能により出力された前記記憶素子の値を前記第二メモリに蓄える制御を行うメモリ制御機能と、
前記半導体デバイスのクロック信号を制御するクロック制御機能と、
前記メモリ制御機能と前記クロック制御機能と前記第一番号書換機能と前記取出機能とを制御する中央制御機能とを前記コンピュータにさらに実行させ、
前記中央制御機能は、前記半導体デバイスへのクロック信号の供給が停止したときに、所望の記憶素子の第一番号および第二番号の入力を促し、前記第一番号書換手段により、前記第一番号を前記第一メモリに書き込み、前記メモリ制御機能を作動させ、前記取出機能により、前記第二メモリに記録された前記記憶素子の値を取得することを特徴とする請求項２２記載の半導体検証プログラム。
【請求項２５】
前記クロック制御機能は、
１）前記半導体デバイスの特定の出力端子の信号の値が特定の値になった場合、
２）前記半導体デバイスの特定の出力端子の信号の値が特定の値の範囲または範囲外になった場合、
３）１）または２）が指定した回数発生した場合、
４）前記半導体デバイス内部にあるソフトウェアによって動作する装置においてブレークが発生した場合、
５）複数の信号に対して上記１）乃至４）の条件を組み合わせた場合
にクロック供給を停止する機能のうち、いずれか、もしくは、複数の機能を有することを特徴とする請求項２２記載の半導体検証プログラム。
【請求項２６】
前記中央制御機能により、前記第一番号の値が前回の第一番号と同じ場合は、前記第一書換手段の動作を省略し、さらに、前回記憶素子の値を取得した時からクロック信号を前記半導体デバイスに供給していない場合は、前記メモリ制御手段の動作をも省略して動作を行うことを特徴とする請求項２２記載の半導体検証プログラム。
【請求項２７】
前記半導体検証プログラムは、
前記第一番号と前記第一番号に対応する全ての記憶素子の値を格納し、前記半導体デバイスにクロックが供給されたときはそれらの値を削除する記憶機能を前記コンピュータに実行させ、
前記取出機能は、前記第一番号の値が前記記憶手段に記録されている場合は、前記記憶手段に記録されている値から前記記憶素子の値を取得し、前記第一番号の値が前記記憶手段に記録されていない場合は、前記第二メモリに格納された前記第一番号に対応する全ての記憶素子の値を取得し、前記第一番号と前記第二番号に対応する全ての記憶素子の値を記憶手段に記録し、前記記憶手段に記録されている値から前記記憶素子の値を取得するように動作を変更したことを特徴とする請求項２２記載の半導体検証プログラム。
【請求項２８】
前記半導体検証プログラムは、
前記取得機能の作動を規定する取得手順に関する一つの情報と、一つの第一番号と、一つもしくは複数の第二番号から構成されるエントリを一つもしくは複数有する制御情報の各エントリの処理を繰り返して、前記制御情報にある全てのエントリを処理する中央制御機能を前記コンピュータにさらに実行させ、
前記取得手順の第一方法は、前記第二メモリに記録されたすべての値を取得した後、前記第二番号に対応するすべての値を計算する方法であり、
前記取得手順の第二方法は、前記第二メモリに記録された前記第二番号に対応する値を、そのエントリに存在する第二番号の数以下の取出動作で取得する方法であり、
前記取得手段は、前記取得手順によってその動作を規定されることを特徴とする請求項２２記載の半導体検証プログラム。
【請求項２９】
前記半導体検証プログラムは、
前記記憶素子の名前から第一番号と第二番号を求める番号検索機能と、
前記半導体検証装置で取得する記憶素子の名前を記載した観測信号リストを用いて前記制御情報を計算する制御情報計算機能と、
前記番号検索手段により、前記観測信号リストに記載された記憶素子の名前から第一番号と第二番号を取得し、同じ第一番号を持つすべての記憶素子を前記第一方法と前記第二方法で処理する時間を計算し、その第一番号と、その第一番号を持つ前記記憶素子からなるエントリを生成し、このエントリに対して複数の取得手順から一つが選択され、全ての観測信号を処理したかを判断して、前記観測信号リストに記載された全ての記憶素子の値を取得するための前記制御情報を生成する前記制御情報計算機能とを前記コンピュータにさらに実行させることを特徴とする請求項２７記載の半導体検証プログラム。
【国際調査報告】
2010016300.tif 000025
2010016300.tif 000026
2010016300.tif 000027
2010016300.tif 000028