(57)【特許請求の範囲】
【請求項１】
デバッグ装置（１）であって、
デジタル回路（２）から動作信号の変化をイベントとして検出するプローブ回路（１０）と、
前記イベントを符号化してイベント符号化データを生成する符号化回路（２０）と、
前記イベント符号化データにおける今回のイベント（今回イベントＩＤ）、及び直前のイベント（前回イベントＩＤ）と該今回のイベントとの間の時間間隔（Ｔ）を検出し、前記今回イベントＩＤ、前記前回イベントＩＤ及び前記時間間隔（Ｔ）を含むイベント遷移データを生成する検出部（４３）と、
前記イベント遷移データをルールとして記録するルールＲＡＭ（４４）と、
前記検出部によって新たに生成されるイベント遷移データと前記ルールＲＡＭから読み出したイベント遷移データ（以下「ルール」という。）との比較処理によって比較結果を生成し、学習フェーズにおいては前記比較結果に基づいて前記ルールＲＡＭへの前記イベント遷移データの記録の可否を判定し、運用フェーズにおいては前記比較結果に基づいて前記デジタル回路の正常動作又は異常動作を判定するチェック部（４５）と
を備えるデバッグ装置。
【請求項２】
前記学習フェーズにおいて、前記チェック部は、前記比較処理を繰り返して実行し、前記比較処理の実行回数に基づく値Ｒを第１のカウンタ（４７）に記憶させ、前記比較処理における前記イベント遷移データと前記ルールとの相違回数に基づく値Ｗを第２のカウンタ（４８）に記憶させ、前記第１のカウンタの値に対する前記第２のカウンタの値の割合が閾値以下となる場合に前記ルールが適切であるとして前記学習フェーズを終了するように構成されている（Ｓ１９、Ｓ２０）、請求項１に記載のデバッグ装置。
【請求項３】
前記運用フェーズにおいて、前記チェック部は、前回イベントＩＤと今回イベントＩＤの組合せが前記ルールに存在しない場合（Ｓ１２、Ｎｏ）、又は、前回イベントＩＤと今回イベントＩＤの組合せが前記ルールに存在するが該組合せに対する時間間隔が前記ルールと不一致である場合に（Ｓ１４、Ｎｏ）、前記デジタル回路の異常動作を特定する（Ｓ１８）ように構成されている、請求項２に記載のデバッグ装置。
【請求項４】
前記ルールＲＡＭに記録されたルールにおいて、同一の前回イベントＩＤと複数の今回イベントＩＤとの組み合わせ、又は、同一の前回イベントＩＤと同一の今回イベントＩＤと複数の時間間隔（Ｔ）の組み合わせのルールが存在する場合に、前記比較処理は、ルールの分岐を構成する全てのルールと前記検出部によって新たに生成されるイベント遷移データとの比較を実行する、請求項２又は３に記載のデバッグ装置。
【請求項５】
前記イベント遷移データが、前記時間間隔を示すインターバルフィールド（８６）を含み、
前記チェック部は、前記比較処理において、前記時間間隔が相対的に短い場合には前記インターバルフィールドの全ビットについての比較に基づいて前記デジタル回路の正常動作又は異常動作を特定し、前記時間間隔が相対的に長い場合には前記インターバルフィールドの下位ビットを丸め処理して得られる残余のビットについての比較に基づいて前記デジタル回路の正常動作又は異常動作を特定するように構成されている、請求項２から４のいずれか一項に記載のデバッグ装置。
【請求項６】
デバッグ装置（１）により実行されるデバッグ方法であって、
前記デバッグ装置のプローブ回路（１０）により、デジタル回路から動作信号の変化をイベントとして検出するステップと、
前記デバッグ装置の符号化回路（２０）により、前記イベントを符号化してイベント符号化データを生成するステップと、
前記デバッグ装置の検出部（４３）により、前記イベント符号化データにおける今回のイベント（今回イベントＩＤ）、及び直前のイベント（前回イベントＩＤ）と該今回のイベントとの間の時間間隔（Ｔ）を検出し、前記今回イベントＩＤ、前記前回イベントＩＤ及び前記時間間隔（Ｔ）を含むイベント遷移データを生成するステップと、
前記イベント遷移データに基づいて、ルールＲＡＭに記録されたイベント遷移データ（以下「ルール」という。）を読み出すステップと、
前記デバッグ装置のチェック部（４５）により、新たに検出されるイベント遷移データと前記ルールとの比較処理によって比較結果を生成し、学習フェーズにおいては前記比較結果に基づいて前記ルールＲＡＭへのイベント遷移データの記録の可否を判定し、運用フェーズにおいては前記比較結果に基づいて前記デジタル回路の正常動作又は異常動作を判定するステップと
を備えるデバッグ方法。
【請求項７】
前記学習フェーズにおいて、前記判定するステップは、前記比較処理を繰り返して実行し、前記比較処理の実行回数に基づく値Ｒを第１のカウンタ（４７）に記憶させ、前記比較処理における前記イベント遷移データと前記ルールとの相違回数に基づく値Ｗを第２のカウンタ（４８）に記憶させ、前記第１のカウンタの値に対する前記第２のカウンタの値の割合が閾値以下となる場合に前記ルールが適切であるとして前記学習フェーズを終了するステップを含む（Ｓ１９、Ｓ２０）、請求項６に記載のデバッグ方法。
【請求項８】
前記運用フェーズにおいて、前記判定するステップは、前回イベントＩＤと今回イベントＩＤの組合せが前記ルールに存在しない場合（Ｓ１２、Ｎｏ）、又は、前回イベントＩＤと今回イベントの組合せが前記ルールに存在するが該組合せに対する時間間隔が前記ルールと不一致である場合に（Ｓ１４、Ｎｏ）、前記デジタル回路の異常動作を特定するステップ（Ｓ１８）を含む、請求項７に記載のデバッグ方法。
【請求項９】
前記ルールＲＡＭに記録されたルールにおいて、同一の前回イベントＩＤと複数の今回イベントＩＤとの組み合わせ、又は、同一の前回イベントＩＤと同一の今回イベントＩＤと複数の時間間隔（Ｔ）の組み合わせのルールが存在する場合に、前記比較処理は、ルールの分岐を構成する全てのルールと前記検出部によって新たに生成されるイベント遷移データとの比較を実行する、請求項７又は８に記載のデバッグ方法。
【請求項１０】
前記イベント遷移データが、前記時間間隔を示すインターバルフィールド（８６）を含み、
前記比較処理は、前記時間間隔が相対的に短い場合には前記インターバルフィールドの全ビットについての比較に基づいて前記デジタル回路の正常動作又は異常動作を特定し、前記時間間隔が相対的に長い場合には前記インターバルフィールドの下位ビットを丸め処理して得られる残余のビットについての比較に基づいて前記デジタル回路の正常動作又は異常動作を特定するステップを含む、請求項７から９のいずれか一項に記載のデバッグ方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、デバック装置及びデバッグ方法に関する。
【背景技術】
【０００２】
特許文献１は、デバッグのための論理検証装置を開示する。この論理検証装置は、基板上に実装され、動的に内部回路を書き換え可能なＦＰＧＡと、基板上に実装され、ＦＰＧＡに対応してＦＰＧＡの内部回路を動的に再構成するデータとなるＲＴＬ及びラッパーＲＴＬからなるコンフィグレーションデータが格納されるメモリと、基板上にＦＰＧＡに対応して実装され、ＦＰＧＡに一意に対応するＰＬＤ識別情報をＦＰＧＡに対して出力する保持部と、基板上にＦＰＧＡに対応して実装され、ＰＬＤ識別情報に基づくＦＰＧＡによる判定結果を出力する出力部とを備える。コンフィグレーションデータのラッパーＲＴＬは、コンフィグレーションデータのＲＴＬに一意に対応するＲＴＬ識別情報を有すると共に、ＲＴＬ識別情報とＰＬＤ識別情報とを比較して相違の有無を判定する機能を有する。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００９−１９９４２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上記従来の技術ではＦＰＧＡと同じ基板上に実装された回路においてＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）情報とＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）情報とが逐次比較され、装置構成が複雑化してしまう。一方、ＦＰＧＡなどのデジタル回路には周期的な信号の入出力で動作する回路が多く、この周期性の利用によって装置構成を簡素化できる可能性がある。したがって、そのような周期的動作を実行するＦＰＧＡなどのデジタル回路を簡素な構成で効率的にデバッグする装置及び方法が望まれる。
【０００５】
そこで、本発明は、デジタル回路を簡素な形態で効率的にデバッグするデバック装置及びデバック方法を提供することを目的とする。
【課題を解決するための手段】
【０００６】
本発明には、以下の態様が含まれる。
〔態様１〕
デバッグ装置（１）であって、
デジタル回路（２）から動作信号の変化をイベントとして検出するプローブ回路（１０）と、
前記イベントを符号化してイベント符号化データを生成する符号化回路（２０）と、
前記イベント符号化データにおける今回のイベント（今回イベントＩＤ）、及び直前のイベント（前回イベントＩＤ）と該今回のイベントとの間の時間間隔（Ｔ）を検出し、前記今回イベントＩＤ、前記前回イベントＩＤ及び前記時間間隔（Ｔ）を含むイベント遷移データを生成する検出部（４３）と、
前記イベント遷移データをルールとして記録するルールＲＡＭ（４４）と、
前記検出部によって新たに生成されるイベント遷移データと前記ルールＲＡＭから読み出したイベント遷移データ（以下「ルール」という。）との比較処理によって比較結果を生成し、学習フェーズにおいては前記比較結果に基づいて前記ルールＲＡＭへの前記イベント遷移データの記録の可否を判定し、運用フェーズにおいては前記比較結果に基づいて前記デジタル回路の正常動作又は異常動作を判定するチェック部（４５）と
を備えるデバッグ装置。
〔態様２〕
前記学習フェーズにおいて、前記チェック部は、前記比較処理を繰り返して実行し、前記比較処理の実行回数に基づく値Ｒを第１のカウンタ（４７）に記憶させ、前記比較処理における前記イベント遷移データと前記ルールとの相違回数に基づく値Ｗを第２のカウンタ（４８）に記憶させ、前記第１のカウンタの値に対する前記第２のカウンタの値の割合が閾値以下となる場合に前記ルールが適切であるとして前記学習フェーズを終了するように構成されている（Ｓ１９、Ｓ２０）、態様１に記載のデバッグ装置。
〔態様３〕
前記運用フェーズにおいて、前回イベントＩＤと今回イベントＩＤの組合せが前記ルールに存在しない場合（Ｓ１２、Ｎｏ）、又は、前回イベントＩＤと今回イベントＩＤの組合せが前記ルールに存在するが該組合せに対する時間間隔が前記ルールと不一致である場合に（Ｓ１４、Ｎｏ）、前記チェック部が前記デジタル回路の異常動作を特定する（Ｓ１８）ように構成されている、態様２に記載のデバッグ装置。
〔態様４〕
前記ルールＲＡＭに記録されたルールにおいて、同一の前回イベントＩＤと複数の今回イベントＩＤとの組み合わせ、同一の前回イベントＩＤと同一の今回イベントＩＤと複数の時間間隔（Ｔ）の組み合わせ、又は、複数の前回イベントＩＤと同一の今回イベントＩＤとの組み合わせのルールが存在する場合に、前記比較処理は、ルールの分岐を構成する全てのルールと前記検出部によって新たに生成されるイベント遷移データとの比較を実行する、態様２又は３に記載のデバッグ装置。
〔態様５〕
前記イベント遷移データが、前記時間間隔を示すインターバルフィールド（８６）を含み、
前記チェック部は、前記比較処理において、前記時間間隔が相対的に短い場合には前記インターバルフィールドの全ビットについての比較に基づいて前記デジタル回路の正常動作又は異常動作を特定し、前記時間間隔が相対的に長い場合には前記インターバルフィールドの下位ビットを丸め処理して得られる残余のビットについての比較に基づいて前記デジタル回路の正常動作又は異常動作を特定するように構成されている、態様２から４のいずれか一項に記載のデバッグ装置。
〔態様６〕
デバッグ装置（１）により実行されるデバッグ方法であって、
前記デバッグ装置のプローブ回路（１０）により、デジタル回路から動作信号の変化をイベントとして検出するステップと、
前記デバッグ装置の符号化回路（２０）により、前記イベントを符号化してイベント符号化データを生成するステップと、
前記デバッグ装置の検出部（４３）により、前記イベント符号化データにおける今回のイベント（今回イベントＩＤ）、及び直前のイベント（前回イベントＩＤ）と該今回のイベントとの間の時間間隔（Ｔ）を検出し、前記今回イベントＩＤ、前記前回イベントＩＤ及び前記時間間隔（Ｔ）を含むイベント遷移データを生成するステップと、
前記イベント遷移データに基づいて、ルールＲＡＭに記録されたイベント遷移データ（以下「ルール」という。）を読み出すステップと、
前記デバッグ装置のチェック部（４５）により、新たに検出されるイベント遷移データと前記ルールとの比較処理によって比較結果を生成し、学習フェーズにおいては前記比較結果に基づいて前記ルールＲＡＭへのイベント遷移データの記録の可否を判定し、運用フェーズにおいては前記比較結果に基づいて前記デジタル回路の正常動作又は異常動作を判定するステップと
を備えるデバッグ方法。
〔態様７〕
前記学習フェーズにおいて、前記判定するステップは、前記比較処理を繰り返して実行し、前記比較処理の実行回数に基づく値Ｒを第１のカウンタ（４７）に記憶させ、前記比較処理における前記イベント遷移データと前記ルールとの相違回数に基づく値Ｗを第２のカウンタ（４８）に記憶させ、前記第１のカウンタの値に対する前記第２のカウンタの値の割合が閾値以下となる場合に前記ルールが適切であるとして前記学習フェーズを終了するステップを含む（Ｓ１９、Ｓ２０）、態様６に記載のデバッグ方法。
〔態様８〕
前記運用フェーズにおいて、前記判定するステップは、前回イベントＩＤと今回イベントＩＤの組合せが前記ルールに存在しない場合（Ｓ１２、Ｎｏ）、又は、前回イベントＩＤと今回イベントの組合せが前記ルールに存在するが該組合せに対する時間間隔が前記ルールと不一致である場合に（Ｓ１４、Ｎｏ）、前記デジタル回路の異常動作を特定するステップ（Ｓ１８）を含む、態様７に記載のデバッグ方法。
〔態様９〕
前記ルールＲＡＭに記録されたルールにおいて、同一の前回イベントＩＤと複数の今回イベントＩＤとの組み合わせ、同一の前回イベントＩＤと同一の今回イベントＩＤと複数の時間間隔（Ｔ）の組み合わせ、又は、複数の前回イベントＩＤと同一の今回イベントＩＤとの組み合わせのルールが存在する場合に、前記比較処理は、ルールの分岐を構成する全てのルールと前記検出部によって新たに生成されるイベント遷移データとの比較を実行する、態様７又は８に記載のデバッグ方法。
〔態様１０〕
前記イベント遷移データが、前記時間間隔を示すインターバルフィールド（８６）を含み、
前記比較処理は、前記時間間隔が相対的に短い場合には前記インターバルフィールドの全ビットについての比較に基づいて前記デジタル回路の正常動作又は異常動作を特定し、前記時間間隔が相対的に長い場合には前記インターバルフィールドの下位ビットを丸め処理して得られる残余のビットについての比較に基づいて前記デジタル回路の正常動作又は異常動作を特定するステップを含む、態様７から９のいずれか一項に記載のデバッグ方法。
【発明の効果】
【０００７】
本発明によると、デジタル回路を簡素な形態で効率的にデバッグするデバック装置及びデバック方法が実現される。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施形態によるデバッグ装置のブロック図である。
【図２Ａ】本発明の実施形態によるデバック装置で使用されるデータフォーマットの一例を示す図である。
【図２Ｂ】本発明の実施形態によるデバック装置で使用されるデータフォーマットの一例を示す図である。
【図３】本発明の実施形態における波形表示例を示す図である。
【図４】本発明の実施形態によるデバック装置で使用されるデータフォーマットの他の例を示す図である。
【図５】本発明の実施形態によるデバッグ方法の学習フェーズの処理を説明するフローチャートである。
【図６】本発明の実施形態によるデバッグ方法の運用フェーズの処理を説明するフローチャートである。
【発明を実施するための形態】
【０００９】
［実施形態］
図１に、本発明の実施形態によるデバッグ装置１のブロック図を示す。デバッグ装置１は、デバッグ対象となるデジタル回路２からの動作信号の入力を受け、表示装置３にデバッグ処理の結果を出力する。
【００１０】
なお、本実施形態では、デジタル回路２はＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）であるので、以下、デジタル回路２をＦＰＧＡ２ともいう。ＦＰＧＡ２は、ある特定のシーケンスを反復して動作し得る。したがって、デバッグ装置１は、そのシーケンスの周期性に着目して学習フェーズにおいてデバッグ用のルールを作成及び学習し、その後の運用フェーズにおいて当該ルールに基づいてデバッグ処理を実行する。デバッグ装置１は、ハードウェア、又はソフトウェア、もしくはそれらの組合せからなり、例えば、デジタル回路２が実装されたＦＰＧＡや、パーソナルコンピュータ（ＰＣ）に組込み可能である。表示装置３は、パーソナルコンピューター（ＰＣ）などである。
【００１１】
デバッグ装置１は、プローブ回路１０、符号化回路２０、マルチプレクサ３０、処理回路４０及び入出力回路５０を備える。処理回路４０は、ハードウェアによって実現されてもよいし、デバッグ装置１にインストールされたソフトウェアによって実現されてもよい。
【００１２】
プローブ回路１０は、複数のプローブＰ０〜Ｐｍを含む。プローブＰ０〜Ｐｍの各々は、ＦＰＧＡ２の対応する動作点に接続され、当該動作点の電圧である動作信号を受ける。そして、プローブＰ０〜Ｐｍの各々は、各動作信号の変化をイベントとして検出する。なお、本開示において、プローブＰ０〜Ｐｍを総称して又はいずれか１つ以上を代表してプローブＰともいう。プローブ回路１０で検出されたイベントのデータは、符号化回路２０に出力される。
【００１３】
イベントの検出は、限定されるものではないが、動作信号が１ビット信号の場合における動作信号の立上りエッジ及び立下りエッジの一方若しくは両方に基づいて行われ、又は、動作信号がマルチビット信号の場合における動作信号の値に基づいて行われる。
【００１４】
例えば、動作信号が１ビット信号でかつイベントが立上りエッジ及び立下りエッジの一方に基づく場合、イベントは、１回の立上りエッジの発生、所定回数の立上りエッジの発生、１回の立下りエッジの発生、又は所定回数の立下りエッジの発生と定義され得る。
【００１５】
動作信号が１ビット信号でかつイベントが立上りエッジ及び立下りエッジの双方に基づく場合、イベントは、１回の立上りエッジのスキップ、１回の立下りエッジのスキップ、所定回数の立上りエッジのスキップ、又は所定回数の立下りエッジのスキップと定義され得る。
【００１６】
動作信号がマルチビット信号の場合、イベントは、マルチビット信号値が比較値と一致したこと又は一致しなかったことと定義され得る。あるいは、動作信号がマルチビット信号の場合、イベントは、マルチビット信号値が上限値以上若しくは未満となったこと、下限値以上若しくは未満となったこと、又は所定範囲内となったこと若しくは所定範囲外となったことと定義され得る。
【００１７】
符号化回路２０は、複数のグループエンコーダＧＥ０〜ＧＥｎを含む。本実施形態では、グループエンコーダＧＥ０は、プローブＰ０〜Ｐ７に対応する。例えば、グループ数（ｎ＋１）が８であり、各グループエンコーダＧＥが８個のプローブＰに対応する場合、プローブ数（ｍ＋１）は２５６となる。グループエンコーダＧＥ０〜ＧＥｎの各々は、イベントを符号化してイベントデータを生成する。なお、本開示において、グループエンコーダＧＥ０〜ＧＥｎを総称して又はいずれか１つを代表してグループエンコーダＧＥという。
【００１８】
マルチプレクサ３０は、グループエンコーダＧＥ０〜ＧＥｎによって符号化されたイベントデータを多重化し、多重化されたイベントデータを処理回路４０に出力する。なお、グループ数（ｎ＋１）が１の場合には、マルチプレクサ３０は省略されてもよい。
【００１９】
処理回路４０は、処理部４１及び記憶部４２を含む。処理部４１は、検出部４３、ルールＲＡＭ（Random Access Memory）４４、及びチェック部４５を含む。なお、処理部４１は、検出部４３、ルールＲＡＭ４４、及びチェック部４５以外の一般的な機能（例えば、タイマ機能、通信制御機能など）も含む。例えば処理部４１は、ＣＰＵであってもよい。また、検出部４３とチェック部４５の機能はそれぞれ厳密に別れている必要はなく、両者が他方の機能を兼ねるものであってもよい。また、処理部４１は検出部４３とチェック部４５の機能を包含するものとして説明する。
【００２０】
記憶部４２はデータなどを一時的に記憶するＲＡＭなどの各種メモリを含む。記憶部４２のＲＡＭは、読出しカウンタ４７（第１のカウンタ）及び書込みカウンタ４８（第２のカウンタ）を含む。
【００２１】
検出部４３は、イベントデータにおける所定のイベントの間の時間間隔を検出し、時間間隔を含むイベント遷移データを生成する。詳細には後述するように、イベント遷移データは、前回のイベント（例えば、直前のイベント）を検出したプローブＰのＩＤ（以下「前回イベントＩＤ」という。）、今回のイベントを検出したプローブＰのＩＤ（以下「今回イベントＩＤ」という。）、及び前回のイベントと今回のイベントとの間の時間間隔Ｔを含む。なお、前回イベントＩＤを「遷移元イベント」といい、今回イベントＩＤを「遷移先イベント」とも称する。なお、イベント遷移データは、前回イベントＩＤ、今回イベントＩＤ、及び前回のイベントと今回のイベントとの間の時間間隔Ｔに加え、前々回のイベントＩＤ及び前々回のイベントと前回のイベントとの間の時間間隔を含むようにしてもよい。
【００２２】
例えば、プローブＰ５が時刻ｔ１においてイベントを検出し、その後の時刻ｔ２においてプローブＰ０がイベントを検出した場合、時刻ｔ２において生成されるイベント遷移データは、前回イベントＩＤ（Ｐ５）、今回イベントＩＤ（Ｐ０）、及び時間間隔Ｔ（＝ｔ２−ｔ１）を含む。
【００２３】
図２Ａに、イベント遷移データのフォーマットの一例を示す。イベント遷移データは、グループＩＤフィールド８０（例えば、４ビット）、前回イベントＩＤフィールド８２、今回イベントＩＤフィールド８４（例えば、４〜８ビット）、及びインターバルフィールド８６（例えば、２４ビット）を含む。
【００２４】
グループＩＤフィールド８０は、グループエンコーダＧＥを識別するグループＩＤを示す。今回イベントＩＤフィールド８４は、イベントを検出したプローブＰを識別するイベントＩＤを示す。前回イベントＩＤフィールド８２は、前回にイベントを検出したプローブＰを識別するイベントＩＤを示す。
【００２５】
インターバルフィールド８６は、イベントの発生時刻の時間間隔Ｔを示すフィールドである。すなわち、インターバルフィールド８６は、前回イベントＩＤの検出時刻と今回イベントＩＤの検出時刻の差分（時間間隔Ｔ）を示す。
【００２６】
例えば、プローブＰ５が時刻ｔ１にイベントを検出し、その後の時刻ｔ２にプローブＰ０がイベントを検出した場合、グループＩＤフィールド８０はグループエンコーダＧＥ０のＩＤを示し、前回イベントＩＤフィールド８２はプローブＰ５のＩＤを示し、今回イベントＩＤフィールド８４はプローブＰ０のＩＤを示し、インターバルフィールド８６はｔ２−ｔ１の値を示す。
【００２７】
ルールＲＡＭ４４は、検出部４３によって生成されたイベント遷移データをルールとして記録する。本発明では、ルールＲＡＭ４４に記録されたイベント遷移データを単に「ルール」とも称する。ルールＲＡＭ４４のアドレスは、グループＩＤと前回イベントＩＤから計算される。一例として、グループＩＤと前回イベントＩＤの値を連結して、そのままルールＲＡＭ４４のアドレスとして使用できる。この場合、ルールＲＡＭ４４に書き込むデータの例を図２Ｂに示す。グループＩＤと前回イベントＩＤで一対一に対応するアドレスに格納するので、書き込むデータは今回イベントＩＤフィールド８４とインターバルフィールド８６のみで良い。有効ビット８８が０の場合にはそのイベント遷移データが無効であることが示され、有効ビットが１の場合にはそのイベント遷移データが有効であることが示される。
【００２８】
なお、ある遷移元イベントに対して発生し得る遷移先イベント、すなわち、ある前回イベントＩＤに対して発生し得る今回イベントＩＤのことを分岐ともいう。また、ある前回イベントに対して発生し得る今回イベントの総数を状態数といい、そのうちのルールに記憶される状態数のことを分岐数Ｎという（状態数＝分岐数Ｎであり得る）。例えば、ルールに記憶される「前回イベントＩＤ→今回イベントＩＤ」の組合せとして、「Ｐ５→Ｐ０」、「Ｐ５→Ｐ２」、「Ｐ５→Ｐ４」及び「Ｐ５→Ｐ６」の４種類がある場合、分岐数Ｎは４となる。ルールＲＡＭに記録可能な分岐数Ｎの上限は、ユーザ設定などによって予め設定される。これにより、ルールＲＡＭ４４は、グループ数×プローブ数×分岐数Ｎに相当するアドレス数のイベント遷移データに関するルールを記憶することができる。この場合、ルールＲＡＭ４４をアクセスする時のアドレスは、グループＩＤと前回イベントＩＤを連結した数値に分岐数Ｎを乗じて計算することができる。
【００２９】
ルールＲＡＭ４４のアドレスの計算にはいくつかの方法が考えられ、グループＩＤと今回イベントＩＤを連結した数値に分岐数Ｎを乗じた結果を使う構成、もしくは、グループＩＤ、前回イベントＩＤ、今回イベントＩＤ、および時間間隔Ｔのうち任意のデータ並びにその他の情報（限定されないが、例えばデジタル回路１の動作状態を示すデータや、イベントの発生回数等のデータ）をもとに演算して求める方法も構成可能である。これらの場合はルールＲＡＭ４４に記録するルールデータのフォーマットやアルゴリズムの一部が変更になる可能性がある。限定されないが、アドレスの計算の例として、グループＩＤとそれに関連した係数とをテーブルに予め書き込んでおき、グループＩＤの値で該テーブルを参照し、読みだした対応する係数を使用して、アドレスを計算するようにしてもよい。
【００３０】
チェック部４５は、検出部４３によって新たに検出及び生成されるイベント遷移データとルールＲＡＭ４４から読み出したルールとを比較して比較結果を出力する。
【００３１】
具体的には、チェック部４５は、新たに生成されたイベント遷移データにおけるグループＩＤと前回イベントＩＤとを連結した数値に分岐数Ｎを乗じて計算した値をアドレスとし、そのアドレスから連続したＮ個のルールをルールＲＡＭ４４から読み出す。新たに生成されたイベント遷移データにおける今回イベントＩＤ及び時間間隔Ｔと、Ｎ個の全てのルール中の今回イベントＩＤ及び時間間隔Ｔとを比較する。ルールＲＡＭ４４をアクセスするアドレスとグループＩＤと前回イベントＩＤは一対一に対応するため、グループＩＤと前回イベントＩＤの一致も同時に比較していることになる。
【００３２】
前回イベントＩＤと今回イベントＩＤ及び時間間隔Ｔの双方が、新たに生成されたイベント遷移データとルールＲＡＭ４４から読み出されたルールとの間で一致する場合には比較結果は「一致」を示し、それ以外の場合には比較結果は「不一致」を示す。ここで、ある前回イベントに対していずれかの分岐（複数の今回イベント）について比較結果が一致を示す場合、チェック部４５は一致を示す比較結果を生成する。一方、ある前回イベントに対していずれの分岐（今回イベント）についても比較結果が不一致を示す場合、チェック部４５は不一致を示す比較結果を生成する。なお、時間間隔Ｔの比較については後述する。
【００３３】
学習フェーズでは、チェック部４５は、上記比較結果に基づいてルールＲＡＭ４４へのイベント遷移データの書き込みの可否を判定する。不一致の場合、新たに生成されたイベント遷移データがルールＲＡＭ４４に記録されていないことを意味するので、新たに生成されたイベント遷移データをルールＲＡＭ４４に書き込む。新たに生成されたイベント遷移データにおけるグループＩＤと前回イベントＩＤとを連結した数値に分岐数Ｎを乗じて計算した値をアドレスとし、そのアドレスから連続したＮ個のアドレスのうち、有効ビットが０になっているアドレスにイベント遷移データを書き込む。図２Ｂに示すとおり、今回イベントＩＤ、インターバル（時間間隔Ｔ）、及び有効ビット（値は１）のデータを含むイベント遷移データ（ルール）がルールＲＡＭ４４に書き込まれる。
【００３４】
具体的には、チェック部４５は、比較処理を繰り返し実行し、比較回数に基づく値Ｒを読出しカウンタ４７に記憶させ（記憶値を増分し）、比較処理におけるイベント遷移データとルールとの相違回数に基づく値Ｗを書込みカウンタ４８に記憶させる（記憶値を増分する）。そして、チェック部４５は、値Ｒに対する値Ｗの割合が閾値以下である場合にルールが適切であると判定して学習フェーズを終了させる。
【００３５】
一方、チェック部４５は、値Ｒに対する値Ｗの割合が閾値を超える場合にルールが不適であることを判定する。例えば、値Ｒを１０００、閾値を５とすることができるが、両数値はこれに限定されない。ルールが不適となる場合とは、例えば、設定された分岐数Ｎが、現実に発生する状態数よりも小さい場合が挙げられる。あるいは、詳細を後述するように時間間隔Ｔの比較における誤差の許容範囲が狭すぎる場合が挙げられる。この場合、ユーザは、より大きな分岐数Ｎを再設定し、又は誤差の許容範囲を拡げ、学習フェーズを再度実行することができる。
【００３６】
運用フェーズでは、チェック部４５は、比較結果に基づいてＦＰＧＡ２の正常動作又は異常動作を判定する。すなわち、チェック部４５は、ＦＰＧＡ２の運用中において、比較結果が一致を示し続ける場合にはＦＰＧＡ２の動作は正常であると判定し、比較結果が不一致を示した場合にはＦＰＧＡ２の動作に異常があると判定する。
【００３７】
ここで、時間間隔Ｔの比較には種々の手法が用いられ得る。説明の便宜上、新たに検出されるイベント遷移データのインターバルフィールドを検出インターバルフィールドといい、ルールＲＡＭ４４から読み出されるインターバルフィールドをルールインターバルフィールドという。
【００３８】
第１の手法は、検出インターバルフィールドの全ビットとルールインターバルフィールドの全ビットとを比較するものである。検出インターバルフィールドの全ビットとルールインターバルフィールドの全ビットとが同一である場合には比較結果は一致を示し、それ以外の場合には比較結果は不一致を示す。
【００３９】
第２の手法は、検出インターバルフィールドの下位ビット及びルールインターバルフィールドの下位ビットをそれぞれ丸め処理し、実質的に残余の上位ビット同士を比較するものである。検出インターバルフィールド及びルールインターバルフィールドの双方の残余の上位ビットが同一である場合には比較結果は一致を示し、それ以外の場合には比較結果は不一致を示す。これは、ＦＰＧＡ２は同じ動作を反復していてもその動作に若干のばらつきが発生する可能性があるため、そのばらつきを許容するものである。なお、本開示において、丸め処理は、四捨五入、切捨て、又は切上げなどである。
【００４０】
第３の手法は、検出インターバルフィールドの値とルールインターバルフィールドの値との間の誤差を判定するものである。検出インターバルフィールドの値とルールインターバルフィールドの値の差分が所定範囲内である場合に、比較結果は一致を示し、それ以外の場合には比較結果は不一致を示す。この手法も、ＦＰＧＡ２の動作におけるばらつきを誤差として許容するものである。
【００４１】
第４の手法は、検出インターバルフィールドの値及びルールインターバルフィールドの値の大きさに応じて比較対象ビットを変更するものである。双方のインターバルフィールドの値が比較的小さい場合（時間間隔Ｔが比較的短い場合）には、第１の手法と同様に、検出インターバルフィールドの全ビットとルールインターバルフィールドの全ビットとが比較される。そして、検出インターバルフィールドの全ビットとルールインターバルフィールドの全ビットとが同一である場合には比較結果は一致を示し、それ以外の場合には比較結果は不一致を示す。一方、双方のインターバルフィールドの値が比較的大きい場合（時間間隔Ｔが比較的長い場合）には、第２の手法と同様に、検出インターバルフィールドの下位ビット及びルールインターバルフィールドの下位ビットがそれぞれ丸め処理され、残りの上位ビット同士が比較される。そして、検出インターバルフィールド及びルールインターバルフィールドの双方の残余の上位ビットが同一である場合には比較結果は一致を示し、それ以外の場合には比較結果は不一致を示す。
【００４２】
具体的には、第４の手法では、インターバルフィールド８６は、仮数部ビット及び指数部ビットからなる浮動小数点数で構成される。基数は、例えば２であり、インターバルフィールド８６は符号部ビットを含んでいてもよいが、本実施形態では正の値のみが扱われるので、符号部ビットは省略され得る。なお、チェック部４５は、仮数部ビットをオーバフローする部分に対して丸め処理を行い、検出インターバルフィールド及びルールインターバルフィールドの仮数部及び指数部をそれぞれ比較する。検出インターバルフィールドの仮数部及び指数部とルールインターバルフィールドの仮数部及び指数部とがそれぞれ同一である場合には比較結果は一致を示し、それ以外の場合には比較結果は不一致を示す。
【００４３】
この第４の手法は、時間間隔Ｔが短い場合にはＦＰＧＡ２内部の局所的な信号変化を検出し、時間間隔Ｔが長い場合にはソフトウェアも介在するようなシステムレベルの信号変化でのばらつきを検出するものである。すなわち、時間間隔Ｔが比較的短い場合にはＦＰＧＡ２内部の局所的な信号変化を正確に検出し、時間間隔Ｔが比較的長い場合にはＦＰＧＡ２を含むシステムレベルの信号変化を少ない処理負荷で検出することができる。このように、桁又は単位が大きく異なる広範囲の時間間隔に対しても適切な比較処理が実行され得る。
【００４４】
入出力回路５０は、外部装置との信号の入出力を行うためのインターフェース回路である。例えば、入出力回路５０は、外部装置（例えば、デバッグ装置１が実装されたＰＣのＣＰＵなど）からイネーブル信号などの制御信号の入力又は解除を受け付ける。制御信号は、学習フェーズの開始又は終了、運用フェーズの開始又は終了などを処理回路４０に対して指示する信号である。また、入出力回路５０は、マルチプレクサ３０から処理回路４０への入力信号又は処理回路４０からの出力信号から特定の信号（例えば、特定のイベントを示す信号）を検出することもできる。これにより、入出力回路５０は、特定のイベントに応じて、学習フェーズの開始又は終了、運用フェーズの開始又は終了などを処理回路４０に対して指示し得る。また、入出力回路５０は、処理回路４０からの出力信号を受けて、表示装置３に表示出力信号を出力する。例えば、図３に示すように、表示装置３には、学習フェーズ又は運用フェーズにおいて処理部４１（チェック部４５）によって処理される波形チャート、判定結果などが表示される。
【００４５】
図３に、波形チャートの表示例を示す。図３では、プローブＰ０〜Ｐ７の周期的なイベント遷移が例示される。ここで、ルールＲＡＭ４４には、Ｐ７→Ｐ２が時間間隔Ｔ１で発生することが書き込まれている（分岐数Ｎ＝１）。
【００４６】
時刻ｔ１１→ｔ１２においては、ルール通りにＰ７→Ｐ２の遷移が時間間隔Ｔ１で発生し、時刻ｔ２１→ｔ２２においてもルール通りにＰ７→Ｐ２の遷移が時間間隔Ｔ１で発生している。したがって、チェック部４５は、比較結果の一致を判定する。一方、時刻ｔ３１→ｔ３２においては、Ｐ７→Ｐ５の遷移が発生している。これは、ルールＲＡＭ４４に書き込まれていない遷移であり、チェック部４５は、比較結果の不一致を判定する（エラー表示Ｅｒ１）。
【００４７】
また、時刻ｔ４１→ｔ４２においては、Ｐ７→Ｐ２の遷移が発生しているが時間間隔はＴ２（≠Ｔ１）となっている。これも、ルールＲＡＭ４４に書き込まれていない遷移であり、チェック部４５は、比較結果の不一致を判定する（エラー表示Ｅｒ２）。なお、表示装置３への表示態様は、図３に示すものに限られない。
【００４８】
図４に、ルールＲＡＭ４４におけるルールデータのフォーマットの他の例を示す。ルールデータは、予約フィールド８１、モードフィールド８３、今回イベントＩＤフィールド８４、インターバルフィールド８６及び有効ビット８８を含む。すなわち、本例のルールデータには、図２Ｂのルールデータに対して、モードフィールド８３（例えば、２ビット）が追加されている。他のフィールドは、図２のものと同様である。
【００４９】
チェック部４５は、モードフィールド８３によってルール一致モード又はルール不一致モードを切り替えることができる。モードフィールド８３がルール一致モードを示す場合、検出部４３によって生成されるイベント遷移データがルールＲＡＭ４４におけるルールに一致する場合にトリガを出力する。一方、チェック部４５は、モードフィールド８３がルール不一致モードを示す場合、検出部４３によって生成されるイベント遷移データがルールＲＡＭ４４におけるルールに一致しない場合にトリガを出力する。このトリガに応じて、入出力回路５０を介して表示装置３に対応の比較結果が表示される。
【００５０】
図５及び図６に、本実施形態によるデバッグ方法のフローチャートを示す。本デバッグ方法は、図５に示す学習フェーズの処理及び図６に示す運用フェーズの処理を含む。ただし、学習フェーズの処理と運用フェーズの処理とは独立して実行されてもよいし、学習フェーズの処理（ステップＳ２３）の直後に運用フェーズの処理（ステップＳ３１）が連続して実行されてもよい。
【００５１】
まず、図５の学習フェーズの処理を説明する。
【００５２】
ステップＳ１において、処理部４１（検出部４３）が、新たなイベントが検出されたか否かを判定する。イベントが検出されると（ステップＳ１、Ｙｅｓ）、処理はステップＳ２に進む。
【００５３】
ステップＳ２において、処理部４１（検出部４３）が、イベント（今回イベントＩＤ）と前回イベントからの時間間隔Ｔを検出する。
【００５４】
ステップＳ３において、処理部４１（検出部４３）が、前回イベントＩＤとステップＳ２で検出した今回イベントＩＤとを組み合わせて、前回イベントＩＤ、今回イベントＩＤ、及びこれらの時間間隔Ｔを含むイベント遷移データを生成する。
【００５５】
ステップＳ４において、処理部４１が、読出しカウンタ４７の値である読出し回数Ｒ（初期値＝０）を増分する。
【００５６】
ステップＳ５において、処理部４１が、読出し回数Ｒが規定値に達したか否かを判定する。読出し回数Ｒが規定値に達していない場合（ステップＳ５、Ｎｏ）、処理はステップＳ６に進み、読出し回数Ｒが規定値に達した場合（ステップＳ５、Ｙｅｓ）、処理はステップＳ１９に進む。
【００５７】
ステップＳ６において、処理部４１は、書き込み先のルールＲＡＭ４４のアドレスを決定する。書き込み先のルールＲＡＭ４４のアドレスは、前述のとおりグループＩＤと前回イベントＩＤから計算される。
【００５８】
ステップＳ７において、処理部４１は、ステップＳ６で決定したルールＲＡＭ４４のアドレスからルールとしてのイベント遷移データ（ルール）を読み出す。
【００５９】
ステップＳ８において、処理部４１は、ステップＳ７で読みだしたイベント遷移データ（ルール）中の有効ビット８８が１（有効）であるか否かを判定する。有効ビット８８が０（無効）である場合（ステップＳ８、Ｎｏ）、このデータには今回イベントＩＤと時間間隔Ｔが書き込まれていない。すなわち、前回イベントＩＤから今回イベントＩＤへの遷移は初めて検出されたことになる（なお、初回ループでは有効ビット８８は必ず０となる）。そして、処理は、ステップＳ９に進む。
【００６０】
ステップＳ９において、処理部４１は、ルールＲＡＭ４４において、ステップＳ６で決定したルールＲＡＭ４４のアドレスに対応するイベント遷移データ（ルール）に対して、前回イベントＩＤ、今回イベントＩＤ及び時間間隔Ｔを書き込み、その有効ビット８８を１に設定する。
【００６１】
ステップ１０において、処理部４１は、書込みカウンタ４８の値である書込み回数Ｗ（初期値＝０）を増分し、処理はステップＳ１に戻る。
【００６２】
一方、ステップＳ８において、ステップＳ７で読みだしたイベント遷移データ（ルール）中の有効ビット８８が１（有効）である場合、このイベント遷移データには今回イベントＩＤと時間間隔Ｔが既に書き込まれている。すなわち、前回イベントＩＤから今回イベントＩＤへの遷移は以前に検出されていることになる。そして、処理は、ステップＳ１１に進む。
【００６３】
ステップＳ１１において、処理部４１（チェック部４５）は、ステップＳ３において生成されたイベント遷移データのイベントＩＤ（今回イベントＩＤ及び前回イベントＩＤ）と、ステップＳ７で読みだしたイベント遷移データ（ルール）のイベントＩＤ（ルールＲＡＭ４４に書き込まれていた今回イベントＩＤ及び前回イベントＩＤ）とを比較する。
【００６４】
ステップＳ１２において、処理部４１（チェック部４５）はステップＳ１１における比較の結果が一致を示すか否かを判定する。ステップＳ１２において、比較結果が一致を示す場合（ステップＳ１２、Ｙｅｓ）、処理はステップＳ１３に進む。一方、比較結果が不一致を示す場合（ステップＳ１２、Ｎｏ）、処理はステップＳ１５に進む。
【００６５】
ステップＳ１３において、処理部４１（チェック部４５）は、ステップＳ３において生成されたイベント遷移データの時間間隔Ｔと、ステップＳ７で読みだしたイベント遷移データ（ルール）の時間間隔Ｔ（ルールＲＡＭ４４に書き込まれていた時間間隔Ｔ）とを比較する。
【００６６】
ステップＳ１４において、処理部４１（チェック部４５）はステップＳ１１における比較の結果が一致を示すか否かを判定する。ステップＳ１４において、比較結果が一致を示す場合（ステップＳ１４、Ｙｅｓ）、処理はステップＳ１に戻る。一方、比較結果が不一致を示す場合（ステップＳ１４、Ｎｏ）、処理はステップＳ１５に進む。
【００６７】
ステップＳ１５において、処理部４１は、比較の繰返し回数である繰返し回数Ｒｐ（初期値＝１）を増分する。
【００６８】
ステップＳ１６において、処理部４１は、繰返し回数Ｒｐが分岐数Ｎ以下であるか否かを判定する。繰返し回数Ｒｐが分岐数Ｎ以下である場合（ステップＳ１６、Ｙｅｓ）、処理はステップＳ１７に進む。一方、繰返し回数Ｒｐが分岐数Ｎを超える場合（ステップＳ１６、Ｎｏ）、処理はステップＳ１８に進む。
【００６９】
ステップＳ１７において、処理部４１（チェック部４５）は、ルールＲＡＭ４４における読出しアドレスを増分し、処理はステップＳ７に戻る。
【００７０】
ステップＳ１８において、処理部４１（チェック部４５）は、エラーの発生を特定し、例えば、入出力回路５０を介して表示装置３にエラー表示を行う。
【００７１】
ステップＳ１９において、処理部４１（チェック部４５）は、読出し回数Ｒに対する書込み回数Ｗの割合が閾値以下であるか否か（すなわち、読出し回数Ｒに対する書込み回数Ｗの割合）を判定する。該割合が閾値以下である場合（ステップＳ１９、Ｙｅｓ）、処理部４１（チェック部４５）は、ルールの精度が充分に高くなったと判断して、すなわち、不一致率が充分に低くなったと判断して、ステップＳ２０にて学習フェーズの処理を終了する。
【００７２】
一方、書込み回数Ｗが閾値を超える場合（ステップＳ１９、Ｎｏ）、処理部４１（チェック部４５）はルール抽出が不十分であると判定し、ステップＳ２１において読出しカウンタ４７の読出し回数Ｒ及び書込みカウンタ４８の書込み回数Ｗをクリアする（Ｒ＝０、Ｗ＝０に設定）。その後、処理はステップＳ１に戻る。
【００７３】
次に、図６の運用フェーズの処理について説明する。
【００７４】
ステップＳ３１において、処理部４１（検出部４３）が、新たなイベントが検出されたか否かを判定する。イベントが検出されないと（ステップＳ３１、Ｎｏ）、処理はステップＳ３２に進まない。
【００７５】
ステップＳ３２において、処理部４１（検出部４３）がイベント（今回イベントＩＤ）及び前回イベントからの時間間隔Ｔを検出する。
【００７６】
ステップＳ３３において、処理部４１（検出部４３）が、前回イベントＩＤとステップＳ３２で検出した今回イベントＩＤとを組み合わせて、前回イベントＩＤ、今回イベントＩＤ、及びこれらの時間間隔Ｔを含むイベント遷移データを生成する。
【００７７】
ステップＳ３４において、処理部４１は、読み取り先のルールＲＡＭ４４のアドレスを決定する。ルールＲＡＭ４４のアドレスは、前述のとおりグループＩＤと前回イベントＩＤから計算される。
【００７８】
ステップＳ３５において、処理部４１は、ステップＳ３４で決定したルールＲＡＭ４４のアドレスからイベント遷移データ（ルール）を読み出す。
【００７９】
ステップＳ３６において、処理部４１（チェック部４５）は、ステップＳ３５で読みだしたイベント遷移データ（ルール）の有効ビット８８が１（有効）であるか否かを判定する。有効ビット８８が１（有効）である場合（ステップＳ３６、Ｙｅｓ）、処理はステップＳ３７に進み、０（無効）である場合（ステップＳ３６、Ｎｏ）、処理はステップＳ４４に進む。
【００８０】
ステップＳ４４において、処理部４１は異常動作の発生を特定する。すなわち、処理部４１は、ＦＰＧＡ２における信号変化について誤動作を検出したことになり、例えば、入出力回路５０を介して表示装置３にエラー表示を行う。
【００８１】
ステップＳ３７〜Ｓ４３はそれぞれ、図５のステップＳ１１〜１７における処理と同様である。
【００８２】
ステップＳ３７において、処理部４１（チェック部４５）は、ステップＳ３３において生成されたイベント遷移データのイベントＩＤ（今回イベントＩＤ及び前回イベントＩＤ）と、ステップＳ３５で読みだしたイベント遷移データ（ルール）のイベントＩＤ（ルールＲＡＭ４４に書き込まれていた今回イベントＩＤ及び前回イベントＩＤ）とを比較する。
【００８３】
ステップＳ３８において、処理部４１（チェック部４５）はステップＳ３７における比較の結果が一致を示すか否かを判定する。ステップＳ３８において、比較結果が一致を示す場合（ステップＳ３８、Ｙｅｓ）、処理はステップＳ３９に進む。一方、比較結果が不一致を示す場合（ステップＳ３８、Ｎｏ）、処理はステップＳ４１に進む。
【００８４】
ステップＳ３９において、処理部４１（チェック部４５）は、ステップＳ３３において生成されたイベント遷移データの時間間隔Ｔと、ステップＳ３５で読みだしたイベント遷移データ（ルール）の時間間隔Ｔ（ルールＲＡＭ４４に書き込まれていた時間間隔Ｔ）とを比較する。
【００８５】
ステップＳ４０において、処理部４１（チェック部４５）はステップＳ３９における比較の結果が一致を示すか否かを判定する。ステップＳ４０において、比較結果が一致を示す場合（ステップＳ４０、Ｙｅｓ）、処理はステップＳ３１に戻る。一方、比較結果が不一致を示す場合（ステップＳ４０、Ｎｏ）、処理はステップＳ４１に進む。
【００８６】
ステップＳ４１において、処理部４１は、比較の繰返し回数である繰返し回数Ｒｐ（初期値＝１）を増分する。
【００８７】
ステップＳ４２において、処理部４１は、繰返し回数Ｒｐが分岐数Ｎ以下であるか否かを判定する。繰返し回数Ｒｐが分岐数Ｎ以下である場合（ステップＳ４２、Ｙｅｓ）、処理はステップＳ４３に進む。一方、繰返し回数Ｒｐが分岐数Ｎを超える場合（ステップＳ４２、Ｎｏ）、処理はステップＳ４４に進む。
【００８８】
ステップＳ４３において、処理部４１（チェック部４５）は、ルールＲＡＭ４４における読出しアドレスを増分し、処理はステップＳ３５に戻る。
【００８９】
なお、図５及び６の学習フェーズ及び運用フェーズにおいて、Ｎ個のルールＲＡＭ４４が順次処理される構成を示したが、Ｎ個のルールＲＡＭ４４が同時に読み出されてそれらに対する比較が並列に実行されてもよい。また、学習フェーズ又は運用フェーズは、所定の制御信号（イネーブル信号など）が入出力回路５０を介して処理回路４０に入力されたことに応じて、又は所定の入力信号（所定のイベントなど）がマルチプレクサ３０から処理回路４０に入力されたことに応じて、開始又は終了され得るようにしてもよい。あるいは、運用フェーズは、学習フェーズの終了に応じて開始されてもよい。
【００９０】
以上のように、本実施形態のデバッグ装置１は、デジタル回路（ＦＰＧＡ）２から動作信号の変化をイベントとして検出するプローブ回路１０と、イベントを符号化してイベント符号化データを生成する符号化回路２０と、イベント符号化データにおける所定のイベントの間の時間間隔を検出し、前回イベントＩＤ、今回イベントＩＤ及びそれらの時間間隔Ｔを含むイベント遷移データを生成する検出部４３と、イベント遷移データをルールとして記録するルールＲＡＭ４４と、検出部４３によって新たに検出されるイベント遷移データとルールとの比較処理Ｐ１０によって比較結果を生成し、学習フェーズにおいては比較結果に基づいてルールＲＡＭ４４へのルールの記録の可否を判定し、運用フェーズにおいては比較結果に基づいてデジタル回路２の正常動作又は異常動作を判定するチェック部４５とを備える。
【００９１】
このように、デバッグ装置１では、イベント符号化データにおける所定のイベントの間の時間間隔が検出され、イベント遷移データをルールＲＡＭ４４に記録し、新たに検出されるイベント遷移データとルールとが比較されて比較結果が生成される。そして、学習フェーズにおいては比較結果に基づいてルールＲＡＭ４４へのルールの記録の可否が判定され、運用フェーズにおいては比較結果に基づいてデジタル回路２の正常動作又は異常動作が判定される。このような構成により、デジタル回路２を簡素な形態で効率的にデバッグするデバック装置１及びデバック方法が実現される。特に、周期的動作を実行するＦＰＧＡなどにおいて、デバック処理が効率化される。
【００９２】
また、学習フェーズにおいて、チェック部４５は、比較処理Ｐ１０を繰り返して実行し、比較処理Ｐ１０の実行回数に基づく値Ｒを読出しカウンタ４７に記憶させ、比較処理Ｐ１０におけるイベント遷移データとルールとの相違回数に基づく値Ｗを書込みカウンタ４８に記憶させ、値Ｒに対する値Ｗの割合が閾値以下となる場合にルールが適切であるとして学習フェーズを終了する。このように、学習フェーズにおいて比較結果の不一致率（又は一致率）に応じてルールの妥当性が判定されるので、運用フェーズにおける正常動作／異常動作の判定精度が向上する。
【００９３】
また、運用フェーズにおいて、検出部４３によって検出された前回イベント（遷移元イベント）と今回イベント（遷移先イベント）の組合せがルールに存在しない場合、又は検出部４３によって検出された前回イベント（遷移元イベント）と今回イベント（遷移先イベント）の組合せがルールに存在する場合であってその組合せに対する時間間隔がルールと不一致である場合に、チェック部４５がデジタル回路２の異常動作を特定する。このように、前回イベント（遷移元イベント）と今回イベント（遷移先イベント）の組合せの存否及び／又は時間間隔の一致の有無に応じて異常動作が判定されるので、デバッグ処理が効率化される。
【００９４】
また、ルールＲＡＭ４４に記録されたルールが同一の前回イベント（遷移元イベント）から複数の今回イベント（遷移先イベント）もしくは複数の時間間隔のルールが存在する場合（ルールに分岐が存在する場合）に、比較処理は、ルールの分岐を構成する全ての（分岐数Ｎ個分の）ルール（遷移先イベントと時間間隔）とイベント遷移データとの比較を実行する。このように、信号変化の状態数に応じた分岐数Ｎについて比較が実行されるので、種々の状態数を有する動作信号に対応したデバッグ装置１が実現される。
【００９５】
また、イベント遷移データが、時間間隔を示すインターバルフィールド８６を含み、チェック部４５は、比較処理Ｐ１０において、時間間隔が相対的に短い場合にはインターバルフィールド８６の全ビットについての比較に基づいてデジタル回路２の正常動作又は異常動作を特定し、時間間隔が相対的に長い場合にはインターバルフィールド８６の下位ビットを丸め処理して得られる残余のビットについての比較に基づいてデジタル回路２の正常動作又は異常動作を特定する。広範囲の時間間隔に対して適切な比較処理が実行され得る。
【００９６】
［変形実施形態］
以上に本発明の好適な実施形態を示したが、本発明は、例えば以下に示すように種々の態様に変形可能である。
【００９７】
例えば、上記実施形態では、デバッグ対象のデジタル回路２の一例としてＦＰＧＡを示したが、デジタル回路２は、デジタル信号（パルス信号）に基づく処理を実行する回路であれば、他の種類の回路であってもよい。例えば、デジタル回路２は、ユーザによるプログラミングを前提としない場合にはＡＳＩＣ（Application Specific Integrated Circuit）であってもよい。また、デバッグ装置１をデジタル回路２の中に組み込んで、デジタル回路２のデバッグ処理を行うようにしてもよい。
【００９８】
また、表示装置３は、ＰＣではなくタブレット又はスマートフォンであってもよい。この場合、入出力回路５０は、３Ｇ、４Ｇ、ＬＴＥ、Ｗｉ−Ｆｉ（登録商標）などの無線通信機能を備える。また、デバッグ装置１は、エラー表示を示す信号を、表示装置３ではなくデジタル回路２へ入力するようにしてもよい。
【符号の説明】
【００９９】
１  デバッグ装置
２  デジタル回路（ＦＰＧＡ）
３  表示装置
１０  プローブ回路
２０  符号化回路
３０  マルチプレクサ
４０  処理回路
４１  処理部
４２  記憶部
４３  検出部
４４  ルールＲＡＭ
４５  チェック部
４７  読出しカウンタ
４８  書込みカウンタ
５０  入出力回路
【要約】      （修正有）【課題】デジタル回路を簡素な形態で効率的にデバッグするデバック装置を提供する。【解決手段】デバッグ装置１は、デジタル回路２から動作信号の変化をイベントとして検出するプローブ回路と、符号化回路と、処理回路と、を備える。符号化回路は、イベントを符号化してイベント符号化データを生成する。処理回路において、検出部は、イベント符号化データにおける今回イベントＩＤ及び前回イベントＩＤと時間間隔Ｔを検出し、今回イベントＩＤ、前回イベントＩＤ及び時間間隔Ｔを含むイベント遷移データを生成する。チェック部は、検出部により新たに生成されるイベント遷移データとルールＲＡＭから読み出したルールとの比較処理によって比較結果を生成する。学習フェーズにおいては、比較結果に基づいてルールＲＡＭへのイベント遷移データの記録の可否を判定し、運用フェーズにおいては、比較結果に基づいてデジタル回路が正常動作か異常動作かを判定する。【選択図】図１【図１】
0006842098.tif 000002
【図２Ａ】
0006842098.tif 000003
【図２Ｂ】
0006842098.tif 000004
【図３】
0006842098.tif 000005
【図４】
0006842098.tif 000006
【図５】
0006842098.tif 000007
【図６】
0006842098.tif 000008