(57)【特許請求の範囲】
【請求項１】
第１番号及び第２番号によって半導体デバイスが備える複数の記憶素子を識別可能な、前記半導体デバイスを用いた半導体検証装置であって、
前記第１番号及び前記第１番号で指定される記憶素子から構成されるフレームの数を示すフレーム数に基づき、該第１番号から連続する該フレーム数に対応する記憶素子の値を外部に出力する読出ユニットと、
前記記憶素子毎の前記第１番号及び前記第２番号を示す番号データベース及び観測対象となる前記記憶素子を指定する観測信号リストに基づいて、前記観測対象となる前記記憶素子の値の読出方法を決定する制御情報を作成する制御情報計算部と、
前記制御情報に基づいて、前記読出ユニットから前記観測信号リストで指定された各記憶素子の値を取得する中央制御部と、
を有し、
前記制御情報計算部は、
前記観測信号リストに含まれる前記記憶素子を同じ第１番号を有するエントリとして分類し、全てのエントリを昇順もしくは降順で並べた時、１つのエントリを単独処理するのに必要な時間と、設定対象フレームに続くＮ−１個のエントリを連続して処理する時間との合計をＰとし、設定対象フレームとこれに続くＮ−１個のエントリからなる計Ｎ個のエントリを連続して処理する時間をＱとしたとき、Ｐ＜Ｑを満たす最も大きいＮを求め、設定対象フレームのフレーム数にＮ−１を設定し、
前記中央制御部は、
前記フレーム数単位で、前記読出ユニットから前記観測信号リストに含まれる前記記憶素子の値を読み出すことを特徴とする半導体検証装置。
【請求項２】
前記読出ユニットに供給する前記第１番号及び前記フレーム数を含む、前記記憶素子の値を読み出すための情報を保持する出力メモリと、
前記読出ユニットから出力された前記記憶素子の値を保持する入力メモリと、
前記半導体デバイスから前記記憶素子の値を読み出すための制御命令を含む初期値情報、前記出力メモリから前記読出ユニットに供給する情報における前記第１番号の格納位置を示す第１位置情報、前記出力メモリから前記読出ユニットに供給する情報における前記フレーム数の格納位置を示すフレーム数位置情報、前記読出ユニットから前記入力メモリに出力する情報における前記第２番号に対応する記憶素子毎の格納位置を示す第２位置情報を求める初期値計算部と、
を有し、
前記中央制御部は、
前記フレーム数単位で、前記出力メモリで保持している前記第１番号及び前記フレーム数のみを変更し、
前記第１位置情報及び前記フレーム数位置情報を含む前記初期値情報、並びに前記第２番号に基づいて、前記フレーム数単位で、前記入力メモリから前記記憶素子の値を取り出すことを特徴とする請求項１記載の半導体検証装置。
【請求項３】
前記半導体デバイスにクロックを供給する、または該クロックの供給を停止するクロック制御ユニットを備え、
前記中央制御部は、
（１）観測対象の記憶素子の値が所定の値になったとき、
（２）観測対象の記憶素子の値が所定の範囲内または範囲外になったとき、
（３）前記（１）または前記（２）に示す条件が予め指定された回数に到達したとき、
（４）前記半導体デバイスによる処理で所定のブレーク条件が発生したとき、
（５）複数の記憶素子の値で前記（１）〜（４）に示す条件が発生したとき、
前記クロック制御ユニットに、前記半導体デバイスに対するクロックの供給を停止させた後、前記記憶素子の値を読み出すことを特徴とする請求項２記載の半導体検証装置。
【請求項４】
第１番号及び第２番号によって半導体デバイスが備える複数の記憶素子を識別可能な、前記半導体デバイスを用いた半導体検証方法であって、
前記第１番号及び前記第１番号で指定される記憶素子から構成されるフレームの数を示すフレーム数に基づき、該第１番号から連続する該フレーム数に対応する記憶素子の値を外部に出力する読出ユニットと、
前記記憶素子毎の前記第１番号及び前記第２番号を示す番号データベース及び観測対象となる前記記憶素子を指定する観測信号リストに基づいて、前記観測対象となる前記記憶素子の値の読出方法を決定する制御情報を作成する制御情報計算部と、
前記制御情報に基づいて、前記読出ユニットから前記観測信号リストで指定された各記憶素子の値を取得する中央制御部と、
を備えておき、
前記制御情報計算部が、
前記観測信号リストに含まれる前記記憶素子を同じ第１番号を有するエントリとして分類し、全てのエントリを昇順もしくは降順で並べた時、１つのエントリを単独処理するのに必要な時間と、設定対象フレームに続くＮ−１個のエントリを連続して処理する時間との合計をＰとし、設定対象フレームとこれに続くＮ−１個のエントリからなる計Ｎ個のエントリを連続して処理する時間をＱとしたとき、Ｐ＜Ｑを満たす最も大きいＮを求め、設定対象フレームのフレーム数にＮ−１を設定し、
前記中央制御部が、
前記フレーム数単位で、前記読出ユニットから前記観測信号リストに含まれる前記記憶素子の値を読み出すことを特徴とする半導体検証方法。
【請求項５】
前記読出ユニットに供給する前記第１番号及び前記フレーム数を含む、前記記憶素子の値を読み出すための情報を保持する出力メモリと、
前記読出ユニットから出力された前記記憶素子の値を保持する入力メモリと、
前記半導体デバイスから前記記憶素子の値を読み出すための制御命令を含む初期値情報、前記出力メモリから前記読出ユニットに供給する情報における前記第１番号の格納位置を示す第１位置情報、前記出力メモリから前記読出ユニットに供給する情報における前記フレーム数の格納位置を示すフレーム数位置情報、前記読出ユニットから前記入力メモリに出力する情報における前記第２番号に対応する記憶素子毎の格納位置を示す第２位置情報を求める初期値計算部と、
を備えておき、
前記中央制御部が、
前記フレーム数単位で、前記出力メモリで保持している前記第１番号及び前記フレーム数のみを変更し、
前記第１位置情報及び前記フレーム数位置情報を含む前記初期値情報、並びに前記第２番号に基づいて、前記フレーム数単位で、前記入力メモリから前記記憶素子の値を取り出すことを特徴とする請求項４記載の半導体検証方法。
【請求項６】
前記半導体デバイスにクロックを供給する、または該クロックの供給を停止するクロック制御ユニットを備えておき、
前記中央制御部が、
（１）観測対象の記憶素子の値が所定の値になったとき、
（２）観測対象の記憶素子の値が所定の範囲内または範囲外になったとき、
（３）前記（１）または前記（２）に示す条件が予め指定された回数に到達したとき、
（４）前記半導体デバイスによる処理で所定のブレーク条件が発生したとき、
（５）複数の記憶素子の値で前記（１）〜（４）に示す条件が発生したとき、
前記クロック制御ユニットに、前記半導体デバイスに対するクロックの供給を停止させた後、前記記憶素子の値を読み出すことを特徴とする請求項５記載の半導体検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体デバイスを検証するための半導体検証装置および方法に関する。
【背景技術】
【０００２】
半導体技術の進歩により半導体デバイス（論理ＬＳＩ（Large Scale Integrated circuit））の集積度が年々向上し、大規模なシステムを１チップに搭載することが可能になってきている。そのため、半導体デバイスの製造コストが極めて高価になり、その製造には多くの時間を要するため、製造前に十分な検証を行うことが重要になる。
【０００３】
半導体デバイスの検証は設計の様々な段階（フェーズ）で行われる。設計プロセスでは初期設計における抽象的なレベルから最終段階における詳細な製造レベルまで多くの段階を含み、各レベルに応じた論理情報を取り扱う。例えば、初期設計段階では入出力関係程度を確定する抽象レベルの論理情報を取り扱い、機能設計段階では各論理部の機能を確定する機能レベルの論理情報を取り扱い、最終的な詳細設計段階では論理構造を確定する構造レベルの論理情報を取り扱う。一般に、上述した種々の設計段階の論理情報は、各種のハードウェア記述言語（ＳｙｓｔｅｍＣ, ＳｙｓｔｅｍＶｅｒｉｌｏｇ，Ｖｅｒｉｌｏｇ−ＨＤＬ、ＶＨＤＬ等）を用いて表現できる。
【０００４】
半導体デバイスや複数の半導体デバイスを使用したシステムの論理検証方法には、ソフトウェアシミュレータによるものと、ハードウェアエミュレータによるものと、実際の半導体デバイスを利用するものとがある。
【０００５】
ソフトウェアシミュレータは、ハードウェア記述言語で記述された論理情報をプログラムにしたがって処理するため、種々の設計段階において使用できる。さらに、回路動作についてもプログラムにしたがってシミュレーションできるため、ハードウェア記述言語における全ての変数の値等を容易に観測できるという利点を持っている。
【０００６】
一方、実際の半導体デバイスやハードウェアエミュレータを使用した論理検証方法は、ハードウェアを用いることでソフトウェアシミュレータよりも論理演算を高速に実行できる。ハードウェアエミュレータには、例えば検証対象となる回路をプログラム制御により構成できるＦＰＧＡ（Field Programmable Gate Array）やＦＰＩＤ（Field Programmable Interconnect Device）等が用いられる。
【０００７】
しかしながら、一般的な半導体デバイスやハードウェアエミュレータでは、コストやハードウェア等の制約から全ての信号を観測することが困難であり、回路動作に不具合が生じたときの解析が困難であるという問題がある。
【０００８】
このような問題を解決するための手法として、例えば特許文献１や特許文献２には、ＦＰＧＡが有するリードバックと呼ばれる機能を、ＪＴＡＧ（ＩＥＥＥ１１４９．１）を利用して制御することで、特別なハードウェアのサポートを必要とすることなくＦＰＧＡに実装された任意の記憶素子の値を読み出す手法が開示されている。このようなＦＰＧＡをハードウェアエミュレータとして用いることで、観測可能な信号に対する制約を低減できる。
【先行技術文献】
【特許文献】
【０００９】
【特許文献１】特開２００５-１７４３４９号公報
【特許文献２】特願２００６−５５３０６３号公報
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述したように、特許文献１や特許文献２は、ハードウェアエミュレータとして用いるＦＰＧＡを、該ＦＰＧＡが備える、ＪＴＡＧ（ＩＥＥＥ１１４９．１）に対応した回路を利用して制御することで、該ＦＰＧＡ内部の記憶素子の値を読み出す手法を開示している。
【００１１】
しかしながら、ＪＴＡＧは、少ないテスト用端子で半導体デバイスを検証できるようにシリアル通信方式を採用しており、さらに該少ないテスト用端子を用いて半導体デバイスの制御も行うため、検証対象の半導体デバイスやハードウェアエミュレータを所定の状態に設定するまでの制御手順が多くなり、所要の記憶素子の値を取得するまでに要する時間が長くなるという問題がある。
【００１２】
例えば、ハードウェアエミュレータとして米国ザイリンクス社のＶｉｒｔｅｘ−４ＦＰＧＡを用いる場合、該ＦＰＧＡ内の記憶素子の値を読み出すには、最初にＦＰＧＡをシャットダウン（ＦＰＧＡにＪＳＨＵＴＤＯＷＮコマンドを入力する）し、次に所要の記憶素子の値を読み出すためのコマンドを入力し、次にＦＰＧＡにクロックを供給して記憶素子の値を読出し、最後にＦＰＧＡをスタート（ＦＰＧＡにＪＳＴＡＲＴコマンドを入力する）させる必要がある。そのため、該ＦＰＧＡから複数の記憶素子の値を読み出す場合は、上記の制御手順を複数回繰り返す必要があり、ＦＰＧＡから記憶素子の値を読み出すのに要する時間が長くなってしまう。
【００１３】
特に、一般のハードウェアエミュレータは、ユーザからの指示入力を受けて、ユーザが指定した記憶素子からの読み出し動作を開始するため、ユーザが指示を入力してから所要の記憶素子の値が出力されるまでの時間が長いと、ハードウェアエミュレータに構築された検証対象の回路を解析し難いことになる。例えば半導体デバイスに供給するクロックのサイクル毎に所要の記憶素子の値を取得して信号波形を表示したい場合や所定範囲のメモリ領域から複数のデータを読み出す場合等では、より多くの時間を要してしまうために、この問題が顕著になる。
【００１４】
本発明は上述した背景技術が有する問題を解決するために成されたものであり、検証対象である半導体デバイスやハードウェアエミュレータが備える記憶素子の値を背景技術よりも高速に読み出すことが可能な半導体検証装置および方法を提供することを目的とする。
【課題を解決するための手段】
【００１５】
上記目的を達成するため本発明の半導体検証装置は、第１番号及び第２番号によって半導体デバイスが備える複数の記憶素子を識別可能な、前記半導体デバイスを用いた半導体検証装置であって、
前記第１番号及び前記第１番号で指定される記憶素子から構成されるフレームの数を示すフレーム数に基づき、該第１番号から連続する該フレーム数に対応する記憶素子の値を外部に出力する読出ユニットと、
前記記憶素子毎の前記第１番号及び前記第２番号を示す番号データベース及び観測対象となる前記記憶素子を指定する観測信号リストに基づいて、前記観測対象となる前記記憶素子の値の読出方法を決定する制御情報を作成する制御情報計算部と、
前記制御情報に基づいて、前記読出ユニットから前記観測信号リストで指定された各記憶素子の値を取得する中央制御部と、
を有し、
前記制御情報計算部は、
前記観測信号リストに含まれる前記記憶素子を同じ第１番号を有するエントリとして分類し、全てのエントリを昇順もしくは降順で並べた時、１つのエントリを単独処理するのに必要な時間と、設定対象フレームに続くＮ−１個のエントリを連続して処理する時間との合計をＰとし、設定対象フレームとこれに続くＮ−１個のエントリからなる計Ｎ個のエントリを連続して処理する時間をＱとしたとき、Ｐ＜Ｑを満たす最も大きいＮを求め、設定対象フレームのフレーム数にＮ−１を設定し、
前記中央制御部は、
前記フレーム数単位で、前記読出ユニットから前記観測信号リストに含まれる前記記憶素子の値を読み出すことを特徴とする。
【００１６】
一方、本発明の半導体検証方法は、第１番号及び第２番号によって半導体デバイスが備える複数の記憶素子を識別可能な、前記半導体デバイスを用いた半導体検証方法であって、
前記第１番号及び前記第１番号で指定される記憶素子から構成されるフレームの数を示すフレーム数に基づき、該第１番号から連続する該フレーム数に対応する記憶素子の値を外部に出力する読出ユニットと、
前記記憶素子毎の前記第１番号及び前記第２番号を示す番号データベース及び観測対象となる前記記憶素子を指定する観測信号リストに基づいて、前記観測対象となる前記記憶素子の値の読出方法を決定する制御情報を作成する制御情報計算部と、
前記制御情報に基づいて、前記読出ユニットから前記観測信号リストで指定された各記憶素子の値を取得する中央制御部と、
を備えておき、
前記制御情報計算部が、
前記観測信号リストに含まれる前記記憶素子を同じ第１番号を有するエントリとして分類し、全てのエントリを昇順もしくは降順で並べた時、１つのエントリを単独処理するのに必要な時間と、設定対象フレームに続くＮ−１個のエントリを連続して処理する時間との合計をＰとし、設定対象フレームとこれに続くＮ−１個のエントリからなる計Ｎ個のエントリを連続して処理する時間をＱとしたとき、Ｐ＜Ｑを満たす最も大きいＮを求め、設定対象フレームのフレーム数にＮ−１を設定し、
前記中央制御部が、
前記フレーム数単位で、前記読出ユニットから前記観測信号リストに含まれる前記記憶素子の値を読み出す方法である。
【発明の効果】
【００１７】
本発明によれば、検証対象である半導体デバイスやハードウェアエミュレータが備える記憶素子の値を背景技術よりも高速に読み出すことができる。
【図面の簡単な説明】
【００１８】
【図１】図１は、本実施形態の半導体検証装置の一構成例を示すブロック図である。
【図２】図２は、図１に示した半導体デバイスが備える記憶素子を識別するための情報の一例を示すテーブル図である。
【図３】図３は、図２に示した半導体デバイスが備える記憶素子を識別するための情報の具体例を示す模式図である。
【図４】図４は、図１に示した全体制御ユニットが備える読出ユニット制御情報の一例を示すテーブル図である。
【図５】図５は、図１に示した半導体デバイスの一構成例を示すブロック図である。
【図６】図６は、図１に示したデバイス制御ユニットの一構成例を示すブロック図である。
【図７】図６に示したデバイス制御ユニットの一動作例を示すタイミングチャートである。
【図８】図８は、図１に示した全体制御ユニットが備える観測信号リストの一例を示すテーブル図である。
【図９】図９は、図１に示した全体制御ユニットが備える制御情報計算部の処理手順の一例を示すフローチャートである。
【図１０】図１０は、図１に示した全体制御ユニットが備える制御情報の一例を示すテーブル図である。
【図１１】図１１は、図１に示した全体制御ユニットが備える中央制御部の処理手順の一例を示すフローチャートである。
【発明を実施するための形態】
【００１９】
次に本発明について図面を用いて説明する。
【００２０】
図１に示すように、本実施形態の半導体検証装置は、検証対象となる半導体デバイス１００から記憶素子の値を読み出すデバイス制御ユニット１１０と、半導体デバイス１００にクロックを供給する、またはクロックの供給を停止するクロック制御ユニット１４０と、デバイス制御ユニット１１０及びクロック制御ユニット１４０の動作を制御する全体制御ユニット１２０とを有する。
【００２１】
全体制御ユニット１２０は、例えばプログラムにしたがって所要の処理を実行するＣＰＵやＤＳＰと、情報が格納される記憶装置と、ユーザＩ／Ｆとを備えたコンピュータで実現できる。また、デバイス制御ユニット１１０は、例えばＦＰＧＡ、ＦＰＩＤあるいは論理回路やメモリ等を備えたＬＳＩ等で実現できる。クロック制御ユニット１４０は、上記コンピュータやＬＳＩ等で実現できる。なお、クロック制御ユニット１４０の機能は全体制御ユニット１２０あるいはデバイス制御ユニット１１０に含まれていてもよい。
【００２２】
クロック制御ユニット１４０は、全体制御ユニット１２０の指示にしたがって半導体デバイス１００にクロックを供給する、またはクロックの供給を停止する。
【００２３】
半導体デバイス１００は、クロック制御ユニット１４０から供給されるクロックに同期して動作する検証対象の半導体デバイスまたはハードウェアエミュレータであり、第１番号と第２番号とにより一意に識別可能な複数の記憶素子を備えている。半導体デバイス１００が備える記憶素子とは、フリップフロップ回路、ラッチ回路、メモリ、レジスタ等を指す。また、半導体デバイス１００は、デバイス制御ユニット１１０を介して記憶素子の値を読み出し可能にするための読出ユニット１０１を備えている。なお、本実施形態では、読出ユニット１０１とデバイス制御ユニット間でシリアル信号によりデータを送受信するため、読出ユニット１０１及びデバイス制御ユニット１１０には、パラレルデータをシリアル信号に変換するためのＰ／Ｓ変換回路（不図示）及びシリアル信号をパラレルデータに変換するためのＳ／Ｐ変換回路（不図示）を備えている。
【００２４】
以下では、上記第１番号で指定される１つまたは複数の記憶素子の値を１フレームと定義する。例えば、各記憶素子に対して、図２に示すように第１番号及び第２番号が割り当てられている場合、第１番号０ｘ１０２４で指定される記憶素子Ａ及びＤの値で１フレームが構成され、第１番号０ｘ０３８４で指定される記憶素子Ｂの値で１フレームが構成され、第１番号０ｘ２５７８で指定される記憶素子Ｃの値で１フレームが構成される。図２に示すような半導体デバイス１００が備える全ての記憶素子を識別するための情報は、全体制御ユニット１２０が備える、後述する番号データベース１２４に格納される。
【００２５】
例えば、半導体デバイス１００がハードウェアエミュレータであり、該ハードウェアエミュレータとして上記米国ザイリンクス社のＶｉｒｔｅｘ−４ＦＰＧＡを用いる場合、図２に示すような各記憶素子を識別するための情報はLogic Location Fileに格納されているため、該ファイルを用いて番号データベース１２４を構築すればよい。Ｖｉｒｔｅｘ−４ＦＰＧＡのLogic Location Fileについては、米国ザイリンクス社が発行している「Ｖｉｒｔｅｘ−４コンフィグレーションガイド」（以下、非特許文献１と称す）のチャプター８、図８−８に記載されている。
【００２６】
図３は、上記Ｖｉｒｔｅｘ−４コンフィグレーションガイド記載されたLogic Location Fileの一部を抜粋して示した図である。図３の第３カラムが上記第１番号（Frame Address）に相当し、第４カラムが上記第２番号（Frame Offset）に相当する。図３の第７カラムは記憶素子に付与された名前である。
【００２７】
全体制御ユニット１２０は、半導体デバイス１００から読み出しユニット１０１を介して記憶素子の値を読み出す場合、上記第１番号及びフレーム数と共に読出ユニット制御情報１２５を指定する。読出ユニット制御情報１２５は、半導体デバイス１００の種類に対応した、該半導体デバイス１００から記憶素子の値を読み出すための制御命令等を示す情報である。図４は、この読出ユニット制御情報の一例を示すテーブル図である。
【００２８】
図４に示す「デバイス停止命令」は、半導体デバイス１００の動作を停止させるコマンドである。「第１番号命令」は、読出ユニット１０１に第１番号を入力するためのコマンドである。また、図４に示す「フレーム数指定命令」は、連続して読み出すフレーム数を指定するためのコマンドである。「読出命令」は、上記「第１番号命令」で指定された第１番号に対応する記憶素子の値を読出ユニット１０１から出力させるためのコマンドである。「デバイス開始命令」は、半導体デバイス１００を動作状態に戻すためのコマンドである。
【００２９】
例えば、半導体デバイス１００がハードウェアエミュレータであり、該ハードウェアエミュレータとして上記米国ザイリンクス社のＶｉｒｔｅｘ−４ＦＰＧＡを用いる場合、上記デバイス停止命令はＪＳＨＵＴＤＯＷＮコマンドに相当し、上記デバイス開始命令はＪＳＴＡＲＴコマンドに相当する。Ｖｉｒｔｅｘ−４ＦＰＧＡの場合、１フレームの大きさは１３１２ビットである。また、本実施形態の読出ユニット制御情報１２５として利用可能な、記憶素子の値を読み出すための制御手順を示す情報は、上記非特許文献１のチャプター８、テーブル８−５に記載されている。
【００３０】
なお、半導体デバイス１００が備える読出ユニット１０１は、第１番号に対応する１つまたは複数の記憶素子を読み出すための機能、及び複数の第１番号に対応する各記憶素子の値を連続して読み出すための機能を備えていればよく、その読み出し方式を限定するものではない。
【００３１】
図５に示すように、半導体デバイス１００は、複数の記憶素子１０００．１．１−１０００．Ｍ．Ｎから読み出された値を選択するためのＭ個の第１のセレクタ１００１．１−１００１．Ｍと、第１のセレクタ１００１．１−１００１．Ｍで選択された値から第１番号で指定された記憶素子の値を選択するための第２のセレクタ１００１と、読出ユニット１０１の指示にしたがって第１のセレクタ１００１．１−１００１．Ｍに記憶素子１０００．１．１−１０００．Ｍ．Ｎから読み出された値を順次選択させるための選択信号を出力する第１のインクリメンタ１００２と、読出ユニット１０１の指示にしたがって第２のセレクタ１００１に第１番号で指定された記憶素子の値を選択させるための選択信号を出力する第２のインクリメンタ１００３とを備えている。第２のセレクタ１００１から出力された記憶素子の値は読出ユニット１０１を介してデバイス制御ユニット１１０へ出力される。ここで、Ｍは半導体デバイス１００から読み出す各フレームに対して、例えば昇順に付与する番号（フレーム番号）であり、Ｎは１フレームに含まれる記憶素子のビット数である。
【００３２】
読出ユニット１０１は、デバイス制御ユニット１１０から第１番号命令及びフレーム数指定命令を受け取ると、第１番号命令に含まれる第１番号からフレーム数指定命令に含まれるフレーム数に対応する記憶素子の値を取得する。
【００３３】
例えば、第１番号（Ｘ）に対応する記憶素子１０００．Ｘ（１≦Ｘ≦Ｍ）．１〜１０００．Ｘ．Ｎから、第１番号（Ｘ＋１）に対応する記憶素子１０００．Ｘ＋１．１〜１０００．Ｘ＋１．Ｎの２フレーム分の値を読み出す場合、読出ユニット１０１は、最初に第１のインクリメンタ１００２の値を「１」に設定し、第１のセレクタ１００１．１〜１００１．Ｍに記憶素子１０００．１．１〜１０００．Ｍ．１の値を出力させる。
【００３４】
次に、読出ユニット１０１は、第２のインクリメンタ１００３に第１番号（Ｘ）を設定し、第２のセレクタ１００１に記憶素子１０００．Ｘ．１の値を出力させる。また、読出ユニット１０１は、第１のインクリメンタ１００２の値を「２」に増加させ、第２のセレクタ１００１に記憶素子１０００．Ｘ．２の値を出力させる。
【００３５】
読出ユニット１０１は、第１のインクリメンタ１００２の値が「Ｎ」になるまで同様の処理を繰り返すことで、１フレームの記憶素子１０００．Ｘ．１〜１０００．Ｘ．Ｎの値を第２のセレクタ１００１に出力させ、その結果を保持してデバイス制御ユニット１１０に出力する。
【００３６】
また、読出ユニット１０１は、第２のインクリメンタ１００３の値を「Ｘ＋１」に増加させ、上記と同様に、第１のインクメンタ１００２の値を「１」から「Ｎ」まで増加させて第１番号（Ｘ＋１）に対応する記憶素子１０００．（Ｘ＋１）．１〜１０００．（Ｘ＋１）．Ｎの値を第２のセレクタ１００１に出力させ、その結果を保持してデバイス制御ユニット１１０に出力する。
【００３７】
図１に示すように、デバイス制御ユニット１１０は、読出ユニット１０１を介して半導体デバイス１００から記憶素子の値を読み出すための取得ユニット１１１と、全体制御ユニット１２０と取得ユニット１１１間で情報を送受信するための制御Ｉ／Ｆ１１３とを備えている。
【００３８】
取得ユニット１１１は、読出ユニット１０１から出力された記憶素子の値をクロックサイクル毎に保持する入力メモリ１１５と、読出ユニット１０１に対してクロックサイクル毎に供給する、所要の記憶素子から値を読み出すための各種命令、第１番号、フレーム数等の情報を保持する出力メモリ１１６と、読出ユニット１０１から出力された記憶素子の値を入力メモリ１１５に保持させると共に、出力メモリ１１６から読出ユニット１０１に上記各種命令、第１番号、フレーム数等の情報を供給するメモリ制御ユニット１１７とを備えている。入力メモリ１１５及び出力メモリ１１６は読出ユニット１０１に直接接続されている。
【００３９】
制御Ｉ／Ｆ１１３は、全体制御ユニット１２０と取得ユニット１１１間で情報やコマンドの送受信を可能にするためのインタフェース回路である。全体制御ユニット１２０を、例えばＣＰＵを備えたコンピュータで実現する場合、制御Ｉ／Ｆ１１３は、該コンピュータと情報やコマンドを送受信するための、例えばＰＣＩ、ＰＣＩｅｘｐｒｅｓｓバス、ＵＳＢ、ＩＥＥＥ１３９４、Ｅｔｈｅｒｎｅｔ（登録商標）等に対応したインタフェースである。
【００４０】
図６はデバイス制御ユニットが備える入力メモリ、出力メモリ及びメモリ制御ユニットの接続関係を示す接続図であり、図７は図６に示したデバイス制御ユニットの動作例を示すタイミングチャートである。
【００４１】
図６に示すように、メモリ制御ユニット１１７は、イネーブル信号生成手段、アドレス信号生成手段及びクロック信号生成手段を備えている。
【００４２】
図７に示すクロック５０１は、読出ユニット１０１、入力メモリ１１５及び出力メモリ１１６に供給される信号であり、これらのユニットが同期して動作するために必要な信号である。クロック５０１は図６に示したクロック信号生成手段で生成される。
【００４３】
図７に示すアドレス信号５０２は、読出ユニット１０１から出力された記憶素子の値を格納する入力メモリ１１５のアドレス、読出ユニット１０１に供給する情報が格納された出力メモリ１１６のアドレスを示す信号である。アドレス信号５０２は図６に示したアドレス信号生成手段で生成される。図６及び図７は、入力メモリ１１５と出力メモリ１１６とに同一のアドレス信号を供給する例を示しているが、デバイス制御ユニット１１０や読出ユニット１０１の処理速度が低下しなければ個別のアドレス信号を供給してもよい。
【００４４】
イネーブル信号５０３は、全体制御ユニットからの指示にしたがって入力メモリ１１５に対する情報の格納動作及び出力メモリ１１６からの情報の読み出し動作を有効にするための信号である。イネーブル信号５０３は図６に示したイネーブル信号生成手段で生成される。図６及び図７は、入力メモリ１１５と出力メモリ１１６とに同一のイネーブル信号を供給する例を示しているが、デバイス制御ユニット１１０や読出ユニット１０１の処理速度が低下しなければ個別のイネーブル信号を供給してもよい。
【００４５】
図７に示す５０４は、出力メモリ１１６から読出ユニット１０１へ供給される情報の一例を示している。読出ユニット１０１は、この情報５０４に含まれる第１番号及びフレーム数で指定される記憶素子の値を入力メモリ１１５に出力する。
【００４６】
なお、図６では、入力メモリ１１５、出力メモリ１１６及び読出ユニット１０１に供給するクロック５０１をメモリ制御ユニット１１７内で生成する例を示しているが、クロック５０１はメモリ制御ユニット１１７の外部で生成して入力メモリ１１５、出力メモリ１１６及び読出ユニット１０１に供給してもよい。
【００４７】
また、図７では、クロック５０１の１サイクル毎に１つの情報５０４を読出ユニット１０１に対して入力または出力する動作例を示しているが、読出ユニット１０１にはクロック５０１の複数サイクル毎に１つの情報５０４を入力または出力してもよい。
【００４８】
また、図７では、クロック５０１の１サイクル毎にアドレス信号をインクリメントする例を示しているが、アドレス信号はクロック５０１の１サイクル毎にデクリメントしてもよい。
【００４９】
また、図７では、入力メモリ１１５、出力メモリ１１６及び読出ユニット１０１が正論理で動作する例を示しているが、入力メモリ１１５、出力メモリ１１６及び読出ユニット１０１は負論理で動作してもよい。
【００５０】
このように読出ユニット１０１に直接接続される出力メモリ１１６及び入力メモリ１１５を備え、出力メモリ１１６から読出ユニット１０１にクロック５０１の１サイクル毎に情報を入力し、読出ユニット１０１から入力メモリ１１５にクロック５０１の１サイクル毎に記憶素子の値を格納するため、例えば動作が比較的遅いＦＰＧＡ等でデバイス制御ユニット１１０を実現しても、読出ユニット１０１から比較的高速に記憶素子の値を読み出すことができる。
【００５１】
なお、上述したように、本実施形態では、読出ユニット１０１とデバイス制御ユニット間でシリアル信号によりデータを送受信することを想定しているが、読出ユニット１０１が複数ビット単位でデータを入出力できる構成である場合、入力メモリ１１５及び出力メモリ１１６には、読出ユニット１０１と入出力ビット数が一致するメモリを用いるとよい。その場合、入力メモリ１１５及び出力メモリ１１６にて使用しないメモリ領域が無くなるため、メモリ領域の無駄を無くすことができる。また、シリアル信号をパラレルデータに変換するＳ／Ｐ変換回路やパラレルデータをシリアル信号に変換するＰ／Ｓ変換回路が不要になるため、半導体デバイス１００内の記憶素子の値の読み出し時間を短縮できる。読出ユニット１０１が複数ビット単位でデータを入出力できる構成である場合、入力メモリ１１５及び出力メモリ１１６には、読出ユニット１０１よりも入出力ビット数が多いメモリを用いてもよい。その場合でも、上記Ｓ／Ｐ変換回路やＰ／Ｓ変換回路が不要になる。
【００５２】
また、図１では本実施形態の半導体検証装置により１つの半導体デバイス１００を検証する構成例を示しているが、複数の半導体ユニット１００が備える各読出ユニット１０１に対応して複数の取得ユニット１１１を備えていれば、１台の半導体検証装置により複数の半導体デバイス１００を検証することも可能である。
【００５３】
図１に示すように、全体制御ユニット１２０は、ユーザＩ／Ｆ部１３１、番号データベース１２４、制御情報計算部１３５、初期値計算部１２６、第１番号書換部１２９、フレーム数書換部１３３、取出部１２２及び中央制御部１２１を備えている。
【００５４】
中央制御部１２１は、全体制御ユニット１２０が備えるユーザＩ／Ｆ部１３１、制御情報計算部１３５、初期値計算部１２６、取出部１２２、第１番号書換部１２９及びフレーム数書換部１３３の動作を制御すると共に、デバイス制御ユニット１１０及びクロック制御ユニット１４０の動作を制御する。
【００５５】
なお、中央制御部１２１は、クロック制御ユニット１４０を制御することで、例えば半導体デバイス１００から出力された記憶素子の値に基づいて半導体デバイス１００へ供給しているクロックを停止させる機能（ブレーク設定機能）、及び半導体デバイス１００にユーザが指定するサイクル数のクロックを供給させる機能を備えていてもよい。その場合、１クロックサイクル単位で記憶素子の値を観測することが可能であり、所要のイベント発生時点で半導体デバイス１００の動作を停止できる。
【００５６】
また、中央制御部１２１は、半導体デバイス１００がプログラムにしたがって処理を実行するＣＰＵやＤＳＰ等を備えている場合、該ＣＰＵやＤＳＰのプログラムカウンタを利用してクロック制御ユニット１４０によるクロックの供給／停止を制御してもよく、メモリの特定のアドレスに対する書き込みや読み出しを検出したときにクロック制御ユニット１４０によるクロックの供給／停止を制御してもよく、ブレークポイントへの到達回数を所定数になった時点でクロック制御ユニット１４０によるクロックの供給／停止を制御してもよい。
【００５７】
以上、まとめると半導体デバイス１００に対するクロックの停止条件としては、
（１）観測対象の信号が所定の値になったとき、
（２）観測対象の信号の値が所定の範囲内または範囲外になったとき、
（３）（１）または（２）の条件が指定された回数に到達したとき、
（４）半導体デバイス１００がプログラムにしたがって動作するＣＰＵやＤＳＰ等を備えている場合、該ＣＰＵやＤＳＰによる処理で所定のブレーク条件が発生したとき、
（５）複数の信号に対して上記（１）〜（４）の条件のいずれかが発生したとき、等が考えられる。
【００５８】
また、半導体デバイス１００がハードウェアエミュレータである場合、検証対象の回路が変更可能であり、半導体デバイス１００の任意の信号を用いてブレーク条件（クロックの供給を停止する条件）を設定できるため、より詳細な検証作業が可能になる。
【００５９】
番号データベース１２４は、上述したように第１番号、第２番号及び記憶素子名を含む、半導体デバイス１００内の各記憶素子を一意に識別するための情報（第１番号及び第２番号）が格納される。
【００６０】
ユーザＩ／Ｆ部１３１は、ユーザによる記憶素子の指定入力を受けつける機能、及び記憶素子から読み出した値をユーザに提示する機能を備えている。ユーザＩ／Ｆ部１３１を用いてユーザが指定した観測対象の記憶素子は中央制御部１２１の制御により観測信号リスト１３４として保存される。全体制御ユニット１２０をコンピュータで実現する場合、ユーザＩ／Ｆ部１３１は、例えばキーボードやマウス等の入力装置のインタフェース、並びにディスプレイやプリンタ等の出力装置のインタフェースに相当する。
【００６１】
全体制御ユニット１２０は、例えばキーボードを用いてユーザが入力した観測対象の記憶素子名を受け付けてもよく、ディスプレイに表示された記憶素子の一覧からユーザがマウスを用いて選択した観測対象の記憶素子名を受け付けてもよい。また、全体制御ユニット１２０は、観測対象として、ユーザによるバス信号全体の指定やメモリ全体の指定を可能にしてもよい。さらに、全体制御ユニット１２０は、読み出した記憶素子の値を１ビット毎に表示してもよく、バス信号全体を表示してもよく、１６進数表示や１０進数表示、記憶素子の値を波形表示する機能等を備えていてもよい。
【００６２】
制御情報計算部１３５は、番号データベース１２４及び観測信号リスト１３４に基づいて、ユーザが指定した観測対象となる各記憶素子の値の読出順序を示す制御情報１３６を生成する。この制御情報計算部１３５の動作について図８〜図１０を用いて具体的に説明する。
【００６３】
例えば、ユーザによって記憶素子Ｐ，Ｑ，Ｒ，Ｓ，Ｔ，Ｕ，Ｖ，Ｗが観測対象に指定され、図８に示すような観測信号リスト１３４が生成されたとする。この場合、制御情報計算部１３５は、図９に示したフローチャートにしたがって図１０に示すような制御情報１３６を生成する。
【００６４】
図９に示すように、制御情報計算部１３５は、まず観測信号リスト１３４で指定された各記憶素子を同じ第１番号毎に分類し（ステップＳ９００）、第１番号の昇順にソートして（ステップＳ９０１）、第１番号毎のエントリを作成する。各エントリには、１つの第１番号、フレーム数、１つまたは複数の第２番号、第１番号及び第２番号で識別される記憶素子の名前が含まれる。ステップＳ９０１までの処理では各エントリのフレーム数を「０」に設定しておく。エントリ毎のフレーム数は次のステップＳ９０２で決定する。
【００６５】
制御情報計算部１３５は、ステップＳ９０２にて、１つのフレームのみ読み出すか、または複数のフレームを連続して読み出すかを決定し、その決定結果に基づいて制御情報１３６にフレーム数を挿入する（ステップＳ９０２）。
【００６６】
フレーム数は、以下のように決定する。
【００６７】
例えば、１フレームを単独で読み出す時間をＣとし、設定対象であるフレームとそれに続くフレームを連続して読み出す時間をＤとしたとき、２×Ｃ＜Ｄであれば、設定対象であるフレーム数を「１」に設定する。
【００６８】
一方、２×Ｃ＞Ｄである場合は、設定対象であるフレームとそれに続く２つのフレームを連続して読み出した場合の時間をＥとし、Ｃ＋Ｄ＜Ｅであれば、設定対象であるフレームのフレーム数を（「２番目のフレームの第１番号」−「設定対象のフレームの第１番号」＋１）として、設定対象であるフレームとそれに続く１つのフレームを連続して読み出すようにする。
【００６９】
一方、Ｃ＋Ｄ＞Ｅである場合は、設定対象であるフレームとそれに続く３つのフレームを連続して読み出す時間をＦとし、Ｃ＋Ｅ＜Ｆであれば、設定対象であるフレーム数を（「３番目のフレームの第一番号」−「設定対象のフレームの第一番号」＋１）として、設定対象であるフレームとそれに続く２つのフレームを連続して読み出すように設定する。以上の処理を繰り返すことで、最初に読み出すフレームに対応する各エントリのフレーム数を設定する。
【００７０】
すなわち、観測信号リストに含まれる記憶素子を同じ第１番号を有するエントリとして分類し、全てのエントリを昇順もしくは降順で並べた時、１つのエントリを単独処理するのに必要な時間と、設定対象フレームに続くＮ−１個のエントリを連続して処理する時間との合計をＰとし、設定対象フレームに続くＮ個のエントリを連続して処理する時間をＱとしたときに、Ｐ＜Ｑを満たす最も大きいＮを求め、設定対象フレームのフレーム数にＮ−１を設定すればよい。
【００７１】
初期値計算部１２６は、半導体デバイス１００が対応するテスト用の規格（ＪＴＡＧ等）及び上記読出ユニット制御情報１２５に基づいて、出力メモリ１１６で最初に保持する、半導体デバイス１００に対応した記憶素子の値を読み出すための制御命令を含む初期値情報１２７と、出力メモリ１１６から読出ユニット１０１に供給する情報における第１番号の格納位置（ビット位置）を示す第１位置情報１３２と、出力メモリ１１６から読出ユニット１０１に供給する情報におけるフレーム数の格納位置（ビット位置）を示すフレーム数位置情報１３０と、読出ユニット１０１から入力メモリ１１５に出力する情報における第２番号に対応する記憶素子毎の格納位置（ビット位置）を示す第２位置情報１２８とを求める。
【００７２】
例えば、第１番号及びフレーム数が３２ビットで表され、図４に示した各命令が１２ビット（第１番号命令及びフレーム数指定命令は１２＋３２＝４４ビット）であり、各命令が図４に示した値で表される場合、初期値情報１２７は、０ｘ３００＿００５＿ＸＸＸＸＸＸＸＸ＿００２＿ＹＹＹＹＹＹＹＹ＿００１＿３０１となる。ここでは、各命令を１６進数（４ビット）で表記している。また、ＸＸＸＸＸＸＸＸは、制御情報１３６にしたがって半導体デバイス１００から記憶素子の値がフレーム単位で読み出されるたびに書き換えられる第１番号を示し、ＹＹＹＹＹＹＹＹは、制御情報１３６にしたがって半導体デバイス１００から記憶素子の値がフレーム単位で読み出されるたびに書き換えられるフレーム数である。出力メモリ１１６にはＭＳＢ  Ｆｉｒｓｔで情報が入力される。
【００７３】
また、この例では、第１位置情報１３２は、出力メモリ１１６から読出ユニット１０１にシリアル信号として出力される情報のうち、２４ビット〜５６ビットに挿入され、フレーム数位置情報は６８〜１００ビットに挿入される。
【００７４】
第２位置情報１２８は、第２番号及び読み出した時のフレーム数を入力として、各記憶素子の値を保持する入力メモリ１１５のビット位置を求めるための表である。例えば、１回の読み出し動作であれば、何フレーム連続して読み出しても入力メモリ１１５のアドレス０から順に書き込まれる装置である場合、１フレームのサイズが１３１２ビット（固定）であれば、入力メモリ１１５のアドレス０には「１番目のフレーム」の「第２番号０」の記憶素子の値が書き込まれ、アドレス１には「１番目のフレーム」の「第２番号１」の記憶素子の値が書き込まれ、アドレス１３１１には「１番目のフレーム」の「第２番号１３１１」の記憶素子の値が書き込まれ、アドレス１３１２には「２番目のフレーム」の「第２番号０」の記憶素子の値が書き込まれ、アドレス２６２３には「２番目のフレーム」の「第２番号１３１１」の記憶素子の値が書き込まれる。このような対応表を第２位置情報１２８として記録する。実際のデバイスでは、読出ユニット制御情報１２５やデバイス制御ユニット１１１の構成に依存し、このように順序良く並んでいない場合もあるため、読み出す時間を短縮するためには、このような対応表を第２位置情報１２８として用意する必要がある。
【００７５】
ところで、検証対象となる半導体デバイス１００がＪＴＡＧに対応している場合、ＴＤＩ（Test Data In）及びＴＭＳ（Test Mode Select）信号を用いて、半導体デバイス１００の状態に応じたテスト用のデータを読出ユニット１０１に供給する必要があり、さらに半導体デバイス１００の構成も考慮する必要があるため、第１位置情報１３２及びフレーム数位置情報１３３を求めるには複雑な計算が必要になる。
【００７６】
そこで、本実施形態では、第１位置情報１３２及びフレーム数位置情報１３３を除く初期値情報１２７及び第２位置情報は予め計算して出力メモリ１１６に格納しておき、第１番号及びフレーム数のみ書き換える。このようにすることで、読出ユニット１０１から制御情報１３６に含まれるフレーム数単位で記憶素子の値を読み出す度に書き換える出力メモリ１１６の値を最小限に抑制できる。したがって、複数の記憶素子の値を読み出すのに必要な時間を短縮できる。
【００７７】
第１番号書換部１２９は、第１位置情報１３２を用いて、出力メモリ１１６で保持している第１番号の値を、中央制御部１２１から指示された値に書き換える。中央制御部１２１は、制御情報１３６に基づいて書き換える第１番号の値を第１番号書換部１２９に指定する。
【００７８】
第１番号書換部１２９は、中央制御部１２１から第１番号の書き換えが指示されると、第１位置情報１３１が示す出力メモリ１１６のビット（上記例の“ＸＸＸＸＸＸＸＸ”であり、初期値情報１２７の２４ビット〜５６ビット目）の値を、指定された第１番号の値に書き換える。
【００７９】
なお、出力メモリ１１６を３２ビットの１ポートメモリで実現している場合、出力メモリ１１６には３２ビット単位でデータを書き込むため、初期値情報１２７の２４ビット〜５６ビット目に位置する第１番号を一度に書き換えることはできない。その場合、初期値情報１２７の２４ビットから３２ビット目の値を書き換える処理と、３３ビットから５６ビット目の値を書き換える処理の２回の書き換え処理が必要になる。但し、出力メモリ１１６に対する初期値情報の格納位置を工夫すれば、出力メモリ１１６に格納されている第１番号を１度に書き換えることも可能である。例えば、初期値情報をアドレス「８」から格納し、全体制御ユニット１２０がアドレス「８」から出力メモリ１１６にアクセスするように制御すれば、第１番号は３３ビットから６４ビットに格納されるため、第１番号を１度の書き換え処理で全て書き換えることができる。
【００８０】
一方、出力メモリ１１６をデュアルポートメモリで実現している場合、出力メモリ１１６から読出ユニット１０１への書き込み処理と、出力メモリ１１６における第１番号の書き換え処理とを並行して実施できる。そのため、出力メモリ１１６に対する第１番号の書き換え時間を見かけ上無くすことが可能であり、半導体デバイス１００から記憶素子の値をより高速に読み出すことができる。
【００８１】
フレーム数書換部１３３は、フレーム数位置情報１３０を用いて、出力メモリ１１６で保持しているフレーム数の値を、中央制御部１２１から指示された値に書き換える。中央制御部１２１は、制御情報１３６に基づいて書き換えるフレーム数の値をフレーム数書換部１３３に指定する。フレーム数書換部１３３によるフレーム数の書き換え処理は、上述した第１番号書換部１２９による第１番号の書き換え処理と同様に実行すればよいため、ここではその説明を省略する。
【００８２】
取出部１２２は、前回の読み出し動作で指定したフレーム数と第２位置情報とを用いて、中央制御部１２１からの指示にしたがってフレーム毎の記憶素子の値を入力メモリ１１５から取得する。
【００８３】
取出部１２２は、制御情報１３６に基づき中央制御部１２１から読み出す処理が指定されると、処理に記載されたフレーム数と処理に記載された各第２番号を用いて第２位置情報１２８から入力メモリ１１５のビット位置を求め、そのビット位置の値を制御Ｉ／Ｆ１１３を介して読み出す。例えば図８に示した記憶素子Ｑの値を読み出す場合、入力メモリ１１５には第１番号０ｘＤ、０ＸＥ及び０ｘＦに対応する３つのフレームの値が連続して格納されているため、取出部１２２は、入力メモリ１１５のアドレス２６２５（＝２×１３１２＋１）の値を読み出せばよい。
【００８４】
なお、入力メモリ１１５をデュアルポートメモリで実現する場合、入力メモリ１１５の入出力データのビット幅と制御Ｉ／Ｆ１１３で転送可能なデータのビット幅とを一致させておくことが好ましい。その場合、全体制御ユニット１２０とデバイス制御ユニット１１０間で最も効率良くデータを送受信することができる。例えば、制御Ｉ／Ｆ１１３が３２ビットのＰＣＩバスであれば、入力メモリ１１５に入出力データのビット幅が３２ビットのメモリを用いれば、全体制御部１２０とデバイス制御ユニット１１０間で最も効率よくデータを送受信できる。
【００８５】
次に、図１１を用いて本実施形態の半導体検証装置の動作について説明する。
【００８６】
中央制御部１２１は、初期値計算部１２６により、読出ユニット制御情報１２５を用いて、初期値情報１２７、第１位置情報１３２、第２位置情報１２８及びフレーム数位置情報１３０をそれぞれ生成する（ステップＳ１１０１）。
【００８７】
次に、中央制御部１２１は、初期値情報１２７を制御Ｉ／Ｆ１１３を介して出力メモリ１１６に書き込む（ステップＳ１１０２）。
【００８８】
ユーザがユーザＩ／Ｆ部１３１を用いて半導体デバイス１００の観測対象の記憶素子を指定すると、中央制御部１２１は、指定された記憶素子から成る観測信号リスト１３４を作成し、保存する（ステップＳ１１０３）。
【００８９】
次に、中央制御部１２１は、観測信号リスト１３４及び番号データベース１２４に基づいて、制御情報計算部１３５に制御情報１３６を作成させる。このとき、制御情報１３６には、ユーザＩ／Ｆ機能１３１を用いてユーザが指定した、クロック制御ユニット１４０から半導体デバイス１００に供給するクロックサイクル数等を含めてもよい。半導体デバイス１００やクロック制御ユニット１４０がブレーク機能を有している場合、制御情報１３６にはユーザＩ／Ｆ機能１３１を用いてユーザが指定したブレーク条件等を含めてもよい。
【００９０】
次に、中央制御部１２１は、クロック制御ユニット１４０を制御することで、半導体デバイス１００にクロックを供給し、半導体デバイス１００を動作させる（ステップＳ１１０４）。
【００９１】
ユーザがユーザＩ／Ｆ１３１を用いて半導体デバイス１００に対するクロックの供給停止を指示した場合、クロック制御ユニット１４０から予め指定されたサイクル数のクロックが供給された場合、または所定のブレーク条件が発生した場合、中央制御部１２１は、クロック制御ユニット１４０を制御して、半導体デバイス１００へ供給しているクロックを停止させる（ステップＳ１１０５）。
【００９２】
中央制御部１２１は、クロック制御ユニット１４０により半導体デバイス１００に対するクロックの供給を停止させると、制御情報１３６にしたがって半導体デバイス１００の所要の記憶素子の値を読み出す（ステップＳ１１０６）。続いて、制御情報１３６の全てのエントリで指定された記憶素子の値の読み出しが終了したか否かを判定し（ステップＳ１１０７）、制御情報１３６の全てのエントリに記載された記憶素子の値の読み出しが終了していない場合は、ステップＳ１１０６の処理に戻ってステップＳ１１０６及びステップＳ１１０７を繰り返す。
【００９３】
ここで、上記ステップＳ１１０６で実行する記憶素子の値の読出処理について、図１０に示した制御情報１３６を備えている例で具体的に説明する。
【００９４】
ステップＳ１１０６において、中央制御部１２１は、まず図１０の第１処理で指定された第１番号（０ｘ１）及びフレーム数（１）を取得する。
【００９５】
次に、中央制御部１２１は、第１番号書換部１２９を用いて出力メモリ１１６で保持している第１番号をステップＳ１１０６で取得した値に書き換え、フレーム数書換部１３３を用いて出力メモリ１１６で保持しているフレーム数をステップＳ１１０６で取得した値に書き換える。
【００９６】
次に、中央制御部１２１は、メモリ制御ユニット１１７を用いて出力メモリ１１６で保持している情報を読出ユニット１０１へ供給し、読出ユニット１０１から出力された記憶素子の値を入力メモリ１１５に格納する。
【００９７】
図１０の第１処理で指定された記憶素子の値が入力メモリ１１５に格納されると、中央制御部１２１は、制御情報１３６の第１処理に含まれるフレーム数及び第２番号を取出部１２２に供給する。取得部１２２は、第２位置情報１２８を用いて、中央制御部１２１から指定されたフレーム数及び第２番号より、第１処理で読み出す記憶素子の値が格納された入力メモリ１１５のビット位置を求め、制御Ｉ／Ｆ１１３を介して、該ビット位置から第２番号に対応する記憶素子の値を取得する。
【００９８】
以上の処理を制御情報１３６に含まれる残りの処理（図８に示す例では第２処理２及び第３処理）についても繰り返し、制御情報１３６の全てのエントリで指定された記憶素子の値の読み出しが終了すると、読み出した値をユーザＩ／Ｆ部１３１を用いて出力装置から出力し、ユーザに提示する。
【００９９】
中央制御部１２１は、制御情報１３６の全てのエントリで指定された記憶素子の値の読み出しが終了すると、半導体デバイス１００の動作を続行するか否かをユーザＩ／Ｆ部１３１を用いて出力装置から出力し、ユーザに提示する（ステップＳ１１０８）。
【０１００】
中央制御部１２１は、ユーザがユーザＩ／Ｆ部１３１を用いて動作停止を指示した場合は半導体デバイス１００の動作を停止させ、ユーザが動作の続行を指示した場合はステップＳ１１０３の処理に戻ってステップＳ１１０３からステップＳ１１０８の処理を繰り返す。
【０１０１】
本実施形態によれば、ユーザによって指定された、観測対象である記憶素子の値を読み出すのに必要な情報を出力メモリ１１６に格納しておき、出力メモリ１１６から半導体デバイス１００が備える読出ユニット１０１に該情報を供給し、該情報にしたがって読出ユニット１０１で読み出された記憶素子の値を入力メモリ１１５に格納しつつ、次に読み出す記憶素子を指定するのに必要な情報として、出力メモリ１１６で保持した第１番号及びフレーム数の値のみ書き換える。そのため、所要の記憶素子の値を読み出すのに必要な処理の時間を短縮できる。
【０１０２】
また、各フレームの値を読み出す際に、総読み出し時間が最も短くなるように、制御情報計算部１３５にて複数のフレームの値を個別に読み出すか連続して読み出すかを計算し、該計算結果に基づくフレーム数を含む制御情報１３６を作成し、該制御情報にしたがって半導体デバイス１００の記憶素子の値を読み出すため、複数の記憶素子の値の読み出しに必要な総読み出し時間を最小にできる。
【０１０３】
例えば、半導体デバイス１００がハードウェアエミュレータであり、該ハードウェアエミュレータとして上記米国ザイリンクス社のＶｉｒｔｅｘ−４ＦＰＧＡを用いる場合、３つのフレームの値を個別に読み出す場合は、ＦＰＧＡのシャットダウン、ＦＰＧＡからの記憶素子の値の読み出し、ＦＰＧＡの開始処理を３回実行する必要がある。それに対して、３つのフレームの値を連続して読み出せば、１回の読み出し処理に要する時間は長くなるが、ＦＰＧＡのシャットダウン及び開始処理は１回で済むため、３つのフレームの値の読み出しに必要な総読み出し時間を短縮できる。さらに、上記Ｖｉｒｔｅｘ−４ＦＰＧＡでは、読み出す先頭フレームが常にダミーフレーム（情報がないフレーム）であるため、例えば複数の記憶素子の値をフレーム毎に個別に読み出すと、ダミーフレームを３度読み出す必要がある。それに対して、３つのフレームの値を連続して読み出せばダミーフレームを１度読み出すだけで済むため、３つのフレームの値の読み出しに必要な総読み出し時間を短縮できる。
【０１０４】
また、本実施形態の半導体検証装置では、デバイス制御ユニット１１０が備える出力メモリ１１６及び入力メモリ１１５を検証対象である半導体デバイス１００の読出ユニット１０１に直接接続できるため、出力メモリ１１６から読出ユニット１０１に対して１クロックサイクル毎に記憶素子の値を読み出すためのコマンドや読み出す記憶素子を指定する情報を供給することが可能であり、読出ユニット１０１から入力メモリ１１５に対して１クロックサイクル毎に半導体デバイス１００から読み出された値を格納できる。そのため、半導体デバイス１００からの記憶素子の値の読み出し処理を簡易に制御できる。
【０１０５】
したがって、本実施形態の半導体検証装置によれば、検証対象である半導体デバイスやハードウェアエミュレータが備える記憶素子の値を背景技術よりも高速に読み出すことができる。そのため、半導体デバイスやハードウェアエミュレータの検証作業をより効率よく実施できる。
【符号の説明】
【０１０６】
１００    半導体デバイス
１０１    読出ユニット
１１０    デバイス制御ユニット
１１１    取得ユニット
１１３    制御Ｉ／Ｆ部
１１５    入力メモリ
１１６    出力メモリ
１１７    メモリ制御ユニット
１２０    全体制御ユニット
１２１    中央制御部
１２２    取出部
１２４    番号データベース
１２６    初期値計算部
１２９    第１番号書換部
１３１    ユーザＩ／Ｆ部
１３３    フレーム数書換部
１３５        制御情報計算部
１３６        制御情報
１４０        クロック制御ユニット
【図１】
0005471406.tif 000002
【図２】
0005471406.tif 000003
【図３】
0005471406.tif 000004
【図４】
0005471406.tif 000005
【図５】
0005471406.tif 000006
【図６】
0005471406.tif 000007
【図７】
0005471406.tif 000008
【図８】
0005471406.tif 000009
【図９】
0005471406.tif 000010
【図１０】
0005471406.tif 000011
【図１１】
0005471406.tif 000012