(57)【要約】【課題】  テストプログラムをシミュレーションにより 100％実行することができる仮想テスタ、及びこの仮想テスタをコンピュータ上でハードウェア記述言語により実現したテスト装置、更にテストプログラムにバグが存在するか否かを容易に判定可能な半導体集積回路用テストシステム、テストプログラムの完成度を確実に検証することが可能な半導体集積回路用テストプログラムの検証方法を提供する。【解決手段】  仮想ＣＰＵ２（プログラム実行回路）と仮想ＲＡＭ３（プログラム格納回路）とをハードウェア記述言語によりコンピュータ上でモデル化し、テストプログラムの全てを仮想ＲＡＭ３に格納し、テスト対象のハードウェア記述言語でモデル化された半導体集積回路をテストする。半導体集積回路に良品を使用することにより、テストプログラム中のバグの存否が判明する。【選択図】        図１
2005032191.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェア記述言語によりモデル化された半導体集積回路をテスト用プログラムに従ってコンピュータ上で動作させてテストするようにハードウェア記述言語によりモデル化した仮想テスタにおいて、
前記テストプログラムを格納するための機能をハードウェア記述言語によりモデル化したテストプログラム格納回路と、
前記テストプログラムを実行するための機能をハードウェア記述言語によりモデル化したテストプログラム実行回路と、
前記ハードウェア記述言語によりモデル化されたテストプログラム格納回路及びテストプログラム実行回路を制御するための機能をハードウェア記述言語によりモデル化した制御回路と
を含むことを特徴とする仮想テスタ。
【請求項２】
前記テストプログラム格納回路に格納されているテストプログラムに基づいて電源電圧値及び／又は電流値を表わすアナログ値を生成する機能をハードウェア記述言語によりモデル化した電源回路を更に含むことを特徴とする請求項１に記載の仮想テスタ。
【請求項３】
前記テストプログラムの実行に応じて前記半導体集積回路に電流及び／又は電圧値を印加する機能と、前記テストプログラムの実行に応じて前記半導体集積回路が出力した電流及び／又は電圧値を表わすアナログ値を取り込む機能と、取り込んだアナログ値を前記テストプログラム格納回路に格納されているテストプログラムで処理する機能とをハードウェア記述言語によりモデル化した電流電圧測定回路を更に含むことを特徴とする請求項２に記載の仮想テスタ。
【請求項４】
前記制御回路を、ハードウェア記述言語によりモデル化されたＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）のハードウェア記述言語及び／又はネットリストを用いて構成してあることを特徴とする請求項１乃至３のいずれかに記載の仮想テスタ。
【請求項５】
ハードウェア記述言語によりモデル化された半導体集積回路をハードウェア記述言語によりモデル化された仮想テスタによりコンピュータ上でテストプログラムに従って動作させてテストする半導体集積回路用テストシステムにおいて、
前記仮想テスタは、前記テストプログラムを格納するための機能をハードウェア記述言語によりモデル化したテストプログラム格納回路と、前記テストプログラムを実行するための機能をハードウェア記述言語によりモデル化したテストプログラム実行回路と、前記ハードウェア記述言語によりモデル化されたテストプログラム格納回路及びテストプログラム実行回路を制御するための機能をハードウェア記述言語によりモデル化した制御回路とを含み、前記半導体集積回路を前記テストプログラムに従って所定のテスト状態に設定するための条件設定信号を発生する機能をハードウェア記述言語によりモデル化してあり、
前記条件設定信号が与えられることにより与えられた条件設定信号に応じた第１及び第２の電流及び／又は電圧値が設定される機能と、前記半導体集積回路が前記条件設定信号に応じて前記所定のテスト状態に設定されたか否かを検出する機能と、該検出結果に応じて前記第１又は第２の電流及び／又は電圧値を生成する機能とをハードウェア記述言語によりモデル化した状態検出回路を含み、
前記仮想テスタは、前記状態検出回路が生成した電流及び／又は電圧値に基づいて前記テスト用プログラム中のバグの存否を判定するようにしてあること
を特徴とする半導体集積回路用テストシステム。
【請求項６】
前記仮想テスタは、前記テストプログラム格納回路に格納されているテストプログラムに基づいて電源電圧値及び／又は電流値を表わすアナログ値を生成する機能をハードウェア記述言語によりモデル化した電源回路を更に含み、
前記状態検出回路は、前記電源回路が生成した電源電圧値及び／又は電流値のアナログ値が前記テストプログラムに基づいて生成されるべき電源電圧値及び／又は電流値を表わすアナログ値に対して所定範囲内であるか否かを判定する機能をハードウェア記述言語によりモデル化してあり、
前記仮想テスタは、前記状態検出回路の判定結果に基づいて前記テスト用プログラム中のバグの存否を判定するようにしてあること
を特徴とする請求項５に記載の半導体集積回路用テストシステム。
【請求項７】
前記状態検出回路は、前記半導体集積回路が前記テストプログラムの実行に応じて出力した電流及び／又は電圧値を表わすアナログ値を取り込む機能と、前記テストプログラムの実行に応じて出力されるべき電流及び／又は電圧値に対して所定範囲内であるか否かを判定する機能と、該判定結果に応じて前記第１又は第２の電流及び／又は電圧値を生成する機能とをハードウェア記述言語によりモデル化してあり、
前記電流電圧測定回路は、前記状態検出回路が生成した電流及び／又は電圧値を表わすアナログ値に基づいて前記テスト用プログラム中のバグの存否を判定するようにしてあること
を特徴とする請求項６に記載の半導体集積回路用テストシステム。
【請求項８】
前記半導体集積回路はハードウェア記述言語によりモデル化された複数の論理ブロックを含み、
前記複数の論理ブロックの内のテスト対象の論理ブロックの前後の論理ブロックでの動作に応じて前記テスト対象の論理ブロックへ前記仮想テスタからの信号を入力させる機能と、入力された信号に応じて出力される電流及び／又は電圧値を読み出す機能とをハードウェア記述言語によりモデル化した信号伝達回路を含むことを特徴とする請求項５乃至７のいずれかに記載の半導体集積回路用テストシステム。
【請求項９】
前記半導体集積回路が前記テストプログラムにより良品であると判定されるようにハードウェア記述言語によりモデル化されていることを特徴とする請求項５乃至８のいずれかに記載の半導体集積回路用テストシステム。
【請求項１０】
前記制御回路を、ハードウェア記述言語によりモデル化されたＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）のハードウェア記述言語及び／又はネットリストを用いて構成してあることを特徴とする請求項５乃至９のいずれかに記載の半導体集積回路用テストシステム。
【請求項１１】
ハードウェア記述言語によりコンピュータ上でモデル化された半導体集積回路をテスト用プログラムに従ってコンピュータ上で動作させてテストする仮想テスタをハードウェア記述言語によりコンピュータ上でモデル化したテスト装置において、
前記テストプログラムを格納するための機能をハードウェア記述言語によりコンピュータ上でモデル化したテストプログラム格納手段と、
前記テストプログラムを実行するための機能をハードウェア記述言語によりコンピュータ上でモデル化したテストプログラム実行手段と、
前記テストプログラム格納手段及びテストプログラム実行手段を制御するための機能をハードウェア記述言語によりコンピュータ上でモデル化した制御手段と
を備えることを特徴とするテスト装置。
【請求項１２】
前記テストプログラム格納手段に格納されているテストプログラムに基づいて電源電圧値及び／又は電流値を表わすアナログ値を生成する機能をハードウェア記述言語によりコンピュータ上でモデル化した電源手段を更に備えたことを特徴とする請求項１１に記載のテスト装置。
【請求項１３】
前記テストプログラムの実行に応じて前記半導体集積回路に電流及び／又は電圧値を印加する機能と、前記テストプログラムの実行に応じて前記半導体集積回路が出力した電流及び／又は電圧値を表わすアナログ値を取り込む機能と、取り込んだアナログ値を前記テストプログラム格納手段に格納されているテストプログラムで処理する機能とをハードウェア記述言語によりコンピュータ上でモデル化した電流電圧測定手段を更に備えたことを特徴とする請求項１２に記載のテスト装置。
【請求項１４】
前記制御手段を、ハードウェア記述言語によりコンピュータ上でモデル化されたＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）のハードウェア記述言語及び／又はネットリストを用いて構成してあることを特徴とする請求項１１乃至１３のいずれかに記載のテスト装置。
【請求項１５】
ハードウェア記述言語によりコンピュータ上でモデル化された半導体集積回路をテスト用プログラムに従ってコンピュータ上で動作させてテストする仮想テスタをハードウェア記述言語によりコンピュータ上でモデル化したテスト装置を備えた半導体集積回路用テストシステムにおいて、
前記テスト装置は、前記テストプログラムを格納するための機能をハードウェア記述言語によりコンピュータ上でモデル化したテストプログラム格納手段と、前記テストプログラムを実行するための機能をハードウェア記述言語によりコンピュータ上でモデル化したテストプログラム実行手段と、前記テストプログラム格納手段及びテストプログラム実行手段を制御するための機能をハードウェア記述言語によりコンピュータ上でモデル化した制御手段と、前記半導体集積回路を前記テストプログラムに従って所定のテスト状態に設定するための条件設定信号を発生する機能をハードウェア記述言語によりコンピュータ上でモデル化した手段とを有し、
前記条件設定信号が与えられることにより与えられた条件設定信号に応じた第１及び第２の電流及び／又は電圧値が設定される機能と、前記半導体集積回路が前記条件設定信号に応じて前記所定のテスト状態に設定されたか否かを検出する機能と、該検出結果に応じて前記第１又は第２の電流及び／又は電圧値を生成する機能とをハードウェア記述言語によりコンピュータ上でモデル化した状態検出手段を備え、
前記テスト装置は、前記状態検出手段が生成した電流及び／又は電圧値に基づいて前記テスト用プログラム中のバグの存否を判定するようにしてあること
を特徴とする半導体集積回路用テストシステム。
【請求項１６】
前記テスト装置は、前記テストプログラム格納手段に格納されているテストプログラムに基づいて電源電圧値及び／又は電流値を表わすアナログ値を生成する機能をハードウェア記述言語によりコンピュータ上でモデル化した電源手段を更に有し、
前記状態検出手段は、前記電源手段が生成した電源電圧値及び／又は電流値のアナログ値が前記テストプログラムに基づいて生成されるべき電源電圧値及び／又は電流値を表わすアナログ値に対して所定範囲内であるか否かを判定する機能をハードウェア記述言語によりコンピュータ上でモデル化した手段を有し、
前記テスト装置は、前記状態検出手段の判定結果に基づいて前記テスト用プログラム中のバグの存否を判定するようにしてあること
を特徴とする請求項１５に記載の半導体集積回路用テストシステム。
【請求項１７】
前記状態検出手段は、前記半導体集積回路が前記テストプログラムの実行に応じて出力した電流及び／又は電圧値を表わすアナログ値を取り込む機能と、前記テストプログラムの実行に応じて出力されるべき電流及び／又は電圧値に対して所定範囲内であるか否かを判定する機能と、該判定結果に応じて前記第１又は第２の電流及び／又は電圧値を生成する機能とをハードウェア記述言語によりコンピュータ上でモデル化した手段を有し、
前記電流電圧測定手段は、前記状態検出手段が生成した電流及び／又は電圧値を表わすアナログ値に基づいて前記テスト用プログラム中のバグの存否を判定するようにしてあること
を特徴とする請求項１６に記載の半導体集積回路用テストシステム。
【請求項１８】
前記半導体集積回路はハードウェア記述言語によりコンピュータ上でモデル化された複数の論理ブロックを含み、
前記複数の論理ブロックの内のテスト対象の論理ブロックの前後の論理ブロックでの動作に応じて前記テスト対象の論理ブロックへ前記仮想テスタからの信号を入力させる機能と、入力された信号に応じて出力される電流及び／又は電圧値を読み出す機能とをハードウェア記述言語によりコンピュータ上でモデル化した信号伝達手段を有すること
を特徴とする請求項１５乃至１７のいずれかに記載の半導体集積回路用テストシステム。
【請求項１９】
前記半導体集積回路が前記テストプログラムにより良品であると判定されるようにハードウェア記述言語によりコンピュータ上でモデル化されていることを特徴とする請求項１５乃至１８のいずれかに記載の半導体集積回路用テストシステム。
【請求項２０】
前記制御手段を、ハードウェア記述言語によりコンピュータ上でモデル化されたＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）のハードウェア記述言語及び／又はネットリストを用いて構成してあることを特徴とする請求項１５乃至１９のいずれかに記載の半導体集積回路用テストシステム。
【請求項２１】
半導体集積回路テストシステムとテスト対象の半導体集積回路とをハードウェア記述言語によりモデル化してコンピュータ上で動作させることにより、前記半導体集積回路用のテストプログラムをデバッグするための半導体集積回路用テストプログラムの完成度を検証する方法において、
検証対象の半導体集積回路用テストプログラムにより良品と判定されるようにハードウェア記述言語によりモデル化された半導体集積回路と、検証対象の半導体集積回路用テストプログラムにより不良品と判定されるようにハードウェア記述言語によりモデル化された半導体集積回路とを用意し、
前記検証対象の半導体集積回路用テストプログラムに従って、前記良品と判定されるようにハードウェア記述言語によりモデル化された半導体集積回路及び不良品と判定されるようにハードウェア記述言語によりモデル化された半導体集積回路をテストし、
前記良品と判定されるようにハードウェア記述言語によりモデル化された半導体集積回路が良品と判定され、前記不良品と判定されるようにハードウェア記述言語によりモデル化された半導体集積回路が不良品と判定された場合に、前記検証対象の半導体集積回路用テストプログラムが完全であると判定すること
を特徴とする半導体集積回路用テストプログラムの検証方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェア記述言語によりモデル化された半導体集積回路をコンピュータ上でのシミュレーションによりテストするための仮想テスタ、そのような仮想テスタをハードウェア記述言語によりコンピュータ上でモデル化したテスト装置、及びそのような仮想テスタまたはテスト装置を用いた半導体集積回路用テストシステムと、更にはそのようなシステムで使用される半導体集積回路用テストプログラムの完成度を検証するための検証方法に関する。
【背景技術】
【０００２】
従来、出荷前の半導体集積回路に対しては現実の装置としての半導体集積回路用テストシステム（以下、ＬＳＩテスタという）を使用した機能テスト及び電流電圧テストが行なわれている。機能テストでは、出荷前の半導体集積回路を対象として、予め準備しておいたテストパターン信号を与え、このテストパターン信号に応じて半導体集積回路が予定通りに動作しているか否かを判定する。また、電流電圧テストでは、出荷前の半導体集積回路の各端子に対して特定の電圧を印加した際の電流を測定し、この電流値が半導体集積回路の仕様を満たしているか否かを判定するテストと、半導体集積回路の各端子に電流を印加した際の電圧を測定し、この電圧値が半導体集積回路の仕様を満たしているか否かを判定するテスト等が行なわれていた。
【０００３】
これらの機能テスト及び電流電圧テストをＬＳＩテスタを使用して実施するためには、そのためのテストプログラムを予め作成しておく必要がある。但し、このテストプログラムは、複数のテスト項目それぞれに関して、テスト対象の半導体集積回路に対する電源電圧値／電流値，動作条件の設定作業、及び測定結果に対するテスト結果の判定作業が必要となるため、ソースコードが長大になり、このことがテストプログラム全体のサイズを大きくしてしまうという問題があった。
【０００４】
更に、上述のようなテストプログラムは、半導体集積回路の種類それぞれに対応するように作成する必要があることは勿論のこと、半導体集積回路の一部分のみが変更された場合にも、また半導体集積回路の仕様が変更された場合にも、それぞれに対応するように新規に作成するか、または修正・変更することが必要になる。
【０００５】
このようなテストプログラムの新規作成及び修正・変更に際しては、一般的なプログラムと同様にデバッグ作業が必要であることは勿論のこと、テストプログラムのデバッグを行なうためには、テスト対象の半導体集積回路及びＬＳＩテスタが必要であることは言うまでもない。更に、このようなテストプログラムの新規作成及びデバッグを行なうに際しては、その開始時期と完了時期とが重要になる。即ち、新規に半導体集積回路を開発して製造する場合、開発期間を短縮すると共に効率化を図るために、現実の製品としての半導体集積回路が製造される以前にＬＳＩテスタ及びテストプログラムの新規作成とデバッグとを完了させておく必要があるが、その時点ではテスト対象の半導体集積回路は未だ現実には存在しないという問題がある。
【０００６】
このような事情から、現実の半導体集積回路及びＬＳＩテスタを使用せずにテストプログラムの新規作成（開発）及びデバッグを行なうための技術として仮想テスタの技術が実用化されている。
【０００７】
仮想テスタとは、コンピュータ上にテスト対象の半導体集積回路のハードウェア記述言語によるモデルとＬＳＩテスタのハードウェア記述言語によるモデルとを準備することにより、テストプログラムの新規作成及びデバッグを実際のテスト対象の半導体集積回路及びＬＳＩテスタを使用せずに、コンピュータ上でのシミュレーションによって実現する技術である。
【０００８】
ここで、テストプログラムとは、半導体集積回路のテストを行なうＬＳＩテスタのためのプログラムである。また、テストパターンとはテストプログラムにその一部として含まれており、テスト対象の半導体集積回路の入力端子へ入力されるデータと、これに応じてテスト対象の半導体集積回路の出力端子から出力されるべきデータ（出力期待値情報）とを対応させたデータである。従って、テスト対象の半導体集積回路へ入力されたテストパターンに応じてその半導体集積回路から出力されたデータが出力期待値情報とは異なっている場合には、半導体集積回路が不良品であるか、またはテストプログラムに欠陥（バグ）が存在するか、のいずれかであると判断することができる。
【０００９】
従来の仮想テスタとしてはたとえば、ＩＭＳ社が開発したＤＶＴ（Digital Virtual Tester）が知られており、コンピュータ上での機能テストにおけるテストプログラムのデバッグ環境を実現している（たとえば、非特許文献１参照）。また、他の従来技術としては、機能テスト及び電流電圧テストに関するテストプログラムのデバッグを可能にした技術も知られている（たとえば、特許文献１参照）。
【００１０】
上述の非特許文献１等に開示されている従来技術の仮想テスタによるシミュレーションの実施手順の一例を図１５のフローチャートを参照して説明する。
【００１１】
図１５に示すように、非特許文献１に開示されている従来技術では、複数の測定項目，判定項目を含むテストプログラムが予め用意されており、それらの内からたとえば機能テストの項目を実行する部分が抽出され（ステップＳ１）、仮想テスタが取り込めるようにコンパイル（具体的には、「for 」、「if」等の記述を２進コード化する）され（ステップＳ２）、コンパイルした結果の２進コードが仮想テスタのＰＬＩに取り込まれて実行されることによりシミュレーションが実施される（ステップＳ３）。
【００１２】
ここで注目すべき点は、この図１５に示す非特許文献１等に開示されている従来技術では、ステップＳ１において機能テストの項目に関する部分のプログラムのみが抽出されることであり、従ってこの結果としてステップＳ３においてはテストプログラムの内の機能テストの部分のみが実行されてシミュレーションされることである。
【００１３】
また、図１６は、半導体集積回路用テストプログラムの完成度を検証するための従来の手法を説明する模式図である。具体的には、テストプログラムＴＰがＬＳＩテスタ１’にロードされ、このテストプログラムをＬＳＩテスタ１’が実行することにより、現実の半導体集積回路7'-1, 7'-2…からなる半導体集積回路群７０' を対象としてテストを行なっていた。
【００１４】
しかしこの従来例では、テストプログラムＴＰが良品と判定すべき種々の特性（設計仕様内に収まる特性）を有する現実の半導体集積回路（良品ＬＳＩ）7'-1, 7'-2…7'-nが全て揃うことは現実的には有り得ない。また同様に、不良品と判定すべき種々の特性（設計仕様を外れた特性）を有する現実の半導体集積回路（不良ＬＳＩ）70'-1,  70'-2 …70'-m が全て揃うことも有り得ない。
【００１５】
従って、半導体集積回路群７０' は、実際に製造された半導体集積回路の内の偶発的に製造された良品としての特性を有する半導体集積回路7'-1, 7'-2…7'-nと不良品としての特性を有する導体集積回路70'-1,  70-2' …70'-m とを用いて、テストプログラムの完成度を検証せざるをえない。このため、テストプログラムが、良品と判定すべき種々の特性を有する半導体集積回路の全てを実際に良品と判定し、不良品と判定すべき種々の特性を有する半導体集積回路の全てを実際に不良品と判定するか否かを確認することは現実問題としては不可能であった。また、実際に製造された半導体集積回路のそれぞれがどのような良品又は不良品と判定されるべき特性を有しているかを検査して調べる必要もある。
【００１６】
このように、テストプログラムのデバッグでの重要な問題は、開発したテストプログラムが、良品としての種々の条件を満たす半導体集積回路のみを良品であると判定し、良品としての種々の条件を満たさない半導体集積回路を全て不良品であると判定することが可能であるか否かである。テストプログラムのデバッグは通常はＬＳＩテスタと現実に存在する半導体集積回路とを使用して実行されるが、現実に存在する多数の半導体集積回路から不良品としての多種多様な条件を有する半導体集積回路を準備することは現実問題として不可能である。
【００１７】
即ち、製造された半導体集積回路の内の偶然に発生した、または製造条件のバラツキ等に起因して発生する不良品としての多種多様な条件を有する半導体集積回路の入手を待っていたのでは、現実にはテストは行なえないという問題がある。従って、テストプログラムが想定している良品としての種々の条件を満たす半導体集積回路を全て良品であると判定し、また逆に想定している不良品としての種々の条件を満たす半導体集積回路を全て不良品であると判定することが実際に可能であるのか否かを確実に検証することは事実上は不可能である。
【特許文献１】特開２００１−５１０２５号公報
【非特許文献１】ＩＭＳ（INTEGRATED MEASURMENT SYSTEMS,INC.) 社製仮想テスタに関するＷＥＢサイト  http://www.virtualtest.com/news/design to production 10302001.html  http://www.innotech.co.jp/products/ims/virtualtest/index.html
【発明の開示】
【発明が解決しようとする課題】
【００１８】
しかしながら、上述のような従来技術においては以下のような問題がある。まず非特許文献１に記載されているＩＭＳ社のＤＶＴ等では、図１５に示したように、複数の測定項目，判定項目を含むテストプログラムの内の機能テストのみを対象としてる。ＩＭＳ社のＤＶＴでは具体的には、入出力端子の入力信号の変化タイミングと出力端子の信号取り込みタイミングとを読み取り、テストプログラム内に記述されているテストパターンのデータと対照することにより、シミュレーションによる機能テストを実現している。
【００１９】
従って、この非特許文献１に記載されている従来技術では、テスト対象の半導体集積回路の機能テストを仮想テスタ上でシミュレーションすることは可能ではあるが、他のテスト、たとえば電流電圧テストに対する考慮がなされておらず、従ってテストプログラムに電源回路及び電流電圧測定回路の機能に関する記述が無いため、電流電圧テストを実施することができない。このため、非特許文献１に記載されている技術では、テストプログラムに記述されたテスタ動作の全てを正確にコンピュータ上でシミュレーションすることが出来ない。
【００２０】
一方、特許文献１に記載されている発明は、ＬＳＩテスタをコンピュータでシミュレーション可能なハードウェア記述言語によりモデル化して構築した仮想テスタであり、機能テスト及び電流電圧テストのテストプログラムのデバッグを現実の半導体集積回路及びＬＳＩテスタを使用する必要なしに可能としている。しかし、この特許文献１には、仮想テスタをＨＤＬ記述を用いて構築し、機能テスト及び電流電圧テストを実施する、と記載されているのみであり、具体的な仮想テスタの実現方法が開示されていない。
【００２１】
更に、テストプログラムが、良品としての種々の条件を満たす半導体集積回路のみを良品であると確実に判定し、良品としての種々の条件を満たさない半導体集積回路を全て不良品であると確実に判定することが可能であるか否かを検証する必要がある。しかし、製造された半導体集積回路の内の偶然に発生した、または製造条件のバラツキに起因して発生する不良品としての多種多様な条件を有する半導体集積回路の入手を待っていたのでは、現実にはテストは行なえないという問題がある。従って、テストプログラムが想定している良品としての種々の条件を満たす半導体集積回路を全て良品であると判定し、また逆に想定している不良品としての種々の条件を満たす半導体集積回路を全て不良品であると判定することが実際に可能であるのか否かを確実に検証することは事実上は不可能であるという問題があった。
【００２２】
本発明は以上のような事情に鑑みてなされたものであり、第１の目的は、仮想テスタをハードウェア記述言語によりモデル化する際のＬＳＩテスタの構成と、それにより電流電圧テストを実現することが可能な仮想テスタ及びそのような仮想テスタをコンピュータ上でハードウェア記述言語により実現したテスト装置の提供にある。
【００２３】
また本発明の第２の目的は、第１の目的により実現される仮想テスタ及びテスト装置により、ハードウェア記述言語によりモデル化された半導体集積回路をテストして、テストプログラムにバグが存在するか否かを容易に判定可能な半導体集積回路用テストシステムの提供にある。
【００２４】
また本発明の第３の目的は、テストプログラムが想定している良品を全て良品であると判定し、また逆にテストプログラムが想定している不良品を全て不良品であると判定することが実際に可能であるのか否かを確実に検証することが可能な半導体集積回路用テストプログラムの検証方法の提供にある。
【課題を解決するための手段】
【００２５】
本発明に係る仮想テスタは、ハードウェア記述言語によりモデル化された半導体集積回路をテスト用プログラムに従ってコンピュータ上で動作させてテストするようにハードウェア記述言語によりモデル化した仮想テスタにおいて、前記テストプログラムを格納するための機能をハードウェア記述言語によりモデル化したテストプログラム格納回路と、前記テストプログラムを実行するための機能をハードウェア記述言語によりモデル化したテストプログラム実行回路と、前記ハードウェア記述言語によりモデル化されたテストプログラム格納回路及びテストプログラム実行回路を制御するための機能をハードウェア記述言語によりモデル化した制御回路とを含むことを特徴とする。
【００２６】
また本発明に係るテスト装置は、ハードウェア記述言語によりコンピュータ上でモデル化された半導体集積回路をテスト用プログラムに従ってコンピュータ上で動作させてテストする仮想テスタをハードウェア記述言語によりコンピュータ上でモデル化したテスト装置において、前記テストプログラムを格納するための機能をハードウェア記述言語によりコンピュータ上でモデル化したテストプログラム格納手段と、前記テストプログラムを実行するための機能をハードウェア記述言語によりコンピュータ上でモデル化したテストプログラム実行手段と、前記テストプログラム格納手段及びテストプログラム実行手段を制御するための機能をハードウェア記述言語によりコンピュータ上でモデル化した制御手段とを備えることを特徴とする。
【００２７】
このような本発明の仮想テスタ（テスト装置）では、プログラム実行回路（プログラム実行手段）とプログラム格納回路（プログラム格納手段）との機能がハードウェア記述言語でモデル化されているため、テストプログラムをコンピュータ上でシミュレーションさせることがより容易になると共に、テストプログラムに記述されている全てのテス項目の動作が正確にシミュレーションされる。
【００２８】
また本発明に係る仮想テスタは、上述の仮想テスタの発明において、前記テストプログラム格納回路に格納されているテストプログラムに基づいて電源電圧値及び／又は電流値を表わすアナログ値を生成する機能をハードウェア記述言語によりモデル化した電源回路を更に含むことを特徴とする。
【００２９】
また本発明に係るテスト装置は、上述のテスト装置の発明において、前記テストプログラム格納手段に格納されているテストプログラムに基づいて電源電圧値及び／又は電流値を表わすアナログ値を生成する機能をハードウェア記述言語によりコンピュータ上でモデル化した電源手段を更に備えたことを特徴とする。
【００３０】
このような本発明の仮想テスタ（テスト装置）では、ハードウェア記述言語でその機能がモデル化された電源回路（電源手段）により、電源電圧値，電流値をアナログ値として扱ったシミュレーションが行われる。
【００３１】
更に本発明に係る仮想テスタは、上述の仮想テスタの発明において、前記テストプログラムの実行に応じて前記半導体集積回路に電流及び／又は電圧値を印加する機能と、前記テストプログラムの実行に応じて前記半導体集積回路が出力した電流及び／又は電圧値を表わすアナログ値を取り込む機能と、取り込んだアナログ値を前記テストプログラム格納回路に格納されているテストプログラムで処理する機能とをハードウェア記述言語によりモデル化した電流電圧測定回路を更に含むことを特徴とする。
【００３２】
更に本発明に係るテスト装置は、上述のテスト装置の発明において、前記テストプログラムの実行に応じて前記半導体集積回路に電流及び／又は電圧値を印加する機能と、前記テストプログラムの実行に応じて前記半導体集積回路が出力した電流及び／又は電圧値を表わすアナログ値を取り込む機能と、取り込んだアナログ値を前記テストプログラム格納手段に格納されているテストプログラムで処理する機能とをハードウェア記述言語によりコンピュータ上でモデル化した電流電圧測定手段を更に備えたことを特徴とする。
【００３３】
このような本発明の仮想テスタ（テスト装置）では、その機能をハードウェア記述言語でモデル化された電流電圧測定回路（電流電圧測定手段）により、アナログ値を扱うシミュレーションが可能になる。
【００３４】
また、本発明に係る半導体集積回路用テストシステムは、ハードウェア記述言語によりモデル化された半導体集積回路をハードウェア記述言語によりモデル化された仮想テスタによりコンピュータ上でテストプログラムに従って動作させてテストする半導体集積回路用テストシステムにおいて、前記仮想テスタは、前記テストプログラムを格納するための機能をハードウェア記述言語によりモデル化したテストプログラム格納回路と、前記テストプログラムを実行するための機能をハードウェア記述言語によりモデル化したテストプログラム実行回路と、前記ハードウェア記述言語によりモデル化されたテストプログラム格納回路及びテストプログラム実行回路を制御するための機能をハードウェア記述言語によりモデル化した制御回路とを含み、前記半導体集積回路を前記テストプログラムに従って所定のテスト状態に設定するための条件設定信号を発生する機能をハードウェア記述言語によりモデル化してあり、前記条件設定信号が与えられることにより与えられた条件設定信号に応じた第１及び第２の電流及び／又は電圧値が設定される機能と、前記半導体集積回路が前記条件設定信号に応じて前記所定のテスト状態に設定されたか否かを検出する機能と、該検出結果に応じて前記第１又は第２の電流及び／又は電圧値を生成する機能とをハードウェア記述言語によりモデル化した状態検出回路を含み、前記仮想テスタは、前記状態検出回路が生成した電流及び／又は電圧値に基づいて前記テスト用プログラム中のバグの存否を判定するようにしてあることを特徴とする。
【００３５】
また、本発明に係る半導体集積回路用テストシステムは、ハードウェア記述言語によりコンピュータ上でモデル化された半導体集積回路をテスト用プログラムに従ってコンピュータ上で動作させてテストする仮想テスタをハードウェア記述言語によりコンピュータ上でモデル化したテスト装置を備えた半導体集積回路用テストシステムにおいて、前記テスト装置は、前記テストプログラムを格納するための機能をハードウェア記述言語によりコンピュータ上でモデル化したテストプログラム格納手段と、前記テストプログラムを実行するための機能をハードウェア記述言語によりコンピュータ上でモデル化したテストプログラム実行手段と、前記テストプログラム格納手段及びテストプログラム実行手段を制御するための機能をハードウェア記述言語によりコンピュータ上でモデル化した制御手段と、前記半導体集積回路を前記テストプログラムに従って所定のテスト状態に設定するための条件設定信号を発生する機能をハードウェア記述言語によりコンピュータ上でモデル化した手段とを有し、前記条件設定信号が与えられることにより与えられた条件設定信号に応じた第１及び第２の電流及び／又は電圧値が設定される機能と、前記半導体集積回路が前記条件設定信号に応じて前記所定のテスト状態に設定されたか否かを検出する機能と、該検出結果に応じて前記第１又は第２の電流及び／又は電圧値を生成する機能とをハードウェア記述言語によりコンピュータ上でモデル化した状態検出手段を備え、前記テスト装置は、前記状態検出手段が生成した電流及び／又は電圧値に基づいて前記テスト用プログラム中のバグの存否を判定するようにしてあることを特徴とする。
【００３６】
このような本発明に係る半導体集積回路用テストシステムでは、プログラム実行回路（プログラム実行手段）とプログラム格納回路（プログラム格納手段）とがハードウェア記述言語でモデル化されているため、テストプログラムをコンピュータ上でシミュレーションさせることがより容易になると共に、テストプログラムに記述されている全てのテス項目の動作が正確にシミュレーションされる。更に、半導体集積回路が条件設定信号に応じて所定のテスト状態に設定されたか否かが検出され、この検出結果に応じて予め設定されている電流電圧値が生成されるので、仮想テスタ（テスト装置）がこの電流電圧値に基づいてテスト用プログラム中のバグの存否を判定することが可能になる。
【００３７】
また本発明に係る半導体集積回路用テストシステムは、上述の半導体集積回路用テストシステムの発明において、前記仮想テスタは、前記テストプログラム格納回路に格納されているテストプログラムに基づいて電源電圧値及び／又は電流値を表わすアナログ値を生成する機能をハードウェア記述言語によりモデル化した電源回路を更に含み、前記状態検出回路は、前記電源回路が生成した電源電圧値及び／又は電流値のアナログ値が前記テストプログラムに基づいて生成されるべき電源電圧値及び／又は電流値を表わすアナログ値に対して所定範囲内であるか否かを判定する機能をハードウェア記述言語によりモデル化してあり、前記仮想テスタは、前記状態検出回路の判定結果に基づいて前記テスト用プログラム中のバグの存否を判定するようにしてあることを特徴とする。
【００３８】
また本発明に係る半導体集積回路用テストシステムは、上述の半導体集積回路用テストシステムの発明において、前記テスト装置は、前記テストプログラム格納手段に格納されているテストプログラムに基づいて電源電圧値及び／又は電流値を表わすアナログ値を生成する機能をハードウェア記述言語によりコンピュータ上でモデル化した電源手段を更に有し、前記状態検出手段は、前記電源手段が生成した電源電圧値及び／又は電流値のアナログ値が前記テストプログラムに基づいて生成されるべき電源電圧値及び／又は電流値を表わすアナログ値に対して所定範囲内であるか否かを判定する機能をハードウェア記述言語によりコンピュータ上でモデル化した手段を有し、前記テスト装置は、前記状態検出手段の判定結果に基づいて前記テスト用プログラム中のバグの存否を判定するようにしてあることを特徴とする。
【００３９】
このような本発明に係る半導体集積回路用テストシステムでは、その機能をハードウェア記述言語でモデル化された電源回路（電源手段）により、電源電圧値，電流値をアナログ値として扱ったシミュレーションが行われると共に、アナログ値として扱われる電源電圧値，電流値に基づいてテスト用プログラム中のバグの存否を判定することが可能になる。
【００４０】
また本発明に係る半導体集積回路用テストシステムは、上述の半導体集積回路用テストシステムの発明において、前記状態検出回路は、前記半導体集積回路が前記テストプログラムの実行に応じて出力した電流及び／又は電圧値を表わすアナログ値を取り込む機能と、前記テストプログラムの実行に応じて出力されるべき電流及び／又は電圧値に対して所定範囲内であるか否かを判定する機能と、該判定結果に応じて前記第１又は第２の電流及び／又は電圧値を生成する機能とをハードウェア記述言語によりモデル化してあり、前記電流電圧測定回路は、前記状態検出回路が生成した電流及び／又は電圧値を表わすアナログ値に基づいて前記テスト用プログラム中のバグの存否を判定するようにしてあることを特徴とする。
【００４１】
また本発明に係る半導体集積回路用テストシステムは、上述の半導体集積回路用テストシステムで発明において、前記状態検出手段は、前記半導体集積回路が前記テストプログラムの実行に応じて出力した電流及び／又は電圧値を表わすアナログ値を取り込む機能と、前記テストプログラムの実行に応じて出力されるべき電流及び／又は電圧値に対して所定範囲内であるか否かを判定する機能と、該判定結果に応じて前記第１又は第２の電流及び／又は電圧値を生成する機能とをハードウェア記述言語によりコンピュータ上でモデル化した手段を有し、前記電流電圧測定手段は、前記状態検出手段が生成した電流及び／又は電圧値を表わすアナログ値に基づいて前記テスト用プログラム中のバグの存否を判定するようにしてあることを特徴とする。
【００４２】
このような本発明に係る半導体集積回路用テストシステムでは、その機能をハードウェア記述言語でモデル化された電流電圧測定回路（電流電圧測定手段）により、アナログ値を扱うシミュレーションが可能になると共に、扱われるアナログ値に基づいてテスト用プログラム中のバグの存否を判定することが可能になる。
【００４３】
また本発明に係る半導体集積回路用テストシステムは、上述の半導体集積回路用テストシステムの発明において、前記半導体集積回路はハードウェア記述言語によりモデル化された複数の論理ブロックを含み、前記複数の論理ブロックの内のテスト対象の論理ブロックの前後の論理ブロックでの動作に応じて前記テスト対象の論理ブロックへ前記仮想テスタからの信号を入力させる機能と、入力された信号に応じて出力される電流及び／又は電圧値を読み出す機能とをハードウェア記述言語によりモデル化した信号伝達回路を含むことを特徴とする。
【００４４】
また本発明に係る半導体集積回路用テストシステムは、上述の半導体集積回路用テストシステムの発明において、前記半導体集積回路はハードウェア記述言語によりコンピュータ上でモデル化された複数の論理ブロックを含み、前記複数の論理ブロックの内のテスト対象の論理ブロックの前後の論理ブロックでの動作に応じて前記テスト対象の論理ブロックへ前記仮想テスタからの信号を入力させる機能と、入力された信号に応じて出力される電流及び／又は電圧値を読み出す機能とをハードウェア記述言語によりコンピュータ上でモデル化した信号伝達手段を有することを特徴とする。
【００４５】
このような本発明に係る半導体集積回路用テストシステムでは、半導体集積回路に含まれているハードウェア記述言語でモデル化された複数の論理ブロックの内のテスト対象の論理ブロックの前後の論理ブロックでの動作を反映させた状態でテスト対象の論理ブロックへ仮想テスタ（テスト装置）からの信号が入力され、この信号に応じて出力される電流電圧値に基づいて仮想テスタ（テスト装置）がテスト用プログラム中のバグの存否を判定することが可能になる。
【００４６】
また本発明に係る半導体集積回路用テストシステムは、上述の半導体集積回路用テストシステムの発明において、前記半導体集積回路が前記テストプログラムにより良品であると判定されるようにハードウェア記述言語によりモデル化されていることを特徴とする。      
【００４７】
また本発明に係る半導体集積回路用テストシステムは、上述の半導体集積回路用テストシステムの発明において、前記半導体集積回路が前記テストプログラムにより良品であると判定されるようにハードウェア記述言語によりコンピュータ上でモデル化されていることを特徴とする。
【００４８】
このような本発明に係る半導体集積回路用テストシステムでは、半導体集積回路がテストプログラムにより良品であると判定されるようにハードウェア記述言語でモデル化されているため、テストプログラムによるテストで不良品であると判定された場合には、テストプログラムの方にバグがあると判断可能になる。
【００４９】
また本発明に係る仮想テスタ及び半導体集積回路用テストシステムは、上記の仮想テスタ及び半導体集積回路用テストシステムの各発明において、前記制御回路を、ハードウェア記述言語によりモデル化されたＦＰＧＡ（Field Programmable Gate Array)のハードウェア記述言語及び／又はネットリストを用いて構成してあることを特徴とする。
【００５０】
また本発明に係るテスト装置及び半導体集積回路用テストシステムは、上記のテスト装置及び半導体集積回路用テストシステムの各発明において、前記制御手段を、ハードウェア記述言語によりコンピュータ上でモデル化されたＦＰＧＡ（Field Programmable Gate Array)のハードウェア記述言語及び／又はネットリストを用いて構成してあることを特徴とする。
【００５１】
このような本発明のテスト装置及び半導体集積回路用テストシステムでは、ＦＰＧＡのハードウェア記述言語によるモデルが用いられ、そこで用いられたネットリストがそのまま用いられることにより、仮想テスタのＦＰＧＡが開発される。
【００５２】
更に本発明に係る半導体集積回路用テストプログラムの検証方法は、半導体集積回路テストシステムとテスト対象の半導体集積回路とをハードウェア記述言語によりモデル化してコンピュータ上で動作させることにより、前記半導体集積回路用のテストプログラムをデバッグするための半導体集積回路用テストプログラムの完成度を検証する方法において、検証対象の半導体集積回路用テストプログラムにより良品と判定されるようにハードウェア記述言語によりモデル化された半導体集積回路と、検証対象の半導体集積回路用テストプログラムにより不良品と判定されるようにハードウェア記述言語によりモデル化された半導体集積回路とを用意し、前記検証対象の半導体集積回路用テストプログラムに従って、前記良品と判定されるようにハードウェア記述言語によりモデル化された半導体集積回路及び不良品と判定されるようにハードウェア記述言語によりモデル化された半導体集積回路をテストし、前記良品と判定されるようにハードウェア記述言語によりモデル化された半導体集積回路が良品と判定され、前記不良品と判定されるようにハードウェア記述言語によりモデル化された半導体集積回路が不良品と判定された場合に、前記検証対象の半導体集積回路用テストプログラムが完全であると判定することを特徴とする。
【００５３】
このような本発明の半導体集積回路用テストプログラムの検証方法では、良品と判定されるようにハードウェア記述言語でモデル化された半導体集積回路が良品と判定され、不良品と判定されるようにハードウェア記述言語でモデル化された半導体集積回路が不良品と判定された場合に、テストプログラムが完全であると判定される。
【発明の効果】
【００５４】
本発明の仮想テスタによれば、プログラム実行回路とプログラム格納回路とをハードウェア記述言語でモデル化したので、テストプログラムの全てをハードウェア記述言語でモデル化したプログラム格納回路（仮想ＲＡＭ）に格納することができる。また本発明のテスト装置によれば、プログラム実行手段とプログラム格納手段とをハードウェア記述言語によりコンピュータ上でモデル化したので、テストプログラムの全てをハードウェア記述言語でモデル化したプログラム格納手段（仮想ＲＡＭ）に格納することができる。従って、本発明の仮想テスタ及びテスト装置では、コンピュータ上でシミュレーションさせることがより容易になると共に、テストプログラムに記述されているテスト動作を正確にシミュレーションすることが可能な仮想テスタが実現される。
【００５５】
また本発明に係る仮想テスタによれば、上述の発明において、ハードウェア記述言語でモデル化された電源回路（仮想電源回路）により、電源電圧値をアナログ値として扱うシミュレーションが可能な仮想テスタが実現される。また、本発明に係るテスト装置によれば、上述の発明において、ハードウェア記述言語によりコンピュータ上でモデル化された電源手段（仮想電源回路）により、電源電圧値をアナログ値として扱うシミュレーションが可能なテスト装置が実現される。これにより、従来技術では不可能であった論理テスト以外のテスト項目に対して仮想テスタ技術の適用が可能となり、全てのテストプログラムを実行することが可能となる。
【００５６】
更に本発明に係る仮想テスタによれば、上述の発明において、ハードウェア記述言語でモデル化された電流電圧測定回路（仮想電流電圧測定回路）により、アナログ値を扱うシミュレーションが可能な仮想テスタが実現される。更に、本発明に係るテスト装置によれば、上述の発明において、ハードウェア記述言語によりコンピュータ上でモデル化された電流電圧測定手段（仮想電流電圧測定回路）により、アナログ値を扱うシミュレーションが可能なテスト装置が実現される。これにより、従来技術では不可能であった論理テスト以外のテスト項目に対して仮想テスタ技術の適用が可能となり、全てのテストプログラムを実行することが可能となった。
【００５７】
また、本発明に係る半導体集積回路用テストシステムによれば、上述の仮想テスタの効果に加えて、半導体集積回路が条件設定信号に応じて所定のテスト状態に設定されたか否かが検出され、この検出結果に応じて予め設定されている電流電圧値が生成されるので、仮想テスタ（テスト装置）がこの電流電圧値に基づいてテスト用プログラム中のバグの存否を判定することが可能になり、デバッグが容易に行なえる。
【００５８】
また本発明に係る半導体集積回路用テストシステムによれば、上述の発明において、ハードウェア記述言語でモデル化された電源回路（電源手段）により、電源電圧値をアナログ値として扱うシミュレーションが可能になると共に、アナログ値として扱われる電源電圧値に基づいてテスト用プログラム中のバグの存否を判定することが可能になり、デバッグが容易に行なえる。
【００５９】
また本発明に係る半導体集積回路用テストシステムによれば、上述の発明において、ハードウェア記述言語でモデル化された電流電圧測定回路（電流電圧測定手段）により、アナログ値を扱うシミュレーションが可能になると共に、扱われるアナログ値に基づいてテスト用プログラム中のバグの存否を判定することが可能になり、デバッグが容易に行なえる。
【００６０】
また本発明に係る半導体集積回路用テストシステムによれば、上述の発明において、半導体集積回路に含まれているハードウェア記述言語でモデル化された複数の論理ブロックの内のテスト対象の論理ブロックの前後の論理ブロックでの動作を反映させた状態でテスト対象の論理ブロックへ仮想テスタ（テスト装置）からの信号が入力され、この信号に応じて出力される電流電圧値に基づいて仮想テスタ（テスト装置）がテスト用プログラム中のバグの存否を判定できるので、テストプログラムの内の半導体集積回路内の所望の論理ブロックに関する部分のバグの存否を判定することが可能になり、テストプログラムのより部分的なデバッグが容易に行なえる。
【００６１】
また本発明に係る半導体集積回路用テストシステムによれば、上述の発明において、半導体集積回路がテストプログラムにより良品であると判定されるようにハードウェア記述言語でモデル化されているため、テストプログラムによるテストで不良品であると判定された場合には、テストプログラムの方にバグがあると判断可能になり、デバッグが容易に行なえる。
【００６２】
また本発明に係る仮想テスタ、テスト装置、及び半導体集積回路用テストシステムによれば、仮想テスタを開発する際に、ＦＰＧＡのハードウェア記述言語によるモデルが用いられ、そこで用いられたネットリストがそのまま用いることにより、実際の仮想テスタＦＰＧＡを開発することができることから、ＬＳＩテスタの構築や変更を短時間で、かつ、効率的に開発できる。
【００６３】
更に本発明に係る半導体集積回路用テストプログラムの検証方法によれば、良品と判定されるようにハードウェア記述言語でモデル化された半導体集積回路が良品と判定され、不良品と判定されるようにハードウェア記述言語でモデル化された半導体集積回路が不良品と判定された場合に、テストプログラムが完全であると判定されるので、テストプログラムの完成度を容易に且つ正確に検証することが可能になる。また、実際に製造された半導体集積回路に含まれる偶発的な特性を有する半導体集積回路ではなく、理論的に電圧，電流値，抵抗値等の許容値を設定してハードウェア記述言語によりモデル化した半導体集積回路を使用して判定を行なえるので、テストプログラムに設定される良品，不良品の判定基準を許容値に近い値においても正確に設定することが可能になり、非常に緻密なテストプログラムを開発することが可能になる。
【発明を実施するための最良の形態】
【００６４】
以下、本発明をその実施の形態を示す図面に基づいて詳述するが、まず最初に本発明の仮想テスタについて説明する。
【００６５】
図１は、本発明の仮想テスタの概念的構成を示す模式図である。本発明の仮想テスタ１は、テストプログラムを実行するテストプログラム実行回路としてのＣＰＵ２と、テストプログラムを格納するメモリ回路としてのＲＡＭ３と、電源電圧を発生する電源回路４と、図示しないテスト対象の半導体集積回路から出力される電流電圧を測定する電流電圧測定回路５と、これらの要素を制御する制御回路としてのＦＰＧＡ（Field Programmable Gate Array)２０とを含む。なお、ＦＰＧＡ２０内には、ＰＬＬ（Phase-Locked Loop), ＡＤＣ（アナログ−デジタルコンバータ），ＤＡＣ（デジタル−アナログコンバータ）等も含まれており、たとえばＣＰＵ，ＲＡＭ，電源回路，電圧電流印加回路，同測定回路等の機能を持たせることも可能である。
【００６６】
図２は、図１にその概念的構成を示す本発明の仮想テスタ１の各ブロックをコンピュータ上で実際に動作するように、それぞれの機能をハードウェア（ＨＷ）記述言語によりコンピュータ上でモデル化して現実のテスト装置とした場合の構成例を示す機能ブロック図である。
【００６７】
仮想ＣＰＵ２としては既存のＰＬＩモデルまたは回路モデルを使用することが可能である。なお、ＰＬＩとはVerilog (IEEE Std-1364) で一般的に使用されているPrograming Language Interface のことであり、Ｃ言語によるシミュレーション用の記述と、Verilog またはVHDL（VHSIC High Description Language)で記述された対象回路のシミュレーション用記述との間のインターフェイスの役割を果たす。
【００６８】
また、仮想ＦＰＧＡ２０としては、ＦＰＧＡに論理回路を書き込むために必要なネットリスト及び論理回路設計に使用されるＲＴＬ(Register Transfer Level) モデルを使用することが可能である。
【００６９】
また、仮想ＲＡＭ３、仮想電源回路４、及び仮想電流電圧測定回路５としてはそれぞれ、現実の装置として構成する場合に使用するパーツの機能を忠実にハードウェア記述言語によりコンピュータ上でモデル化して利用することが可能である。具体的には、仮想電源回路４に関しては、テストプログラムに基づいて発生すべき所望の電圧値，電流値に相当するアナログ値のデータを出力する機能等がハードウェア記述言語によりコンピュータ上でモデル化されている。仮想電流電圧測定回路５に関しては、テストプログラムに従ってテスト対象の半導体集積回路へ入力する電流値，電圧値を発生する機能、及びテスト対象の半導体集積回路から出力される電流値，電圧値に相当するアナログ値のデータを入力し、その値がテストプログラムで規定されている仕様の許容値内であるか否かを判定し、その結果のデータを仮想ＲＡＭ３に書き込む機能等がハードウェア記述言語によりコンピュータ上でモデル化されている。
【００７０】
前述の図１に示すような概念的構成を採ることにより、本発明の仮想テスタを図２に示すようなコンピュータ上で実際に動作する本発明のテスト装置として構築することが可能であるが、その際、仮想ＲＡＭ３，仮想電源回路４及び仮想電流電圧測定回路５のみをハードウェア記述言語によりモデル化するだけで良く、他の回路、即ち仮想ＣＰＵ２及び仮想ＦＰＧＡ２０に関しては既存のモデル、即ち一般的に使用されている回路モデルを利用することが可能である。一方、仮想ＲＡＭ３，仮想電源回路４及び仮想電流電圧測定回路５のハードウェア記述言語による機能記述は非常に簡単である。従って、図１に示すような概念的構成のＬＳＩテスタの全ての構成要素の機能をハードウェア記述言語によりコンピュータ上で実現することが非常に容易になる。
【００７１】
なお、ハードウェア記述言語としては、公知のVerilog-HDL, VHDL 等が利用可能である。また、仮想ＣＰＵ２として動作するＰＬＩモデル、または仮想ＣＰＵ２の回路記述が入手可能であると共にテストプログラムで使用するＣ言語， BASIC等のＣＰＵ専用コンパイラが必要ではあるが、これらの条件さえ満たされれば仮想ＣＰＵ２としては、Ｚ80，ＡＲＭ（英ＡＲＭ社が開発した"Advanced RISC Machine" ）等、どのようなタイプでも利用可能である。
【００７２】
次に、前述した非特許文献１に開示されている従来技術による場合と、上述の本発明の仮想テスタをコンピュータ上でモデル化したテスト装置による場合とのシミュレーションの実施手順について比較して説明する。図３は本発明のテスト装置のシミュレーションの実施手順の一例を示すフローチャートである。
【００７３】
図３に示すように、本発明のテスト装置では、複数のテスト項目を含むテストプログラム全体が抽出され（ステップＳ４）、「for 」、「if」等の記述が２進コード化されることによりテスト装置１用にコンパイルされる（ステップＳ５）。このようにしてコンパイルされたテストプログラム全体はハードウェア記述言語でモデル化された仮想ＲＡＭ３に書き込まれる（ステップＳ６）。
【００７４】
次いで、ハードウェア記述言語でモデル化された仮想ＣＰＵ２がテストプログラムを実行し（ステップＳ７）、同様にハードウェア記述言語でモデル化された仮想ＦＰＧＡ２０，仮想電源回路４，仮想電流電圧測定回路５が必要に応じて使用されてテストプログラムが実行される（ステップＳ８）。これにより、本発明のテスト装置の動作がシミュレーションされる。
【００７５】
前述の非特許文献１に開示されている従来技術では、最初に、テストプログラムに含まれる複数のテスト項目の内の一部のみが抽出されてコンパイルされ、コンパイルされたデータ（テストプログラムを２進コード化したデータ）をＰＬＩで構築された仮想ＣＰＵ２が実行することによりシミュレーションしている。しかし、このような従来の仮想テスタでは、テストプログラムの全てを使用してはおらず、従ってテストプログラムの全てを正確にシミュレーションすることは不可能であった。
【００７６】
これに対して、上述したように本発明のテスト装置では、テストプログラムはその全てのソースコードがコンパイルされることによってテストプログラム全体が２進コードデータ化される。このようにしてバイナリー化（２進コードデータ化）されたデータはハードウェア記述言語でモデル化した仮想ＲＡＭ３に格納することが可能になる。従って、ハードウェア記述言語でモデル化した仮想ＲＡＭ３にはテストプログラム（実際にはその２進コード）全体が格納され、これらのテストプログラムはハードウェア記述言語でモデル化した仮想ＣＰＵ２のＰＬＩモデルによって仮想ＲＡＭ２から順次的に読み出して実行することが可能であるので、シミュレーションにより正確に処理することができる。
【００７７】
以上のように、本発明の仮想テスタをコンピュータ上でモデル化したテスト装置によれば、テストプログラム全体を実行してより正確なシミュレーションを実現することができる。
【００７８】
次に、上述のような本発明に係るテスト装置（仮想テスタ）を含む本発明の半導体集積回路用テストシステムについて説明する。
【００７９】
図４は本発明の半導体集積回路用テストシステムの一実施の形態を示す機能ブロック図であり、図２に示した本発明のテスト装置１と、その機能がハードウェア記述言語でモデル化された状態検出回路６と、同じく半導体集積回路７とで構成されているが、勿論、これらは全てコンピュータ上でソフトウェア的に実現されるシミュレータとして構成されている。
【００８０】
なお、テスト装置１は前述の図２に示したように、制御回路としての機能を有するＦＰＧＡ２０と、仮想テストプログラム実行回路としてのＣＰＵのＰＬＩモデル（ハードウェア記述言語によりモデル化）である仮想ＣＰＵ２と、仮想メモリ回路としてのプログラム格納回路（ハードウェア記述言語によりモデル化）である仮想ＲＡＭ３と、仮想電源回路４（ハードウェア記述言語によりモデル化）と、仮想電流電圧測定回路５（ハードウェア記述言語によりモデル化）とを含んでいる。なお、テスト装置１としては、上述の仮想ＣＰＵ２と、前述した如くＣＰＵ等の機能をも含むＦＰＧＡ２０との双方により制御される。
【００８１】
また、１０はテスト装置１の外部からテストプログラムをロードしたり、動作開始の指示等の種々の指示を与えるための入力端子、１１はテスト装置１の仮想ＣＰＵ２と半導体集積回路７との間で信号を送受するための入出力端子、１２はテスト装置１内の仮想電源回路４から状態検出回路６へ電源電圧のデータを送るための出力端子、１３はテスト装置１内の仮想電流電圧測定回路５と状態検出回路６との間でデータを送受するための入出力端子である。
【００８２】
６２は上述の出力端子１２から状態検出回路６がデータを受けるための入力端子、６３は上述の入出力端子１３との間で状態検出回路６がデータを送受するための入出力端子、７１は上述の入出力端子１１との間で半導体集積回路７が信号を送受するための入出力端子、７４は半導体集積回路７から状態検出回路６へ信号を送る出力端子、６４はこの出力端子７４から状態検出回路６が信号を受ける入力端子である。
【００８３】
以下、テストプログラムに含まれるテスト項目の一例として、ハードウェア記述言語によりモデル化された半導体集積回路７の出力端子７４への電圧印加電流測定テストのプログラムにバグが存在するか否かを判定する手順の詳細について説明する。但し、ここでは半導体集積回路７の出力端子７４がハイレベル時に出力することが可能な電流が許容値内であるか否かをテストするテストプログラムの例である。なお、半導体集積回路７そのものは正常にハードウェア記述言語でモデル化されており、その正常にモデル化されている半導体集積回路７の出力端子７４がハイレベル時に出力することが可能な電流値がたとえば 0.8ｍＡ以上である場合に半導体集回路７を良品であると判定するようにテストプログラムが記述されている。
【００８４】
図５，図６は、ハードウェア記述言語によりモデル化された状態検出回路６がテストプログラムに従って半導体集積回路７のハイレベル側出力電流を測定する手順及びそれによってテストプログラムにバグが存在するか否かを判定する手順を示すフローチャートである。
【００８５】
まず、テスト装置１は、仮想ＲＡＭ３に格納されているテストプログラムに従って、ハードウェア記述言語によりモデル化された状態検出回路内６に、半導体集積回路７の出力端子７４の正常時のＯＮ抵抗値と、このＯＮ抵抗値が異常である場合の異常電流値とを端子１３−６３を介して予め設定する（ステップＳ１０）。ここで、正常時のＯＮ抵抗値として設定すべき抵抗値は、測定対象の出力端子７４がハイレベル出力時の正常な抵抗値としてテストプログラムのテストパターンで定められている値であり、一例として 500Ωとする。また、測定対象の出力端子７４がハイレベル出力時に異常なＯＮ抵抗値、即ち 500Ω以外の値を示した場合等の異常時にその旨を示すための異常電流値としては、上述したようにテストプログラムが半導体集積回路７の出力端子７４がハイレベル時に出力することが可能な電流値がたとえば 0.8ｍＡ以上である場合に半導体集回路７を良品であると判定することから、0.8ｍＡよりも小さい値、たとえば 0.5ｍＡが設定される。
【００８６】
そして、テストが開始されると、テストプログラムに従ってまず、仮想電流電圧測定回路５から状態検出回路６へ端子１３−６３を介してテスト開始信号が送られる（ステップＳ１１）。
【００８７】
次に、テストプログラムに従ってテスト装置１が半導体集積回路７の電源電圧値を設定し、これに応じてハードウェア記述言語によりモデル化された仮想電源回路４が設定された電源電圧値をアナログ値として端子１２−６２を介して状態検出回路６へ出力する（ステップＳ１２）。ここで、テストプログラムにより仮想電源回路４に設定される電源電圧値がたとえば 5.0Ｖであるとすると、テストプログラムにバグがなければ状態検出回路６へ仮想電源回路４から送られる電源電圧値は 5.0Ｖを中心とする規定範囲内のアナログ値になる（ステップＳ１３でＹＥＳ）。
【００８８】
次に、テストプログラムによる半導体集積回路７の電流印加電圧の測定対象である端子７４が測定可能状態になるようにテストパターン信号が、テストプログラムに従ってテスト装置１の仮想ＣＰＵ２から端子１１−７１を介して半導体集積回路７へ送られる（ステップＳ１４）。言うまでもないが、正しいテストパターン信号が半導体集積回路７に与えられた場合には、測定対象の出力端子７４がハイレベル状態になるようにテストプログラムが記述されている（ステップＳ１５でＹＥＳ）。
【００８９】
次に、テスト装置１は仮想ＲＡＭ３（ハードウェア記述言語によりモデル化）に格納されているテストプログラムに従って、半導体集積回路７の出力端子７４の出力電流を測定するために印加すべき電圧値をアナログ値で設定する（ステップＳ１６）。ハードウェア記述言語によりモデル化された仮想電流電圧測定回路５はこの設定に基づいて、半導体集積回路７の出力端子７４の出力電流を測定するために印加すべき電圧値を状態検出回路６へ端子１３−６３を介して出力する。ここでは、この出力電流を測定するために印加する電圧値を 4.5Ｖとする。
【００９０】
ここで、テストプログラムにバグがなければ仮想電流電圧測定回路５から状態検出回路６に設定される印加すべき電圧値は 4.5Ｖを中心とする規定範囲内になる（ステップＳ１７でＹＥＳ）。
【００９１】
以上のように、状態検出回路６は、ハードウェア記述言語によりモデル化された半導体集積回路７のテストプログラムによる測定対象の端子７４の出力状態と、受け取った２種類の電圧値、具体的には仮想電源回路４から受け取った電源電圧値及び仮想電流電圧測定回路５から受け取った印加電圧値とを、それぞれステップＳ１７，Ｓ１３，Ｓ１５において判定する。半導体集積回路７の測定対象端子７４の出力状態がハイレベルであれば（ステップＳ１５でＹＥＳ）、状態検出回路６は図示しない内蔵演算回路（勿論、ハードウェア記述言語によりモデル化されている）において
「出力電流値＝（電源電圧値−印加電圧値）／ＯＮ抵抗値」、具体的には
「１ｍＡ＝(5.0Ｖ− 4.5Ｖ）／ 500Ω」
の演算を行なう（ステップＳ１８）。但し、「ＯＮ抵抗値」は固定値ではなく、「電源電圧」の大小に応じて異なる値が適用される。ちなみに、この例では「電源電圧」の 5.0Ｖに対して「ＯＮ抵抗値」として 500Ωが設定されているが、たとえば「電源電圧」が 3.0Ｖである場合には「ＯＮ抵抗値」として 700Ωが設定される場合もある。そして、このような演算の結果として得られた１ｍＡの出力電流値は端子６３−１３経由で仮想電流電圧測定回路５へ送られる（ステップＳ１９）。
【００９２】
以上のようにして仮想電流電圧測定回路５により測定された半導体集積回路７の出力端子７４の出力電流値は仮想ＣＰＵ２へ送られ、ソフトウェア的に、換言すればテストプログラムにより半導体集積回路７は良品であるか不良品であるかの判定処理が行なわれる。このテストプログラムでは、前述したように、半導体集積回路７の出力端子７４がハイレベル時に出力することが可能な電流値が 0.8ｍＡ以上である場合に半導体集回路７を良品であると判定するように記述されているので、ステップＳ１８での演算結果により得られた出力電流値が１ｍＡであれば、半導体集積回路７は良品であると判定される（ステップＳ２０でＹＥＳ）。
【００９３】
以上により、テストプログラムに基づいて生成した電源電圧値，端子７４からの出力電流値を測定するために印加すべき電圧値，出力端子状態の設定（ここでは該当する出力端子７４がハイレベル）等のテストプログラムの内容に間違い、即ちバグがないことが判明する（ステップＳ２１）。
【００９４】
なお、上述のようなテストプログラムの実行に際して、電源電圧値，印加電圧値，出力端子７４の状態設定等が所定の値，状態ではない、即ちテストプログラムのテストパターンで定められている値，状態ではないことが判明した場合、具体的にはステップＳ１３，Ｓ１５，Ｓ１７の内の少なくとも一つで「ＮＯ」であった場合は、ハードウェア記述言語によりモデル化された状態検出回路６は、事前にステップＳ１０において準備しておいた異常電流値である 0.5ｍＡの信号をハードウェア記述言語によりモデル化された仮想電流電圧測定回路５へ端子６３−１３を経由して送る（ステップＳ２２）。
【００９５】
これにより、ソフトウェア的に、換言すればテストプログラムにより半導体集積回路７は不良品であると判定される。この場合、ハードウェア記述言語によりモデル化された半導体集積回路７は正常であるとの前提であるため、テストプログラムの方にバグがあることを意味している（ステップＳ２３）。また、ステップＳ２０でＮＯであった場合にもテストプログラムにバグがあることを意味している（ステップＳ２３）。
【００９６】
以上のように、ハードウェア記述言語によりモデル化された半導体集積回路７が正常であるとの前提により、テストプログラムのバグを見付けることが可能になり、テストプログラムをデバッグすることが可能になる。
【００９７】
次に、図４に示す本発明に係る半導体集積回路用テストシステムによって半導体集積回路７の消費電流測定テスト用テストプログラムにバグが存在するか否かを判定する例について説明する。
【００９８】
図７，図８は、ハードウェア記述言語によりモデル化された状態検出回路６が半導体集積回路７の消費電流を測定する手順及びそれによってテストプログラムにバグが存在するか否かを判定する手順を示すフローチャートである。なおこの例では、テストプログラムは消費電流が 100ｍＡ以下で10ｍＡ以上であれば半導体集積回路７を良品であると判定する。
【００９９】
まず、テスト装置１は、仮想ＲＡＭ３に格納されているテストプログラムに従って、ハードウェア記述言語によりモデル化された状態検出回路６内に、半導体集積回路７の正常動作時の消費電流値と、異常動作時の消費電流値とを端子１３−６３を介して予め設定する（ステップＳ３０）。なお、シミュレーション開始前に予め状態検出回路６内にこれらの値を設定しておいてもよい。ここで、正常動作時の消費電流値として設定すべき電流値を一例として50ｍＡとする。また、異常動作時の消費電流値としては、上述したようにテストプログラムは消費電流が 100ｍＡ以下（且つ、10ｍＡ以上）であれば半導体集積回路７を良品であると判定することから、 100ｍＡよりも大きい値、たとえば 200ｍＡが設定される。
【０１００】
そして、テストが開始されると、テストプログラムに従ってまず、仮想電流電圧測定回路５から状態検出回路６へ端子１３−６６を介してテスト開始信号が送られる（ステップＳ３１）。
【０１０１】
次に、テストプログラムに従ってテスト装置１が半導体集積回路７の電源電圧値を設定し、これに応じてハードウェア記述言語によりモデル化された仮想電源回路４が設定された電源電圧値をアナログ値として端子１２−６２を介して状態検出回路６へ出力する（ステップＳ３２）。ここで、テストプログラムにより仮想電源回路４に設定される電源電圧値がたとえば 5.0Ｖであるとすると、テストプログラムにバグがなければ状態検出回路６へ仮想電源回路４から送られる電源電圧値は 5.0Ｖを中心とする規定範囲内になる（ステップＳ３３でＹＥＳ）。
【０１０２】
次に、半導体集積回路７の消費電流を測定することが可能になるようにテストパターン信号が、テストプログラムに従ってテスト装置１の仮想ＣＰＵ２から端子１１−７１を介して半導体集積回路７へ送り続けられる（ステップＳ３４）。正しいテストパターン信号が半導体集積回路７に送り続けられた場合には、半導体集積回路７のテストプログラムによる測定対象の出力端子７４がテストプログラムで設定されている期待通りの動作、即ち10ＭＨｚ以上の周期でハイレベル状態とローレベル状態とを反復し、その反復回数が10回以上になる動作を行なうので、消費電流測定が可能になるものとする（ステップＳ３５でＹＥＳ）。
【０１０３】
以上のように、状態検出回路６は、ハードウェア記述言語によりモデル化された半導体集積回路７の測定対象端子７４の動作状態と、仮想電源回路４から受け取った電源電圧値とをそれぞれステップＳ３５，Ｓ３３において判定する。そして、半導体集積回路７の測定対象端子７４の動作状態がテストプログラムで設定されている、10ＭＨｚ以上の周期でハイレベル状態とローレベル状態とを反復し、その反復回数が10回以上になるという期待通りの動作を行なえば（ステップＳ３５でＹＥＳ）、半導体集積回路７が正常に動作しているとして、状態検出回路６は正常な消費電流値としてステップＳ３０において設定されている50ｍＡの信号を仮想電流電圧測定回路５へ端子６３−１３経由で送る（ステップＳ３６）。
【０１０４】
一方、ステップＳ３５でＮＯであった場合、即ちテストプログラムによる測定対象の出力端子７４がテストプログラムで設定されている期待通りの動作を行なわなかった場合、具体的には半導体集積回路７の測定対象端子７４の状態が、10ＭＨｚ以上の周期でハイレベル状態とローレベル状態とを反復しない場合、又は反復回数が10回に満たない内に反復を停止したような場合には、半導体集積回路７は与えられたテストパターン信号に応じた正常な動作をしていないとして、状態検出回路６は異常動作時の消費電流値としてステップＳ３０において設定されている 200ｍＡの信号を仮想電流電圧測定回路５へ端子６３−１３経由で送る（ステップＳ３９）。
【０１０５】
以上のようにして、状態検出回路６から仮想電流電圧測定回路５へ与えられた消費電流値が仮想ＣＰＵ２へ送られ、ソフトウェア的に、換言すればテストプログラムにより半導体集積回路７は良品であるか不良品であるかの判定処理が行なわれる。このテストプログラムでは、前述したように、半導体集積回路７の出力端子７４の消費電流値が 100ｍＡ以下で10ｍＡ以上である場合に半導体集回路７を良品であると判定するように設定してあるので、仮想電流電圧測定回路５により得られた消費電流値が50ｍＡであれば、半導体集積回路７は良品であると判定される（ステップＳ３７でＹＥＳ）。
【０１０６】
以上により、テストプログラムに基づいて生成した電源電圧値，出力端子の動作状態（ここでは該当する出力端子７４が10ＭＨｚ以上の周期でハイレベル状態とローレベル状態とを反復し、その反復回数が10回以上になる）等のテストプログラムの内容に間違い、即ちバグがないことが判明する（ステップＳ３８）。
【０１０７】
なお、上述のようなテストプログラムの実行に際して、電源電圧値，出力端子７４の動作状態等が所定の値，状態ではない、即ちテストプログラムのテストパターンで定められている値，状態ではないことが判明した場合、具体的にはステップＳ３３，Ｓ３５の内の少なくとも一つで「ＮＯ」であった場合は、ハードウェア記述言語によりモデル化された状態検出回路６は、事前にステップＳ３０において準備しておいた異常時の消費電流値である 200ｍＡの信号をハードウェア記述言語によりモデル化された仮想電流電圧測定回路５へ端子６３−１３を経由して送る（ステップＳ３９）。
【０１０８】
これにより、ソフトウェア的に、換言すればテストプログラムにより半導体集積回路７は不良品であると判定される。この場合、ハードウェア記述言語によりモデル化された半導体集積回路７は正常であるとの前提であるため、テストプログラムの方にバグがあることを意味している（ステップＳ４０）。また、ステップＳ３７でＮＯであった場合にもテストプログラムにバグがあることを意味している（ステップＳ４０）。
【０１０９】
以上のように、ハードウェア記述言語によりモデル化された半導体集積回路７が正常であるとの前提により、テストプログラムのバグを見付けることが可能になり、テストプログラムをデバッグすることが可能になる。
【０１１０】
次に、図４に示す本発明に係る半導体集積回路用テストシステムによって半導体集積回路７の静止時電流測定テスト用テストプログラムにバグが存在するか否かを判定する例について説明する。なお、以下の説明は、半導体集積回路７の静止時における出力端子がローレベルである場合の例である。
【０１１１】
半導体集積回路７の静止時には、半導体集積回路７の全ての出力端子がローレベルになる。従って、図４には示していないが、状態検出回路６は半導体集積回路７の全ての出力端子と一対一で接続された入力端子を備えているものとする。但し、以下の説明においては、半導体集積回路７の全ての出力端子を出力端子７４で代表し、状態検出回路６の全ての入力端子を入力端子６４で代表する。
【０１１２】
図９，図１０は、ハードウェア記述言語によりモデル化された状態検出回路６が半導体集積回路７の静止時電流を測定するために半導体集積回路７を静止状態にさせる条件を設定する手順及びそれによってテストプログラムにバグが存在するか否かを判定する手順を示すフローチャートである。なおこの例では、テストプログラムは静止時電流が10μＡ以下であれば半導体集積回路７を良品であると判定する。
【０１１３】
以下、ハードウェア記述言語によりモデル化された半導体集積回路７を用いて電源端子の静止時電流測定テストのテストプログラムにバグが存在するか否かを判定する手順の詳細を説明する。
【０１１４】
まず、テスト装置１は、仮想ＲＡＭ３に格納されているテストプログラムに従って、ハードウェア記述言語によりモデル化された状態検出回路６内に、半導体集積回路７を静止状態にするための設定条件の正しい設定時の電流値と、異常設定時の電流値とを端子１３−６３を介して予め設定する（ステップＳ５０）。なお、シミュレーション開始前に予め状態検出回路６内にこれらの値を設定しておいてもよい。ここで、正しい設定時の電流値としては一例として５μＡが設定される。また、異常設定時の電流値としては、上述したようにテストプログラムが静止電流値が10μＡ以下であれば半導体集積回路７を良品であると判定することから、10μＡよりも大きい値、たとえば 100μＡが設定される。
【０１１５】
そして、テストが開始されると、テストプログラムに従ってまず、仮想電流電圧測定回路５から状態検出回路６へ端子１３−６３を介してテスト開始信号が送られる（ステップＳ５１）。
【０１１６】
次に、テストプログラムに従ってテスト装置１が半導体集積回路７の電源電圧値を設定し、これに応じてハードウェア記述言語によりモデル化された仮想電源回路４が設定された電源電圧値をアナログ値として端子１２−６２を介して状態検出回路６へ出力する（ステップＳ５２）。ここで、テストプログラムにより仮想電源回路４に設定される電源電圧値がたとえば 5.0Ｖであるとすると、テストプログラムにバグがなければ状態検出回路６へ仮想電源回路４から送られる電源電圧値は 5.0Ｖを中心とする規定範囲内になる（ステップＳ５３でＹＥＳ）。
【０１１７】
次に、半導体集積回路７の静止時電流を測定することが可能になるように、具体的には半導体集積回路７を静止状態にするためのテストパターン信号が、テストプログラムに従ってテスト装置１の仮想ＣＰＵ２から端子１１−７１を介して半導体集積回路７へ送られる（ステップＳ５４）。正しいテストパターン信号が半導体集積回路７に与えられた場合、換言すれば半導体集積回路７を静止状態にするための正しい条件がテストプログラムにより設定された場合には、半導体集積回路７は静止状態になって全ての出力端子７４がローレベルになる（ステップＳ５５でＹＥＳ）。
【０１１８】
以上のように、状態検出回路６は、ハードウェア記述言語によりモデル化された半導体集積回路７の全ての出力端子７４のレベルと、仮想電源回路４から受け取った電源電圧値とをそれぞれステップＳ５５，Ｓ５３において判定する。そして、半導体集積回路７の全ての出力端子７４のレベルがローレベルであれば（ステップＳ５５でＹＥＳ）、半導体集積回路７がテストプログラムにより静止状態に正しく設定されてその静止時電流を測定することが可能な状態になったとして、状態検出回路６は正常設定時の電流値としてステップＳ５０において設定されている５μＡの信号を仮想電流電圧測定回路５へ端子６３−１３を経由して送る（ステップＳ５６）。
【０１１９】
一方、ステップＳ５５でＮＯであった場合、具体的には半導体集積回路７のいずれかの出力端子がハイレベルであった場合には、半導体集積回路７が静止状態には設定されておらず、従ってその静止時電流を測定することが可能な状態にはなっていないとして、状態検出回路６は異常設定時の電流値としてステップＳ５０において設定されている 100μＡの信号を仮想電流電圧測定回路５へ送る（ステップＳ５９）。
【０１２０】
以上のようにして、状態検出回路６から仮想電流電圧測定回路５へ与えられた電流値が仮想ＣＰＵ２へ送られ、ソフトウェア的に、換言すればテストプログラムにより半導体集積回路７は良品であるか不良品であるかの判定処理が行なわれる。このテストプログラムでは、前述したように、半導体集積回路７の静止時電流値が10μＡ以下である場合に半導体集回路７を良品であると判定するように設定してあるので、仮想電流電圧測定回路５により得られた静止時電流値が５μＡであれば、半導体集積回路７は良品であると判定される（ステップＳ５７でＹＥＳ）。
【０１２１】
以上により、テストプログラムに基づいて生成した電源電圧値，半導体集積回路７を静止状態（この場合、全ての出力端子がローレベルになる）に設定する条件等を設定するためのテストプログラムの内容に間違い、即ちバグがないことが判明する（ステップＳ５８）。
【０１２２】
なお、上述のようなテストプログラムの実行に際して、電源電圧値，出力端子７４のレベルの状態等が所定の値，状態ではない、即ちテストプログラムのテストパターンで定められている値，状態ではないことが判明した場合、具体的にはステップＳ５３，Ｓ５５の内の少なくとも一つで「ＮＯ」であった場合は、ハードウェア記述言語によりモデル化された状態検出回路６は、事前にステップＳ５０において準備しておいた異常設定時の電流値である 100μＡの信号をハードウェア記述言語によりモデル化された仮想電流電圧測定回路５へ送る（ステップＳ５９）。
【０１２３】
これにより、ソフトウェア的に、換言すればテストプログラムにより半導体集積回路７は不良品であると判定される。この場合、ハードウェア記述言語によりモデル化された半導体集積回路７は正常であるとの前提であるため、テストプログラムの方にバグがあることを意味している（ステップＳ６０）。また、ステップＳ５７でＮＯであった場合にもテストプログラムにバグがあることを意味している（ステップＳ６０）。
【０１２４】
以上のように、ハードウェア記述言語によりモデル化された半導体集積回路７が正常であるとの前提により、テストプログラムのバグを見付けることが可能になり、テストプログラムをデバッグすることが可能になる。
【０１２５】
次に、本発明の半導体集積回路用テストシステムの他の実施の形態として、半導体集積回路７内部の状態を判定するための構成について説明する。
【０１２６】
図１１は、本発明の半導体集積回路用テストシステムの他の実施の形態を示す機能ブロック図であり、図４に示した実施の形態において備えられていた状態検出回路６に代えて信号伝達回路８がテスト装置１と半導体集積回路７との間に備えられている。なおこの信号伝達回路８も勿論、ハードウェア記述言語でモデル化されていることはいうまでもない。
【０１２７】
この信号伝達回路８は、ハードウェア記述言語によりモデル化された半導体集積回路７の内部の所望の位置の電流電圧値を測定して判定することが可能なようにハードウェア記述言語によりモデル化されている。以下に、詳細に説明する。
【０１２８】
図１２は、図１１に示す本発明の半導体集積回路用テストシステムの半導体集積回路７の内部構成及び上述の信号伝達回路８の内部構成と、両者間の信号の送受関係とを示すためのブロック図である。
【０１２９】
通常、半導体集積回路７はその内部で電流電圧値の処理が完結するように構成されているため、半導体集積回路７の内部の特定の位置から電流電圧値を外部へ読み出すための接続端子はハードウェア記述言語によりモデル化した半導体集積回路７の最上位の端子（具体的には、外部と直接接続する端子）としては存在しない。即ち、図１２に示す半導体集積回路７の一般的な入出力端子７１はハードウェア記述言語によりモデル化した半導体集積回路７の最上位の端子ではない。従って、前述したような本発明のテスト装置１のみでは半導体集積回路７の内部の所望の位置の電流電圧値を測定することは不可能である。
【０１３０】
更に、ハードウェア記述言語によりモデル化した半導体集積回路７の内部の特定の位置に電流電圧値を外部から書き込むための接続端子も半導体集積回路の最上位の端子としては存在しない。ハードウェア記述言語によりモデル化された半導体集積回路７の内部の電流電圧値を測定するためには、半導体集積回路７の内部の特定の論理回路に直接アクセスして信号を入力し、その結果として生成される電流電圧値を半導体集積回路７の内部から外部へ直接読み出す必要がある。
【０１３１】
しかし、上述のようにして所望の論理回路を直接アクセスして信号を入力し、その結果として所望の論理回路が生成する電流電圧値を読み出したとしても、その所望の論理回路の前段（信号の流れの上流側）に設けられている論理回路群の動作条件（入力条件）及び所望の論理回路の後段（信号の流れの下流側）に設けられている論理回路群の動作条件（出力条件）のいずれもが反映されない状況にならざるを得ない。このような状況は、所望の論理回路が前段の論理回路群から入力した信号を処理して後段の論理回路群へ単に出力するのみの回路構成であれば問題はないが、たとえば所望の論理回路の前後でフィードバックループが形成されているような回路の場合には、本来は信号が通過するはずの各論理回路の状態を正しく反映したシミュレーションができないことになる。
【０１３２】
このような問題点を解決するために本発明の半導体集積回路用テストシステムでは、半導体集積回路７の内部において所望の論理回路の前後の論理回路群の所定の位置にハードウェア記述言語によりモデル化したスイッチ回路を備え、これらの半導体集積回路７内のスイッチ回路のオン／オフ動作に連動してオン／オフ制御されるようにハードウェア記述言語によりモデル化されたスイッチ回路を有する信号伝達回路８を、図１１に示すように、テスト装置１と半導体集積回路７との間に配置している。
【０１３３】
信号伝達回路８はテスト装置１との接続に関しては、図１１に示すように、仮想電源回路４が端子１２から出力する信号を受け取る入力端子８２と、仮想電流電圧測定回路５の入出力端子１３との間で信号を入出力するための入出力端子８３とを備えている。また信号伝達回路８は半導体集積回路７との接続に関しては、図１１に示すように、半導体集積回路７へ信号を出力するための出力端子８５と、半導体集積回路７から信号を入力するための入力端子８６とを備えている。
【０１３４】
信号伝達回路８は、図１２に示すように、半導体集積回路７内部の所望の論理回路、即ち直接アクセスして信号を入力し、その結果として生成される電流電圧値を読み出したい論理回路である演算処理回路７０２に信号を直接与え、この与えられた信号を演算処理回路７０２が処理した結果として得られる電流電圧値を直接読み出して測定するようにハードウェア記述言語によりモデル化されている。
【０１３５】
なお、本実施の形態では、所望の論理回路である演算処理回路７０２の前後には実数変換回路７０１とデジタル変換回路７０３とが配置されている。そして、前段の論理回路群７００から出力された信号は実数変換回路７０１により実数値を表わすアナログ信号に変換され、これに対して演算処理回路７０２が所定の演算を行ない、その結果をデジタル変換回路７０３がデジタル信号に変換して後段の論理回路群７０４へ出力する。
【０１３６】
演算処理回路７０２の入力段に配置された論理回路群７００の所定の位置（この例では論理回路群７００の前後の位置）にはスイッチ回路７Ｓ１，７Ｓ２が備えられていると共に、これらのスイッチ回路７Ｓ１，７Ｓ２のオン／オフ制御信号を信号伝達回路８内の論理ゲート８０１（図１２に示す例ではＡＮＤゲートであるとする）を介してテスト装置１の仮想電流電圧測定回路５からの入力信号をオン／オフ制御するスイッチ回路８Ｓ１のオン／オフ制御信号としている。
【０１３７】
この例では、所望の論理回路である演算処理回路７０２の前段の論理回路群７００の前後のスイッチ回路７Ｓ１，７Ｓ２が共にオンした場合に論理回路群７００から実数変換回路７０１へ信号が出力されるが、この際同時に論理ゲート８０１から出力される信号によって信号伝達回路８内のスイッチ回路８Ｓ１もオンする。これにより、テスト装置１の電流電圧測定回路５からの入力信号が入出力端子８３，出力端子８５を経由して信号線７３により演算処理回路７０２へ直接入力される。このようにして信号伝達回路８から信号線７３により演算処理回路７０２へ入力される信号は実数変換回路７０１から演算処理回路７０２へ与えられる信号をシミュレーションしている。
【０１３８】
所望の論理回路である演算処理回路７０２の出力段に配置された論理回路群７０４の所定の位置（この例では論理回路群７０４の前後の位置）にはスイッチ回路７Ｓ３，７Ｓ４が備えられていると共に、これらのスイッチ回路７Ｓ３，７Ｓ４のオン／オフ制御信号を信号伝達回路８内の論理ゲート８０２（図１２に示す例ではＡＮＤゲートであるとする）を介してテスト装置１の仮想電流電圧測定回路５への出力信号をオン／オフ制御するスイッチ回路８Ｓ２のオン／オフ制御信号としている。
【０１３９】
この例では、所望の論理回路である演算処理回路７０２の後段の論理回路群７０４の前後のスイッチ回路７Ｓ３，７Ｓ４が共にオンした場合に論理回路群７０４へはデジタル変換回路７０３の出力信号が入力されるが、この際同時に論理ゲート８０２から出力される信号によって信号伝達回路８内のスイッチ回路８Ｓ２もオンする。これにより、演算処理回路７０２からの出力信号が信号線７２から信号伝達回路８の入力端子８６，入出力端子８３を経由して出力され、電流電圧測定回路回路５へ入力される。このようにして演算処理回路７０２から信号線７２により外部へ出力されて仮想電流電圧測定回路５へ入力される信号は、演算処理回路７０２へ仮想電流電圧測定回路５から入力された信号を演算処理回路７０２で処理した結果をシミュレーションしている。
【０１４０】
なお、半導体集積回路７内のスイッチ回路７Ｓ１，７Ｓ２，７Ｓ３，７Ｓ４のオン／オフ制御信号は、図示していないが、テストプログラムに基づいて端子１１−７１経由で送られる信号に基づいて半導体集積回路７内で生成される。
【０１４１】
このようなハードウェア記述言語によりモデル化した信号伝達回路８により、所望の論理回路の前後において本来信号が通過する各論理回路の状態を反映させた正しいシミュレーションが可能となる。
【０１４２】
このような技術を使用することにより、ハードウェア記述言語によりモデル化した半導体集積回路７の最上位に電流電圧端子を設ける必要が無くなり、論理シミュレータ上で電流電圧値を用いたシミュレーションが可能となる。
【０１４３】
次に、半導体集積回路用テストプログラムの完成度を検証する本発明の方法について説明する。
【０１４４】
図１３は、半導体集積回路用テストプログラムの完成度を本発明のテスト装置１を使用して検証する際の手順を説明するための模式図である。前述したように、本発明のテスト装置１では、テストプログラムＴＰをテスト装置１に、より具体的には仮想ＲＡＭ３にロードし、ハードウェア記述言語でモデル化した半導体集積回路７を対象としてテストを行なう。従ってここでは、テストプログラムＴＰをテスト装置１の仮想ＲＡＭ３にロードし、ハードウェア記述言語でモデル化した半導体集積回路群７０を対象としてテストを行なう。このような構成を採る場合、ハードウェア記述言語でモデル化した半導体集積回路群７０として、良品と判定すべき種々の特性（設計仕様内に収まる特性）を有する半導体集積回路7-1, 7-2…7-n の全てをハードウェア記述言語でモデル化すること、及び不良品と判定すべき種々の特性（設計仕様を外れた特性）を有する半導体集積回路70-1, 70-2…70-mの全てをハードウェア記述言語でモデル化することは容易である。
【０１４５】
従って、半導体集積回路用テストプログラムが良品と判定すべきハードウェア記述言語でモデル化された半導体集積回路の全てを実際に良品と判定し、不良品と判定すべきハードウェア記述言語でモデル化された半導体集積回の全てを実際に不良品と判定するか否かを確認することが可能になる。
【０１４６】
図１４はこのような本発明のテスト装置を用いた半導体集積回路用テストプログラムの検証方法を実施するための手順を示すフローチャートである。以下、本発明方法の実施手順について具体的に説明する。
【０１４７】
まず、検証対象のテストプログラムと、このテストプログラムによって良品及び不良品と判定されるべき種々の特性を有するようにハードウェア記述言語でモデル化した半導体集積回路７を用意する（ステップＳ８０）。次に、テストプログラムを本発明のテスト装置１の仮想ＲＡＭ３にロードする（ステップＳ８１）。以上で準備が整ったので、用意したハードウェア記述言語でモデル化した半導体集積回路７の全てに対して本発明のテスト装置１によるテストを実行する（ステップＳ８２）。
【０１４８】
このテストの結果、用意した良品と判定すべき種々の特性を有するようにハードウェア記述言語でモデル化した半導体集積回路７の全てが良品と判定され（ステップＳ８３でＹＥＳ）、また用意した不良品と判定すべき種々の特性を有するハードウェア記述言語でモデル化した半導体集積回路７の全てが不良品と判定されれば（ステップＳ８４でＹＥＳ）、テストプログラムの完成度には問題は無いと判定される（ステップＳ８５）。
【０１４９】
一方、ステップＳ８３において、用意した良品と判定すべき種々の特性を有するハードウェア記述言語でモデル化した半導体集積回路７の一つでもが不良品と判定された場合（ステップＳ８３でＮＯ）、または用意した種々の不良品と判定すべき特性を有するハードウェア記述言語でモデル化した半導体集積回路７の一つでもが良品と判定された場合には（ステップＳ８４でＮＯ）、テストプログラムの完成度に問題が有ると判定される（ステップＳ８６）。
【０１５０】
このように、本発明のテスト装置１を利用して半導体集積回路用テストプログラムの完成度を検証する場合には、あらゆる特性を有する良品及び不良品の半導体集積回路をハードウェア記述言語によってモデル化することが可能であるため、実際の半導体集積回路が製造される以前に、また実際の半導体集積回路が製造された後であっても、理論上可能なあらゆる特性を想定して半導体集積回路用テストプログラムの完成度を検証することができる。
【図面の簡単な説明】
【０１５１】
【図１】本発明の仮想テスタの概念的構成を示す模式図である。
【図２】図１にその概念的構成を示す本発明の仮想テスタの各ブロックをコンピュータ上で実際に動作するようにハードウェア記述言語によりモデル化したテスト装置の構成例を示す機能ブロック図である。
【図３】本発明のテスト装置によるシミュレーションの実施手順の一例を示すフローチャートである。
【図４】本発明の半導体集積回路用テストシステムの一実施の形態を示す機能ブロック図である。
【図５】本発明の半導体集積回路用テストシステムのハードウェア記述言語によりモデル化された状態検出回路がテストプログラムに従って半導体集積回路のハイレベル側出力電流を測定する手順及びそれによってテストプログラムにバグが存在するか否かを判定する手順を示すフローチャートである。
【図６】本発明の半導体集積回路用テストシステムのハードウェア記述言語によりモデル化された状態検出回路がテストプログラムに従って半導体集積回路のハイレベル側出力電流を測定する手順及びそれによってテストプログラムにバグが存在するか否かを判定する手順を示すフローチャートである。
【図７】本発明の半導体集積回路用テストシステムのハードウェア記述言語によりモデル化された状態検出回路が半導体集積回路の消費電流を測定する手順及びそれによってテストプログラムにバグが存在するか否かを判定する手順を示すフローチャートである。
【図８】本発明の半導体集積回路用テストシステムのハードウェア記述言語によりモデル化された状態検出回路が半導体集積回路の消費電流を測定する手順及びそれによってテストプログラムにバグが存在するか否かを判定する手順を示すフローチャートである。
【図９】本発明の半導体集積回路用テストシステムのハードウェア記述言語によりモデル化された状態検出回路が半導体集積回路の静止時電流を測定するために半導体集積回路を静止状態にさせる条件を設定する手順及びそれによってテストプログラムにバグが存在するか否かを判定する手順を示すフローチャートである。
【図１０】本発明の半導体集積回路用テストシステムのハードウェア記述言語によりモデル化された状態検出回路が半導体集積回路の静止時電流を測定するために半導体集積回路を静止状態にさせる条件を設定する手順及びそれによってテストプログラムにバグが存在するか否かを判定する手順を示すフローチャートである。
【図１１】本発明の半導体集積回路用テストシステムの他の実施の形態を示す機能ブロック図である。
【図１２】図１１に示す本発明の半導体集積回路用テストシステムの半導体集積回路の内部構成及び上述の信号伝達回路の内部構成と、両者間の信号の送受関係とを示すためのブロック図である。
【図１３】半導体集積回路用テストプログラムの完成度を本発明方法により検証する際の手順を説明するための模式図である。
【図１４】本発明の半導体集積回路用テストプログラムの検証方法を実施するための手順を示すフローチャートである。
【図１５】従来技術の仮想テスタによるシミュレーションの実施手順の一例を示すフローチャートである。
【図１６】半導体集積回路用テストプログラムの完成度を検証するための従来の手法を説明する模式図である。
【符号の説明】
【０１５２】
１  仮想テスタ（テスト装置）
２  仮想ＣＰＵ（ＣＰＵのＰＬＩモデル）
３  仮想ＲＡＭ
４  仮想電源回路
５  仮想電流電圧測定回路
６  状態検出回路
７  半導体集積回路
８  信号伝達回路
２０  仮想ＦＰＧＡ
７０  半導体集積回路群
７００  論理回路群
７０１  実数変換回路
７０２  演算処理回路
７０３  デジタル変換回路
７０４  論理回路群
７Ｓ１  スイッチ回路
７Ｓ２  スイッチ回路
７Ｓ３  スイッチ回路
７Ｓ４  スイッチ回路
８Ｓ１  スイッチ回路
８Ｓ２  スイッチ回路
８０１  論理ゲート
８０２  論理ゲート
【図１】
2005032191.tif 000003
【図２】
2005032191.tif 000004
【図３】
2005032191.tif 000005
【図４】
2005032191.tif 000006
【図５】
2005032191.tif 000007
【図６】
2005032191.tif 000008
【図７】
2005032191.tif 000009
【図８】
2005032191.tif 000010
【図９】
2005032191.tif 000011
【図１０】
2005032191.tif 000012
【図１１】
2005032191.tif 000013
【図１２】
2005032191.tif 000014
【図１３】
2005032191.tif 000015
【図１４】
2005032191.tif 000016
【図１５】
2005032191.tif 000017
【図１６】
2005032191.tif 000018