説明

レジスタ設定値監視モジュール、システムおよびレジスタ設定値監視方法

【課題】 ソフトウェア開発の初期の段階においてレジスタ設定値間違いを発見することができるレジスタ設定値監視モジュールを提供する。
【解決手段】 レジスタチェックモジュール4は、機能ブロック6,7,8の制御レジスタの設定値に対する期待値を格納する制御レジスタ群22と、CPUにより機能ブロック6,7,8の制御レジスタに対して設定される設定値と制御レジスタ群22に格納されている期待値とを比較する比較回路23とを有する。レジスタチェックモジュール4は、比較回路23による比較結果が制御レジスタ群22に対して設定される設定値と制御レジスタ群22に格納されている期待値との不一致を示す場合、CPU2に対してエラー通知を出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、中央処理装置により、機能ブロックの制御レジスタに対して設定される設定値を監視するためのレジスタ設定値監視モジュール、システムおよびレジスタ設定値監視方法に関する。
【背景技術】
【0002】
立ち上げ初期の実機テスト環境において起こる不具合の原因の多くは、機能ブロック内の制御レジスタに対する設定値の間違いである。設定値の間違いの種類としては、複数の種類が存在するが、大きく分けて以下のような種類がある。
【0003】
(1)モジュール仕様書記載の制限を超えた設定値を設定するコーディング上のケアレスミス
(2)複数のモジュール間で設定値の制限があり、設定値の調整が必要な場合
(3)モジュール単独仕様と、当該モジュールがシステムに組み込まれた際の当該モジュール仕様との違いを見落とした場合
ここで、上記項目(2)については、複数の機能モジュール間で信号をやりとりするような場合、それらのモジュール間において仕様制限が存在することが多い。しかもその仕様制限がハードウェア実装特有な事象を起因とする場合において、その仕様制限は、ソフトウェア担当者にとっては一層理解し難いものになる。
【0004】
上記項目(3)が生じる原因には、近年のASIC開発期間短縮化の有効手段として取り上げられる「設計資産の再利用」が大きく関わることにある。将来再利用可能なように汎用的な機能を有する機能モジュールをASICに搭載する場合、システムの観点から、その機能モジュールは、通常必要としない機能すなわち冗長な機能を備える。
【0005】
ここで、再利用性を考慮して、汎用性を持たせたDMAC(DMAコントローラ)(例えば、特許文献1)について説明する。IOデバイス(入出力デバイス)から外部メモリへDMAを行う方向、また外部メモリからIOデバイスへDMAを行う方向の双方をサポートする汎用DMACがあり、このDMACは、DMA方向をある特定レジスタでスタティックに切り替えることが可能な仕様とされる。仮に、DMACと接続されるIOデバイスが双方向をサポートしている場合は、アクセス方向に応じてレジスタが切り替えられて使用される。一方、単方向のみをサポートしているIOデバイスに対して上記汎用DMACを接続する場合、DMA方向切り替えレジスタの値は常に一定のはずである。しかし、汎用DMACを使用している以上、方向切り替えレジスタには自由にアクセス可能であるため、方向切り替えレジスタの値をソフトウェアが誤って書き換えてしまうことがあり、これが不具合を引き起こす。
【0006】
従来、実機環境においてこのような不具合を発見するためには、設計者は、実機に生じている現象からモジュールを特定し、特定されたモジュールにおいて、ソフトウェアコーディング上の設定間違いがないかを仕様書に従って確認し、またはハードウェア設計者とのやりとりで仕様の確認を行うなどの作業を行う。
【0007】
また、設定制約が守られているか否かを判定する機能をハードウェアとしてモジュールに設け、この機能により設定制約が守られていないと判定された場合に、割り込み通知を行い、またはバスエラー処理を行う方法がある。
【特許文献1】特開2002‐342259号公報
【発明の開示】
【発明が解決しようとする課題】
【0008】
しかしながら、上述した従来の実機環境において生じた不具合からモジュールを特定する方法では、最初に特定されたモジュールの設定に問題があった場合、通常、不具合修正には多くの時間が費やされることはないが、設定間違いが別のモジュールの設定に起因している場合などは、その不具合発見、修正に多くの時間が費やされる。例えば、クロック生成ブロックで生成されるクロック信号の周波数の制約に間違いがあった場合などがこれに該当する。
【0009】
また、モジュールに設けられた、設定制約が守られているか否かを判定する機能を用いる方法は、モジュールで完結するような制約には適応可能であるが、モジュールレベルを超えたシステム構成において存在する制約に対しては適応することができない。
【0010】
また、不具合の原因がハードウェアのバグに起因するものである場合、そのソフトウェアワークアラウンドを適用して不具合回避を行うことがしばしばある。この場合、正しくソフトウェアワークアラウンドが行われ、禁止された設定が繰り返しなされていないかというチェックが必要になる。
【0011】
本発明の目的は、ソフトウェア開発の初期の段階においてレジスタ設定値間違いを発見することができるレジスタ設定値監視モジュール、システムおよびレジスタ設定値監視方法を提供することにある。
【課題を解決するための手段】
【0012】
本発明は、上記目的を達成するため、機能ブロックの制御レジスタの設定値に対する期待値を格納するレジスタ設定期待値格納手段と、中央処理装置により前記制御レジスタに対して設定される設定値と前記レジスタ設定期待値格納手段に格納されている期待値とを比較する比較手段と、前記比較手段による比較結果が前記制御レジスタに対して設定される設定値と前記レジスタ設定期待値格納手段に格納されている期待値との不一致を示す場合、前記中央処理装置に対してエラー通知を出力するエラー通知手段とを備えることを特徴とするレジスタ設定値監視モジュールを提供する。
【0013】
また、本発明は、上記目的を達成するため、上記レジスタ設定値監視モジュールを有することを特徴とするシステムを提供する。
【0014】
また、本発明は、上記目的を達成するため、中央処理装置により機能ブロックの制御レジスタに対して設定される設定値とレジスタ設定期待値格納手段に格納されている前記制御レジスタの設定値に対する期待値とを比較する比較工程と、前記比較工程での比較結果が前記制御レジスタに対して設定される設定値と前記レジスタ設定期待値格納手段に格納されている期待値との不一致を示す場合、前記中央処理装置に対してエラー通知を出力するエラー通知工程とを有することを特徴とするレジスタ設定値監視方法を提供する。
【発明の効果】
【0015】
本発明によれば、ソフトウェア開発の初期の段階においてレジスタ設定値間違いを発見することができる。
【発明を実施するための最良の形態】
【0016】
以下、本発明の実施の形態について図面を参照しながら説明する。
【0017】
(第1の実施の形態)
図1は本発明の第1の実施の形態に係るレジスタチェックモジュール(レジスタ設定値監視モジュール)を含むシステム構成を示すブロック図である。
【0018】
システムには、図1に示すように、バスマスタの1つとしてCPU2が設けられており、CPU2は、システムバス1を介して、各機能モジュール6,7,8内の制御レジスタ(図示せず)に対してレジスタ設定を行う。各機能モジュール6,7,8の制御レジスタへのアクセスは、各機能モジュール6,7,8を一括して制御するスレーブI/F5を介して行われる。このスレーブI/F5は、バスマスタ(CPU2を含む)からバスアドレスをデコードし、各機能モジュールに割り当てられたアドレスであれば、その機能モジュールに対してアクセス開始信号を送信するとともに、レジスタアドレスと書き込みデータを送信する。これらの信号13,14,15,16は、一旦レジスタチェックモジュール4で受信された後、信号10,11,12として各機能モジュール6,7,8へ送信される。
【0019】
信号13,14,15,16のうちの一つは、レジスタチェックモジュール4内の制御レジスタへのアクセス専用信号である。信号10〜16のプロトコルは、全て共通であり、レジスタチェックモジュール4が実装されない場合においては、スレーブI/F5と各機能モジュール6,7,8とは直接接続可能である。アクセス開始信号を受けた機能モジュール6,7,8は、アドレスをデコードしアクセスされたレジスタに対して書き込みを行う。書き込みが完了すると、レジスタチェックモジュール4は、スレーブI/F5へアクセス終了信号を送信し、スレーブI/F5は、上記アクセス終了信号を受けてシステムバス1に対してレディを返し、バストランザクションを完了する。
【0020】
ここでは、レジスタライトアクセスについて述べたが、リードアクセスについても同様である。詳細には、リードアクセスの場合、リードデータがアクセス終了信号と同時に各機能モジュールからレジスタチェックモジュール4を介してスレーブI/F5へ送信され、セレクタを介してシステムバス1のリードデータバスへ送信される。これにより、バストランザクションが完了する。
【0021】
次に、レジスタチェックモジュール4の構成について図2および図3を参照しながら説明する。図2は図1のレジスタチェックモジュールの内部構成を示すブロック図、図3は図2の制御レジスタ群22に含まれる各制御レジスタおよびそれぞれのデータフォーマットを示す図である。
【0022】
レジスタチェックモジュール4は、図2に示すように、レジスタI/F21、制御レジスタ群22、比較回路23、比較結果処理回路24、およびペリフェラルI/F25を有する。制御レジスタ群22には、ペリフェラル(周辺装置)である機能モジュール6,7,8などと同様に、複数の制御レジスタ(図示せず)が含まれており、各制御レジスタは、CPU2からアクセス可能である。レジスタI/F21は、CPU2から制御レジスタ群22内の各制御レジスタへのアクセス制御を行う。
【0023】
制御レジスタ群22内の各制御レジスタとしては、図3に示すように、比較イネーブルレジスタ221、割り込みイネーブルレジスタ222、不一致書き込みイネーブルレジスタ223、履歴イネーブルレジスタ224、ステータスレジスタ225、比較対象アドレスレジスタ226、比較モードレジスタ227、期待値レジスタ228,229、比較結果履歴レジスタ(ここでは、アドレス履歴レジスタ230およびデータ履歴レジスタ231)の9種類のレジスタが用意されている。これらのレジスタは、全て32ビットレジスタである。
【0024】
ここで、比較イネーブルレジスタ221、割り込みイネーブルレジスタ222、不一致書き込みイネーブルレジスタ223、履歴イネーブルレジスタ224、ステータスレジスタ225は、1つのセットとして存在するが、比較対象アドレスレジスタ226、比較モードレジスタ227、期待値レジスタ228,229は、複数のセットとして存在する。このセットの数は、チェックすべきIO(入出力)レジスタ分の数だけ用意されることになる。また、比較結果履歴レジスタ(アドレス履歴レジスタ230およびデータ履歴レジスタ231)も、複数のセットとして存在し、そのセットの数は、履歴として残すデータの種類の数分必要となる。
【0025】
比較イネーブルレジスタ221は、レジスタアドレス「0x0000番地」に割り付けられており、比較シーケンスを実行するか否かを選択するためのレジスタである。このレジスタ値が0であると、比較シーケンスは実行されず、スキップされ、通常通りに各機能モジュール6,7,8の制御レジスタにアクセスされる。このレジスタ221は、比較機能全体をディセーブルにするためのものであって、レジストアドレス「0x0100+0x10*i+0x4番地」に割り付けられている比較モードレジスタ227内にある比較イネーブルフィールドとは、異なる。これについては、比較モードレジスタ227の説明で詳述する。
【0026】
割り込みイネーブルレジスタ222は、レジスタアドレス「0x0004番地」に割り付けられており、割り込み通知を行うか否かを選択するためのレジスタである。このレジスタ222は、割り込み信号をモジュール最終段でディセーブルにするものでであって、比較モードレジスタ227内にある割り込みイネーブルフィールドとは異なる。これについては比較モードレジスタ227の説明で詳述する。
【0027】
不一致書き込みイネーブルレジスタ223は、レジスタアドレス「0x0008番地」に割り付けられており、比較不一致を起こした場合に、制御レジスタへの書き込みを行うかキャンセルするかを選択するためのレジスタである。このレジスタ223は、レジスタ書き込みをモジュール最終段でマスクするためのものであり、比較モードレジスタ227内にある不一致書き込みフィールドとは異なる。これについては比較モードレジスタ227の説明で詳述する。
【0028】
履歴イネーブルレジスタ224は、レジスタアドレス「0x000C番地」に割り付けられており、比較不一致を起こした場合に、比較結果履歴レジスタ(アドレス履歴レジスタ230およびデータ履歴レジスタ231)に対して履歴を残すか否かを選択するためのレジスタである。このレジスタ224は、履歴機能をモジュール最終段でマスクする機能であり、比較モードレジスタ227内にある履歴イネーブルフィールドとは異なる。これについては比較モードレジスタ227の説明で詳述する。
【0029】
ステータスレジスタ225は、レジスタアドレス「0x0010番地」に割り付けられており、ステータスフラグフィールド、エラーカウントフィールド、および履歴数フィールドを有する。ステータスフラグフィールドには、比較結果で不一致が生じた場合、かつ不一致を起こした要因の割り込みフィールドが1の場合に、所定値がセットされる。この所定値は、割り込みイネーブルレジスタ222の値には依存しないものである。CPU2への割り込み信号は、このステータスフィールドと割り込みイネーブルレジスタのAND条件が成立すると発生される。割り込み要因をクリアするためには、ステータスフィールドに0を書き込めばよい。エラーカウントフィールドは、比較不一致が生じた数を記録するためのフィールドであり、割り込みが有効な設定か否かには依存せず、その数は、不一致が生じるたびにインクリメントされる。このエラーカウントフィールドは、0クリアが可能である。履歴数フィールドは、比較結果履歴レジスタ(アドレス履歴レジスタ230およびデータ履歴レジスタ231)に格納された数を示すフィールドである。履歴数フィールドの値は、履歴を残すように設定された比較対象について比較不一致が生じた場合に、上記比較結果履歴レジスタに履歴を書き込むと同時にインクリメントされる。このフィールドについても0クリア可能である。ただし、ステータスレジスタ225の全てのフィールドにおける0以外の書き込みは、全て無効である。
【0030】
比較対象アドレスレジスタ226は、レジスタアドレス「0x0100+0x10*i+0x0番地」に割り付けられており、期待値比較を行うモジュールの制御レジスタアドレスを設定するためのレジスタである。ここで、レジスタアドレス中のiは、比較対象とする制御レジスタの数を示す。
【0031】
比較モードレジスタ227は、レジスタアドレス「0x0100+0x10*i+0x4番地」に割り付けられており、5種類のレジスタフィールドを有する。各レジスタフィールドとしては、比較イネーブルフィールド、比較モードフィールド、割り込みイネーブルフィールド、不一致書き込みフィールド、履歴イネーブルフィールドがある。
【0032】
上記比較イネーブルフィールドは、比較機能を有効にするか否かを決定するためのフィールドである。このフィールドは、比較イネーブルレジスタ221とは異なり、比較対象となる制御レジスタのイネーブル設定を個別に行うためのフィールドである。
【0033】
上記比較モードフィールドは、比較モードのタイプを設定するためのフィールドである。比較モードとしては、単純な即値データと比較するモード、特定のビットフィールドをマスクパターンと比較するモード、2つの期待値レジスタから範囲を決定してレジスタ書き込みデータが範囲内に収まっているか否かをチェックするモード、また他の制御レジスタ値と比較するモードなどがある。
【0034】
本実施の形態においては、以下の種類の比較モードがサポートされ、それらの比較モードを実施することができる。
【0035】
比較モードフィールド=0x0 → 即値比較
比較モードフィールド=0x1 → 特定ビットフィールド比較:期待値=0
比較モードフィールド=0x2 → 特定ビットフィールド比較:期待値=1
比較モードフィールド=0x3 → 範囲比較(期待値A<比較対象<期待値B)
比較モードフィールド=0x4 → 他レジスタ比較
ここで、サポートされている比較モードの代表的な使用例について簡単に説明する。
【0036】
即値比較モードは、モジュール単体でサポートされている機能があるが、そのモジュールを搭載したシステムではその機能を使用することができない構成である場合などに使用される。例えば、モジュールAはタイマーであり、タイマーの起動をかける方法として、レジスタ設定による起動方法と、外部トリガ信号を検出することによって起動する方法とのうち、いずれの方法を使用するかを選択するための選択レジスタを有するものとする。ここで、モジュールAは、外部トリガ信号を入力するためのポートを有し、これにより、モジュール単体では外部トリガ信号による起動をサポートするものとする。ただし、このモジュールAを搭載したシステムにおいては、ソフトウェア的な起動のみが行われ、外部トリガ入力はその上位階層においてクランプされているとする。この場合、上記選択レジスタ自体には、当然アクセス可能であるが、ハード起動を有効にしても、その手段を持たないため、使用不可である。よって、即値比較モードは、このような場合の不正設定値検出に有効である。
【0037】
特定ビットフィールド比較モードは、即値比較よりも細かい特定ビット単位のチェックを行うことが可能であり、特に、1つの制御レジスタ内に複数の設定フィールドを有する場合に非常に有効なモードである。例えば、あるDMACのモード設定レジスタが、アクセス方向フィールド、バースト転送モードフィールド、バースト長フィールドなどを有するとする。さらに、当該DMACは、汎用的に設計されており、外部メモリからIOデバイスへのDMAとIOデバイスから外部メモリへのDMAの両方をサポートし、その切り替えを、アクセス方向フィールドを用いて行うことができる。しかし、当該DMACと接続されるIOデバイスが単方向のみをサポートするシステムにおいては、アクセス方向フィールドは固定のはずである。この「固定」であることは、即値比較モードでは十分にチェックすることができない。それは、即値比較モードが同一レジスタ内の特定フィールドのみをチェックするという場合に対応することができないためである。特定ビットフィールド比較モードにおいては、アクセス方向フィールドに相当するビットに対する期待値レジスタのビットフィールドを1にし、それ以外のフィールドはチェックされないので、それ以外のフィールドは0にすればよい。チェックするビットフィールドに対するチェック値に関しては、0か1かを、比較モード1か2で選択すればよい。
【0038】
範囲比較モードについては、DMACのメモリに対する転送領域がスタートアドレスとエンドアドレスで与えられるタイプのものを例にして説明する。ここで、DMACの仕様においては、両アドレス共に32ビットアドレスとして与えられるが、実システム上は0番地から64MBitのDRAMが置かれていて、この空間のみにDMA転送する必要がある場合が考えられる。この場合、エンドアドレスは、0x100_0000より小さい値にすべきである。この値を2つの期待値レジスタ228,229に置くことにより、不正設定値の発見が可能になる。
【0039】
他レジスタ比較モードは、DMACと接続されたシリアルI/Oが外部シリアルインターフェースとの間でシリアル転送を行い、DMAを使用して外部メモリとの間で転送を行う場合に用いられる。この場合、シリアルI/Oにフレーム数を設定するレジスタがあり、またDMACにもDMA転送長を設定するレジスタが搭載されている。システム制約、またシリアルI/Oの仕様から、DMA転送長が同じとする制約が設けられる場合がある。このような制約をチェックする場合には、期待値レジスタ228,229に一方の制御レジスタのアドレスを指定すれば、そのアドレスに一致するレジスタとの間で比較を行うことができる。
【0040】
上記割り込みイネーブルフィールドにおいては、その値が1のときのみに、割り込み要因となり得る。割り込みイネーブルフィールドは、割り込みイネーブルレジスタ222とは異なり、比較対象となる制御レジスタのそれぞれに対するイネーブル設定を個別に行うためのものである。
【0041】
上記不一致書き込みフィールドは、期待値比較結果が不一致の場合に、機能モジュールへの書き込みを行うかキャンセルするかを決定するためのものである。この不一致書き込みフィールドは、不一致書き込みイネーブルレジスタ223とは異なり、比較対象となる制御レジスタのそれぞれに対するイネーブル設定を個別に行うためのものである。
【0042】
上記履歴イネーブルフィールドにおいては、その値が1のときのみに、期待値が一致しなかった場合の履歴を残す機能が有効になる。この履歴イネーブルフィールドは、履歴イネーブルレジスタ224とは異なり、比較対象となる制御レジスタのそれぞれに対するイネーブル設定を個別に行うためのものである。
【0043】
各期待値レジスタ228,229は、それぞれレジスタアドレス「0x0100+0x10*I+0x08番地」、「0x0100+0x10*I+0x0C番地」に割り付けられており、比較対象アドレスに対する書き込みデータと比較する期待値データを格納するためのレジスタである。期待値レジスタ228,229には、即値データのように比較を行うデータが格納されるだけでなく、比較モードが「他レジスタとの比較」の場合、比較対象レジスタのレジスタアドレスが設定される。2つの期待値レジスタが存在するのは、比較モードで「範囲比較」が選択された場合に対応するためである。
【0044】
比較結果履歴レジスタは、比較結果がNGだった場合に、レジスタアドレスとデータを記憶するためのレジスタ群であり、本実施の形態においては、アドレス履歴レジスタ230(レジスタアドレス:0x1000+0x10*j+0x0番地)およびデータ履歴レジスタ231(レジスタアドレス:0x1000+0x10*j+0x4番地)が含まれる。比較結果履歴レジスタがイネーブル状態で、さらに比較不一致を起こした制御レジスタ用の比較モードレジスタ227内の履歴イネーブルフィールドがイネーブルである場合に、比較結果履歴レジスタに履歴が保存される。この履歴が保存される度に、ステータスレジスタ225の履歴数フィールドの値はカウントアップされる。
【0045】
以上の制御レジスタのうち、比較対象アドレスレジスタから期待値レジスタまでの各制御レジスタ226〜229に関しては、少なくとも、比較対象の制御レジスタ数分のレジスタ以外に、ASIC完成後以降にもハードウェア制約が追加されることを想定して、予め余分のレジスタを設けることが好ましい。
【0046】
比較回路23は、図2に示すように、スレーブI/F5(図1)から送出されたレジスタ書き込みデータと制御レジスタ群22内のある期待値とを対応する比較モードにより比較し、その比較結果を比較結果処理回路24へ渡す。また、比較モードが「他制御レジスタとの比較」の場合、レジスタチェックモジュール4自身が、周辺装置内の制御レジスタへリードアクセスを行う必要があるので、比較回路23は、その旨をペリフェラルI/F25へ通知する。その結果、ペリフェラルI/F25は、周辺装置内の制御レジスタへリードアクセスを行い、レジスタ読み出しデータを比較回路23へ返す。そして、比較回路23は、スレーブI/F5からの書き込みデータとペリフェラルI/F25から返された読み出しデータとの比較を行う。その比較結果は、他のモードと同様に、比較結果処理回路に渡される。
【0047】
比較結果処理回路24は、比較結果に基づいて、各機能モジュールへのアクセスを実行するか、また比較結果がNGである場合に割り込み通知を行うか、また履歴を残すかの処理制御を行う。
【0048】
ペリフェラルI/F25は、比較不一致を起こし、かつ比較モードレジスタの不一致書き込みフィールドが「ディセーブル」の場合、スレーブI/F5からのアクセス開始信号をマスクし、アクセスをキャンセルする。一方、比較対象でない制御レジスタへのアクセスの場合、比較結果が一致した場合、または不一致書き込みフィールドが「イネーブル」の場合、ペリフェラルI/F25は、スレーブI/F5からのレジスタアクセス開始信号をマスクすることなくそのまま出力する。ただし、上記レジスタアクセス開始信号のマスクについては、スレーブI/F25からのアクセス開始信号を受けてから、比較処理が完了するまでが複数のサイクルに及ぶので、ステートマシンで管理される必要がある。特に、他の制御レジスタとの比較を行う場合は、確実に複数サイクルの比較期間が必要となる。
【0049】
次に、本実施の形態における、レジスタアクセスが行われてから比較処理を経て、レジスタアクセスが完了するまでの手順について図4および図5を参照しながら説明する。図4および図5は図1のシステムにおけるレジスタアクセスの実行から比較処理を経てレジスタアクセスの完了までの手順を示すフローチャートである。図4および図5に示すフローチャートは、CPU2、スレーブI/F5、レジスタチェックモジュール4、ペリフェラル(機能ブロック)のそれぞれに処理に分けて記述されたものである。
【0050】
図4に示すように、CPU2がペリフェラル(機能モジュール6,7,8のいずれか)のレジスタa0(図示せず)にアクセスを開始すると(ステップS1)、スレーブI/F5は、レジスタアクセス開始信号をアサートする(ステップS2)。これと同じサイクルで、レジスタアドレスとレジスタ書き込みデータが有効となる。レジスタチェックモジュール4は、上記レジスタアドレスおよびレジスタ書き込みデータを受け、まず比較イネーブルレジスタ2211の値をチェックする(ステップS3)。そして、レジスタチェックモジュール4は、上記チェックの結果がイネーブルであるか否かを判定する(ステップS4)。
【0051】
上記ステップS4において上記チェックの結果がディセーブルであると判定された場合は、ソフトウェア開発後期でレジスタ比較機能を必要としない場合である。このディセーブルの場合、レジスタチェックモジュール4は、図5に示すように、ペリフェラルの制御レジスタへアクセス開始信号、アドレス、書き込みデータを出力する(ステップS18)。
【0052】
ペリフェラル(機能モジュール)は、上記アクセス開始信号、アドレスおよび書き込みデータを受けて対応するレジスタa0に対して書き込みを行い(ステップS20)、その書き込みを終了すると、アクセス完了信号をレジスタチェックモジュール4に出力する(ステップS21)。
【0053】
レジスタチェックモジュール4は、上記アクセス完了信号を受け、スレーブI/F5へアクセス完了信号を出力し(ステップS30)、スレーブI/F5は、システムバス1にレディ信号を返し(ステップS31)、バスを解放するすなわち処理を終了する(ステップS32)。
【0054】
これに対し、比較イネーブルレジスタ221がイネーブル状態であると判定された場合(ステップS4)、レジスタチェックモジュール4は、スレーブI/F5からのアドレスと比較対象レジスタのアドレスが一致するか否かを判定する(ステップS5)。ここで、一致するアドレスが比較対象アドレスレジスタ226内に存在しない場合は、上記比較イネーブルレジスタ221がディセーブルのときと同様に、通常のレジスタアクセスが行われる(ステップS1→S2→S3→S4→S5→S6→S8→S18→S20→S21→S30→S31→S32)。本実施の形態においては、全比較対象制御レジスタアドレスを全てチェックしたか否かをチェックしているステート(ステップS8)が設けられているが、これは、1サイクル以内で全ての対象アドレスを比較可能なハードウェアが実装されている場合には必要がないステートである。
【0055】
これに対し、上記ステップS6においてレジスタアドレスと一致するアドレスが比較対象アドレスレジスタ226にあると判定された場合、レジスタチェックモジュール4は、その比較対象レジスタアドレスに相当する比較モードレジスタ226内の比較イネーブルフィールドをチェックする(ステップS7)。そして、レジスタチェックモジュール4は、上記チェックの結果がイネーブルであるか否かを判定する(ステップ9)。ここで、上記チェックの結果がディセーブルであれば、通常のレジスタアクセス(S18→S20→S21→,……,→S32)となる。
【0056】
上記ステップS9において比較イネーブルフィールドがイネーブルであると判定された場合、レジスタチェックモジュール4は、比較モードレジスタ227内の比較モードフィールドの値をチェックし(ステップS10)、設定されている比較モードを判別する(ステップS11)。
【0057】
上記ステップS11で判別された比較モードが即値比較モードである場合、レジスタチェックモジュール4は、単純に書き込みデータと期待値レジスタ228に格納されている値とを比較する(ステップS12)。
【0058】
上記ステップS11で判別された比較モードが特定ビットフィールド比較モードである場合、レジスタチェックモジュール4は、期待値レジスタ228に格納されている32ビットの比較対象のビットパターンのうち、‘1’のビットに対してのみチェックを行う(ステップS13)。ここで、比較期待値は、比較モードが1の場合は0で、比較モードが2の場合は1である。
【0059】
上記ステップS11で判別された比較モードが範囲比較モードである場合、レジスタチェックモジュール4は、期待値レジスタ228,229にそれぞれ格納されている下限期待値および上限期待値を参照し、書き込みデータが下限期待値と上限期待値との間にあるか否かをチェックする(ステップS14)。
【0060】
上記ステップS11で判別された比較モードが他レジスタ比較モードである場合(ステップS15)、レジスタチェックモジュール4は、まず期待値レジスタ228に格納されているデータをレジスタアドレスとして、実際に各機能モジュール6,7,8内の上記アドレスに対してリードアクセスする(ステップS15)。そのために、スレーブI/F5内のアドレスデコーダと同等のものがレジスタチェックモジュール4内にも存在しており、このアドレスデコーダ回路により、レジスタアクセス開始信号が生成されることになる。そして、ペリフェラル(機能ブロック)は、対応するレジスタデータをレジスタチェックモジュール4へ返す(ステップS16)。レジスタチェックモジュール4は、ペリフェラルから返されたデータとCPU2からの書き込みデータとを比較する(ステップS17)。
【0061】
設定された比較モードでの処理が完了すると、レジスタチェックモジュール4は、図5に示すように、比較結果処理回路24による比較結果の評価を行う。ここでは、3種類の処理が同時に行われる。比較結果処理回路24は、まず、履歴イネーブルレジスタ224と比較モードレジスタ227内の履歴イネーブルフィールドとをチェックし(ステップS22)、そのチェックの結果がイネーブルであるか否かを判定する(ステップS23)。上記チェックの結果がイネーブルであれば、レジスタチェックモジュール4は、比較結果履歴レジスタであるアドレス履歴レジスタ230とデータ履歴レジスタ231へそれぞれレジスタアドレスと書き込みデータをセーブする(ステップS24)。上記履歴イネーブルフィールドが0の場合は、図示されていないが、比較結果処理回路24は、特に何も行わず、本処理を終了する。
【0062】
また同時に、比較結果処理回路24は、割り込みイネーブルレジスタ222と、比較不一致を起こした制御レジスタアドレスに相当する比較モードレジスタ227内の割り込みイネーブルフィールドとをチェックし(ステップS25)、そのチェックの結果に基づいて両方がイネーブルであるか否かを判定する(ステップS26)。ここで、割り込みイネーブルレジスタ222と対応する割り込みイネーブルフィールドとの両方がイネーブルであれば、比較結果処理回路24は、ステータスレジスタ225のステータスフラグをセットし、さらに割り込み信号をアサートする(ステップS27)。
【0063】
もし割り込みモードレジスタ222の割り込みフィールドのみがイネーブルの場合は、ステータスレジスタ225のステータスフィールドは、1にセットされる。ただし、割り込みイネーブルレジスタ222がディセーブル状態のため、割り込み信号はアサートされない。そして、比較結果処理回路24は、本処理を終了する。
【0064】
また同時に、比較結果処理回路24は、不一致書き込みイネーブルレジスタ223と不一致を起こした比較対象レジスタアドレスに相当する比較モードレジスタ227内の不一致書き込みフィールドとをチェックし(ステップS28)、両方がイネーブルであるか否かを判定する(ステップS29)。ここで、両方がイネーブルである場合、比較結果処理回路24は、通常のペリフェラルへのレジスタアクセスを開始する(ステップS18)。その後の手順は、通常のレジスタアクセス時と同様である。
【0065】
上記ステップS29において不一致書き込みフィールドがディセーブルであると判定された場合、レジスタチェックモジュール4は、ペリフェラルへのアクセスを行うことなく、スレーブI/F5に対してアクセス完了信号を渡す(ステップS30)。そして、スレーブI/F5は、システムバス1にレディ信号を返し(ステップS31)、バスを解放するすなわち処理を終了する(ステップS32)。
【0066】
このように、本実施の形態によれば、ソフトウェア開発の初期の段階においてレジスタ設定値間違いを発見することができる。
【0067】
また、期待値として、即値データ、特定ビットフィールド、少なくとも上限期待値と下限期待値とにより与えられる値、および/または他の制御レジスタの設定値とすることによって、単純な即値データと比較するモード、特定のビットフィールドをマスクパターンと比較するモード、2つの期待値レジスタから範囲を決定してレジスタ書き込みデータが範囲内に収まっているか否かをチェックするモード、また他の制御レジスタ値と比較するモードを実施することが可能になる。
【0068】
また、比較処理を行っている期間はレジスタアクセスを遅延させ、比較結果が不一致の場合には書き込み自体を取り消すことによって、不正な設定が引き起こす実機上の致命的な不具合を回避することができる。この比較機能はハードウェア実施手段によっては、CPU2のペリフェラルへのIOアクセス自体が低速化してしまう恐れがあるが、これを無効化する機能を提供することによって、ソフトウェア開発後期には低速でない通常のアクセスが保証される。
【0069】
また、比較結果の履歴を残すことによって、割り込みハンドラ内で不適切なレジスタ設定が行われた履歴を確認することができる。
【0070】
(第2の実施の形態)
次に、本発明の第2の実施の形態について図6〜図8を参照しながら説明する。図6は本発明の第2の実施の形態に係るレジスタチェックモジュール(レジスタ設定値監視モジュール)を含むシステムの構成を示すブロック図、図7は図6のレジスタチェックモジュールの構成を示すブロック図、図8は図6のSRAM内に設けられた制御レジスタのそれぞれを模式的に示す図である。図中、上記第1の実施の形態と同一のブロックには、同一の符号を付し、その説明は省略する。
【0071】
本実施の形態は、図6に示すように、上記第1の実施の形態に対し、比較モード、期待値などに関するレジスタが汎用のSRAM103内に設けられている点で異なる。詳細には、汎用SRAM103は、SRAMI/F101とスレーブI/F100を介してシステムバス1と接続されており、CPU2を含む各バスマスタからアクセスが可能である。このSRAMモジュールは、スレーブI/F100との接続経路とともに、レジスタチェックモジュール4との接続経路を有する。
【0072】
レジスタチェックモジュール4は、比較モードおよび他の情報を含む期待値データを読み出す際に、SRAM103に対して信号105を送出し、アクセスを行う。また、SRAM103は、汎用的に使用され、この場合も、システムバス1からSRAM103へアクセスが行われる。SRAM103への上記2つのアクセスは、セレクタ102で切り替えられる。このセレクタ102の切り替え動作は、レジスタチェックモジュール4からの切り替え信号104により制御される。
【0073】
レジスタチェックモジュール4は、図7に示すように、上記第1の実施の形態のレジスタチェックモジュール4に対し、SRAMI/F123が設けられている制御レジスタ群122を有する点で異なる。制御レジスタ群122には、上記第1の実施の形態と同様に、比較イネーブルレジスタ、割り込みイネーブルレジスタ、不一致書き込みレジスタ、履歴イネーブルレジスタおよびステータスレジスタが含まれる。また、制御レジスタ群122には、比較対象数レジスタ、比較対象レジスタアドレス用ベースアドレスレジスタ、比較モード用ベースアドレスレジスタ、期待値(A,B)用ベースアドレスレジスタ、アドレス履歴用ベースアドレスレジスタおよびデータ履歴用ベースアドレスレジスタが新規に追加される。これらのレジスタは、全て、1セットのみである。
【0074】
SRAM103には、上記レジスタ以外の複数セットからなる、比較対象アドレスレジスタ、比較モードレジスタ、期待値データレジスタ、アドレス履歴レジスタ、データ履歴レジスタの全てが設けられている。
【0075】
新規に追加される比較対象数レジスタには、比較対象とする少なくとも1つの制御レジスタを指定するための番号が設定される。これは、SRAM103の容量を許容する限りの値を設定することができる。各ベースアドレスレジスタをSRAM103内のアドレスに指定することによって、各設定値(比較対象レジスタアドレス、比較モード、期待値A,B)をSRAM103内の任意のアドレスから連続的に配置することを可能とする。また同様に、新規に追加される履歴数レジスタは、履歴領域としてSRAM103内に確保する領域の大きさを指定するものであり、アドレス履歴用ベースアドレスレジスタ、データ履歴用ベースアドレスレジスタをSRAM103内のアドレスに指定することによって、履歴情報をSRAM103内に連続的に配置することが可能になる。
【0076】
図8において、図中の符号A,B,…,Lは、比較対象の制御レジスタ番号であり、ここでは12個の比較対象制御レジスタが仮定されている。比較対象数レジスタは、このとき0xCに設定されている。ここで、さらに1つの比較対象レジスタ(例えば0xCC00_0024番地)の制御レジスタ)を追加したければ、比較対象数レジスタを0xDにし、SRAM103上の(比較対象レジスタアドレス用ベースアドレスレジスタ+0xD*4)番地に0xCC00_0024を書けばよい。また比較モードについても、同様に、SRAM103上の(比較モード用ベースアドレスレジスタ+0xD*4)番地に所望のモードを設定すればよい。他の設定も同様である。
【0077】
履歴については、履歴専用の履歴数レジスタ、アドレス履歴用ベースアドレスレジスタ、およびデータ履歴用ベースアドレスレジスタを用いて履歴領域をSRAM103内に確保しすればよい。図8において、a,b,…,jは、履歴番号であり、ここでは、10個の比較不一致までの履歴を格納することができる。
【0078】
本実施の形態の場合、レジスタアクセスが行われてから比較処理を経て、レジスタアクセスが完了するまでの手順は、上記第1の実施の形態と同じである。ただし、SRAM103内に各比較パラメータが格納されているため、SRAM103へのアクセス時間が掛かることになる。特に、スレーブI/F5からのレジスタアドレスと一致する比較対象アドレスを検索する(図4のステップS5)際、SRAM103内の比較対象レジスタアドレスが格納された領域を連続的にアクセスしてチェックする必要があるため、比較対象のレジスタ数が多いほど、検索シーケンス(ステップS5→S6→S8→S5→S6)の繰り返し数が増すことになる。また、期待値や比較モードをSRAM103へアクセスして読み出す必要があるので、一度のCPU2からのレジスタアクセスのみで、それが長時間システム1を占有する場合がある。ただし、レジスタ設定値チェック機能は、あくまでソフトウェアデバッグ時に使用するものであるので、開発後期に比較イネーブルレジスタをディセーブル状態にすれば、比較シーケンスは全てスキップされ、高速応答を実現することができる。
【0079】
また、開発後期にはSRAM103内をレジスタチェック用ではない他の汎用的な目的に使用することができる。このSRAM103の切り替え信号104は通常SRAMI/F101の選択を指示しており、比較パラメータのアクセス時にのみレジスタチェックモジュール4内のSRAMI/F123の選択を指示する。レジスタチェックモジュール4からのSRAM103への比較パラメータの読み出し時には、システムバス1のバストランザクションは閉じてないので、SRAM103へのアクセスは、確実に排他アクセスとなる。
【0080】
また、CPU2を含む全バスマスタがスレーブとしてアクセス可能なSRAM103領域のうち、実製品ソフトウェアに使用しない領域を本比較パラメータ格納領域として使用することができる。この場合、レジスタチェックモジュール4内の比較対象数レジスタと各ベースアドレスレジスタは、SRAM103領域のうち、本比較パラメータ格納領域用として許容された領域を超えないように指定される。
【0081】
また、本実施の形態においては、レジスタ設定期待値格納手段をソフトウェアによって書き換え可能なレジスタまたはSRAM103として説明したが、これを論理上固定値として実装することも当然可能であり、その場合、後に設定を書き換えることができなくなるが、自由度と回路規模のトレードオフによる実装方法を選択することは可能である。
【0082】
また、SRAM103を用いることによって、LSIの完成後に期待値を追加したり、書き換えたりすることができる。
【0083】
また、SRAM103が汎用なスレーブデバイスとして実装し、複数セット存在しうる各比較パラメータをSRAM103内に移動し、最小限の制御レジスタのみをレジスタチェックモジュール4内に残すことによって、レジスタチェックモジュール4自体の回路規模を最小限にすることができる。また、レジスタチェックモジュール4内に残されたレジスタの全ては、比較対象数に依存しないので、自由度が高い設計が可能になる。
【図面の簡単な説明】
【0084】
【図1】本発明の第1の実施の形態に係るレジスタチェックモジュール(レジスタ設定値監視モジュール)を含むシステム構成を示すブロック図である。
【図2】図1のレジスタチェックモジュールの内部構成を示すブロック図である。
【図3】図2の制御レジスタ群22に含まれる各制御レジスタおよびそれぞれのデータフォーマットを示す図である。
【図4】図1のシステムにおけるレジスタアクセスの実行から比較処理を経てレジスタアクセスの完了までの手順を示すフローチャートである。
【図5】図1のシステムにおけるレジスタアクセスの実行から比較処理を経てレジスタアクセスの完了までの手順を示すフローチャートである。
【図6】本発明の第2の実施の形態に係るレジスタチェックモジュール(レジスタ設定値監視モジュール)を含むシステムの構成を示すブロック図である。
【図7】図6のレジスタチェックモジュールの構成を示すブロック図である。
【図8】図6のSRAM内に設けられた制御レジスタのそれぞれを模式的に示す図である。
【符号の説明】
【0085】
1 システムバス
2 CPU
4 レジスタチェックモジュール
5 スレーブI/F
6,7,8 機能モジュール
21 レジスタI/F
22 制御レジスタ群
23 比較回路
24 比較結果処理回路
25 ペリフェラルI/F
102 セレクタ
103 SRAM
123 SRAMI/F

