(57)【要約】【課題】本発明は、デバッグ解析に必要な複数のモジュールのステータス信号を高精度に取得する半導体集積回路及び検査方法に関する。【解決手段】ＡＳＩＣ１は、シリアルに接続されている機能モジュールＭａ〜Ｍｈの間に配設されている各エラー検出回路Ｋａ〜Ｋｈが、機能モジュールＭａ〜Ｍｈのエラー発生の有無の検出を行って、エラー発生を検出すると、該機能モジュールＭａ〜Ｍｈ間で交換されている信号を取得して内部レジスタに保持するとともに、デイジーチェーン接続されている次段のエラー検出回路Ｋａ〜Ｋｈにエラーパルスを出力し、各エラー検出回路Ｋａ〜Ｋｈが、エラーパルスを受信すると、該エラー検出回路Ｋａ〜Ｋｈを挟んだ機能モジュールＭａ〜Ｍｈ間で交換されている信号を取得して内部レジスタに保持するとともに、次段のエラー検出回路Ｋａ〜Ｋｈにエラーパルスを出力する。【選択図】          図１
2009070124.tif 000002
【特許請求の範囲】
【請求項１】
シリアルに接続されている複数の機能モジュールがデータに対して順次処理を行う半導体集積回路において、前記各機能モジュールの間にそれぞれエラー検出手段が配設され、該複数のエラー検出手段は、その出力信号線がデイジーチェーン接続され、該エラー検出手段を挟んで前段の該機能モジュールと次段の該機能モジュールとの間で交換される信号及びデータの流れを監視して該機能モジュールのエラー発生の有無を検出し、エラー発生を検出すると、該エラー発生を検出した該エラー検出手段が、該エラー検出手段を挟んだ該機能モジュール間で交換されている信号を取得して内部記憶手段に保持するとともに、該デイジーチェーン接続されている次段のエラー検出手段にエラー検出信号を出力し、該エラー検出信号を受信したエラー検出手段が、該エラー検出信号を受信したタイミングで、該エラー検出手段を挟んだ該機能モジュール間で交換されている信号を取得してその内部記憶手段に保持するとともに、次段のエラー検出手段に該エラー検出信号を出力するエラー状態取得通知処理を順次行うことを特徴とする半導体集積回路。
【請求項２】
前記エラー検出手段は、前記エラー発生を検出して前記エラー検出信号を次段のエラー検出手段に出力すると、その後に、エラー検出信号を前段のエラー検出手段から受け取っても、該エラー検出信号の受信に伴うエラー検出信号の出力を拒否することを特徴とする請求項１記載の半導体集積回路。
【請求項３】
前記各機能モジュールは、該各機能モジュール間に挟まれている前記エラー検出手段を介してハンドシェイクによって前記信号の交換と前記データの転送を行い、該エラー検出手段は、前記エラー検出時に、該ハンドシェイクによる信号のうち該エラーの解析に必要な所定の信号を取得して前記内部記憶手段に保持することを特徴とする請求項１または請求項２記載の半導体集積回路。
【請求項４】
前記エラー検出手段は、前記ハンドシェイクによる信号のうち、前段の前記機能モジュールと後段の前記機能モジュールのうちいずれの機能モジュールにエラーが発生したかの判定に必要な信号をも取得して前記内部記憶手段に保持することを特徴とする請求項３記載の半導体集積回路。
【請求項５】
前記エラー検出手段は、前記エラー発生機能モジュールの判定に必要な信号として、前記前段の機能モジュールからのデータの出力に関する信号と、前記後段の機能モジュールからの該データの受信に関する信号であることを特徴とする請求項４記載の半導体集積回路。
【請求項６】
前記各機能モジュールは、前記データの転送動作状態であることを示すビジー信号と該データの転送時間を計測したデータ転送時間信号を前記エラー検出手段に出力し、該エラー検出手段は、前記エラー発生時に取得する信号として、少なくとも該ビジー信号及び該データ転送時間信号を取得して前記内部記憶手段に保持することを特徴とする請求項１から請求項５のいずれかに記載の半導体集積回路。
【請求項７】
前記エラー検出手段は、前記ビジー信号が入力されている状態で、前記機能モジュール間での前記データ転送が停止している状態をエラー検査状態時間として計測し、該エラー検査状態時間が所定のエラー規定時間になると、エラー発生として検出することを特徴とする請求項６記載の半導体集積回路。
【請求項８】
シリアルに接続されている複数の機能モジュールがデータに対して順次処理を行う半導体集積回路の検査方法であって、前段の前記機能モジュールと次段の前記機能モジュールとの間で交換される信号及びデータの流れを監視して該機能モジュールのエラー発生の有無を検出するエラー検出処理ステップと、該エラー検出処理ステップでエラーを検出すると、該エラー検出された機能モジュール間で交換されている信号を取得して所定の記憶手段に保持するとともに、次段のエラー検出処理ステップにエラー検出信号をデイジーチェーン出力するエラー状態取得通知処理ステップと、を有し、該エラー検出信号を受信したエラー検出処理ステップが、該エラー検出信号を受信したタイミングで、該エラー検出処理ステップの実行対象の機能モジュール間で交換されている信号を取得して該記憶手段に保持するとともに、次段のエラー検出処理ステップに該エラー検出信号を出力するエラー状態取得通知処理を順次行うことを特徴とする検査方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路及び検査方法に関し、詳細には、デバッグ解析に必要な複数のモジュールのステータス信号を高精度に取得する半導体集積回路及び検査方法に関する。
【背景技術】
【０００２】
近年、デジタル複合機（ＭＦＰ：Multi Functional Products）等の画像処理装置においては、高機能化に伴って、搭載するソフトウェア及びハードウェア構成が大規模かつ複雑化し、画像処理装置の搭載する画像処理用の半導体集積回路であるＡＳＩＣ（Application Specific Integrated Circuit）自体が高機能で様々な機能のモジュールを搭載したものとなってきている。
【０００３】
このように多数の機能モジュールを搭載するＡＳＩＣにおいて問題が発生した場合、その原因究明が困難となってきているが、市場の要求にタイムリーに対応するためには、早急な原因究明が求められる。
【０００４】
そして、従来、複数の機能モジュールを搭載するＡＳＩＣにおいては、一般に、エラー発生時に、デバッグを行うために、個々の機能モジュールのレジスタをリード、ライトすることで、どの機能モジュールにおいてエラーが発生しているかを検出して、デバッグを行う等のデバッグ方法を用いている（特許文献１参照）。
【０００５】
【特許文献１】特開２００３−１８６６９８号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記従来技術にあっては、搭載する機能モジュール数の少ない小規模な半導体集積回路においては、異常のある機能モジュールを特定することはできるが、近年のようにその搭載する機能モジュールの数が多く大規模の半導体集積回路においては、この機能モジュールのレジスタをリード、ライトして異常の機能モジュールを特定するには、長時間を要するだけでなく、正確に異常の機能モジュールを特定し、異常状態を把握することが困難となってきている。その結果、複数の機能モジュールを搭載するＡＳＩＣで画像処理する画像処理装置においては、異常画像を出力した際に、ＡＳＩＣの搭載する機能モジュールのうちどの機能モジュールに異常が発生しているかを正確に検出することが困難になってきているという問題があった。
【０００７】
そこで、本発明は、その搭載する複数の機能モジュールのうちエラーの発生している機能モジュールを簡単かつ正確に検出することのできる半導体集積回路及び検査方法を提供することを目的としている。
【課題を解決するための手段】
【０００８】
請求項１記載の発明の半導体集積回路は、シリアルに接続されている複数の機能モジュールがデータに対して順次処理を行う半導体集積回路において、前記各機能モジュールの間にそれぞれエラー検出手段が配設され、該複数のエラー検出手段は、その出力信号線がデイジーチェーン接続され、該エラー検出手段を挟んで前段の該機能モジュールと次段の該機能モジュールとの間で交換される信号及びデータの流れを監視して該機能モジュールのエラー発生の有無を検出し、エラー発生を検出すると、該エラー発生を検出した該エラー検出手段が、該エラー検出手段を挟んだ該機能モジュール間で交換されている信号を取得して内部記憶手段に保持するとともに、該デイジーチェーン接続されている次段のエラー検出手段にエラー検出信号を出力し、該エラー検出信号を受信したエラー検出手段が、該エラー検出信号を受信したタイミングで、該エラー検出手段を挟んだ該機能モジュール間で交換されている信号を取得してその内部記憶手段に保持するとともに、次段のエラー検出手段に該エラー検出信号を出力するエラー状態取得通知処理を順次行うことにより、上記目的を達成している。
【０００９】
この場合、例えば、請求項２に記載するように、前記エラー検出手段は、前記エラー発生を検出して前記エラー検出信号を次段のエラー検出手段に出力すると、その後に、エラー検出信号を前段のエラー検出手段から受け取っても、該エラー検出信号の受信に伴うエラー検出信号の出力を拒否してもよい。
【００１０】
また、請求項１または請求項２の場合、例えば、請求項３に記載するように、前記各機能モジュールは、該各機能モジュール間に挟まれている前記エラー検出手段を介してハンドシェイクによって前記信号の交換と前記データの転送を行い、該エラー検出手段は、前記エラー検出時に、該ハンドシェイクによる信号のうち該エラーの解析に必要な所定の信号を取得して前記内部記憶手段に保持してもよい。
【００１１】
さらに、請求項３の場合、例えば、請求項４に記載するように、前記エラー検出手段は、前記ハンドシェイクによる信号のうち、前段の前記機能モジュールと後段の前記機能モジュールのうちいずれの機能モジュールにエラーが発生したかの判定に必要な信号をも取得して前記内部記憶手段に保持してもよい。  
【００１２】
また、請求項４の場合、例えば、請求項５に記載するように、前記エラー検出手段は、前記エラー発生機能モジュールの判定に必要な信号として、前記前段の機能モジュールからのデータの出力に関する信号と、前記後段の機能モジュールからの該データの受信に関する信号であってもよい。
【００１３】
さらに、請求項１から請求項５の場合、例えば、請求項６に記載するように、前記各機能モジュールは、前記データの転送動作状態であることを示すビジー信号と該データの転送時間を計測したデータ転送時間信号を前記エラー検出手段に出力し、該エラー検出手段は、前記エラー発生時に取得する信号として、少なくとも該ビジー信号及び該データ転送時間信号を取得して前記内部記憶手段に保持してもよい。
【００１４】
また、請求項６の場合、例えば、請求項７に記載するように、前記エラー検出手段は、前記ビジー信号が入力されている状態で、前記機能モジュール間での前記データ転送が停止している状態をエラー検査状態時間として計測し、該エラー検査状態時間が所定のエラー規定時間になると、エラー発生として検出してもよい。
【００１５】
請求項８記載の発明の検査方法は、シリアルに接続されている複数の機能モジュールがデータに対して順次処理を行う半導体集積回路の検査方法であって、前段の前記機能モジュールと次段の前記機能モジュールとの間で交換される信号及びデータの流れを監視して該機能モジュールのエラー発生の有無を検出するエラー検出処理ステップと、該エラー検出処理ステップでエラーを検出すると、該エラー検出された機能モジュール間で交換されている信号を取得して所定の記憶手段に保持するとともに、次段のエラー検出処理ステップにエラー検出信号をデイジーチェーン出力するエラー状態取得通知処理ステップと、を有し、該エラー検出信号を受信したエラー検出処理ステップが、該エラー検出信号を受信したタイミングで、該エラー検出処理ステップの実行対象の機能モジュール間で交換されている信号を取得して該記憶手段に保持するとともに、次段のエラー検出処理ステップに該エラー検出信号を出力するエラー状態取得通知処理を順次行うことにより、上記目的を達成している。
【発明の効果】
【００１６】
本発明の半導体集積回路によれば、その搭載するシリアルに接続されている複数の機能モジュールの間にそれぞれ配設されている各エラー検出手段が、機能モジュールのエラー発生の有無の検出を行って、エラー発生を検出すると、該エラー検出手段を挟んだ機能モジュール間で交換されている信号を取得して内部記憶手段に保持するとともに、その出力信号がデイジーチェーン接続されている次段のエラー検出手段にエラー検出信号を出力し、各エラー検出手段が、該エラー検出信号を受信すると、該エラー検出手段を挟んだ機能モジュール間で交換されている信号を取得して内部記憶手段に保持するとともに、次段のエラー検出手段にエラー検出信号を出力する処理を順次行うので、その搭載する複数の機能モジュールのうちエラーの発生している機能モジュールを簡単かつ正確に検出することができるとともに、機能モジュールの状態を内部記憶手段に保持されている信号で知ることができ、エラー発生時のデバッグを簡単かつ正確に行うことができる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明の好適な実施例を添付図面に基づいて詳細に説明する。なお、以下に述べる実施例は、本発明の好適な実施例であるから、技術的に好ましい種々の限定が付されているが、本発明の範囲は、以下の説明において特に本発明を限定する旨の記載がない限り、これらの態様に限られるものではない。
【実施例１】
【００１８】
図１〜図９は、本発明の半導体集積回路及び検査方法の一実施例を示す図であり、図１は、本発明の半導体集積回路及び検査方法の一実施例を適用した半導体集積回路としてのＡＳＩＣ１の要部ブロック構成図である。
【００１９】
図１において、ＡＳＩＣ１は、その搭載する複数（図１では、８個）の機能モジュールＭａ〜Ｍｈが入力されるデータをシリアルで処理する状態で接続されており、各機能モジュールＭａ〜Ｍｈの下流側には、それぞれその上流側の機能モジュールＭａ〜Ｍｈのエラー発生を検出するエラー検出回路（エラー検出手段）Ｋａ〜Ｋｈが配設されている。  
【００２０】
ＡＳＩＣ１は、そのシリアル接続されている機能モジュールＭａ〜Ｍｈのうち先頭の機能モジュールＭａに、外部からデータ（画像データ）が入力され、各機能モジュールＭａ〜Ｍｈは、順次、先頭の機能モジュールＭａからそれぞれの機能モジュールＭａ〜Ｍｈに割り当てられた機能処理を実行して、エラー検出回路Ｋａ〜Ｋｈを通過させて次段の機能モジュールＭｂ〜Ｍｈに処理済みのデータを送り出す。最終段の機能モジュールＭｈは、処理したデータをＡＳＩＣ１の外部に出力する。
【００２１】
そして、機能モジュールＭａ〜Ｍｈは、各インターフェイス間でハンドシェイクを行うことで、データ及び各種信号のやり取りを行い、この機能モジュールＭａ〜Ｍｈ間のハンドシェイクの間にエラー検出回路Ｋａ〜Ｋｈが入り込んで、必要な信号の取得を行う。例えば、機能モジュールＭａと機能モジュールＭｂ及びエラー検出回路Ｋａの場合、図２に示すように、ハンドシェイクを行う。図２において、機能モジュールＭａと機能モジュールＭｂの場合、機能モジュールＭａがマスターとなり、機能モジュールＭｂがスレーブとなってデータ及び信号の交換を行う。そして、この機能モジュールＭａと機能モジュールＭｂとのハンドシェイクの間に、エラー検出回路Ｋａが介在し、それぞれの機能モジュールＭａからの信号とデータを受け取って機能モジュールＭｂにわたし、機能モジュールＭｂからの信号とデータを受け取って機能モジュールＭａに渡すとともに、必要なデータと信号をラッチして内部レジスタに保存する。なお、このエラー検出回路Ｋａを挟んだ機能モジュールＭａ、Ｍｂ間でのハンドシェイクによるデータは、図２では、MData[*:0]と記載されており、信号としては、データのライトコマンド信号であるMCmd[0]、データ受取信号であるSCmdAccept等がある。さらに、エラー検出回路Ｋａは、機能モジュールＭａと機能モジュールＭｂからエラー検出に必要な各種パラメータ（信号）を取得して、内部レジスタ（内部記憶手段）に保存する。このエラー検出回路Ｋａが機能モジュールＭａ、Ｍｂから取得するパラメータとしては、例えば、後述するカウント値、busy信号等である。
【００２２】
そして、図１に戻って、各エラー検出回路Ｋａ〜Ｋｈは、前段の機能モジュールＭａ〜Ｍｈのエラーを検出すると、前段の機能モジュールＭａ〜Ｍｈの内部状態を示す信号をラッチして内部レジスタに保存し、エラーを検出したエラー検出回路Ｋａ〜Ｋｈは、エラー検出フラグerr_a〜err_h（図６参照）をアサートするとともに、後段のエラー検出回路Ｋａ〜Ｋｈにエラーパルスst_trig_a〜st_trig_h（図６参照）を発生して、エラーが発生したことを通知する。エラーパルス（エラー検出信号）st_trig_a〜st_trig_hを受け取ったエラー検出回路Ｋａ〜Ｋｈは、順次、次段のエラー検出回路Ｋａ〜Ｋｈにエラーパルスst_trig_a〜st_trig_hを出力して、最終段のエラー検出回路Ｋｈは、先頭のエラー検出回路Ｋａにエラーパルスst_trig_hを出力するが、エラーを検出してエラー検出フラグerr_a〜err_hをアサートしたエラー検出回路Ｋａ〜Ｋｈは、前段のエラー検出回路Ｋａ〜Ｋｈからエラーパルスst_trig_a〜st_trig_hが入力されても、次段のエラー検出回路Ｋａ〜Ｋｈにエラーパルスst_trig_a〜st_trig_hを発生しない。すなわち、ＡＳＩＣ１に搭載されている全てのエラー検出回路Ｋａ〜Ｋｈは、図１に実線で示す矢印のように、そのエラーパルスst_trig_a〜st_trig_hの出力信号線（エラー検出パス）がデイジーチェーン接続されており、どのエラー検出回路Ｋａ〜Ｋｈでエラーを検出しても、全てのエラー検出回路Ｋａ〜Ｋｈがエラー発生を認識して、エラーパルスst_trig_a〜st_trig_hを次のエラー検出回路Ｋａ〜Ｋｈに出力し、各エラー検出回路Ｋａ〜Ｋｈが、該エラーパルスst_trig_a〜st_trig_hが入力されると、該エラーパルスst_trig_a〜st_trig_hの入力タイミングにおいて、前段の機能モジュールＭａ〜Ｍｈの内部状態を示す信号をラッチして内部レジスタに保存する。
【００２３】
さらに、各エラー検出回路Ｋａ〜Ｋｈには、エラー検出の状態からエラー検出回路Ｋａ〜Ｋｈを復帰させるために、デバッグソフトウェアを実行するＣＰＵ１０（図９参照）からソフトリセット信号（reset）が入力される。
【００２４】
次に、本実施例の作用を説明する。本実施例のＡＳＩＣ１は、エラー検出回路Ｋａ〜Ｋｈが、シリアル接続されている機能モジュールＭａ〜Ｍｈと機能モジュールＭａ〜Ｍｈとの間の信号及びデータのハンドシェイクに介在してエラーを検出すると、該エラー検出したエラー検出回路Ｋａ〜Ｋｈが自己の監視する機能モジュールＭａ〜Ｍｈの必要な信号とパラメータをラッチして内部レジスタに保持するとともに、デイジーチェーン接続された次段のエラー検出回路Ｋａ〜Ｋｈに順次エラーパルスst_trig_a〜st_trig_hを送り、各エラー検出回路Ｋａ〜Ｋｈが、エラーパルスst_trig_a〜st_trig_hを受信すると、該エラーパルスst_trig_a〜st_trig_h受信時の自己の管理する機能モジュールＭａ〜Ｍｈの信号とパラメータをラッチして内部レジスタに保持するとともに、次段のエラー検出回路Ｋａ〜Ｋｈにエラーパルスst_trig_a〜st_trig_hを出力する処理を順次行う。
【００２５】
すなわち、シリアル接続されている機能モジュールＭａ〜Ｍｈは、図２に示したように、それぞれ前段の機能モジュールＭａ〜Ｍｈがマスターとなり、後段の機能モジュールＭａ〜Ｍｈがスレーブとなって、ハンドシェイクを行って、ライトコマンド信号MCmd[0]とデータ受取信号SCmdAcceptを交換して、データMData[*:0]の授受を行うが、このハンドシェイクにおいては、図３に示すように、ライトコマンド信号MCmd[0]が、無効コマンドであるIDLEとライトコマンドであるWRITEに変化し、データ受取信号SCmdAcceptが、無効データを示すINVALIDと有効データを示すVALIDに変化する。
【００２６】
そして、マスター側の機能モジュールＭａ〜Ｍｈが有効データをスレーブ側の機能モジュールＭａ〜Ｍｈに出力するときWRITEコマンドを発行し、スレーブ側の機能モジュールＭａ〜Ｍｈが、データ受取信号SCmdAcceptをアサートすると、マスター側の機能モジュールＭａ〜Ｍｈは、次のデータを続けて出力するか、IDLE状態（IDLEステート）に移行する。
【００２７】
一方、スレーブ側の機能モジュールＭａ〜Ｍｈは、有効データを受け取る準備ができると、マスター側の機能モジュールＭａ〜Ｍｈに対して、データ受取信号SCmdAcceptをアサートし、MCmd[0]＝＝１＆＆SCmdAccept＝＝１のときに、システムクロックsys_clkの立ち上がりである図３の○印のタイミングでデータMData[*:0]を有効データVALIDとして取り込む。スレーブ側の機能モジュールＭａ〜Ｍｈは、データを取り込むと、次のデータを続けて受け取ることができるときには、データ受取信号SCmdAcceptのアサート状態を続け、データを取り込めないときには、データ受取信号SCmdAcceptをディアサート状態とする。
【００２８】
そして、各機能モジュールＭａ〜Ｍｈは、図４に示すような動作フラグであるbusy信号を有し、図４に○印で示すタイミングでbusy信号をアサートする。すなわち、上述のように、マスター側の機能モジュールＭａ〜Ｍｈがライトコマンド信号MCmd[0]をWRITEコマンドとして、スレーブ側の機能モジュールＭａ〜Ｍｈがデータ受取信号SCmdAcceptをアサートすると、スレーブ側は、有効データVALIDの受信を開始するが、このとき、busy信号をアサートする。また、各機能モジュールＭａ〜Ｍｈは、この有効データVALIDの数をカウントするカウンタのカウント値であるカウント信号count[*.0]を有し、上記busy信号及びカウンタのカウント値であるカウント信号count[*.0]を、ＣＰＵ１０からアクセス可能な内部レジスタに保持する。
【００２９】
そして、このbusy信号は、ＡＳＩＣ１内の全ての機能モジュールＭａ〜Ｍｈが備えており、その動作に伴って、図５に示すように、アサートとディスアサートを行う。図５において、busy_a〜busy_hは、それぞれ機能モジュールＭａ〜Ｍｈのbusy信号を示しており、タイミングＴ１では、機能モジュールＭａのみがデータMData[*:0]の受信動作をしており、他の機能モジュールＭｂ〜ＭｈはデータMData[*:0]の受信動作をしていないことを示している。また、図５において、タイミングＴ２では、全ての機能モジュールＭａ〜ＭｈがデータMData[*:0]の受信動作を行っており、タイミングＴ３では、全ての機能モジュールＭａ〜ＭｈがデータMData[*:0]の受信動作を行っていないことを示している。
【００３０】
したがって、各機能モジュールＭａ〜Ｍｈのbusy信号の内部レジスタの状態をＣＰＵ１０が読み取ることで、デバッグソフトウェアは、どの機能モジュールＭａ〜Ｍｈが動作中であるか非動作中であるかを速やかに確認することができる。
【００３１】
さらに、上記カウント信号count[*.0]のカウント値（データ転送時間信号）を保存する内部レジスタのカウント信号count[*.0]をＣＰＵが読み取ることで、デバッグソフトウェアは、各機能モジュールＭａ〜Ｍｈの内部データMData[*:0]の状態、すなわち、受信されているデータMData[*:0]数を速やかに確認することができる。
【００３２】
そして、上述のように、シリアル接続されている機能モジュールＭａ〜Ｍｈの各間には、それぞれ対応するエラー検出回路Ｋａ〜Ｋｈが、上流側と下流側の各機能モジュールＭａ〜Ｍｈのインターフェイスに接続される状態で設けられており、エラー検出回路Ｋａ〜Ｋｈは、自己の上流側の機能モジュールＭａ〜Ｍｈのエラー発生を監視して、エラーを検出すると、自己の上流側の機能モジュールＭａ〜Ｍｈの内部状態をラッチして内部レジスタに保存する。また、上述のように、各エラー検出回路Ｋａ〜Ｋｈは、エラーパルスst_trig_a〜st_trig_hを次のエラー検出回路Ｋａ〜Ｋｈに出力する出力信号線であるエラー検出パスがデイジーチェーン接続されており、どのエラー検出回路Ｋａ〜Ｋｈでエラーを検出しても、全てのエラー検出回路Ｋａ〜Ｋｈがエラー発生を認識して、上流側の機能モジュールＭａ〜Ｍｈの内部状態をラッチして内部レジスタに保存するとともに、エラーパルスst_trig_a〜st_trig_hを次のエラー検出回路Ｋａ〜Ｋｈに出力し、各エラー検出回路Ｋａ〜Ｋｈが、該エラーパルスst_trig_a〜st_trig_hが入力されると、該エラーパルスst_trig_a〜st_trig_hの入力タイミングにおいて、前段の機能モジュールＭａ〜Ｍｈの内部状態を示す信号をラッチして内部レジスタに保存する。
【００３３】
したがって、エラーが発生すると、ＣＰＵがエラー検出回路Ｋａ〜Ｋｈの内部レジスタを読み取ることで、デバッグソフトウェアは、エラー発生時の各機能モジュールＭａ〜Ｍｈの状態を詳細に知ることができる。
【００３４】
このエラーパルスst_trig_a〜st_trig_hは、上述のように、エラー検出回路Ｋａ〜Ｋｈが次段のエラー検出回路Ｋａ〜Ｋｈにエラー検出を通知するパルスであるが、上述のように、エラー検出を行ったエラー検出回路Ｋａ〜Ｋｈ、例えば、図６に示すように、エラー検出回路Ｋａがエラー検出を行った場合、エラー検出を示すエラー検出フラグerr_aをアサートし、図６に○印で示すように、次のエラー検出回路Ｋｂにエラーパルスst_trig_aをシステムクロックsys_clkの立ち上がりタイミングで出力する。
【００３５】
そして、以降の各エラー検出回路Ｋｂ〜Ｋｈは、図６に示すように、前段のエラー検出回路Ｋａ〜Ｋｇからエラーパルスst_trig_a〜st_trig_gが入力されると、エラー検出フラグerr_a〜err_hがアサートされているかチェックして、アサートされていないと、エラー検出回路Ｋｂ〜Ｋｈの場合のように、エラーパルスst_trig_ｂ〜st_trig_hをデイジーチェーンされている次のエラー検出回路Ｋａ〜Ｋｈに出力するが、エラー検出フラグerr_a〜err_hがアサートされていると、例えば、エラー検出回路Ｋａのように、エラー検出フラグerr_aがアサートされていると、エラー検出回路Ｋｈからエラーパルスst_trig_hが入力されても、次のエラー検出回路Ｋｂへのエラー検出フラグerr_bの出力を行わない。
【００３６】
したがって、エラー検出回路Ｋａ〜Ｋｈは、エラーパルスst_trig_a〜st_trig_hによってエラー発生タイミングを各エラー検出回路Ｋａ〜Ｋｈに通知するとともに、いつまでエラーパルスst_trig_a〜st_trig_hが出し続けられてエラー発生タイミングを特定することができなくなることを防止して、各エラー検出回路Ｋａ〜Ｋｈが、該エラー発生タイミングでの前段の機能モジュールＭａ〜Ｍｈの状態を内部レジスタに取り込んで保存することができる。
【００３７】
また、ＣＰＵ１０は、エラー検出回路Ｋａ〜Ｋｈのエラー検出フラグerr_a〜err_hを読み取ることで、デバッグソフトウェアは、どの機能モジュールＭａ〜Ｍｈでエラーが発生したかを容易にかつ正確に知ることができる。
【００３８】
そして、エラー検出回路Ｋａ〜Ｋｈは、機能モジュールＭａ〜Ｍｈ間のハンドシェイクにおいて、前段の機能モジュールＭａ〜Ｍｈのbusy信号がアサートされているときに、ハンドシェイクが止まって、復帰しない場合にエラー発生と判断し、このエラー発生と判断する期間は、エラー検出回路Ｋａ〜Ｋｈのレジスタの設定により適宜変更することができる。
【００３９】
具体的には、エラー検出回路Ｋａ〜Ｋｈは、次の２つのパターンで機能モジュールＭａ〜Ｍｈのエラー発生を判断する。
【００４０】
エラー発生パターン（ａ）：WRITEコマンドがアサートされているが、データ受取信号SCmdAcceptがアサートされないWRITE＝＝１＆＆SCmdAccept＝＝０のパターン。
【００４１】
エラー発生パターン（ｂ）：データ受取信号SCmdAcceptがアサートされているが、WRITEコマンドがアサートされないWRITE＝＝０＆＆SCmdAccept＝＝１のパターン。
【００４２】
このエラー発生パターン（ａ）は、エラー検出回路Ｋａ〜Ｋｈの前段の機能モジュールＭａ〜Ｍｈにエラーが発生している場合の検出パターンであり、エラー発生パターン（ｂ）は、エラー検出回路Ｋａ〜Ｋｈの後段の機能モジュールＭａ〜Ｍｈにエラーが発生している場合の検出パターンである。
【００４３】
まず、エラー発生パターン（ａ）の場合のエラー検出処理について、図７に基づいて説明する。この場合、図７に示すように、各エラー検出回路Ｋａ〜Ｋｈは、自己の検査する機能モジュールＭａ〜Ｍｈである前段（マスタ側）の機能モジュールＭａ〜Ｍｈのbusy信号がアサートし、ライトコマンド信号MCmd[0]のWRITEコマンドがアサートすると、次段（スレーブ側）の機能モジュールＭａ〜Ｍｈがデータ受取信号SCmdAcceptをアサートして有効データVALIDを受け取るが、この状態が継続されていると、エラーカウンタによるカウントを行うことなく、監視を継続する。ところが、前段の機能モジュールＭａ〜Ｍｈのライトコマンド信号MCmd[0]がIDLEコマンドからWRITEコマンドに変化しても、次段の機能モジュールＭａ〜Ｍｈのデータ受取信号SCmdAcceptがアサートしないと、エラー検出回路Ｋａ〜Ｋｈは、エラーカウンタによるカウントを開始して、そのカウント値（エラー検査状態時間）err_count［*:0］が予めレジスタに設定されている所定値（エラー規定時間）Ｎになると、次段のエラー検出回路Ｋａ〜Ｋｈにエラーパルスst_trig_a〜st_trig_hを出力する。この所定値Ｎは、機能モジュールＭａ〜Ｍｈのエラーを検出するのに適宜の値を設定することができるが、ＡＳＩＣ１の適用される画像処理装置が、例えば、複写装置の場合、スキャナ部で読み取った１ライン分の画像データをメモリやプリンタ部に所定の時間内に転送する必要があり、いわゆるデータの等時性が要求されるが、この等時性を考慮した値が所定値Ｎとして設定される。具体的には、図７において、ｔ１のタイミングでデータMData[*:0]の入力が行われて、等時性から一定量のデータ転送が完了していなければならないｔ２タイミングまでの時間ＴＡと、エラーカウンタによるカウンタを開始したｔ３から所定値Ｎをカウントするまでの時間ＴＢを比較して、ＴＡ≦ＴＢとなると、複写装置として、データ転送に破綻をきたしており、適切な画像処理を行うことができないため、ＴＡ＞ＴＢとなる所定値Ｎを設定する。
【００４４】
次に、エラー発生パターン（ｂ）の場合のエラー検出処理について、図８に基づいて説明する。この場合、図８に示すように、各エラー検出回路Ｋａ〜Ｋｈは、自己の検査する機能モジュールＭａ〜Ｍｈである前段（マスタ側）の機能モジュールＭａ〜Ｍｈのbusy信号がアサートし、ライトコマンド信号MCmd[0]のWRITEコマンドがアサートすると、次段（スレーブ側）の機能モジュールＭａ〜Ｍｈがデータ受取信号SCmdAcceptをアサートして有効データVALIDを受け取るが、この状態が継続されていると、エラーカウンタによるカウントを行うことなく、監視を継続する。ところが、疑団の機能モジュールＭａ〜Ｍｈのデータ受取信号SCmdAcceptがアサートしても、前段の機能モジュールＭａ〜Ｍｈのライトコマンド信号MCmd[0]がIDLEコマンドからIDLEコマンドに変化しないと、エラー検出回路Ｋａ〜Ｋｈは、エラーカウンタによるカウントを開始して、そのカウント値err_count［*:0］が予めレジスタに設定されている所定値Ｎになると、次段のエラー検出回路Ｋａ〜Ｋｈにエラーパルスst_trig_a〜st_trig_hを出力する。
【００４５】
そして、このエラー検出回路Ｋａ〜Ｋｈの検出したエラーの発生している機能モジュールＭａ〜Ｍｈがエラー検出回路Ｋａ〜Ｋｈの前段の機能モジュールＭａ〜Ｍｈであるのか、後段の機能モジュールＭａ〜Ｍｈであるのかは、WRITEコマンドとデータ受取信号SCmdAcceptの情報をエラー検出回路Ｋａ〜Ｋｈが保存しておくことで、判断することができる。すなわち、MCmd[0]＝＝１＆＆ScmdAccept＝＝０の場合は、次段（slave側）の機能モジュールＭａ〜Ｍｈにエラーが発生して動作が止まっていることを示しており、MCmd[0]＝＝０＆＆ScmdAccept＝＝１の場合は、前段（ｍａｓｔｅｒ側）の機能モジュールＭａ〜Ｍｈにエラーが発生して、動作が止まっていることを示している。
【００４６】
そして、ＡＳＩＣ１にエラーが発生した場合、図９に示すように、ＡＳＩＣ１の適用される画像処理装置またはデバッグ装置のＣＰＵ１０からデバッグソフトウェアを起動させて、ＣＰＵ１０から各機能モジュールＭａ〜Ｍｈ及びエラー検出回路Ｋａ〜Ｋｈに、太い矢印で示すように、機能モジュールＭａ〜Ｍｈ及びエラー検出回路Ｋａ〜Ｋｈの内部レジスタからハンドシェイクの情報とエラー解析に必要なパラメータ情報、例えば、busy信号やカウント値err_count［*:0］等を読み取る。
【００４７】
例えば、エラー発生時に、ＣＰＵ１０が、busy信号やカウント値err_count［*:0］等のパラメータ及びエラーパルスst_trig_a〜st_trig_h発生時のライトコマンド信号MCmd[0]及びデータ受取信号SCmdAcceptを読み出すことで、デバッグソフトウェアによって、エラーの発生した機能モジュールＭａ〜Ｍｈを簡単かつ容易に特定することができ、デバッグ効率を向上させることができる。
【００４８】
このように、本実施例のＡＳＩＣ１は、シリアルに接続されている複数の機能モジュールＭａ〜Ｍｈの間にそれぞれ配設されている各エラー検出回路Ｋａ〜Ｋｈが、機能モジュールＭａ〜Ｍｈのエラー発生の有無の検出を行って、エラー発生を検出すると、該エラー検出回路Ｋａ〜Ｋｈを挟んだ機能モジュールＭａ〜Ｍｈ間で交換されている信号を取得して内部レジスタに保持するとともに、その出力信号線がデイジーチェーン接続されている次段のエラー検出回路Ｋａ〜Ｋｈにエラーパルスst_trig_a〜st_trig_hを出力し、各エラー検出回路Ｋａ〜Ｋｈが、エラーパルスst_trig_a〜st_trig_hを受信すると、該エラー検出回路Ｋａ〜Ｋｈを挟んだ機能モジュールＭａ〜Ｍｈ間で交換されている信号を取得して内部レジスタに保持するとともに、次段のエラー検出回路Ｋａ〜Ｋｈにエラーパルスst_trig_a〜st_trig_hを出力する処理を順次行っている。
【００４９】
したがって、ＡＳＩＣ１の搭載している複数の機能モジュールＭａ〜Ｍｈのうちエラーの発生している機能モジュールＭａ〜Ｍｈを簡単かつ正確に検出することができるとともに、機能モジュールＭａ〜Ｍｈの状態を内部レジスタに保持されている信号で知ることができ、エラー発生時のデバッグを簡単かつ正確に行うことができる。
【００５０】
また、本実施例のＡＳＩＣ１は、エラー検出回路Ｋａ〜Ｋｈが、エラー発生を検出してエラーパルスst_trig_a〜st_trig_hを次段のエラー検出回路Ｋａ〜Ｋｈに出力すると、その後に、エラーパルスst_trig_a〜st_trig_hを前段のエラー検出回路Ｋａ〜Ｋｈから受け取っても、該エラーパルスst_trig_a〜st_trig_hの受信に伴うエラーパルスst_trig_a〜st_trig_hの出力を拒否している。
【００５１】
したがって、デイジーチェーン接続されているエラー検出回路Ｋａ〜Ｋｈでいつまでもエラーパルスst_trig_a〜st_trig_hの出力とエラー状態の取得の処理が繰り返されることを防止して、適切かつ正確にエラーの発生した機能モジュールＭａ〜Ｍｈの特定と必要な信号の取得を行うことができ、より一層適切かつ正確にデバッグを行うことができる。
【００５２】
さらに、本実施例のＡＳＩＣ１は、各機能モジュールＭａ〜Ｍｈが、該各機能モジュールＭａ〜Ｍｈ間に挟まれているエラー検出回路Ｋａ〜Ｋｈを介してハンドシェイクによって信号の交換とデータの転送を行い、エラー検出回路Ｋａ〜Ｋｈが、エラー検出時に、該ハンドシェイクによる信号のうち該エラーの解析に必要な所定の信号を取得して内部レジスタに保持している。
【００５３】
したがって、複数の機能モジュールＭａ〜Ｍｈのうちエラーの発生している機能モジュールＭａ〜Ｍｈをより一層簡単かつ正確に検出することができるとともに、エラー発生時のデバッグを簡単かつ正確に行うことができる。
【００５４】
また、本実施例のＡＳＩＣ１は、エラー検出回路Ｋａ〜Ｋｈが、機能モジュールＭａ〜Ｍｈ間のハンドシェイクによる信号のうち、前段の機能モジュールＭａ〜Ｍｈと後段の機能モジュールＭａ〜Ｍｈのうちいずれの機能モジュールＭａ〜Ｍｈにエラーが発生したかの判定に必要な信号をも取得して内部レジスタに保持している。
【００５５】
したがって、エラー検出回路Ｋａ〜Ｋｈを挟んだ前段と後段の機能モジュールＭａ〜Ｍｈのうちいずれの機能モジュールＭａ〜Ｍｈにエラーが発生したかを適切かつ正確に判定することができ、より一層簡単かつ正確にデバッグすることができる。
【００５６】
さらに、本実施例のＡＳＩＣ１は、エラー検出回路Ｋａ〜Ｋｈが、エラーの発生した機能モジュールの判定に必要な信号として、前段の機能モジュールＭａ〜Ｍｈからのデータの出力に関する信号であるライトコマンド信号MCmd[0]と、後段の機能モジュールＭａ〜Ｍｈからのデータの受信に関する信号であるデータ受取信号SCmdAcceptを取得して内部レジスタに保持している。
【００５７】
したがって、エラー検出回路Ｋａ〜Ｋｈを挟んだ前段と後段の機能モジュールＭａ〜Ｍｈのうちいずれの機能モジュールＭａ〜Ｍｈにエラーが発生したかを適切かつ正確に判定することができ、より一層簡単かつ正確にデバッグすることができる。
【００５８】
また、本実施例のＡＳＩＣ１は、各機能モジュールＭａ〜Ｍｈが、データの転送動作状態であることを示すbusy信号とデータの転送時間を計測したカウント信号count[*.0]のカウント値をエラー検出回路Ｋａ〜Ｋｈに出力し、エラー検出回路Ｋａ〜Ｋｈは、エラー発生時に取得する信号として、少なくとも該busy信号及び該カウント信号count[*.0]のカウント値を取得して内部レジスタに保持している。
【００５９】
したがって、エラー発生時の機能モジュールＭａ〜Ｍｈの状態をこれらの信号によって知ることができ、より正確にデバッグすることができる。
【００６０】
さらに、本実施例のＡＳＩＣ１は、エラー検出回路Ｋａ〜Ｋｈが、busy信号が入力されている状態で、機能モジュールＭａ〜Ｍｈ間でのデータ転送が停止している状態をエラーカウンタによってエラー検査状態時間としてカウントを開始して、そのカウント値err_count［*:0］が所定のエラー規定時間である所定値Ｎを超えると、エラー発生として検出している。
【００６１】
したがって、エラー発生を適切かつ正確に検出することができ、デバッグを容易にかつ正確に行うことができる。
【００６２】
なお、上記説明においては、エラー検出回路Ｋａ〜Ｋｈが、エラー発生のタイミングで情報をラッチして、後からエラー時の情報をＣＰＵ１０がリードしているが、エラー関連情報の取得は、上記タイミングに限るものではなく、例えば、各エラー検出回路Ｋａ〜Ｋｈがエラーを検出した後に、ＣＰＵ１０が、各機能モジュールＭａ〜Ｍｈのレジスタにアクセスして、該機能モジュールＭａ〜Ｍｈ毎のレジスタ状況を取得してデバッグしてもよい。
【００６３】
以上、本発明者によってなされた発明を好適な実施例に基づき具体的に説明したが、本発明は上記のものに限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【産業上の利用可能性】
【００６４】
本発明は、ＡＳＩＣ等の複数の機能モジュールを搭載する半導体集積回路及びその検査方法に適用することができる。
【図面の簡単な説明】
【００６５】
【図１】本発明の一実施例を適用したＡＳＩＣのブロック構成図。
【図２】図１のエラー検出回路を挟んだ機能モジュール間のハンドシェイクの説明図。
【図３】図２のハンドシェイクでの各信号のタイミング図。
【図４】図１の機能モジュールのハンドシェイクにおける動作信号のタイミング図。
【図５】図１の各機能モジュールのbusy信号のタイミング図。
【図６】図１のエラー検出回路のエラー検出フラグとエラーパルスのタイミング図。
【図７】図１のエラー検出回路の前段の機能モジュールのエラー検出のタイミング図。
【図８】図１のエラー検出回路の次段の機能モジュールのエラー検出のタイミング図。
【図９】図１のＡＳＩＣのエラーの情報取得時の説明図。
【符号の説明】
【００６６】
１  ＡＳＩＣ
Ｍａ〜Ｍｈ  機能モジュール
Ｋａ〜Ｋｈ  エラー検出回路
MCmd[0]  ライトコマンド信号
SCmdAccept  データ受取信号
MData[*:0]  データ
WRITE  ライトコマンド
IDLE  無効コマンド
INVALID  無効データ
VALID  有効データ
【図１】
2009070124.tif 000003
【図２】
2009070124.tif 000004
【図３】
2009070124.tif 000005
【図４】
2009070124.tif 000006
【図５】
2009070124.tif 000007
【図６】
2009070124.tif 000008
【図７】
2009070124.tif 000009
【図８】
2009070124.tif 000010
【図９】
2009070124.tif 000011