(57)【要約】    【課題】  ソフトウェア開発の初期の段階においてレジスタ設定値間違いを発見することができるレジスタ設定値監視モジュールを提供する。    【解決手段】  レジスタチェックモジュール４は、機能ブロック６，７，８の制御レジスタの設定値に対する期待値を格納する制御レジスタ群２２と、ＣＰＵにより機能ブロック６，７，８の制御レジスタに対して設定される設定値と制御レジスタ群２２に格納されている期待値とを比較する比較回路２３とを有する。レジスタチェックモジュール４は、比較回路２３による比較結果が制御レジスタ群２２に対して設定される設定値と制御レジスタ群２２に格納されている期待値との不一致を示す場合、ＣＰＵ２に対してエラー通知を出力する。【選択図】      図１
2006293641.tif 000002
【特許請求の範囲】
【請求項１】
機能ブロックの制御レジスタの設定値に対する期待値を格納するレジスタ設定期待値格納手段と、
中央処理装置により前記制御レジスタに対して設定される設定値と前記レジスタ設定期待値格納手段に格納されている期待値とを比較する比較手段と、
前記比較手段による比較結果が前記制御レジスタに対して設定される設定値と前記レジスタ設定期待値格納手段に格納されている期待値との不一致を示す場合、前記中央処理装置に対してエラー通知を出力するエラー通知手段と
を備えることを特徴とするレジスタ設定値監視モジュール。
【請求項２】
前記レジスタ設定期待値格納手段に格納されている期待値は、即値データであることを特徴とする請求項１記載のレジスタ設定値監視モジュール。
【請求項３】
前記レジスタ設定期待値格納手段に格納されている期待値は、特定ビットフィールドであることを特徴とする請求項１記載のレジスタ設定値監視モジュール。
【請求項４】
前記レジスタ設定期待値格納手段に格納されている期待値は、少なくとも上限期待値と下限期待値とにより与えられる値であることを特徴とする請求項１記載のレジスタ設定値監視モジュール。
【請求項５】
前記レジスタ設定期待値格納手段に格納されている期待値は、比較すべき制御レジスタと異なる他の制御レジスタの設定値であることを特徴とする請求項１記載のレジスタ設定値監視モジュール。
【請求項６】
前記比較手段により比較が行われている期間は、前記中央処理装置による前記制御レジスタに対する設定値の設定を遅延させ、前記比較手段による比較結果が不一致を示す場合、前記中央処理装置による前記制御レジスタに対する設定値の設定を中止させるデータ書き込み遅延中止手段を備えることを特徴とする請求項１ないし５のいずれか１つに記載のレジスタ設定値監視モジュール。
【請求項７】
前記比較手段による比較動作を無効化する比較無効化手段を備えることを特徴とする請求項１ないし６のいずれか１つに記載のレジスタ設定値監視モジュール。
【請求項８】
前記比較手段による比較結果を格納するための比較結果履歴格納手段と、
前記比較手段による比較結果が不一致を示す場合、前記中央処理装置により前記制御レジスタに対して設定される設定値と該制御レジスタのアドレスとを前記比較結果履歴格納手段に格納する格納手段と
を備えることを特徴とする請求項１ないし７のいずれか１つに記載のレジスタ設定値監視モジュール。
【請求項９】
前記レジスタ設定期待値格納手段に格納されている期待値は、固定値であることを特徴とする請求項１記載のレジスタ設定値監視モジュール。
【請求項１０】
前記レジスタ期待値格納手段は、書き換え可能なレジスタまたはＳＲＡＭから構成されることを特徴とする請求項１ないし９のいずれか１つに記載のレジスタ設定値監視モジュール。
【請求項１１】
前記書き換え可能なレジスタまたはＳＲＡＭは、モジュール外部に設けられ、前記中央処理装置を含む全てのバスマスタからアクセス可能なバススレーブデバイスであることを特徴とする請求項１０記載のレジスタ設定値監視モジュール。
【請求項１２】
前記ＳＲＡＭの記憶領域のうち、未使用記憶領域を前記レジスタ期待値格納手段として指定する指定手段を備えることを特徴とする請求項１１記載のレジスタ設定値監視モジュール。
【請求項１３】
請求項１ないし１２のいずか１つに記載のレジスタ設定値監視モジュールを有することを特徴とするシステム。
【請求項１４】
中央処理装置により機能ブロックの制御レジスタに対して設定される設定値とレジスタ設定期待値格納手段に格納されている前記制御レジスタの設定値に対する期待値とを比較する比較工程と、
前記比較工程での比較結果が前記制御レジスタに対して設定される設定値と前記レジスタ設定期待値格納手段に格納されている期待値との不一致を示す場合、前記中央処理装置に対してエラー通知を出力するエラー通知工程と
を有することを特徴とするレジスタ設定値監視方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、中央処理装置により、機能ブロックの制御レジスタに対して設定される設定値を監視するためのレジスタ設定値監視モジュール、システムおよびレジスタ設定値監視方法に関する。
【背景技術】
【０００２】
立ち上げ初期の実機テスト環境において起こる不具合の原因の多くは、機能ブロック内の制御レジスタに対する設定値の間違いである。設定値の間違いの種類としては、複数の種類が存在するが、大きく分けて以下のような種類がある。
【０００３】
（１）モジュール仕様書記載の制限を超えた設定値を設定するコーディング上のケアレスミス
（２）複数のモジュール間で設定値の制限があり、設定値の調整が必要な場合
（３）モジュール単独仕様と、当該モジュールがシステムに組み込まれた際の当該モジュール仕様との違いを見落とした場合
ここで、上記項目（２）については、複数の機能モジュール間で信号をやりとりするような場合、それらのモジュール間において仕様制限が存在することが多い。しかもその仕様制限がハードウェア実装特有な事象を起因とする場合において、その仕様制限は、ソフトウェア担当者にとっては一層理解し難いものになる。
【０００４】
上記項目（３）が生じる原因には、近年のＡＳＩＣ開発期間短縮化の有効手段として取り上げられる「設計資産の再利用」が大きく関わることにある。将来再利用可能なように汎用的な機能を有する機能モジュールをＡＳＩＣに搭載する場合、システムの観点から、その機能モジュールは、通常必要としない機能すなわち冗長な機能を備える。
【０００５】
ここで、再利用性を考慮して、汎用性を持たせたＤＭＡＣ（ＤＭＡコントローラ）（例えば、特許文献１）について説明する。ＩＯデバイス（入出力デバイス）から外部メモリへＤＭＡを行う方向、また外部メモリからＩＯデバイスへＤＭＡを行う方向の双方をサポートする汎用ＤＭＡＣがあり、このＤＭＡＣは、ＤＭＡ方向をある特定レジスタでスタティックに切り替えることが可能な仕様とされる。仮に、ＤＭＡＣと接続されるＩＯデバイスが双方向をサポートしている場合は、アクセス方向に応じてレジスタが切り替えられて使用される。一方、単方向のみをサポートしているＩＯデバイスに対して上記汎用ＤＭＡＣを接続する場合、ＤＭＡ方向切り替えレジスタの値は常に一定のはずである。しかし、汎用ＤＭＡＣを使用している以上、方向切り替えレジスタには自由にアクセス可能であるため、方向切り替えレジスタの値をソフトウェアが誤って書き換えてしまうことがあり、これが不具合を引き起こす。
【０００６】
従来、実機環境においてこのような不具合を発見するためには、設計者は、実機に生じている現象からモジュールを特定し、特定されたモジュールにおいて、ソフトウェアコーディング上の設定間違いがないかを仕様書に従って確認し、またはハードウェア設計者とのやりとりで仕様の確認を行うなどの作業を行う。
【０００７】
また、設定制約が守られているか否かを判定する機能をハードウェアとしてモジュールに設け、この機能により設定制約が守られていないと判定された場合に、割り込み通知を行い、またはバスエラー処理を行う方法がある。
【特許文献１】特開２００２‐３４２２５９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した従来の実機環境において生じた不具合からモジュールを特定する方法では、最初に特定されたモジュールの設定に問題があった場合、通常、不具合修正には多くの時間が費やされることはないが、設定間違いが別のモジュールの設定に起因している場合などは、その不具合発見、修正に多くの時間が費やされる。例えば、クロック生成ブロックで生成されるクロック信号の周波数の制約に間違いがあった場合などがこれに該当する。
【０００９】
また、モジュールに設けられた、設定制約が守られているか否かを判定する機能を用いる方法は、モジュールで完結するような制約には適応可能であるが、モジュールレベルを超えたシステム構成において存在する制約に対しては適応することができない。
【００１０】
また、不具合の原因がハードウェアのバグに起因するものである場合、そのソフトウェアワークアラウンドを適用して不具合回避を行うことがしばしばある。この場合、正しくソフトウェアワークアラウンドが行われ、禁止された設定が繰り返しなされていないかというチェックが必要になる。
【００１１】
本発明の目的は、ソフトウェア開発の初期の段階においてレジスタ設定値間違いを発見することができるレジスタ設定値監視モジュール、システムおよびレジスタ設定値監視方法を提供することにある。
【課題を解決するための手段】
【００１２】
本発明は、上記目的を達成するため、機能ブロックの制御レジスタの設定値に対する期待値を格納するレジスタ設定期待値格納手段と、中央処理装置により前記制御レジスタに対して設定される設定値と前記レジスタ設定期待値格納手段に格納されている期待値とを比較する比較手段と、前記比較手段による比較結果が前記制御レジスタに対して設定される設定値と前記レジスタ設定期待値格納手段に格納されている期待値との不一致を示す場合、前記中央処理装置に対してエラー通知を出力するエラー通知手段とを備えることを特徴とするレジスタ設定値監視モジュールを提供する。
【００１３】
また、本発明は、上記目的を達成するため、上記レジスタ設定値監視モジュールを有することを特徴とするシステムを提供する。
【００１４】
また、本発明は、上記目的を達成するため、中央処理装置により機能ブロックの制御レジスタに対して設定される設定値とレジスタ設定期待値格納手段に格納されている前記制御レジスタの設定値に対する期待値とを比較する比較工程と、前記比較工程での比較結果が前記制御レジスタに対して設定される設定値と前記レジスタ設定期待値格納手段に格納されている期待値との不一致を示す場合、前記中央処理装置に対してエラー通知を出力するエラー通知工程とを有することを特徴とするレジスタ設定値監視方法を提供する。
【発明の効果】
【００１５】
本発明によれば、ソフトウェア開発の初期の段階においてレジスタ設定値間違いを発見することができる。
【発明を実施するための最良の形態】
【００１６】
以下、本発明の実施の形態について図面を参照しながら説明する。
【００１７】
（第１の実施の形態）
図１は本発明の第１の実施の形態に係るレジスタチェックモジュール（レジスタ設定値監視モジュール）を含むシステム構成を示すブロック図である。
【００１８】
システムには、図１に示すように、バスマスタの１つとしてＣＰＵ２が設けられており、ＣＰＵ２は、システムバス１を介して、各機能モジュール６，７，８内の制御レジスタ（図示せず）に対してレジスタ設定を行う。各機能モジュール６，７，８の制御レジスタへのアクセスは、各機能モジュール６，７，８を一括して制御するスレーブＩ／Ｆ５を介して行われる。このスレーブＩ／Ｆ５は、バスマスタ（ＣＰＵ２を含む）からバスアドレスをデコードし、各機能モジュールに割り当てられたアドレスであれば、その機能モジュールに対してアクセス開始信号を送信するとともに、レジスタアドレスと書き込みデータを送信する。これらの信号１３，１４，１５，１６は、一旦レジスタチェックモジュール４で受信された後、信号１０，１１，１２として各機能モジュール６，７，８へ送信される。
【００１９】
信号１３，１４，１５，１６のうちの一つは、レジスタチェックモジュール４内の制御レジスタへのアクセス専用信号である。信号１０〜１６のプロトコルは、全て共通であり、レジスタチェックモジュール４が実装されない場合においては、スレーブＩ／Ｆ５と各機能モジュール６，７，８とは直接接続可能である。アクセス開始信号を受けた機能モジュール６，７，８は、アドレスをデコードしアクセスされたレジスタに対して書き込みを行う。書き込みが完了すると、レジスタチェックモジュール４は、スレーブＩ／Ｆ５へアクセス終了信号を送信し、スレーブＩ／Ｆ５は、上記アクセス終了信号を受けてシステムバス１に対してレディを返し、バストランザクションを完了する。
【００２０】
ここでは、レジスタライトアクセスについて述べたが、リードアクセスについても同様である。詳細には、リードアクセスの場合、リードデータがアクセス終了信号と同時に各機能モジュールからレジスタチェックモジュール４を介してスレーブＩ／Ｆ５へ送信され、セレクタを介してシステムバス１のリードデータバスへ送信される。これにより、バストランザクションが完了する。
【００２１】
次に、レジスタチェックモジュール４の構成について図２および図３を参照しながら説明する。図２は図１のレジスタチェックモジュールの内部構成を示すブロック図、図３は図２の制御レジスタ群２２に含まれる各制御レジスタおよびそれぞれのデータフォーマットを示す図である。
【００２２】
レジスタチェックモジュール４は、図２に示すように、レジスタＩ／Ｆ２１、制御レジスタ群２２、比較回路２３、比較結果処理回路２４、およびペリフェラルＩ／Ｆ２５を有する。制御レジスタ群２２には、ペリフェラル（周辺装置）である機能モジュール６，７，８などと同様に、複数の制御レジスタ（図示せず）が含まれており、各制御レジスタは、ＣＰＵ２からアクセス可能である。レジスタＩ／Ｆ２１は、ＣＰＵ２から制御レジスタ群２２内の各制御レジスタへのアクセス制御を行う。
【００２３】
制御レジスタ群２２内の各制御レジスタとしては、図３に示すように、比較イネーブルレジスタ２２１、割り込みイネーブルレジスタ２２２、不一致書き込みイネーブルレジスタ２２３、履歴イネーブルレジスタ２２４、ステータスレジスタ２２５、比較対象アドレスレジスタ２２６、比較モードレジスタ２２７、期待値レジスタ２２８，２２９、比較結果履歴レジスタ（ここでは、アドレス履歴レジスタ２３０およびデータ履歴レジスタ２３１）の９種類のレジスタが用意されている。これらのレジスタは、全て３２ビットレジスタである。
【００２４】
ここで、比較イネーブルレジスタ２２１、割り込みイネーブルレジスタ２２２、不一致書き込みイネーブルレジスタ２２３、履歴イネーブルレジスタ２２４、ステータスレジスタ２２５は、１つのセットとして存在するが、比較対象アドレスレジスタ２２６、比較モードレジスタ２２７、期待値レジスタ２２８，２２９は、複数のセットとして存在する。このセットの数は、チェックすべきＩＯ（入出力）レジスタ分の数だけ用意されることになる。また、比較結果履歴レジスタ（アドレス履歴レジスタ２３０およびデータ履歴レジスタ２３１）も、複数のセットとして存在し、そのセットの数は、履歴として残すデータの種類の数分必要となる。
【００２５】
比較イネーブルレジスタ２２１は、レジスタアドレス「0x0000番地」に割り付けられており、比較シーケンスを実行するか否かを選択するためのレジスタである。このレジスタ値が０であると、比較シーケンスは実行されず、スキップされ、通常通りに各機能モジュール６，７，８の制御レジスタにアクセスされる。このレジスタ２２１は、比較機能全体をディセーブルにするためのものであって、レジストアドレス「0x0100+0x10*i+0x4番地」に割り付けられている比較モードレジスタ２２７内にある比較イネーブルフィールドとは、異なる。これについては、比較モードレジスタ２２７の説明で詳述する。
【００２６】
割り込みイネーブルレジスタ２２２は、レジスタアドレス「0x0004番地」に割り付けられており、割り込み通知を行うか否かを選択するためのレジスタである。このレジスタ２２２は、割り込み信号をモジュール最終段でディセーブルにするものでであって、比較モードレジスタ２２７内にある割り込みイネーブルフィールドとは異なる。これについては比較モードレジスタ２２７の説明で詳述する。
【００２７】
不一致書き込みイネーブルレジスタ２２３は、レジスタアドレス「0x0008番地」に割り付けられており、比較不一致を起こした場合に、制御レジスタへの書き込みを行うかキャンセルするかを選択するためのレジスタである。このレジスタ２２３は、レジスタ書き込みをモジュール最終段でマスクするためのものであり、比較モードレジスタ２２７内にある不一致書き込みフィールドとは異なる。これについては比較モードレジスタ２２７の説明で詳述する。
【００２８】
履歴イネーブルレジスタ２２４は、レジスタアドレス「0x000C番地」に割り付けられており、比較不一致を起こした場合に、比較結果履歴レジスタ（アドレス履歴レジスタ２３０およびデータ履歴レジスタ２３１）に対して履歴を残すか否かを選択するためのレジスタである。このレジスタ２２４は、履歴機能をモジュール最終段でマスクする機能であり、比較モードレジスタ２２７内にある履歴イネーブルフィールドとは異なる。これについては比較モードレジスタ２２７の説明で詳述する。
【００２９】
ステータスレジスタ２２５は、レジスタアドレス「0x0010番地」に割り付けられており、ステータスフラグフィールド、エラーカウントフィールド、および履歴数フィールドを有する。ステータスフラグフィールドには、比較結果で不一致が生じた場合、かつ不一致を起こした要因の割り込みフィールドが１の場合に、所定値がセットされる。この所定値は、割り込みイネーブルレジスタ２２２の値には依存しないものである。ＣＰＵ２への割り込み信号は、このステータスフィールドと割り込みイネーブルレジスタのＡＮＤ条件が成立すると発生される。割り込み要因をクリアするためには、ステータスフィールドに０を書き込めばよい。エラーカウントフィールドは、比較不一致が生じた数を記録するためのフィールドであり、割り込みが有効な設定か否かには依存せず、その数は、不一致が生じるたびにインクリメントされる。このエラーカウントフィールドは、０クリアが可能である。履歴数フィールドは、比較結果履歴レジスタ（アドレス履歴レジスタ２３０およびデータ履歴レジスタ２３１）に格納された数を示すフィールドである。履歴数フィールドの値は、履歴を残すように設定された比較対象について比較不一致が生じた場合に、上記比較結果履歴レジスタに履歴を書き込むと同時にインクリメントされる。このフィールドについても０クリア可能である。ただし、ステータスレジスタ２２５の全てのフィールドにおける０以外の書き込みは、全て無効である。
【００３０】
比較対象アドレスレジスタ２２６は、レジスタアドレス「0x0100+0x10*i+0x0番地」に割り付けられており、期待値比較を行うモジュールの制御レジスタアドレスを設定するためのレジスタである。ここで、レジスタアドレス中のｉは、比較対象とする制御レジスタの数を示す。
【００３１】
比較モードレジスタ２２７は、レジスタアドレス「0x0100+0x10*i+0x4番地」に割り付けられており、５種類のレジスタフィールドを有する。各レジスタフィールドとしては、比較イネーブルフィールド、比較モードフィールド、割り込みイネーブルフィールド、不一致書き込みフィールド、履歴イネーブルフィールドがある。
【００３２】
上記比較イネーブルフィールドは、比較機能を有効にするか否かを決定するためのフィールドである。このフィールドは、比較イネーブルレジスタ２２１とは異なり、比較対象となる制御レジスタのイネーブル設定を個別に行うためのフィールドである。
【００３３】
上記比較モードフィールドは、比較モードのタイプを設定するためのフィールドである。比較モードとしては、単純な即値データと比較するモード、特定のビットフィールドをマスクパターンと比較するモード、２つの期待値レジスタから範囲を決定してレジスタ書き込みデータが範囲内に収まっているか否かをチェックするモード、また他の制御レジスタ値と比較するモードなどがある。
【００３４】
本実施の形態においては、以下の種類の比較モードがサポートされ、それらの比較モードを実施することができる。
【００３５】
比較モードフィールド＝０ｘ０  →  即値比較
比較モードフィールド＝０ｘ１  →  特定ビットフィールド比較：期待値＝０
比較モードフィールド＝０ｘ２  →  特定ビットフィールド比較：期待値＝１
比較モードフィールド＝０ｘ３  →  範囲比較（期待値Ａ＜比較対象＜期待値Ｂ）
比較モードフィールド＝０ｘ４  →  他レジスタ比較
ここで、サポートされている比較モードの代表的な使用例について簡単に説明する。
【００３６】
即値比較モードは、モジュール単体でサポートされている機能があるが、そのモジュールを搭載したシステムではその機能を使用することができない構成である場合などに使用される。例えば、モジュールＡはタイマーであり、タイマーの起動をかける方法として、レジスタ設定による起動方法と、外部トリガ信号を検出することによって起動する方法とのうち、いずれの方法を使用するかを選択するための選択レジスタを有するものとする。ここで、モジュールＡは、外部トリガ信号を入力するためのポートを有し、これにより、モジュール単体では外部トリガ信号による起動をサポートするものとする。ただし、このモジュールＡを搭載したシステムにおいては、ソフトウェア的な起動のみが行われ、外部トリガ入力はその上位階層においてクランプされているとする。この場合、上記選択レジスタ自体には、当然アクセス可能であるが、ハード起動を有効にしても、その手段を持たないため、使用不可である。よって、即値比較モードは、このような場合の不正設定値検出に有効である。
【００３７】
特定ビットフィールド比較モードは、即値比較よりも細かい特定ビット単位のチェックを行うことが可能であり、特に、１つの制御レジスタ内に複数の設定フィールドを有する場合に非常に有効なモードである。例えば、あるＤＭＡＣのモード設定レジスタが、アクセス方向フィールド、バースト転送モードフィールド、バースト長フィールドなどを有するとする。さらに、当該ＤＭＡＣは、汎用的に設計されており、外部メモリからＩＯデバイスへのＤＭＡとＩＯデバイスから外部メモリへのＤＭＡの両方をサポートし、その切り替えを、アクセス方向フィールドを用いて行うことができる。しかし、当該ＤＭＡＣと接続されるＩＯデバイスが単方向のみをサポートするシステムにおいては、アクセス方向フィールドは固定のはずである。この「固定」であることは、即値比較モードでは十分にチェックすることができない。それは、即値比較モードが同一レジスタ内の特定フィールドのみをチェックするという場合に対応することができないためである。特定ビットフィールド比較モードにおいては、アクセス方向フィールドに相当するビットに対する期待値レジスタのビットフィールドを１にし、それ以外のフィールドはチェックされないので、それ以外のフィールドは０にすればよい。チェックするビットフィールドに対するチェック値に関しては、０か１かを、比較モード１か２で選択すればよい。
【００３８】
範囲比較モードについては、ＤＭＡＣのメモリに対する転送領域がスタートアドレスとエンドアドレスで与えられるタイプのものを例にして説明する。ここで、ＤＭＡＣの仕様においては、両アドレス共に３２ビットアドレスとして与えられるが、実システム上は０番地から６４ＭＢｉｔのＤＲＡＭが置かれていて、この空間のみにＤＭＡ転送する必要がある場合が考えられる。この場合、エンドアドレスは、0x100_0000より小さい値にすべきである。この値を２つの期待値レジスタ２２８，２２９に置くことにより、不正設定値の発見が可能になる。
【００３９】
他レジスタ比較モードは、ＤＭＡＣと接続されたシリアルＩ／Ｏが外部シリアルインターフェースとの間でシリアル転送を行い、ＤＭＡを使用して外部メモリとの間で転送を行う場合に用いられる。この場合、シリアルＩ／Ｏにフレーム数を設定するレジスタがあり、またＤＭＡＣにもＤＭＡ転送長を設定するレジスタが搭載されている。システム制約、またシリアルＩ／Ｏの仕様から、ＤＭＡ転送長が同じとする制約が設けられる場合がある。このような制約をチェックする場合には、期待値レジスタ２２８，２２９に一方の制御レジスタのアドレスを指定すれば、そのアドレスに一致するレジスタとの間で比較を行うことができる。
【００４０】
上記割り込みイネーブルフィールドにおいては、その値が１のときのみに、割り込み要因となり得る。割り込みイネーブルフィールドは、割り込みイネーブルレジスタ２２２とは異なり、比較対象となる制御レジスタのそれぞれに対するイネーブル設定を個別に行うためのものである。
【００４１】
上記不一致書き込みフィールドは、期待値比較結果が不一致の場合に、機能モジュールへの書き込みを行うかキャンセルするかを決定するためのものである。この不一致書き込みフィールドは、不一致書き込みイネーブルレジスタ２２３とは異なり、比較対象となる制御レジスタのそれぞれに対するイネーブル設定を個別に行うためのものである。
【００４２】
上記履歴イネーブルフィールドにおいては、その値が１のときのみに、期待値が一致しなかった場合の履歴を残す機能が有効になる。この履歴イネーブルフィールドは、履歴イネーブルレジスタ２２４とは異なり、比較対象となる制御レジスタのそれぞれに対するイネーブル設定を個別に行うためのものである。
【００４３】
各期待値レジスタ２２８，２２９は、それぞれレジスタアドレス「0x0100+0x10*I+0x08番地」、「0x0100+0x10*I+0x0C番地」に割り付けられており、比較対象アドレスに対する書き込みデータと比較する期待値データを格納するためのレジスタである。期待値レジスタ２２８，２２９には、即値データのように比較を行うデータが格納されるだけでなく、比較モードが「他レジスタとの比較」の場合、比較対象レジスタのレジスタアドレスが設定される。２つの期待値レジスタが存在するのは、比較モードで「範囲比較」が選択された場合に対応するためである。
【００４４】
比較結果履歴レジスタは、比較結果がＮＧだった場合に、レジスタアドレスとデータを記憶するためのレジスタ群であり、本実施の形態においては、アドレス履歴レジスタ２３０（レジスタアドレス：0x1000+0x10*j+0x0番地）およびデータ履歴レジスタ２３１（レジスタアドレス：0x1000+0x10*j+0x4番地）が含まれる。比較結果履歴レジスタがイネーブル状態で、さらに比較不一致を起こした制御レジスタ用の比較モードレジスタ２２７内の履歴イネーブルフィールドがイネーブルである場合に、比較結果履歴レジスタに履歴が保存される。この履歴が保存される度に、ステータスレジスタ２２５の履歴数フィールドの値はカウントアップされる。
【００４５】
以上の制御レジスタのうち、比較対象アドレスレジスタから期待値レジスタまでの各制御レジスタ２２６〜２２９に関しては、少なくとも、比較対象の制御レジスタ数分のレジスタ以外に、ＡＳＩＣ完成後以降にもハードウェア制約が追加されることを想定して、予め余分のレジスタを設けることが好ましい。
【００４６】
比較回路２３は、図２に示すように、スレーブＩ／Ｆ５（図１）から送出されたレジスタ書き込みデータと制御レジスタ群２２内のある期待値とを対応する比較モードにより比較し、その比較結果を比較結果処理回路２４へ渡す。また、比較モードが「他制御レジスタとの比較」の場合、レジスタチェックモジュール４自身が、周辺装置内の制御レジスタへリードアクセスを行う必要があるので、比較回路２３は、その旨をペリフェラルＩ／Ｆ２５へ通知する。その結果、ペリフェラルＩ／Ｆ２５は、周辺装置内の制御レジスタへリードアクセスを行い、レジスタ読み出しデータを比較回路２３へ返す。そして、比較回路２３は、スレーブＩ／Ｆ５からの書き込みデータとペリフェラルＩ／Ｆ２５から返された読み出しデータとの比較を行う。その比較結果は、他のモードと同様に、比較結果処理回路に渡される。
【００４７】
比較結果処理回路２４は、比較結果に基づいて、各機能モジュールへのアクセスを実行するか、また比較結果がＮＧである場合に割り込み通知を行うか、また履歴を残すかの処理制御を行う。
【００４８】
ペリフェラルＩ／Ｆ２５は、比較不一致を起こし、かつ比較モードレジスタの不一致書き込みフィールドが「ディセーブル」の場合、スレーブＩ／Ｆ５からのアクセス開始信号をマスクし、アクセスをキャンセルする。一方、比較対象でない制御レジスタへのアクセスの場合、比較結果が一致した場合、または不一致書き込みフィールドが「イネーブル」の場合、ペリフェラルＩ／Ｆ２５は、スレーブＩ／Ｆ５からのレジスタアクセス開始信号をマスクすることなくそのまま出力する。ただし、上記レジスタアクセス開始信号のマスクについては、スレーブＩ／Ｆ２５からのアクセス開始信号を受けてから、比較処理が完了するまでが複数のサイクルに及ぶので、ステートマシンで管理される必要がある。特に、他の制御レジスタとの比較を行う場合は、確実に複数サイクルの比較期間が必要となる。
【００４９】
次に、本実施の形態における、レジスタアクセスが行われてから比較処理を経て、レジスタアクセスが完了するまでの手順について図４および図５を参照しながら説明する。図４および図５は図１のシステムにおけるレジスタアクセスの実行から比較処理を経てレジスタアクセスの完了までの手順を示すフローチャートである。図４および図５に示すフローチャートは、ＣＰＵ２、スレーブＩ／Ｆ５、レジスタチェックモジュール４、ペリフェラル（機能ブロック）のそれぞれに処理に分けて記述されたものである。
【００５０】
図４に示すように、ＣＰＵ２がペリフェラル（機能モジュール６，７，８のいずれか）のレジスタａ０（図示せず）にアクセスを開始すると（ステップＳ１）、スレーブＩ／Ｆ５は、レジスタアクセス開始信号をアサートする（ステップＳ２）。これと同じサイクルで、レジスタアドレスとレジスタ書き込みデータが有効となる。レジスタチェックモジュール４は、上記レジスタアドレスおよびレジスタ書き込みデータを受け、まず比較イネーブルレジスタ２２１１の値をチェックする（ステップＳ３）。そして、レジスタチェックモジュール４は、上記チェックの結果がイネーブルであるか否かを判定する（ステップＳ４）。
【００５１】
上記ステップＳ４において上記チェックの結果がディセーブルであると判定された場合は、ソフトウェア開発後期でレジスタ比較機能を必要としない場合である。このディセーブルの場合、レジスタチェックモジュール４は、図５に示すように、ペリフェラルの制御レジスタへアクセス開始信号、アドレス、書き込みデータを出力する（ステップＳ１８)。
【００５２】
ペリフェラル（機能モジュール）は、上記アクセス開始信号、アドレスおよび書き込みデータを受けて対応するレジスタａ０に対して書き込みを行い（ステップＳ２０）、その書き込みを終了すると、アクセス完了信号をレジスタチェックモジュール４に出力する（ステップＳ２１）。
【００５３】
レジスタチェックモジュール４は、上記アクセス完了信号を受け、スレーブＩ／Ｆ５へアクセス完了信号を出力し（ステップＳ３０）、スレーブＩ／Ｆ５は、システムバス１にレディ信号を返し（ステップＳ３１）、バスを解放するすなわち処理を終了する（ステップＳ３２）。
【００５４】
これに対し、比較イネーブルレジスタ２２１がイネーブル状態であると判定された場合（ステップＳ４）、レジスタチェックモジュール４は、スレーブＩ／Ｆ５からのアドレスと比較対象レジスタのアドレスが一致するか否かを判定する（ステップＳ５）。ここで、一致するアドレスが比較対象アドレスレジスタ２２６内に存在しない場合は、上記比較イネーブルレジスタ２２１がディセーブルのときと同様に、通常のレジスタアクセスが行われる（ステップＳ１→Ｓ２→Ｓ３→Ｓ４→Ｓ５→Ｓ６→Ｓ８→Ｓ１８→Ｓ２０→Ｓ２１→Ｓ３０→Ｓ３１→Ｓ３２）。本実施の形態においては、全比較対象制御レジスタアドレスを全てチェックしたか否かをチェックしているステート（ステップＳ８）が設けられているが、これは、１サイクル以内で全ての対象アドレスを比較可能なハードウェアが実装されている場合には必要がないステートである。
【００５５】
これに対し、上記ステップＳ６においてレジスタアドレスと一致するアドレスが比較対象アドレスレジスタ２２６にあると判定された場合、レジスタチェックモジュール４は、その比較対象レジスタアドレスに相当する比較モードレジスタ２２６内の比較イネーブルフィールドをチェックする（ステップＳ７）。そして、レジスタチェックモジュール４は、上記チェックの結果がイネーブルであるか否かを判定する（ステップ９）。ここで、上記チェックの結果がディセーブルであれば、通常のレジスタアクセス（Ｓ１８→Ｓ２０→Ｓ２１→，……，→Ｓ３２）となる。
【００５６】
上記ステップＳ９において比較イネーブルフィールドがイネーブルであると判定された場合、レジスタチェックモジュール４は、比較モードレジスタ２２７内の比較モードフィールドの値をチェックし（ステップＳ１０）、設定されている比較モードを判別する（ステップＳ１１）。
【００５７】
上記ステップＳ１１で判別された比較モードが即値比較モードである場合、レジスタチェックモジュール４は、単純に書き込みデータと期待値レジスタ２２８に格納されている値とを比較する（ステップＳ１２）。
【００５８】
上記ステップＳ１１で判別された比較モードが特定ビットフィールド比較モードである場合、レジスタチェックモジュール４は、期待値レジスタ２２８に格納されている３２ビットの比較対象のビットパターンのうち、‘１’のビットに対してのみチェックを行う（ステップＳ１３）。ここで、比較期待値は、比較モードが１の場合は０で、比較モードが２の場合は１である。
【００５９】
上記ステップＳ１１で判別された比較モードが範囲比較モードである場合、レジスタチェックモジュール４は、期待値レジスタ２２８，２２９にそれぞれ格納されている下限期待値および上限期待値を参照し、書き込みデータが下限期待値と上限期待値との間にあるか否かをチェックする（ステップＳ１４）。
【００６０】
上記ステップＳ１１で判別された比較モードが他レジスタ比較モードである場合（ステップＳ１５）、レジスタチェックモジュール４は、まず期待値レジスタ２２８に格納されているデータをレジスタアドレスとして、実際に各機能モジュール６，７，８内の上記アドレスに対してリードアクセスする（ステップＳ１５）。そのために、スレーブＩ／Ｆ５内のアドレスデコーダと同等のものがレジスタチェックモジュール４内にも存在しており、このアドレスデコーダ回路により、レジスタアクセス開始信号が生成されることになる。そして、ペリフェラル（機能ブロック）は、対応するレジスタデータをレジスタチェックモジュール４へ返す（ステップＳ１６）。レジスタチェックモジュール４は、ペリフェラルから返されたデータとＣＰＵ２からの書き込みデータとを比較する（ステップＳ１７）。
【００６１】
設定された比較モードでの処理が完了すると、レジスタチェックモジュール４は、図５に示すように、比較結果処理回路２４による比較結果の評価を行う。ここでは、３種類の処理が同時に行われる。比較結果処理回路２４は、まず、履歴イネーブルレジスタ２２４と比較モードレジスタ２２７内の履歴イネーブルフィールドとをチェックし（ステップＳ２２）、そのチェックの結果がイネーブルであるか否かを判定する（ステップＳ２３）。上記チェックの結果がイネーブルであれば、レジスタチェックモジュール４は、比較結果履歴レジスタであるアドレス履歴レジスタ２３０とデータ履歴レジスタ２３１へそれぞれレジスタアドレスと書き込みデータをセーブする（ステップＳ２４）。上記履歴イネーブルフィールドが０の場合は、図示されていないが、比較結果処理回路２４は、特に何も行わず、本処理を終了する。
【００６２】
また同時に、比較結果処理回路２４は、割り込みイネーブルレジスタ２２２と、比較不一致を起こした制御レジスタアドレスに相当する比較モードレジスタ２２７内の割り込みイネーブルフィールドとをチェックし（ステップＳ２５）、そのチェックの結果に基づいて両方がイネーブルであるか否かを判定する（ステップＳ２６）。ここで、割り込みイネーブルレジスタ２２２と対応する割り込みイネーブルフィールドとの両方がイネーブルであれば、比較結果処理回路２４は、ステータスレジスタ２２５のステータスフラグをセットし、さらに割り込み信号をアサートする（ステップＳ２７）。
【００６３】
もし割り込みモードレジスタ２２２の割り込みフィールドのみがイネーブルの場合は、ステータスレジスタ２２５のステータスフィールドは、１にセットされる。ただし、割り込みイネーブルレジスタ２２２がディセーブル状態のため、割り込み信号はアサートされない。そして、比較結果処理回路２４は、本処理を終了する。
【００６４】
また同時に、比較結果処理回路２４は、不一致書き込みイネーブルレジスタ２２３と不一致を起こした比較対象レジスタアドレスに相当する比較モードレジスタ２２７内の不一致書き込みフィールドとをチェックし（ステップＳ２８）、両方がイネーブルであるか否かを判定する（ステップＳ２９）。ここで、両方がイネーブルである場合、比較結果処理回路２４は、通常のペリフェラルへのレジスタアクセスを開始する（ステップＳ１８）。その後の手順は、通常のレジスタアクセス時と同様である。
【００６５】
上記ステップＳ２９において不一致書き込みフィールドがディセーブルであると判定された場合、レジスタチェックモジュール４は、ペリフェラルへのアクセスを行うことなく、スレーブＩ／Ｆ５に対してアクセス完了信号を渡す（ステップＳ３０）。そして、スレーブＩ／Ｆ５は、システムバス１にレディ信号を返し（ステップＳ３１）、バスを解放するすなわち処理を終了する（ステップＳ３２）。
【００６６】
このように、本実施の形態によれば、ソフトウェア開発の初期の段階においてレジスタ設定値間違いを発見することができる。
【００６７】
また、期待値として、即値データ、特定ビットフィールド、少なくとも上限期待値と下限期待値とにより与えられる値、および／または他の制御レジスタの設定値とすることによって、単純な即値データと比較するモード、特定のビットフィールドをマスクパターンと比較するモード、２つの期待値レジスタから範囲を決定してレジスタ書き込みデータが範囲内に収まっているか否かをチェックするモード、また他の制御レジスタ値と比較するモードを実施することが可能になる。
【００６８】
また、比較処理を行っている期間はレジスタアクセスを遅延させ、比較結果が不一致の場合には書き込み自体を取り消すことによって、不正な設定が引き起こす実機上の致命的な不具合を回避することができる。この比較機能はハードウェア実施手段によっては、ＣＰＵ２のペリフェラルへのＩＯアクセス自体が低速化してしまう恐れがあるが、これを無効化する機能を提供することによって、ソフトウェア開発後期には低速でない通常のアクセスが保証される。
【００６９】
また、比較結果の履歴を残すことによって、割り込みハンドラ内で不適切なレジスタ設定が行われた履歴を確認することができる。
【００７０】
（第２の実施の形態）
次に、本発明の第２の実施の形態について図６〜図８を参照しながら説明する。図６は本発明の第２の実施の形態に係るレジスタチェックモジュール（レジスタ設定値監視モジュール）を含むシステムの構成を示すブロック図、図７は図６のレジスタチェックモジュールの構成を示すブロック図、図８は図６のＳＲＡＭ内に設けられた制御レジスタのそれぞれを模式的に示す図である。図中、上記第１の実施の形態と同一のブロックには、同一の符号を付し、その説明は省略する。
【００７１】
本実施の形態は、図６に示すように、上記第１の実施の形態に対し、比較モード、期待値などに関するレジスタが汎用のＳＲＡＭ１０３内に設けられている点で異なる。詳細には、汎用ＳＲＡＭ１０３は、ＳＲＡＭＩ／Ｆ１０１とスレーブＩ／Ｆ１００を介してシステムバス１と接続されており、ＣＰＵ２を含む各バスマスタからアクセスが可能である。このＳＲＡＭモジュールは、スレーブＩ／Ｆ１００との接続経路とともに、レジスタチェックモジュール４との接続経路を有する。
【００７２】
レジスタチェックモジュール４は、比較モードおよび他の情報を含む期待値データを読み出す際に、ＳＲＡＭ１０３に対して信号１０５を送出し、アクセスを行う。また、ＳＲＡＭ１０３は、汎用的に使用され、この場合も、システムバス１からＳＲＡＭ１０３へアクセスが行われる。ＳＲＡＭ１０３への上記２つのアクセスは、セレクタ１０２で切り替えられる。このセレクタ１０２の切り替え動作は、レジスタチェックモジュール４からの切り替え信号１０４により制御される。
【００７３】
レジスタチェックモジュール４は、図７に示すように、上記第１の実施の形態のレジスタチェックモジュール４に対し、ＳＲＡＭＩ／Ｆ１２３が設けられている制御レジスタ群１２２を有する点で異なる。制御レジスタ群１２２には、上記第１の実施の形態と同様に、比較イネーブルレジスタ、割り込みイネーブルレジスタ、不一致書き込みレジスタ、履歴イネーブルレジスタおよびステータスレジスタが含まれる。また、制御レジスタ群１２２には、比較対象数レジスタ、比較対象レジスタアドレス用ベースアドレスレジスタ、比較モード用ベースアドレスレジスタ、期待値（Ａ，Ｂ）用ベースアドレスレジスタ、アドレス履歴用ベースアドレスレジスタおよびデータ履歴用ベースアドレスレジスタが新規に追加される。これらのレジスタは、全て、１セットのみである。
【００７４】
ＳＲＡＭ１０３には、上記レジスタ以外の複数セットからなる、比較対象アドレスレジスタ、比較モードレジスタ、期待値データレジスタ、アドレス履歴レジスタ、データ履歴レジスタの全てが設けられている。
【００７５】
新規に追加される比較対象数レジスタには、比較対象とする少なくとも１つの制御レジスタを指定するための番号が設定される。これは、ＳＲＡＭ１０３の容量を許容する限りの値を設定することができる。各ベースアドレスレジスタをＳＲＡＭ１０３内のアドレスに指定することによって、各設定値（比較対象レジスタアドレス、比較モード、期待値Ａ，Ｂ）をＳＲＡＭ１０３内の任意のアドレスから連続的に配置することを可能とする。また同様に、新規に追加される履歴数レジスタは、履歴領域としてＳＲＡＭ１０３内に確保する領域の大きさを指定するものであり、アドレス履歴用ベースアドレスレジスタ、データ履歴用ベースアドレスレジスタをＳＲＡＭ１０３内のアドレスに指定することによって、履歴情報をＳＲＡＭ１０３内に連続的に配置することが可能になる。
【００７６】
図８において、図中の符号Ａ，Ｂ，…，Ｌは、比較対象の制御レジスタ番号であり、ここでは１２個の比較対象制御レジスタが仮定されている。比較対象数レジスタは、このとき0xCに設定されている。ここで、さらに１つの比較対象レジスタ（例えば0xCC00_0024番地）の制御レジスタ）を追加したければ、比較対象数レジスタを0xDにし、ＳＲＡＭ１０３上の（比較対象レジスタアドレス用ベースアドレスレジスタ＋0xD*4）番地に0xCC00_0024を書けばよい。また比較モードについても、同様に、ＳＲＡＭ１０３上の（比較モード用ベースアドレスレジスタ＋0xD*4）番地に所望のモードを設定すればよい。他の設定も同様である。
【００７７】
履歴については、履歴専用の履歴数レジスタ、アドレス履歴用ベースアドレスレジスタ、およびデータ履歴用ベースアドレスレジスタを用いて履歴領域をＳＲＡＭ１０３内に確保しすればよい。図８において、ａ，ｂ，…，ｊは、履歴番号であり、ここでは、１０個の比較不一致までの履歴を格納することができる。
【００７８】
本実施の形態の場合、レジスタアクセスが行われてから比較処理を経て、レジスタアクセスが完了するまでの手順は、上記第１の実施の形態と同じである。ただし、ＳＲＡＭ１０３内に各比較パラメータが格納されているため、ＳＲＡＭ１０３へのアクセス時間が掛かることになる。特に、スレーブＩ／Ｆ５からのレジスタアドレスと一致する比較対象アドレスを検索する（図４のステップＳ５）際、ＳＲＡＭ１０３内の比較対象レジスタアドレスが格納された領域を連続的にアクセスしてチェックする必要があるため、比較対象のレジスタ数が多いほど、検索シーケンス（ステップＳ５→Ｓ６→Ｓ８→Ｓ５→Ｓ６）の繰り返し数が増すことになる。また、期待値や比較モードをＳＲＡＭ１０３へアクセスして読み出す必要があるので、一度のＣＰＵ２からのレジスタアクセスのみで、それが長時間システム１を占有する場合がある。ただし、レジスタ設定値チェック機能は、あくまでソフトウェアデバッグ時に使用するものであるので、開発後期に比較イネーブルレジスタをディセーブル状態にすれば、比較シーケンスは全てスキップされ、高速応答を実現することができる。
【００７９】
また、開発後期にはＳＲＡＭ１０３内をレジスタチェック用ではない他の汎用的な目的に使用することができる。このＳＲＡＭ１０３の切り替え信号１０４は通常ＳＲＡＭＩ/Ｆ１０１の選択を指示しており、比較パラメータのアクセス時にのみレジスタチェックモジュール４内のＳＲＡＭＩ／Ｆ１２３の選択を指示する。レジスタチェックモジュール４からのＳＲＡＭ１０３への比較パラメータの読み出し時には、システムバス１のバストランザクションは閉じてないので、ＳＲＡＭ１０３へのアクセスは、確実に排他アクセスとなる。
【００８０】
また、ＣＰＵ２を含む全バスマスタがスレーブとしてアクセス可能なＳＲＡＭ１０３領域のうち、実製品ソフトウェアに使用しない領域を本比較パラメータ格納領域として使用することができる。この場合、レジスタチェックモジュール４内の比較対象数レジスタと各ベースアドレスレジスタは、ＳＲＡＭ１０３領域のうち、本比較パラメータ格納領域用として許容された領域を超えないように指定される。
【００８１】
また、本実施の形態においては、レジスタ設定期待値格納手段をソフトウェアによって書き換え可能なレジスタまたはＳＲＡＭ１０３として説明したが、これを論理上固定値として実装することも当然可能であり、その場合、後に設定を書き換えることができなくなるが、自由度と回路規模のトレードオフによる実装方法を選択することは可能である。
【００８２】
また、ＳＲＡＭ１０３を用いることによって、ＬＳＩの完成後に期待値を追加したり、書き換えたりすることができる。
【００８３】
また、ＳＲＡＭ１０３が汎用なスレーブデバイスとして実装し、複数セット存在しうる各比較パラメータをＳＲＡＭ１０３内に移動し、最小限の制御レジスタのみをレジスタチェックモジュール４内に残すことによって、レジスタチェックモジュール４自体の回路規模を最小限にすることができる。また、レジスタチェックモジュール４内に残されたレジスタの全ては、比較対象数に依存しないので、自由度が高い設計が可能になる。
【図面の簡単な説明】
【００８４】
【図１】本発明の第１の実施の形態に係るレジスタチェックモジュール（レジスタ設定値監視モジュール）を含むシステム構成を示すブロック図である。
【図２】図１のレジスタチェックモジュールの内部構成を示すブロック図である。
【図３】図２の制御レジスタ群２２に含まれる各制御レジスタおよびそれぞれのデータフォーマットを示す図である。
【図４】図１のシステムにおけるレジスタアクセスの実行から比較処理を経てレジスタアクセスの完了までの手順を示すフローチャートである。
【図５】図１のシステムにおけるレジスタアクセスの実行から比較処理を経てレジスタアクセスの完了までの手順を示すフローチャートである。
【図６】本発明の第２の実施の形態に係るレジスタチェックモジュール（レジスタ設定値監視モジュール）を含むシステムの構成を示すブロック図である。
【図７】図６のレジスタチェックモジュールの構成を示すブロック図である。
【図８】図６のＳＲＡＭ内に設けられた制御レジスタのそれぞれを模式的に示す図である。
【符号の説明】
【００８５】
１  システムバス
２  ＣＰＵ
４  レジスタチェックモジュール
５  スレーブＩ／Ｆ
６，７，８  機能モジュール
２１  レジスタＩ／Ｆ
２２  制御レジスタ群
２３  比較回路
２４  比較結果処理回路
２５  ペリフェラルＩ／Ｆ
１０２  セレクタ
１０３  ＳＲＡＭ
１２３  ＳＲＡＭＩ／Ｆ
【図１】
2006293641.tif 000003
【図２】
2006293641.tif 000004
【図３】
2006293641.tif 000005
【図４】
2006293641.tif 000006
【図５】
2006293641.tif 000007
【図６】
2006293641.tif 000008
【図７】
2006293641.tif 000009
【図８】
2006293641.tif 000010