【特許請求の範囲】
【請求項1】
機能ブロックの制御レジスタの設定値に対する期待値を格納するレジスタ設定期待値格納手段と、
中央処理装置により前記制御レジスタに対して設定される設定値と前記レジスタ設定期待値格納手段に格納されている期待値とを比較する比較手段と、
前記比較手段による比較結果が前記制御レジスタに対して設定される設定値と前記レジスタ設定期待値格納手段に格納されている期待値との不一致を示す場合、前記中央処理装置に対してエラー通知を出力するエラー通知手段と
を備えることを特徴とするレジスタ設定値監視モジュール。
【請求項2】
前記レジスタ設定期待値格納手段に格納されている期待値は、即値データであることを特徴とする請求項1記載のレジスタ設定値監視モジュール。
【請求項3】
前記レジスタ設定期待値格納手段に格納されている期待値は、特定ビットフィールドであることを特徴とする請求項1記載のレジスタ設定値監視モジュール。
【請求項4】
前記レジスタ設定期待値格納手段に格納されている期待値は、少なくとも上限期待値と下限期待値とにより与えられる値であることを特徴とする請求項1記載のレジスタ設定値監視モジュール。
【請求項5】
前記レジスタ設定期待値格納手段に格納されている期待値は、比較すべき制御レジスタと異なる他の制御レジスタの設定値であることを特徴とする請求項1記載のレジスタ設定値監視モジュール。
【請求項6】
前記比較手段により比較が行われている期間は、前記中央処理装置による前記制御レジスタに対する設定値の設定を遅延させ、前記比較手段による比較結果が不一致を示す場合、前記中央処理装置による前記制御レジスタに対する設定値の設定を中止させるデータ書き込み遅延中止手段を備えることを特徴とする請求項1ないし5のいずれか1つに記載のレジスタ設定値監視モジュール。
【請求項7】
前記比較手段による比較動作を無効化する比較無効化手段を備えることを特徴とする請求項1ないし6のいずれか1つに記載のレジスタ設定値監視モジュール。
【請求項8】
前記比較手段による比較結果を格納するための比較結果履歴格納手段と、
前記比較手段による比較結果が不一致を示す場合、前記中央処理装置により前記制御レジスタに対して設定される設定値と該制御レジスタのアドレスとを前記比較結果履歴格納手段に格納する格納手段と
を備えることを特徴とする請求項1ないし7のいずれか1つに記載のレジスタ設定値監視モジュール。
【請求項9】
前記レジスタ設定期待値格納手段に格納されている期待値は、固定値であることを特徴とする請求項1記載のレジスタ設定値監視モジュール。
【請求項10】
前記レジスタ期待値格納手段は、書き換え可能なレジスタまたはSRAMから構成されることを特徴とする請求項1ないし9のいずれか1つに記載のレジスタ設定値監視モジュール。
【請求項11】
前記書き換え可能なレジスタまたはSRAMは、モジュール外部に設けられ、前記中央処理装置を含む全てのバスマスタからアクセス可能なバススレーブデバイスであることを特徴とする請求項10記載のレジスタ設定値監視モジュール。
【請求項12】
前記SRAMの記憶領域のうち、未使用記憶領域を前記レジスタ期待値格納手段として指定する指定手段を備えることを特徴とする請求項11記載のレジスタ設定値監視モジュール。
【請求項13】
請求項1ないし12のいずか1つに記載のレジスタ設定値監視モジュールを有することを特徴とするシステム。
【請求項14】
中央処理装置により機能ブロックの制御レジスタに対して設定される設定値とレジスタ設定期待値格納手段に格納されている前記制御レジスタの設定値に対する期待値とを比較する比較工程と、
前記比較工程での比較結果が前記制御レジスタに対して設定される設定値と前記レジスタ設定期待値格納手段に格納されている期待値との不一致を示す場合、前記中央処理装置に対してエラー通知を出力するエラー通知工程と
を有することを特徴とするレジスタ設定値監視方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate


【公開番号】特開2006−293641(P2006−293641A)
【公開日】平成18年10月26日(2006.10.26)
【国際特許分類】
【出願番号】特願2005−112617(P2005−112617)
【出願日】平成17年4月8日(2005.4.8)
【出願人】(000001007)キヤノン株式会社 (59,756)
【Fターム(参考)】