(57)【要約】【課題】  それぞれの検証作業で意図しないレジスタ設定となることを回避することができ、テスト設計者は他のテストとのレジスタ競合を考えることなくテストを設計することができる機能検証装置、テストベンチ、シミュレータプログラム及び記憶媒体を提供する。【解決手段】  各テストシナリオ１０２，１０３からのモデル５０へのレジスタ書き込み要求を順次受け付け、ＣＰＵバスモデル１０６からのモデル５０へのレジスタ書き込みが終了したことの通知を確認してから、次のレジスタ書き込み要求を処理するレジスタ調停モジュール１０７を備える。これにより、複数のシナリオがほぼ同じタイミングで同一のレジスタに書き込まれることがなくなるので、それぞれの検証作業で意図しないレジスタ設定となることを回避することができ、テスト設計者は他のテストとのレジスタ競合を考えることなくテストを設計することができる。【選択図】    図２
2006018488.tif 000002
【特許請求の範囲】
【請求項１】
ハードウェア記述言語により設計されたモデルについての機能検証を、テストベンチを用いたシミュレーション結果に基づいて行う機能検証装置において、
前記テストベンチは、
前記モデルに備えられた複数のＩ／Ｆ系バスに応答もしくはアクセスするための複数のバスモデルと、
前記モデルへのレジスタ設定や前記各バスモデルへの動作機能設定を行い、前記モデルに種々のテスト動作を実行させるための指示を出す複数のテストシナリオと、
前記モデルにバス接続される仮想的なＣＰＵであるＣＰＵバスモデルと、
前記各テストシナリオからの前記モデルへのレジスタ書き込み要求を順次受け付け、前記ＣＰＵバスモデルからの前記モデルへのレジスタ書き込みが終了したことの通知を確認してから、次のレジスタ書き込み要求を処理するレジスタ調停モジュールと、
を備えることを特徴とする機能検証装置。
【請求項２】
前記テストベンチは、レジスタ書き込み要求元の前記テストシナリオが持つ優先順位に基づいてレジスタ書き込みを行うようにした、
ことを特徴とする請求項１記載の機能検証装置。
【請求項３】
前記テストベンチは、前記モデルへのレジスタ書き込み要求が複数あった場合には、複数のレジスタ書き込み要求の条件が合致していることを条件として複数のレジスタ書き込み要求を１つにまとめて、一度に書き込みを行うようにする、
ことを特徴とする請求項１または２記載の機能検証装置。
【請求項４】
ハードウェア記述言語により設計されたモデルに対する各種のシミュレーションを行うテストベンチにおいて、
前記モデルに備えられた複数のＩ／Ｆ系バスに応答もしくはアクセスするための複数のバスモデルと、
前記モデルへのレジスタ設定や前記各バスモデルへの動作機能設定を行い、前記モデルに種々のテスト動作を実行させるための指示を出す複数のテストシナリオと、
前記モデルにバス接続される仮想的なＣＰＵであるＣＰＵバスモデルと、
前記各テストシナリオからの前記モデルへのレジスタ書き込み要求を順次受け付け、前記ＣＰＵバスモデルからの前記モデルへのレジスタ書き込みが終了したことの通知を確認してから、次のレジスタ書き込み要求を処理するレジスタ調停モジュールと、
を備えることを特徴とするテストベンチ。
【請求項５】
レジスタ書き込み要求元の前記テストシナリオが持つ優先順位に基づいてレジスタ書き込みを行うようにした、
ことを特徴とする請求項４記載のテストベンチ。
【請求項６】
前記モデルへのレジスタ書き込み要求が複数あった場合には、複数のレジスタ書き込み要求の条件が合致していることを条件として複数のレジスタ書き込み要求を１つにまとめて、一度に書き込みを行うようにする、
ことを特徴とする請求項４または５記載のテストベンチ。
【請求項７】
ハードウェア記述言語により設計されたモデルに対する各種のシミュレーションをコンピュータに実行させるコンピュータに読取り可能なシミュレータプログラムにおいて、
前記モデルに備えられた複数のＩ／Ｆ系バスに応答もしくはアクセスするための複数のバスモデルを生成する機能と、
前記モデルへのレジスタ設定や前記各バスモデルへの動作機能設定を行い、前記モデルに種々のテスト動作を実行させるための指示を出す複数のテストシナリオを生成する機能と、
前記モデルにバス接続される仮想的なＣＰＵであるＣＰＵバスモデルを生成する機能と、
前記各テストシナリオからの前記モデルへのレジスタ書き込み要求を順次受け付け、前記ＣＰＵバスモデルからの前記モデルへのレジスタ書き込みが終了したことの通知を確認してから、次のレジスタ書き込み要求を処理するレジスタ調停モジュールを生成する機能と、
を前記コンピュータに実行させることを特徴とするシミュレータプログラム。
【請求項８】
レジスタ書き込み要求元の前記テストシナリオが持つ優先順位に基づいてレジスタ書き込みを行うようにした、
ことを特徴とする請求項７記載のシミュレータプログラム。
【請求項９】
前記モデルへのレジスタ書き込み要求が複数あった場合には、複数のレジスタ書き込み要求の条件が合致していることを条件として複数のレジスタ書き込み要求を１つにまとめて、一度に書き込みを行うようにする、
ことを特徴とする請求項７または８記載のシミュレータプログラム。
【請求項１０】
請求項７ないし９の何れか一記載のコンピュータに読取り可能なシミュレータプログラムを格納したことを特徴とする記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェア記述言語により設計されたモデルについての機能検証を、テストベンチを用いたシミュレーション結果に基づいて行う機能検証装置、テストベンチ、シミュレータプログラム及び記憶媒体に関する。
【背景技術】
【０００２】
近年、ＡＳＩＣ（Application Specified IC）の設計手法は、その回路規模の増大に伴い、回路図による設計から抽象度の高いＨＤＬ（ハードウェア記述言語）によるディジタル回路設計へと移ってきている。このＨＤＬにより設計される回路図は、きわめて膨大であり、動作がきわめて複雑になる。そのため、ＨＤＬにより設計された回路は、ＨＤＬで記述された他のモジュールと合わせてシミュレーション等を行うＨＤＬシミュレータを用いることにより、機能検証作業を行うことが必要となっている。
【０００３】
より詳細には、ＨＤＬシミュレータは工程の全ての局面で使用されるものであり、各レベルでのシミュレーション結果に基本的な差がないことを確認するものである。このようなＨＤＬシミュレータは、検証の対象とするＨＤＬモデル（ＡＳＩＣ）に対して、それをテストするためのテストベンチと呼ぶ新たなＨＤＬ記述を追加する。テストベンチは、テスト・スティミュラス（テスト・ベクター）を含み、これをテストの対象とするＨＤＬモデル（ＡＳＩＣ）に与え、シミュレーションを自動実行させるような手順をＨＤＬで記述するものである。すなわち、図７に示すような、テストベンチ・モジュールを最上位とする１つのモデルが完成することになる。これをコンパイル、リンクしてコンピュータ上の実行モジュールを作成し、シミュレータ・コントロール・パネル上で実行をコントロールしながら波形を観察することにより、機能検証を行う。
【０００４】
例えば、特許文献１には、テストベンチを用いてコンピュータシミュレーションすることにより、半導体集積回路装置の機能を検証するテスト用プログラムが提案されている。
【０００５】
【特許文献１】特開２００２−８３０１０公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、ＨＤＬモデル（ＡＳＩＣ）の検証において、複数の検証を同時に行う場合、検証対象のＨＤＬモデル（ＡＳＩＣ）に内蔵されている１つのレジスタに対してほぼ同時に書き込みを行う場合がある。ここで、複数のシナリオが存在する場合において、シナリオが直接ＣＰＵバスモデルにアクセスし、ＣＰＵバスモデルに同じレジスタの書き込み要求がほぼ同時に来た場合について説明する。この場合、図８に示すように、シナリオ１によりレジスタＡにＸが書き込まれた後、シナリオ２によりレジスタＡにＹが書き込まれることから、先にレジスタＡにＸを書き込んだシナリオ１は、レジスタＡにＸを書き込んだ影響を検証できない。
【０００７】
すなわち、複数のシナリオがほぼ同じタイミングで同一のレジスタに書き込みを行う場合、それぞれの検証作業では意図しないレジスタ設定となるおそれがある。
【０００８】
本発明は、それぞれの検証作業で意図しないレジスタ設定となることを回避することができ、テスト設計者は他のテストとのレジスタ競合を考えることなくテストを設計することができる機能検証装置、テストベンチ、シミュレータプログラム及び記憶媒体を提供することを目的とする。
【課題を解決するための手段】
【０００９】
請求項１記載の発明の機能検証装置は、ハードウェア記述言語により設計されたモデルについての機能検証を、テストベンチを用いたシミュレーション結果に基づいて行う機能検証装置において、前記テストベンチは、前記モデルに備えられた複数のＩ／Ｆ系バスに応答もしくはアクセスするための複数のバスモデルと、前記モデルへのレジスタ設定や前記各バスモデルへの動作機能設定を行い、前記モデルに種々のテスト動作を実行させるための指示を出す複数のテストシナリオと、前記モデルにバス接続される仮想的なＣＰＵであるＣＰＵバスモデルと、前記各テストシナリオからの前記モデルへのレジスタ書き込み要求を順次受け付け、前記ＣＰＵバスモデルからの前記モデルへのレジスタ書き込みが終了したことの通知を確認してから、次のレジスタ書き込み要求を処理するレジスタ調停モジュールと、を備える。
【００１０】
したがって、ＣＰＵバスモデルからの書き込みが終了したことの通知（レジスタ書き換え可能通知）を確認してから次のレジスタ書き込み要求に対して処理を行うので、複数のシナリオがほぼ同じタイミングで同一のレジスタに書き込まれることがなくなるので、それぞれの検証作業で意図しないレジスタ設定となることを回避することが可能になり、テスト設計者は他のテストとのレジスタ競合を考えることなくテストを設計することが可能になる。
【００１１】
請求項２記載の発明は、請求項１記載の機能検証装置において、前記テストベンチは、レジスタ書き込み要求元の前記テストシナリオが持つ優先順位に基づいてレジスタ書き込みを行うようにした。
【００１２】
したがって、シナリオの実行の時間的な前後関係を維持することが可能になるので、テストベンチ作成者が意図したテストのシーケンスでのテストを行うことが可能になる。
【００１３】
請求項３記載の発明は、請求項１または２記載の機能検証装置において、前記テストベンチは、前記モデルへのレジスタ書き込み要求が複数あった場合には、複数のレジスタ書き込み要求の条件が合致していることを条件として複数のレジスタ書き込み要求を１つにまとめて、一度に書き込みを行うようにする。
【００１４】
したがって、ＣＰＵバスモデルを介したモデルに対するレジスタ書き込み時間（書き込み回数）を減らし、検証時間を短縮することが可能になるので、テストの実行時間を削減することが可能になる。
【００１５】
請求項４記載の発明のテストベンチは、ハードウェア記述言語により設計されたモデルに対する各種のシミュレーションを行うテストベンチにおいて、前記モデルに備えられた複数のＩ／Ｆ系バスに応答もしくはアクセスするための複数のバスモデルと、前記モデルへのレジスタ設定や前記各バスモデルへの動作機能設定を行い、前記モデルに種々のテスト動作を実行させるための指示を出す複数のテストシナリオと、前記モデルにバス接続される仮想的なＣＰＵであるＣＰＵバスモデルと、前記各テストシナリオからの前記モデルへのレジスタ書き込み要求を順次受け付け、前記ＣＰＵバスモデルからの前記モデルへのレジスタ書き込みが終了したことの通知を確認してから、次のレジスタ書き込み要求を処理するレジスタ調停モジュールと、を備える。
【００１６】
したがって、ＣＰＵバスモデルからの書き込みが終了したことの通知（レジスタ書き換え可能通知）を確認してから次のレジスタ書き込み要求に対して処理を行うので、複数のシナリオがほぼ同じタイミングで同一のレジスタに書き込まれることがなくなるので、それぞれの検証作業で意図しないレジスタ設定となることを回避することが可能になり、テスト設計者は他のテストとのレジスタ競合を考えることなくテストを設計することが可能になる。
【００１７】
請求項５記載の発明は、請求項４記載のテストベンチにおいて、レジスタ書き込み要求元の前記テストシナリオが持つ優先順位に基づいてレジスタ書き込みを行うようにした。
【００１８】
したがって、シナリオの実行の時間的な前後関係を維持することが可能になるので、テストベンチ作成者が意図したテストのシーケンスでのテストを行うことが可能になる。
【００１９】
請求項６記載の発明は、請求項４または５記載のテストベンチにおいて、前記モデルへのレジスタ書き込み要求が複数あった場合には、複数のレジスタ書き込み要求の条件が合致していることを条件として複数のレジスタ書き込み要求を１つにまとめて、一度に書き込みを行うようにする。
【００２０】
したがって、ＣＰＵバスモデルを介したモデルに対するレジスタ書き込み時間（書き込み回数）を減らし、検証時間を短縮することが可能になるので、テストの実行時間を削減することが可能になる。
【００２１】
請求項７記載の発明のシミュレータプログラムは、ハードウェア記述言語により設計されたモデルに対する各種のシミュレーションをコンピュータに実行させるコンピュータに読取り可能なシミュレータプログラムにおいて、前記モデルに備えられた複数のＩ／Ｆ系バスに応答もしくはアクセスするための複数のバスモデルを生成する機能と、前記モデルへのレジスタ設定や前記各バスモデルへの動作機能設定を行い、前記モデルに種々のテスト動作を実行させるための指示を出す複数のテストシナリオを生成する機能と、前記モデルにバス接続される仮想的なＣＰＵであるＣＰＵバスモデルを生成する機能と、前記各テストシナリオからの前記モデルへのレジスタ書き込み要求を順次受け付け、前記ＣＰＵバスモデルからの前記モデルへのレジスタ書き込みが終了したことの通知を確認してから、次のレジスタ書き込み要求を処理するレジスタ調停モジュールを生成する機能と、を前記コンピュータに実行させる。
【００２２】
したがって、ＣＰＵバスモデルからの書き込みが終了したことの通知（レジスタ書き換え可能通知）を確認してから次のレジスタ書き込み要求に対して処理を行うので、複数のシナリオがほぼ同じタイミングで同一のレジスタに書き込まれることがなくなるので、それぞれの検証作業で意図しないレジスタ設定となることを回避することが可能になり、テスト設計者は他のテストとのレジスタ競合を考えることなくテストを設計することが可能になる。
【００２３】
請求項８記載の発明は、請求項７記載のシミュレータプログラムにおいて、レジスタ書き込み要求元の前記テストシナリオが持つ優先順位に基づいてレジスタ書き込みを行うようにした。
【００２４】
したがって、シナリオの実行の時間的な前後関係を維持することが可能になるので、テストベンチ作成者が意図したテストのシーケンスでのテストを行うことが可能になる。
【００２５】
請求項９記載の発明は、請求項７または８記載のシミュレータプログラムにおいて、前記モデルへのレジスタ書き込み要求が複数あった場合には、複数のレジスタ書き込み要求の条件が合致していることを条件として複数のレジスタ書き込み要求を１つにまとめて、一度に書き込みを行うようにする。
【００２６】
したがって、ＣＰＵバスモデルを介したモデルに対するレジスタ書き込み時間（書き込み回数）を減らし、検証時間を短縮することが可能になるので、テストの実行時間を削減することが可能になる。
【００２７】
請求項１０記載の発明の記憶媒体は、請求項７ないし９の何れか一記載のコンピュータに読取り可能なシミュレータプログラムを格納した。
【００２８】
したがって、請求項７ないし９の何れか一記載の発明と同様な作用を奏する。
【発明の効果】
【００２９】
本発明によれば、それぞれの検証作業で意図しないレジスタ設定となることを回避することができ、テスト設計者は他のテストとのレジスタ競合を考えることなくテストを設計することができる。
【発明を実施するための最良の形態】
【００３０】
［第一の実施の形態］
本発明の第一の実施の形態を図１ないし図５に基づいて説明する。
【００３１】
図１は、本発明が適用される機能検証装置１のハードウェア構成を概略的に示すブロック図である。図１に示すように、機能検証装置１は、例えばパーソナルコンピュータやワークステーションであり、コンピュータの主要部であって各部を集中的に制御するＣＰＵ（Central Processing Unit）２を備えている。このＣＰＵ２には、ＢＩＯＳなどを記憶した読出し専用メモリであるＲＯＭ（Read Only Memory）３と、各種データを書換え可能に記憶するＲＡＭ（Random Access Memory）４とがバス５で接続されている。
【００３２】
さらにバス５には、各種のプログラム等を格納するＨＤＤ（Hard Disk Drive）６と、配布されたプログラムであるコンピュータソフトウェアを読み取るための機構としてＣＤ（Compact Disc）−ＲＯＭ７を読み取るＣＤ−ＲＯＭドライブ８と、機能検証装置１とネットワーク９との通信を司る通信制御装置１０と、機能検証時の各種操作指示を行うキーボードやマウスなどの入力装置１１と、機能検証時のシミュレーション結果等を表示するＣＲＴ（Cathode Ray Tube）、ＬＣＤ（Liquid Crystal Display）などの表示装置１２とが、図示しないＩ／Ｏを介して接続されている。
【００３３】
ＲＡＭ４は、各種データを書換え可能に記憶する性質を有していることから、ＣＰＵ２の作業エリアとして機能してバッファ等の役割を果たす。
【００３４】
図１に示すＣＤ−ＲＯＭ７は、この発明の記憶媒体を実施するものであり、ＯＳ（Operating System）や各種のプログラムが記憶されている。ＣＰＵ２は、ＣＤ−ＲＯＭ７に記憶されているプログラムをＣＤ−ＲＯＭドライブ８で読み取り、ＨＤＤ６にインストールする。
【００３５】
なお、記憶媒体としては、ＣＤ−ＲＯＭ７のみならず、ＤＶＤなどの各種の光ディスク、各種光磁気ディスク、フレキシブル・ディスクなどの各種磁気ディスク等、半導体メモリ等の各種方式のメディアを用いることができる。また、通信制御装置１０を介してインターネットなどのネットワーク９からプログラムをダウンロードし、ＨＤＤ６にインストールするようにしてもよい。この場合に、送信側のサーバでプログラムを記憶している記憶装置も、この発明の記憶媒体である。なお、プログラムは、所定のＯＳ（Operating System）上で動作するものであってもよいし、その場合に後述の各種処理の一部の実行をＯＳに肩代わりさせるものであってもよいし、所定のアプリケーションソフトやＯＳなどを構成する一群のプログラムファイルの一部として含まれているものであってもよい。
【００３６】
このシステム全体の動作を制御するＣＰＵ２は、このシステムの主記憶として使用されるＨＤＤ６上にロードされたプログラムに基づいて各種処理を実行する。
【００３７】
次に、機能検証装置１のＨＤＤ６にインストールされている各種のプログラムがＣＰＵ２に実行させる機能のうち、本実施の形態の機能検証装置１が備える特長的な機能について説明する。ここでは、ＨＤＬシミュレータプログラムがＣＰＵ２に実行させるＨＤＬシミュレータ機能について説明する。ＨＤＬシミュレータ機能は、概略的には、ＨＤＬ（ハードウェア記述言語）により設計されたモデルに対してシミュレーションを行うものである。
【００３８】
図２は、ＨＤＬシミュレータ１００のテストベンチ１０１と検証対象ＡＳＩＣ５０との関連構成を概略的に示す機能ブロック図である。ＨＤＬシミュレータ１００は、ＨＤＬにより設計されたモデルである検証対象ＡＳＩＣ５０に対するＨＤＬシミュレータ機能を発揮するものである。図２に示すように、ＨＤＬシミュレータ１００のテストベンチ１０１は、第１テストシナリオ１０２と、第２テストシナリオ１０３と、第１バスモデル１０４と、第２バスモデル１０５と、ＣＰＵバスモデル１０６と、レジスタ調停モジュール１０７とで構成される。このようなテストベンチ１０１は、検証対象ＡＳＩＣ５０を検証するために、Verilog、VHDL、C/C++、Ｅ言語、Vera等の言語を用いてコーディングされたものである。
【００３９】
第１バスモデル１０４及び第２バスモデル１０５は、検証対象ＡＳＩＣ５０の対応するＩ／Ｆ系バス（図示せず）に応答もしくはアクセスするためのものである。
【００４０】
ＣＰＵバスモデル１０６は、検証対象ＡＳＩＣ５０に接続されるＣＰＵ（図示せず）をソフトウェアでモデル化したもの（ソフトウェアで書かれた仮想的なＣＰＵ）である。
【００４１】
第１テストシナリオ１０２は第１バスモデル１０４に対応したテストシナリオであり、第２テストシナリオ１０３は第２バスモデル１０５に対応したテストシナリオである。第１テストシナリオ１０２及び第２テストシナリオ１０３は、検証対象ＡＳＩＣ５０に種々の動作をさせるためのプログラムであり、ＣＰＵバスモデル１０６及びレジスタ調停モジュール１０７を経由して検証対象ＡＳＩＣ５０へのレジスタ設定や第１バスモデル１０４又は第２バスモデル１０５への機能設定等を行う。検証対象ＡＳＩＣ５０にはレジスタ（ＡＳＩＣの種々動作を司る機能）が内蔵されており、このレジスタに対する第１テストシナリオ１０２及び第２テストシナリオ１０３からのアクセス又は指示によって、検証対象ＡＳＩＣ５０が所望の動作を実行するのである。
【００４２】
次に、レジスタ調停モジュール１０７について説明する。本実施の形態に係るテストベンチ１０１の特徴は、このレジスタ調停モジュール１０７を備え、レジスタの書き込みされた影響を各テストシナリオが確認した上で、次のレジスタ書き込み要求を処理することにある。
【００４３】
ここで、図３はレジスタ調停モジュール１０７における調停処理の流れを示すフローチャート、図４はそのフローチャートを補足するステートチャートである。図３または図４に示すように、シナリオ（第１テストシナリオ１０２または第２テストシナリオ１０３）からレジスタ調停モジュール１０７にレジスタ書き込み要求がきたと判断すると（ステップＳ１のＹ）、ＣＰＵバスモデル１０６を介した検証対象ＡＳＩＣ５０に対するレジスタ書き込みを実行する（ステップＳ２）。そして、レジスタ調停モジュール１０７は、ＣＰＵバスモデル１０６からレジスタ書き込みが完了した通知を受け取ると、レジスタ書き込み要求をしたシナリオ（第１テストシナリオ１０２または第２テストシナリオ１０３）に、書き込みが終了したことを通知（レジスタ書き換え可能通知）する（ステップＳ３）。
【００４４】
その後、レジスタ調停モジュール１０７は、レジスタ書き換え可能通知の受信（ステップＳ４のＹ）、またはシナリオ（第１テストシナリオ１０２または第２テストシナリオ１０３）からのレジスタ書き込み要求の受信（ステップＳ５のＹ）に、待機する。
【００４５】
そして、シナリオ（第１テストシナリオ１０２または第２テストシナリオ１０３）からレジスタ調停モジュール１０７にレジスタ書き込み要求が来たと判断すると（ステップＳ５のＹ）、ＣＰＵバスモデル１０６を介した検証対象ＡＳＩＣ５０に対するレジスタ書き込み要求をスタックするとともに（ステップＳ６）、スタックされたレジスタ書き込み要求を優先順位に基づいてソートした後（ステップＳ７）、レジスタ調停モジュール１０７は、レジスタ書き換え可能通知の受信（ステップＳ４のＹ）、またはシナリオ（第１テストシナリオ１０２または第２テストシナリオ１０３）からのレジスタ書き込み要求の受信（ステップＳ５のＹ）に、待機する。
【００４６】
一方、レジスタ調停モジュール１０７は、レジスタ書き換え可能通知が来たと判断すると（ステップＳ４のＹ）、ＣＰＵバスモデル１０６を介した検証対象ＡＳＩＣ５０に対するレジスタ書き込み要求スタックが積まれているか否かを判断する（ステップＳ８）。ＣＰＵバスモデル１０６に対するレジスタ書き込み要求スタックが積まれていると判断した場合には（ステップＳ８のＹ）、レジスタ書き込み要求元のシナリオが持つ優先順位が最も高いレジスタ書き込み要求に従い、ＣＰＵバスモデル１０６を介した検証対象ＡＳＩＣ５０に対するレジスタ書き込みを実行する（ステップＳ２）。また、ＣＰＵバスモデル１０６を介した検証対象ＡＳＩＣ５０に対するレジスタ書き込み要求スタックが積まれていないと判断した場合には（ステップＳ８のＮ）、ステップＳ１に戻り、シナリオ（第１テストシナリオ１０２または第２テストシナリオ１０３）からのレジスタ書き込み要求に待機する。
【００４７】
以上のような処理により、レジスタ調停モジュール１０７は、ＣＰＵバスモデル１０６からの書き込みが終了したことの通知（レジスタ書き換え可能通知）を確認してから次のレジスタ書き込み要求に対して処理を行うので、複数のシナリオがほぼ同じタイミングで同一のレジスタに書き込まれることがなくなり、それぞれの検証作業で意図しないレジスタ設定となることを回避することができ、テスト設計者は他のテストとのレジスタ競合を考えることなくテストを設計することができる。
【００４８】
より具体的には、図５に示すように、複数のシナリオが存在する場合において、シナリオ（第１テストシナリオ１０２または第２テストシナリオ１０３）がＣＰＵバスモデル１０６にアクセスし、ＣＰＵバスモデル１０６に同じレジスタの書き込み要求がほぼ同時に来た場合、第１テストシナリオ１０２によりレジスタＡにＸが書き込まれた後、ＣＰＵバスモデル１０６からの書き込みが終了したことの通知（レジスタ書き換え可能通知）を確認してから、第２テストシナリオ１０３によりレジスタＡにＹが書き込まれることから、先にレジスタＡにＸを書き込んだ第１テストシナリオ１０２は、レジスタＡにＸを書き込んだ影響を検証することができる。
【００４９】
また、レジスタ書き込み要求元のシナリオが持つ優先順位に基づいてレジスタ書き込みを行うようにしたことにより、シナリオの実行の時間的な前後関係を維持することができる。例えば、ＣＰＵバスモデル１０６のレジスタＡに対して、シナリオ１が「割り込み要求を再開する命令を実行したい」を要求したとする。この要求の書き込み優先度は、シナリオ２より高いものとする。一方、シナリオ２が「割り込み要求が行える状況で、ある命令を実行したい」を要求したとする。この場合、シナリオ２は、シナリオ１の要求が通らないと、シナリオが意図していた正しい結果を得られない。ここで、シナリオ２の要求が先に入ってきた時点では、レジスタＡを書き込み出来ない。その後、シナリオ１の要求が入ってきてレジスタＡが書き込み出来る状態になった場合、シナリオ１の優先順位が高いためにシナリオ１の要求に沿ってレジスタを書き換えるので、シナリオ２の要求に沿ってレジスタを書き換えることができるようになる。これによって、シナリオ１と２は正しい結果を得ることができる。つまり、シナリオ２の実行がシナリオ１の実行後であるのが前提条件の場合、この仕組みを使うと、シナリオの実行の時間的な前後関係が維持されることになり、テストベンチ作成者が意図したテストのシーケンスでのテストを行うことができる。
【００５０】
［第二の実施の形態］
本発明の第二の実施の形態を図６に基づいて説明する。なお、前述した第一の実施の形態と同一部分は同一符号で示し説明も省略する。本実施の形態は、前述した第一の実施の形態とは、レジスタ調停モジュール１０７における調停処理におけるＣＰＵバスモデル１０６に対するレジスタ書き込みの際に、レジスタへの複数のアクセス要求をとりまとめて一度に書き込みを行うようにしたものである。
【００５１】
ここで、図６はレジスタ書き込みとりまとめ処理の流れを示すフローチャートである。図６に示すように、まず、レジスタに値Ａを書き込み要求として設定したと判断すると（ステップＳ１１のＹ）、レジスタ書き込み予定値としてＡを設定する（ステップＳ１２）。
【００５２】
その後、シナリオ（第１テストシナリオ１０２または第２テストシナリオ１０３）からのレジスタ書き込み要求がきたと判断すると（ステップＳ１３のＹ）、その書き込み要求値をＸとした時、レジスタ書き込み予定値にＸを追加設定する（ステップＳ１４）。
【００５３】
ステップＳ１３〜Ｓ１４の処理は、レジスタを書き込みできると判断するまで（ステップＳ１５のＹ）、すなわち予め定められた時間が経過するまで、あるいはＣＰＵのリソースが空いていると判断されるまで、繰り返される。
【００５４】
レジスタを書き込みできると判断した場合には（ステップＳ１５のＹ）、ＣＰＵバスモデル１０６を介した検証対象ＡＳＩＣ５０に対するレジスタ書き込みを実行し（ステップＳ１６）、ステップＳ１に戻る。
【００５５】
より具体的には、検証対象ＡＳＩＣ５０のレジスタの各ビットの意味が他のビットと干渉しない場合に、例えば、「０ビット目に１を書き込むと機能Ａが起動される」、「１ビット目に１を書き込むと機能Ｂが起動される」というようにする。それぞれのビットに１（または０）を書き込むことによって起動される機能がそれぞれの機能に直接的な干渉を及ぼさない場合、レジスタへの複数のアクセス要求をとりまとめて一度に書き込みを行うようにすることができ、この機能を使うことによって、レジスタアクセスに費やす時間を減らすことができるようになる。
【００５６】
これにより、ＣＰＵバスモデル１０６を介した検証対象ＡＳＩＣ５０に対するレジスタ書き込み時間（書き込み回数）を減らし、検証時間を短縮することができるので、テストの実行時間を削減することができる。
【図面の簡単な説明】
【００５７】
【図１】本発明の第一の実施の形態の機能検証装置のハードウェア構成を概略的に示すブロック図である。
【図２】ＨＤＬシミュレータのテストベンチと検証対象ＡＳＩＣとの関連構成を概略的に示す機能ブロック図である。
【図３】レジスタ調停モジュールにおける調停処理の流れを示すフローチャートである。
【図４】そのフローチャートを補足するステートチャートである。
【図５】レジスタの書き込み調停がある場合のシーケンスの具体例を示す説明図である。
【図６】本発明の第二の実施の形態のレジスタ書き込みとりまとめ処理の流れを示すフローチャートである。
【図７】ＨＤＬシミュレータの構成を概略的に示す模式図である。
【図８】ＣＰＵバスモデルに同じレジスタの書き込み要求がほぼ同時に来た場合のシーケンスの具体例を示す説明図である。
【符号の説明】
【００５８】
１      機能検証装置
７      記憶媒体
５０        ハードウェア記述言語により設計されたモデル
１０１      テストベンチ
１０２，１０３      テストシナリオ
１０４，１０５      バスモデル
１０６      ＣＰＵバスモデル
１０７      レジスタ調停モジュール
【図１】
2006018488.tif 000003
【図２】
2006018488.tif 000004
【図３】
2006018488.tif 000005
【図４】
2006018488.tif 000006
【図５】
2006018488.tif 000007
【図６】
2006018488.tif 000008
【図７】
2006018488.tif 000009
【図８】
2006018488.tif 000010