(57)【特許請求の範囲】
【請求項１】
第１の装置において指定順序とは異なる順序でパケットが送信される論理的なルールの探索を支援する探索支援プログラムであって、
前記第１の装置から第２の装置への通信中に指定順序とは異なる順序でパケットが送信されたことが検出された場合に、前記第１の装置内のレジスタ群の状態を示すスナップショットを取得し、
取得された前記スナップショットに含まれているレジスタ群の各々のレジスタに関する識別情報と値との組み合わせを抽出し、
抽出された各組み合わせの抽出回数に基づいて前記各組み合わせの出現頻度を算出し、
前記各組み合わせについて、前記組み合わせと当該組み合わせに対応する出現頻度とを出力する、
処理をコンピュータに実行させることを特徴とする探索支援プログラム。
【請求項２】
前記出力する処理は、
前記各組み合わせについて、前記組み合わせと当該組み合わせに対応する出現頻度と前記組み合わせの選択入力を受け付けるインターフェース情報とを有する選択画面を表示することを特徴とする請求項１に記載の探索支援プログラム。
【請求項３】
前記インターフェース情報から少なくともいずれか１つの組み合わせについての選択入力を受け付け、
前記選択入力が受け付けられた前記少なくともいずれか１つの組み合わせについては、前記指定順序とは異なる順序でのパケットの送信とみなさない旨を示す制約条件を有する論理関数を生成する、処理を前記コンピュータに実行させ、
前記出力する処理は、
生成された前記論理関数を出力することを特徴とする請求項２に記載の探索支援プログラム。
【請求項４】
前記出力する処理は、
前記論理関数を、前記第１の装置から前記第２の装置へのデータ通信中に前記指定順序とは異なる順序でデータ通信されたことを検出する監視装置に送信することを特徴とする請求項３に記載の探索支援プログラム。
【請求項５】
第１の装置において指定順序とは異なる順序でパケットが送信される論理的なルールの探索を支援する探索支援装置であって、
前記第１の装置から第２の装置への通信中に指定順序とは異なる順序でパケットが送信されたことが検出された場合に、前記第１の装置内のレジスタ群の状態を示すスナップショットを取得する取得部と、
前記取得部によって取得された前記スナップショットに含まれているレジスタ群の各々のレジスタに関する識別情報と値との組み合わせを抽出する抽出部と、
前記抽出部によって抽出された各組み合わせの抽出回数に基づいて前記各組み合わせの出現頻度を算出する算出部と、
前記各組み合わせについて、前記組み合わせと当該組み合わせに対応する出現頻度とを出力する出力部と、
を有することを特徴とする探索支援装置。
【請求項６】
第１の装置において指定順序とは異なる順序でパケットが送信される論理的なルールの探索を支援する探索支援方法であって、
コンピュータが、
前記第１の装置から第２の装置への通信中に指定順序とは異なる順序でパケットが送信されたことが検出された場合に、前記第１の装置内のレジスタ群の状態を示すスナップショットを取得し、
取得された前記スナップショットに含まれているレジスタ群の各々のレジスタに関する識別情報と値との組み合わせを抽出し、
抽出された各組み合わせの抽出回数に基づいて前記各組み合わせの出現頻度を算出し、
前記各組み合わせについて、前記組み合わせと当該組み合わせに対応する出現頻度とを出力する、
ことを特徴とする探索支援方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、検証支援する検証支援プログラム、検証支援装置、および検証支援方法に関する。
【背景技術】
【０００２】
従来、検証対象の通信の監視において、検証者は、たとえば、パケットがスキップされたら「アクティブビットが「１」になったか？」、「カウンタの値が「０」より大きいか？」などの検証対象の論理的な状態を確認する。
【０００３】
また、テレビ電話用途向けビデオソースレート制御のための従来技術が開示されている。当該従来技術は、ネットワーク上でビデオフレームパケットをエンコードしたりデコードしたりするためのルールを作成する技術である。
【０００４】
また、通信事業者提供の有線通信ネットワークを介し、全国多数の箇所へ同時に配信しなければ実現することができない地上波デジタル放送のデータ放送素材伝送システムが従来技術として開示されている。当該従来技術は、地上波デジタル放送のデータ放送サービスで採用されたデータカルーセル伝送方式の持つ冗長情報を取り除き、有線通信ネットワークとしてのデジタル放送素材中継網に引渡して同時配信させ、各受信側で元のデータカルーセルを復元する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００９−５１４４４８号公報
【特許文献２】特開２００５−６４５５６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、パケットがスキップされる論理的なルールやアサーションを検証者が仕様書に記載すると、記載ミスが発生しがちである。そのような仕様書を読んだ者は、パケットがスキップされる論理的なルールやアサーションについて誤った解釈をしてしまうことになる。このような解釈は擬似エラーの原因となり、重要なプロパティが監視から外れてしまうことになる。
【０００７】
本発明は、パケットがスキップされる論理的なルールの探索の容易化を図ることを目的とする。
【課題を解決するための手段】
【０００８】
本発明の一側面によれば、第１の装置から第２の装置への通信中に指定順序とは異なる順序でパケットが送信されたことが検出された場合に、前記第１の装置内のレジスタ群の状態を示すスナップショットを取得し、取得されたスナップショットに含まれているレジスタ群の各々のレジスタに関する識別情報と値との組み合わせを抽出し、抽出された各組み合わせの抽出回数に基づいて前記各組み合わせの出現頻度を算出し、前記各組み合わせについて、前記組み合わせと当該組み合わせに対応する出現頻度とを出力する検証支援プログラム、検証支援装置、および検証支援方法が提案される。
【発明の効果】
【０００９】
本発明の一側面によれば、パケットがスキップされる論理的なルールの探索の容易化を図ることができるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本実施の形態にかかる検証支援例を示す説明図である。
【図２】図２は、再度（１）のシミュレーションを実行したことにより得られるスキップ時のレジスタの状態とスキップ時の出現確率とチェックボックスの選択画面１０５の表示例である。
【図３】図３は、レジスタの状態の集計例を示す説明図である。
【図４】図４は、本実施の形態にかかる検証支援システムのシステム構成例を示す説明図である。
【図５】図５は、送信元装置１０１のハードウェア構成例を示すブロック図である。
【図６】図６は、実施の形態にかかる検証支援装置１０４のハードウェア構成例を示すブロック図である。
【図７】図７は、検証支援装置１０４の機能的構成例を示すブロック図である。
【図８】図８は、監視装置１０３のシミュレーション中における監視処理手順例を示すフローチャートである。
【図９】図９は、トランザクタ４００によるスナップショット取得処理手順例を示すフローチャートである。
【図１０】図１０は、検証支援装置１０４による検証支援処理手順を示すフローチャートである。
【図１１】図１１は、図１０に示した集計処理（ステップＳ１００１）の詳細な処理手順例を示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下に添付図面を参照して、この発明にかかる検証支援プログラム、検証支援装置、および検証支援方法の実施の形態を詳細に説明する。
【００１２】
＜検証支援例＞
図１は、本実施の形態にかかる検証支援例を示す説明図である。送信元装置１０１は、送信先装置１０２に対し、パケットを送信する送信元装置１０１である。送信元装置１０１が検証対象となる。送信元装置１０１は、たとえば、ＵＳＢ（Ｕｎｉｖｅｒｓａｌ  Ｓｅｒｉａｌ  Ｂｕｓ）ホストコントローラを有する通信装置である。また、送信元装置１０１は、トランザクションごとの一連のパケットＰをフレーム単位で送信する。送信先装置１０２は、送信元装置１０１から送信されてくるパケットを受信する通信装置である。送信先装置１０２は、たとえば、ＵＳＢデバイスである。
【００１３】
監視装置１０３は、送信元装置１０１と送信先装置１０２とのデータ通信を監視する装置である。具体的には、たとえば、監視装置１０３は、送信元装置１０１から送信されるフレームにおいてパケットがスキップされたことを検出する。各パケットには、どのトランザクションに所属しているかを識別可能なトランザクションＩＤ（ｉｄｅｎｔｉｆｉｃａｔｉｏｎ）が付与されている。トランザクションＩＤは、たとえば、連続番号とする。この場合、監視装置１０３は、スキップ前後のパケットのトランザクションＩＤを参照することで、どのトランザクションのパケットがスキップされたかを特定することができる。ここで、パケットがスキップされる原因には、たとえば、送信元装置１０１の動作が不正確でありエラーが発生する不当な場合と、通信プロトコルや送信元装置１０１に関する設計仕様で決められて発生する正当な場合と、がある。
【００１４】
検証支援装置１０４は、監視装置１０３がパケットのスキップを検出したときの送信元装置１０１内のレジスタ群の状態を示すスナップショット群から、パケットがスキップされる論理的なルールを探索する。具体的には、たとえば、検証支援装置１０４は、スナップショット群から、レジスタとその値の組み合わせごとの出現頻度を算出する。出現頻度としては、たとえば、出現確率や出現回数が採用される。以下、検証支援の動作手順について説明する。
【００１５】
（１）まず、送信元装置１０１は、監視装置１０３からの指示により、送信先装置１０２へのデータ通信に関するシミュレーションを実行する。そして、監視装置１０３は、データ通信を監視し、シミュレーション中に発生するパケットのスキップを検出する。監視装置１０３でパケットのスキップが検出される都度、スキップ発生時のレジスタ群の各レジスタの値を示すスナップショットが送信元装置１０１から得られる。
【００１６】
（２）（１）のシミュレーションが終了すると、検証支援装置１０４は、蓄積されたスナップショット群１０６を取得する。検証支援装置１０４は、スナップショット群１０６から、スキップ発生時でのレジスタとその値の組み合わせの出現回数を集計する。集計内容については、図３で後述する。検証支援装置１０４は、組み合わせごとに出現確率を算出する。そして、検証支援装置１０４は、スキップ時のレジスタの状態とスキップ時の出現確率とチェックボックスを含む選択画面１０５を表示する。これにより、ユーザは、スキップ発生時にどの組み合わせの状態がどのくらいの頻度で発生しているかを把握することができる。また、チェックボックスは、ユーザ操作によりレジスタの状態を選択させるためのインターフェース情報である。
【００１７】
（３）検証支援装置１０４は、ユーザ操作によりレジスタの状態の選択を受け付ける。選択されたチェックボックスにはチェックマークとなるレ点が入力されている。図１では、「Ａｃｔｉｖｅ  Ｂｉｔ＝０」、「Ｅｒｒｏｒ  Ｃｏｕｎｔｅｒ＝０」にレ点が入力されている。すなわち、ユーザは、エラー原因には成りえないレジスタの状態に対しレ点を入力することで、後述の論理関数によりエラーの対象外とすることができる。
【００１８】
（４）検証支援装置１０４は、論理関数１０７を生成する。論理関数１０７とは、制約条件を満たした場合は真であり、満たさなかった場合は偽とするアサーションである。検証支援装置１０４は、ユーザがチェックボックスで選択したレジスタとその値の組み合わせを制約条件とした論理関数１０７を生成する。たとえば、図１では、「Ａｃｔｉｖｅ  Ｂｉｔ＝０」、「Ｅｒｒｏｒ  Ｃｏｕｎｔｅｒ＝０」にレ点が入力されているため、「Ａｃｔｉｖｅ  Ｂｉｔ＝０」、「Ｅｒｒｏｒ  Ｃｏｕｎｔｅｒ＝０」を真とし、それ以外を偽とする論理関数１０７が生成される。
【００１９】
（５）生成された論理関数１０７は、監視装置１０３に付与される。監視装置１０３は、付与された論理関数１０７をスキップ発生時の制約条件として、再度（１）のシミュレーションを実行する。監視装置１０３は、制約条件を満たしている場合は、当該スキップは、通信プロトコルや送信元装置１０１に関する設計仕様で決められて発生する正当な処理であるとして、検出対象外とする。一方、制約条件を満たしていない場合は、（１）で説明したように、監視装置１０３は、スキップを検出する。これにより、当該スキップ検出時のスナップショットが取得されることになる。
【００２０】
図２は、再度（１）のシミュレーションを実行したことにより得られるスキップ時のレジスタの状態とスキップ時の出現確率とチェックボックスの選択画面１０５の表示例である。図１では、論理関数１０７により「Ａｃｔｉｖｅ  Ｂｉｔ＝０」および「Ｅｒｒｏｒ  Ｃｏｕｎｔｅｒ＝０」のときのスキップはスキップとして検出されない。
【００２１】
このため、（Ａ）のように、レジスタの状態は、「Ｅｒｒｏｒ  Ｃｏｕｎｔｅｒ＝１５」、「Ａｃｔｉｖｅ  Ｂｉｔ＝１」、「受信完了フラグ＝１」となる。ユーザは、この表示結果を見て、エラーカウンタの値が０でないときにスキップの出現確率が他のレジスタの状態に比べて高いことがわかる。このため、ユーザは、エラーカウンタを計数させる処理がスキップの原因であると推測することができる。
【００２２】
また、（Ｂ）のように、再度シミュレーションをしたときのレジスタの状態がエラーカウンタ≠０で、出現確率の総和が１００％になったとする。このような場合、エラーカウンタ≠０のときにのみスキップが発生したことを意味するため、ユーザは、エラーカウンタを計数させる処理がスキップの原因であると突き止めることができる。
【００２３】
また、（Ｃ）のように、再度シミュレーションをしたときのレジスタの状態が「Ａｃｔｉｖｅ  Ｂｉｔ＝１」のみで、出現確率が１００％になったとする。このような場合、「Ａｃｔｉｖｅ  Ｂｉｔ＝１」のときにのみスキップが発生したことを意味するため、ユーザは、アクティブビットの値を「１」にする処理がスキップの原因であると突き止めることができる。
【００２４】
このように、（１）〜（５）を繰り返すことにより、レジスタの状態は、ユーザにとって必要なものに絞り込まれる。たとえば、図１では、（３）において、「Ａｃｔｉｖｅ  Ｂｉｔ＝０」、「Ｅｒｒｏｒ  Ｃｏｕｎｔｅｒ＝０」にレ点が入力されている。したがって、次回のシミュレーションで、スキップ発生時に「Ａｃｔｉｖｅ  Ｂｉｔ＝０」または「Ｅｒｒｏｒ  Ｃｏｕｎｔｅｒ＝０」である場合には、スキップ検出対象外となる。そのため、スキップ検出されたレジスタの状態について出現回数の計数や出現確率の算出が実行される。これにより、ユーザは、スキップが発生する場合のルール、換言すれば、レジスタがどのような状態のときにスキップが発生するかを突き止めることができる。
【００２５】
＜レジスタの状態の集計例＞
図３は、レジスタの状態の集計例を示す説明図である。レジスタの状態の集計は、図１では、（２）で実行される。
【００２６】
（Ａ）上述したように、送信元装置１０１は、トランザクションごとの一連のパケットをフレーム単位で送信する。ここで、１フレームのデータ構造について説明する。フレームの先頭はＳＯＦ（Ｓｔａｒｔ  Ｏｆ  Ｆｒａｍｅ）である。ＳＯＦは、フレームの先頭を示すパケットである。Ｐ１〜Ｐｎは、トランザクション１〜ｎに対応するパケットである。パケットＰ１〜Ｐｎは、１フレーム中に１または複数回送信される。トランザクションごとのパケットＰｉは同一データでもよく異なるデータでもよい。図２では、先頭のフレームの２順目のパケットＰ１〜Ｐｎにおいて、パケットＰｉが何らかの原因でスキップされたことを示している。
【００２７】
（Ｂ）パケットＰｉのスキップが検出されると、スキップ検出時のレジスタの状態がスナップショットＳｉとして取得される。ここでは、送信元装置１０１のレジスタＲ１〜Ｒ３の状態として、レジスタＲ１の値「０」、レジスタＲ２の値「４」、レジスタＲ３の値「１」が取得されている。
【００２８】
（Ｃ）このあと、検証支援装置１０４は、レジスタ状態テーブル３００を用いて、レジスタごとに、レジスタの値の出現回数を計数する。ここでは、例として、レジスタＲ１を上述した「Ａｃｔｉｖｅ  Ｂｉｔ」、レジスタＲ２を上述した「Ｅｒｒｏｒ  Ｃｏｕｎｔｅｒ」、レジスタＲ３を受信完了フラグとする。
【００２９】
レジスタＲ１の値は「０」であるため、検証支援装置１０４は、レジスタＲ１の値「０」の出現回数を「５」から「６」にカウントアップする。また、レジスタＲ２の値は「４」であるため、検証支援装置１０４は、レジスタＲ２の値「４」の出現回数を「６」から「７」にカウントアップする。また、レジスタＲ３の値は「１」であるため、検証支援装置１０４は、レジスタＲ３の値「１」の出現回数を「４」から「５」にカウントアップする。これにより、スナップショットが得られる都度計数が実行されることになる。
【００３０】
＜システム構成例＞
図４は、本実施の形態にかかる検証支援システムのシステム構成例を示す説明図である。検証支援システムは、送信元装置１０１と、送信先装置１０２と、監視装置１０３と、トランザクタ４００と、検証支援装置１０４と、を有する。トランザクタ４００は、送信元装置１０１のレジスタ群の状態を示すスナップショットを取得する。具体的には、たとえば、トランザクタ４００は、監視装置１０３からのパケットのスキップ検出信号を受信したタイミングで、送信元装置１０１の各レジスタの値をスナップショットとして取得する。トランザクタ４００は、スキップ検出信号を受信する都度、スナップショットが得られ、スナップショット群１０６となる。なお、図３では、トランザクタ４００は、独立した装置として規定したが、監視装置１０３または検証支援装置１０４に組み込まれていてもよい。
【００３１】
＜送信元装置１０１のハードウェア構成例＞
図５は、送信元装置１０１のハードウェア構成例を示すブロック図である。送信元装置１０１は、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）５０１と、メモリ５０２と、ＵＳＢホストコントローラ５０３と、これらを接続するバス５０４と、を有する。ＣＰＵ５０１は、送信元装置１０１の全体の制御を司る。メモリ５０２は、ＣＰＵ５０１のワークエリアとして使用される。また、メモリ５０２は、各種データを記憶する。
【００３２】
ＵＳＢホストコントローラ５０３は、フレーム単位で時間を管理し、パケットの送信を制御する。また、ＵＳＢホストコントローラ５０３は、送信元装置１０１の状態を示すレジスタ群を有し、状態に応じた値を設定する。具体的には、たとえば、ＵＳＢホストコントローラ５０３は、上述したアクティブビットとして規定されたレジスタＲ１や、エラーカウンタとして規定されたレジスタＲ２や、受信完了フラグとして規定されたレジスタＲ３を有する。そして、ＵＳＢホストコントローラ５０３は、送信先装置１０２とのデータ通信中に、レジスタＲ１〜Ｒ３の値を書き換える。たとえば、ＵＳＢホストコントローラ５０３は、エラーが発生したら、レジスタＲ２の値を「１」に書き換え、エラーが発生しなくなったら再度、レジスタＲ２の値を「０」に書き換える。
【００３３】
＜検証支援装置１０４のハードウェア構成例＞
図６は、実施の形態にかかる検証支援装置１０４のハードウェア構成例を示すブロック図である。図６において、検証支援装置１０４は、ＣＰＵ６０１と、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）６０２と、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）６０３と、磁気ディスクドライブ（Ｈａｒｄ  Ｄｉｓｋ  Ｄｒｉｖｅ）６０４と、磁気ディスク６０５と、光ディスクドライブ６０６と、光ディスク６０７と、ディスプレイ６０８と、Ｉ／Ｆ（Ｉｎｔｅｒｆａｃｅ）６０９と、キーボード６１０と、マウス６１１と、スキャナ６１２と、プリンタ６１３と、を備えている。また、各構成部はバス６００によってそれぞれ接続されている。
【００３４】
ここで、ＣＰＵ６０１は、検証支援装置１０４の全体の制御を司る。ＲＯＭ６０２は、ブートプログラムなどのプログラムを記憶している。ＲＡＭ６０３は、ＣＰＵ６０１のワークエリアとして使用される。磁気ディスクドライブ６０４は、ＣＰＵ６０１の制御にしたがって磁気ディスク６０５に対するデータのリード／ライトを制御する。磁気ディスク６０５は、磁気ディスクドライブ６０４の制御で書き込まれたデータを記憶する。
【００３５】
光ディスクドライブ６０６は、ＣＰＵ６０１の制御にしたがって光ディスク６０７に対するデータのリード／ライトを制御する。光ディスク６０７は、光ディスクドライブ６０６の制御で書き込まれたデータを記憶したり、光ディスク６０７に記憶されたデータをコンピュータに読み取らせたりする。
【００３６】
ディスプレイ６０８は、カーソル、アイコンあるいはツールボックスをはじめ、文書、画像、機能情報などのデータを表示する。このディスプレイ６０８は、たとえば、液晶ディスプレイ、プラズマディスプレイなどを採用することができる。
【００３７】
インターフェース（以下、「Ｉ／Ｆ」と略する。）６０９は、通信回線を通じてＬＡＮ（Ｌｏｃａｌ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、ＷＡＮ（Ｗｉｄｅ  Ａｒｅａ  Ｎｅｔｗｏｒｋ）、インターネットなどのネットワーク６１４に接続され、このネットワーク６１４を介して他の装置に接続される。そして、Ｉ／Ｆ６０９は、ネットワーク６１４と内部のインターフェースを司り、外部装置からのデータの入出力を制御する。Ｉ／Ｆ６０９には、たとえばモデムやＬＡＮアダプタなどを採用することができる。
【００３８】
キーボード６１０は、文字、数字、各種指示などの入力のためのキーを備え、データの入力をおこなう。また、タッチパネル式の入力パッドやテンキーなどであってもよい。マウス６１１は、カーソルの移動や範囲選択、あるいはウィンドウの移動やサイズの変更などをおこなう。ポインティングデバイスとして同様に機能を備えるものであれば、トラックボールやジョイスティックなどであってもよい。
【００３９】
スキャナ６１２は、画像を光学的に読み取り、検証支援装置１０４内に画像データを取り込む。なお、スキャナ６１２は、ＯＣＲ（Ｏｐｔｉｃａｌ  Ｃｈａｒａｃｔｅｒ  Ｒｅａｄｅｒ）機能を持たせてもよい。また、プリンタ６１３は、画像データや文書データを印刷する。プリンタ６１３には、たとえば、レーザプリンタやインクジェットプリンタを採用することができる。なお、光ディスクドライブ６０６、光ディスク６０７、ディスプレイ６０８、キーボード６１０、マウス６１１、スキャナ６１２、およびプリンタ６１３の少なくともいずれか１つは、なくてもよい。
【００４０】
＜検証支援装置１０４の機能的構成例＞
図７は、検証支援装置１０４の機能的構成例を示すブロック図である。検証支援装置１０４は、取得部７０１と、抽出部７０２と、算出部７０３と、出力部７０４と、受付部７０５と、生成部７０６と、を有する。取得部７０１〜生成部７０６は、具体的には、たとえば、図６に示したＲＯＭ６０２、ＲＡＭ６０３、磁気ディスク６０５、光ディスク６０７などの記憶装置に記憶されたプログラムをＣＰＵ６０１に実行させることにより、または、Ｉ／Ｆ６０９により、その機能を実現する。
【００４１】
取得部７０１は、第１の装置から第２の装置へのデータ通信中に指定順序とは異なる順序でパケットが送信されたことが検出された場合に、第１の装置内のレジスタ群の状態を示すスナップショットを取得する。具体的には、たとえば、取得部７０１は、送信元装置１０１から送信先装置１０２へのデータ通信中に監視装置１０３においてパケットのスキップが検出された場合に、送信元装置１０１内のレジスタ群の状態を示すスナップショットを取得する。
【００４２】
図１〜図４に示した例の場合、監視装置１０３がパケットのスキップを検出すると、監視装置１０３はトランザクタ４００に対しスキップ検出信号を送信する。トランザクタ４００は、監視装置１０３からのスキップ検出信号を受信すると、送信元装置１０１内のＵＳＢコントローラにアクセスして送信元装置１０１内のレジスタ群からレジスタごとにレジスタに関する識別情報と値との組み合わせを抽出する。レジスタごとのレジスタに関する識別情報と値との組み合わせが１回のスキップでのスナップショットとなる。そして、取得部７０１は、シミュレーション中にトランザクタ４００から出力されたスナップショット群１０６を取得することになる。
【００４３】
抽出部７０２は、取得部７０１によって取得されたスナップショットに含まれているレジスタ群の各々のレジスタに関する識別情報と値との組み合わせを抽出する。具体的には、たとえば、抽出部７０２は、スナップショット群１０６の各スナップショットから、レジスタに関する識別情報と値との組み合わせを抽出する。たとえば、図３に示したように、抽出部７０２は、スナップショットＳｉからレジスタＲ１のレジスタ名「Ｒ１」と値「０」の組み合わせ、レジスタＲ２のレジスタ名「Ｒ２」と値「４」の組み合わせ、レジスタＲ３のレジスタ名「Ｒ３」と値「１」の組み合わせを抽出する。
【００４４】
算出部７０３は、抽出部７０２によって抽出された各組み合わせの抽出回数に基づいて各組み合わせの出現頻度を算出する。具体的には、算出部７０３は、組み合わせごとに出現回数を計数し、出現頻度を算出する。ここで、出現頻度とは、単に出現回数でもよく、出現確率でもよい。出現確率の場合、算出部７０３は、全組み合わせの総出現回数を分母とし、各組み合わせの出現回数を分子とすることにより、出現確率を算出する。
【００４５】
たとえば、図３の（Ｃ）が最終的な計数結果になった場合、分母になる総出現回数は、２４回（＝６＋３＋２＋７＋１＋５）である。分子はそれぞれ、レジスタＲ１の値「０」の「６回」、レジスタＲ１の値「１」の「３回」、レジスタＲ２の値「０」の「２回」、レジスタＲ２の値「４」の「７回」、レジスタＲ２の値「２」の「１回」、レジスタＲ３の値「１」の「５回」となる。これにより、レジスタの値ごとに、出現確率が算出される。算出部７０３は、シミュレーションの終了後に算出処理を実行するが、シミュレーション中に算出処理を実行してもよい。
【００４６】
出力部７０４は、各組み合わせについて、組み合わせと当該組み合わせに対応する出現頻度とを出力する。具体的には、たとえば、出力部７０４は、組み合わせと当該組み合わせに対応する出現頻度とを、ディスプレイ６０８に表示出力したり、プリンタ６１３に印刷出力したり、他の装置、たとえば、監視装置１０３に送信したりする。ディスプレイ６０８に表示出力する場合、出力部７０４は、図１の（２）に示したような選択画面１０５を表示する。図１の（２）の場合、さらに、組み合わせの選択入力を受け付けるインターフェース情報の一例としてチェックボックスが表示されている。インターフェース情報は、チェックボックスに限らずラジオボタンなど入力装置からの操作入力で選択できるインターフェース情報であればよい。
【００４７】
受付部７０５は、インターフェース情報から少なくともいずれか１つの組み合わせについての選択入力を受け付ける。具体的には、たとえば、図１の（３）に示したように、受付部７０５は、入力装置からの操作入力により、チェックボックスにレ点の入力を受け付ける。
【００４８】
生成部７０６は、受付部７０５によって選択入力が受け付けられた少なくともいずれか１つの組み合わせについては、指定順序とは異なる順序でのパケットの送信とみなさない旨を示す制約条件を有する論理関数を生成する。具体的には、たとえば、生成部７０６は、図１の（４）に示した論理関数１０７を生成する。論理関数１０７は、図１の（３）で選択入力された組み合わせについて、スキップが発生した場合であってもスキップの検出対象外とする制約条件を規定する。
【００４９】
生成部７０６によって制約条件が生成された場合、出力部７０４は、生成された制約条件を監視装置１０３に送信する。監視装置１０３は、生成部７０６から送信されてきた制約条件を次回以降のシミュレーションに適用する。たとえば、図１の（４）の論理関数１０７の例では、「Ａｃｔｉｖｅ  Ｂｉｔ＝０」または「Ｅｒｒｏｒ  Ｃｏｕｎｔｅｒ＝０」の場合がスキップの検出対象外となる。
【００５０】
したがって、次回以降のシミュレーションで、スキップ発生時のレジスタＲ１、Ｒ２の状態が「Ａｃｔｉｖｅ  Ｂｉｔ＝０」または「Ｅｒｒｏｒ  Ｃｏｕｎｔｅｒ＝０」である場合には、監視装置１０３は、スキップ検出対象外となり、このときのスキップについては、監視装置１０３からスキップ検出信号が発行されず、スナップショットが得られないことになる。このように、監視装置１０３は、ユーザによって選択されたレジスタの状態を次回以降のシミュレーションから除外することができる。
【００５１】
＜監視装置１０３の監視処理手順＞
図８は、監視装置１０３のシミュレーション中における監視処理手順例を示すフローチャートである。まず、監視装置１０３は、送信元装置１０１から送信先装置１０２へのデータ通信のシミュレーションが終了しているか否かを判断する（ステップＳ８０１）。終了していない場合（ステップＳ８０１：Ｎｏ）、監視装置１０３は、図３の（Ａ）に示したように、パケットのスキップが発生したか否かを判断する（ステップＳ８０２）。
【００５２】
スキップが発生していない場合（ステップＳ８０２：Ｎｏ）、ステップＳ８０１に戻る。スキップが発生した場合（ステップＳ８０２：Ｙｅｓ）、監視装置１０３は、検証支援装置１０４からの制約条件があるか否かを判断する（ステップＳ８０３）。制約条件がない場合（ステップＳ８０３：Ｎｏ）、ステップＳ８０８に移行する。
【００５３】
一方、制約条件がある場合（ステップＳ８０３：Ｙｅｓ）、監視装置１０３は、レジスタの状態の取得要求をトランザクタ４００に送信する（ステップＳ８０４）。監視装置１０３は、トランザクタ４００からレジスタ群の状態が受信できなかった場合（ステップＳ８０５：Ｎｏ）、ステップＳ８０１に戻る。一方、受信できた場合（ステップＳ８０５：Ｙｅｓ）、監視装置１０３は、受信したレジスタ群の状態を参照して、制約条件を満たしているか否かを判断する（ステップＳ８０６）。
【００５４】
満たしている場合（ステップＳ８０６：Ｙｅｓ）、発生したスキップは検出対象外となるため、監視装置１０３は、トランザクタ４００に検出対象外信号を送信して（ステップＳ８０７）、ステップＳ８０１に戻る。一方、制約条件を満たさない場合（ステップＳ８０６：Ｎｏ）、ステップＳ８０８に移行する。
【００５５】
ステップＳ８０８では、監視装置１０３は、スキップを検出したことを示すスキップ検出信号をトランザクタ４００に送信して（ステップＳ８０８）、ステップＳ８０１に戻る。そして、ステップＳ８０１において、シミュレーションが終了した場合（ステップＳ８０１：Ｙｅｓ）、監視装置１０３は一連の処理を終了する。このように、監視装置１０３は、制約条件の有無や制約条件の遵守または違反に応じて、トランザクタ４００によるスナップショットの取得を制御することができる。
【００５６】
＜トランザクタ４００のスナップショット取得処理手順＞
図９は、トランザクタ４００によるスナップショット取得処理手順例を示すフローチャートである。まず、トランザクタ４００は、監視装置１０３からステップＳ８０４での取得要求を受信したか否かを判断する（ステップＳ９０１）。受信していない場合（ステップＳ９０１：Ｎｏ）、ステップＳ９０１に戻る。一方、受信した場合（ステップＳ９０１：Ｙｅｓ）、トランザクタ４００は、送信元装置１０１のＵＳＢホストコントローラ５０３にアクセスしてレジスタ群の状態を取得する（ステップＳ９０２）。
【００５７】
そして、トランザクタ４００は、取得要求のレスポンスとして、取得したレジスタ群の状態を監視装置１０３に送信する（ステップＳ９０３）。このあと、トランザクタ４００は、監視装置１０３からの信号の受信を待ち受ける（ステップＳ９０４）。受信した信号がスキップ検出信号である場合（ステップＳ９０４：スキップ検出）、トランザクタ４００は、ステップＳ９０２で取得したレジスタ群の状態をスナップショットとして、検証支援装置１０４がアクセス可能な記憶装置に保存する（ステップＳ９０５）。そして、ステップＳ９０１に戻る。また、受信した信号が検出対象外信号である場合（ステップＳ９０４：対象外）、トランザクタ４００は、ステップＳ９０２で取得したレジスタ群の状態を消去して（ステップＳ９０６）、ステップＳ９０１に戻る。
【００５８】
このように、トランザクタ４００は、検出すべきスキップが発生したときの送信元装置１０１のレジスタ群の状態をスナップショットとして取得することができる。
【００５９】
＜検証支援処理手順＞
図１０は、検証支援装置１０４による検証支援処理手順を示すフローチャートである。検証支援装置１０４は、まず、図３の（Ｂ），（Ｃ）に示したような集計処理を実行する（ステップＳ１００１）。集計処理（ステップＳ１００１）の詳細な処理手順については図１１で説明する。集計処理（ステップＳ１００１）により、検証支援装置１０４は、図１の（２）に示したようなレジスタの状態ごとの出現頻度を得ることができる。
【００６０】
検証支援装置１０４は、集計処理（ステップＳ１１０１）のあと、図１の（２）に示したように、レジスタの状態ごとに出現頻度を算出し（ステップＳ１００２）、表示出力する（ステップＳ１００３）。このあと、検証支援装置１０４は、ユーザによる入力装置からの操作により、レジスタの状態の選択入力を受け付けて、確定入力を待ち受ける（ステップＳ１００４：Ｎｏ）。確定入力があった場合（ステップＳ１００４：Ｙｅｓ）、検証支援装置１０４は、選択項目であるレジスタの状態を特定して（ステップＳ１００５）、論理関数１０７を生成する（ステップＳ１００６）。そして、検証支援装置１０４は、生成した論理関数１０７を出力する（ステップＳ１００７）。これにより、検証支援装置１０４は、一連の処理を終了する。
【００６１】
このように、検証支援装置１０４は、シミュレーションが終了する都度、論理関数１０７を生成して監視装置１０３に提供することができる。したがって、ユーザは、スキップが発生する場合のルール、換言すれば、レジスタがどのような状態のときにスキップが発生するかを絞り込むことができる。
【００６２】
図１１は、図１０に示した集計処理（ステップＳ１００１）の詳細な処理手順例を示すフローチャートである。まず、検証支援装置１０４は、スナップショット群１０６の中から未選択のスナップショットがあるか否かを判断する（ステップＳ１１０１）。未選択のスナップショットがある場合（ステップＳ１１０１：Ｙｅｓ）、検証支援装置１０４は、未選択のスナップショットを１つ選択する（ステップＳ１１０２）。そして、検証支援装置１０４は、選択したスナップショットの中から未選択のレジスタがあるか否かを判断する（ステップＳ１１０３）。
【００６３】
未選択のレジスタがない場合（ステップＳ１１０３：Ｎｏ）、ステップＳ１１０１に戻る。未選択のレジスタがある場合（ステップＳ１１０３：Ｙｅｓ）、検証支援装置１０４は、未選択のレジスタを１つ選択し（ステップＳ１１０４）、レジスタ状態テーブル３００に登録済みか否かを判断する（ステップＳ１１０５）。登録済みである場合（ステップＳ１１０５：Ｙｅｓ）、ステップＳ１１０７に移行する。一方、登録済みでない場合（ステップＳ１１０５：Ｎｏ）、検証支援装置１０４は、選択レジスタの項目をレジスタ状態テーブル３００に登録して（ステップＳ１１０６）、ステップＳ１１０７に移行する。
【００６４】
ステップＳ１１０７では、検証支援装置１０４は、選択レジスタの値をスナップショットから抽出し（ステップＳ１１０７）、登録済みか否かを判断する（ステップＳ１１０８）。登録済みである場合（ステップＳ１１０８：Ｙｅｓ）、ステップＳ１１１０に移行する。一方、登録済みでない場合（ステップＳ１１０８：Ｎｏ）、検証支援装置１０４は、選択レジスタの値とその出現回数Ｎの初期値（Ｎ＝０）を登録して（ステップＳ１１０９）、ステップＳ１１１０に移行して一連の処理を終了する。
【００６５】
ステップＳ１１１０では、検証支援装置１０４は、選択レジスタについて抽出した値の出現回数Ｎをインクリメントし（ステップＳ１１１０）、ステップＳ１１０１に戻る。また、ステップＳ１１０１において、未選択のスナップショットがない場合（ステップＳ１１０１：Ｎｏ）、ステップＳ１００２に移行する。
【００６６】
このように、集計処理（ステップＳ１００１）では、検証支援装置１０４は、シミュレーション中に取得されたスナップショット群１０６から、レジスタの値の出現回数をレジスタの値ごとに集計することができる。したがって、検証支援装置１０４は、どのレジスタがどのような値のときにスキップが何回発生したかを計数することができる。
【００６７】
このように、本実施の形態によれば、検証支援装置１０４は、スキップ発生時のレジスタの値とその出現回数から、レジスタの値ごとに、出現頻度を算出して、出力する。したがって、シミュレーション中にスキップが発生したときに送信元装置１０１がどのような状態であったかを把握することができる。また、このような状態が、レジスタの値ごとに出現頻度として得られる。
【００６８】
ここで、あるレジスタのある値がスキップの正当な処理であることをユーザが理解している場合には、ユーザはそのレジスタの値と出現頻度について選択入力することで、検証支援装置１０４は論理関数１０７を生成する。これにより、次回以降のシミュレーションにおいて選択入力されたレジスタの値については出現回数が計数されない。したがって、監視装置１０３によるシミュレーションと、生成された論理関数１０７の監視装置１０３への付与と、が繰り返されることにより、検証支援装置１０４は、エラーの発生原因となるスキップに絞り込んで、エラー発生原因となるパケットがスキップされる論理的なルールを突き止めることができる。
【００６９】
また、上述した実施の形態では、送信先装置１０２を１台の装置を例に挙げて説明したが、送信先装置１０２は複数台でもよい。この場合、送信元装置１０１のＵＳＢホストコントローラ５０３は、送信先装置１０２のアドレスも専用のレジスタで逐次管理することになる。この場合、スキップが発生すると、送信先装置１０２のアドレスもレジスタの値として読み出され、レジスタ状態テーブル３００に登録されることになる。したがって、検証支援装置１０４は、送信先装置１０２ごとにエラー原因となる処理を突き止めることができる。
【００７０】
以上説明したように、検証支援プログラム、検証支援装置、および検証支援方法によれば、パケットがスキップされる論理的なルールの探索の容易化を図ることができるという効果を奏する。
【符号の説明】
【００７１】
１０１  送信元装置
１０２  送信先装置
１０３  監視装置
１０４  検証支援装置
１０５  選択画面
１０６  スナップショット群
１０７  論理関数
３００  レジスタ状態テーブル
４００  トランザクタ
７０１  取得部
７０２  抽出部
７０３  算出部
７０４  出力部
７０５  受付部
７０６  生成部
【図１】
0005821596.tif 000002
【図２】
0005821596.tif 000003
【図３】
0005821596.tif 000004
【図４】
0005821596.tif 000005
【図５】
0005821596.tif 000006
【図６】
0005821596.tif 000007
【図７】
0005821596.tif 000008
【図８】
0005821596.tif 000009
【図９】
0005821596.tif 000010
【図１０】
0005821596.tif 000011
【図１１】
0005821596.tif 000012