(57)【特許請求の範囲】
【請求項１】
ハードウェア設計をデータ処理システムに検証させる方法であって、前記データ処理システムは、前記ハードウェア設計の論理を反映するシミュレーション・モデル・ファイルへのインタフェースとして使用されるテストケース・インタープリタを含み、
前記ハードウェア設計の論理機能の特定の機能を検証し、検証結果を返すシーケンスを構成させる構成言語要素からなる複数のテストケースを生成するステップと、
所与のハードウェア設計について全てのテストケースまたはそれらのサブグループを収集してパッケージ化し、レグレッション・パッケージを生成するステップと、
前記テストケース・インタープリタに前記複数のテストケースを供給して解析させ、アクション・サブコマンドを生成してシミュレーション・モデル・ファイルに発行するステップと、
前記アクション・サブコマンドの指令により、前記シミュレーション・モデル・ファイルを前記複数のテストケースについて実行し、前記ハードウェア設計をシミュレートするステップと、
前記テストケースで実行することにより得られた検証結果を出力するために、シミュレーション間に前記検証結果を前記テストケース・インタープリタに返すステップと、
前記テストケース・インタープリタが、前記検証結果から、エラー・フリーの場合値を０に設定し、エラーが存在する場合値を１とする圧縮された結果情報を作成し、前記値がエラーの存在を示す場合、１つのテストケースのそれぞれの細目に関連する詳細結果情報を含む結果報告を表示させ、前記値がエラー・フリーを示す場合、詳細結果情報の表示を行うことなく、シミュレーションを停止させるか、または前記テストケースの数を拡張するステップを実行する方法。
【請求項２】
システム制御機能を有するハードウェア論理設計をシミュレートする、請求項１に記載の方法。
【請求項３】
データ処理システムに、請求項１または請求項２に記載の方法のそれぞれのステップを実行させるコンピュータ・プログラムが記録された記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はハードウェア設計及びそのシミュレーションに関し、特に、ハードウェア設計を検証する方法及びシステムに関する。より詳細には、本発明によれば、検査中のハードウェア設計の論理を反映する実行可能モデル・ファイルが生成され、モデル実行ファイルを複数のいわゆるテストケースで実行することにより、ハードウェア設計がシミュレートされる。
【０００２】
【従来の技術】
従来のシミュレーション方法は一般に、システム論理機能を有する、いわゆるアーキテクチャ・レベルより下位のハードウェア論理設計をシミュレートするために使用される。前記システム論理機能は従来技術では、しばしば"パーベイシブ論理"と呼ばれる。
【０００３】
こうしたパーベイシブ論理も、他のハードウェアと同様に検証されなければならない。しかしながら、前記パーベイシブ論理は、ランダム環境ではほとんどチェックできない多くの異なる機能を満足しなければならない。従って、従来の検証方法は、各機能を検証し、結果を確認する複数のいわゆるテストケースを使用する。
【０００４】
シミュレートされるハードウェア回路の複雑性により、こうしたテストケースの管理は困難である。所与のハードウェア・シミュレーション状況において、有意義なハードウェア検証結果を得るために、理論的に適応化された有用なテストケースを構成するために、テストケースは多くの異なる事情を反映しなければならない。すなわち、所与の設計モデルが一種の状態マシンを表し、これはある境界条件が与えられるとき、特定の状態が出現することが期待される非常に多数のロケーションを有する。
【０００５】
更に、所与のサイクル数を通じてループした後、任意の状態振舞いが変化し得る。更に、チップ内の所与のロケーション、すなわち入出力ロケーションまたはチップの配線内の任意の箇所における期待状態値に関して知るために、相当に広い範囲のハードウェア知識が要求される。良好なテストケースを生成するために、シミュレーション実行から得られる複雑な情報が、明確且つ容易に理解できる形式で存在しなければならない。
【０００６】
従来のシステムは、こうした有利な形式を提供しない。それどころか、スタッフが手動により、非常に多数のテストケースを評価しなければならず、有用な新たなテストケースを生成するために、テストケース結果の複雑性を整理する一種の順序付けプランをセットアップしなければならない。そうでないと、所与のハードウェアが十分にチェックされないことになる。
【０００７】
【発明が解決しようとする課題】
従って、本発明の目的は、前述のテストケースの複雑性及び不規則性の問題を軽減する方法を提供することである。
【０００８】
【課題を解決するための手段】
本発明の前記目的は、本発明の独立請求項で述べられる特徴により達成される。本発明の更に追加の有利な構成及び実施例が、それぞれの従属請求項で開示される。添付の請求項を参照されたい。
【０００９】
本発明の第１の態様によれば、ハードウェア設計を検証する方法が提供され、これはハードウェア設計の論理を反映する実行可能モデル・ファイルを使用するステップと、モデル実行ファイルを複数のテストケースで実行することにより、ハードウェア設計をシミュレートするステップとを含む。本方法は、ａ）前記テストケースを体系的に管理するテストケース言語を使用するステップと、ｂ）テストケース・インタープリタに前記テストケースを供給するステップとを含み、インタープリタが、シミュレータ・プログラム内で実行される前記実行可能モデル・ファイルへのインタフェースとして使用されることを特徴としている。
【００１０】
従って、本発明は基本的に、ハードウェア検証作業を単純化する手段、すなわち前述のテストケース言語を含む。前記手段は、以下で詳述する異なる言語要素により表される。前記言語要素の各々は、特に本発明の汎用目的に、すなわち、テストケース及びそれらの実行の管理を改善するために寄与する。
【００１１】
利点として、テストケースの体系的管理により、効率的なテストケース生成及び実行が達成される。特に、テストケース言語が、１つ以上のハードウェア論理機能に関する技術情報で満たされ、それらの機能性を独自でチェックし、エラー値を戻すいわゆる構成言語要素を含む場合、追加の特定の利点が達成される。すなわち、前記構成言語要素は、分析及び検証により１つのテストケース・エントリになる特定のハードウェア機能をテストするために必要な全ての情報をカプセル化する機構を提供する。従って、テストケース開発スタッフは、特定のテストケース・エントリをセットアップする複数の（例えば１００の）シングル・ステップを指定する必要がない。代わりに、前記作業が１度だけ実行され、前記構成要素内に記憶されて、１つ以上のテストケースに単に関連付けられる。このことは、スタッフが検証作業をより体系的に編成することを可能にし、それにより検証ギャップが回避される。
【００１２】
この点から、所与のハードウェア、特に非体系的システム制御ハードウェアの複雑性が、スタッフにより容易に理解されるようになり、検証作業がより効率的且つ確実となる。
【００１３】
ＩＦ、ＷＨＩＬＥ、ＤＯ、ＢＲＡＮＣＨ、ＬＯＯＰなどの高水準プログラム言語コマンドを適用することにより、特に望ましいテストケース状況を確立することができる。従って、これらのコマンドは、例えば任意の条件が満たされた場合に（ＩＦ）、特定の構成体Ｘ上でＬＯＯＰを生成することによって、前記構成要素を互いに結合するために使用される。
【００１４】
更に、一方が結果の大まかな概要を含み、他方が１つのテストケースのそれぞれの細目に関連する詳細を含む、２部分から成る結果報告が生成される場合、多数のシミュレーション結果を迅速に見ることができ、また必要に応じて、追加の分析のために、エラー結果を効率的に見ることができる。
【００１５】
更に、所与のハードウェア設計について全てのテストケース、またはそれらのサブグループが収集されたレグレッション・パッケージが提供される場合、１０００以上のテストケースのリストがセットアップされ、単一のコマンドにより、シミュレーション実行のために呼び出される。これは例えば、モデル変更が実行された後に、再度シミュレートする必要がある場合に、同一のまたは拡張されたテストケース・リストにもとづき、テストケースを実行するのを忘れてしまう状況を回避する一助となる。
【００１６】
更に、以下の特徴のいずれも、テストケース言語の有利な実施例に寄与する。まず、ＣＨＥＣＫ機能は、構成体結果値を評価またはチェックするために構成されるソフトウェア・インタフェースとして実現され、シミュレーション・モデル内に存在する任意の論理機構の信号状況を発行する。従って、ＣＨＥＣＫ機能は、設計の各論理要素をチェックするために、任意の信号の詳細制御を提供するために使用することができる。ＣＨＥＣＫ機能に加え、シミュレーション・モードでの多くの実行構成体が、シミュレーション後に見ることができる特定の結果を戻す。
【００１７】
ＳＵＢＰＲＯＧＲＡＭコマンドは、例えば複数の異なるテストケースが、常に同一の明確な始動状況を必要とする場合に、コードの再利用を実現するために有利に使用される。ここでサブプログラムは、特定の時点及びシミュレーション・モデル内の複数の所望の論理機構において、特定の所望の信号状況を生成するために必要とされる、或いはクロック式または非クロック式シミュレーションのような境界条件を定義する、全ての構成体を含み得る。
【００１８】
更に、前述の構成言語要素及びコマンド言語要素は、例えば機構名またはアドレスなどの、１つ以上のパラメータと共に呼び出すことができる。従って、この特徴は、１つの同一のテストケースが複数の異なる制御パラメータと共に実行される状況において有利に使用される。所与のテストケースに関連付けられるパラメータ・リストの各パラメータが特定のテストケース結果をもたらす。利点としては、こうしたパラメータを介して、一種のテストケース再利用が実現され、同一のテストケースをそれぞれの変更制御パラメータと一緒に繰り返し入力することが回避される。それにより、テストケース生成及びテストケース結果が、スタッフにより容易に理解されるようになる。
【００１９】
シミュレーション・モデルのためにランダムに生成される入力が、単一の論理機構のランダム制御入力を指定するために、有利に適用される。
【００２０】
【発明の実施の形態】
図１を参照すると、本発明で使用されるコンポーネントに関する構成概要が示される。本発明のテストケース・ライブラリ１２は、関連する実行可能シミュレーション・モデル・ファイルが存在する所与のハードウェア設計のための、複数のテストケースを含む。ここでテストケースは、例えば１０００行のコードを含み、ライブラリは約１０００のテストケースを含む。シミュレーション実行の間に、テストケースがシミュレートされるとき、相当な行数のコードが計算されなければならない。
【００２１】
本発明のインタープリタ・コンポーネント１４は、前記ライブラリ１２と、従来技術に含まれるシミュレーション・モデル１０及びいわゆるモデル拡張１３との間の、中間インタフェースとして含まれる。更に、本発明のコンポーネント１２及び１４は、適切なＡＰＩを支持する、従来の任意のソフトウェア・シミュレータと協働することができる。ＡＰＩは、シミュレーション・モデル１０へのアクセスを容易にする。
【００２２】
その名前から既に明らかなように、インタープリタ・コンポーネント１４の主なタスクは、本発明の構成体及びコマンドを解析し、アクション・サブコマンドをシミュレーション・モデル１０に発行することである。
【００２３】
典型的な構成体は言語要素であり、それらには、モデルがランダムに刺激されることを可能にするＲＡＮＤＯＭ、シーケンスの状況、例えば一連のラッチの状況を比較することを可能にするＣＨＡＩＮ  ＣＯＭＰＡＲＥ、信号を１つ以上の他の信号と比較することを可能にするＣＯＭＰＡＲＥ  ＳＩＧＮＡＬ、チェーンのシフトを可能にするＳＨＩＦＴ  ＣＨＡＩＮ、特定の構成体、テストケースまたは他の言語要素の活動化を可能にするＡＣＴＩＶＡＴＥ、及びシフトパルスを生成するＧＥＮＥＲＡＴＥ  ＳＨＩＦＴ  ＰＵＬＳＥＳなどが含まれる。
【００２４】
典型的なコマンドには、次のものがある。すなわち、ＩＦ／ＴＨＥＮ／ＥＬＳＥ、ＬＯＯＰ、ＷＨＩＬＥ、ＢＲＡＮＣＨ（すなわち無条件ＧＯＴＯの意味）、構成体または他のコード部分を呼び出すＣＡＬＬ、シミュレータ・プログラムを呼び出すＳＩＭ、及び評価結果または他の情報を記憶するために要求される追加の変数を定義するＶＡＲＩＡＢＬＥなどである。
【００２５】
更に、実行が結果の出力を生成するとき、インタープリタがこの出力データを受け取り、前述のように、例えば適切な結果ファイルを圧縮形式または詳細形式で生成する。モデル拡張１３は、完全にモデル化されていないインタフェースを介して、シミュレーション・モデル１０を刺激する。モデル拡張は、特定のインタフェースの側面から、シミュレーション・モデルを拡張する。インタープリタは、検証されるモデル振舞いに応じて、モデル拡張をセットアップできる。
【００２６】
次に、図２を参照しながら、本発明の実施例が適用されるときの制御フローの総括ダイアグラムについて説明する。
【００２７】
これは前述のように、システム制御ハードウェアのハードウェア論理設計を表すシミュレーション・モデルが存在する状況において実行される。従って、好適には、非体系的ハードウェアが、それぞれのシミュレーション・モデル・ファイル内で表される。
【００２８】
第１のステップ２１０では、前述の本発明のコマンド及び構成体の支援により、前記ハードウェア設計モデルに関連して、複数のテストケース１乃至Ｎが作成される。特に、構成体は分析の焦点を表し、シミュレーションの間に戻り値を返す特殊シーケンスをシミュレーション・モデルに含めるために適用される。この戻り値からは、エラー・コードがデコードされる。更に、任意の前述のコマンドが、所望のテストケース・シナリオを作成するために使用される。
【００２９】
これは単に、これらの構成体及びコマンド言語要素により実行される。なぜなら、構成体は基礎を成すハードウェア・モデルとの対話を実行する一方、コマンドはテストケースを所望の検証状況に適応化するために、また非常に多数のテストケースを適応化して、有用なテストケース・シーケンスを形成するために、使用可能であるからである。すなわち、シミュレーションにおいて、基礎を成すハードウェア設計の１つ以上のポイントに焦点を当てた、有意義なテスト結果が生成される。
【００３０】
次にステップ２２０で、意図したシミュレーション実行の入力を完了するために、追加のテストケースが要求されるか否かが判断される。要求される場合、ステップ２１０に分岐して戻り、それぞれの新たなテストケースが作成される。それ以外の場合、それぞれの分量のテストケースをパッケージ化し、パッケージに固有の名前をつけることにより、１つ以上のレグレッション・パッケージが作成され（ステップ２３０）、完成されたレグレッション・パッケージが、全体としてシミュレーション実行への入力とみなされる。
【００３１】
次にステップ２４０で、前記パッケージ名、または２つ以上のパッケージの場合、全てのパッケージ名を指定する制御ファイルが作成され、シミュレーション実行の開始を容易にする。
【００３２】
シミュレーションがステップ２５０で開始される。しばらくして、例えば一昼夜後にシミュレーションが完了する。するとステップ２６０で、結果ファイルが表示される。好適には、この作業は概略結果ファイル、すなわち、シミュレーション結果を圧縮形式で含む結果ファイルを最初に表示する。好適には、前記圧縮形式は、エラー・フリーの場合、結果を例えば値０として生成し、エラーが存在する場合、結果値１として生成することにより、極度に圧縮される。
【００３３】
好適には、エラーが見いだされる場合（ステップ２７０）、それぞれのテストケース結果が詳細形式で表示される（ステップ２９０）。具体的には、固有名により識別可能な、対応する詳細結果ファイルがオープンされる。専門家が結果の詳細を評価し（ステップ３００）、基礎を成すそれぞれのモデル実行ファイルに関わる者によって行われるべき変更のそれぞれの提案を提供する。結果データの評価に応じた、設計モデルのそれぞれの変更の後（ステップ３１０）、ステップ２１０に分岐することにより、新たなループ・サイクルが実行される。ほとんどの場合、新たなテストケースが追加され、好適には、以前に使用されたのと同一のレグレッション・パッケージに入力される。
【００３４】
しかしながら、圧縮結果がエラーが見いだされなかったことを示す場合（ステップ２７０）、制御フローはステップ２８０で終了するか、またはステップ２１０に分岐し、検証の質を高めるために、テストケースの数を拡張する。
【００３５】
本発明はその体系的な性質により、設計検証において、一歩前進した質及び効率を提供する。
【００３６】
前述の説明では、本発明は特定の実施例に関連して述べられたが、当業者であれば、本発明がその主旨及び範囲から逸れることなく、様々な変更及び変形が可能であることが理解できよう。従って、ここで述べられた詳細及び図面は、制限的な意味合いとしてではなく、例証としてみなされるべきである。
【００３７】
当業者であれば、本発明のインタープリタ・コマンド及び構成体の前述の特定の名前が、本発明を制限するものでないことが理解できよう。更に、それらの一部のものは、既に検証の質がかなり改善されている場合、欠落してもよいことが理解できよう。
【００３８】
更に、本発明のコマンド及び構成体を実現するために使用されるプログラミング言語は、ある特定の言語に制限されるものではない。
【００３９】
本発明はハードウェア、ソフトウェア、或いはそれらの組み合わせにより実現される。本発明に従うテストケース管理ツールは、単一のコンピュータ・システム内で一元的に実現されるか、異なる要素が幾つかの相互接続コンピュータ・システムに渡り広がる状況において分散式に実現される。前述の方法を実行するために、任意のコンピュータ・システムまたは他の装置が適応化される。ハードウェア及びソフトウェアの典型的な組み合わせは、汎用コンピュータ・システムとコンピュータ・プログラムとの組み合わせであり、後者がロードされて実行されるとき、コンピュータ・システムが前述の方法の、クライアントまたはサーバ特有のステップを実行する。
【００４０】
本発明はまたコンピュータ・プログラム製品内に組み込まれてもよい。この場合、コンピュータ・プログラム製品は、前述の方法のそれぞれのステップの実現を可能にする全ての特徴を含み、１つ以上のコンピュータ・システムにロードされて、これらの方法を実行することができる。
【００４１】
本発明にもとづくコンピュータ・プログラム手段またはコンピュータ・プログラムは、情報処理能力を有するシステムに、特定の機能を直接的に実行させる、或いは、ａ）別の言語、コードまたは表記法への変換後に、またはｂ）別の媒体への複製の後に実行させる、任意の言語、コードまたは表記法による、命令セットの表現を意味する。
【図面の簡単な説明】
【図１】本発明（左側の追加部分）及び従来技術（右側部分）に従い、検証において使用される最も重要なコンポーネントを示すブロック図である。
【図２】本発明に従いハードウェア設計を検証する際に実行されるステップを含む制御フローを示す図である。
【符号の説明】
１０  シミュレーション・モデル
１２  テストケース・ライブラリ
１４  インタープリタ・コンポーネント
１３  モデル拡張
【図１】
0003965068.tif 000002
【図２】
0003965068.tif 000003