JP2014232478A - 動作監視装置および動作監視方法 - Google Patents
動作監視装置および動作監視方法 Download PDFInfo
- Publication number
- JP2014232478A JP2014232478A JP2013113907A JP2013113907A JP2014232478A JP 2014232478 A JP2014232478 A JP 2014232478A JP 2013113907 A JP2013113907 A JP 2013113907A JP 2013113907 A JP2013113907 A JP 2013113907A JP 2014232478 A JP2014232478 A JP 2014232478A
- Authority
- JP
- Japan
- Prior art keywords
- access
- software
- unit
- expected
- storage unit
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Debugging And Monitoring (AREA)
Abstract
【課題】ソフトウェアおよびハードウェアの動作を監視してソフトウェアの不具合を容易にデバッグすることができる動作監視装置および動作監視方法を提供する。【解決手段】動作監視回路6が、CPU2のレジスタアクセスを監視するアクセス監視部61と、ステートマシン32の状態とCPU2によってレジスタに書き込まれたデータによって生成される制御信号を監視するハード監視部62と、を有している。さらに、期待動作配列が格納されている期待動作設定部63と、アクセス監視部61が検出したレジスタアクセス、ハード監視部62が検出した状態および制御信号および期待動作配列に基づいてレジスタアクセス動作が期待通りか否かを判定する判定部65と、を有している。【選択図】図1
Description
本発明は、例えば半導体集積回路等のソフトウェアにより制御されるハードウェアの動作を監視する動作監視装置に関する。
近年大規模化、多機能化により、ASIC(Application Specific Integrated Circuit)等の半導体集積回路はますます複雑化している。そのような中で、回路評価、回路検証において、デバッグ機能性の向上は必須項目である。また、ソフトウェア開発において、ハードウェア上のレジスタのアクセス順が制御仕様通りになっていない場合、あるいは、ハードウェアのある状態における禁止設定をソフトウェアが実施してしまっている場合は、これらを解析するのは困難となることが多い。そのため、ハードウェアの不具合とソフトウェアの不具合の切り分けに多くの工数を要してしまうという問題があった。
例えば、特許文献1には、CPU(ソフトウェア)とDMAコントローラなどのハードウェアがメモリアクセスの際に競合することを監視するために、利用者より取得したメモリアクセス監視対象の情報と、メモリIFより取得したアドレス、データ、アクセスタイプとを照合する。そして、それが監視すべきアクセスであったか否かを判定して、そのアクセスに関する情報を保持することが記載されている。
特許文献1は、メモリアクセスの競合検出することはできるものの、ソフトウェアの不具合によって引き起こされた制御回路などのハードウェアの不具合の解析については何ら示唆されていない。
例えば、ソフトウェアの不具合によって引き起こされた制御回路などのハードウェアの不具合の解析の例として、ステートマシンなどのハードウェアの動作と紐付けられたレジスタへのアクセスが挙げられる。このようなハードウェアの場合、従来は、内部信号をモニタ端子に出力することで、内部の状態(ステートマシンのステート)、制御信号等を観測していた。しかし、これらの制御信号等をソフトウェアの制御に紐付けて観測する事は工数が必要であり、特に、ソフトウェアのアクセスによる制御の順番を期待動作としてデバッグするには多くの工数を必要としていた。また、CPU内蔵装置の場合、ICE(In-Circuit Emulator)等のデバッガが必要になり、デバッグにコストがかかってしまうという問題もあった。
本発明はかかる問題を解決することを目的としている。
即ち、本発明は、例えば、ソフトウェアおよびハードウェアの動作を監視してソフトウェアの不具合を容易にデバッグすることができる動作監視装置を提供することを目的としている。
上記に記載された課題を解決するために請求項1に記載された発明は、ソフトウェアによって制御されるハードウェアの動作を監視する動作監視装置において、前記ソフトウェアによる前記ハードウェアへのアクセスを検出するアクセス検出部と、前記ソフトウェアのアクセスに関連する前記ハードウェアの内部信号を取得する内部信号取得部と、前記ハードウェアへ前記ソフトウェアがアクセスする順序を予め記憶する設定記憶部と、前記アクセス検出部が検出した前記ソフトウェアのアクセスと、前記内部信号取得部が取得した前記内部信号と、前記設定記憶部に記憶されている前記アクセスする順序と、に基づいて前記ソフトウェアによるアクセスの良否を判定する判定部と、を有することを特徴とする動作監視装置である。
請求項1に記載の発明によれば、設定記憶部に記憶されたアクセス順に沿ったアクセスとなっているかを、アクセス検出部が検出した実際のアクセスと内部信号取得部が取得した内部信号と、に基づいて判定する。そのため、制御の順序を監視することができ、かつ、ハードウェアの動作との関連が把握できるため、ソフトウェア側の制御ミスや、不具合発生時のデバッグが容易となる。
以下、本発明の一実施形態を、図1乃至図10を参照して説明する。図1は、本発明の一実施形態にかかる動作監視装置を有する半導体集積回路の構成図である。図2は、図1に示された半導体集積回路のステートマシンの状態遷移図である。図3は、図1に示された期待動作設定部と判定部及びアドレス監視部、ハード監視部の要部構成図である。図4は、図3に示された期待動作設定部の期待動作配列の構成要素の説明図である。図5は、図1に示された期待動作設定部と記憶部及び出力部の要部構成図である。図6は、図5に示されたグループ判定結果の構成要素の説明図である。図7は、期待動作配列の設定例である。図8は、図1に示された判定部の動作のフローチャートである。図9は、期待動作配列の設定通りの動作をしない場合の例である。図10は、期待動作配列の設定通りの動作をしない場合の例である。
図1に、本発明の一実施形態にかかる動作監視装置を含む半導体集積回路1の構成図を示す。半導体集積回路1は、CPU2と、第1モジュール3と、第2モジュール4と、バス5と、動作監視回路6と、を有している。
CPU2は、公知の中央演算処理装置(Central Processing Unit)であり、プログラムメモリやデータメモリ等を有している。そして、プログラムメモリに格納されているプログラム(ソフトウェア)に基づいて動作する。
ソフトウェアによって制御されるハードウェアとしての第1モジュール3は、レジスタファイル31と、ステートマシン32と、を有している。レジスタファイル31は、複数のレジスタ(記憶領域)から構成され、レジスタごとに決められたアドレスを指定することでCPU2からはバス5経由でリードおよびライトアクセスが可能である。即ち、本実施形態では、レジスタファイル31がソフトウェアからアクセス可能な記憶装置となっている。勿論、レジスタファイル31に限らずRAM(Read Only Memory)等のメモリ素子であってもよい。
ステートマシン32は、予め設定された複数の状態が制御信号等のトリガとなる信号によって遷移し、その状態遷移によってモジュール内の制御を行う公知の制御回路である。本実施形態におけるステートマシン32の状態遷移図の一例を図2に示す。図2に示したように、ステートマシン32は、状態S1、S2、S3が設定されている。状態S1は初期状態(システムリセット直後に遷移する状態)であり、制御信号P1により状態S2に遷移する。状態S2は制御信号P2、P3では遷移せずに、制御信号P4により状態S3に遷移する。状態S3は、制御信号P5により状態S1に遷移する。なお、制御信号P1〜P4は、例えば第1モジュール3内における動作や半導体集積回路1内の他のモジュール等からの信号、あるいは半導体集積回路1外部からの信号等により生成される。また、ステートマシン32は、レジスタファイル31に記憶されているデータ等に基づいて内部の設定や制御等を行う。
第2モジュール4は、レジスタファイル41と、ステートマシン42と、を有している。レジスタファイル41は、複数のレジスタから構成され、CPU2からはバス5経由でリードおよびライトアクセスが可能である。
ステートマシン42は、予め定義された複数の状態を制御信号等のトリガとなる動作によって遷移し、その遷移によってモジュール内の制御を行う公知の制御回路である。ステートマシン42の状態遷移図は図2と同様とする。
バス5は、アドレス信号、リードまたはライト信号およびデータ信号等から構成されている。バス5は主にCPU2とモジュール3、4とのデータ転送に用いられる。また、バス5は、動作監視回路6とも接続され、動作監視回路6における動作監視動作や設定等に利用される。
動作監視回路6は、アクセス検出部としてのアクセス監視部61と、内部信号取得部としてのハード監視部62と、設定記憶部としての期待動作設定部63と、記憶部64と、判定部65と、出力部66と、を有している。
アクセス監視部61は、バス5からCPU2がレジスタファイル31、41にアクセスするアドレスやリードまたはライト信号を取得して、CPU2のレジスタファイル31、41に対するアクセスを監視(検出)する。即ち、ソフトウェアによるハードウェアへのアクセスを検出している。また、アクセス監視部61は、バス5から取得したアドレス、リードまたはライト信号およびデータをアクセス履歴として記憶部64に出力する。なお、アクセス監視部61には、監視対象となるアドレスのみを抽出するためにベースアドレスが設定できるようにしてもよい。
ハード監視部62は、ステートマシン32、42の状態情報およびCPU2のアクセスによって発生した制御信号をそれぞれ取得することで監視している。制御信号の例としては、CPU2がレジスタファイル31、41の所定のアドレスに書き込んだデータに基づいて生成される制御信号等が挙げられる。即ち、ステートマシン32、42の状態情報およびCPU2のアクセスによって発生した制御信号が、ソフトウェアのアクセスに関連するハードウェアの内部信号となる。なお、内部信号としては、CPU2のアクセスによってレジスタファイル31、41に書き込まれたデータをデコード等の演算により発生する信号に限らない。例えば、レジスタファイル31、41に書き込まれたデータそのものやCPU2のアクセスによって値が変化する信号や内部レジスタ等の値も含む。
期待動作設定部63は、バス5を介して設定される期待動作配列が格納されている。期待動作設定部63は、例えば図3に示したように、複数の期待動作配列(期待動作1〜16)からなるグループが複数格納されている。期待動作配列は後述するように1つの配列でレジスタファイル31、41の1つのアドレスに対応し、それらがCPU2がアクセスする順に格納されている。例えば図3の場合、期待動作1、期待動作2、期待動作3、…、期待動作15、期待動作16の順にアクセスする。つまり、配列の並びがアクセス順を意味し、即ち、ソフトウェアがハードウェアにアクセスする順序が記憶されている。なお、1グループ当りの期待動作配列の数はデバッグ環境や回路規模等に応じて適宜変更してもよい。
期待動作配列は、図4に示したように、ハード信号、アドレス、データ、順序期待、最終フラグ、期待チェック、エラーフラグの各要素から構成されている。ハード信号は、ステートマシン32、42が取るべき状態情報を示している。アドレスは、CPU2がレジスタファイル31、41内の一つのレジスタへアクセスするために指定するアドレスを示している。即ち、1つの配列が1アクセス分の設定を示している。データは、指定したアドレスにCPU2が書き込むデータを示している。なお、データ要素は、設定せずに後述する判定部65による比較を行わないようにしてもよい。順序期待は、実行の順序に制約があるか、具体的には1つ後の配列の前に実行される必要があるか否か、つまり当該配列の示すアクセスが順不同でよいか否かを示している。最終フラグは、最後の配列(次のアクセスは先頭の配列、即ち遷移先が初期状態)であるかを示している。
期待チェックは、初期値は“0”であり、判定部65による判定の結果期待通りの動作であった場合に“1”が書き込まれる。エラーフラグは、初期値は“0”であり、判定部65による判定の結果期待通りの動作でなかった場合に“1”が書き込まれる。即ち、期待チェックおよびエラーフラグの各要素が、判定部65が判定した結果をアクセスごとに記憶する判定結果記憶部として機能する。
記憶部64は、レジスタファイル31、41へのアクセス履歴や、判定部65における判定結果を記憶する。記憶部64は、図5に示したように、アクセス履歴記憶部64aと、グループ判定結果記憶部64bを有している。アクセス履歴記憶部64aには、アドレスやリードまたはライトの識別およびデータなどのバス5を介したレジスタファイル31、41へのアクセスの履歴が記憶される。アクセス履歴記憶部64aは、FIFO(First-In First-Out)構造になっており、アクセスされた順にデータはシフトしていく。なお、図5では、アクセス履歴記憶部64aは32段となっており、最新の32回分のアクセスが記憶可能となっている。なお、アクセス履歴記憶部64aの段数はデバッグ環境や回路規模等に応じて適宜変更してもよい。
グループ判定結果記憶部64bには、期待動作設定部63に設定された期待動作の良否(OKまたはNG)がグループ毎に記憶される。グループ判定結果記憶部64bとして記憶される要素の例を図6に示す。図6に示したように、グループ判定結果64bは、グループの判定結果の情報として判定結果、カウンタ、エラー種別の各要素から構成されている。判定結果は、グループとしての判定結果を示している。カウンタは、ステートマシンのループ回数を示している。エラー種別は、禁止データ設定によるエラー、アクセス順間違いによるエラー、レジスタ未設定によるエラーのうちいずれかを例えば予め設定されている識別コード等により示している。
禁止データ設定によるエラーとは、ハード信号、アドレス、データの各領域が期待通りでなかった場合を示すエラーである。アクセス順間違いによるエラーとは、期待動作配列の順序どおりにアクセスが行われなかった場合を示すエラーである。レジスタ未設定によるエラーとは、最後の期待動作配列までアクセスが行われた後に全ての期待チェックが設定されていないことによるエラーである。
判定部65は、アクセス監視部61が監視しているレジスタファイル31、41へのアクセスと、ハード監視部62が監視しているステートマシン32、42の状態情報やアクセスの結果生成される制御信号の有無と、期待動作設定部63に設定されている期待動作配列に基づいて、レジスタファイル31、41へのアクセスが期待されている動作となっているか判定する。即ち、ソフトウェアによるアクセスの良否を判定する。そして、判定結果を期待動作配列の期待チェック要素やエラーフラグ要素および記憶部64等に記憶する。
出力部66は、期待動作設定部63や記憶部64に設定または記憶されている情報を出力する。出力部66は、図5に示したようにシリアルI/F(インタフェース)を内蔵し、各種情報をシリアルデータとして出力する。
ここで、期待動作配列の設定例と動作監視回路6の具体的動作について図7乃至図10を参照して説明する。なお、以降の動作は第1モジュール3のレジスタファイル31とステートマシン32の動作を例に説明するが第2モジュール4のレジスタファイル41とステートマシンも同様である。
図7は、期待動作設定部63の期待動作配列の設定例である。図7に示した期待動作配列は、(a)の期待動作配列1〜(e)の期待動作配列5まで5つの配列が1つのグループとして構成されている。図7(a)の期待動作配列1について説明する。期待配列動作1は、ハード信号には、M1−S1(第1モジュールのステートマシン32の状態S1)と設定されている。アドレスには、A1(アクセスすべきレジスタのアドレス値)が設定されている。データにはD1(CPU2から書き込まれるデータ)が設定されている。順序期待には、“1”(順不同で実行されてはならない、つまり後の配列よりも前に実行されなければならない)が設定されている。ここで、後の配列とはアクセス順で次にアクセスされるべき配列である期待動作配列2を示している。最終フラグには“0”(最後の配列でない)が設定されている。また、期待チェック、エラーフラグは、判定部65の判定により書き込まれるので初期値である“0”となっている。つまり、期待動作配列1は、アクセス監視部61がアドレスA1へのアクセスを検出したときに、ハード監視部62が状態S1とデータD1またはデータD1に相当する制御信号を検出した場合は、期待通りと判定される。なお、データ要素の比較を行わない場合は、状態情報のみの比較により期待通りか否かの判定を行う。
期待配列動作2は、ハード信号には、M1−S2と設定され、アドレスには、A2が設定され、データにはD2が設定され、順序期待には、“0”(順不同で実行されてもよい、つまり後の配列よりも後に実行されてもよい)が設定されている。期待動作配列3〜5も、期待値配列1や2と同じ要領で、ハード信号、アドレス、データ、順序期待、最終フラグの各要素について設定する。なお、期待動作配列5は、最終フラグ要素が“1”であり、この配列が最後であることを示しているので、順序期待要素は“0”でも“1”でもよい。つまり、最後の配列である期待動作配列5では、後の配列との順序を評価するために使用する順序期待要素は使用されない。
図7に示した期待動作配列は、CPU2のレジスタアクセスの順序が(a)が先頭で、(e)が最後となっている。そして、その途中の順序は上述した順序期待要素により規定されている。
次に、CPU2からのアクセスが期待通りの動作の具体例を説明する。まず、アクセス監視部61は期待動作配列1(図7(a))に対応するアドレスA1を観測した場合、判定部65の動作を要求する。判定部65は、期待動作設定部63のハード信号要素およびデータ要素と、ハード監視部62が観測した状態情報および制御信号と、を比較し、期待通りであるかを判定する。期待動作がOKの場合は、期待動作配列1の期待チェック要素を“1”に設定することで期待チェックがされたことを記憶させる。期待動作配列2〜4(図7(b)〜(d))においても、期待動作配列1と同様である。即ち、レジスタアクセスを監視し、対象アドレスA2〜A4を観測後、アクセス監視部61が判定部65の動作を要求し、期待動作設定部に記憶されている期待動作配列及びハード監視部62の観測した状態情報や制御信号に基づいて、期待通りか判定する。
期待動作配列5(図7(e))に関しても、期待動作配列1〜4と同様にレジスタアクセスを監視し、判定を実施する。ここで期待動作配列5は最終フラグが“1”と設定されている。したがって、期待動作配列5の判定後、グループ全体の判定を行う。
期待動作配列1〜5の全ての期待チェック要素が“1”に設定されていることを確認することで、当該グループのCPU2からのアクセスが正常に行われたことが確認できる。全ての期待チェック要素が“1”に設定されている場合、期待動作配列1〜5が含まれるグループ1の動作がOKであるとして結果を記憶部64のグループ判定結果記憶部64bのグループ1の判定結果配列に書き込む。その後、判定部65は、期待動作配列の期待チェック要素をすべて0に設定し、期待動作配列1のチェックに戻る。
次に、エラー判定となる動作の具体例を説明する。例として期待動作配列1のアクセスの前に期待動作配列2のアクセスがなされた場合を想定する。期待動作配列2に相当するアドレスA2がアクセスされた場合、判定部65は期待動作配列2の一つ前の配列である期待動作1の順序期待要素と期待チェック要素を確認する。順序期待要素が“1”でかつ期待チェック要素が“0”、すなわち期待動作配列1のアドレスA1へのアクセスがまだである場合、エラー判定とし、期待動作配列2のエラーフラグ要素に“1”を設定する。
また、期待動作配列5のアクセスの前に期待動作配列1〜4のいずれかが実施されていない場合を想定する。この場合期待動作配列1〜4のいずれかの期待チェック要素が“1”に設定されていないこととなるため、エラー判定とし、期待チェック要素が“1”に設定されていない配列のエラーフラグ要素を“1”に設定する。
ここで、上述した動作を図8のフローチャートにまとめる。まず、ステップS101において、アクセス監視部61がレジスタアクセスを観測したか否かを判断し、観測した場合(YESの場合)はステップS102に進む。次にステップS102において、期待動作配列のデータ要素の比較を行うか否か(比較スルーか否か)を判断し、比較を行う場合(NOの場合)はステップS103に進み、データ要素の比較を行わない場合(YESの場合)はステップS104に進む。データ要素の比較を行うか否かは、予め判定部65に設定するようにしてもよいし、期待動作設定部63においてグループ毎や配列毎に設定するようにしてもよい。
次に、ステップS103において、データ要素およびハード信号要素を、ハード監視部62が観測した状態およびデータ要素のデータがレジスタファイル31の所定のアドレスに書き込まれた結果生成される制御信号と比較してステップS104に進む。次に、ステップS104において、比較の結果期待通りであった場合(YESの場合)はステップS105に進む。なお、ステップS102で比較スルーと判断された場合は、ステップS104における判断の前までにハード信号要素と状態情報の比較を行っておく。
次に、ステップS105において、1つ前の期待動作配列を確認してステップS106に進む。次に、ステップS106において、ステップS105で確認した1つ前の期待動作配列の順序期待要素が“1”であるか否かを判断し、“1”である場合(YESの場合)はステップS107に進む、“0”である場合(NOの場合)はステップS108に進む。次に、ステップS107において、ステップS105で確認した1つ前の期待動作配列の期待チェック要素が“1”であるか否かを判断し、“1”である場合(YESの場合)はステップS8に進む、“0”である場合(NOの場合)はステップS109に進む。
ステップS106とS107では、1つ前の期待動作配列の順序期待要素と期待チェック要素を確認することで、CPU2のレジスタファイル31へのアクセス順の良否を判定している。つまり、1つ前の順序期待要素が“0”であれば、現在判定中のレジスタアクセス動作は1つ前の期待動作配列よりも前にアクセスされてもよいこととなる。また、1つ前の順序期待要素が“1”で1つ前の期待チェック要素が“1”であれば、現在判定中のレジスタアクセス動作は1つ前の期待動作配列の後にアクセスすべきところ、その期待通りにアクセスされていることとなる。また、1つ前の順序期待要素が“1”で1つ前の期待チェック要素が“0”であれば、現在判定中のレジスタアクセス動作は1つ前の期待動作配列の後にアクセスすべきところ、1つ前の期待動作配列の前にアクセスされていることとなる。
次に、ステップS108においては、状態および制御信号の比較やレジスタのアクセス順が期待通りであったので、現在のアクセスに対応する期待動作配列の期待チェック要素を“1”にしてステップS110に進む。一方、ステップS109においては、状態および制御信号の比較またはレジスタのアクセス順が期待通りでなかったので、現在のアクセスに対応する期待動作配列のエラーフラグ要素を“1”にしてステップS114に進む。
次に、ステップS110において、1つのグループ内における最終の配列であるか否かを判断し、最終の配列の場合(YESの場合)はステップS111に進み、最終の配列でない場合(NOの場合)はステップS114に進む。最終の配列か否かは、上述したように期待動作配列の最終フラグ要素を確認する。
ステップS110で最終の配列であった場合はステップS111において、全ての期待要素配列の期待チェック要素が全て“1”か否かを判断し、全て“1”である場合はステップS112に進み、そうでない場合はステップS113に進む。次に、ステップS112において、ステップS111に判断の結果1つ前までの期待チェック要素が全て“1”であったので、当該グループ内の期待チェック要素をクリア(“0”)しステップS114に進む。なお、ステップS111では、上記動作とともに、記憶部64のグループ判定結果記憶部64bに該当するグループの判定結果を格納する。一方、ステップS113においては、ステップS111に判断の結果1つ前までの期待チェック要素が全て“1”でなかったので、期待チェック要素が“0”の配列のエラーフラグ要素を“1”にしステップS114に進む。
次に、ステップS114において、エラーフラグ要素が“1”か否かを判断し、“1”の場合(YESの場合)は、ステップS115に進み、そうでない場合(NOの場合)はステップS101に戻る。次に、ステップS115において、エラーフラグ要素が“1”であったので動作監視回路6および第1モジュール3、第2モジュール4の回路動作を停止させて、CPU2に対してエラー割り込みを行いエラーの通知をする。
また、ステップS114においては、エラーフラグの判定と同時に、記憶部64のグループ判定結果記憶部64bに該当するグループの判定結果を格納する。
そして、回路停止後に出力部66から、期待動作設定部63に記憶されている内容や記憶部64に記憶されている内容を出力する。なお、記憶部64のアクセス履歴記憶部64aの内容は、図8のフローチャートの実行に関係なく、随時出力部66から出力されるようにしてもよい。
以上の説明から明らかなように、ステップS1がアクセス検出工程、ステップS103が内部信号取得工程、ステップS104、S106、S107、S111が判定工程として機能する。
図10は、アドレスA2へのアクセスを行わなかった場合の例である。この例では、2段目の配列の期待チェック要素が“0”で、かつエラーフラグ要素が“1”となっている。これは、エラーフラグ要素が“1”に設定されていることで、アドレスA2へのアクセスが未設定のまま制御が進んでしまった不具合である事が解析できる。図8のフローチャートに沿って説明すると、3段目の配列にかかるアクセスを観測した時点では、順序期待要素が“0”であるので、ステップS106、S108と進むため、エラーとはならない。最後の配列にかかるアクセスを観測すると、ステップS110、S111、S113と進むため、エラーを検出することができる。
図11は、アドレスA3へのアクセスの前に、アドレスA4へアクセスしてエラーになった場合の例である。この例では、3段目の配列と4段目の配列の期待チェック要素が“0”で、かつ4段目の配列のエラーフラグ要素が“1”となっている。これらの情報から、順番を間違えた不具合である事が解析できる。図8のフローチャートに沿って説明すると、4段目の配列にかかるアクセスを観測した時点で、1つ前の期待動作配列である3段目の配列の順序期待要素が“1”で期待チェック要素が“0”であるので、ステップS105、S106、S107、S109と進み4段目の配列のエラーフラグ要素が“1”となる。そして、ステップS114でエラーフラグ要素が“1”であるので、ステップS116に進み回路停止してエラー割り込みが行われる。図11の場合は、グループの途中で回路動作が停止するので、エラー検出後の配列(最後の配列)にかかるアクセスは行われない。
なお、本実施形態において、1回の状態遷移のループ中に同じアドレスをアクセスする重複アクセスを検出するようにしてもよい。例えば、一度アクセスがあったアドレスに対し、再度アクセスがあった場合は、期待チェック要素を取り出して比較をする。そして、すでに“1”が設定されている場合はエラー判定とすればよい。これは、図8のフローチャートであれば、例えばステップS101でチェックすることができる。
本実施形態によれば、動作監視回路6が、CPU2のレジスタアクセスを監視するアクセス監視部61と、ステートマシン32の状態情報とCPU2によってレジスタに書き込まれたデータによって生成される制御信号を監視するハード監視部62と、を有している。そして、期待動作配列が格納されている期待動作設定部63を有している。さらに、アクセス監視部61が検出したレジスタアクセス、ハード監視部62が検出した状態および制御信号および期待動作配列に基づいてレジスタアクセス動作が期待通りか否かを判定する判定部65と、を有している。そのため、制御の順序を監視することができ、かつ、ステートマシンの状態との関連が把握できるため、ソフトウェア側の制御ミスや、不具合発生時のデバッグが容易となる。
また、第1モジュール3は、CPU2にアクセスされるレジスタファイル31を有しているので、CPU2からの制御がレジスタファイルへ31のアクセスにより行うことができる。また、CPU2のアクセスを検出するのをバス5上のアドレスにより検出することができる。
また、期待動作配列に順序期待要素を含むので、順不同にアクセスしてもよいレジスタが混在する場合でもデバッグすることができる。
また、記憶部64にCPU2のアクセス履歴を記憶することができるため、レジスタアクセス順序の良否以外に実際のアクセス内容を確認することができる。したがって、デバックが効率良く行うことができる。
また、出力部66が、期待動作設定部63に格納されている期待動作配列や記憶部64に記憶されているアクセス履歴やグループの判定結果をシリアルデータとして出力することができるので、これらの情報を出力するための信号線を少なくすることができる。また、外部デバッグ機器等を用いること判定結果等の情報を取得することができる。
また、エラーフラグ要素に“1”が設定された場合は、回路動作を停止させてCPU2に割り込んで通知しているので、期待通りの動作で無かった場合に、速やかに通知することができる。
なお、上述した実施形態では、ソフトウェアはステートマシン32の状態遷移まで制御していない例を示したが、CPU2がレジスタファイル31の所定のアドレスのレジスタに書き込むことで状態遷移の契機となる制御信号P1〜P4を生成する構成としてもよい。この場合、ハード監視部62は、状態が遷移するトリガとなる制御信号をそれぞれ取得して監視する。また、期待動作配列のデータ要素は、ステートマシン32、42において状態を遷移させるトリガとなる情報が設定される。この場合、CPU2がより密接にステートマシン32の制御に関わる構成となり、本発明を適用することで、そのような構成のハードウェアにおいても、ソフトウェア側の不具合をデバッグすることが可能となる。
また、上述した実施形態では、レジスタファイル31等の記憶装置を介してCPU2がステートマシン32に対してデータ等を送信する構成であったが、それに限らない。例えば、アドレスが入力されるとステートマシン32の制御信号が生成されるデコーダ等の回路であってもよい。あるいは、バスを介さずに専用の制御信号で直接接続する構成であってもよい。専用の制御信号の場合は、アドレスに代えてその制御信号を期待動作配列に設定すればよい。
また、上述した実施形態では、ソフトウェアに制御されるハードウェアとしてステートマシン32を例示したが、それに限らず、任意のデータ処理を行う演算回路等の論理回路であってもよい。この場合、ハード監視部で監視する要素としては、ソフトウェアからアクセスされる要素(レジスタ、メモリ等)やソフトェアのアクセスによって生成される制御信号等を監視するようにすればよい。
また、上述した実施形態では、CPUが半導体集積回路に内蔵されている形態であったが、外部に設けられていてもよい。即ち、外部のCPUやコンピュータ等のソフトウェアによる制御装置からアクセスされる構成であってもよい。
また、本発明は上記実施形態に限定されるものではない。即ち、当業者は、従来公知の知見に従い、本発明の骨子を逸脱しない範囲で種々変形して実施することができる。かかる変形によってもなお本発明の動作監視装置および動作監視方法の構成を具備する限り、勿論、本発明の範疇に含まれるものである。
1 半導体集積回路
2 CPU
3 第1モジュール
31 レジスタファイル
32 ステートマシン
4 第2モジュール
6 動作監視回路(動作監視装置)
61 アクセス監視部
62 ハード監視部
63 期待動作設定部
64 記憶部
65 判定部
S101 レジスタアクセス観測(アクセス検出工程)
S103 内部信号取得工程(内部信号取得工程)
S104 期待通り(判定工程)
S106 順序期待要素が1(判定工程)
S107 期待チェック要素が1(判定工程)
S111 1つ前までの期待チェック要素が1(判定工程)
2 CPU
3 第1モジュール
31 レジスタファイル
32 ステートマシン
4 第2モジュール
6 動作監視回路(動作監視装置)
61 アクセス監視部
62 ハード監視部
63 期待動作設定部
64 記憶部
65 判定部
S101 レジスタアクセス観測(アクセス検出工程)
S103 内部信号取得工程(内部信号取得工程)
S104 期待通り(判定工程)
S106 順序期待要素が1(判定工程)
S107 期待チェック要素が1(判定工程)
S111 1つ前までの期待チェック要素が1(判定工程)
Claims (10)
- ソフトウェアによって制御されるハードウェアの動作を監視する動作監視装置において、
前記ソフトウェアによる前記ハードウェアへのアクセスを検出するアクセス検出部と、
前記ソフトウェアのアクセスに関連する前記ハードウェアの内部信号を取得する内部信号取得部と、
前記ハードウェアへ前記ソフトウェアがアクセスする順序を予め記憶する設定記憶部と、
前記アクセス検出部が検出した前記ソフトウェアのアクセスと、前記内部信号取得部が取得した前記内部信号と、前記設定記憶部に記憶されている前記アクセスする順序と、に基づいて前記ソフトウェアによるアクセスの良否を判定する判定部と、
を有することを特徴とする動作監視装置。 - 前記ハードウェアがステートマシンを含み、
前記内部信号取得部は、前記ステートマシンの状態情報を取得し、
前記設定記憶部には、アクセスごとに前記ステートマシンが取るべき状態情報が設定され、
前記判定部が、前記アクセス検出部が検出した前記ソフトウェアのアクセスと、前記内部信号取得部が取得した前記状態情報と、前記設定記憶部に記憶されている前記アクセスする順序および前記ステートマシンが取るべき状態情報と、に基づいて前記ソフトウェアによるアクセスの良否を判定する
ことを特徴とする請求項1に記載の動作監視装置。 - 前記ハードウェアが前記ソフトウェアからアクセス可能な記憶装置を有し、
前記アクセス検出部は、前記ソフトウェアによる前記記憶装置へのアドレスを検出し、
前記設定記憶部には、アクセスごとに前記ソフトウェアがアクセスすべき前記記憶装置のアドレスが設定され、
前記判定部が、前記アクセス検出部が検出した前記アドレスと、前記内部信号取得部が取得した前記状態情報と、前記設定記憶部に記憶されている前記アクセスする順序や前記ソフトウェアがアクセスすべきアドレスおよび前記ステートマシンが取るべき状態情報と、に基づいて前記ソフトウェアによるアクセスの良否を判定する
ことを特徴とする請求項2に記載の動作監視装置。 - 前記設定記憶部には、1アクセスごとに前記ソフトウェアによるアクセスが順不同でよいか否かを示す情報が記憶されていることを特徴とする請求項1乃至3のうちいずれか一項に記載の動作監視装置。
- 前記ソフトウェアが前記ハードウェアへアクセスした履歴を記憶する履歴記憶部を有していることを特徴とする請求項1乃至4のうちいずれか一項に記載の動作監視装置。
- 前記判定部が判定した結果をアクセスごとに記憶する判定結果記憶部を有していることを特徴とする請求項1乃至5のうちいずれか一項に記載の動作監視装置。
- 前記判定部の判定結果を出力する出力部を有し、
前記出力部が、前記履歴記憶部に記憶されている前記履歴および前記判定結果記憶部に記憶されている判定した結果のうち、少なくともいずれかをシリアルデータとして出力することを特徴とする請求項5または6に記載の動作監視装置。 - ソフトウェアによって制御されるハードウェアの動作を監視する動作監視装置で実行される動作監視方法において、
前記ソフトウェアによる前記ハードウェアへのアクセスを検出するアクセス検出工程と、
前記ソフトウェアのアクセスに関連する前記ハードウェアの内部信号を取得する内部信号取得工程と、
前記アクセス検出工程で検出した前記ソフトウェアのアクセスと、前記内部信号取得工程で取得した前記内部信号と、前記ハードウェアへ前記ソフトウェアがアクセスする順序を予め記憶する設定記憶部と、に基づいて前記ソフトウェアによるアクセスの良否を判定する判定工程と、
を含むことを特徴とする動作監視方法。 - 前記ハードウェアがステートマシンを含み、
前記内部信号取得工程では、前記ステートマシンの状態情報を取得し、
前記設定記憶部には、アクセスごとに前記ステートマシンが取るべき状態情報が設定され、
前記判定工程では、前記アクセス検出工程で検出した前記ソフトウェアのアクセスと、前記内部信号取得工程で取得した前記状態情報と、前記設定記憶部に記憶されている前記アクセスする順序および前記ステートマシンが取るべき状態情報と、に基づいて前記ソフトウェアによるアクセスの良否を判定する
ことを特徴とする請求項8に記載の動作監視方法。 - 前記ハードウェアが前記ソフトウェアからアクセス可能な記憶装置を有し、
前記アクセス検出工程では、前記ソフトウェアによる前記記憶装置へのアドレスを検出し、
前記設定記憶部には、アクセスごとに前記ソフトウェアがアクセスすべき前記記憶装置のアドレスが設定され、
前記判定工程が、前記アクセス検出部が検出した前記アドレスと、前記内部信号取得工程で取得した前記状態情報と、前記設定記憶部に記憶されている前記アクセスする順序や前記ソフトウェアがアクセスすべきアドレスおよび前記ステートマシンが取るべき状態情報と、に基づいて前記ソフトウェアによるアクセスの良否を判定する
ことを特徴とする請求項9に記載の動作監視方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013113907A JP2014232478A (ja) | 2013-05-30 | 2013-05-30 | 動作監視装置および動作監視方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2013113907A JP2014232478A (ja) | 2013-05-30 | 2013-05-30 | 動作監視装置および動作監視方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014232478A true JP2014232478A (ja) | 2014-12-11 |
Family
ID=52125803
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2013113907A Pending JP2014232478A (ja) | 2013-05-30 | 2013-05-30 | 動作監視装置および動作監視方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014232478A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10789144B2 (en) | 2018-03-01 | 2020-09-29 | Kabushiki Kaisha Toshiba | Supervisory circuit, supervisory system, motor control system |
-
2013
- 2013-05-30 JP JP2013113907A patent/JP2014232478A/ja active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10789144B2 (en) | 2018-03-01 | 2020-09-29 | Kabushiki Kaisha Toshiba | Supervisory circuit, supervisory system, motor control system |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8370816B2 (en) | Device, method and computer program product for evaluating a debugger script | |
CN112041821B (zh) | 用于冗余处理器错误检测的设备、系统和过程 | |
US9405315B2 (en) | Delayed execution of program code on multiple processors | |
US8291388B2 (en) | System, method and program for executing a debugger | |
US8745447B2 (en) | System and method for analyzing an electronics device including a logic analyzer | |
CN104320308B (zh) | 一种服务器异常检测的方法及装置 | |
CN106919462B (zh) | 一种生成处理器故障记录的方法及装置 | |
CN109753391A (zh) | 处理器的一个或多个结构的功能测试的系统、装置和方法 | |
US7617428B2 (en) | Circuits and associated methods for improved debug and test of an application integrated circuit | |
JP6375200B2 (ja) | 計算機システムの異常予兆検出装置および方法 | |
JP6981920B2 (ja) | 半導体装置、およびデバッグ方法 | |
JP2014232478A (ja) | 動作監視装置および動作監視方法 | |
JP2009223714A (ja) | 演算回路及び演算回路の異常解析方法 | |
CN115756935A (zh) | 嵌入式软件系统的异常故障定位方法、装置及设备 | |
CN110399258B (zh) | 一种服务器系统的稳定性测试方法、系统及装置 | |
JP2007058450A (ja) | 半導体集積回路 | |
US9792202B2 (en) | Identifying a configuration element value as a potential cause of a testing operation failure | |
JP5440673B1 (ja) | プログラマブルロジックデバイス、情報処理装置、被疑箇所指摘方法およびプログラム | |
JP2017010431A (ja) | デバッグシステム | |
JP2008152665A (ja) | 半導体集積回路の動作解析方法 | |
TW201928669A (zh) | 電腦設備、診斷方法以及非暫時性電腦可讀儲存媒體 | |
US10261887B1 (en) | Method and system for computerized debugging assertions | |
US20080195896A1 (en) | Apparratus and method for universal programmable error detection and real time error detection | |
JP2016146032A (ja) | ソフトウェアの網羅試験装置および網羅試験方法 | |
US20170153957A1 (en) | Method for testing a computer system with a basic input/output system interface program |