(57)【要約】【課題】  有限期間内に最適なテストベクトルで最も効果的な検証を行う。【解決手段】  リファレンスモデル検証手段と、テストベクトル毎のＤＵＴに対するリファレンスモデルの活性化状態（ソースコードカバレッジ／ファンクショナルカバレッジ）を解析する手段と、テスト実行時間を解析する手段と、所定の活性化状態を満足する最短実行時間のテストベクトルセットを選択する手段と、当該最短実行時間のテストベクトルセットでＤＵＴを検証する手段とから構成される論理検証装置。【選択図】  図１
2007026362.tif 000002
【特許請求の範囲】
【請求項１】
論理回路を論理シミュレーションにより機能検証するシステムであって、
記憶手段と、
テストベクトル解析手段と、
から構成され、
前記テストベクトル解析手段は、
シミュレーション実行を制御すると共に、
当該テストベクトルと、
当該シミュレーションにおける着目するテストアイテムに関わるカバレッジと、
前記テストアイテムに関わる前記カバレッジが十分であることを示す目標カバレッジと、
当該シミュレーションの実行時間と、
当該シミュレーションの実行可能時間を示す目標実行時間と、
を前記記憶手段に対応付けて記憶し、
前記カバレッジの値を加算する手段と、
当該カバレッジ加算結果と前記目標カバレッジとを比較する手段と、
前記実行時間の値を加算する手段と、
当該実行時間加算結果と前記目標実行時間とを比較する手段、
により、当該カバレッジ加算結果が、前記目標カバレッジを満足し、かつ、当該実行時間加算結果が、前記目標実行時間を超過しないこと、を判断し、
当該判断に誤りがある場合は、当該テストベクトルを削除する手段、
により、当該テストベクトルを削除し、当該判断に誤りがない場合は、当該テストベクトルを抽出すること、
を特徴とする機能検証システム。
【請求項２】
前記指標として当該テストアイテムに関わる部分の当該論理回路のソースコードカバレッジを用いること、
を特徴とする請求項１記載の機能検証システム。
【請求項３】
前記指標として当該テストアイテムに関わり定義された機能カバレッジアイテムに関する機能カバレッジを用いること、
を特徴とする請求項１記載の機能検証システム。
【請求項４】
前記指標として論理回路の端子或いは内部信号の活性化状態の有無を用いること、
を特徴とする請求項１記載の機能検証システム。
【請求項５】
前記指標として当該テストアイテムに関わる部分の論理回路のソースコードカバレッジ及び当該テストアイテムに関わり定義された機能カバレッジアイテムに関する機能カバレッジの双方を用いること、
を特徴とする請求項１記載の機能検証システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理回路の機能検証システムおよび方法に関し、限られた検証期間内に所定の機能検証確度を得ることが可能な効率的なシステムおよび方法に関するものである。
【背景技術】
【０００２】
近年、LSIの集積度が飛躍的に向上し、１チップに搭載できる論理回路がますます大規模化、複雑化してきている。これに伴い、論理回路の機能検証に要する期間が非常に長期化しており、LSIの開発期間を短縮する観点から、検証期間を短縮しつつ、かつ検証の信頼性を確保することへの要求が高まっている。
【０００３】
LSIの論理検証に関して、どれだけ検証できているかの検証十分性を測る尺度として機能カバレッジや、RTL（Register Transfer Level）のソースコードカバレッジが知られている。
【０００４】
機能カバレッジは、検証者によって定義されたテストプランの着目するテストアイテム（機能検証項目）が検証されたかを判定する指標になる。機能カバレッジ項目は、検証対象の論理回路、即ち、DUT（Design Under Test）（以下、DUTと呼ぶ）の仕様書からテストすべき項目として抽出された、テストアイテム毎に、当該テストアイテムを十分に検証するのに必要となるパラメータ等をどれだけ網羅すべきかという形で明確化される。具体的には、DUTへの入力信号の種類、DUTの出力信号の種類、DUTの内部信号の状態等、着目すべきパラメータ及びその網羅すべき値がピックアップされる。そして、当該テストアイテムを検証するために作成されたテストのテストベクトルを替えて論理シミュレータ上で実行していき、各テスト即ち各論理シミュレーションにおける当該機能カバレッジを測定し、測定した機能カバレッジの累積が着目するパラメータの予めピックアップされた全ての値を網羅した段階で、当該テストアイテムに関する検証はカバレッジの観点から十分であると判断することができる。但し、各論理シミュレーションにおいて、当該テストアイテムの機能検証を行う上で、必要に応じて、機能カバレッジとは別に、当該機能が正常に動作しているかをチェックすることも必要になる。
【０００５】
一方、RTLのソースコードカバレッジは、論理シミュレーションによりソースコードの各ラインが活性化されたか否かを解析するものである。解析の結果、活性化されない箇所（ライン）があった場合には、それは、テストアイテムの洗い出しの抜け、或いは、作成したテスト上でのテストアイテム検証部の実装抜け、或いは、対応するテストアイテム検証部の実装済みテストの流し忘れ、或いは、DUTが機能仕様書に記載されていない機能を実装していること、或いは、DUTのソースコードに冗長な箇所があることを意味する。前３者の場合は、当該DUTの機能検証として不十分であることが確認でき、後２者の場合は、DUTのソースコードの品質を確認することができる。前者の場合は、抜けたテストアイテムを追加、或いは、テスト内容を追加、或いは、テスト実行を追加して、検証の十分性を確保しなければならない。
【０００６】
一般に、機能検証を効率的に行い検証期間を短縮するための技術としては、シミュレーション実行後に前記機能カバレッジ或いはソースコードカバレッジを検証十分性の指標として用いて、テスト或いはテストベクタをランク付けする、冗長なテストやテストベクトルを特定する検証ツールが知られている。
【０００７】
又、従来例としては、例えば特許文献１をあげることが出来る。
【特許文献１】特開２００２−４１５９６号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上記従来例では、着目するテストアイテムに対して効率的なテスト或いはテストベクトル群を選択するものも出てきてはいるものの、まだ、テストやテストベクトルに冗長なものが含まれており、検証期間に目標以上に時間がかかるという問題点があった。この結果、当該DUTを含むLSIの開発期間が増大し、当該LSIを搭載する製品の市場への投入時期が遅れ、目標とする利益を確保できない等の不利益を被る状況に陥っていた。
【０００９】
本発明は、上述の課題に鑑みてなされたもので、その目的とするところは、限られた検証期間内に所定のテストアイテムに対して所定の確度で検証を行うのに必要なテスト或いはテストベクトルを選択し、限られた時間内に所定の確度を満足しつつ、最も効率的な機能検証システムおよび方法を提供することである。
【課題を解決するための手段】
【００１０】
上記の目的を達成するために本発明による機能検証システムは、以下の構成を備える。即ち、論理回路の機能検証システムであって、複数の条件で実行された検証対象のDUTのリファレンスモデルを用いた複数のシミュレーションに対して、各シミュレーションの実行時間・条件およびシミュレーション結果の所定の検証確度を示す指標の値を対応付けて記憶すると共に当該指標の所定の目標を記憶する記憶手段と、当該記憶した複数のシミュレーション結果の所定の検証確度を示す指標の値とシミュレーション実行時間の値を解析し、当該指標の値の和が所定の目標を満足し、かつ、当該シミュレーション実行時間の値が所定の設定値を満足するシミュレーション条件群を抽出する抽出手段とを有することを特徴とする機能検証システム。
【発明の効果】
【００１１】
以上説明したように、本発明において、DUTの機能検証に関わり、限られた検証期間内に、所定のテストアイテムに対して所定の確度で検証を行うのに最適なテスト群或いはテストベクトル群を選択することにより、限られた検証期間内に、所定のテストアイテムに対して所定の確度を満足しつつ、最も効率的に機能検証を実行することができるという大きな効果がある。
【発明を実施するための最良の形態】
【００１２】
本発明の実施の形態について図面を参照して説明する。
【００１３】
本発明の実施の形態においては、DUTとDUT検証用のテストベンチおよびテストを論理シミュレータ上で動作させるシミュレーションを、実行することにより動的検証を行うことを想定している。また、テストで用いる各シミュレータの条件となる、DUTおよびその他テストベンチへの入力信号の値、パラメータの値など、設定値の集合をテストベクトルと呼ぶこととする。そして、当該テストベクトルを様々な値を用いることにより、様々なシミュレーションの条件を実現することができる。着目するテストアイテムに関する効率的かつ要求される所定の検証確度を満足する機能検証を行うためには、適切なシミュレーション条件、即ち、テストベクトルを選択してシミュレーションを実行する必要がある。実DUTに対して、様々なテストベクトルを用いてシミュレーションを実行すると、DUTおよびテスト内容によっては非常に時間を要するため、本実施形態においては、先ず、DUTと同等の機能をより抽象度高く実現するリファレンスモデルを用いて、リファレンスモデル用シミュレータおよびリファレンスモデル用テストにより、最適なテストベクトルを選択する。そして、その後、当該テストベクトルを用いて、実DUTに対してシミュレーションを実行し、限られた検証期間内に効率的かつ所定の検証確度を満足する機能検証を行う。尚、本実施形態においては、DUT用とリファレンスモデル用とでテストおよびテストベクトルは同一のものが適用できるものとする。また、本実施形態においては、各テストベクトルを用いたシミュレーションの実行時間を検出し、当該実行時間の値が実行可能時間の設定値以下であれば、シミュレーション実行時間は満足されているとみなす。各テストベクトルを用いたシミュレーションの機能検証確度を測る尺度として、ソースコードカバレッジを用いることを想定している。即ち、着目するテストアイテムに対して所定の部分のソースコードが対応し、シミュレーションにおいて当該部分のソースコードが活性化され、カバレッジが取れていれば、所定の機能検証確度を満足されているとみなす。但し、実際に着目するテストアイテムに関わる機能が所定の仕様を満足するかは別途チェッカ等でチェックする必要があり、チェックするものとする。また、DUTと対応するリファレンスモデルのソースコード及びソースコードカバレッジは一対一に対応するものとする。以下両者を特に区別しない。また、ソースコードカバレッジに関する部分は、以下単にカバレッジと呼ぶこととする。
【００１４】
図１に、本発明の機能検証システムの１実施例を示す。図１において、機能検証システム（１）は、検証対象のDUT（１０）、当該DUT（１０）の機能検証のためのDUT用テスト（１１）、不図示のサーバ上で当該DUT（１０）およびDUT用テスト（１１）に対する論理シミュレーションを実行するための論理シミュレータ（１２）、当該論理シミュレーションにおける当該DUT（１０）のソースコードの活性化状態を判定し結果を収集するDUT用カバレッジ収集部（１３）、当該DUT（１０）と同等の機能を実現する、より高い抽象度でモデル化されたリファレンスモデル（２０）、当該リファレンスモデル（２０）の機能検証のためのリファレンスモデル用テスト（２１）、不図示のサーバ上で当該リファレンスモデル（２０）及びリファレンスモデル用テスト（２１）に対するシミュレーションを実行するためのリファレンスモデルシミュレータ（２２）、当該リファレンスモデルのシミュレーションにおける当該リファレンスモデル（２０）のソースコードの活性化状態を判定し結果を収集するリファレンスモデル用カバレッジ収集部（２３）、当該リファレンスモデル（２０）のシミュレーション時にリファレンスモデル用テスト（２１）の入力データとして与えるテストベクトルの集合であるテストベクトル群（３１）、当該テストベクトル群（３１）を生成するテストベクトル生成部（３０）、そして、本発明の機能検証システム（１）の主要部であるテストベクトル抽出部（５０）とから構成される。当該テストベクトル抽出部（５０）は、記憶部（５１）とテストベクトル解析部（５２）とから構成される。
【００１５】
記憶部（５１）は、以下の各記憶部から構成される。主要な要素は、後述するリファレンスモデル用カバレッジ収集部（２３）から得られる各テストベクトルを記憶するテストベクトル記憶部（１００）、当該テストベクトルを用いた場合のカバレッジを記憶するカバレッジ記憶部（１０１）、当該テストベクトルを用いた場合のシミュレーション実行時間を記憶する実行時間記憶部（１０２）、シミュレーション実行時間に対するカバレッジの取得率を記憶するカバレッジ取得率記憶部（１０３）、着目するテストアイテムに関する検証確度が十分であることを示す、機能検証の目標となる目標カバレッジを記憶する目標カバレッジ記憶部（１０４）、シミュレーション実行時間の上限を示す目標実行時間を記憶する目標実行時間記憶部（１０５）、後述するテストベクトル解析部（５２）における複数のカバレッジの加算結果を複数分一時記憶するカバレッジ群候補記憶部（１１３）、複数の実行時間の加算結果を一時記憶する実行時間積算記憶部（１１４）、テストベクトル解析部（５２）で最終的に抽出された最適なテストベクトル群を記憶するテストベクトル群記憶部（１１６）、テストベクトル解析部（５２）での最終的なテストベクトル群の抽出ができたか否かを示す抽出可否判定を記憶する抽出可否判定記憶部（１１５）である。判定が否の場合は“0”、可の場合は“1”を格納するものとする。他に、テストベクトル候補を抽出過程で、未達成の中間的な目標カバレッジを達成するための候補となるテストベクトル群を記憶する未達テストベクトル群記憶部（１０６）、中間的な目標カバレッジを達成するために用いたテストベクトル群を記憶する達成テストベクトル群記憶部（１０７）、未達テストベクトル群の中で、中間的な目標カバレッジに最も一致するカバレッジを有するテストベクトルを一時記憶するテストベクトル一時記憶部（１０８）、前記未達カバレッジを記憶する未達カバレッジ記憶部（１１０）、前記達成カバレッジを記憶する達成カバレッジ記憶部（１１１）、前記テストベクトル一時記憶部（１０８）に記憶したテストベクトルのカバレッジを記憶するカバレッジ一時記憶部（１１２）、テストベクトル解析繰り返し処理毎に当該中間的な目標カバレッジに最も一致するテストベクトルを記憶する初期テストベクトル記憶部（１０９）がある。尚、カバッレジ群候補記憶部（１１３）、初期テストベクトル記憶部（１０９）は、テストベクトル解析繰り返し処理の繰り返し回数分の記憶領域を有するものとする。その数はテストベクトルの数ｎと一致する。
【００１６】
テストベクトル解析部（５２）は、演算制御部（１２０）、比較部（１２１）、加算部（１２２）、削除部（１２３）とから構成される。比較部（１２１）は前記カバレッジ記憶部（１０１）に記憶した各テストベクトルを用いた場合のカバレッジ、或いは、カバレッジ群候補記憶部（１１３）に記憶した複数のカバレッジを加算した結果のカバレッジ加算結果と未達カバレッジ記憶部（１１０）に記憶したテストベクトル抽出過程での中間的な目標カバレッジを比較する。また、実行時間、或いは、実行時間積算記憶部（１１４）に記憶した複数の実行時間を加算した結果の実行時間加算結果と目標実行時間記憶部（１０５）に記憶した目標実行時間を比較する。加算部（１２２）は、カバレッジ記憶部（１０１）に記憶した複数のテストベクトルに対するカバレッジ同士、或いは、カバレッジ記憶部（１０１）に記憶したテストベクトルに対するカバレッジとカバレッジ群候補記憶部（１１３）に記憶したカバレッジ加算結果とを加算し、加算結果を記憶部（５１）のカバレッジ群候補記憶部（１１３）に格納する。また、実行時間記憶部（１０２）に記憶した複数のテストベクトルに対する実行時間同士、或いは、実行時間記憶部（１０２）に記憶したテストベクトルに対する実行時間と実行時間積算記憶部（１１４）に記憶した実行時間加算結果とを加算し、加算結果を記憶部（５１）の実行時間積算記憶部（１１４）に格納する。そして、カバレッジの加算結果が目標カバレッジと一致、或いは、目標カバレッジのカバレッジ要素を全て含み、かつ、実行時間の加算結果が目標実行時間と一致、或いは目標実行時間よりも短い場合は、当該加算結果を構成するテストベクトルを最適なテストベクトルとして記憶部（５１）のテストベクトル群記憶部（１１６）に記憶する。削除部（１２３）はテストベクトル抽出過程での中間的な目標カバレッジが満足された場合、或いは、当該中間的な目標カバレッジを満足するテストベクトル候補が存在しない場合、記憶部（５１）の中間バッファ的な各記憶部を削除すると共に、前記加算結果が既に加算されたテストベクトルのカバレッジ以外の目標カバレッジに至っていない場合は、記憶部（５１）の前記カバレッジ群候補記憶部（１１３）に記憶されているカバレッジ加算結果と、前記実行時間積算記憶部（１１４）に記憶されている実行時間加算結果を削除する。演算制御部（１２０）は、比較部（１２１）、加算部（１２２）、削除部（１２３）を制御し、記憶部（５１）の各記憶部に格納されたデータを処理して、テストベクトル群の抽出工程の制御を司る。また、演算制御部（１２１）は、後述するテストベクトル群（３１）、及び、リファレンスモデル用カバレッジ収集部（２３）からのカバレッジデータを記憶部（５１）に格納する制御を司る。また、記憶部（５１）に記憶している全てのテストベクトルを用いても、所定の目標カバレッジを達成できないことが分かった場合は、後述するテストベクトル生成部（３０）を制御して、新たにテストベクトルを生成させる制御を司る。また、リファレンスモデルシミュレータ（２２）及びリファレンスモデル用カバレッジ収集部（２３）を制御して、前記生成させたテストベクトル群を用いて、リファレンスモデル（２０）に対するシミュレーションを実行させ、当該テストベクトルを用いたシミュレーションに対するカバレッジデータを取得し、記憶部（５１）に格納する。また、テストベクトルを抽出できた場合、当該論理シミュレータ（１２）、DUT用カバレッジ収集部（１３）を制御して、当該テストベクトルを用いて、DUT（１０）に対するシミュレーションを実行させ、当該テストベクトル群を用いたシミュレーションに対するカバレッジデータを取得し、記憶部（５１）に格納する。
【００１７】
尚、本実施例においては、テストベクトルはテストベクトル識別番号を付して記憶し、当該テストベクトルによるカバレッジや実行時間、状態活性化率にもカバレッジ識別番号や実行時間識別番号、状態活性化率識別番号を付して記憶し、テストベクトルとカバレッジ、実行時間、状態活性化率とを対応に合わせて、当該テストベクトル識別番号とカバレッジ識別番号、実行時間識別番号、状態活性化率識別番号とを対応させて記憶するようにする。また、未達テストベクトル群記憶部（１０６）、達成テストベクトル群記憶部（１０７）、テストベクトル一時記憶部（１０８）、初期テストベクトル記憶部（１０９）、テストベクトル群記憶部（１１６）には、前記テストベクトル識別番号の組み合わせを記憶するものとする。
【００１８】
また、本実施形態においては、カバレッジに関しては、各カバレッジアイテムを識別番号を付して記憶すると共に、各カバレッジのデータとしては、当該カバレッジアイテム毎に当該カバレッジアイテムの係数、即ち、当該カバレッジアイテムをカバーした回数を記憶するものとする。前記カバレッジアイテムは、ソースコードカバレッジの対象となる、1ライン或いは所定の区分された複数ライン群のことを意味する。
【００１９】
尚、本実施形態の上記各構成要素は、ワークステーション或いはPC上において、主記憶あるいは補助記憶装置に保存され、中央演算処理装置の制御に基づき機能するものとする。
【００２０】
図２は、図１に示した本実施形態の動作を説明する動作フローチャートである。以下、図２の動作フローチャートに基づいて、本実施形態の機能検証システム（１）の主要部分であるテストベクトル抽出部（５０）の動作を説明する。尚、演算制御部（１２０）の制御により、予め、記憶部（５１）のテストベクトル記憶部（１００）にはテストベクトル生成部（３０）で生成されたテストベクトル群（３１）の一部のテストベクトル郡のデータが格納されているものとする。
【００２１】
先ず、演算制御部（１２０）は、Ｓ２００で、着目するテスト項目に対する目標カバレッジ、目標実行時間を設定し、目標カバレッジを目標カバレッジ記憶部（１０４）に、目標実行時間を目標実行時間記憶部（１０５）に格納する。そして、抽出可否判定記憶部（１１５）に初期値として抽出が出来なかったことを示す“0”を、カバレッジ判定記憶部（１１６）に初期値として目標カバレッジの達成・未達成を重視しないことを示す“0”を格納する。次に、Ｓ２０１で、前記目標カバレッジ記憶部（１０４）の目標カバレッジを未達カバレッジ記憶部（１１０）にコピーする。そして、Ｓ２０２で、テストベクトル記憶部（１００）内の各テストベクトルに識別番号i（１、…、n）を付与し、未達テストベクトル群記憶部（１０６）にコピーする。続いて、Ｓ２０３で、リファレンスモデルシミュレータ（２２）を制御して、各テストベクトルiを用いてリファレンスモデル（２０）に対するシミュレーションを実行し、リファレンスモデル用カバレッジ収集部（２３）より各々のカバレッジデータを取得し、カバレッジ記憶部（１０１）に、各テストベクトル対応に格納する。次に、Ｓ２０４で、未達テストベクトル記憶部（１０６）内のテストベクトルで、対応するカバレッジが前記未達カバレッジ記憶部（１１０）の内容（中間的な目標カバレッジ）と最も一致するテストベクトルを、カバレッジ記憶部（１０１）のカバレッジと当該未達カバレッジ記憶部（１１０）の内容（中間的な目標カバレッジ）とを比較部（１２１）を動作させて抽出し、抽出した当該カバレッジに対応するテストベクトルを、テストベクトル一時記憶部（１０８）、および、達成テストベクトル群記憶部（１０７）に格納し、当該カバレッジをカバレッジ一時記憶部（１１２）、および、カバレッジ群候補記憶部（１１３）に格納し、当該カバレッジと目標カバレッジの一致部分を達成カバレッジ記憶部（１１１）に格納する。続いて、Ｓ２０５で、削除部（１２３）を制御して、テストベクトル一時記憶部（１０８）内のテストベクトルを未達テストベクトル群記憶部（１０８）から削除し、前記当該カバレッジと目標カバレッジの一致部分を未達カバレッジ記憶部（１１０）から削除する。続いて、Ｓ２０６で、達成テストベクトル群記憶部（１０７）の内容をテストベクトル群記憶部（１１６）にコピーし、実行時間積算記憶部（１１４）の値に実行時間を加算する。
【００２２】
次に、Ｓ２０７で、実行時間積算記憶部（１１４）の内容と目標実行時間記憶部（１０５）に格納された目標実行時間の内容との大小を、制御部（１２１）を制御して比較する。Ｓ２０７で、実行時間積算記憶部（１１４）の内容が、目標実行時間記憶部（１０５）に格納された目標実行時間の内容よりも大きい場合（Yesの場合）は、Ｓ２１２へ進み、未達カバレッジ記憶部（１１０）、未達テストベクトル群記憶部（１０６）、達成カバレッジ記憶部（１１１）、達成テストベクトル群記憶部（１０７）、カバレッジ群候補記憶部（１１３）、テストベクトル群記憶部（１１６）、実行時間積算記憶部（１１４）の内容を１つ前の状態に戻す。Ｓ２０７で、Noの場合はＳ２０８に進み、達成カバレッジ記憶部（１１１）の内容が、目標カバッレジ記憶部（１０４）に格納された目標カバレッジの内容と一致するか、比較部（１２１）を制御して比較する。Ｓ２０８でYesの場合は、Ｓ２１３で、抽出可否判定記憶部（１１５）に抽出可を示す“１”を格納し、論理シミュレータ（１２）を制御して、前記テストベクトル群を用いてDUT（１０）に対するシミュレーションを実行し、DUT用カバレッジ収集部（１３）よりカバレッジを取得して、カバッレジ記憶部（１０１）に格納する。Ｓ２０８でNoの場合、Ｓ２０９に進む。Ｓ２０９で、未達テストベクトル群記憶部（１０６）内にテストベクトルが存在しないか調べ、存在しない場合はＳ２１４に進む。存在する場合はＳ２１０に進む。Ｓ２１０で、未達テストベクトル群記憶部（１０６）内に未達カバレッジ記憶部（１１０）内のカバレッジを満たすテストベクトルが存在しないか、カバレッジ記憶部（１０１）内の対応するカバレッジと未達カバレッジ記憶部（１１０）内の内容とを、比較部（１２１）を制御して比較する。Ｓ２１０で存在しない場合、Ｓ２１４に進む。Ｓ２１０で存在する場合、Ｓ２１１で、未達テストベクトル群記憶部（１０６）内のテストベクトルで、対応するカバレッジが前記未達カバレッジ記憶部（１１０）の内容（中間的な目標カバレッジ）と最も一致するテストベクトルを、カバレッジ記憶部（１０１）のカバレッジと当該中間的な目標カバレッジとを、比較部（１２１）を動作させて抽出し、抽出した当該カバレッジに対応するテストベクトルを、テストベクトル一時記憶部（１０８）、および、達成テストベクトル群記憶部（１０７）に格納し、当該カバレッジをカバレッジ一時記憶部（１１２）に格納、及び、カバレッジ群候補記憶部（１１３）に追加格納し、当該カバレッジと目標カバレッジの一致部分を達成カバレッジ記憶部（１１１）に追加格納し、Ｓ２０５に戻り、前記工程を繰り返す。Ｓ２１４では、テストベクトルの抽出が行えなかったことを出力・表示する。
【００２３】
図３はテストベクトル群のカバッレジ例を示したものであり、A、B、C，…はソースコードの所定の区分されたライン群に対応するカバレッジを示すものであり、アルファベットを記載した場合に、当該区分に対するカバレッジが取れたことを示すものとする。本例においては、目標カバレッジは、「A、B、C、D、E、F」に対応するカバレッジを取得し、シミュレーション実行時間を4時間としており、これに対して、テストベクトル１では「C、D、E、F、G」と目標カバレッジのうち、「C、D、E、F」はカバーされ、実行時間は2時間となっている。（目標カバレッジには含まれていない、「G」が余計にカバーされている。）
図４は、前記図３に示したテストベクトル群およびカバレッジ、実行時間が与えられた場合に、図２に記載した本発明のテストベクトル解析工程を適用した際の、テストベクトル抽出部（５０）の各記憶部の内容の変化を、各ステップとの対応を示しながら、例示したものである。以下、図４を参照して、本発明のテストベクトル解析工程を説明する。
【００２４】
先ず、Ｓ２００で、目標カバレッジ記憶部（１０４）に目標カバレッジ「A  B  C  D  E  F」を、目標実行時間記憶部（１０５）に目標時間「4 h」を格納し、Ｓ２０１で、未達カバレッジ記憶部（１１０）に当該目標カバッレジの内容をコピーする。Ｓ２０２で、テストベクトル記憶部（１００）に格納されているテストベクトル群の識別番号「１、２、３、４、５」を未達テストベクトル群記憶部（１０６）に格納する。次に、Ｓ２０４で、未達カバレッジ記憶部（１１０）の内容（中間的な目標カバレッジ）「A  B  C  D  E  F」と最も一致する要素の多いテストベクトル１を選択し、識別番号「１」をテストベクトル一時記憶部（１０８）、達成テストベクトル群記憶部（１０７）、および、実行時間積算記憶部（１１４）に格納する。そのカバレッジ「C  D  E  F  G」をカバレッジ一時記憶部（１１２）、および、カバレッジ群候補記憶部（１１３）に格納する。また、当該カバレッジと中間的な目標カバレッジとの一致部分「C  D  E  F」を達成カバレッジ記憶部（１１１）に格納する。次に、Ｓ２０５で、テストベクトル一時記憶部（１０８）内のテストベクトル「１」を未達テストベクトル群記憶部（１０６）から削除し、「２、３、４、５」を格納する。また、前記当該テストベクトル「１」のカバレッジと中間的な目標カバレッジとの一致部分を未達カバレッジ記憶部（１１０）から削除し、「A  B」を格納する。続いて、Ｓ２０６で、達成テストベクトル群記憶部（１０７）の内容「１」をテストベクトル群記憶部（１１６）に格納し、実行時間積算記憶部（１１４）の値に実行時間「2 h」を加算し、実行時間積算記憶部（１１４）に格納する。この後、Ｓ２０７で、実行時間積算記憶部（１１４）の内容が目標実行時間を超えていないか調べ、この場合はまだ超えていないため、Ｓ２０８に進む。その後、Ｓ２０８で、達成カバレッジ記憶部（１１１）の内容が目標カバレッジを満たすか調べ、この場合はまだ満たしていないため、Ｓ２１１に進む。
【００２５】
次に、Ｓ２１１で、未達カバレッジ記憶部（１１０）の内容「A  B」と最も一致する要素の多いテストベクトル５を選択し、識別番号「５」をテストベクトル一時記憶部（１０８）に格納すると共に、達成テストベクトル群記憶部（１０７）に追加し、「１、５」を格納する。そのカバレッジ「A  B  C」をカバレッジ一時記憶部（１１２）に格納すると共に、カバレッジ群候補記憶部（１１３）に追加し、「A  B  ２C  D  E  F  G」を格納、実行時間積算記憶部（１１４）に「5 h（2 h + 3 h）」を格納する。また、当該カバレッジと中間的な目標カバレッジとの一致部分「A  B」を達成カバレッジ記憶部（１１１）に追加し、「A  B  C  D  E  F」を格納する。次に、Ｓ２０５で、テストベクトル一時記憶部（１０８）内のテストベクトル識別番号「５」を未達テストベクトル群記憶部（１０６）から削除し、「２、３、４」を格納する。また、当該テストベクトル５のカバレッジと中間的な目標カバレッジとの一致部分「A  B」を未達カバレッジ記憶部（１１０）から削除し、「  」（空）を格納する。続いて、Ｓ２０６で、達成テストベクトル群記憶部（１０７）の内容「１、５」をテストベクトル群記憶部（１１６）に格納し、実行時間積算記憶部（１１４）の値に実行時間「3 h」を加算し、実行時間積算記憶部（１１４）に格納する。この後、Ｓ２０７で、実行時間積算記憶部（１１４）の内容が目標実行時間を超えていないか調べ、この場合は超えているため、Ｓ２１２に進み、Ｓ２１２で、未達カバレッジ記憶部（１１０）、未達テストベクトル群記憶部（１０６）、達成カバレッジ記憶部（１１１）、達成テストベクトル群記憶部（１０７）、カバレッジ群候補記憶部（１１３）、テストベクトル群記憶部（１１６）、実行時間積算記憶部（１１４）の内容を１つ前の状態に戻す。次に、Ｓ２０８で、達成カバレッジ記憶部（１１１）の内容が目標カバレッジを満たすか調べ、この場合はまだ満たしていないため、Ｓ２１１に進む。
【００２６】
次に、Ｓ２１１で、未達カバレッジ記憶部（１１０）の内容「A  B」と最も一致する要素の多いテストベクトル２を選択し、識別番号「２」をテストベクトル一時記憶部（１０８）に格納すると共に、達成テストベクトル群記憶部（１０７）に追加し、「１、２」を格納する。そのカバレッジ「A  C」をカバレッジ一時記憶部（１１２）に格納すると共に、カバレッジ群候補記憶部（１１３）に追加し、「A  ２C  D  E  F  G」を格納、実行時間積算記憶部（１１４）に「3 h（2 h + 1 h）」を格納する。また、当該カバレッジと中間的な目標カバレッジとの一致部分「A」を達成カバレッジ記憶部（１１１）に追加し、「A  C  D  E  F」を格納する。次に、Ｓ２０５で、テストベクトル一時記憶部（１０８）内のテストベクトル識別番号「２」を未達テストベクトル群記憶部（１０６）から削除し、「３、４」を格納する。また、当該テストベクトル２のカバレッジと中間的な目標カバレッジとの一致部分「A」を未達カバレッジ記憶部（１１０）から削除し、「B」を格納する。続いて、Ｓ２０６で、達成テストベクトル群記憶部（１０７）の内容「１、２」をテストベクトル群記憶部（１１６）に格納し、実行時間積算記憶部（１１４）の値に実行時間「1 h」を加算し、実行時間積算記憶部（１１４）に格納する。この後、Ｓ２０７で、実行時間積算記憶部（１１４）の内容が目標実行時間を超えていないか調べ、この場合はまだ超えていないため、Ｓ２０８に進む。その後、Ｓ２０８で、達成カバレッジ記憶部（１１１）の内容が目標カバレッジを満たすか調べ、この場合はまだ満たしていないため、Ｓ２１１に進む。
【００２７】
次に、Ｓ２１１で、未達カバレッジ記憶部（１１０）の内容「B」と最も一致する要素の多いテストベクトル３を選択し、識別番号「３」をテストベクトル一時記憶部（１０８）に格納すると共に、達成テストベクトル群記憶部（１０７）に追加し、「１、２、３」を格納する。そのカバレッジ「B  D  G」をカバレッジ一時記憶部（１１２）に格納すると共に、カバレッジ群候補記憶部（１１３）に追加し、「A  B  ２C  ２D  E  F  ２G」を格納、実行時間積算記憶部（１１４）に「4 h（3 h + 1 h）」を格納する。また、当該カバレッジと中間的な目標カバレッジとの一致部分「B」を達成カバレッジ記憶部（１１１）に追加し、「A  B  C  D  E  F」を格納する。次に、Ｓ２０５で、テストベクトル一時記憶部（１０８）内のテストベクトル識別番号「３」を未達テストベクトル群記憶部（１０６）から削除し、「４」を格納する。また、当該テストベクトル３のカバレッジと中間的な目標カバレッジとの一致部分「B」を未達カバレッジ記憶部（１１０）から削除し、「  」（空）を格納する。続いて、Ｓ２０６で、達成テストベクトル群記憶部（１０７）の内容「１、２、３」をテストベクトル群記憶部（１１６）に格納し、実行時間積算記憶部（１１４）の値に実行時間「4 h」を加算し、実行時間積算記憶部（１１４）に格納する。この後、Ｓ２０７で、実行時間積算記憶部（１１４）の内容が目標実行時間を超えていないか調べ、この場合はまだ超えていないため、Ｓ２０８に進む。その後、Ｓ２０８で、達成カバレッジ記憶部（１１１）の内容が目標カバレッジを満たすか調べ、この場合は満たしているため、Ｓ２１３に進む。
【００２８】
上記のようにして、本実施形態により、限られた検証期間内に所定のテストアイテムに対して所定の確度で検証を行うのに最適なテストベクトル群を選択し、限られた期間内に所定の確度を満足しつつ、最も効率的な機能検証システムおよび方法を提供することができる。
【００２９】
また、本実施形態においては、ソースコードカバレッジを、着目するテストアイテムに関わる各テストベクトルを用いたシミュレーションの機能検証確度を測る尺度として用いるため、本発明により抽出されたテストベクトル群を用いて、当該テストアイテムに関わるDUTの活性化の十分性を保証した上で、機能検証を効率的に実行することができるという大きな効果がある。
【００３０】
尚、本実施形態においては、テストベクトル群抽出過程で、中間的な目標カバレッジを満足する複数のテストベクトルがあった場合に、識別番号の若いテストベクトルをまず選択するものとしたが、複数のテストベクトル候補が挙がった場合に、どちらを選択するかは、老い番等他の順番でも良いことは言うまでもない。
【００３１】
また、本実施形態においては、図３に示したように、A、B、C，…の如く、ソースコードの所定の区分されたライン群に対応するカバレッジをまとめて考えたが、ソースコードカバレッジは実際にはライン毎に当該ラインが何回活性化されたかを表すヒット数で通常カバレッジ結果が示されるので、カバレッジが取れたか否かは、ライン毎に考えても良いことは言うまでもない。また、カバレッジの加算結果を比較する場合も、カバレッジをライン毎に考える場合は、ライン毎にヒット数を加算するのでも良いことは言うまでもない。
【００３２】
また、本実施形態においては、DUT用とリファレンスモデル用とで、テスト、テストベクトル、及び、カバレッジが同一となるものとしたが、両者で同一とならない場合でも、両者でその対応を取ることにより、リファレンスモデルから抽出したテストベクトル群に対応した、DUT用のテストベクトル群を抽出することができることは明らかである。具体的には、リファレンスモデル用と、DUT用とで、各々、テスト、テストベクトル、カバレッジに関して、両者で異なる部分をピックアップして、双方で相違する部分を対応が取れるように当該対応情報を記憶手段に格納すれば良い。
【００３３】
また、本実施形態においては、まず、DUTと同等の機能をより抽象度高く実現するリファレンスモデルを用いて、リファレンスモデル用シミュレータおよびリファレンスモデル用テストにより、最適なテストベクトルを選択し、その後、DUTに対して最適なテストベクトルでシミュレーションを実行するものとしたが、最初から実DUTに対して様々なテストベクトルでシミュレーションを実行し、その中からリグレッションテスト用に効率的かつ所定の検証確度を満足するための最適なテストベクトルを選択するような場合にも、本発明のテストベクトル解析の方法は適用できることは言うまでもない。
【００３４】
また、本実施形態においては、初めにある程度のテストベクトル群を生成して、それに対してカバレッジを取得して、テストベクトルを評価し、所定の目標カバレッジを満足しない場合は新たにテストベクトルを生成し、追加するようにしたが、テストベクトルを生成する毎に、カバレッジを取得して、カバレッジへの貢献度を評価し、順次、テストベクトル群を探索して行くようにしても良いことは言うまでもない。
【００３５】
また、本実施形態においては、１つのテストアイテムに関わる同一のテストに対して、様々なテストベクトルを与えて、様々なシミュレーション条件を実現することを想定したが、テストベクトルとテストを一体化して捉えて、様々なテストベクトルを含む様々なテストを実行することにより、様々なシミュレーション条件を実現することを想定しても良いことは言うまでもない。また、複数のテストアイテムに対して複数（テストアイテム数と異なっても良い）のテストを想定しても良いことも言うまでもない。
【００３６】
また、本実施形態においては、テストベクトルを抽出する方法として、まず目標カバレッジに最も一致するテストベクトルを選択して、当該テストベクトルのカバレッジでもまだカバーされていない部分を中間的な目標カバレッジとして、更に、カバレッジが当該中間的な目標カバレッジに最も一致する他のテストベクトルを選択するものとしたが、テストベクトルの抽出方法としては、本実施形態の方法に限らず、例えば、目標カバレッジの或る要素を用意されたテストベクトルの中で唯一カバーするようなテストベクトル群を先ず、選択し、残りの要素をカバーするテストベクトルを本実施形態の如く一致度の高いテストベクトルから抽出して行くという方法でも良い。例えば、テストベクトル群が図５の場合、目標カバレッジ内の要素Bをカバーするテストベクトルはテストベクトル５のみのため、先ず、テストベクトル５が候補として抽出され、次に、目標カバレッジから、テストベクトル５のカバレッジと、目標カバレッジの一致部分「A  B  C」を除く、「D  E  F」をカバーするテストベクトルを抽出して行く。また、他に効率的な抽出方法があれば、別の方法でも良い。
【００３７】
また、本実施形態においては、テストベクトルを抽出する方法として、目標カバレッジに最も一致するテストベクトルを選択するものとしたが、実行時間の短いテストベクトルから選択する方法でも良い。また、カバレッジ取得率の高いテストベクトルから選択する方法でも良い。
【００３８】
また、本実施形態においては、テストベクトル群抽出過程において、候補となるテストベクトル及びカバレッジを一時記憶する各々テストベクトル一時記憶部及びカバレッジ一時記憶部を設ける例を示したが、当該一時記憶部を設けずに、テストベクトル及びカバレッジの元データを記憶するテストベクトル記憶部及びカバレッジ記憶部から各々データを直接参照して演算するようにしても良いことは言うまでも無い。
【００３９】
また、本実施形態においては、実行時間が目標実行時間を超過した場合は再度テストベクトルを抽出するものとしたが、目標実行時間を超過した時点でエラー終了するようにしても良い。
【００４０】
また、本実施形態においては、未達テストベクトルが存在しない場合と、未達テストベクトル内に未達カバレッジのカバレッジを満たすテストベクトルが存在しない場合は、テストベクトル抽出不可能として終了するものとしたが、新たにテストベクトルを生成し、カバレッジを取得して、カバレッジへの貢献度を評価し、順次、テストベクトル群を探索して行くようにしても良いことは言うまでもない。ここで、テストベクトルを生成する回数に上限を設けるようにしても良い。
【図面の簡単な説明】
【００４１】
【図１】第１の実施例の機能検証システムの構成図である。
【図２】第１の実施例の動作フローである。
【図３】第１の実施例のテストベクトル群のカバレッジの例である。
【図４】第１の実施例のテストベクトル解析の説明図である。
【図５】第１の実施例のテストベクトル群のカバレッジの他の例である。
【符号の説明】
【００４２】
１  機能検証システム
１０  DUT
１１  DUT用テスト
１２  論理シミュレータ
１３  DUT用カバレッジ収集部
２０  リファレンスモデル
２１  リファレンスモデル用テスト
２２  リファレンスモデルシミュレータ
２３  リファレンスモデル用カバレッジ収集部
３０  テストベクトル生成部
３１  テストベクトル群
５０  テストベクトル抽出部
５１  記憶部
５２  テストベクトル解析部
１００  テストベクトル記憶部
１０１  カバレッジ記憶部
１０２  実行時間記憶部
１０３  カバレッジ取得率群記憶部
１０４  目標カバレッジ記憶部
１０５  目標実行時間記憶部
１０６  未達テストベクトル群記憶部
１０７  達成テストベクトル群記憶部
１０８  テストベクトル一時記憶部
１０９  初期テストベクトル群記憶部
１１０  未達カバレッジ記憶部
１１１  達成カバレッジ群記憶部
１１２  カバレッジ一時記憶部
１１３  カバレッジ群候補記憶部
１１４  実行時間積算記憶部
１１５  抽出可否判定記憶部
１１６  テストベクトル群記憶部
１２０  演算制御部
１２１  比較部
１２２  加算部
１２３  削除部
【図１】
2007026362.tif 000003
【図２】
2007026362.tif 000004
【図３】
2007026362.tif 000005
【図４】
2007026362.tif 000006
【図５】
2007026362.tif 000007