(57)【要約】【課題】本発明は、画像処理等の予め設定されている制御手順でレジスタアクセスで設定される情報に基づいて動作する機能モジュールにおけるデバッグを効率的に行う。【解決手段】画像処理ＡＳＩＣ１１は、制御手順の決まっている機能モジュール２１に対応して配置されたアドレスモニタ３１が、機能モジュール２１に対するレジスタアクセスが発生するたびに、該レジスタアクセスのアドレスに基づいて、対応する機能モジュール２１に対するレジスタアクセスであるか判断して、対応する機能モジュール２１に対するレジスタアクセスであると、該アドレスを取得し、対応するＣＲＣ演算回路３２が、該機能モジュール２１に対するレジスタアクセスからアドレスモニタ３１の取得したアドレス値と、該機能モジュール２１に対応する結果保存レジスタ２３に保存されているＣＲＣコードと、からＣＲＣコードを生成して、結果保存レジスタ２３に保存する。【選択図】          図１
2012048277.tif 000002
【特許請求の範囲】
【請求項１】
制御手順の決まっている複数の機能モジュールと、
前記各機能モジュールに対応して配設され、ＣＲＣコードを保存するＣＲＣコード保存手段と、
前記各機能モジュールに対応して配設され、該機能モジュールに対するレジスタアクセスが発生するたびに、該レジスタアクセスのアドレスに基づいて、対応する該機能モジュールに対するレジスタアクセスであるか否かを判断して、対応する該機能モジュールに対するレジスタアクセスであると、該アドレスを取得するアドレスモニタ手段と、
前記各機能モジュールに対応して配設され、対応する該機能モジュールに対する前記レジスタアクセスから前記アドレスモニタ手段が取得した前記アドレス値と、対応する前記機能モジュールに対応する前記ＣＲＣコード保存手段に保存されているＣＲＣコードと、からＣＲＣコードを生成し、該ＣＲＣコード保存手段に保存するＣＲＣ演算手段と、
を備えていることを特徴とする半導体集積回路。
【請求項２】
制御手順の決まっている複数の機能モジュールと、
該各機能モジュールに対応して配設され、ＣＲＣコードを保存するＣＲＣコード保存手段と、
前記機能モジュールに対するレジスタアクセスが発生するたびに、該レジスタアクセスのアドレスに基づいて、該レジスタアクセスが複数の該機能モジュールのうちどの機能モジュールに対するレジスタアクセスであるかを判断して、該アドレスを、該機能モジュールに対応付けて振り分けるアドレスモニタ手段と、
前記各機能モジュールに対応して配設され、前記アドレスモニタ手段が振り分けた前記アドレス値と、該振り分け先の該機能モジュールに対応する前記ＣＲＣコード保存手段が保存するＣＲＣコードと、からＣＲＣコードを生成し、該ＣＲＣコード保存手段に保存するＣＲＣ演算手段と、
を備えていることを特徴とする半導体集積回路。
【請求項３】
前記半導体集積回路は、
前記ＣＲＣコード保存レジスタを外部から参照可能にするインターフェイスを備えていることを特徴とする請求項１または請求項２記載の半導体集積回路。
【請求項４】
前記アドレスモニタ手段は、
前記機能モジュール毎に、該機能モジュールに対する特定のアドレスを検出すると、該機能モジュールに対応する前記ＣＲＣ演算手段に対してリセット信号を出力し、
前記ＣＲＣ演算手段は、
前記リセット信号を受け取ると、ＣＲＣ演算をリセットするとともに、対応する前記ＣＲＣコード保存手段をリセットすることを特徴とする請求項１から請求項３のいずれかに記載の半導体集積回路。
【請求項５】
前記アドレスモニタ手段は、
前記レジスタアクセスのアドレスに基づいて、該レジスタアクセスがどの前記機能モジュールに対するレジスタアクセスであるかを判断して該アドレスを振り分けるための振り分け基準情報を内部メモリに記憶していることを特徴とする請求項２から請求項３のいずれかに記載の半導体集積回路。
【請求項６】
前記アドレスモニタ手段は、
任意のアドレスを前記レジスタアクセスの監視対象のアドレスから外すことを特徴とする請求項１から請求項５のいずれかに記載の半導体集積回路。
【請求項７】
予め設定されている制御手順で動作する複数の機能モジュールを搭載する半導体集積回路にデバッグ装置を接続して該半導体集積回路のデバッグを行うデバッグシステムにおいて、
前記半導体集積回路は、請求項１から請求項６のいずれかに記載の半導体集積回路であって、
前記デバッグ装置は、
前記半導体集積回路の前記ＣＲＣコード保存手段に保存されている前記ＣＲＣコードを読み出して該半導体集積回路のデバッグを行うことを特徴とするデバッグシステム。
【請求項８】
制御手順の決まっている複数の機能モジュールに対応して配され、該機能モジュールに対するレジスタアクセスが発生するたびに、該レジスタアクセスのアドレスに基づいて、対応する該機能モジュールに対するレジスタアクセスであるか否かを判断して、対応する該機能モジュールに対するレジスタアクセスであると、該アドレスを取得するアドレスモニタ処理ステップと、
前記各機能モジュールに対応して配され、対応する機能モジュールに対する前記レジスタアクセスから前記アドレスモニタ処理ステップで取得された該アドレス値と、該各機能モジュールに対応させてＣＲＣコードを保存するＣＲＣコード保存手段のうち、対応する該機能モジュールに対応するＣＲＣ保存手段に保存されているＣＲＣコードと、からＣＲＣコードを生成し、該ＣＲＣコード保存手段に保存するＣＲＣ演算処理ステップと、
を有していることを特徴とするデバッグ方法。
【請求項９】
制御手順の決まっている複数の機能モジュールに対するレジスタアクセスが発生するたびに、該レジスタアクセスのアドレスに基づいて、複数の該機能モジュールのうちどの機能モジュールに対するレジスタアクセスであるかを判断して、該アドレスを、該機能モジュールに対応付けて振り分けるアドレスモニタ処理ステップと、
前記各機能モジュールに対応して配され、前記アドレスモニタ処理ステップで振り分けられた前記アドレス値と、該各機能モジュールに対応させてＣＲＣコードを保存するＣＲＣコード保存手段のうち該振り分け先の該機能モジュールに対応する該ＣＲＣコード保存手段が保存するＣＲＣコードと、からＣＲＣコードを生成し、該ＣＲＣコード保存手段に保存するＣＲＣ演算処理ステップと、
を有していることを特徴とするデバッグ方法。
【請求項１０】
コンピュータに、
制御手順の決まっている複数の機能モジュールに対応して配され、該機能モジュールに対するレジスタアクセスが発生するたびに、該レジスタアクセスのアドレスに基づいて、対応する該機能モジュールに対するレジスタアクセスであるか否かを判断して、対応する該機能モジュールに対するレジスタアクセスであると、該アドレスを取得するアドレスモニタ処理と、
前記各機能モジュールに対応して配され、対応する機能モジュールに対する前記レジスタアクセスから前記アドレスモニタ処理で取得された前記アドレス値と、該各機能モジュールに対応させてＣＲＣコードを保存するＣＲＣコード保存手段のうち、対応する該機能モジュールに対応するＣＲＣ保存手段に保存されているＣＲＣコードと、からＣＲＣコードを生成し、該ＣＲＣコード保存手段に保存するＣＲＣ演算処理と、
を実行させることを特徴とするデバッグプログラム。
【請求項１１】
コンピュータに、
制御手順の決まっている複数の機能モジュールに対するレジスタアクセスが発生するたびに、該レジスタアクセスのアドレスに基づいて、複数の該機能モジュールのうちどの機能モジュールに対するレジスタアクセスであるかを判断して、該アドレスを、該機能モジュールに対応付けて振り分けるアドレスモニタ処理と、
前記各機能モジュールに対応して配され、前記アドレスモニタ処理で振り分けられた前記アドレス値と、該各機能モジュールに対応させてＣＲＣコードを保存するＣＲＣコード保存手段のうち該振り分け先の該機能モジュールに対応する該ＣＲＣコード保存手段が保存するＣＲＣコードと、からＣＲＣコードを生成し、該ＣＲＣコード保存手段に保存するＣＲＣ演算処理と、
を実行させることを特徴とするデバッグプログラム。
【請求項１２】
請求項１０または請求項１１記載のデバッグプログラムを記録したことを特徴とするコンピュータが読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路、デバッグシステム、デバッグ方法、デバッグプログラム及び記録媒体に関し、詳細には、画像処理等の予め設定されている制御手順のレジスタアクセスによって設定されるレジスタ情報に基づいて動作する機能モジュールにおけるデバッグを効率的に行う情報を取得することのできるマイクロコンピュータ、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）等の半導体集積回路、デバッグシステム、デバッグ方法、デバッグプログラム及び記録媒体に関する。
【背景技術】
【０００２】
複合装置、ファクシミリ装置、複写装置、プリンタ装置及びコンピュータ等の画像データの処理を行う画像処理装置においては、高機能化に伴って、搭載するソフトウェア及びハードウェア構成が大規模かつ複雑化し、問題が発生した場合の原因の究明が困難となってきているが、市場の要求にタイムリーに対応するためには、早急な原因究明が求められる。
【０００３】
画像処理装置には、近時、高機能な画像処理用の半導体集積回路、例えば、ＡＳＩＣが搭載され、ＡＳＩＣは、内部に複数の画像処理モジュール（機能モジュール）を搭載して、これらの複数の機能モジュールで画像処理した画像データを外部に出力する。
【０００４】
このようなＡＳＩＣの搭載する機能モジュールのレジスタは、制御手順（アドレス順）が定められており、ＣＰＵからレジスタアクセスされて、設定されたレジスタ情報に基づいてデータ処理を行う。
【０００５】
したがって、ＡＳＩＣが搭載する機能モジュールのレジスタに対するＣＰＵのレジスタアクセス順序が予め設定された制御手順と異なった順序であると、該機能モジュールは、動作不良を引き起こすことがある。
【０００６】
ところが、ＡＳＩＣの搭載する複数の機能モジュールのうち、機能モジュールのどの機能モジュールに対するレジスタアクセス手順を間違えたために動作不良になったのかは、障害発生時にレジスタ値をダンプするだけでは判断がつかない。
【０００７】
そして、従来から、ＡＳＩＣ等の半導体集積回路が搭載する機能モジュールのどの機能モジュールに対するレジスタアクセス手順を間違えたために動作不良になったのかを判別するデバッグ方法として、専用のデバッグ機器を接続して障害を再現させて、レジスタアクセス順序を確認する方法や、レジスタのアクセス順序を記録しておく方法が用いられている。
【０００８】
しかし、従来のデバッグ機器を用いたデバッグ方法にあっては、ソフトウェア要因かハードウェア要因かを単に切り分けるためだけであっても、レジスタアクセス手順を判別するための専用のデバッグ機器を準備して、障害を再現させる手順を経なければならず、また、ＡＳＩＣが搭載する複数の機能モジュールのうち、どの機能モジュールに問題が発生したのかが、障害発生時点では特定できていないために、制御手順の決まっている制御系レジスタのアクセス順を全て確認して、問題のあった機能モジュールを特定する必要がり、手間がかかるという問題があった。さらには、従来のデバッグ方法のレジスタアクセス順序を記憶する方法にあっては、確認対象モジュールの分だけメモリが必要になるという問題があった。
【０００９】
そして、従来、バスアクセスを監視して、該バスアクセス中に含まれる各機能モジュールのレジスタに対する設定順序情報を、予め記憶手段に格納されている期待値と比較して、設定順序情報が該期待値と一致しない場合に、エラーと判断する技術が提案されている（特許文献１参照）。
【発明の概要】
【発明が解決しようとする課題】
【００１０】
しかしながら、上記公報記載の従来技術にあっては、バスアクセスを監視してバスアクセス中に含まれる各機能モジュールのレジスタに対する制御順序情報を取得して、記憶手段の期待値と比較しているため、各機能モジュール毎に制御順序情報の期待値を生成して、記憶手段に記憶させる必要があり、機能モジュールが多くなると、その分だけ期待値を格納するための記憶手段の容量として大きな容量が必要となって、コストが高くなるとともに、ＡＳＩＣ等の半導体集積回路が大型化するという問題があった。
【００１１】
そこで、本発明は、安価かつ小型で、小容量の記憶手段を用いて正確にレジスタへのアクセス順序を確認することのできる半導体集積回路、デバッグシステム、デバッグ方法、デバッグプログラム及び記録媒体を提供することを目的としている。
【課題を解決するための手段】
【００１２】
本発明は、上記目的を達成するために、制御手順の決まっている複数の機能モジュールに対応して配されたアドレスモニタ手段が、該機能モジュールに対するレジスタアクセスが発生するたびに、該レジスタアクセスのアドレスに基づいて、対応する該機能モジュールに対するレジスタアクセスであるか否かを判断して、対応する該機能モジュールに対するレジスタアクセスであると、該アドレスを取得し、前記各機能モジュールに対応して配されたＣＲＣ演算手段が、対応する機能モジュールに対するレジスタアクセスからアドレスモニタ手段で取得された該アドレス値と、該各機能モジュールに対応させてＣＲＣコードを保存するＣＲＣコード保存手段のうち、対応する該機能モジュールに対応するＣＲＣ保存手段に保存されているＣＲＣコードと、からＣＲＣコードを生成して、該ＣＲＣコード保存手段に保存することを特徴としている。
【００１３】
また、本発明は、制御手順の決まっている複数の機能モジュールに対するレジスタアクセスが発生するたびに、アドレスモニタ手段が、該レジスタアクセスのアドレスに基づいて、複数の該機能モジュールのうちどの機能モジュールに対するレジスタアクセスであるかを判断して、該アドレスを、該機能モジュールに対応付けて振り分け、各機能モジュールに対応して配されたＣＲＣ演算手段が、該アドレスモニタ手段によって振り分けられた前記アドレス値と、該各機能モジュールに対応させてＣＲＣコードを保存するＣＲＣコード保存手段のうち該振り分け先の該機能モジュールに対応する該ＣＲＣコード保存手段が保存するＣＲＣコードと、からＣＲＣコードを生成して、該ＣＲＣコード保存手段に保存することを特徴としている。
【００１４】
これらの場合、また、本発明は、前記アドレスモニタ手段が、前記機能モジュール毎に、該機能モジュールに対する特定のアドレスを検出すると、該機能モジュールに対応する前記ＣＲＣ演算手段に対してリセット信号を出力し、前記ＣＲＣ演算手段が、前記リセット信号を受け取ると、ＣＲＣ演算をリセットするとともに、対応する前記ＣＲＣコード保存手段をリセットすることを特徴としてもよい。
【００１５】
さらに、本発明は、前記アドレスモニタ手段が、前記レジスタアクセスのアドレスに基づいて、該レジスタアクセスがどの前記機能モジュールに対するレジスタアクセスであるかを判断して該アドレスを振り分けるための振り分け基準情報を内部メモリに記憶していることを特徴としてもよい。
【発明の効果】
【００１６】
本発明によれば、安価かつ小型で、小容量の記憶手段を用いて正確にレジスタへのアクセス順序を確認することができる。
【図面の簡単な説明】
【００１７】
【図１】本発明の一実施例を適用したデバッグ時における複合装置のコントローラボードの要部ブロック構成図。
【図２】ＣＲＣ計算部のブロック構成図。
【図３】複数の機能モジュールに対応するＣＲＣ計算部と結果保存レジスタの一構成例を示す図。
【図４】複数の機能モジュールに対応するＣＲＣ計算部と結果保存レジスタの他の構成例を示す図。
【図５】ＣＲＣ演算回路によるＣＲＣコード生成処理を示すフローチャート。
【図６】ＣＲＣ演算回路による１６ｂｉｔＣＲＣコード計算処理を示すフローチャート。
【発明を実施するための形態】
【００１８】
以下、本発明の好適な実施例を添付図面に基づいて詳細に説明する。なお、以下に述べる実施例は、本発明の好適な実施例であるので、技術的に好ましい種々の限定が付されているが、本発明の範囲は、以下の説明によって不当に限定されるものではなく、また、本実施の形態で説明される構成の全てが本発明の必須の構成要件ではない。
【実施例１】
【００１９】
図１〜図６は、本発明の半導体集積回路、デバッグシステム、デバッグ方法、デバッグプログラム及び記録媒体の一実施例を示す図であり、図１は、本発明の半導体集積回路、デバッグシステム、デバッグ方法、デバッグプログラム及び記録媒体の一実施例を適用した複合装置１のコントローラボード１０の要部ブロック構成図である。
【００２０】
図１において、複合装置１は、デバッグ時、デバッグ用端末（デバッグ装置）１００が接続され、デバッグ用端末１００は、通常のハードウェア構成のコンピュータ等が用いられていて、ハードディスクを搭載しているとともに、キーボード１０１や図示しないマウス等の入力デバイス及びモニタ１０２等の出力デバイス、さらには、図示しないが、複合装置１のコントローラボード１０と接続して信号やデータの授受を行うＵＳＢポート、ネットワークポート、ＲＳ−２３２Ｃポート等の入出力ポート等を備えている。デバッグ用端末１００は、コントローラボード１０とは、イーサネット（Ethernet：登録商標）やＵＳＢによって接続される。デバッグ用端末１００は、コントローラボード１０のデバッグプログラム（評価プログラム）の制御を行い、内蔵するハードディスクに、コントローラボード１０側に出力するデータの元となるデータを保持している。
【００２１】
コントローラボード１０は、スキャナ機能、プリンタ機能、ファクシミリ機能、データ送受信機能等の複数の機能を搭載した複合装置１のコントローラボードであり、複合装置１の搭載する各機能を制御するとともに、画像処理を実行する。
【００２２】
コントローラボード１０は、画像処理ＡＳＩＣ（半導体集積回路）１１、ＣＰＵ（Central Processing Unit ）１２及びＲＡＭ（Random Access Memory）１３等を搭載しており、ＣＰＵ１２と画像処理ＡＳＩＣ１１は、応答を待たずに次の要求を発行できる高速のスプリットトランザクションのバス、例えば、ＰＣＩｅ（Peripheral Component Interconnect Express）で接続されている。
【００２３】
ＲＡＭ１３には、複合装置１の基本プログラムや本発明のデバッグプログラム及び必要なシステムデータが格納されるとともに、ＣＰＵ１２のワークメモリとして利用され、また、画像処理ＡＳＩＣ１１で処理された画像データを一時格納するメモリとして利用される。
【００２４】
ＣＰＵ１２は、ＲＡＭ１３内の基本プログラムに基づいてＲＡＭ１３をワークメモリとして利用しつつ複合装置１の各部を制御して、複合装置１としての基本処理を実行するとともに、デバッグ時には、イーサネット等によって接続されるデバッグ用端末１００からの命令によってＲＡＭ１３内のデバッグプログラムを立ち上げて、画像処理ＡＳＩＣ１１に後述するデバッグ方法を実行させる。
【００２５】
すなわち、複合装置１は、ＲＯＭ、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory ）、ＥＰＲＯＭ、フラッシュメモリ、フレキシブルディスク、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory ）、ＣＤ−ＲＷ（Compact Disc Rewritable ）、ＤＶＤ（Digital Versatile Disk）、ＳＤ（Secure Digital）カード、ＭＯ（Magneto-Optical Disc）等のコンピュータが読み取り可能な記録媒体に記録されている本発明のデバッグ方法を実行するデバッグプログラムを読み込んでＲＡＭ１３等に導入することで、後述するＣＲＣコードを用いたレジスタアクセス監視を行うデバッグ方法を実行する半導体集積回路を搭載する画像処理装置として構築されている。このデバッグプログラムは、アセンブラ、Ｃ、Ｃ＋＋、Ｃ＃、Ｊａｖａ（登録商標）等のレガシープログラミング言語やオブジェクト指向ブログラミング言語等で記述されたコンピュータ実行可能なプログラムであり、上記記録媒体に格納して頒布することができる。
【００２６】
画像処理ＡＳＩＣ１１は、機能モジュール２１、ＣＲＣ（Cyclic Redundancy Check）計算部２２、結果保存レジスタ２３、レジスタコントローラ２４、デバッグコントローラ２５及びＣＰＵ  Ｉ／Ｆ２６等を備えており、ＣＰＵ  Ｉ／Ｆ２６は、ＣＰＵ１２と、応答を待たずに次の要求を発行できる高速のスプリットトランザクションのバス、例えば、ＰＣＩｅ（Peripheral Component Interconnect Express）で接続されている。
【００２７】
ＣＰＵ  Ｉ／Ｆ２６は、機能モジュール２１及びレジスタコントローラ２４に接続されており、レジスタコントローラ２４は、機能モジュール２１に内蔵するレジスタ（図示略）へのインターフェイスである。
【００２８】
ＣＰＵ１２は、ＣＰＵ  Ｉ／Ｆ２６及びレジスタコントローラ２４を介して機能モジュールの内蔵レジスタにアクセスして予め設定されているアクセス順序に従って、機能モジュール２１を動作させるのに必要なレジスタ値を設定し、また、機能モジュール２１との間でＣＰＵ  Ｉ／Ｆ２６を介してデータの授受を行う。
【００２９】
レジスタコントローラ２４は、デバッグコントローラ２５に接続されており、デバッグコントローラ２５は、レジスタコントローラ２４とデバッグ用端末１００のインターフェイスであって、デバッグ用端末１００からレジスタコントローラ２４を介して機能モジュール２１のレジスタにリードまたはライトアクセスすることができるようになっている。デバッグ用端末１００のモニタ１０２で、機能モジュール２１の内蔵レジスタの情報を見ることができる。
【００３０】
結果保存レジスタ（ＣＲＣコード保存手段）２３は、レジスタコントローラ２４及びＣＲＣ計算部２２に接続されており、レジスタコントローラ２４とデバッグコントローラ２５を介して、デバッグ用端末１００からアクセスすることができる。すなわち、レジスタコントローラ２４及びデバッグコントローラ２５は、全体として、結果保存レジスタ２３を外部から参照可能にするインターフェイスとして機能している。
【００３１】
ＣＲＣ計算部２２は、ＣＰＵ  Ｉ／Ｆ２６とレジスタコントローラ２４の間にあるバス２７に接続されており、機能モジュール２１に対するレジスタアクセス時のレジスタアクセス信号からアドレス値を取得して、結果保存レジスタ２３に保存されている値を使ってＣＲＣコードを生成して、結果保存レジスタ２３に反映する。
【００３２】
単純なチェックサム方式は単なる数値の足し合わせであるため、レジスタのアクセス順序が入れ替わったとしても合計した数値は変わらないが、ＣＲＣコードは、入力されたアドレスの順序によって変化するため、ＣＲＣコードを利用すると、機能モジュール２１に対して、正しい制御手順でレジスタアクセスが発生したか、不正な手順でレジスタアクセスが発生したかを、デバッグ用端末１００で結果保存レジスタ２３の値を調べることで判定することができる。
【００３３】
したがって、上述のように、デバッグ用端末１００に、機能モジュール２１毎のＣＲＣコードを用いた期待値を準備し、自動期待値比較を行うことができる。すなわち、デバッグ用端末１００に用意されている期待値と結果保存レジスタ２３に保存されている値が不一致の場合、どの機能モジュールへのアクセス順序が異常だったのかを自動判別して、デバッグ用端末１００のモニタ１０２にエラーメッセージ等の結果表示を行わせる。
【００３４】
また、ＲＡＭ１３に検証用プログラムとモジュール２１毎のＣＲＣコードを用いた期待値を準備し、キーボード１０１からプログラム実行コマンドを入力することで、ＲＡＭ１３の検証用プログラムを実行させて、自動検証することができる。この場合、検証結果を、デバッグ用端末１００のモニタ１０２に表示させるようにすることもできる。
【００３５】
そして、上記ＣＲＣ計算部２２は、図２に示すように、アドレスモニタ３１とＣＲＣ演算回路３２を備えており、アドレスモニタ３１は、上記ＣＰＵ  Ｉ／Ｆ２６とレジスタコントローラ２４を接続するバス２７に接続されている。
【００３６】
アドレスモニタ（アドレスモニタ手段）３１は、バス２７のバスプロトコルを監視し、バス２７を通してＣＰＵ１２からレジスタコントローラ２４を介して機能モジュール２１の内部レジスタへのレジスタアクセスを監視する。アドレスモニタ３１は、監視対象としたいレジスタのアドレス範囲を記憶する内部メモリを備えており、バスプロトコルに含まれるレジスタアクセスのうち、内部メモリに記憶するアドレス範囲内にあるレジスタのアドレス値をＣＲＣ演算回路３２へ出力する。この監視対象とするアドレスの範囲は、監視対象としたい機能モジュール２１の内蔵するレジスタマップが、ＡＳＩＣ設計者により定められた時点で決定される。
【００３７】
ＣＲＣ演算回路（ＣＲＣ演算手段）３２は、アドレスモニタ３１からアドレス値を受け取り、また、結果保存レジスタ２３に格納されているＣＲＣコードを参照して、次のＣＲＣコードを生成し、生成したＣＲＣコードを結果保存レジスタ２３に保存する。
【００３８】
また、アドレスモニタ３１は、機能モジュール２１二対する特定のアドレスを検出すると、リセット信号をＣＲＣ演算回路３２へ出力し、リセット信号を受け取ったＣＲＣ演算回路３２は、内蔵する計算領域と結果保存レジスタ２３を初期化する。
【００３９】
そして、結果保存レジスタ２３は、上述のように、レジスタコントローラ２４に接続されており、デバッグローラ２５を介してデバッグ用端末１００から参照可能となっている。
【００４０】
なお、上記説明では、説明を明確にするために、画像処理ＡＳＩＣ１１が、機能モジュール２１及びＣＲＣ計算部２２を１つずつ搭載している場合について説明したが、実際には、画像処理ＡＳＩＣ１１は、複数の機能モジュール２１を搭載しており、これに対応するために、例えば、図３に示すように、複数の機能モジュール２１ａ〜２１ｎ（図示略）の数に対応する数のＣＲＣ計算部２２ａ〜２２ｎと結果保存レジスタ２３ａ〜２３ｎを設けてもよいし、図４に示すように、１つのＣＲＣ計算部２２に、アドレスモニタ３１と機能モジュール２１ａ〜２１ｎの数だけのＣＲＣ演算回路３２ａ〜３２ｎを搭載して、該数だけの結果保存レジスタ２３ａ〜２３ｎを設けてもよい。
【００４１】
図３の場合、個々の機能モジュール２１ａ〜２１ｎへのレジスタアクセスアドレスを、それぞれのＣＲＣ計算部２２ａ〜２２ｎによって監視して、ＣＲＣ計算部２２ａ〜２２ｎが、個別に結果保存レジスタ２３ａ〜２３ｎのＣＲＣコードを参照して新たなＣＲＣコードを生成し、生成したＣＲＣを結果保存レジスタ２３ａ〜２３ｎに保存する。
【００４２】
図４の場合、複数の機能モジュール２１ａ〜２１ｎに対応するＣＲＣ計算部２２を１つに集約したものであり、ＣＲＣ計算部２２は、１つのアドレスモニタ３１と、複数の機能モジュール２１ａ〜２１ｎに対応する数のＣＲＣ演算回路３２ａ〜３２ｎを搭載している。この場合、アドレスモニタ３１は、監視対象とする複数の機能モジュール２１ａ〜２１の内蔵レジスタのアドレス範囲を複数のグループとして記憶し、グループ毎に割り振ったＣＲＣ演算回路３２ａ〜３２ｎにアドレスを振り分ける機能を持っている。また、図４の場合、グループ毎に割り振ったＣＲＣ演算回路３２ａ〜３２ｎに対して、１つずつ結果保存レジスタ２３ａ〜２３ｎが接続されており、結果保存レジスタ２３ａ〜２３ｎは、全てレジスタコントローラ２４に接続されている。
【００４３】
次に、本実施例の作用について説明する。本実施例の複合装置１は、画像処理ＡＳＩＣ１１が搭載する機能モジュール２１の内蔵レジスタに対するＣＰＵ１２からのレジスタアクセスのアドレスからＣＲＣコードを生成するＣＲＣ計算部２２及び生成されたＣＲＣコードを格納する結果保存レジスタ２３を画像処理ＡＳＩＣ１１に搭載して、小容量の結果保存レジスタ２３を用いてデバッグを容易にする。なお、以下の説明においては、画像処理ＡＳＩＣ１１に、１つの機能モジュール２１、１つのＣＲＣ計算部２２及び１つの結果保存レジスタ２３が搭載されているものとして説明するが、複数の機能モジュール２１、複数のＣＲＣ計算部２２ａ〜２２ｎ及び複数の結果保存レジスタ２３ａ〜２３ｎが搭載されている場合についても同様に適用することができる。
【００４４】
すなわち、複合装置１は、コントローラボード１０の画像処理ＡＳＩＣ１１が、画像データに対して適宜の画像処理を行う場合、ＣＰＵ１２がＣＰＵ  Ｉ／Ｆ２６、バス２７及びレジスタコントローラ２４を通して機能モジュール２１の内部レジスタに対して、予め設定されている制御手順（アドレス順）に従ってアクセスしてレジスタ値を設定し、機能モジュール２1が該レジスタ値に応じて画像処理を行う。
【００４５】
この場合、機能モジュールの内部レジスタへのアクセスが予め設定されているアドレス順に行われないときには、画像データの処理に異常が発生する恐れがある。
【００４６】
そこで、画像処理ＡＳＩＣ１１は、機能モジュール２１の内部レジスタへのインターフェイスであるレジスタコントローラ２４と外部のＣＰＵ１２とのインターフェイスであるＣＰＵ  Ｉ／Ｆ２６との間のバス２７に、ＣＲＣ計算部２２が接続されおり、ＣＲＣ計算部２２は、機能モジュール２１に対するレジスタアクセス時のアドレス値と、結果保存レジスタ２３に保存されている値（ＣＲＣコード）を使ってＣＲＣコードを生成して、結果保存レジスタ２３に保存する。
【００４７】
そして、ＣＲＣ計算部２２は、アドレスモニタ３１とＣＲＣ演算回路３２を搭載しており、アドレスモニタ３１は、バス２７のバスプロトコルを監視して、バス２７を通してＣＰＵ１２からレジスタコントローラ２４を介して機能モジュール２１の内部レジスタへのレジスタアクセスを監視する。ＣＲＣ演算回路３２は、アドレスモニタ３１からアドレスを受け取り、また、結果保存レジスタ２３に格納されているＣＲＣコードを参照して、次のＣＲＣコードを生成し、生成したＣＲＣコードを結果保存レジスタ２３に保存する。また、アドレスモニタ３１は、機能モジュール２１に対する特定のアドレスを検出すると、リセット信号をＣＲＣ演算回路３２へ出力し、リセット信号を受け取ったＣＲＣ演算回路３２は、内蔵する計算領域と結果保存レジスタ２３を初期化する。
【００４８】
すなわち、図５に示すように、ＣＲＣ演算回路３２は、リセット信号がアドレスモニタ３１から入力されたかチェックし（ステップＳ１０１）、ＮＯのとき、すなわち、リセット信号が入力されないときには、アドレス値をＣＲＣ演算回路３２内のバッファに格納して（ステップＳ１０２）、結果保存レジスタ２３から現在のＣＲＣコードを読み出す（ステップＳ１０３）。
【００４９】
ＣＲＣ演算回路３２は、内部バッファのアドレス値と、結果保存レジスタ２３から読み出したＣＲＣコードを参照して、新しいＣＲＣコードを生成し（ステップＳ１０４）、生成したＣＲＣコードを結果保存レジスタ２３に反映させる（ステップＳ１０５）。
【００５０】
ステップＳ１０１において、ＹＥＳのとき、すなわち、リセット信号をアドレスモニタ３１から受け取ったときには、ＣＲＣ演算回路３２は、内部バッファの初期化（クリア）を行い（ステップＳ１０６）、また、結果保存レジスタ２３の初期化（クリア）を行って（ステップＳ１０７）、処理を終了する。
【００５１】
ＣＲＣ演算回路３２は、アドレスモニタ３１により振り分けられたアドレスを受け取る毎に、ＣＲＣコードを更新し、また、リセット信号を受け取る毎に内部バッファ及び結果保存レジスタ２３を初期化する（ステップＳ１０１〜Ｓ１０７）。
【００５２】
そして、ＣＲＣ計算回路３２は、図示しないが、上記ＣＲＣコードを生成するＣＲＣコード生成器を内蔵しており、このＣＲＣコード生成器が、１６ｂｉｔＣＲＣコードを生成する場合、図６に示すように、ＣＲＣコードの生成を行う。
【００５３】
すなわち、ＣＲＣ計算回路３２は、計算用１６ｂｉｔバッファＡ、Ｂをそれぞれ、初期化（「０」にクリア）し（ステップＳ２０１、Ｓ２０２）、バッファＡに、１バイト読み込む（ステップＳ２０３）。
【００５４】
次に、ＣＲＣ計算回路３２は、８回実行するループ処理に入り（ステップＳ２０４）、バッファＢを１ビット左シフトして（ステップＳ２０５）、バッファＢが桁あふれしたかチェックする（ステップＳ２０６）。
【００５５】
ステップＳ２０６で、ＹＥＳのとき、すなわち、バッファＢが桁あふれしたときには、ＣＲＣ計算回路３２は、バッファＢとＣＲＣ１６の生成多項式をＸＯＲし（ステップＳ２０７）、バッファＡを１ビット左シフトして（ステップＳ２０８）、バッファＡが桁あふれしたかチェックする（ステップＳ２０９）。
【００５６】
ステップＳ２０６で、ＮＯのとき、すなわち、バッファＢが桁あふれしないときには、ＣＲＣ計算回路３２は、バッファＢとＣＲＣ１６の生成多項式をＸＯＲすることなく、バッファＡを１ビット左シフトして（ステップＳ２０８）、バッファＡが桁あふれしたかチェックする（ステップＳ２０９）。
【００５７】
ステップＳ２０９で、ＹＥＳのとき、すなわち、バッファＡが桁あふれしたときには、ＣＲＣ計算回路３２は、バッファＢと０ｘ０１をＸＯＲして（ステップＳ２１０）、８回実行するループ処理が完了したかチェックし（ステップＳ２１１）、ステップＳ２０９で、ＮＯのとき、すなわち、バッファＡが桁あふれしていないときには、バッファＢと０ｘ０１をＸＯＲすることなく、８回実行するループ処理が完了したかチェックする（ステップＳ２１１）。
【００５８】
ステップＳ２１１で、ループ処理が完了していないときには、ＣＲＣ計算回路３２は、ループ開始位置に戻って、上記同様に処理し（ステップＳ２０４〜Ｓ２１１）、ループ処理が完了すると、ステップＳ２０３に戻って、ＣＲＣコード化したいデータ（アドレス値）の入力が終わるまで繰り返す。例えば、ループが終了したタイミングで、バッファＢを結果保存レジスタ２３に格納し、この場合、バッファＡがレジスタアクセス時のアドレスとなる。
【００５９】
このように、本実施例の複合装置１は、画像処理ＡＳＩＣ１１が、制御手順の決まっている複数の機能モジュール２１に対応して配されたアドレスモニタ（アドレスモニタ手段）３１によって、機能モジュール２１に対するレジスタアクセスが発生するたびに、該レジスタアクセスのアドレスに基づいて、対応する機能モジュール２１に対するレジスタアクセスであるか否かを判断して、対応する機能モジュール２１に対するレジスタアクセスであると、該アドレスを取得し、各機能モジュールに対応して配されたＣＲＣ演算回路（ＣＲＣ演算手段）３２によって、対応する機能モジュール２１に対するレジスタアクセスからアドレスモニタ３１で取得された該アドレス値と、各機能モジュール２１に対応させてＣＲＣコードを保存する結果保存レジスタ（ＣＲＣコード保存手段）２３のうち、対応する機能モジュール２１に対応する結果保存レジスタ２３に保存されているＣＲＣコードと、からＣＲＣコードを生成して、該結果保存レジスタ２３に保存している。
【００６０】
したがって、アドレス順序によって生成されるＣＲＣコードが変化するため、機能モジュール２１に対して、予め設定されている制御手順に従ってレジスタアクセスが発生したか、不正な手順でレジスタアクセスが発生したかを、結果保存レジスタ２３のＣＲＣコードによって知ることができ、安価かつ小型で、小容量の結果保存レジスタ（記憶手段）２３を用いて正確にレジスタへのアクセス順序を確認することができる。すなわち、ＣＲＣコードを用いることで、どの順番でレジスタアクセスしたのか、どのような情報をレジスタに書いたのかまでは特定することはできないが、不具合を再現することなく、結果保存レジスタ２３を確認するだけで、どの機能モジュール２１に対するレジスタアクセス手順を間違えたかを確認することができる。また、制御手順のすべてをシーケンシャルにメモリ上に保存すると、レジスタの数に応じてメモリの記憶領域が増大するが、本実施例の場合、ＣＲＣコードを用いているため、機能モジュール２１毎に１つの結果保存レジスタ２３のみでアドレスの適否を判定することができ、結果保存レジスタ２３の記憶容量を削減することができる。
【００６１】
また、本実施例の複合装置１は、画像ＡＳＩＣ１１が、制御手順の決まっている複数の機能モジュール２１に対するレジスタアクセスが発生するたびに、アドレスモニタ３１によって、該レジスタアクセスのアドレスに基づいて、複数の機能モジュール２１のうちどの機能モジュール２１に対するレジスタアクセスであるかを判断して、該アドレスを、該機能モジュール２１に対応付けて振り分け、各機能モジュール２１に対応して配されたＣＲＣ演算回路３２（３２ａ〜３２ｎ）によって、アドレスモニタ３１によって振り分けられたアドレス値と、各機能モジュール２１に対応させてＣＲＣコードを保存する結果保存レジスタ２３（２３ａ〜２３ｎ）のうち該振り分け先の機能モジュール２１に対応する結果保存レジスタ２３が保存するＣＲＣコードと、からＣＲＣコードを生成して、結果保存レジスタ２３に保存している。
【００６２】
したがって、画像ＡＳＩＣ１１が多数の機能モジュール２１を搭載している場合にも、より一層安価かつ小型で、小容量の結果保存レジスタ（記憶手段）２３を用いて正確にレジスタへのアクセス順序を確認することができる。
【００６３】
さらに、本実施例の複合装置１は、画像ＡＳＩＣ１１が、結果保存レジスタ２３を外部から参照可能にするインターフェイスとして、デバッグコントローラ２５及びレジスタコントローラ２４を備えている。
【００６４】
したがって、画像処理ＡＳＩＣ１１に、例えば、機能モジュール２１毎のＣＲＣコードを用いた期待値を記憶しているデバッグ用端末１００を接続することで、結果保存レジスタ２３から読み取ったＣＲＣコードと、該期待値のＣＲＣコードを自動比較して、期待値と不一致の場合に、どの機能モジュール２１へのアクセス順序が異常であったを簡単かつ正確に判別して、デバッグ用端末１００のモニタ１０２に、エラーメッセージを表示させる等の処理を行わせることができる。
【００６５】
また、本実施例の複合装置１は、画像処理ＡＳＩＣ１１の搭載するアドレスモニタ３１が、機能モジュール２１毎に、該機能モジュール２１に対する特定のアドレスを検出すると、該機能モジュール２１に対応するＣＲＣ演算回路３２（３２ａ〜３２ｎ）に対してリセット信号を出力し、ＣＲＣ演算回路３２（３２ａ〜３２ｎ）が、リセット信号を受け取ると、ＣＲＣ演算をリセットするとともに、対応する結果保存レジスタ２３（２３ａ〜２３ｎ）をリセットしている。
【００６６】
したがって、機能モジュール２１毎に、対応するＣＲＣ演算回路３２及び結果保存レジスタ２３のＣＲＣコードを初期化することができる。
【００６７】
さらに、本実施例の複合装置１は、画像処理ＡＳＩＣ１１の搭載するアドレスモニタ３１が、レジスタアクセスのアドレスに基づいて、該レジスタアクセスがどの機能モジュール２１に対するレジスタアクセスであるかを判断して該アドレスを振り分けるための振り分け基準情報を内部メモリに記憶している。
【００６８】
したがって、機能モジュール２１毎に速やかにアドレスを振り分けることができる。
【００６９】
この場合、基準情報を記憶する内部メモリを、ソフトウェアによって書き換え可能なメモリとし、監視するアドレスの範囲を変更可能としてもよい。
【００７０】
このようにすると、任意に監視するアドレス範囲を変更することができ、汎用性を向上させることができる。
【００７１】
なお、本実施例の複合装置１は、画像処理ＡＳＩＣ１１のアドレスモニタ３１が、任意のアドレスをレジスタアクセスの監視対象のアドレスから外す機能を備えていてもよい。
【００７２】
このようにすると、制御手順に関係のないアドレスをＣＲＣコードから除外することができ、処理を簡素化かつ高速化することができる。
【００７３】
以上、本発明者によってなされた発明を好適な実施例に基づき具体的に説明したが、本発明は上記実施例で説明したものに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【００７４】
本発明は、制御手順の決まっている機能モジュールを搭載する画像処理ＡＳＩＣ等の半導体集積回路、デバッグシステム、デバッグ方法、デバッグプログラム及び記録媒体に利用することができる。
【符号の説明】
【００７５】
１  複合装置
１０  コントローラボード
１１  画像処理ＡＳＩＣ
１２  ＣＰＵ
１３  ＲＡＭ
２１、２１ａ〜２１ｎ  機能モジュール
２２、２２ａ〜２２ｎ  ＣＲＣ計算部
２３、２３ａ〜２３ｎ  結果保存レジスタ
２４  レジスタコントローラ
２５  デバッグコントローラ
２６  ＣＰＵ  Ｉ／Ｆ
３１  アドレスモニタ
３２、３２ａ〜３２ｎ  ＣＲＣ演算回路
１００  デバッグ用端末
１０１  キーボード
１０２  モニタ
【先行技術文献】
【特許文献】
【００７６】
【特許文献１】特開２００６−１３３９６９号公報
【図１】
2012048277.tif 000003
【図２】
2012048277.tif 000004
【図３】
2012048277.tif 000005
【図４】
2012048277.tif 000006
【図５】
2012048277.tif 000007
【図６】
2012048277.tif 000008