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