(57)【要約】【課題】被試験装置の競合試験等の試験の網羅性を高めることができる技術を提供する。【解決手段】本試験方法では、乱数を用いて試験データを生成する処理（Ｓ２０）、試験結果の期待値を生成する処理（Ｓ２１）、試験の監視のためのアサーションチェッカーを起動する処理（Ｓ２２）、被試験装置に対し試験を実行する処理（Ｓ２３）、アサーションチェッカーによる監視情報を蓄積する処理（Ｓ２５）、試験結果を出力する処理（Ｓ２７）、監視情報を採取して解析し、カバレッジ情報を更新する処理（Ｓ２６，Ｓ３２，Ｓ３３）、カバレッジ情報に基づき、試験データによる試験の内容を調整する処理（Ｓ３４）等を有する。【選択図】図４
2010044622.tif 000002
【特許請求の範囲】
【請求項１】
試験者の操作に応じて論理シミュレータ上で情報処理装置の被試験装置の試験を行う処理をコンピュータに実行させる情報処理装置試験プログラムであって、
（Ａ）試験プログラムにより乱数を用いて前記被試験装置の試験のための試験データを生成する処理と、
（Ｂ）前記試験データによる試験の結果の期待値を生成する処理と、
（Ｃ）前記試験データによる試験を対象とした監視のためのプログラムであるアサーションチェッカーを前記試験の開始に伴い起動する処理と、
（Ｄ）前記情報処理装置の被試験装置におけるプロセッサ、周辺装置、及び記憶装置を含む複数の要素に対し一斉に前記試験データによる試験を実行する処理と、
（Ｅ）前記試験の実行時に前記アサーションチェッカーによる前記要素の監視を行って、当該監視により抽出した監視情報を蓄積する処理と、
（Ｆ）前記試験の実行結果と前記期待値とを比較して結果を出力する処理と、
（Ｇ）前記監視情報を採取し、当該採取した監視情報を解析し、当該解析結果を用いて、前記試験の網羅性を管理するためのカバレッジ情報を更新する処理と、
（Ｈ）前記更新されたカバレッジ情報に基づき、前記試験の内容を調整するか否かを判断し、調整する場合、当該調整する対象を選定し、当該調整する対象に関する前記試験データによる試験の内容を調整する処理と、
（Ｉ）前記調整された前記試験データによる試験を実行する処理と、を前記コンピュータに実行させること、を特徴とする情報処理装置試験プログラム。
【請求項２】
請求項１記載の情報処理装置試験プログラムにおいて、
前記（Ｇ）の処理ステップでは、前記更新の際、蓄積済みの前記カバレッジ情報に対し、前記（Ａ）により生成された前記試験データの内容と、前記複数の要素の同時並行動作に関するタイミング情報とを加え合わせ、
前記タイミング情報は、前記要素の動作タイミングの情報、前記同時並行動作に関する競合時間及び競合回数の情報が含まれ、
前記（Ｈ）の処理ステップでは、前記タイミング情報を用いて、前記複数の要素の同時並行動作に関する競合性の低い部位を、前記調整の対象として選択すること、を特徴とする情報処理装置試験プログラム。
【請求項３】
請求項１または２に記載の情報処理装置試験プログラムにおいて、
前記（Ｈ）の処理ステップでは、前記カバレッジ情報と、乱数とを組み合わせて用いて、前記調整する対象となる要素を選定するものであり、
当該選定では、前記複数の要素のうち同時並行動作に関する競合性の低い部位を優先的に候補として決定し、当該候補の中から前記乱数により前記調整する対象を選定すること、を特徴とする情報処理装置試験プログラム。
【請求項４】
請求項１〜３のいずれか一項に記載の情報処理装置試験プログラムにおいて、
前記（Ｈ）の処理ステップでは、前記調整する対象に関し、前記（Ａ）の処理ステップで生成済みの前記試験データのうちの試験命令列を再利用してそのパラメータを再生成することで前記試験の内容を調整すること、を特徴とする情報処理装置試験プログラム。
【請求項５】
請求項１記載の情報処理装置試験プログラムにおいて、
前記試験における前記被試験装置における前記複数の要素に関して、実行タイミング及び同時並行動作に関する競合性を表すタイムチャートを、コンピュータの画面に表示する処理を行うこと、を特徴とする情報処理装置試験プログラム。
【請求項６】
試験者の操作に応じて論理シミュレータ上で情報処理装置の被試験装置の試験を行う情報処理装置試験方法であって、
（Ａ）試験プログラムにより乱数を用いて前記被試験装置の試験のための試験データを生成する処理ステップと、
（Ｂ）前記試験データによる試験の結果の期待値を生成する処理ステップと、
（Ｃ）前記試験データによる試験を対象とした監視のためのプログラムであるアサーションチェッカーを前記試験の開始に伴い起動する処理ステップと、
（Ｄ）前記情報処理装置の被試験装置におけるプロセッサ、周辺装置、及び記憶装置を含む複数の要素に対し一斉に前記試験データによる試験を実行する処理ステップと、
（Ｅ）前記試験の実行時に前記アサーションチェッカーによる前記要素の監視を行って、当該監視により抽出した監視情報を蓄積する処理ステップと、
（Ｆ）前記試験の実行結果と前記期待値とを比較して結果を出力する処理ステップと、
（Ｇ）前記監視情報を採取し、当該採取した監視情報を解析し、当該解析結果を用いて、前記試験の網羅性を管理するためのカバレッジ情報を更新する処理ステップと、
（Ｈ）前記更新されたカバレッジ情報に基づき、前記試験の内容を調整するか否かを判断し、調整する場合、当該調整する対象を選定し、当該調整する対象に関する前記試験データによる試験の内容を調整する処理ステップと、
（Ｉ）前記調整された前記試験データによる試験を実行する処理ステップと、を有すること、を特徴とする情報処理装置試験方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路（ＩＣ）等の情報処理装置における論理回路等の機能（論理）等を対象とした試験（テスト）の方法に関し、特に、乱数を用いてランダムな試験を行う方法を用いて、被試験装置の複数の要素（プロセッサ等）を試験する方法に関する。
【背景技術】
【０００２】
従来技術における情報処理装置の試験方法は以下である。情報処理装置（以下、被試験装置と称する）の論理的制御部を構成する論理回路等を対象とした試験を行う。この試験の被試験装置は、プロセッサ（ＣＰＵ）、記憶装置（メモリ）、及び入出力装置等の周辺装置、等を有する構成である。またそれらの要素を接続して通信可能とするバス（システムバス）などの装置（システム）を有する。
【０００３】
上記試験では、試験者により試験項目が抽出される（例えばハードウェアマニュアルをもとに考慮及び決定される）。この試験項目がすべての論理回路動作を網羅することができれば、試験の精度が完全に確保されていることになる。
【０００４】
しかしながら、現在の情報処理装置は論理構成が複雑であるため、すべての試験項目を抽出して試験を行うことは困難であり、試験項目の抽出洩れや実行洩れ等の可能性がある。よって、すべての試験ではなくとも、次善として、試験の精度を高めることが求められる。
【０００５】
そのため、従来、乱数を用いてランダムな試験を行う試験方法（乱数試験方法）が用いられている。即ち、複数の要素や複数の試験命令及びパラメータなどに関して、乱数データを用いてランダムに試験内容（試験データ）を多数生成して試験に適用する方法である。これにより、試験項目の抽出洩れや実行洩れ等を補っている。
【０００６】
上記乱数試験方法などに関して、以下に示すような従来技術例がある。
【０００７】
（１）特開平７−２５３９０１号公報（特許文献１）には、乱数データを入力として試験命令列を繰り返し生成し当該命令列を被試験情報処理装置に実行させて当該装置を試験する技術が記載されている。この技術において、乱数データを入力として次の試験命令列を生成するときに、繰り返し生成された試験命令列の中で、発生頻度の少ない試験命令を、無作為に、乱数データを入力として生成中の試験命令列に挿入する旨が記載されている。
【０００８】
（２）また、特開２００５−１０８００７号公報（特許文献２）には、ＬＳＩ設計検証装置及び方法において、ＲＴＬ（レジスタ転送レベル）シミュレーションの途中段階、又は検証対象となるＬＳＩの回路内部において、動作シミュレーションにおける動作履歴を抽出することで、整合しているかどうかを検証するアサーションチェック手段を用いる旨が記載されている。この技術は、論理の矛盾を検出するために論理内部に検証用の仕掛け（アサーションチェック手段）を組み込む方式（アサーションを用いた試験方法）である。
【０００９】
（３）また、特開２００２−１４９４４０号公報（特許文献３）には、論理回路検証方法及び装置において、乱数検証（乱数試験方法）における論理シミュレーションの検証効率の低下を抑えることを目的とした検証を実行するか否かを判定する旨が記載されている。この技術は、検証済みパターン履歴情報を蓄積、更新して、試験実行判断や障害解析に役立てるものである。
【特許文献１】特開平７−２５３９０１号公報
【特許文献２】特開２００５−１０８００７号公報
【特許文献３】特開２００２−１４９４４０号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
前述の従来技術において、試験の精度を高めるために、特に、被試験装置における複数の各要素（ＣＰＵ、周辺装置、記憶装置など）及びシステムバスを含めた構成において、それぞれの処理機能及びそれらの並列（同時並行）動作を、網羅的に試験することが望まれる。
【００１１】
そのためには、ＣＰＵ向け試験、周辺装置向け試験、及び記憶装置へのデータ転送試験、といった各要素向けの試験（個別試験）を、並列で実行する試験、即ち競合試験、を強化することが求められる。
【００１２】
そこで、上記各要素の個別試験の命令実行を組み合わせ、その命令発行タイミングや、システムバスを経由する周辺装置の起動タイミングなどのタイミング条件を意識した複雑な組み合わせによって、各要素に高負荷を与えた条件下での試験（競合試験）、が重要となる。
【００１３】
前述の従来技術例では、例えば乱数試験方法においては、乱数の特徴を活かして多種多様な組み合わせのアルゴリズムでの試験を実現している。
【００１４】
被試験装置の要素の試験、特にＣＰＵや周辺装置などの多数の要素の動作を意識しなければならない複雑な試験では、それら各要素向けの個別試験を生成してそれらを単純に実行する方式が採用されていた。また、複数の要素に関する競合動作の試験についても、要素の組み合わせによる試験を並列で実行することによって、ある程度までは行われていた。
【００１５】
しかし、それら各要素の個別試験の生成は独立しており、当該試験同士には相互関係が無い。よって、特に複数の要素の競合動作（並列動作）の試験に関する網羅性（言い換えるとカバレッジ）に欠けており、試験洩れ等が発生する可能性がある。また、乱数性に偏りが発生する可能性もある。また、網羅性の度合いが不明確であり、試験が実際にどこまで達成できたのか、あるいはその有効性や十分性など、が不明確である。
【００１６】
従来、要素の組み合わせによる競合動作を網羅的に試験することは困難であり、偶然性や時間に期待してしまうことは否定できない。
【００１７】
なお、前記特許文献１の技術は、乱数試験方法に関するが、アサーション（アサーションチェック方法）や、タイミング（タイミング試験方法）や、カバレッジを用いた方法に関するものではない。前記特許文献２の技術は、アサーション（アサーションチェック方法）に関するが、乱数試験方法などに関するものではない。前記特許文献３の技術は、乱数試験方法に関するが、試験内容を調整する方法（カバレッジを用いた方法）ではない。
【００１８】
本発明は以上のような問題に鑑みてなされたものであり、その目的は、情報処理装置（被試験装置）の競合試験等の試験の網羅性を高めることができる技術を提供することである。
【課題を解決するための手段】
【００１９】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。前記目的を達成するために、本発明は、論理シミュレーションやＦＰＧＡ（Field Programmable Gate Array）等により、情報処理装置（ＩＣ等）の論理回路等（被試験装置）の試験などを行う方法（情報処理装置試験方法）、その処理作業を行うためのコンピュータ、及びプログラム（情報処理装置試験プログラム）に係わり、乱数試験方法、アサーションチェック方法などを用いるものであり、以下に示す構成を有することを特徴とする。
【００２０】
本試験方法では、試験の網羅性や不良を判断するための根拠となる数量的な指標及び手段を導入する。本試験方法では、被試験装置の複数の要素（論理的なデバイス）の競合動作状態などの試験を監視（アサーションチェック）するだけでなく、その監視情報に基づき、試験の網羅性を管理するためのカバレッジ情報を更新し、これに基づくフィードバック（反映）により、試験内容（試験データ）の調整を駆動する仕組みを備えるものである。カバレッジ情報は、具体的には、所定の信号条件の発生を管理する情報（イベント情報）や、要素の動作のタイミングを管理する情報（タイミング情報）などである。これにより、複数回の試験における各試験での競合動作を自動生成したり、試験洩れを防ぐことで、試験の網羅性を高めることが実現される。
【００２１】
（１）本方法及び対応プログラムでは、具体的に以下のような処理ステップを有する。
【００２２】
（Ａ）試験プログラムにより乱数を用いて試験内容に対応する試験データ（試験命令列（群）及びそのパラメータ）を生成する処理ステップ。
【００２３】
（Ｂ）前記試験データを論理シミュレータ上で実行することによって試験結果の期待値を生成する処理ステップ。
【００２４】
（Ｃ）前記試験の監視（アサーションチェック）のために用意したアサーションプログラムであるアサーションチェッカーを試験開始の直前に起動する処理ステップ。
【００２５】
（Ｄ）被試験装置におけるプロセッサ、周辺装置、及び記憶装置などの複数の要素に対し一斉に前記試験データによる試験を実行する処理ステップ。
【００２６】
（Ｅ）前記試験の実行時に前記アサーションチェッカーによる監視の処理を行い、それによる監視情報を蓄積する処理ステップ。アサーションチェック（監視）では、各要素の起動などの動作の履歴の抽出（トレース）を含む。
【００２７】
（Ｆ）前記試験の実行結果と前記期待値とを比較して結果を出力する処理ステップ。
【００２８】
（Ｇ）前記監視情報を採取し、採取した監視情報を解析し、解析結果を用いて、試験の網羅性などを管理するための情報であるカバレッジ情報を更新する処理ステップ。
【００２９】
（Ｈ）前記解析結果または前記更新されたカバレッジ情報に基づき、判断に応じて、前記試験データ（次回の試験内容）を調整（試験命令列またはパラメータの少なくとも一方の調整）する処理ステップ。また、必要が無ければ、試験内容の変更はせずに、新規に試験が生成されるようにする。
【００３０】
（Ｉ）前記調整による新しい試験（次回の試験）を実行する処理ステップ。
【００３１】
上記（Ｈ），（Ｉ）の処理ステップでは、前回の試験で生成済みの試験データに対し、試験実行結果（カバレッジ情報の内容）をフィードバックにより反映させる。これにより、例えば、同じ試験命令を再利用しそのパラメータのみを調整した試験を生成する。
【００３２】
前記監視情報には、監視対象の要素の動作の時間や回数などの情報が含まれる。また、前記カバレッジ情報には、アサーションでの所定の信号条件の発生に関するイベント情報などが含まれる。イベント情報は、信号条件の成立の発生回数や頻度、並びに、試験の調整の回数などが含まれる。
【００３３】
（２）また、上記（１）で更に、上記（Ｇ）のカバレッジ情報を更新する処理ステップにおいては、更新の際、過去（蓄積済み）のカバレッジ情報に対し、前記（Ａ），（Ｈ）により生成された試験データの内容（履歴）と、複数の要素の同時並行動作（競合動作）に関するタイミング情報とを加え合わせる。タイミング情報は、要素の動作タイミング（起動時刻、終了時刻、実行時間）の情報や、競合時間や競合回数、同時期に動作した周辺装置の競合率などの情報が含まれる。特に、タイミング情報を用いて、複数の要素における競合性の低い部位を、調整の対象として選択する。
【００３４】
（３）また、上記（１）または（２）で更に、上記（Ｈ）の試験内容の調整の処理ステップにおいては、カバレッジ情報と更なる乱数とを組み合わせて用いて、調整対象となる要素（その試験命令やパラメータ等）を選定して、調整を行う。このための判断では、未試験の部位や競合性の低い部位などを優先的に選定し、その試験を実行するための試験データを生成する。
【発明の効果】
【００３５】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。本発明によれば、被試験装置の競合試験等の試験の網羅性を高めることができる。
【発明を実施するための最良の形態】
【００３６】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一部には原則として同一符号を付し、その繰り返しの説明は省略する。
【００３７】
＜概要＞
本実施の形態では、図１〜図１１、特に図４等に示すように、試験のアサーションチェックによる監視情報、及び監視情報をもとに更新されるカバレッジ情報を用いて、競合試験等の試験の網羅性を高める方針で、フィードバックにより試験内容を変更（例えばパラメータ調整）するものである。
【００３８】
＜１：情報処理システム＞
図１において、本実施の形態の試験方法及びプログラムを適用するコンピュータである情報処理装置（ＥＷＳ）を含んで成る情報処理システム（論理シミュレーション環境）の基本的な構成例を示している。本システムは、ＥＷＳ（エンジニアリングワークステーション）１００のような汎用の情報処理装置、及びそれに接続されるコンソール端末２００を有する。試験者（Ｕ）は、入出力処理に用いる情報処理端末装置であるコンソール端末２００を操作し、操作に従い、ＥＷＳ１００での情報処理が行われる。
【００３９】
ＥＷＳ１００は、制御部１０１（ＣＰＵ等）、記憶部１０２（ＲＡＭ等のメモリ）、通信部１０３（ネットワークインタフェース等）、補助記憶部１０４（ＨＤＤ等）、入力部１０５、表示部１０６等のハードウェアを備える。ＥＷＳ１００において、制御部１０１等により実現される論理シミュレータ１０を有する。論理シミュレータ１０上では、試験プログラム３０（乱数試験プログラム）等のプログラムが実行される。試験プログラム３０は、本実施の形態のプログラムに相当する。
【００４０】
論理シミュレータ１０は、プロセッサやメモリなどの要素をすべて接続したモデルで対象システム（被試験装置２０）の論理シミュレーションを行うことができる総合的な環境である。論理シミュレータ１０は、論理シミュレーションの処理により、対象システムのハードウェアの動作を擬似的に動作させることができる。論理シミュレータ１０による論理シミュレーション内において、被試験装置２０が論理的に構成される。論理シミュレータ１０上の論理シミュレーションの処理において、試験プログラム３０を用いた試験（乱数試験）の処理により、被試験装置２０を対象として、その処理機能や競合動作などに関する試験が行われる。
【００４１】
制御部１０１は、補助記憶部１０４から記憶部１０２上に読み出されたデータに対して処理を行うことで、論理シミュレーション等の処理を実現する。通信部１０３、入力部１０５、表示部１０６等は、コンソール端末２００とのインタフェースを有し、コンソール端末２００のキーボードやマウスからの入力情報を受け付けて入力処理することや、出力情報をコンソール端末２００のディスプレイ画面やプリンタへ出力処理すること等が行われる。
【００４２】
論理シミュレータ１０は、試験プログラム３０の他、ＯＳやその他のプログラムを含む。論理シミュレータ１０において、ＯＳ上で、試験プログラム３０を被試験装置２０に対して実行させ、試験リソースを供給する。試験リソースは、レジスタ値などである。
【００４３】
被試験装置２０は、ＶＨＤＬ等のハードウェア記述言語（ＨＤＬ）により論理ファイルとして記述されている。当該論理ファイルは、設計者等により作成される。試験者（Ｕ）は、コンソール端末２００からＥＷＳ１００の論理シミュレータ１０を実行させて、論理シミュレータ１０に被試験装置２０の論理ファイルを入力する。被試験装置２０は、試験の対象となる、後述のプロセッサ等の各要素などを構成する論理である。
【００４４】
試験プログラム３０は、各回の試験毎の試験データ５０を生成するものであり、乱数を用いてランダムな試験内容を生成するプログラムを含む。試験データ５０を用いて被試験装置２０が試験される。被試験装置２０に対する試験は、必要に応じて多数回の試験が繰り返し行われる。
【００４５】
また、試験プログラム３０（試験データ５０）と関連して、アサーションチェック（監視）のためのアサーションチェッカー６が、ＨＤＬにより被試験装置２０の内部に記述される。アサーションチェッカー６は、後述のアサーションチェッカー制御プログラム６０により記述、制御される。アサーションチェッカー６は、試験に関する特定の信号、信号条件を監視、検出して、それを表す情報（後述するアサーション監視情報３１）を出力することができる論理である。
【００４６】
論理シミュレーター１０は、上記アサーション監視情報３１や、アサーション監視情報３１をもとに作成・更新される、試験の網羅性（範囲）の管理のための情報（後述するカバレッジ情報３２）などを蓄積する機能、及びそれらの情報を用いて試験内容を変更する機能などを持つ。
【００４７】
これにより、本システムでは、試験内容の変更の方針を導き、試験結果（カバレッジ情報３２）を、既に生成・実行済みの試験内容に対してフィードバック（反映）することで、次回以降の試験内容を生成して実行することができる。試験者は、本システムの機能を用いることで、試験内容の変更の方針（大きくは網羅性を高めること）を導きやすい。また所定の方針に従って、フィードバックにより自動的に試験内容を変更することができる。本システムでは、システムバス５上の特に競合があまり発生していない部位を対象として試験を優先的に実行することができる。これにより、複数回の試験における各試験での競合動作を自動生成し、試験洩れ等を防止することができる。
【００４８】
＜２：被試験装置＞
図２において、論理シミュレータ１０上での被試験装置２０の構成例、及びそれに関連して、試験実行時の試験プログラム３０（試験データ５０）の状態などを示している。なお、図２では、説明のため、図１の物理的構成（記憶部１０２）と、論理的構成である被試験装置２０とを繋いで示している。被試験装置２０は、プロセッサ（ＣＰＵ）１、周辺装置２（入出力装置（ＩＯ）など）、記憶装置（メモリ）３等の要素、及びこれらを接続するシステムバス５等を有する構成である。
【００４９】
プロセッサ１は、命令を処理するＣＰＵ、マイクロプロセッサ等の論理である。記憶装置３は、命令やデータを格納するメモリ（メインメモリ、２次メモリ、ストレージ等）の論理である。プロセッサ１は、記憶装置３から命令（試験命令）を読み出して実行し結果を記憶装置３に格納する。周辺装置２は、入出力装置（ＩＯ）などの論理であり、プロセッサ１や記憶装置３との間で通信が行われる。システムバス５は、プロセッサ１や周辺装置２や記憶装置３などの要素間におけるデータや信号の流れを制御する。なお、プロセッサ１等の各要素は、図２中では１つのみ示しているが、それぞれ複数存在する構成も可能である（例えばマルチプロセッサシステム）。
【００５０】
一方、物理的な記憶部１０２には、試験プログラム３０、アサーション監視情報３１、カバレッジ情報３２等のデータが格納されている。試験プログラム３０は、各回の試験の実行の際、試験データ５０を自動生成し、その試験データ５０を記憶装置３の任意番地に配置する。記憶装置３上に配置された試験データ５０は、プロセッサ１により順次フェッチされて実行され、これにより試験が実行される。試験データ５０は、試験命令列５１（コード）とそのパラメータ５２（変数データ等）とを含んでいる。試験命令列５１は、試験命令群からなる。パラメータ５２は、試験命令列５１に代入される。試験命令は、データのリード、ライト等の一般的な命令を有する。
【００５１】
また、これら試験対象の各要素（１，２，３）と接続するアサーションチェッカー６（６−１，６−２，６−３）を有する。アサーション（アサーションチェッカー６）は、機能の仕様や設計の意図、前提などが記述されたものであり、対象要素の論理記述が当該仕様等の通りかどうかを監視する。各アサーションチェッカー６（６−１，６−２，６−３）は、論理的構成としては、図２のように対象の要素とシステムバス５との間の信号線に介在する形で接続されている（対象要素の論理内に埋め込み又は関連付けの形）。アサーションチェッカー６によりシステムバス５のバスプロトコルでの制御信号を監視する。各アサーションチェッカー６は、対応する要素（その信号）を監視し、動作履歴を抽出（トレース）する機能を持つ。試験の際に試験プログラム３０により起動されたアサーションチェッカー６は、各要素間、すなわちプロセッサ１とシステムバス５との間、システムバス５と周辺装置２との間、及び記憶装置３とシステムバス５との間に発行される各信号を同時並行的に監視する。アサーションチェッカー６は、監視により抽出した情報であるアサーション監視情報３１（監視情報）を出力し、記憶部１０２（または記憶装置３）内に用意された任意番地に格納（蓄積）する。
【００５２】
＜３：論理シミュレータ、試験プログラム＞
図３において、論理シミュレータ１０と試験プログラム３０を中心として、本実施の形態の特徴的な試験制御部における各処理部などの相関関係を含む構成を示している。論理シミュレータ１０上では、図２のような被試験装置２０の試験に対し、アサーションチェッカー６により監視し、アサーション監視情報３１、及びカバレッジ情報３２を記憶部１０２に蓄積する。
【００５３】
試験プログラム３０は、試験生成処理部１１、期待値生成処理部１２、試験実行処理部１３、試験結果比較・出力処理部１４ 、アサーション起動処理部１５、監視情報採取・解析処理部１６、カバレッジ情報更新処理部１７、試験データ調整処理部１８、等の処理部を有する。各処理部は線で示すように相互に情報データを授受する。
【００５４】
１１〜１４の処理部は、従来の方式でも存在し、本実施の形態でも前提的に存在する機能である。これらの処理部は、各回の試験における試験生成・実行サイクルに係わる処理を行うものであり、試験内容（試験データ５０）の生成、当該試験の期待値の生成、当該試験の実行、及び当該試験結果の出力、といった基本的な処理を行うものである。また、１５〜１８等の処理部は、本特徴を実現するために必要な処理部であり、アサーションやカバレッジ、フィードバックに係わる処理を行うものである。
【００５５】
試験生成処理部１１は、各回の試験を最初から作成する。試験生成処理部１１は、試験データ５０（試験命令列５１、パラメータ５２）を生成する。
【００５６】
期待値生成処理部１２は、試験データ５０をもとに、その試験の結果の期待値を生成する。
【００５７】
試験実行処理部１３は、アサーションチェカー６の監視下で、プロセッサ１、周辺装置２、記憶装置３、システムバス５等の被試験装置２０に対する試験を実行する。試験実行処理部１３は、試験生成処理部１１によって生成された試験データ５０を記憶装置３へ配置し、プロセッサ１に試験データ５０による試験を実行させる。
【００５８】
試験結果比較・出力処理部１４は、試験データ５０による試験結果と、期待値生成処理部１２による期待値とを比較して、結果を出力する処理を行う。
【００５９】
アサーション起動処理部１５は、試験開始の際にアサーションチェカー６を起動する処理を行う。アサーション起動処理部１５は、試験開始時に、記憶装置３の特定番地に書き込みを実施することで、アサーションチェッカー６（６−１，６−２，６−３）を起動する。
【００６０】
監視情報採取・解析処理部１６は、試験データ５０による試験（今回の試験）の終了時に、アサーションチェカー６の出力による記憶部１０２内の当該試験に関するアサーション監視情報３１を採取し、採取した情報を、カバレッジ情報３２の更新のために解析する処理を行う。
【００６１】
カバレッジ情報更新処理部１７は、カバレッジ情報３２を管理し、前記アサーション監視情報３１の解析結果に基づき、次回以降の試験内容（試験データ５０）を生成（変更）するために用いる情報として、カバレッジ情報３２を更新する処理を行う。この更新では、追加情報（解析結果データ）が、記憶部１０２内の過去（蓄積済み）のカバレッジ情報３２にマージされる。
【００６２】
試験データ調整処理部１８は、試験データ生成処理部１１に対する調整の役割である。試験データ調整処理部１８は、カバレッジ情報３２に基づき、次回以降の試験内容を生成するために、生成済みの試験（前回の試験内容）の試験データ５０（試験命令列５１または特にパラメータ５２）を調整する処理を行う。例えば、試験データ調整処理部１８は、生成済みの試験データ５０の試験命令列５１を再利用し、その試験命令列５１に対してそのパラメータ５２のみを調整のために作成（再生成）する。
【００６３】
試験データ調整処理部１８は、調整の制御の仕方としては、例えば、複数の要素の競合性を高める方針に従って、カバレッジ情報３２に基づき未試験の部位や競合性が低い部位などを次回の試験の候補にするように、試験データ５０を調整する。例えば特に、競合動作状態となるように各要素の実行タイミングが調整される。なお、試験命令列５１を変更する場合、パラメータ５２を変更する場合、その両方を変更する場合などがある。
【００６４】
＜４：試験プログラム、アサーションチェッカー＞
図４において、試験プログラム３０及びアサーションチェッカー６の概略処理フローを示している（Ｓは処理ステップを表す）。本フローでは、１回の試験の処理サイクルを示している。前述の図３の試験実行処理部１３等により、各回の試験を実行する。
【００６５】
試験者（Ｕ）による情報入力操作としては、設定情報の入力や、試験開始のための起動指示（実行コマンド）の挿入などがあるが、それ以外は基本的にコンピュータによる自動処理で実現される。
【００６６】
まず、試験データ生成処理Ｓ２０において、試験生成処理部１１により、被試験装置２０（各々の要素）に対し、乱数により試験データ５０を生成する。試験データ５０は、試験命令列５１（試験命令群）とそれに付属させるパラメータ５２を含む。乱数により、例えば、試験対象の要素、命令、パラメータ等が選択される。
【００６７】
プロセッサ１（ＣＰＵ）向けの試験に関しては、試験対象リソースとして、汎用レジスタ、制御レジスタ、割り込みレジスタ、浮動小数点レジスタ、ＴＬＢ（Translation Look-aside Buffer）、キャッシュ等のＣＰＵ毎に存在するリソースや、記憶装置３上のＣＰＵ共通領域や個別領域のデータなどがある。
【００６８】
プロセッサ１向けの試験命令列５１に関しては、乱数で生成され、１つの命令ごとにシミュレートしながら作成される。これは、効率的で効果的な命令列を作成させる目的があり、プログラムカウンタや各レジスタの変化を把握しながら命令列が作成される。
【００６９】
レジスタ類の数は限られており、試験命令列５１に関する試験命令数が多いほど、多くのレジスタが使用される。乱数で単純にレジスタを使用した場合、偏ったレジスタの使い方によって同一レジスタへの上書きが頻繁に発生し得る。その場合、レジスタ上で引き継がれる値が上書きにより消えてしまうことが有り得る。これにより、それまでの試験が無駄になってしまう可能性がある。これを避けるため、一旦、命令（試験命令）によって値が変化したレジスタ（例えばレジスタＡ）については、ソースレジスタとして使用し、当該値を別のレジスタ（例えばレジスタＢ）に引き継ぐようにする。これによって、値が変化しても、その後、例えばレジスタＡを上書きしても、命令列（試験命令列５１）が漏れなく順序良く実行された証拠になる。
【００７０】
ＩＯ（周辺装置２）向けの試験に関しては、試験対象リソースとして、試験対象のチャネル／デバイスの選定、チャネル毎／デバイス毎に存在するレジスタ、転送元・転送先アドレス及びデータ、割り込みレジスタなどがある。これらに関して、乱数を使用して試験データ５０が作成される。
【００７１】
試験データ５０の生成に関し、すべて基本的には乱数で生成され変動値となるようにするが、被試験装置２０の仕様上、制約や限界がある場合などには、固定値として候補を用意する。例えば、本システムでは試験者によりこの固定値を選択的に設定することができる。また、試験の内容によっては、乱数による生成に関して、均等ではなく重み（偏り）を付けた割り当てをする場合がある。本システムでは試験者によりこの乱数の重み付けを選択的に設定することができる。本システムでの各種設定については、コンソール端末２００等から試験者が画面を見ながら情報入力操作により行うことができる。
【００７２】
周辺装置２向けの試験命令列５１に関しては、周辺装置２を動かすトリガとなる起動専用命令列や、終了判定専用命令列など、使用目的に合わせた命令列が、任意の場所へ配置される。
【００７３】
次に、期待値生成処理Ｓ２１において、期待値生成処理部１２により、試験データ５０による試験内容に対応する期待値を生成する。これは、試験プログラム３０に内蔵するソフトウエアシミュレータにより、被試験装置２０ごとに、試験内容に対応する期待値が作成される。
【００７４】
プロセッサ１に関する期待値生成方法としては、ＣＰＵアーキテクチャやＩＥＥＥ規格等に準じて作成するものであり、プロセッサ１に関する全命令機能が本システムで対応可能（期待値生成可能）になっているものとする。
【００７５】
周辺装置２に関する期待値生成方法に関しても、各々専用のハードウェアマニュアルが、期待値生成処理Ｓ２１としてインプリメントされる。
【００７６】
次に、試験を起動（実行）する前に、アサーション起動処理Ｓ２２において、アサーション起動処理部１５により、アサーションチェッカー６を起動する。起動方法は、ある決められた記憶装置３のアドレスに対して、所定bitを書き込むことである。この起動により、アサーションチェッカー６は、試験プログラム３０とは完全に独立したハードウェア的な監視動作状態となる。
【００７７】
続いて、試験実行処理Ｓ２３において、試験実行処理部１３により、試験データ５０による試験を開始させる。試験が開始されると、被試験装置２０の各要素により、様々な信号の動作が開始される。
【００７８】
一方、アサーションチェッカー６は、対象試験動作監視処理Ｓ２４において、試験動作の流れをバス（システムバス５）上で継続的に監視する。その監視の最中、アサーションチェッカー６は、バス（システムバス５）上のリクエスト信号やアドレス信号などの対象信号の監視において、監視している信号条件（例えば特に競合条件）と、試験中の信号の状態とが一致するかどうか判定する。一致した場合、アサーション監視情報抽出処理Ｓ２５において、アサーションチェッカー６は、その一致の発生（イベント及びタイミング）に関するアサーション監視情報３１を抽出（作成）し、記憶部１０２へ蓄積する。
【００７９】
アサーション監視情報３１は、監視対象の要素（周辺装置２等）毎の動作時間や回数、複数の要素の同時並行動作（競合動作）の時間や回数、監視対象の信号条件の成立（一致）の時間や回数などがある。
【００８０】
Ｓ２３のすべての被試験装置２０の試験を終了した後、監視情報採取処理Ｓ２６において、監視情報採取・解析処理部１６により、記憶装置３に蓄積されているアサーション監視情報３１を採取し、カバレッジ情報更新処理Ｓ３３への入力値のための情報として用意する。
【００８１】
Ｓ２３の試験の最後に、試験結果比較・出力処理Ｓ２７において、試験結果比較・出力処理部１４により、試験結果と期待値を比較する処理を行う。この処理では、試験命令列５１や、試験終了時点（要素の動作が終了した時点）での結果リソースをすべて採取して、これらを、期待値生成処理Ｓ２１で生成された期待値のデータと比較する。
【００８２】
そして、比較結果に基づき、Ｓ３０で、すべての被試験装置２０の試験の正常性をチェックする。比較結果で１つでもエラーを検出した場合は、Ｓ３１でエラーメッセージを出力する。例えば当該エラーメッセージ等の情報をコンソール端末２００の画面に表示し、ファイルに格納する。試験の正常性がＯＫであれば次へ進む。
【００８３】
次の解析処理Ｓ３２において、監視情報採取・解析処理部１６により、前記監視情報採取処理Ｓ２６で得られたアサーション監視情報３１を解析し、カバレッジ情報３２への入力値とするための解析結果データを纏める。なお、この解析処理Ｓ３２は、Ｓ２６やＳ３３等に含めて行うものとしてもよい。
【００８４】
上記解析結果データを用いて、カバレッジ情報更新処理Ｓ３３において、カバレッジ情報更新処理部１７により、カバレッジ情報３２のデータを更新する。この更新処理では、アサーションチェッカー６から得るべき必要条件、アサーション監視情報３１から照合や計算で得られる情報を、カバレッジ情報３２にマージする。この更新処理では、例えば、アサーション監視情報３１をもとに、被試験装置２０の各要素の動作時間のすべてが集計され、同時並行動作（競合動作）した要素及びその時間や回数などの情報が、カバレッジ情報３２に蓄積される。
【００８５】
次に、試験データ調整処理Ｓ３４において、試験データ調整処理部１８により、今回の試験及び監視の結果（即ちそれを表すアサーション監視情報３１とカバレッジ情報３２）に基づき、次回以降の試験内容についての調整（変更）の判断及び調整処理を行う。即ち、次回以降の試験に関して、試験内容を新規一転として最初から乱数で作成して行うのか、それとも、先ほど（今回）実行した試験内容（既に生成済みの試験データ５０）を引き継ぎ再利用してその調整程度の変更によって行うのか、等を判断により見極める。この判断は、特に、カバレッジ情報３２内に含まれている信号条件や競合条件の発生実績に関する情報や試験調整の実績に関する情報など（後述のイベント情報３２ａやタイミング情報３２ｂ）の参照によって行われる。
【００８６】
この試験データ調整処理Ｓ３４では、カバレッジ情報３２の参照により、その時点で未試験の部位や、試験発生回数が少ない部位や、競合動作の実績が少ない部位などが見出される。調整の方針に従うそのような部位が見出された場合（調整実行条件を満たす場合）、試験内容の調整を実行することに決定する。そして、試験データ調整処理Ｓ３４では、当該部位（調整対象要素）に対する試験内容について、方針に従って、試験データ５０の例えば特にパラメータ５２が調整される。この場合、パラメータ５２の調整とは、被試験装置２０に対する大きな試験内容は変えずに、例えば周辺装置２への起動タイミングや転送先アドレス、転送データ長などを調整することで試験の競合性や負荷を調整するものである。
【００８７】
最後に、終了判定Ｓ３５では、終了条件である、オペレータ（試験者）の要求した分の試験（例えば複数回の試験によるルーチン）を実行完了したかどうかを判定する。要求が満たされている場合は終了し、満たされていない場合、再度試験（次回の試験）を実行する場合は、前記試験データ生成処理Ｓ２０へ戻り、再度、前述同様に、Ｓ２０以降の処理を行う。次回以降の試験では、前回（今回）の試験内容がフィードバック（反映）された内容により、同様に実行される。
【００８８】
このように、試験内容の調整のためのフィードバック（Ｓ３４からＳ２０へ）を行いながら、一連の処理サイクル（Ｓ２０〜Ｓ３４）による試験を複数回繰り返し実行することができる。以下、更に具体的に説明する。
【００８９】
＜５：アサーション及びカバレッジ情報更新処理＞
図５において、試験プログラム３０の処理において、アサーションチェッカー６によるアサーション監視情報３１をもとにカバレッジ情報３２を更新する処理（前記Ｓ３２，Ｓ３３等に相当）に関する概略的フローを示している。
【００９０】
アサーション起動及び試験起動処理Ｓ５１において（前記Ｓ２２，Ｓ２３相当）、アサーションチェッカー６は、アサーションの起動により試験プログラム３０とは完全に独立したハードウェア的な監視動作状態となる。そして、被試験装置２０では、試験の開始によって各々の要素が個別に動き出し、プロセッサ１、周辺装置２、記憶装置３等の要素を経てシステムバス５上に様々なデータや信号が流れる状況になる。
【００９１】
アサーションチェッカー６を制御するプログラム構造例として右側にアサーションチェッカー制御プログラム６０を示している。これは、ＨＤＬにおいてソフトウエアによってハードウェアの動作をコーディングしたものである。頭に宣言文（アサーションモジュール宣言、……、定数宣言など）があり、その後の条件文（if/then文など）において信号条件（アサーションチェック条件、リクエスト競合条件など）が記述され、その後に動作（特定アドレス採取、更新データ採取、更新時間採取、更新回数採取など）が記述されている。
【００９２】
このアサーションチェッカー制御プログラム６０が監視対象の制御信号を検出した場合、その検出した時間や回数などを、下側に示すアサーション監視情報３１のようなフォーマットで抽出、記録する。図５のアサーション監視情報３１の例に関して、「監視対象」は、監視対象の識別項目を示し、これに対応して、例えば「時間」と「回数」を格納する項目がある。「監視対象」項目としては例えば、周辺装置２である入出力装置（ＩＯ）に関する起動レジスタや完了フラグレジスタ、特定の信号の成立、転送ＩＯの競合、信号条件のパターンなどがある。これらの分類としては、（１）各ＩＯの送受信時間、各要求信号の時間、及び回数、（２）送受信の競合時間、及び競合回数、（３）要求信号の条件の組み合わせ（パターン）による競合時間、及び競合回数、等がある。なお「時間（時刻）」は、例えばクロックサイクル値で表される。
【００９３】
試験中にアサーションチェッカー６が監視対象を検出すると、アサーション監視情報３１内の「時間」や「回数」の項目へ値が書き込まれる。例えば、監視対象が周辺装置２であるＩＯ−１の起動レジスタである場合、このＩＯ−１の起動レジスタのアドレスに対して決められた値が格納されることで、当該ＩＯ−１によるデータ転送の開始になり、このデータ転送の完了後、ハードウェアが当該ＩＯ−１の完了フラグレジスタにフラグを設定する。このようなハードウェア仕様に対し、当該アドレスをアサーションにより監視することで、ハードウェア（デバイス）の動作時間（起動開始から動作終了までの時間）を計測することができる。
【００９４】
アサーションチェッカー６は、試験データ５０による試験動作から、ＩＯ−１起動レジスタへの書き込みを検出し、その時間（起動時刻）を書き込む。その後、ハードウェアのＩＯ−１完了フラグレジスタへの書き込みを検出し、その時間（終了時刻）を書き込む。これらＩＯ−１起動レジスタとＩＯ−１完了フラグレジスタによって、周辺装置２（ＩＯ−１）の動作時間（起動時刻から終了時刻までの時間）を求めることができる。またこれと同様に、被試験装置２０の全体（複数の要素）に関する動作時間等の情報を得る。これにより、試験中に各要素がどれだけ同時並行動作（競合動作）したのかを知ることができる。
【００９５】
＜６：アサーションチェック＞
図６において、アサーションチェックにおける試験対象信号の信号条件（競合条件）の例について示している。図５のアサーション監視情報３１内における例えばパターン１からパターン４０までの複数の要因（信号条件）による競合条件の監視の場合における、２つの例（信号条件１（パターン１）、信号条件２（パターン２））である。
【００９６】
本例において、図６（ａ）で、Signal（信号）下の項目（ＳＣＬＫ等）は、アサーションチェッカー６で記述された信号（監視対象信号）であり、これらは前記アサーション起動及び試験起動処理Ｓ５１の後では常に監視状態にある。また、図６（ｂ）では、各信号条件の記述例を示している。信号条件は、例えば複数の信号の値の論理演算により表される。
【００９７】
信号条件１（例えばスヌープ処理）を満足したときには、競合（競合状態の発生）とみなし、この時点での時間や発生回数が、アサーション監視情報３１内の「時間」、「回数」項目に格納される。同様に、信号条件２（例えばバスリクエスト処理）を満足したときに、競合とみなし、アサーション監視情報３１に情報が格納される。
【００９８】
Ｓ５１の次のアサーション監視情報読み出し処理Ｓ５２において、監視情報採取・解析処理部１６により採取済みのアサーション監視情報３１を読み出す。
【００９９】
そして、次のアサーション監視情報データ変換処理Ｓ５３において、アサーション監視情報３１を入力として、当該情報の照合、計算、分析などにより、データ変換処理を行う（前記解析処理Ｓ３２相当）。
【０１００】
これにより得られたデータ（解析結果データ）を用いて、次のカバレッジ情報記録更新処理Ｓ５４において、カバレッジ情報更新処理部１７により、カバレッジ情報３２を更新する。更新の際には、過去（蓄積済み）のカバレッジ情報３２に対し、前記生成済みの試験データ５０の内容（試験命令列５１、パラメータ５２）と、要素の動作時間（起動時刻、終了時刻）、競合率（競合時間、競合回数）などのタイミング情報とを加え合わせる。
【０１０１】
＜７：カバレッジ情報＞
図７において、カバレッジ情報更新処理（Ｓ３３）に関し、カバレッジ情報３２の構成例を示している。図７のカバレッジ情報３２のうち、大きくは、（ａ）イベント情報３２ａ、（ｂ）タイミング情報３２ｂ、に分かれる。
【０１０２】
（ａ）イベント情報３２ａにおいて、項目として、信号条件（パターン）、発生回数、調整フラグ（調整回数）、発生頻度（％）、累積発生回数を有する。イベント情報３２ａは、監視対象の複数の信号条件（パターン）に関して、その成立の発生回数や頻度、並びに試験内容調整の発生のフラグ（回数）などを表すものである。
【０１０３】
信号条件（パターン）は前述の通りである。監視対象の制御信号に関する所定の信号条件（パターン）１〜４０までが存在する。発生回数は、複数回の繰り返しの試験（ルーチン）における発生回数である。累積発生回数は、例えばそのルーチンの複数回の繰り返し等による過去の多数の試験の実績における発生回数の累積合計値として更新される。発生回数などの値は、すべて、累積加算により更新される。発生頻度については、当該パターンの発生頻度が全体のうちの何％であるかを、試験数や発生回数などをもとに計算することで更新される。
【０１０４】
調整フラグ（調整回数）については、生成済みの試験データ５０（試験命令列５１やパラメータ５２）を調整により更新したこと、ないしその回数を表す。当該項目は、最初の時点では更新されず０であり、例えばパターン３に関する調製が発生すると１になる。
【０１０５】
（ｂ）タイミング情報３２ｂにおいて、項目として、被試験装置２０ごとに、競合時間、競合回数などを有する。本例では周辺装置２（ＩＯ）の転送動作の競合に関する場合である。タイミング情報３２ｂでは、周辺装置２毎に、起動時刻や終了時刻を読み出した値が集計され、転送に関する競合時間が求められる。周辺装置２として、例えばＩＯ−１〜ＩＯ−３の３つのＩＯを有する場合において、それぞれの組み合わせの項目を有する。例えばＩＯ−１とＩＯ−２などの２つの競合に着目した組み合わせ（「１⇔２」，「２⇔３」，「３⇔１」）や、３つのＩＯの競合に関する項目（「１，２，３」）を有し、各々の同時期に動作した時間（競合時間）を保持する。
【０１０６】
競合率は、［競合時間］／［動作している周辺装置の時間］から計算により得られる。競合時間と競合回数が大きい場合は競合率が高くなる。競合率が高い部位については、試験内容調整の判断で優先的に候補として選択されることになる。選択されてタイミングが調整されると、タイミング情報３２ｂの調整回数の項目に回数が加えられて更新される。
【０１０７】
＜８：競合タイミング＞
図８において、タイミング情報３２ｂに係わり、複数の要素に関する競合タイミング（動作タイミング）の例を示している。時間はクロックサイクル値であり、矩形部は当該要素（ＩＯ−１，ＩＯ−２，ＩＯ−３）の起動状態（動作時間）を示す。前記採取されたアサーション監視情報３１のデータをもとに、ＩＯ等の要素の起動（動作）における開始時刻と終了時刻、及びそれらの差分である動作時間が得られる。例として、ＩＯ−１の開始時刻：１００、終了時刻：１６０、ＩＯ−２の開始時刻：１２０、終了時刻：１７０、ＩＯ−３の開始時刻：５０、終了時刻：１５０とした場合である。
【０１０８】
次のように計算によって変換することで、競合情報（タイミング情報３２ｂ）とする。まず、ＩＯ−１，ＩＯ−２，ＩＯ−３の各々の動作時間は、開始時刻と終了時刻の差分から、６０，５０，１００である。ＩＯ−１とＩＯ−２の競合情報として、それらが同時並行動作している時間（期間）である競合時間Ｔ（１⇔２）は、１２０から１６０の間であり、長さは４０となる。同様に、ＩＯ−２とＩＯ−３についてのＴ（２⇔３）は、１２０から１５０の間で、長さは３０となる。ＩＯ−３とＩＯ−１についてのＴ（３⇔１）は、１００から１５０の間で、長さは５０となる。更にＩＯ−１とＩＯ−２とＩＯ−３との３つの要素間については、競合時間Ｔ（１，２，３）は、１２０から１５０の間であり、長さは３０となる。このような変換に従い、タイミング情報３２ｂにおける競合時間の各項目（「１⇔２」等）に値が格納される。競合時間の第１行目は上記例のＴの値（４０，３０，５０，３０）である。
【０１０９】
また、競合時間の値に対応して、要素間の競合が発生している場合には、タイミング情報３２ｂにおける競合回数が加算される。本例では、対象とするすべての周辺装置２（ＩＯ）の競合が発生しているので、第１行目の１のように、それぞれの競合回数が加算される。
【０１１０】
このように、すべて大小比較による差分で求められる競合時間のデータ、並びに競合回数のデータが、タイミング情報３２ｂ内に記録、蓄積される。カバレッジ情報記録更新処理Ｓ５４において、上記例に関するカバレッジ情報３２の内容の更新を行う。
【０１１１】
更には、これらのタイミング情報３２ｂのデータに基づき、図示していないが、競合時間の最大値、最小値、平均時間値、競合率の値なども、簡単な計算によって求めて、併せてカバレッジ情報３２内に記録するようにし、試験内容調整の判断に用いる。なお競合時間に関する最大、最小、及び平均時間、並びに競合回数に関しては、データ更新により管理される。
【０１１２】
＜９：試験データ調整処理＞
図９において、試験データ調整処理（Ｓ３４相当）に関する概略的処理フローを示している。前記蓄積されたカバレッジ情報３２に基づき、試験プログラム３０の処理内（試験データ調整処理部１８、試験生成処理部１１等）において、生成済み試験データ５０（試験命令列５１等）を利用してどのように試験リソースを作成するかについて例を説明する。
【０１１３】
判定処理（試験データ調整判定・候補決定処理）Ｓ８１において、試験データ調整処理部１８により、カバレッジ情報３２に基づき、試験データ５０を調整するか否か（前述の新規生成の場合）を判定する。調整の例として、前述のように、試験命令列５１を再利用してパラメータ５２のみを再生成する。
【０１１４】
この判定では、カバレッジ情報３２におけるイベント情報３２ａ内の発生回数、調整フラグ（調整回数）、発生頻度、並びにタイミング情報３２ｂ内の競合回数などの情報を用いる。この判定では、状況に合わせて臨機応変に、ＡＮＤ（論理積）条件やＯＲ（論理和）条件によって決定してもよい。この条件は、例えば各回の試験毎の条件による判定としてもよいし、システム設定などによって予め決定されていてもよい。
【０１１５】
この判定では、カバレッジ情報３２をもとに、以下のようなケース（部位）を認識する。即ち、未試験のケース（未だ試験対象として実現されていないケース、例えば発生回数が０の部位）や、試験が不十分なケース（例えば発生回数が少ない部位）や、システムバス５上での競合動作が未だ発生していない又は少ないケース（例えば競合回数が少ない部位）や、それらの試験対象の信号の組み合わせのケースなどである。
【０１１６】
上記ケース（部位）の認識により、調整か新規生成かを判断し、調整を行う場合は、試験内容調整の優先的な対象となる部位（要素など）を、複数の候補として決定する。Ｓ８１によって新規生成が選択された場合は、Ｓ８２，Ｓ８３等の処理を行わずに終わり、前記試験データ生成処理Ｓ２０等へ直接進むことになる。Ｓ８１によって調整が選択された場合は、乱数を用いた調整対象選定処理Ｓ８２へ進む。
【０１１７】
新規生成の場合の一例としては、例えば、イベント情報３２ａでの発生回数が１０００回、調整フラグが１００００回、発生頻度が９０％等の場合には、全体的に考えて試験に偏りがあると判断する。そして、それまでの調整処理（生成済みの試験命令列５１の再利用）は止めて、次回の試験内容を新規の試験データ５０の生成によるものとし（リセット）、例えば次の異なる信号条件（パターン）での試験を実行開始するに至る。
【０１１８】
また、新規生成の場合の別の一例としては、試験内容をある条件の一点に絞り、その一点に対して、しらみつぶし的に試験を行う場合において、満了の条件とする発生回数と調整フラグ（調整回数）などを設け、その満了の条件を満足した場合には、次回の試験を新規生成とする。
【０１１９】
調整対象選定処理Ｓ８２では、生成済みの試験命令列５１をもとに、Ｓ８１で得られた調整対象となる被試験装置２０の複数の候補の中から、更に乱数を用いて、ランダムに調整対象を選定する。調整可能な組み合わせが多いため、乱数を用いて選定する。
【０１２０】
試験データ調整（パラメータ再生成）処理Ｓ８３においては、Ｓ８２で選定された調整対象を、前記生成済みの試験命令列５１を再利用して、次回の試験内容となるパラメータ５２を再生成する処理を行う。これにより、次回の試験のための調整された試験データ５０が得られる。
【０１２１】
これらの処理の後、前記試験データ生成処理Ｓ２０では、再び、試験生成処理部１１により、調整された試験データ５０による試験、あるいは新規生成による試験が生成される。なお、Ｓ２０の一部ないし変形としてＳ８３を行う形態と考えても同様である。
【０１２２】
＜１０：競合タイミング調整例＞
図１０において、図９の試験データ調整処理（Ｓ３４）に関して、（ａ）調整前と（ｂ）調整後の例をタイムチャートとして示している。本例は特に競合試験のために要素の実行タイミングを調整して競合動作を自動調整する場合である。矩形は各要素の起動状態（動作時間）を示し、試験命令列５１とパラメータ５２により決められている。
【０１２３】
本例での試験対象の要素は、プロセッサ１に関するＣＰＵ−０〜ＣＰＵ−３の４つ、及び周辺装置２に関するＩＯ−０〜ＩＯ−３の４つを有する。生成済みの試験命令列５１は、上記４つのプロセッサ１に対する各試験の実行タイミング、及び上記４つのＩＯ（周辺装置２）に対する各試験の実行タイミングである。
【０１２４】
対象の各要素の実行タイミングは図示の通りである。例えば、ＩＯ−１が最初に実行され、その後、ＩＯ−３、ＩＯ−２の実行終了直後、殆ど並行して、ＩＯ−０、ＣＰＵ−２、ＣＰＵ−３と続き、少々遅れてＣＰＵ−１、ＣＰＵ−０が実行されるといったものである。これら一連の実行タイミングの情報は、図示しないが前記カバレッジ情報３２（タイミング情報３２ｂ）に含まれている。例えば、（ａ）調整前の情報は、前回（今回）実行した試験の結果を示しており、タイミング情報３２ｂの内容として既に格納されているものとする。
【０１２５】
図９の試験データ調整処理において、目的として、これらの対象の要素の中から、調整（パラメータ５２の再生成）に有効なものが選択され、実行タイミングの調整が行われる。調整に有効な対象を選択するために、タイミング情報３２ｂが入力として参照される。具体例として、図７のタイミング情報３２ｂに、周辺装置２の競合時間と競合回数の結果の数値が格納されている。この競合時間と競合回数（ないし競合率）が少ないものが、優先的に候補として決定される（Ｓ８１）。候補の中からランダムに調整対象が選定される（Ｓ８２）。そして、当該調整対象について、試験データ調整（パラメータ再生成）処理Ｓ８３により、試験データ５０の試験命令列５１を再利用してパラメータ５２が再生成（調整）される。
【０１２６】
調整の仕方として、例えば、各々の対象の要素の起動時刻を調整する方法（起動スケジュールを調整する方法）と、動作時間（試験期間）の増減（長さ）を調整する方法とがある。また、それらのいずれか一方、あるいは両方を採用する場合がある。
【０１２７】
更に、起動時刻を調整する方法では、大きく分けて、分散（直列）型と、競合（並列）型とがある。分散（直列）型では、試験の開始から終了までの間、できるだけ直列に別の時期に、要素の起動時刻（動作時間）を割り当てる。これに対して、競合（並列）型では、できるだけ並列実行を意識して同時期に動作させるように要素の起動時刻（動作時間）を割り当てる。また、それら両方の型を乱数を用いて混在させるように取り入れる、分散競合混在型も可能である。
【０１２８】
動作時間（試験期間）の増減を調整する方法において、プロセッサ１の試験については、乱数で生成される試験命令列５１やデータ（パラメータ５２）の種類、配置場所などが調整される。具体的には、命令数の増減、命令の入れ替え、命令実行の繰り返し、命令の配置環境、データの配置環境、データの種類などが調整される。また、それ以外に割り込みやスヌープの外乱を付加する場合がある。
【０１２９】
入出力装置などの周辺装置２の試験については、転送長の増減、転送元・転送先の配置環境、起動用命令の配置環境、起動用命令による送受信の繰り返し、各プロトコルのモード切り替え、外部割り込み等の外乱、等がある。
【０１３０】
上記のような調整後、図７のカバレッジ情報３２のイベント情報３２ａの調整フラグ（調整回数）をインクリメントして更新する。これにより、何回、既存の試験データ５０を再利用して試験したのか、即ち調整の実績が、データとして残される。当該データは前述の判定（図９）の際に用いられる。
【０１３１】
図１０の例は、生成済みの試験命令列５１の再利用による調整及び試験において、被試験装置２０の複数の要素の試験命令列５１の競合の度合いを向上させるために、起動時刻（起動スケジュール）を調整する方法の１つである前記競合型の一例である。
【０１３２】
図９の試験データ調整処理において、図７のタイミング情報３２ｂの競合回数が少ないと判断された場合、それに該当する周辺装置２等の対象の実行タイミングが同時期になるように動かすために、複数の候補の中からランダムに選択して調整される（Ｓ８２，Ｓ８３）。
【０１３３】
例えば、（ａ）調整前の状態から、破線で示すＣＰＵ−２、ＩＯ−０、ＣＰＵ−３、並びにＣＰＵ−１、ＣＰＵ−０の起動タイミングを時間的に前倒しさせるように矢印の方向へ調整する（対応パラメータ５２の調整）。これにより、（ｂ）調整後の状態となる。各調整の要素の動作時間の長さはそのままに、起動タイミングが前へずれた形である。（ａ）調整前に比べて、（ｂ）調整後では、競合の度合いが向上していることがわかる。例えば、ＣＰＵ−２，ＩＯ−０等の要素とＩＯ−３等の要素とが同時並行動作する競合試験が行われる形となる。
【０１３４】
なお、本システムでは、図８や図１０のようなタイムチャートを、コンソール端末２００等の画面に表示する処理を行うことで、試験者は競合性などの状態を把握しやすい。図１１に、そのような競合性を表すタイムチャートの表示例を示す。
【０１３５】
このように、本実施の形態のシステムでは、実行済みの試験の試験データ５０を再利用して次回の試験内容を調整する。本システムでは、アサーション及びカバレッジを用いて、方針に従って、前回までの試験結果を次回以降の試験へフィードバック（反映）することによって、試験内容を自動的に調整する。このような試験を繰り返すことによって、被試験装置２０に関する機能及びタイミング等の試験に関して、網羅性を高めることが実現できる。特に、無意味な試験（例えば重複するような試験）の実行を回避、削減でき、競合率を高めた競合試験等の有効な試験を効率良く実行できる。従って、試験の期間の短縮を図ることができ、製品の品質を高めることができる。
【０１３６】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。
【産業上の利用可能性】
【０１３７】
本発明は、ＩＣ設計及び試験などのための情報処理システムに利用可能である。
【図面の簡単な説明】
【０１３８】
【図１】本発明の一実施の形態の情報処理装置試験方法及びプログラムを適用する情報処理装置（ＥＷＳ）を含んで成る情報処理システム（論理シミュレーション環境）の基本的な構成例を示す図である。
【図２】本試験方法及びプログラムにおける論理シミュレータ上での被試験装置の構成例、及びそれに関連する、試験実行時の試験プログラム（試験データ）の状態を示す説明図である。
【図３】論理シミュレータと試験プログラムを中心とした特徴的な制御部における各処理部などの相関関係を含む構成を示す図である。
【図４】試験プログラム及びアサーションチェッカーの概略処理フローを示す図である。
【図５】アサーション監視情報によるカバレッジ情報更新処理に関する概略的フロー、アサーションチェッカー制御プログラム及びアサーション監視情報の例を示す図である。
【図６】アサーションチェックにおける試験対象信号の信号条件（競合条件）の例を示す図であり、（ａ）は信号条件の例、（ｂ）は信号条件の記述例である。
【図７】カバレッジ情報の構成例を示す図であり、そのうち、（ａ）はイベント情報、（ｂ）はタイミング情報を示す。
【図８】被試験装置の複数の要素における競合動作のタイミングの例を示す図である。
【図９】試験データ調整処理（Ｓ３４）に関する概略処理フローを示す図である。
【図１０】試験データ調整処理（Ｓ８３）に関して、（ａ）調整前と（ｂ）調整後の例をタイムチャートとして示す図である。
【図１１】競合性を表すタイムチャートを、コンピュータの画面に表示する処理に関して、イメージを示す図である。
【符号の説明】
【０１３９】
１…プロセッサ（ＣＰＵ）、２…周辺装置（ＩＯなど）、３…記憶装置（メモリ）、５…システムバス、６（６−１，６−２，６−３）…アサーションチェッカー、１０…論理シミュレータ、１１…試験生成処理部、１２…期待値生成処理部、１３…試験実行処理部、１４…試験結果比較・出力処理部、１５…アサーション起動処理部、１６…監視情報採取・解析処理部、１７…カバレッジ情報更新処理部、１８…試験データ調整処理部、２０…被試験装置（論理ファイル）、３０…試験プログラム（乱数試験プログラム）、３１…アサーション監視情報、３２…カバレッジ情報、３２ａ…イベント情報、３２ｂ…タイミング情報、５０…試験データ、５１…試験命令列、５２…パラメータ、６０…アサーションチェッカー制御プログラム、１００…ＥＷＳ（エンジニアリングワークステーション）、１０１…制御部、１０２…記憶部、１０３…通信部、１０４…補助記憶部、１０５…入力部、１０６…表示部、２００…コンソール端末。
【図１】
2010044622.tif 000003
【図２】
2010044622.tif 000004
【図３】
2010044622.tif 000005
【図４】
2010044622.tif 000006
【図５】
2010044622.tif 000007
【図６】
2010044622.tif 000008
【図７】
2010044622.tif 000009
【図８】
2010044622.tif 000010
【図９】
2010044622.tif 000011
【図１０】
2010044622.tif 000012
【図１１】
2010044622.tif 000013