(57)【要約】【課題】  論理システムの内部構成や内部仕様が明確でなくとも、エラー原因の解析を容易にする。【解決手段】  ハードウエア記述言語で記述された論理システムの検証装置は、論理システムについて動的シミュレーションを実行しながら、その実行状態に関する情報を記録する。一方で、検証装置は、論理システムを変換して内部表現に関する情報を生成しておく。動的シミュレーションでエラーが発生した場合に、検証装置は、実行状態に関する情報と、内部表現に関する情報とに基づいて、論理システムに含まれるエラーの原因個所を探索して提示する。【選択図】 図１
2006155378.tif 000002
【特許請求の範囲】
【請求項１】
ハードウエア記述言語で記述された論理システムの検証装置であって、
前記ハードウエア記述言語で記述された論理システムを変換して内部表現に関する情報を生成する生成手段と、
前記ハードウエア記述言語で記述された論理システムについて動的シミュレーションを実行する実行手段と、
前記動的シミュレーションによる実行状態に関する情報を記録する記録手段と、
前記動的シミュレーションでエラーが発生した場合に、前記動的シミュレーションの実行状態に関する情報と、前記内部表現に関する情報とに基づいて、前記論理システムに含まれるエラーの原因個所を探索する探索手段と
を含む論理システムの検証装置。
【請求項２】
前記探索手段は、
前記動的シミュレーションの実行状態に関する情報と、前記内部表現に関する情報とに基づいて前記論理システムにおける実行値による内部状態と期待値による内部状態とをそれぞれ推定する内部状態推定手段と、
推定された前記実行値による内部状態と前記期待値による内部状態とを比較する内部状態比較手段と、
前記内部状態比較手段による比較結果が不一致であれば、不一致の原因個所を前記内部表現に関する情報から検出する検出手段と
を含む、請求項１に記載の論理システムの検証装置。
【請求項３】
前記実行状態に関する情報には、前記動的シミュレーションの実行時刻、実行値、および期待値が含まれる、請求項１または請求項２に記載の論理システムの検証装置。
【請求項４】
前記内部表現は、２分決定グラフによる表現である、請求項１ないし３のいずれかに記載の論理システムの検証装置。
【請求項５】
前記実行手段は、
前記動的シミュレーションの実行中に実行値と期待値とが一致するかを判定する判定手段と、
前記実行値と前記期待値とが不一致と判定された場合に、前記動的シミュレーションを停止させる停止手段と
を含む、請求項１ないし４のいずれかに記載の論理システムの検証装置。
【請求項６】
前記内部状態推定手段は、
前記内部表現に関する情報から前記論理システムの内部状態を推定する過程において、状態値を特定できない内部状態の要素が存在した場合に、該状態値を不定と設定する設定手段を含む、請求項２に記載の論理システムの検証装置。
【請求項７】
前記内部状態比較手段は、前記内部状態を比較する過程において、比較対照となる要素の状態値が共に不定であるならば、両者は一致するものとみなす、請求項６に記載の論理システムの検証装置。
【請求項８】
ハードウエア記述言語で記述された論理システムの検証方法であって、
前記ハードウエア記述言語で記述された論理システムを変換して内部表現に関する情報を生成するステップと、
前記ハードウエア記述言語で記述された論理システムについて動的シミュレーションを実行しながら、前記動的シミュレーションによる実行状態に関する情報を記録するステップと、
前記動的シミュレーションでエラーが発生した場合に、前記動的シミュレーションの実行状態に関する情報と、前記内部表現に関する情報とに基づいて、前記論理システムに含まれるエラーの原因個所を探索するステップと
を含む論理システムの検証方法。
【請求項９】
制御装置と記憶装置とを含むコンピュータに対し、
前記ハードウエア記述言語で記述された論理システムを変換して内部表現に関する情報を前記制御装置により生成して前記記憶装置に記憶するステップと、
前記ハードウエア記述言語で記述された論理システムについて動的シミュレーションを前記制御装置により実行しながら、前記動的シミュレーションによる実行状態に関する情報を前記記憶装置に記憶するステップと、
前記動的シミュレーションでエラーが発生した場合に、前記動的シミュレーションの実行状態に関する情報と、前記内部表現に関する情報とを前記記憶装置から読み出し、前記論理システムに含まれるエラーの原因個所を前記制御装置により探索するステップと
を実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウエア記述言語で記述された論理システムの検証技術に関する。
【背景技術】
【０００２】
現在、ＬＳＩなどの論理システムを設計する際には、ハードウエア記述言語を用いて仕様を記述することが主流となっている（特許文献１）。
【０００３】
一方で、ＬＳＩを含む論理システムの規模は、毎年飛躍的に増加している。それに伴い、論理システムの検証にかかる工数も増加している。それにもかかわらず、論理システムの開発期間は従来よりも短くなっているため、論理システムの検証効率を向上させることが急務となっている。
【０００４】
現在、ＬＳＩを含む論理システムの検証手法には、ブラックボックス検証とホワイトボックス検証と呼ばれる手法が存在する。ブラックボックス検では、検証対象の外端仕様のみを用いて検証がおこなわれる。そのため、検証対象の内部構成や仕様に依存しないため、流用性や可読性が高く、取りまわしが便利である。
【０００５】
一方、ホワイトボックス検証では、検証対象の内部構成や仕様も併せて参照して検証が行われる。そのため、検証対象の動作が仕様に一致しない場合、その原因箇所の探索はブラックボックス検証に比較して容易である。
【特許文献１】特開２００２−３０４４２８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ところで、ホワイトボックス検証は、検証対象内部の構成や仕様が明確でなければ実施できないといった欠点がある。よって、検証対象の仕様が外端のみ定義されている場合は、ブラックボックス検証を用いらざるを得ない。
【０００７】
しかしながら、ブラックボックス検証では、検証対象の動作と仕様が一致しない不具合が発生した場合（たとえば動的シミュレーションにより得られる実行値と期待値との不一致が発生した場合）、その原因箇所の探索に多くの時間がかかる。そのため、顧客の要求する開発期間を満たすことができにくくなっている。
【０００８】
そこで、本発明は、このような課題および他の課題の少なくとも１つを解決することを目的とする。なお、他の課題については明細書の全体を通して理解できよう。
【課題を解決するための手段】
【０００９】
本発明は、たとえば、ハードウエア記述言語で記述された論理システムの検証装置であって、前記ハードウエア記述言語で記述された論理システムを変換して内部表現に関する情報を生成する生成手段と、前記ハードウエア記述言語で記述された論理システムについて動的シミュレーションを実行する実行手段と、前記動的シミュレーションによる実行状態に関する情報を記録する記録手段と、前記動的シミュレーションでエラーが発生した場合に、前記動的シミュレーションの実行状態に関する情報と、前記内部表現に関する情報とに基づいて前記論理システムに含まれるエラーの原因個所を探索する探索手段とを含む。
【発明の効果】
【００１０】
本発明によれば、ハードウエア記述言語で記述された論理システムに関して実行された動的シミュレーションの結果からエラー原因箇所を特定できるため、論理システムの内部構成や内部仕様が明確でなくとも、エラー原因の解析が容易になる。よって、本発明は、顧客の要求する開発期間を満たすことに貢献しよう。
【発明を実施するための最良の形態】
【００１１】
以下に本発明の上位概念、中位概念および下位概念の理解に役立つ一実施形態を示す。なお、以下の実施形態に含まれる概念について、そのすべてが特許請求の範囲に記載されているとは限らない。ただし、これは特許発明の技術的範囲から意識的に除外したのではなく、特許発明と均等の関係にあるため特許請求の範囲には記載していない場合があることを理解していただきたい。
【００１２】
図１は、実施形態に係る論理システムの検証装置の例示的なブロック図である。検証装置１００のうち、ＤＵＴ（検証対象デバイス）１０１は、Ｖｅｒｉｌｏｇ あるいは ＶＨＤＬ などで記述された論理システムの設計データである。Ｖｅｒｉｌｏｇ あるいは ＶＨＤＬともハードウエア記述言語として周知であるので説明を省略する。もちろん、本発明がこれら以外のハードウエア記述言語を用いて記述された論理システムにも適用できることは言うまでもない。なお、設計データＤＵＴ１０１によって表現される論理システム自体をＤＵＴ１０１と呼ぶこともある。
【００１３】
論理システムの仕様は、動的シミュレーションでブラックボックス検証を実施可能な程度には少なくともＤＵＴ１０１において定義されているものとする。すなわち、ＤＵＴ１０１において外端仕様は定義されているが、論理システムの内部の構成や仕様は明確に定義されていない。
【００１４】
内部表現変換器１０２は、ＤＵＴ１０１を内部表現（ＤＵＴ）１０４に変換し、保存する。内部表現（ＤＵＴ）１０４を生成する際には、最適化を施してもよい。最適化の施された内部表現は正規化論理表現と呼ぶことができる。動的シミュレータ１０３は、ＤＵＴ１０１に対しブラックボックス検証を実施し、その状態を動的シミュレーションログ１０５に記録する。エラー原因探索器１０６は、ＤＵＴ１０１、内部表現１０４、および動的シミュレーションログ１０５からエラー原因を探索し、このエラー原因に関する情報１０７を出力する。たとえば、エラー原因に関する情報１０７は、エラー原因箇所を含む論理記述とその行番号の組である。もちろん、エラー原因に関する情報１０７は、ＤＵＴ１０１内におけるエラーの原因箇所を特定できる情報であれば、エラー原因箇所を含む論理記述とその行番号の組以外の情報であってもよい。
【００１５】
次にＤＵＴ１０１により定義される論理システムへの入力と出力について説明する。本実施形態では、ブラックボックス検証を用いているので、論理システムに入力したデータと、出力データのみに注目している。エラー発生の有無は、論理システムの出力の実行値と期待値とを比較することで判定される。
【００１６】
以下、ＤＵＴ１０１による論理システムに入力したデータの値を入力値と略記し、当該論理システムの出力データの値を出力値と略記する。同様に、当該論理システムの出力の実行値を単に実行値と略記し、出力の期待値を単に期待値と略記する。また、入力値、出力値は、時刻により変化する値であり、かつ、複数信号の値であることから、時刻 ｔ における入力値を Ｉ（ｔ） と表記し、出力値を Ｏ（ｔ） と表記することとする。出力を実行値と期待値とに分けて考える場合は、実行値を Ａ（ｔ）、期待値を Ｅ（ｔ） と表記する。
【００１７】
次に、動的シミュレータ１０３で用いるテストベンチについて詳しく説明する。動的シミュレータ１０３で用いるテストベンチは、ＤＵＴ１０１の入力値、ＤＵＴ１０１の出力の実行値、およびＤＵＴ１０１の出力の期待値を時刻と共に記録する機能が必要である。本発明は、動的シミュレーションのテストベンチに依存するものではないので、入力値、実行値、期待値を時刻と共に記録する機能があれば、それ以外の機能についてはどのような形態で実現してもよい。
【００１８】
たとえば、動的シミュレータ１０３は、動的シミュレーションを実行中に、実行値と期待値とを逐次比較し、その結果を記録する機能を備えてもよい。さらに、動的シミュレータ１０３は、実行値と期待値の不一致を検出したとき動的シミュレーションを停止する停止機能を備えてもよい。実行値と期待値の不一致はエラーを意味するため、エラーを検出したときに動的シミュレーションを停止すれば、その都度エラー原因個所を特定しやすくなる利点がある。
【００１９】
次に、本実施形態で用いる内部表現について説明する。本実施形態では、内部表現を基にＤＵＴ１０１内でのエラー原因箇所を探索する。そのため、本実施形態で使用する内部表現は、同一の論理関数が同一の表現にならなければならない。また、容量が大きくならず、内部表現による比較の手順が容易である必要もある。
【００２０】
同一の論理関数が同一の表現となる表現方法としては、たとえば、ＢＤＤ（Ｂｉｎａｒｙ Ｄｅｃｉｓｉｏｎ Ｄｉａｇｒａｍ、２分決定グラフ）、真理値表、積和標準形などがある。真理値表は入力数の指数乗の項数を必要とする。また、積和標準形も最悪の場合、真理値表と同じく入力数の指数乗の項数を必要とする。しかしながら、ＢＤＤでは多くの場合、真理値表や積和標準形よりも少ない項数で論理関数を表現できる利点がある。また、真理値表と積和標準形では、内部表現への変換工数が論理関数の複雑度に影響し、複雑になるにつれて内部表現への変換工数が増加する。一方、ＢＤＤでは論理関数の複雑度に関係なく変換工数がきまる利点もある。そこで、本実施形態では、内部表現としてＢＤＤを用いることとする。もちろん、本発明は、内部表現をＢＤＤに限定するのものではない。
【００２１】
ＢＤＤを内部表現に使用するプログラムや市販のツールでは、ＢＤＤ生成アルゴリズムとして、 ａｐｐｌｙ アルゴリズムが広く使用されている。この ａｐｐｌｙ アルゴリズムは １９８４ 年に Ｒａｎｄａｌ Ｅ． Ｂｒｙａｎｔ 氏により開発された、ＢＤＤ生成アルゴリズムである。この ａｐｐｌｙ アルゴリズムは、既に数多く使用されており、公知の技術である。そこで、内部表現変換器１０２はＤＵＴ１０１をＢＤＤに変換する手法として、ａｐｐｌｙ アルゴリズムを使用する。ただし、本発明は、ＢＤＤ生成アルゴリズムに依存した発明ではないので、内部表現変換器１０２が使用するアルゴリズムを ａｐｐｌｙ アルゴリズムに限定するものではない。
【００２２】
次に、本発明で用いるＤＵＴ１０１の内部状態について説明する。本実施形態では、内部表現にＢＤＤを用いているので、ＢＤＤ各節の値の集合がＤＵＴ１０１の内部状態を表している。ＢＤＤ各節の値を、ｓ０， ｓ１， … ， ｓｎ−１ とすると、その集合 ｛ｓ０， ｓ１， …， ｓｎ−１｝ が内部状態を表すことになる。内部状態 ｛ｓ０， ｓ１， …， ｓｎ−１｝ は時刻により変化するので、Ｓ（ｔ） と記述することにする。
【００２３】
図２は、実施形態に係るエラー原因探索器の一例を示す図である。エラー原因探索器１０６は、内部状態関数生成器２０１、ログ解析器２０２、内部状態推定器２０３、内部状態比較器２０４、および探索器２０５を含んでいる。
【００２４】
内部状態関数生成器２０１は、たとえば、内部表現（ＤＵＴ）１０４からＤＵＴ１０１の内部状態を表す内部状態関数２３１を求める。内部表現（ＤＵＴ）１０４は、ＢＤＤを用いているので論理関数を一意に求めることが可能である。時刻 ｔ ＋ １ の内部状態 Ｓ（ｔ ＋ １） と、時刻 ｔ の内部状態 Ｓ（ｔ）、および、時刻 ｔ におけるＤＵＴ１０１の入力値 Ｉ（ｔ）とＤＵＴ１０１の出力値 Ｏ（ｔ） を内部表現（ＤＵＴ）１０４から求めた論理関数に代入すると、次のようになる。
【００２５】
ｓ０（ｔ＋１） ＝ ｇ０（Ｉ（ｔ）， Ｏ（ｔ）， Ｓ（ｔ））
ｓ１（ｔ＋１） ＝ ｇ０（Ｉ（ｔ）， Ｏ（ｔ）， Ｓ（ｔ））
：
ｓｎ−１（ｔ＋１） ＝ ｇｎ−１（Ｉ（ｔ）， Ｏ（ｔ）， Ｓ（ｔ））
ここで、｛ｇ０， ｇ１， …， ｇｎ−１｝ は内部表現（ＤＵＴ）１０４から求めた論理関数を示している。この｛ｇ０， ｇ１， …， ｇｎ−１｝をベクトル表記で Ｇ と記述すると、ＤＵＴ１０１の内部状態を表す関数は、
Ｓ（ｔ ＋ １） ＝ Ｇ（Ｉ（ｔ）， Ｏ（ｔ）， Ｓ（ｔ））
と表せる。この式を変形し、
Ｓ（ｔ） ＝ Ｆ（Ｉ（ｔ）， Ｏ（ｔ）， Ｓ（ｔ ＋ １））
とする。この式の関数 Ｆ を内部状態関数２３１と呼ぶことにする。
【００２６】
ログ解析器２０２は、動的シミュレーションログ１０５に基づいて、実行値と期待値とが不一致になるエラーが発生しているかを判定する。エラーが発生しているならば、最も早くエラーが発生する時刻を ｋ とする。次に、ログ解析器２０２は、時刻０から時刻ｋまでの入力値 Ｉ（ｔ）、実行値 Ａ（ｔ）、期待値 Ｅ（ｔ） ｛ ０＜＝ ｔ ＜＝ ｔ｝ を動的シミュレーションログ１０５から抽出する。
【００２７】
内部状態推定器２０３は、動的シミュレーションの実行状態に関する情報と、内部表現に関する情報とに基づいて論理システムにおける実行値による内部状態と期待値による内部状態とをそれぞれ推定するものである。たとえば、内部状態推定器２０３は、内部状態関数生成器２０１で生成された内部状態関数２３１を用いて、ログ解析器２０２で抽出された入力値Ｉ（ｔ）、実行値Ａ（ｔ）、期待値Ｅ（ｔ）に基づいてＤＵＴ１０１内部の状態を推定する。実行値に基づき推定した内部状態を内部状態（実行値）２３３とし、期待値を基に推定した内部状態を内部状態（期待値）２３４とする。そして、時刻ｔにおける内部状態（実行値）２３３をＳａ（ｔ） と表記し、同様に、時刻ｔにおける内部状態（期待値）２３４をＳｅ（ｔ） と表記する。
【００２８】
なお、内部状態推定器２０３は、内部状態を求めるときに、所定の制限時間を超えても、値が定まらない要素については不定（ ’Ｘ’ ）とする。これにより、発散して内部状態を求めることができない状況に陥ることを防止できる利点がある。なお、制限時間のカウントはタイマーにより行う。
【００２９】
内部状態比較器２０４は、推定された実行値による内部状態と期待値による内部状態とを比較するものである。たとえば、内部状態比較器２０４は、時刻 ｎ − １ における内部状態（実行値）２３３と内部状態（期待値）２３４とを比較し、比較結果を出力する。すなわち、内部状態比較器２０４は、Ｓａ（ｎ − １） と Ｓｅ（ｎ − １） の要素ごとに比較をおこない、比較結果を出力する。全ての要素の値が等しければ、Ｓａ（ｎ − １） と Ｓｅ（ｎ − １） は一致しており、比較結果２３５を有効（’１’）とする。すなわち、エラーは検出されないことになる。一方で、不一致の要素がひとつでも存在するならば、Ｓａ（ｎ − １） と Ｓｅ（ｎ − １） は不一致となるから、比較結果２３５を無効（’０’）とする。すなわち、エラーが検出されたことになる。
【００３０】
このとき、要素の値が共に不定（’Ｘ’）ならば、その要素の値は一致していると見なすようにしてもよい。このように処理することで、判定不能に陥ることを防ぎ、ひいては円滑に論理システムの検証を実行できる利点がある。
【００３１】
探索器２０５は、内部状態比較器２０４による比較結果が不一致である場合に、内部表現に関する情報から不一致の原因個所を検出する。たとえば、探索器２０５は、内部表現（ＤＵＴ）１０４、Ｓａ（ｎ）、Ｓｅ（ｎ）、および比較結果２３５を基に内部表現（ＤＵＴ）１０４内でのエラー原因を探索する。時刻 ｎ − １ で比較結果２３５が有効になったとする。すなわち、これは、Ｓａ（ｎ − １ ） と Ｓｅ（ｎ − １） は一致しているが、Ｓａ（ｎ） と Ｓｅ（ｎ） は不一致であることを意味する。したがって、時刻 ｎ − １ から時刻 ｎ に遷移するときにエラーが発生したために、Ｓａ（ｎ） と Ｓｅ（ｎ） に差異が生じているのである。よって、Ｓａ（ｎ ） と Ｓｅ（ｎ） に含まれる要素のうち、要素値が異なるものがエラー原因箇所と特定できることになる。
【００３２】
探索器２０５は、いつかある要素のうち、Ｓａ（ｎ ） で Ｓｅ（ｎ） の値が異なるものを抽出し、抽出された要素に対応するＢＤＤの節を内部表現（ＤＵＴ）１０４内で選択する。探索器２０５は、ここで選択されたＢＤＤの節を含む論理記述の情報をＤＵＴ１０１から選択し、エラー原因に関する情報１０７として出力する。
【００３３】
図３は、実施形態に係る論理検証方法の一例を示すフローチャートである。より具体的には、図３に示すフローチャートは、本実施形に係る論理検証装置を用いて、ＤＵＴ１０１に含まれるエラーの原因箇所を特定可能な情報を得る手順を示している。前提条件として、動的シミュレーションで使用するテストベンチは既に作成してあるものとする。
【００３４】
ステップＳ３０１において、内部表現変換器１０２は、ＤＵＴ１０１を変換し内部表現（ＤＵＴ）１０４を生成する。エラー原因探索器１０６内の内部状態関数生成器２０１は、生成された内部表現（ＤＵＴ）１０４を基にＤＵＴ１０１の内部状態を表す内部状態関数２３１ Ｆ（Ｉ（ｔ）， Ｏ（ｔ）， Ｓ（ｔ）） を生成する。なお、本ステップは、ステップＳ３０５の実行前であれば、どの時点で実行されてもよい。
【００３５】
ステップＳ３０２において、動的シミュレータ１０３は、動的検証を実行する。動的シミュレータ１０３は、ＤＵＴ１０１に入力したデータの値 Ｉ（ｔ）、ＤＵＴ１０１の実行値 Ａ（ｔ）、期待値 Ｅ（ｔ）、および時刻 ｔ を動的シミュレーションログ１０５に記録する。
【００３６】
ステップＳ３０３において、ログ解析器２０２は、記録されている動的シミュレーションログ１０５を解析し、エラーが発生しているか否かを判定する。たとえば、実行値と期待値が不一致となれば、エラーが発生していると判定する。エラーが発生していればステップＳ３０４に移行する。エラーの発生が無ければ、検証処理を終了する。
【００３７】
ステップＳ３０４において、ログ解析器２０２は、最も早いエラー発生時刻 ｋを求める。次に、ログ解析器２０２は、時刻０からエラー発生時刻ｋまでの入力値 Ｉ（ｔ）、実行値 Ａ（ｔ）、期待値 Ｅ（ｔ） ｛ ０＜＝ ｔ ＜＝ ｔ｝ を抽出する。
【００３８】
ステップＳ３０５において、内部状態推定器２０３は、変数 ｎ の値にエラー発生時刻 ｋ を代入する。内部状態推定器２０３は、時刻 ｎ ＋ １ における内部状態 Ｓ（ｎ ＋ １） を不定と仮定して、ステップＳ３０１において求めた内部状態関数 Ｆ（Ｉ（ｔ）， Ｏ（ｔ）， Ｓ（ｔ）） と、入力値 Ｉ（ｎ）、実行値 Ａ（ｎ）、期待値 Ｅ（ｎ）とから、時刻 ｎ における内部状態 Ｓａ（ｎ） と Ｓｅ（ｎ） を求める。
【００３９】
Ｓａ（ｎ） ＝ Ｆ（Ｉ（ｎ）， Ｓａ（ｎ）， Ｓａ（ｎ ＋ １））
Ｓｅ（ｎ） ＝ Ｆ（Ｉ（ｎ）， Ｓｅ（ｎ）， Ｓｅ（ｎ ＋ １））
さらに、内部状態推定器２０３は、求められた Ｓａ（ｎ） とＳｅ（ｎ）を用い、入力値 Ｉ（ｎ−１）、実行値 Ａ（ｎ−１）、期待値 Ｅ（ｎ−１）から、時刻 ｎ − １における内部状態 Ｓａ（ｎ − １） と Ｓｅ（ｎ − １） を求める。
【００４０】
Ｓａ（ｎ − １） ＝ Ｆ（Ｉ（ｎ − １）， Ｓａ（ｎ − １）， Ｓａ（ｎ））
Ｓｅ（ｎ − １） ＝ Ｆ（Ｉ（ｎ − １）， Ｓｅ（ｎ − １）， Ｓｅ（ｎ））
ステップＳ３０６において、内部状態比較器２０４は、Ｓａ（ｎ−１） とＳｅ（ｎ−１） とを比較する。内部状態比較器２０４は、Ｓａ（ｎ−１） とＳｅ（ｎ−１） の要素ごとに比較をおこない、全ての要素で値が一致したならば、Ｓａ（ｎ−１） とＳｅ（ｎ−１） は一致していると判定し、Ｓ３１０に移行する。一要素でも不一致ならば、ステップＳ３０７に移行する。このとき、該当する要素値が、両方とも不定（’Ｘ’）ならば、その要素は一致していると見なす。
【００４１】
ステップＳ３０７において、内部状態比較器２０４は、ｎ が時刻１であるか判定する。時刻１でないならば、ステップＳ３０８に移行する。時刻１ならば、ステップＳ３１０へ移行する。
【００４２】
ステップＳ３０８において、内部状態比較器２０４は、時刻 ｎ を更新し、ｎ ＝ ｎ − １ とする。
【００４３】
ステップＳ３０９において、内部状態推定器２０４は、内部状態 Ｓａ（ｎ − １） と Ｓｅ（ｎ − １） をそれぞれ更新する。内部状態推定器２０４は、更新後の ｎ に対して、内部状態関数 Ｆ（Ｉ（ｔ）， Ｏ（ｔ）， Ｓ（ｔ）） と、入力値 Ｉ（ｎ）、実行値 Ａ（ｎ）、期待値 Ｅ（ｎ）から、内部状態Ｓａ（ｎ−１） とＳｅ（ｎ−１） を求める。
【００４４】
Ｓａ（ｎ − １） ＝ Ｆ（Ｉ（ｎ − １）， Ｓａ（ｎ − １）， Ｓａ（ｎ））
Ｓｅ（ｎ − １） ＝ Ｆ（Ｉ（ｎ − １）， Ｓｅ（ｎ − １）， Ｓｅ（ｎ））
ステップＳ３１において、探索器２０５は、Ｓａ（ｎ − １） から Ｓａ（ｎ） の遷移で変化した要素を抽出する。探索器２０５は、抽出された要素が内部表現におけるＢＤＤの中で、どの節に対応するかを求め、その結果を利用してＤＵＴ１０１で対応する論理記述を選択する。内部状態の各要素はＢＤＤの各節に対応しているので、対応する論理記述をＤＵＴ１０１から選択するのは容易である。探索器２０５は、選択された論理記述を行番号と共にエラー原因に関する情報１０７として出力する。
【００４５】
図４は、実施形態に係るエラー原因に関する情報の一例を示す図である。図４に示す一例では、一行毎にひとつのエラー原因の要素を表示している。もちろん、本発明はエラー原因に関する情報１０７の出力形式に依存したものではないので、他の形式のエラー原因に関する情報１０７を採用できることはいうまでもない。エラー原因に関する情報に含まれる要素は、左端からＬＩＮＥ、ＤＥＳＣＲＩＰＴＩＯＮ、ＮＯＤＥ、ＡＣＴ、ＥＸＰ などがある。
【００４６】
ＬＩＮＥ 項は、ＤＵＴ１０１内の行番号を示している。ＤＥＳＣＲＩＰＴＩＯＮ 項は、該当行番号における論理記述を示している。この論理記述が長すぎてＤＥＳＣＲＩＰＴＩＯＮ 項に納まらない場合、探索器２０５は、エラー原因の信号を含む箇所を抜き出して記録するようにしてもよい。ＮＯＤＥ 項は、エラー原因の信号名を示している。ＡＣＴ 項は、エラー原因の信号の実行値を示している。ＥＸＰ 項は、エラー原因の信号の期待値を示している。
【００４７】
図４に示す例は、行番号１１０の記述にエラー原因が存在することを示している。また、エラー原因の信号は、”ＳＴＡＴＥ” で、実行値は “３’ｂ０００” であるが、期待値は “３’ｂ１０１” であることを示している。
【００４８】
このようにエラー原因に関する情報１０７から、論理システムを表現したＤＵＴ１０１内におけるエラー原因個所を特定できる。すなわち、本実施形態に係る発明によれば、ハードウエア記述言語を用いて外端の仕様のみを定義された論理システムに関して実行された動的シミュレーションの結果から、エラー原因箇所を特定できるようになる。そのため、論理システムの内部構成や内部仕様が明確でなくとも、エラー原因の解析が容易になる。よって、本発明は、顧客の要求する開発期間を満たすことに貢献しよう。
【００４９】
また、従来のように何度も動的シミュレーションを実行してエラー原因を絞り込む必要が無くなる。そのため、エラーの原因箇所の探索に費やす時間は減少する。論理システムの内部構成や内部仕様が明確でなくとも、エラー原因の解析が容易になる。よって、本実施形態に係る発明によれば、十分な精度を持つ論理システムを予定の期間内に完成させることができる。それによって、市場が欲するときに製品を投入することが可能となろう。
【００５０】
図５は、実施形態に係る検証方法を実行可能なコンピュータの一例を示す図である。本発明に係る検証装置は、上述の検証機能に特化した検証装置として実現することもできるが、図５で説明するようなコンピュータ５００で検証用のコンピュータプログラムを実行することによっても実現できる。
【００５１】
ＣＰＵ５０１は、コンピュータ５００の各部を統括的に制御する制御装置である。ＲＯＭ５０２は、ブートプログラムなどを記憶する不揮発性の記憶装置である。ＲＡＭ５０３は、ワークエリアとして機能する揮発性の記憶装置である。ハードディスクドライブ（ＨＤＤ）５０４は、大容量の記憶装置であり、検証用のコンピュータプログラム５１１、ＤＵＴの設計データ５１２、動的シミュレーションに用いられるテストベンチデータ５１３、ＤＵＴの設計データ５１２を変換して得られるＤＵＴ内部表現データ５１４、動的シミュレーションのログデータ５１５、エラー原因に関する情報５１６などが記憶される。表示制御部５０５は、表示装置５０６の表示制御を実行する制御回路である。表示装置５０６は、ＣＲＴや液晶表示装置等である。
【００５２】
なお、ＤＵＴの設計データ５１２は上述のＤＵＴ１０１に相当し、ＤＵＴ内部表現データ５１４は上述の内部表現１０４に相当し、動的シミュレーションのログデータ５１５は上述の動的シミュレーションログ１０５に相当し、エラー原因に関する情報５１６は上述のエラー原因情報１０７に相当することは言うまでもない。
【００５３】
図６は、実施形態に係る検証方法の例示的なフローチャートである。本検証方法は、コンピュータ５００において、検証用のコンピュータプログラム５１１が起動されたときの処理を示している。なお、図６に記載の処理は、図３に記載の処理の上位概念として理解できることはいうまでもない。
【００５４】
なお、ＣＰＵ５０１は、動的シミュレーションを実行中に、実行値と期待値とを逐次比較し、その結果をＨＤＤ５０４に記憶してもよい。さらに、ＣＰＵ５０１は、実行値と期待値の不一致を検出したときに、動的シミュレーションを停止させてもよい。実行値と期待値の不一致はエラーを意味するため、エラーを検出したときに動的シミュレーションを停止すれば、その都度エラー原因個所を特定しやすくなる利点がある。
【００５５】
ステップＳ６０１において、ＣＰＵ５０１は、ＤＵＴ設計データ５１２を読み出し、内部表現に関する情報であるＤＵＴ内部表現データ５１４を生成し、ＨＤＤ５０４に記憶する。
【００５６】
ステップＳ６０２において、ＣＰＵ５０１は、ハードウエア記述言語で記述されたＤＵＴの設計データ５１２と、テストベンチデータ５１３とをＨＤＤ５０４から読みだし、上述の動的シミュレーションを実行する。その際に、ＣＰＵ５０１は、動的シミュレーションの実行状態に関する情報をログデータ５１４としてＨＤＤ５１５に記憶してゆく。なお、ステップＳ６０１とＳ６０２とは順番が逆であってもよい。
【００５７】
ステップＳ６０３において、ＣＰＵ５０１は、動的シミュレーションでエラーが発生した場合に、ログデータ５１５と、ＤＵＴ内部表現データ５１４とに基づいて、論理システムに含まれるエラーの原因個所を探索する。ＣＰＵ５０１は、探索により見つかったエラーの原因個所を含むエラー原因情報５１６をＨＤＤ５０４に出力する。
【００５８】
このように、本実施形態によれば、ハードウエア記述言語で記述された論理システムに関して実行された動的シミュレーションの結果からエラー原因箇所を特定できるため、論理システムの内部構成や内部仕様が明確でなくとも、エラー原因の解析が容易になる。よって、本発明は、顧客の要求する開発期間を満たすことに貢献しよう。
【００５９】
［他の実施形態］
以上、様々な実施形態を詳述したが、本発明は、複数の機器から構成されるシステムに適用してもよいし、また、一つの機器からなる装置に適用してもよい。たとえば、動的シミュレーションを第１の情報処理装置で実行し、ＤＵＴを内部表現に変換する処理を第２の情報処理装置で実行し、エラーの探索処理を第３の情報処理装置で実行することもできる。
【００６０】
また、本発明の上述の各機能は、それぞれハードウエア回路によって実現してもよいし、一部またはすべてをソフトウエアによって実現しても良い。後者の場合は、各機能を実現するソフトウェアプログラムをＲＯＭなどの記憶装置に記憶しておき、それをＣＰＵが実行することになる。
【００６１】
なお、本発明は、前述した実施形態の各機能を実現するソフトウェアプログラムを、システム若しくは装置に対して直接または遠隔から供給し、そのシステム若しくは装置に含まれるコンピュータが該供給されたプログラムコードを読み出して実行することによっても達成される。
【００６２】
従って、本発明の機能・処理をコンピュータで実現するために、該コンピュータにインストールされるプログラムコード自体も本発明を実現するものである。つまり、上記機能・処理を実現するためのコンピュータプログラム自体も本発明の一つである。
【００６３】
その場合、プログラムの機能を有していれば、オブジェクトコード、インタプリタにより実行されるプログラム、ＯＳに供給するスクリプトデータ等、プログラムの形態を問わない。
【００６４】
プログラムを供給するための記録媒体としては、例えば、フレキシブルディスク、ハードディスク、光ディスク、光磁気ディスク、ＭＯ、ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＣＤ−ＲＷ、磁気テープ、不揮発性のメモリカード、ＲＯＭ、ＤＶＤ（ＤＶＤ−ＲＯＭ，ＤＶＤ−Ｒ）などがある。
【００６５】
その他、プログラムの供給方法としては、クライアントコンピュータのブラウザを用いてインターネットのホームページに接続し、該ホームページから本発明のコンピュータプログラムそのもの、もしくは圧縮され自動インストール機能を含むファイルをハードディスク等の記録媒体にダウンロードすることによっても供給できる。また、本発明のプログラムを構成するプログラムコードを複数のファイルに分割し、それぞれのファイルを異なるホームページからダウンロードすることによっても実現可能である。つまり、本発明の機能処理をコンピュータで実現するためのプログラムファイルを複数のユーザに対してダウンロードさせるＷＷＷサーバも、本発明の構成要件となる場合がある。
【００６６】
また、本発明のプログラムを暗号化してＣＤ−ＲＯＭ等の記憶媒体に格納してユーザに配布し、所定の条件をクリアしたユーザに対し、インターネットを介してホームページから暗号化を解く鍵情報をダウンロードさせ、その鍵情報を使用することにより暗号化されたプログラムを実行してコンピュータにインストールさせて実現することも可能である。
【００６７】
また、コンピュータが、読み出したプログラムを実行することによって、前述した実施形態の機能が実現される他、そのプログラムの指示に基づき、コンピュータ上で稼動しているＯＳなどが、実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現され得る。
【００６８】
さらに、記録媒体から読み出されたプログラムが、コンピュータに挿入された機能拡張ボードやコンピュータに接続された機能拡張ユニットに備わるメモリに書き込まれた後、そのプログラムの指示に基づき、その機能拡張ボードや機能拡張ユニットに備わるＣＰＵなどが実際の処理の一部または全部を行い、その処理によっても前述した実施形態の機能が実現される。
【図面の簡単な説明】
【００６９】
【図１】実施形態に係る論理システムの検証装置の例示的なブロック図である。
【図２】実施形態に係るエラー原因探索器の一例を示す図である。
【図３】実施形態に係る論理検証方法の一例を示すフローチャートである。
【図４】実施形態に係るエラー原因に関する情報の一例を示す図である。
【図５】実施形態に係る検証方法を実行可能なコンピュータの一例を示す図である。
【図６】実施形態に係る検証方法の例示的なフローチャートである。
【符号の説明】
【００７０】
１０１…ＤＵＴ
１０２…内部表現変換器
１０３…動的シミュレータ
１０４…内部表現（ＤＵＴ）
１０５…動的シミュレーションログ
１０６…エラー原因探索器
１０７エラー原因に関する情報
【図１】
2006155378.tif 000003
【図２】
2006155378.tif 000004
【図３】
2006155378.tif 000005
【図４】
2006155378.tif 000006
【図５】
2006155378.tif 000007
【図６】
2006155378.tif 000008