(57)【要約】【課題】ソフトウェアおよびハードウェアの動作を監視してソフトウェアの不具合を容易にデバッグすることができる動作監視装置および動作監視方法を提供する。【解決手段】動作監視回路６が、ＣＰＵ２のレジスタアクセスを監視するアクセス監視部６１と、ステートマシン３２の状態とＣＰＵ２によってレジスタに書き込まれたデータによって生成される制御信号を監視するハード監視部６２と、を有している。さらに、期待動作配列が格納されている期待動作設定部６３と、アクセス監視部６１が検出したレジスタアクセス、ハード監視部６２が検出した状態および制御信号および期待動作配列に基づいてレジスタアクセス動作が期待通りか否かを判定する判定部６５と、を有している。【選択図】図１
2014232478.tif 000002
【特許請求の範囲】
【請求項１】
ソフトウェアによって制御されるハードウェアの動作を監視する動作監視装置において、
前記ソフトウェアによる前記ハードウェアへのアクセスを検出するアクセス検出部と、
前記ソフトウェアのアクセスに関連する前記ハードウェアの内部信号を取得する内部信号取得部と、
前記ハードウェアへ前記ソフトウェアがアクセスする順序を予め記憶する設定記憶部と、
前記アクセス検出部が検出した前記ソフトウェアのアクセスと、前記内部信号取得部が取得した前記内部信号と、前記設定記憶部に記憶されている前記アクセスする順序と、に基づいて前記ソフトウェアによるアクセスの良否を判定する判定部と、
を有することを特徴とする動作監視装置。
【請求項２】
前記ハードウェアがステートマシンを含み、
前記内部信号取得部は、前記ステートマシンの状態情報を取得し、
前記設定記憶部には、アクセスごとに前記ステートマシンが取るべき状態情報が設定され、
前記判定部が、前記アクセス検出部が検出した前記ソフトウェアのアクセスと、前記内部信号取得部が取得した前記状態情報と、前記設定記憶部に記憶されている前記アクセスする順序および前記ステートマシンが取るべき状態情報と、に基づいて前記ソフトウェアによるアクセスの良否を判定する
ことを特徴とする請求項１に記載の動作監視装置。
【請求項３】
前記ハードウェアが前記ソフトウェアからアクセス可能な記憶装置を有し、
前記アクセス検出部は、前記ソフトウェアによる前記記憶装置へのアドレスを検出し、
前記設定記憶部には、アクセスごとに前記ソフトウェアがアクセスすべき前記記憶装置のアドレスが設定され、
前記判定部が、前記アクセス検出部が検出した前記アドレスと、前記内部信号取得部が取得した前記状態情報と、前記設定記憶部に記憶されている前記アクセスする順序や前記ソフトウェアがアクセスすべきアドレスおよび前記ステートマシンが取るべき状態情報と、に基づいて前記ソフトウェアによるアクセスの良否を判定する
ことを特徴とする請求項２に記載の動作監視装置。
【請求項４】
前記設定記憶部には、１アクセスごとに前記ソフトウェアによるアクセスが順不同でよいか否かを示す情報が記憶されていることを特徴とする請求項１乃至３のうちいずれか一項に記載の動作監視装置。
【請求項５】
前記ソフトウェアが前記ハードウェアへアクセスした履歴を記憶する履歴記憶部を有していることを特徴とする請求項１乃至４のうちいずれか一項に記載の動作監視装置。
【請求項６】
前記判定部が判定した結果をアクセスごとに記憶する判定結果記憶部を有していることを特徴とする請求項１乃至５のうちいずれか一項に記載の動作監視装置。
【請求項７】
前記判定部の判定結果を出力する出力部を有し、
前記出力部が、前記履歴記憶部に記憶されている前記履歴および前記判定結果記憶部に記憶されている判定した結果のうち、少なくともいずれかをシリアルデータとして出力することを特徴とする請求項５または６に記載の動作監視装置。
【請求項８】
ソフトウェアによって制御されるハードウェアの動作を監視する動作監視装置で実行される動作監視方法において、
前記ソフトウェアによる前記ハードウェアへのアクセスを検出するアクセス検出工程と、
前記ソフトウェアのアクセスに関連する前記ハードウェアの内部信号を取得する内部信号取得工程と、
前記アクセス検出工程で検出した前記ソフトウェアのアクセスと、前記内部信号取得工程で取得した前記内部信号と、前記ハードウェアへ前記ソフトウェアがアクセスする順序を予め記憶する設定記憶部と、に基づいて前記ソフトウェアによるアクセスの良否を判定する判定工程と、
を含むことを特徴とする動作監視方法。
【請求項９】
前記ハードウェアがステートマシンを含み、
前記内部信号取得工程では、前記ステートマシンの状態情報を取得し、
前記設定記憶部には、アクセスごとに前記ステートマシンが取るべき状態情報が設定され、
前記判定工程では、前記アクセス検出工程で検出した前記ソフトウェアのアクセスと、前記内部信号取得工程で取得した前記状態情報と、前記設定記憶部に記憶されている前記アクセスする順序および前記ステートマシンが取るべき状態情報と、に基づいて前記ソフトウェアによるアクセスの良否を判定する
ことを特徴とする請求項８に記載の動作監視方法。
【請求項１０】
前記ハードウェアが前記ソフトウェアからアクセス可能な記憶装置を有し、
前記アクセス検出工程では、前記ソフトウェアによる前記記憶装置へのアドレスを検出し、
前記設定記憶部には、アクセスごとに前記ソフトウェアがアクセスすべき前記記憶装置のアドレスが設定され、
前記判定工程が、前記アクセス検出部が検出した前記アドレスと、前記内部信号取得工程で取得した前記状態情報と、前記設定記憶部に記憶されている前記アクセスする順序や前記ソフトウェアがアクセスすべきアドレスおよび前記ステートマシンが取るべき状態情報と、に基づいて前記ソフトウェアによるアクセスの良否を判定する
ことを特徴とする請求項９に記載の動作監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば半導体集積回路等のソフトウェアにより制御されるハードウェアの動作を監視する動作監視装置に関する。
【背景技術】
【０００２】
近年大規模化、多機能化により、ＡＳＩＣ（Application Specific Integrated Circuit）等の半導体集積回路はますます複雑化している。そのような中で、回路評価、回路検証において、デバッグ機能性の向上は必須項目である。また、ソフトウェア開発において、ハードウェア上のレジスタのアクセス順が制御仕様通りになっていない場合、あるいは、ハードウェアのある状態における禁止設定をソフトウェアが実施してしまっている場合は、これらを解析するのは困難となることが多い。そのため、ハードウェアの不具合とソフトウェアの不具合の切り分けに多くの工数を要してしまうという問題があった。
【０００３】
例えば、特許文献１には、ＣＰＵ（ソフトウェア）とＤＭＡコントローラなどのハードウェアがメモリアクセスの際に競合することを監視するために、利用者より取得したメモリアクセス監視対象の情報と、メモリＩＦより取得したアドレス、データ、アクセスタイプとを照合する。そして、それが監視すべきアクセスであったか否かを判定して、そのアクセスに関する情報を保持することが記載されている。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１は、メモリアクセスの競合検出することはできるものの、ソフトウェアの不具合によって引き起こされた制御回路などのハードウェアの不具合の解析については何ら示唆されていない。
【０００５】
例えば、ソフトウェアの不具合によって引き起こされた制御回路などのハードウェアの不具合の解析の例として、ステートマシンなどのハードウェアの動作と紐付けられたレジスタへのアクセスが挙げられる。このようなハードウェアの場合、従来は、内部信号をモニタ端子に出力することで、内部の状態（ステートマシンのステート）、制御信号等を観測していた。しかし、これらの制御信号等をソフトウェアの制御に紐付けて観測する事は工数が必要であり、特に、ソフトウェアのアクセスによる制御の順番を期待動作としてデバッグするには多くの工数を必要としていた。また、ＣＰＵ内蔵装置の場合、ＩＣＥ（In-Circuit Emulator）等のデバッガが必要になり、デバッグにコストがかかってしまうという問題もあった。
【０００６】
本発明はかかる問題を解決することを目的としている。
【０００７】
即ち、本発明は、例えば、ソフトウェアおよびハードウェアの動作を監視してソフトウェアの不具合を容易にデバッグすることができる動作監視装置を提供することを目的としている。
【課題を解決するための手段】
【０００８】
上記に記載された課題を解決するために請求項１に記載された発明は、ソフトウェアによって制御されるハードウェアの動作を監視する動作監視装置において、前記ソフトウェアによる前記ハードウェアへのアクセスを検出するアクセス検出部と、前記ソフトウェアのアクセスに関連する前記ハードウェアの内部信号を取得する内部信号取得部と、前記ハードウェアへ前記ソフトウェアがアクセスする順序を予め記憶する設定記憶部と、前記アクセス検出部が検出した前記ソフトウェアのアクセスと、前記内部信号取得部が取得した前記内部信号と、前記設定記憶部に記憶されている前記アクセスする順序と、に基づいて前記ソフトウェアによるアクセスの良否を判定する判定部と、を有することを特徴とする動作監視装置である。
【発明の効果】
【０００９】
請求項１に記載の発明によれば、設定記憶部に記憶されたアクセス順に沿ったアクセスとなっているかを、アクセス検出部が検出した実際のアクセスと内部信号取得部が取得した内部信号と、に基づいて判定する。そのため、制御の順序を監視することができ、かつ、ハードウェアの動作との関連が把握できるため、ソフトウェア側の制御ミスや、不具合発生時のデバッグが容易となる。
【図面の簡単な説明】
【００１０】
【図１】本発明の一実施形態にかかる動作監視装置を有する半導体集積回路の構成図である。
【図２】図１に示された半導体集積回路のステートマシンの状態遷移図である。
【図３】図１に示された期待動作設定部と判定部及びアドレス監視部、ハード監視部の要部構成図である。
【図４】図３に示された期待動作設定部の期待動作配列の構成要素の説明図である。
【図５】図１に示された期待動作設定部と記憶部及び出力部の要部構成図である。
【図６】図５に示されたグループ判定結果の構成要素の説明図である
【図７】期待動作配列の設定例である。
【図８】図１に示された判定部の動作のフローチャートである。
【図９】期待動作配列の設定通りの動作をしない場合の例である。
【図１０】期待動作配列の設定通りの動作をしない場合の例である。
【発明を実施するための形態】
【００１１】
以下、本発明の一実施形態を、図１乃至図１０を参照して説明する。図１は、本発明の一実施形態にかかる動作監視装置を有する半導体集積回路の構成図である。図２は、図１に示された半導体集積回路のステートマシンの状態遷移図である。図３は、図１に示された期待動作設定部と判定部及びアドレス監視部、ハード監視部の要部構成図である。図４は、図３に示された期待動作設定部の期待動作配列の構成要素の説明図である。図５は、図１に示された期待動作設定部と記憶部及び出力部の要部構成図である。図６は、図５に示されたグループ判定結果の構成要素の説明図である。図７は、期待動作配列の設定例である。図８は、図１に示された判定部の動作のフローチャートである。図９は、期待動作配列の設定通りの動作をしない場合の例である。図１０は、期待動作配列の設定通りの動作をしない場合の例である。
【００１２】
図１に、本発明の一実施形態にかかる動作監視装置を含む半導体集積回路１の構成図を示す。半導体集積回路１は、ＣＰＵ２と、第１モジュール３と、第２モジュール４と、バス５と、動作監視回路６と、を有している。
【００１３】
ＣＰＵ２は、公知の中央演算処理装置（Central Processing Unit）であり、プログラムメモリやデータメモリ等を有している。そして、プログラムメモリに格納されているプログラム（ソフトウェア）に基づいて動作する。
【００１４】
ソフトウェアによって制御されるハードウェアとしての第１モジュール３は、レジスタファイル３１と、ステートマシン３２と、を有している。レジスタファイル３１は、複数のレジスタ（記憶領域）から構成され、レジスタごとに決められたアドレスを指定することでＣＰＵ２からはバス５経由でリードおよびライトアクセスが可能である。即ち、本実施形態では、レジスタファイル３１がソフトウェアからアクセス可能な記憶装置となっている。勿論、レジスタファイル３１に限らずＲＡＭ（Read Only Memory）等のメモリ素子であってもよい。
【００１５】
ステートマシン３２は、予め設定された複数の状態が制御信号等のトリガとなる信号によって遷移し、その状態遷移によってモジュール内の制御を行う公知の制御回路である。本実施形態におけるステートマシン３２の状態遷移図の一例を図２に示す。図２に示したように、ステートマシン３２は、状態Ｓ１、Ｓ２、Ｓ３が設定されている。状態Ｓ１は初期状態（システムリセット直後に遷移する状態）であり、制御信号Ｐ１により状態Ｓ２に遷移する。状態Ｓ２は制御信号Ｐ２、Ｐ３では遷移せずに、制御信号Ｐ４により状態Ｓ３に遷移する。状態Ｓ３は、制御信号Ｐ５により状態Ｓ１に遷移する。なお、制御信号Ｐ１〜Ｐ４は、例えば第１モジュール３内における動作や半導体集積回路１内の他のモジュール等からの信号、あるいは半導体集積回路１外部からの信号等により生成される。また、ステートマシン３２は、レジスタファイル３１に記憶されているデータ等に基づいて内部の設定や制御等を行う。
【００１６】
第２モジュール４は、レジスタファイル４１と、ステートマシン４２と、を有している。レジスタファイル４１は、複数のレジスタから構成され、ＣＰＵ２からはバス５経由でリードおよびライトアクセスが可能である。
【００１７】
ステートマシン４２は、予め定義された複数の状態を制御信号等のトリガとなる動作によって遷移し、その遷移によってモジュール内の制御を行う公知の制御回路である。ステートマシン４２の状態遷移図は図２と同様とする。
【００１８】
バス５は、アドレス信号、リードまたはライト信号およびデータ信号等から構成されている。バス５は主にＣＰＵ２とモジュール３、４とのデータ転送に用いられる。また、バス５は、動作監視回路６とも接続され、動作監視回路６における動作監視動作や設定等に利用される。
【００１９】
動作監視回路６は、アクセス検出部としてのアクセス監視部６１と、内部信号取得部としてのハード監視部６２と、設定記憶部としての期待動作設定部６３と、記憶部６４と、判定部６５と、出力部６６と、を有している。
【００２０】
アクセス監視部６１は、バス５からＣＰＵ２がレジスタファイル３１、４１にアクセスするアドレスやリードまたはライト信号を取得して、ＣＰＵ２のレジスタファイル３１、４１に対するアクセスを監視（検出）する。即ち、ソフトウェアによるハードウェアへのアクセスを検出している。また、アクセス監視部６１は、バス５から取得したアドレス、リードまたはライト信号およびデータをアクセス履歴として記憶部６４に出力する。なお、アクセス監視部６１には、監視対象となるアドレスのみを抽出するためにベースアドレスが設定できるようにしてもよい。
【００２１】
ハード監視部６２は、ステートマシン３２、４２の状態情報およびＣＰＵ２のアクセスによって発生した制御信号をそれぞれ取得することで監視している。制御信号の例としては、ＣＰＵ２がレジスタファイル３１、４１の所定のアドレスに書き込んだデータに基づいて生成される制御信号等が挙げられる。即ち、ステートマシン３２、４２の状態情報およびＣＰＵ２のアクセスによって発生した制御信号が、ソフトウェアのアクセスに関連するハードウェアの内部信号となる。なお、内部信号としては、ＣＰＵ２のアクセスによってレジスタファイル３１、４１に書き込まれたデータをデコード等の演算により発生する信号に限らない。例えば、レジスタファイル３１、４１に書き込まれたデータそのものやＣＰＵ２のアクセスによって値が変化する信号や内部レジスタ等の値も含む。
【００２２】
期待動作設定部６３は、バス５を介して設定される期待動作配列が格納されている。期待動作設定部６３は、例えば図３に示したように、複数の期待動作配列（期待動作１〜１６）からなるグループが複数格納されている。期待動作配列は後述するように１つの配列でレジスタファイル３１、４１の１つのアドレスに対応し、それらがＣＰＵ２がアクセスする順に格納されている。例えば図３の場合、期待動作１、期待動作２、期待動作３、…、期待動作１５、期待動作１６の順にアクセスする。つまり、配列の並びがアクセス順を意味し、即ち、ソフトウェアがハードウェアにアクセスする順序が記憶されている。なお、１グループ当りの期待動作配列の数はデバッグ環境や回路規模等に応じて適宜変更してもよい。
【００２３】
期待動作配列は、図４に示したように、ハード信号、アドレス、データ、順序期待、最終フラグ、期待チェック、エラーフラグの各要素から構成されている。ハード信号は、ステートマシン３２、４２が取るべき状態情報を示している。アドレスは、ＣＰＵ２がレジスタファイル３１、４１内の一つのレジスタへアクセスするために指定するアドレスを示している。即ち、１つの配列が１アクセス分の設定を示している。データは、指定したアドレスにＣＰＵ２が書き込むデータを示している。なお、データ要素は、設定せずに後述する判定部６５による比較を行わないようにしてもよい。順序期待は、実行の順序に制約があるか、具体的には１つ後の配列の前に実行される必要があるか否か、つまり当該配列の示すアクセスが順不同でよいか否かを示している。最終フラグは、最後の配列（次のアクセスは先頭の配列、即ち遷移先が初期状態）であるかを示している。
【００２４】
期待チェックは、初期値は“０”であり、判定部６５による判定の結果期待通りの動作であった場合に“１”が書き込まれる。エラーフラグは、初期値は“０”であり、判定部６５による判定の結果期待通りの動作でなかった場合に“１”が書き込まれる。即ち、期待チェックおよびエラーフラグの各要素が、判定部６５が判定した結果をアクセスごとに記憶する判定結果記憶部として機能する。
【００２５】
記憶部６４は、レジスタファイル３１、４１へのアクセス履歴や、判定部６５における判定結果を記憶する。記憶部６４は、図５に示したように、アクセス履歴記憶部６４ａと、グループ判定結果記憶部６４ｂを有している。アクセス履歴記憶部６４ａには、アドレスやリードまたはライトの識別およびデータなどのバス５を介したレジスタファイル３１、４１へのアクセスの履歴が記憶される。アクセス履歴記憶部６４ａは、ＦＩＦＯ（First-In First-Out）構造になっており、アクセスされた順にデータはシフトしていく。なお、図５では、アクセス履歴記憶部６４ａは３２段となっており、最新の３２回分のアクセスが記憶可能となっている。なお、アクセス履歴記憶部６４ａの段数はデバッグ環境や回路規模等に応じて適宜変更してもよい。
【００２６】
グループ判定結果記憶部６４ｂには、期待動作設定部６３に設定された期待動作の良否（ＯＫまたはＮＧ）がグループ毎に記憶される。グループ判定結果記憶部６４ｂとして記憶される要素の例を図６に示す。図６に示したように、グループ判定結果６４ｂは、グループの判定結果の情報として判定結果、カウンタ、エラー種別の各要素から構成されている。判定結果は、グループとしての判定結果を示している。カウンタは、ステートマシンのループ回数を示している。エラー種別は、禁止データ設定によるエラー、アクセス順間違いによるエラー、レジスタ未設定によるエラーのうちいずれかを例えば予め設定されている識別コード等により示している。
【００２７】
禁止データ設定によるエラーとは、ハード信号、アドレス、データの各領域が期待通りでなかった場合を示すエラーである。アクセス順間違いによるエラーとは、期待動作配列の順序どおりにアクセスが行われなかった場合を示すエラーである。レジスタ未設定によるエラーとは、最後の期待動作配列までアクセスが行われた後に全ての期待チェックが設定されていないことによるエラーである。
【００２８】
判定部６５は、アクセス監視部６１が監視しているレジスタファイル３１、４１へのアクセスと、ハード監視部６２が監視しているステートマシン３２、４２の状態情報やアクセスの結果生成される制御信号の有無と、期待動作設定部６３に設定されている期待動作配列に基づいて、レジスタファイル３１、４１へのアクセスが期待されている動作となっているか判定する。即ち、ソフトウェアによるアクセスの良否を判定する。そして、判定結果を期待動作配列の期待チェック要素やエラーフラグ要素および記憶部６４等に記憶する。
【００２９】
出力部６６は、期待動作設定部６３や記憶部６４に設定または記憶されている情報を出力する。出力部６６は、図５に示したようにシリアルＩ／Ｆ（インタフェース）を内蔵し、各種情報をシリアルデータとして出力する。
【００３０】
ここで、期待動作配列の設定例と動作監視回路６の具体的動作について図７乃至図１０を参照して説明する。なお、以降の動作は第１モジュール３のレジスタファイル３１とステートマシン３２の動作を例に説明するが第２モジュール４のレジスタファイル４１とステートマシンも同様である。
【００３１】
図７は、期待動作設定部６３の期待動作配列の設定例である。図７に示した期待動作配列は、（ａ）の期待動作配列１〜（ｅ）の期待動作配列５まで５つの配列が１つのグループとして構成されている。図７（ａ）の期待動作配列１について説明する。期待配列動作１は、ハード信号には、Ｍ１−Ｓ１（第１モジュールのステートマシン３２の状態Ｓ１）と設定されている。アドレスには、Ａ１（アクセスすべきレジスタのアドレス値）が設定されている。データにはＤ１（ＣＰＵ２から書き込まれるデータ）が設定されている。順序期待には、“１”（順不同で実行されてはならない、つまり後の配列よりも前に実行されなければならない）が設定されている。ここで、後の配列とはアクセス順で次にアクセスされるべき配列である期待動作配列２を示している。最終フラグには“０”（最後の配列でない）が設定されている。また、期待チェック、エラーフラグは、判定部６５の判定により書き込まれるので初期値である“０”となっている。つまり、期待動作配列１は、アクセス監視部６１がアドレスＡ１へのアクセスを検出したときに、ハード監視部６２が状態Ｓ１とデータＤ１またはデータＤ１に相当する制御信号を検出した場合は、期待通りと判定される。なお、データ要素の比較を行わない場合は、状態情報のみの比較により期待通りか否かの判定を行う。
【００３２】
期待配列動作２は、ハード信号には、Ｍ１−Ｓ２と設定され、アドレスには、Ａ２が設定され、データにはＤ２が設定され、順序期待には、“０”（順不同で実行されてもよい、つまり後の配列よりも後に実行されてもよい）が設定されている。期待動作配列３〜５も、期待値配列１や２と同じ要領で、ハード信号、アドレス、データ、順序期待、最終フラグの各要素について設定する。なお、期待動作配列５は、最終フラグ要素が“１”であり、この配列が最後であることを示しているので、順序期待要素は“０”でも“１”でもよい。つまり、最後の配列である期待動作配列５では、後の配列との順序を評価するために使用する順序期待要素は使用されない。
【００３３】
図７に示した期待動作配列は、ＣＰＵ２のレジスタアクセスの順序が（ａ）が先頭で、（ｅ）が最後となっている。そして、その途中の順序は上述した順序期待要素により規定されている。
【００３４】
次に、ＣＰＵ２からのアクセスが期待通りの動作の具体例を説明する。まず、アクセス監視部６１は期待動作配列１（図７（ａ））に対応するアドレスＡ１を観測した場合、判定部６５の動作を要求する。判定部６５は、期待動作設定部６３のハード信号要素およびデータ要素と、ハード監視部６２が観測した状態情報および制御信号と、を比較し、期待通りであるかを判定する。期待動作がＯＫの場合は、期待動作配列１の期待チェック要素を“１”に設定することで期待チェックがされたことを記憶させる。期待動作配列２〜４（図７（ｂ）〜（ｄ））においても、期待動作配列１と同様である。即ち、レジスタアクセスを監視し、対象アドレスＡ２〜Ａ４を観測後、アクセス監視部６１が判定部６５の動作を要求し、期待動作設定部に記憶されている期待動作配列及びハード監視部６２の観測した状態情報や制御信号に基づいて、期待通りか判定する。
【００３５】
期待動作配列５（図７（ｅ））に関しても、期待動作配列１〜４と同様にレジスタアクセスを監視し、判定を実施する。ここで期待動作配列５は最終フラグが“１”と設定されている。したがって、期待動作配列５の判定後、グループ全体の判定を行う。
【００３６】
期待動作配列１〜５の全ての期待チェック要素が“１”に設定されていることを確認することで、当該グループのＣＰＵ２からのアクセスが正常に行われたことが確認できる。全ての期待チェック要素が“１”に設定されている場合、期待動作配列１〜５が含まれるグループ１の動作がＯＫであるとして結果を記憶部６４のグループ判定結果記憶部６４ｂのグループ１の判定結果配列に書き込む。その後、判定部６５は、期待動作配列の期待チェック要素をすべて０に設定し、期待動作配列１のチェックに戻る。
【００３７】
次に、エラー判定となる動作の具体例を説明する。例として期待動作配列１のアクセスの前に期待動作配列２のアクセスがなされた場合を想定する。期待動作配列２に相当するアドレスＡ２がアクセスされた場合、判定部６５は期待動作配列２の一つ前の配列である期待動作１の順序期待要素と期待チェック要素を確認する。順序期待要素が“１”でかつ期待チェック要素が“０”、すなわち期待動作配列１のアドレスＡ１へのアクセスがまだである場合、エラー判定とし、期待動作配列２のエラーフラグ要素に“１”を設定する。
【００３８】
また、期待動作配列５のアクセスの前に期待動作配列１〜４のいずれかが実施されていない場合を想定する。この場合期待動作配列１〜４のいずれかの期待チェック要素が“１”に設定されていないこととなるため、エラー判定とし、期待チェック要素が“１”に設定されていない配列のエラーフラグ要素を“１”に設定する。
【００３９】
ここで、上述した動作を図８のフローチャートにまとめる。まず、ステップＳ１０１において、アクセス監視部６１がレジスタアクセスを観測したか否かを判断し、観測した場合（ＹＥＳの場合）はステップＳ１０２に進む。次にステップＳ１０２において、期待動作配列のデータ要素の比較を行うか否か（比較スルーか否か）を判断し、比較を行う場合（ＮＯの場合）はステップＳ１０３に進み、データ要素の比較を行わない場合（ＹＥＳの場合）はステップＳ１０４に進む。データ要素の比較を行うか否かは、予め判定部６５に設定するようにしてもよいし、期待動作設定部６３においてグループ毎や配列毎に設定するようにしてもよい。
【００４０】
次に、ステップＳ１０３において、データ要素およびハード信号要素を、ハード監視部６２が観測した状態およびデータ要素のデータがレジスタファイル３１の所定のアドレスに書き込まれた結果生成される制御信号と比較してステップＳ１０４に進む。次に、ステップＳ１０４において、比較の結果期待通りであった場合（ＹＥＳの場合）はステップＳ１０５に進む。なお、ステップＳ１０２で比較スルーと判断された場合は、ステップＳ１０４における判断の前までにハード信号要素と状態情報の比較を行っておく。
【００４１】
次に、ステップＳ１０５において、１つ前の期待動作配列を確認してステップＳ１０６に進む。次に、ステップＳ１０６において、ステップＳ１０５で確認した１つ前の期待動作配列の順序期待要素が“１”であるか否かを判断し、“１”である場合（ＹＥＳの場合）はステップＳ１０７に進む、“０”である場合（ＮＯの場合）はステップＳ１０８に進む。次に、ステップＳ１０７において、ステップＳ１０５で確認した１つ前の期待動作配列の期待チェック要素が“１”であるか否かを判断し、“１”である場合（ＹＥＳの場合）はステップＳ８に進む、“０”である場合（ＮＯの場合）はステップＳ１０９に進む。
【００４２】
ステップＳ１０６とＳ１０７では、１つ前の期待動作配列の順序期待要素と期待チェック要素を確認することで、ＣＰＵ２のレジスタファイル３１へのアクセス順の良否を判定している。つまり、１つ前の順序期待要素が“０”であれば、現在判定中のレジスタアクセス動作は１つ前の期待動作配列よりも前にアクセスされてもよいこととなる。また、１つ前の順序期待要素が“１”で１つ前の期待チェック要素が“１”であれば、現在判定中のレジスタアクセス動作は１つ前の期待動作配列の後にアクセスすべきところ、その期待通りにアクセスされていることとなる。また、１つ前の順序期待要素が“１”で１つ前の期待チェック要素が“０”であれば、現在判定中のレジスタアクセス動作は１つ前の期待動作配列の後にアクセスすべきところ、１つ前の期待動作配列の前にアクセスされていることとなる。
【００４３】
次に、ステップＳ１０８においては、状態および制御信号の比較やレジスタのアクセス順が期待通りであったので、現在のアクセスに対応する期待動作配列の期待チェック要素を“１”にしてステップＳ１１０に進む。一方、ステップＳ１０９においては、状態および制御信号の比較またはレジスタのアクセス順が期待通りでなかったので、現在のアクセスに対応する期待動作配列のエラーフラグ要素を“１”にしてステップＳ１１４に進む。
【００４４】
次に、ステップＳ１１０において、１つのグループ内における最終の配列であるか否かを判断し、最終の配列の場合（ＹＥＳの場合）はステップＳ１１１に進み、最終の配列でない場合（ＮＯの場合）はステップＳ１１４に進む。最終の配列か否かは、上述したように期待動作配列の最終フラグ要素を確認する。
【００４５】
ステップＳ１１０で最終の配列であった場合はステップＳ１１１において、全ての期待要素配列の期待チェック要素が全て“１”か否かを判断し、全て“１”である場合はステップＳ１１２に進み、そうでない場合はステップＳ１１３に進む。次に、ステップＳ１１２において、ステップＳ１１１に判断の結果１つ前までの期待チェック要素が全て“１”であったので、当該グループ内の期待チェック要素をクリア（“０”）しステップＳ１１４に進む。なお、ステップＳ１１１では、上記動作とともに、記憶部６４のグループ判定結果記憶部６４ｂに該当するグループの判定結果を格納する。一方、ステップＳ１１３においては、ステップＳ１１１に判断の結果１つ前までの期待チェック要素が全て“１”でなかったので、期待チェック要素が“０”の配列のエラーフラグ要素を“１”にしステップＳ１１４に進む。
【００４６】
次に、ステップＳ１１４において、エラーフラグ要素が“１”か否かを判断し、“１”の場合（ＹＥＳの場合）は、ステップＳ１１５に進み、そうでない場合（ＮＯの場合）はステップＳ１０１に戻る。次に、ステップＳ１１５において、エラーフラグ要素が“１”であったので動作監視回路６および第１モジュール３、第２モジュール４の回路動作を停止させて、ＣＰＵ２に対してエラー割り込みを行いエラーの通知をする。
【００４７】
また、ステップＳ１１４においては、エラーフラグの判定と同時に、記憶部６４のグループ判定結果記憶部６４ｂに該当するグループの判定結果を格納する。
【００４８】
そして、回路停止後に出力部６６から、期待動作設定部６３に記憶されている内容や記憶部６４に記憶されている内容を出力する。なお、記憶部６４のアクセス履歴記憶部６４ａの内容は、図８のフローチャートの実行に関係なく、随時出力部６６から出力されるようにしてもよい。
【００４９】
以上の説明から明らかなように、ステップＳ１がアクセス検出工程、ステップＳ１０３が内部信号取得工程、ステップＳ１０４、Ｓ１０６、Ｓ１０７、Ｓ１１１が判定工程として機能する。
【００５０】
図１０は、アドレスＡ２へのアクセスを行わなかった場合の例である。この例では、２段目の配列の期待チェック要素が“０”で、かつエラーフラグ要素が“１”となっている。これは、エラーフラグ要素が“１”に設定されていることで、アドレスＡ２へのアクセスが未設定のまま制御が進んでしまった不具合である事が解析できる。図８のフローチャートに沿って説明すると、３段目の配列にかかるアクセスを観測した時点では、順序期待要素が“０”であるので、ステップＳ１０６、Ｓ１０８と進むため、エラーとはならない。最後の配列にかかるアクセスを観測すると、ステップＳ１１０、Ｓ１１１、Ｓ１１３と進むため、エラーを検出することができる。
【００５１】
図１１は、アドレスＡ３へのアクセスの前に、アドレスＡ４へアクセスしてエラーになった場合の例である。この例では、３段目の配列と４段目の配列の期待チェック要素が“０”で、かつ４段目の配列のエラーフラグ要素が“１”となっている。これらの情報から、順番を間違えた不具合である事が解析できる。図８のフローチャートに沿って説明すると、４段目の配列にかかるアクセスを観測した時点で、１つ前の期待動作配列である３段目の配列の順序期待要素が“１”で期待チェック要素が“０”であるので、ステップＳ１０５、Ｓ１０６、Ｓ１０７、Ｓ１０９と進み４段目の配列のエラーフラグ要素が“１”となる。そして、ステップＳ１１４でエラーフラグ要素が“１”であるので、ステップＳ１１６に進み回路停止してエラー割り込みが行われる。図１１の場合は、グループの途中で回路動作が停止するので、エラー検出後の配列（最後の配列）にかかるアクセスは行われない。
【００５２】
なお、本実施形態において、１回の状態遷移のループ中に同じアドレスをアクセスする重複アクセスを検出するようにしてもよい。例えば、一度アクセスがあったアドレスに対し、再度アクセスがあった場合は、期待チェック要素を取り出して比較をする。そして、すでに“１”が設定されている場合はエラー判定とすればよい。これは、図８のフローチャートであれば、例えばステップＳ１０１でチェックすることができる。
【００５３】
本実施形態によれば、動作監視回路６が、ＣＰＵ２のレジスタアクセスを監視するアクセス監視部６１と、ステートマシン３２の状態情報とＣＰＵ２によってレジスタに書き込まれたデータによって生成される制御信号を監視するハード監視部６２と、を有している。そして、期待動作配列が格納されている期待動作設定部６３を有している。さらに、アクセス監視部６１が検出したレジスタアクセス、ハード監視部６２が検出した状態および制御信号および期待動作配列に基づいてレジスタアクセス動作が期待通りか否かを判定する判定部６５と、を有している。そのため、制御の順序を監視することができ、かつ、ステートマシンの状態との関連が把握できるため、ソフトウェア側の制御ミスや、不具合発生時のデバッグが容易となる。
【００５４】
また、第１モジュール３は、ＣＰＵ２にアクセスされるレジスタファイル３１を有しているので、ＣＰＵ２からの制御がレジスタファイルへ３１のアクセスにより行うことができる。また、ＣＰＵ２のアクセスを検出するのをバス５上のアドレスにより検出することができる。
【００５５】
また、期待動作配列に順序期待要素を含むので、順不同にアクセスしてもよいレジスタが混在する場合でもデバッグすることができる。
【００５６】
また、記憶部６４にＣＰＵ２のアクセス履歴を記憶することができるため、レジスタアクセス順序の良否以外に実際のアクセス内容を確認することができる。したがって、デバックが効率良く行うことができる。
【００５７】
また、出力部６６が、期待動作設定部６３に格納されている期待動作配列や記憶部６４に記憶されているアクセス履歴やグループの判定結果をシリアルデータとして出力することができるので、これらの情報を出力するための信号線を少なくすることができる。また、外部デバッグ機器等を用いること判定結果等の情報を取得することができる。
【００５８】
また、エラーフラグ要素に“１”が設定された場合は、回路動作を停止させてＣＰＵ２に割り込んで通知しているので、期待通りの動作で無かった場合に、速やかに通知することができる。
【００５９】
なお、上述した実施形態では、ソフトウェアはステートマシン３２の状態遷移まで制御していない例を示したが、ＣＰＵ２がレジスタファイル３１の所定のアドレスのレジスタに書き込むことで状態遷移の契機となる制御信号Ｐ１〜Ｐ４を生成する構成としてもよい。この場合、ハード監視部６２は、状態が遷移するトリガとなる制御信号をそれぞれ取得して監視する。また、期待動作配列のデータ要素は、ステートマシン３２、４２において状態を遷移させるトリガとなる情報が設定される。この場合、ＣＰＵ２がより密接にステートマシン３２の制御に関わる構成となり、本発明を適用することで、そのような構成のハードウェアにおいても、ソフトウェア側の不具合をデバッグすることが可能となる。
【００６０】
また、上述した実施形態では、レジスタファイル３１等の記憶装置を介してＣＰＵ２がステートマシン３２に対してデータ等を送信する構成であったが、それに限らない。例えば、アドレスが入力されるとステートマシン３２の制御信号が生成されるデコーダ等の回路であってもよい。あるいは、バスを介さずに専用の制御信号で直接接続する構成であってもよい。専用の制御信号の場合は、アドレスに代えてその制御信号を期待動作配列に設定すればよい。
【００６１】
また、上述した実施形態では、ソフトウェアに制御されるハードウェアとしてステートマシン３２を例示したが、それに限らず、任意のデータ処理を行う演算回路等の論理回路であってもよい。この場合、ハード監視部で監視する要素としては、ソフトウェアからアクセスされる要素（レジスタ、メモリ等）やソフトェアのアクセスによって生成される制御信号等を監視するようにすればよい。
【００６２】
また、上述した実施形態では、ＣＰＵが半導体集積回路に内蔵されている形態であったが、外部に設けられていてもよい。即ち、外部のＣＰＵやコンピュータ等のソフトウェアによる制御装置からアクセスされる構成であってもよい。
【００６３】
また、本発明は上記実施形態に限定されるものではない。即ち、当業者は、従来公知の知見に従い、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。かかる変形によってもなお本発明の動作監視装置および動作監視方法の構成を具備する限り、勿論、本発明の範疇に含まれるものである。
【符号の説明】
【００６４】
１          半導体集積回路
２          ＣＰＵ
３          第１モジュール
３１        レジスタファイル
３２        ステートマシン
４          第２モジュール
６          動作監視回路（動作監視装置）
６１        アクセス監視部
６２        ハード監視部
６３        期待動作設定部
６４        記憶部
６５        判定部
Ｓ１０１    レジスタアクセス観測（アクセス検出工程）
Ｓ１０３    内部信号取得工程（内部信号取得工程）
Ｓ１０４    期待通り（判定工程）
Ｓ１０６    順序期待要素が１（判定工程）
Ｓ１０７    期待チェック要素が１（判定工程）
Ｓ１１１    １つ前までの期待チェック要素が１（判定工程）
【先行技術文献】
【特許文献】
【００６５】
【特許文献１】特開２００８−４１０３６号公報
【図１】
2014232478.tif 000003
【図２】
2014232478.tif 000004
【図３】
2014232478.tif 000005
【図４】
2014232478.tif 000006
【図５】
2014232478.tif 000007
【図６】
2014232478.tif 000008
【図７】
2014232478.tif 000009
【図８】
2014232478.tif 000010
【図９】
2014232478.tif 000011
【図１０】
2014232478.tif 000012