(57)【特許請求の範囲】
【請求項１】
プログラミング言語やハードウェア記述言語等により記述されたシステムの動作検証を支援する装置であって、
前記システムの構造を表現するためのブロック図を作成してブロック図情報を生成するブロック図作成手段と、
前記ブロック図に対してデータの流れる経路のポートをユーザがポイントする操作により、前記システムにおけるデータの流れる経路を示すデータフローの表記を受け付け、データフロー情報を生成するデータフロー表記手段と、
入力パターンに基づいて前記システムの動作をシミュレーションしてシミュレーション結果情報を生成するシミュレーション手段と、
前記データフロー情報のデータフローの示す経路が前記シミュレーション結果情報の示す経路と同じであるかをチェックするデータフローチェック手段と
を備えたことを特徴とするデータフロー検証支援装置。
【請求項２】
請求項１に記載のデータフロー検証支援装置において、
前記データフロー表記手段は、前記システムを構成する要素の入出力のポートを信号が伝達する順に列挙したデータフロー情報を生成し、
前記シミュレーション手段は、シミュレーションにより信号が変化する前記システムを構成する要素の入出力のポートを時系列に列挙したシミュレーション結果情報を生成し、
前記データフローチェック手段は、前記データフロー情報上に列挙される前記ポートが、前記シミュレーション結果情報上に列挙される前記ポートと同じ順番で出現する場合に同じ経路であると判断する
ことを特徴とするデータフロー検証支援装置。
【請求項３】
請求項１または２のいずれか一項に記載のデータフロー検証支援装置において、
前記シミュレーション結果情報は、複数の入力パターンの個々に対応したものであり、
前記データフローチェック手段は、データフロー情報の個々のデータフローに一致するシミュレーション結果情報が存在し、すべてのデータフローに対して一致するシミュレーション結果情報が存在すると判断した場合には、すべてのデータフローについて正常にシミュレーションした旨を示すチェック結果を出力する
ことを特徴とするデータフロー検証支援装置。
【請求項４】
請求項１乃至３のいずれか一項に記載のデータフロー検証支援装置において、
前記シミュレーション結果情報は、複数の入力パターンの個々に対応したものであり、
前記データフローチェック手段は、一致するシミュレーション結果情報が存在しないデータフローがある場合、当該データフローを識別する情報を伴ってそのデータフローが正常にシミュレーションされていない旨のチェック結果を出力する
ことを特徴とするデータフロー検証支援装置。
【請求項５】
請求項１乃至４のいずれか一項に記載のデータフロー検証支援装置において、
前記シミュレーション結果情報は、複数の入力パターンの個々に対応したものであり、
前記データフローチェック手段は、前記データフロー情報に含まれる個々のデータフローについて一致したシミュレーション結果情報を識別する情報を併せて出力する
ことを特徴とするデータフロー検証支援装置。
【請求項６】
プログラミング言語やハードウェア記述言語等により記述されたシステムの動作検証を支援する方法であって、
ブロック図作成手段が、前記システムの構造を表現するためのブロック図を作成してブロック図情報を生成するブロック図作成工程と、
データフロー表記手段が、前記ブロック図に対してデータの流れる経路のポートをユーザがポイントする操作により、前記システムにおけるデータの流れる経路を示すデータフローの表記を受け付け、データフロー情報を生成するデータフロー表記工程と、
シミュレーション手段が、入力パターンに基づいて前記システムの動作をシミュレーションしてシミュレーション結果情報を生成するシミュレーション工程と、
データフローチェック手段が、前記データフロー情報のデータフローの示す経路が前記シミュレーション結果情報の示す経路と同じであるかをチェックするデータフローチェック工程と
を備えたことを特徴とするデータフロー検証支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ハードウェアシステムやソフトウェアシステムを電子的に設計する技術に関する。
【背景技術】
【０００２】
半導体集積回路等のハードウェアシステムの設計支援装置が既に提案されている（例えば、特許文献１を参照。）。
【０００３】
ハードウェアシステムを設計する場合、ＣＡＤ（Computer Aided Design）ツールを使用して図１に示すようなブロック図を作成する場合がある。
【０００４】
この場合、各ブロック（Ｂ１〜Ｂ５）の詳細動作はハードウェア記述言語を使って記述し、回路全体のハードウェア記述（ブロック間の結線情報）はブロック図から自動生成する。
【０００５】
そして、回路に対していくつかの入力パターンを外部から与えて論理シミュレーションを実施し、正しい結果が回路から出力されているかについて検証する。
【０００６】
ところで、回路中のデータフロー（データの流れ）は、回路の各種動作モードにより異なる場合がある。例えば、動作モード＃１の場合は図２（ａ）に太線で示すように、ブロックＢ１のポートＩ１→ブロックＢ１のポートＯ１→ブロックＢ３のポートＩ１→ブロックＢ３のポートＯ２→ブロックＢ５のポートＩ１→ブロックＢ５のポートＯ１というようにデータが流れ、動作モード＃２の場合は図２（ｂ）に太線で示すようにブロックＢ１のポートＩ１→ブロックＢ１のポートＯ１→ブロックＢ３のポートＩ１→ブロックＢ３のポートＯ１→ブロックＢ４のポートＩ１→ブロックＢ４のポートＯ１というようにデータが流れるといった具合である。
【０００７】
回路が正しく設計されているかどうかについて検証するためには、図２（ａ）のようにデータが流れる場合と、図２（ｂ）のようにデータが流れる場合の両方について検証する必要がある。
【０００８】
この検証を実施する場合、検証すべきデータフローに関してまず図２（ａ）や図２（ｂ）のようなデータフローを示す図を作成し、これが仕様上考えられるデータの流れのすべてのケースであるかを目視により検討する。
【０００９】
そして、論理シミュレーションを実施し、すべてのデータフローについて論理シミュレーションを実施したかを目視により確認する。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
上述したように、従来はすべてのデータの流れについて論理シミュレーションを実施したかについての確認は、目視により行われており、検証漏れの起きる可能性がある。
【００１１】
一方、データの流れる順序をアサーション言語等により記述し、論理シミュレーション結果を用いてアサーション記述どおりにデータが流れたかを自動的にチェックする場合もある。
【００１２】
しかし、この方法でも、アサーションは人手により記述するため、図２（ａ）と図２（ｂ）のケースに対するアサーションが本当に記述さているかを保障する方法は無い。
【００１３】
また、検証を十分に行ったかを示す指標にコードカバレッジがある。これは、ハードウェア記述言語により記述されたすべてのソースコード行が論理シミュレーション時に実行されたかを確認するものである。しかし、すべてのソースコード行が実行されたからといって、すべてのデータの流れが実行されたとは限らない。
【００１４】
また、実施した論理シミュレーションがどのデータフローについて実施されたものかについて、シミュレーション結果から知るのは容易ではない。
【００１５】
本発明は上記の従来の問題点に鑑み提案されたものであり、その目的とするところは、所定のデータフローについてシミュレーションを実施したかどうかを自動的に確認することのできるデータフロー検証支援装置およびデータフロー検証支援方法を提供することにある。
【課題を解決するための手段】
【００１６】
上記の課題を解決するため、本発明にあっては、プログラミング言語やハードウェア記述言語等により記述されたシステムの動作検証を支援する装置であって、前記システムの構造を表現するためのブロック図を作成してブロック図情報を生成するブロック図作成手段と、前記ブロック図に対してデータの流れる経路のポートをユーザがポイントする操作により、前記システムにおけるデータの流れる経路を示すデータフローの表記を受け付け、データフロー情報を生成するデータフロー表記手段と、入力パターンに基づいて前記システムの動作をシミュレーションしてシミュレーション結果情報を生成するシミュレーション手段と、前記データフロー情報のデータフローの示す経路が前記シミュレーション結果情報の示す経路と同じであるかをチェックするデータフローチェック手段とを備える。
【発明の効果】
【００２２】
本発明のデータフロー検証支援装置およびデータフロー検証支援方法にあっては、所定のデータフローについてシミュレーションを実施したかどうかを自動的に確認することができ、検証漏れを発見することができる。
【図面の簡単な説明】
【００２３】
【図１】ブロック図の例を示す図である。
【図２】データフローの例を示す図である。
【図３】本発明の一実施形態にかかるデータフロー検証支援装置の構成例を示す図である。
【図４】データフロー情報の例を示す図である。
【図５】論理シミュレーション結果情報の例を示す図である。
【発明を実施するための形態】
【００２４】
以下、本発明の好適な実施形態につき説明する。
【００２５】
＜構成＞
図３は本発明の一実施形態にかかるデータフロー検証支援装置１の構成例を示す図である。
【００２６】
図３において、データフロー検証支援装置１は、機能部として、ブロック図作成部１０１とデータフロー表記部１０２と論理シミュレーション部１０３とデータフローチェック部１０４とを備えている。これらの機能部は、データフロー検証支援装置１を構成するコンピュータのＣＰＵ（Central Processing Unit）、ＲＯＭ（Read Only Memory）、ＲＡＭ（Random Access Memory）等のハードウェア資源上で実行されるコンピュータプログラムによって実現されるものである。なお、データフロー検証支援装置１は単一のコンピュータで構成される必要はなく、複数のコンピュータがネットワーク接続される形態であってもよい。この場合、各機能部は、単一のコンピュータ上に配置される必要はなく、必要に応じて分散される形態であってもよい。
【００２７】
また、処理には、ブロック図情報１１１とデータフロー情報１１２とハードウェアシステム記述１１３と入力パターン１１４と論理シミュレーション結果情報１１５とが用いられる。これらのデータは、データフロー検証支援装置１内のＨＤＤ（Hard Disk Drive）等の記憶媒体上の記憶領域に保持されるものである。
【００２８】
ブロック図作成部１０１は、ユーザにブロック図作成のためのユーザインタフェースを提供してブロック図を作成させ、作成したブロック図を内部的に表現したブロック図情報１１１を生成して出力する機能を有している。
【００２９】
データフロー表記部１０２は、ブロック図作成部１０１により作成中のブロック図もしくは作成済のブロック図に対し、ユーザにデータフロー追記のためのユーザインタフェースを提供し、追記されたデータフローを内部的に表現したデータフロー情報１１２を生成して出力する機能を有している。
【００３０】
論理シミュレーション部１０３は、ブロック図に対応して別途作成されたハードウェアシステム記述１１３および各種の入力パターン１１４に基づき、論理シミュレーションを実行し、入力パターン１１４毎に論理シミュレーション結果情報１１５を生成して出力する機能を有している。
【００３１】
データフローチェック部１０４は、データフロー情報１１２および論理シミュレーション結果情報１１５に基づき、ユーザが指定したデータフロー通りに論理シミュレーションが実行されたかどうかチェックし、チェック結果を生成して出力する機能を有している。
【００３２】
＜動作＞
データフロー検証支援装置１のユーザは、ブロック図作成部１０１により図１に示したようなハードウェアシステムのブロック図を作成し、作成されたブロック図はブロック図情報１１１として保存される。ブロック図作成部１０１は、従来からあるＧＵＩ（Graphical User Interface）を備えた回路図作成ツールやブロック図作成ツールなどの技術を使って実現することができる。ブロック図情報１１１は、図の要素であるブロックや配線の図形情報やポート名等の文字情報と、図上の位置情報を有している。なお、ここではハードウェアシステムを例として説明しているが、ソフトウェアシステムであってもよい。この場合、ブロックはソフトウェアにおける関数などに対応する。
【００３３】
ブロック図作成部１０１によるブロック図の作成と並行して、データフロー表記部１０２は、ブロック図作成部１０１において作成し表示しているブロック図中に、データフローを図２に太線で示すような形で入力する。データフローを入力する方法の一例としては、そのデータフローが経由する各ポートをマウス等で選択する方法などがある。例えば、図２（ａ）に示したデータフローを入力する場合は、ブロックＢ１のポートＩ１、ブロックＢ１のポートＯ１、ブロックＢ３のポートＩ１、ブロックＢ３のポートＯ２、ブロックＢ５のポートＩ１、ブロックＢ５のポートＯ１の順でマウス等により指定してデータフローを入力する。この場合、マウス等の押された位置情報とブロック図情報１１１のポートの位置情報とを比較して指定されたポートを認識し、データフローが経由する各ポートの情報であるデータフロー情報１１２を生成する。
【００３４】
図４はデータフロー情報１１２の例を示す図であり、図２（ａ）に示したデータフローに対応している。すなわち、ブロックＢ１のポートＩ１を示す「Ｂ１．Ｉ１」、ブロックＢ１のポートＯ１を示す「Ｂ１．Ｏ１」、ブロックＢ３のポートＩ１を示す「Ｂ３．Ｉ１」、ブロックＢ３のポートＯ２を示す「Ｂ３．Ｏ２」、ブロックＢ５のポートＩ１を示す「Ｂ５．Ｉ１」、ブロックＢ５のポートＯ１を示す「Ｂ５．Ｏ１」がデータフローの順に列記されたものとなっている。
【００３５】
図３に戻り、論理シミュレーション部１０３は、ＶｅｒｉｌｏｇＨＤＬやＳｙｓｔｅｍＣといったハードウェア記述言語により記述されたハードウェアシステム記述１１３とそのシステムへの各種の入力パターン１１４を読み込んで論理シミュレーションを実施し、各入力パターン１１４に対する論理シミュレーション結果情報１１５を出力する。論理シミュレーションには従来から知られた論理シミュレーション技術を用いる。ここでは、ハードウェアシステムを例としているが、ソフトウェアシステムであってもよく、この場合、ハードウェアシステム記述１１３に相当する部分はプログラミング言語により記述されたソフトウェア記述となる。また、論理シミュレーション部１０３による「論理シミュレーション」に相当するものは「ソフトウェアの実行」となる。
【００３６】
図５は論理シミュレーション結果情報１１５の例を示す図である。図５では、シミュレーション上の時刻とその時刻に変化した信号名（ポート名）とその信号（ポート）の値が格納されている。図示の例では、時刻「１００ｎｓ」にブロックＢ１のポートＩ１の値が「１」でブロックＢ２のポートＩ１の値が「１」・・・となることを示す「１００ｎｓ  Ｂ１．Ｉ１（１），Ｂ２．Ｉ１（１），・・・」、時刻「２００ｎｓ」にブロックＢ１のポートＯ１の値が「１」でブロックＢ３のポートＩ１の値が「０」・・・となったことを示す「２００ｎｓ  Ｂ１．Ｏ１（１），Ｂ３．Ｉ１（０），・・・」、時刻「３００ｎｓ」にブロックＢ３のポートＯ２の値が「０」・・・となったことを示す「３００ｎｓ  Ｂ３．Ｏ２（０），・・・」、時刻「５００ｎｓ」にブロックＢ５のポートＩ１の値が「１」・・・となったことを示す「５００ｎｓ  Ｂ５．Ｉ１（１），・・・」、時刻「６００ｎｓ」にブロックＢ５のポートＯ１の値が「０」・・・となったことを示す「６００ｎｓ  Ｂ５．Ｏ１（０），・・・」が時系列に列記されたものとなっている。
【００３７】
図３に戻り、データフローチェック部１０４は、データフロー情報１１２と論理シミュレーション結果情報１１５を参照し、ブロック図中に表記されたデータフローについてすべてシミュレーションされたかについてチェックを実施する。例えば、図２（ａ）に示したデータフローに対しては図４で示したデータフロー情報１１２に列記された順に各ブロックのポートの値が変化するはずであるので、データフローチェック部１０４は、図５の論理シミュレーション結果情報１１５中においてもこの順に各ポートの値が変化しているかをチェックする。この場合、データそのものの値をチェックする場合もあれば、データの有効性を示すｖａｌｉｄ信号などのような信号の値（評価値）をチェックする場合もある。図５の例では、時刻「１００ｎｓ」にブロックＢ１のポートＩ１の値だけでなくブロックＢ２のポートＩ１の値も変化しているが、それは入力パターンとして値が与えられただけであり、その後はＢ１．Ｏ１→Ｂ３．Ｏ２→Ｂ５．Ｉ１→Ｂ５．Ｏ１というように、図４のデータフロー情報１１２と同じ順に変化しているため、図４のデータフロー情報１１２が示すデータフローを正常にシミュレーションしたと判断する。
【００３８】
データフロー情報１１２にはユーザがデータフロー表記部１０２により設定した数のデータフローの情報が含まれ、論理シミュレーション結果情報１１５には入力パターン１１４に対応する数が存在するため、データフローチェック部１０４は、データフロー情報１１２の個々のデータフローに一致する論理シミュレーション結果情報１１５が存在し、すべてのデータフローに対して一致する論理シミュレーション結果情報１１５が存在すると判断した場合には、すべてのデータフローについて正常にシミュレーションした旨を示すチェック結果を出力する。また、一致する論理シミュレーション結果情報１１５が存在しないデータフローがある場合、そのデータフローを識別する情報を伴ってそのデータフローが正常にシミュレーションされていない旨のチェック結果を出力する。
【００３９】
更に、データフローチェック部１０４は、データフロー情報１１２に含まれる個々のデータフローについて一致した論理シミュレーション結果情報１１５を識別する情報を併せて出力するようにしてもよい。これにより、論理シミュレーション結果情報１１５がどのデータフローに対応するのかを明確にすることができる。
【００４０】
＜総括＞
以上説明したように、本実施形態によれば、所定のデータフローについてシミュレーションを実施したかどうかを自動的に確認することができ、検証漏れを発見することができる。
【００４１】
また、実施した論理シミュレーションがどのデータフローについて実施されたものかを容易に知ることができる。
【００４２】
以上、本発明の好適な実施の形態により本発明を説明した。ここでは特定の具体例を示して本発明を説明したが、特許請求の範囲に定義された本発明の広範な趣旨および範囲から逸脱することなく、これら具体例に様々な修正および変更を加えることができることは明らかである。すなわち、具体例の詳細および添付の図面により本発明が限定されるものと解釈してはならない。
【符号の説明】
【００４３】
１          データフロー検証支援装置
１０１      ブロック図作成部
１０２      データフロー表記部
１０３      論理シミュレーション部
１０４      データフローチェック部
１１１      ブロック図情報
１１２      データフロー情報
１１３      ハードウェアシステム記述
１１４      入力パターン
１１５      論理シミュレーション結果情報
【先行技術文献】
【特許文献】
【００４４】
【特許文献１】特開２００８−２０４１１１号公報
【図１】
0005899711.tif 000002
【図２】
0005899711.tif 000003
【図３】
0005899711.tif 000004
【図４】
0005899711.tif 000005
【図５】
0005899711.tif 000006