(57)【要約】【課題】スリープ機能実行時でもデバッグを実行することができる半導体集積回路及び電源制御方法を提供すること【解決手段】本発明にかかる半導体集積回路１は、デバッグを行うデバッグモード及びデバッグを行わないノンデバッグモードのいずれか一方のモードにより動作する。半導体集積回路１は、いずれか一方のモードで動作している際に、回路の動作を停止するスリープ状態へ移行する動作回路２０を有する。さらに、スリープ状態へ移行した場合、動作回路２０がノンデバッグモードであれば、動作回路２０へ電源供給を停止し、動作回路２０がデバッグモードであれば、動作回路２０へ電源供給を実行する電源制御部３を有する。【選択図】図１
2011145972.tif 000002
【特許請求の範囲】
【請求項１】
デバッグを行うデバッグモード及びデバッグを行わないノンデバッグモードのいずれか一方のモードにより動作し、前記いずれか一方のモードで動作している際に、動作を停止するスリープ状態へ移行する動作回路と、
前記スリープ状態へ移行する場合、前記動作回路が前記ノンデバッグモードであれば、当該動作回路への電源供給を停止し、前記デバッグモードであれば、当該動作回路への電源供給を実行する電源制御部と、を備える半導体集積回路。
【請求項２】
前記動作回路は、
前記スリープ状態へ移行する場合、前記動作回路が前記ノンデバッグモードであれば、保持しているデータをメモリへ保存し、前記デバッグモードであれば、保持しているデータを当該メモリへ保存しないことを特徴とする請求項１記載の半導体集積回路。
【請求項３】
前記スリープ状態が解除されノンスリープ状態へ移行する場合、
前記動作回路がノンデバッグモードであれば、前記動作回路に前記メモリに保存されているデータが設定され、
前記デバッグモードであれば、前記動作回路に前記メモリに保存されているデータが設定されないことを特徴とする請求項２記載の半導体集積回路。
【請求項４】
前記動作回路は、複数のフリップフロップを接続したスキャンチェーンを含むことを特徴とする請求項１〜３のいずれか１項に記載の半導体集積回路。
【請求項５】
前記動作回路は、
デバッグの対象となるデバッグ対象回路と、
当該デバッグ対象回路のデバッグ動作を制御するデバッグ制御部と、を備える請求項１〜４のいずれか１項に記載の半導体集積回路。
【請求項６】
前記電源制御部は、前記スリープ状態へ移行する場合、前記動作回路が前記デバッグモードであれば、前記デバッグ対象回路への電源供給を停止し、前記デバッグ制御部に対しては電源供給を実行することを特徴とする請求項５記載の半導体集積回路。
【請求項７】
前記スリープ状態へ移行する場合、前記動作回路が前記デバッグモードであれば、前記デバッグ対象回路は、保持しているデータを前記メモリへ保存し、前記デバッグ制御部は、保持しているデータを前記メモリへ保存しないことを特徴とする請求項５又は６記載の半導体集積回路。
【請求項８】
前記スリープ状態が解除されるノンスリープ状態へ移行する場合、前記動作回路がデバッグモードであれば、前記デバッグ対象回路に前記メモリに保存されているデータが設定され、前記デバッグ制御部に前記メモリに保存されているデータが設定されないことを特徴とする請求項７記載の半導体集積回路。
【請求項９】
前記デバッグ対象回路は、前記複数のフリップフロップが保持しているデータを、前記スキャンチェーンを介して前記メモリへ保存することを特徴とする請求項８記載の半導体集積回路。
【請求項１０】
前記デバッグ対象回路は、前記メモリに保存されているデータを、前記スキャンチェーンを介して取得し、前記複数のフリップフロップに設定することを特徴とする請求項８又は９記載の半導体集積回路。
【請求項１１】
前記デバッグ制御部は、前記スキャンチェーンを構成しないことを特徴とする請求項７又は８記載の半導体集積回路。
【請求項１２】
デバッグを行うデバッグモード又はデバッグを行わないノンデバッグモードのいずれか一方のモードを動作回路に設定し、
前記デバッグモード又は前記ノンデバッグモードのいずれか一方のモードで前記動作回路が動作している際に、当該動作回路の動作を停止するスリープ状態へ移行し、
前記スリープ状態へ移行する場合、前記ノンデバッグモードであれば、前記動作回路への電源供給を停止し、前記デバッグモードであれば、前記動作回路への電源供給を実行する、電源制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は導体集積回路及び電源制御方法に関し、特にデバッグを実行する回路を有する半導体集積回路及びその半導体集積回路に用いられる電源制御方法に関する。
【背景技術】
【０００２】
近年、スリープ機能等の低消費電力モードを備えた半導体集積回路が注目されている。通常、スリープ機能等により電源供給が停止されると半導体集積回路の内部状態は、不揮発性メモリを除いて消去される。そのため、スリープ状態の解除により電源供給を再開した時、回路の電源供給を停止する直前の状態から回路の動作を再開させるために、半導体集積回路は、電源供給が停止される前の内部状態を保持しなくてはならない。
【０００３】
特許文献１には、スキャンパステストに使用されるスキャンチェーンを利用した半導体集積回路の内部状態の退避及び回復に関する技術が開示されている。この半導体集積回路は、対象回路と、バックアップ制御回路とを具備する。対象回路は、スキャンパステスト時にシフトレジスタを形成してテストデータをシリアルに入出力する少なくとも１つのスキャンチェーンを備える。バックアップ制御回路は、対象回路の内部状態を示す内部状態データをメモリに格納し、メモリから読み出す。スキャンチェーンは、複数のサブスキャンチェーンに分割され、複数のサブスキャンチェーンは並列に動作する。内部状態データは、複数のサブスキャンチェーンから出力されてメモリに格納される。メモリに格納されている内部状態データは、複数のサブスキャンチェーンに再び設定される。この技術では、スキャンチェーンを複数のサブスキャンチェーンに分割することにより、内部状態の退避、回復時間が短縮され、待機状態にある回路の消費電力が削減される。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００７−１５７０２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
上述した特許文献１に記載されている技術には、次のような問題がある。スリープ機能を実行することにより、対象回路及びバックアップ制御回路への電源供給が停止されると、対象回路及びバックアップ制御回路の動作も停止されてしまう。これにより、スリープ機能実行時には対象回路のデバッグを行えないという問題がある。
【課題を解決するための手段】
【０００６】
本発明の実施の態様１にかかる半導体集積回路は、デバッグを行うデバッグモード及びデバッグを行わないノンデバッグモードのいずれか一方のモードにより動作し、前記いずれか一方のモードで動作している際に、動作を停止するスリープ状態へ移行する動作回路と、前記スリープ状態へ移行する場合、前記動作回路が前記ノンデバッグモードであれば、当該動作回路への電源供給を停止し、前記デバッグモードであれば、当該動作回路への電源供給を実行する電源制御部と、を備えるものである。
【０００７】
このような半導体集積回路を用いることにより、デバッグを実施するデバッグモードが設定されている場合には、動作回路へ電源を供給することで、スリープ状態においてもデバッグを行うことが可能となる。
【０００８】
本発明の実施の態様２にかかる電源制御方法は、デバッグを行うデバッグモード又はデバッグを行わないノンデバッグモードのいずれか一方のモードを動作回路に設定し、前記デバッグモード又は前記ノンデバッグモードのいずれか一方のモードで前記動作回路が動作している際に、当該動作回路の動作を停止するスリープ状態へ移行し、前記スリープ状態へ移行する場合、前記ノンデバッグモードであれば、前記動作回路への電源供給を停止し、前記デバッグモードであれば、前記動作回路への電源供給を実行する、ものである。
【０００９】
このような電源制御方法を用いることにより、デバッグを実施するデバッグモードが設定されている場合には、動作回路へ電源を供給することで、スリープ状態においてもデバッグを行うことが可能となる。
【発明の効果】
【００１０】
本発明により、スリープ機能実行時でもデバッグを実行することができる半導体集積回路及び電源制御方法を提供することができる。
【図面の簡単な説明】
【００１１】
【図１】実施の形態１にかかる半導体集積回路の構成図である。
【図２】実施の形態１にかかるバックアップ制御回路の構成図である。
【図３】実施の形態１にかかるデバッグモード設定時の半導体集積回路のフローチャートである。
【図４】実施の形態１にかかるノンデバッグモード設定時の半導体集積回路のフローチャートである。
【図５】実施の形態１にかかるデバッグモード設定時の信号設定内容を示す図である。
【図６】実施の形態１にかかるノンデバッグモード設定時の信号設定内容を示す図である。
【図７】実施の形態２にかかる半導体集積回路の構成図である。
【図８】実施の形態２にかかるリセット制御を実施する回路の構成図である。
【図９】実施の形態２にかかる電源制御回路の構成図である。
【図１０】実施の形態２にかかる半導体集積回路のデバッグ実行にかかるフローチャートである。
【図１１】実施の形態２にかかる半導体集積回路の電源供給状態を示す図である。
【図１２】実施の形態２にかかるデバッグモード設定時の信号設定内容を示す図である。
【図１３】実施の形態２にかかるノンデバッグモード設定時の信号設定内容を示す図である。
【発明を実施するための形態】
【００１２】
（実施の形態１）
以下、図面を参照して本発明の実施の形態について説明する。図１を用いて本発明の実施の形態１にかかる半導体集積回路の構成例について説明する。半導体集積回路１は、バックアップ制御回路２と、電源制御回路３と、論理和回路４と、選択回路５及び６と、動作回路２０と、バックアップメモリ３０と、ＴＡＰ（Test Access Port）コントローラ４０と、ＩＣＥ（In-Circuit Emulator）５０と、を備えている。動作回路２０は、フリップフロップ１１〜１５と、フリップフロップ２１〜２５と、を有している。また、論理和回路４と、選択回路５及び６と、動作回路２０とは、ＣＰＵ（Central Processing Unit）又はＭＰＵ（Micro Processer Unit）等を構成する（以下、ＣＰＵ１０とする）。
【００１３】
バックアップ制御回路２は、デバッグモードかノンデバッグモードの設定を示すデバッグイネーブル信号ＤＢＧ＿ＥＮを取得する。デバッグイネーブル信号ＤＢＧ＿ＥＮに「１」が設定されている場合アクティブとなり、デバッグモードが設定されていることを示す。また、デバッグイネーブル信号ＤＢＧ＿ＥＮに「０」が設定されている場合インアクティブとなり、ノンデバッグモードが設定されていることを示す。ここで、デバッグモードとは、例えば、ＣＰＵにブレークポイントを設定し、デバッグを行う準備がなされている状況である。また、デバッグとは、例えば、ＣＰＵのプログラムカウンタとブレークポイントが一致した場合に、ＣＰＵの動作を停止させ、その時の内部状態に関する情報等を収集する処理である。ノンデバッグモードとは、デバッグモード以外の状況である。
【００１４】
バックアップ制御回路２は、ＣＰＵ１０からスリープ状態への移行を示すスタンバイ信号ＳＢを取得する。この時、スタンバイ信号ＳＢは、アクティブに設定されている。また、ＣＰＵ１０のスリープ状態を解除する場合、バックアップ制御回路２は、外部の回路等から、スリープ解除信号ＲＱを取得する。スリープ解除信号ＲＱは、ＣＰＵ１０に対する割り込み処理等が発生する際にバックアップ制御回路２へ入力される。ＣＰＵ１０がスリープ状態へ移行する前の状態及び、ＣＰＵ１０がスリープ状態を解除された状態を、ノンスリープ状態ともいう。
【００１５】
ここで、スリープ状態とは、例えば、音楽再生時、ＣＰＵがＤＳＰ等にＭＰ３に関する制御指示を与えた後に、実行すべき処理がなくなることにより、ＣＰＵが停止状態となることをいう。また、携帯電話における待ち受け状態もスリープ状態に該当する。
【００１６】
バックアップ制御回路２は、デバッグイネーブル信号ＤＢＧ＿ＥＮを取得した場合、指示信号ＰＣを用いて電源制御回路３へ、半導体集積回路１がデバッグモードに設定されているかもしくはノンデバッグモードに設定されているかを通知する。また、バックアップ制御回路２は、ノンデバッグモードが設定されている場合であって、アクティブに設定されたＳＢ信号を取得した場合、ＣＰＵ１０が、スリープ状態へ移行することも指示信号ＰＣを用いて併せて通知する。
【００１７】
バックアップ制御回路２は、インアクティブに設定されたデバッグイネーブル信号ＤＢＧ＿ＥＮを取得し、さらにアクティブに設定されたスタンバイ信号ＳＢを取得した場合、動作回路２０が保持するデータをバックアップメモリ３０へ退避させるために、退避回復指示信号ＳＮをアクティブに設定して論理和回路４へ出力する。また、バックアップ制御回路２は、インアクティブに設定されたデバッグイネーブル信号ＤＢＧ＿ＥＮを取得し、さらにアクティブに設定されたスリープ解除信号ＲＱを取得した場合、バックアップメモリ３０に保持されているデータを動作回路２０に再設定するために、つまりデータの回復をするために、退避回復指示信号ＳＮをアクティブに設定して論理和回路４に出力する。これに対して、バックアップ制御回路２は、アクティブに設定されたデバッグイネーブル信号ＤＢＧ＿ＥＮを取得した場合、退避回復指示信号ＳＮをインアクティブに設定して論理和回路４に出力する。これにより、デバッグモードが設定された場合、動作回路２０は、データの退避及び再設定処理を行わない。
【００１８】
電源制御回路３は、バックアップ制御回路２から取得する指示信号ＰＣにおいてデバッグモードが設定されていると判定した場合、動作回路２０に対して電源を供給し続ける。
【００１９】
電源制御回路３は、バックアップ制御回路２から取得する指示信号ＰＣにおいてノンデバッグモードが設定され、さらにＣＰＵ１０がスリープ状態へ移行もしくはスリープ状態を解除する状態と判定した場合、動作回路２０へ供給する電源を制御する。具体的には、電源制御回路３は、ＣＰＵ１０がスリープ状態へ移行する場合、動作回路２０が保持している全てのデータがバックアップメモリ３０へ退避された後に、動作回路２０への電源供給を停止する。また、電源制御回路３は、スリープ状態の解除を通知する指示信号ＰＣを取得した場合、動作回路２０へ電源供給を開始する。電源制御回路３は、動作回路２０が保持している全てのデータがバックアップメモリ３０へ退避された旨の通知をバックアップ制御回路２から取得してもよく、もしくは動作回路２０からの出力結果を取得して、データの退避が完了したか否かを判定してもよい。
【００２０】
論理和回路４は、バックアップ制御回路２から退避回復指示信号ＳＮを取得する。さらに、論理和回路４は、半導体集積回路１の外部から、スキャンパステスト時にスキャンチェーンの形成を指示するスキャンイネーブル信号ＳＥを取得する。半導体集積回路１の外部から取得するスキャンイネーブル信号ＳＥとは、例えば、半導体集積回路１を含む装置に備えられているボード上のスイッチを操作することにより発生する。スキャンイネーブル信号ＳＥがアクティブに設定されている場合、スキャンチェーンを形成すべきことを示している。スキャンチェーンを形成することにより、スキャンパステストが実行される。スキャンイネーブル信号ＳＥは、スキャンパステスト実行時以外はインアクティブに設定される。論理和回路４は、退避回復指示信号ＳＮもしくはスキャンイネーブル信号ＳＥのどちらか一方もしくは両方の信号がアクティブに設定されている場合、チェーン形成信号ＳＣをアクティブに設定して動作回路２０へ出力する。動作回路２０に対してスキャンチェーンの形成を通知する場合、チェーン形成信号ＳＣは、アクティブに設定される。
【００２１】
論理和回路４から、アクティブに設定されたチェーン形成信号ＳＣが動作回路２０に出力された場合、動作回路２０に含まれるフリップフロップ１１〜１５と、フリップフロップ２１〜２５とがそれぞれスキャンチェーンを構成する。図１においては、フリップフロップ１１〜１５と、フリップフロップ２１〜２５と二つのスキャンチェーンを有する図が示されているが、スキャンチェーンの数は２つに限定されるものではなく、またスキャンチェーンの接続構成も図示した構成に限定されるものではない。
【００２２】
選択回路５及び選択回路６は、ノーマルモード切替信号ＮＭにより制御される。ノーマルモード切替信号ＮＭがインアクティブに設定された場合、動作回路２０は、スキャンパステストを実行する。スキャンパステストを実行する場合、選択回路５及び選択回路６は、外部から入力されるスキャンイン信号ＳＩを取得する。本実施の形態では、選択回路５は、スキャンイン信号ＳＩ１を取得し、選択回路６は、スキャンイン信号ＳＩ２を取得する。ノーマルモード切替信号ＮＭがアクティブに設定された場合、動作回路２０は、ノーマル動作を行う。ノーマル動作とは、スキャンパステスト以外の動作である。ノーマル動作を行う場合、選択回路５及び選択回路６は、バックアップメモリ３０から出力されるＭＯ１信号、ＭＯ２信号を選択し、フリップフロップ１１及び２１に出力する。もしくは、図示されていない他の回路等から出力されるデータを取得する。ノーマル動作時に、ノンデバッグモードが設定され、チェーン形成信号ＳＣがアクティブに設定されている場合、動作回路２０は、スキャンチェーンを形成し、バックアップメモリ３０に保存されているデータがフリップフロップ１１〜１５及びフリップフロップ２１〜２５に設定される。つまり、データの回復処理が行われる。
【００２３】
バックアップメモリ３０は、図示されないメモリ部とアドレスカウンタと制御回路とを備える。バックアップメモリ３０は、データの退避及び回復動作のとき、順に入力されるデータをメモリ部に書き込み、格納されたデータを順に出力する。順にデータの書き込み及び読み出しができれば、バックアップメモリ３０は、どのように構成されてもよい。メモリ部が不揮発性メモリであればスリープ状態のときに電源供給を停止することができる。揮発性メモリであれば、電源供給を継続する必要がある。また、本実施の形態では、バックアップメモリ３０は、半導体集積回路１の内部に搭載されるが、半導体集積回路１の外部に設けてもよい。
【００２４】
ＴＡＰコントローラ４０は、スキャンパステスト等の実行を制御する。ＴＡＰコントローラ４０により、テストデータの出力や、実行する命令の転送等が行われる。また、ＴＡＰコントローラ４０は、ＩＣＥ５０と接続されており、ＪＴＡＧを用いてＴＡＰコントローラ４０の設定を行う。
【００２５】
続いて、図２を用いて、本発明の実施の形態１にかかるバックアップ制御回路２の構成例について説明する。バックアップ制御回路２は、回路制御情報生成部２０１と、電源制御回路出力部２０２と、動作回路出力部２０３とを備えている。
【００２６】
回路制御情報生成部２０１は、デバッグイネーブル信号ＤＢＧ＿ＥＮ及びスタンバイ信号ＳＢを取得する。デバッグイネーブル信号ＤＢＧ＿ＥＮがアクティブに設定されている場合、回路制御情報生成部２０１は、デバッグモードが設定されたことを示す指示信号ＰＣを、電源制御回路出力部２０２を介して電源制御回路３へ出力する。また、回路制御情報生成部２０１は、動作回路出力部２０３を介して退避回復指示信号ＳＮをインアクティブに設定して論理和回路４へ出力する。
【００２７】
デバッグイネーブル信号ＤＢＧ＿ＥＮがインアクティブに設定されている場合、回路制御情報生成部２０１は、ノンデバッグモードが設定されたことを示す指示信号ＰＣを、電源制御回路出力部２０２を介して電源制御回路３へ出力する。さらに、回路制御情報生成部２０１は、インアクティブに設定されたデバッグイネーブル信号ＤＢＧ＿ＥＮと、アクティブに設定されたスタンバイ信号ＳＢとを取得した場合、指示信号ＰＣを用いてＣＰＵ１０がスリープ状態へ移行することを電源制御回路３へ通知する。また、回路制御情報生成部２０１は、退避回復指示信号ＳＮをアクティブに設定し、動作回路出力部２０３を介して、論理和回路４へＳＮ信号を出力する。
【００２８】
続いて、図３を用いて本発明の実施の形態１にかかるデバッグモード設定時の処理の流れについて説明する。はじめに、デバッグイネーブル信号ＤＢＧ＿ＥＮをアクティブに設定し、デバッグモードを設定する（Ｓ１０）。デバッグイネーブル信号ＤＢＧ＿ＥＮは、例えば、半導体集積回路１を含む装置に備えられているボードのスイッチを操作することにより設定される。
【００２９】
次に、ＣＰＵ１０からバックアップ制御回路２に対して、スリープ状態への移行通知が行われる（Ｓ１１）。スリープ状態への移行通知は、ＣＰＵ１０において動作するソフトウェアの命令を実行することにより行われる。スリープ状態への移行通知は、スタンバイ信号ＳＢをアクティブに設定し通知される。
【００３０】
次に、動作回路２０に対して、デバッグ情報の設定を行う（Ｓ１２）。デバッグ情報とは、例えば、動作回路２０を構成するそれぞれのフリップフロップに対して、設定されるブレークポイントである。ＣＰＵ１０が動作している際に、ＣＰＵ１０の保有するプログラムカウンタの値がブレークポイントの値と一致した場合に、ＣＰＵ１０の動作を停止させ、ＣＰＵ１０の内部状態の情報を収集する。
【００３１】
次に、ＣＰＵ１０からバックアップ制御回路２に対して、スリープ状態の解除通知が行われる（Ｓ１３）。スリープ状態の解除通知は、スタンバイ信号ＳＢをインアクティブに設定することにより行われる。
【００３２】
次に、動作回路２０は、設定されているデバッグ情報に従いデバッグを実行する（Ｓ１３）。ここで、デバッグの実行、つまり内部状態の情報収集は、スリープ実行中から開始してもよい。
【００３３】
続いて、図４を用いて本発明の実施の形態１にかかるノンデバッグモード設定時の処理の流れについて説明する。はじめに、デバッグイネーブル信号ＤＢＧ＿ＥＮをインアクティブに設定し、ノンデバッグモードを設定する（Ｓ２０）。デバッグイネーブル信号ＤＢＧ＿ＥＮは、例えば、半導体集積回路１を含む装置に備えられているボード上のスイッチを操作することにより設定することができる。
【００３４】
次に、ＣＰＵ１０からバックアップ制御回路２に対して、スリープ状態への移行通知が行われる（Ｓ２１）。スリープ状態への移行通知は、スタンバイ信号ＳＢをアクティブに設定することにより行われる。
【００３５】
次に、動作回路２０は、バックアップメモリ３０へフリップフロップ１１〜１５及びフリップフロップ２１〜２５が保持するデータを退避する（Ｓ２２）。動作回路２０は、論理和回路４から出力されるアクティブに設定されたチェーン形成信号ＳＣを取得することにより、スキャンチェーンを構成し、データの退避を行う。
【００３６】
次に、電源制御回路３は、フリップフロップ１１〜１５及びフリップフロップ２１〜２５が保持するデータ退避が完了した後に、ＣＰＵ１０への電源供給を停止する（Ｓ２３）。次に、スリープ状態の解除信号がバックアップ制御回路２へ出力される（Ｓ２４）。スリープ状態の解除信号は、例えばＣＰＵに対する割り込み信号等が該当する。
【００３７】
次に、電源制御回路３は、動作回路２０に対して電源供給を行う（Ｓ２５）。次に、電源供給を受けた動作回路２０は、バックアップメモリ３０に保持されているデータを、フリップフロップに設定する（Ｓ２６）。
【００３８】
続いて、図５、図６を用いて本発明の実施の形態１にかかる各信号の設定内容について説明する。図５は、デバッグモード時における、各信号の設定内容について示している。スキャンパステスト時は、インアクティブに設定されたノーマルモード切替信号ＮＭが、選択回路５及び選択回路６に出力される。ノーマルモード切替信号ＮＭがインアクティブに設定されているため、選択回路５及び選択回路６は、スキャンイン信号ＳＩ１及びスキャンイン信号ＳＩ２が入力される「０」側の信号を選択してフリップフロップ１１及びフリップフロップ１２へ出力する。また、スキャンパステスト時は、スキャンイネーブル信号ＳＥがアクティブに設定され、動作回路２０に対して、アクティブに設定されたチェーン形成信号ＳＣが出力される。動作回路２０が、アクティブに設定されたチェーン形成信号ＳＣを取得すると、フリップフロップ１１〜１５及びフリップフロップ２１〜２５は、スキャンチェーンを形成する。スキャンチェーンを介してフリップフロップ１１〜１５及びフリップフロップ２１〜２５に対してＳＩ１及びＳＩ２によりテストデータが設定されると、スキャンイネーブル信号ＳＥは一旦インアクティブになり、スキャンチェーンが解放される。この時、フリップフロップ１１〜１５及びフリップフロップ２１〜２５は、テストデータに基づいた演算結果を取り込む。その後、再度スキャンイネーブル信号ＳＥがアクティブに設定され、さらにチェーン形成信号ＳＣもアクティブに設定されることにより、動作回路２０にスキャンチェーンが形成される。動作回路２０は、フリップフロップ１１〜１５及びフリップフロップ２１〜２５に取り込まれたデータを、スキャンアウト信号ＳＯ１及びＳＯ２として出力する。このスキャンアウト信号ＳＯ１及びＳＯ２に含まれるテスト結果は、シミュレーション結果と比較され、半導体集積回路１の正常性を確認するために用いられる。
【００３９】
ノーマル動作時、つまりスキャンパステスト以外の動作時は、ノーマルモード切替信号ＮＭはアクティブに設定され、スキャンイネーブル信号ＳＥはインアクティブに設定される。また、デバッグモードが設定されているため、退避回復指示信号ＳＮは、常にインアクティブに設定される。したがって、チェーン形成信号ＳＣもインアクティブに設定され、スキャンチェーンは形成されない。ＣＰＵ１０は、実行すべき処理がなくなったことを検知するとスリープ状態に移行する。スリープ状態への移行は、例えば、ＣＰＵ１０において動作するソフトウェアの命令を実行することにより、ハードウェアに対してスリープ状態に移行することが指示される。スリープ状態への移行指示は、スタンバイ信号ＳＢをアクティブに設定することにより行われる。また、割り込み処理等により、スリープ状態を解除する場合は、スリープ解除信号ＲＱをアクティブに設定することにより行われる。
【００４０】
ここで、動作回路２０は、デバッグモードに設定されているため、スリープ状態に移行する場合においても、フリップフロップ１１〜１５及びフリップフロップ２１〜２５が保持しているデータをバックアップメモリ３０へ退避せず、また、スリープ状態を解除する場合においても、バックアップメモリ３０に保持されているデータの再設定を行わない。また、ノーマル動作時であるため、スキャンイネーブル信号ＳＥもインアクティブに設定されている。そのため、チェーン形成信号ＳＣもインアクティブに設定される。これにより、動作回路２０は、スリープ状態へ移行する場合およびスリープ状態を解除する場合においても、スキャンチェーンを構成しない。また、電源制御回路３からＣＰＵ１０へ供給される電源も、デバッグモードが設定されている間は、スキャンパステスト時、ノーマル動作時ともに常に供給され続ける。
【００４１】
次に、図６を用いて、ノンデバッグモード時における、各信号の設定内容について説明する。ノーマルモード切替信号ＮＭ、スキャンイネーブル信号ＳＥ、スタンバイ信号ＳＢ及びスリープ解除信号ＲＱの設定内容は、図５と同様であるため、説明を省略する。
【００４２】
バックアップ制御回路２は、アクティブに設定されたスタンバイ信号ＳＢを取得すると、退避回復指示信号ＳＮをアクティブに設定する。バックアップ制御回路２からアクティブに設定された退避回復指示信号ＳＮを取得した論理和回路４は、チェーン形成信号ＳＣをアクティブに設定し、動作回路２０へ出力する。動作回路２０が、アクティブに設定されたチェーン形成信号ＳＣを取得した場合、フリップフロップ１１〜１５及びフリップフロップ２１〜２５は、スキャンチェーンを形成する。スキャンチェーンが形成されると、フリップフロップ１１〜１５及びフリップフロップ２１〜２５は、内部状態を示すデータをシフトし、フリップフロップ１５及びフリップフロップ２５は、スキャンアウト信号ＳＯ１及びＳＯ２をバックアップメモリ３０へ出力する。つまり、フリップフロップ１１〜１５及びフリップフロップ２１〜２５は、内部状態を示すデータをバックアップメモリ３０へ退避する。
【００４３】
フリップフロップ１１〜１５及びフリップフロップ２１〜２５が保持するデータをバックアップメモリ３０へ退避し終えた後、電源制御回路３は、動作回路２０へ電源供給を停止し、スリープ状態へ移行する。この時、退避回復指示信号ＳＮ及びチェーン形成信号ＳＣもインアクティブに設定され、スリープ状態の間スキャンチェーンは解放される。
【００４４】
スリープ状態において、割り込み処理等によりアクティブに設定されたスリープ解除信号ＲＱがバックアップ制御回路２へ入力された場合、電源制御回路３は、動作回路２０に対して電源供給を行う。さらに、バックアップ制御回路２が、退避回復指示信号ＳＮをアクティブに設定して出力することにより、アクティブに設定されたチェーン形成信号ＳＣが動作回路２０へ出力される。これにより、フリップフロップ１１〜１５及びフリップフロップ２１〜２５にスキャンチェーンが形成され、当該スキャンチェーンを介してバックアップメモリ３０が保持しているデータがフリップフロップ１１〜１５及びフリップフロップ２１〜２５に再設定される。つまり、フリップフロップ１１〜１５及びフリップフロップ２１〜２５の状態を、スリープ状態へ移行する前の状態に回復する。回復処理が完了した後は、退避回復指示信号ＳＮ及びチェーン形成信号ＳＣはインアクティブに設定され、フリップフロップ１１〜１５及びフリップフロップ２１〜２５のスキャンチェーンは解放される。
【００４５】
以上説明したように、本発明の実施の形態１にかかる半導体集積回路１を用いることにより、デバッグモード設定時、電源制御回路３は動作回路２０に対して、常時電源を供給し続ける。これにより、動作回路２０を構成するフリップフロップ１１〜１５及びフリップフロップ２１〜２５が保持するデータは、動作回路２０がスリープ状態へ移行した場合でも、消滅しない。そのため、スリープ状態においても、動作回路２０の内部状態を確認するデバッグを行うことができる。
【００４６】
さらに、フリップフロップ１１〜１５及びフリップフロップ２１〜２５が保持するデータは、デバッグモード設定時であって動作回路２０がスリープ状態へ移行した場合でも消滅しないため、スリープ状態移行前のデータの退避及びスリープ状態解除後のデータ再設定処理を行わない。これにより、スリープ状態移行前及びスリープ状態解除後において、動作回路２０に設定されるデバッグ情報が変更されることはないため、スリープ状態解除後もデバッグを継続することができる。
【００４７】
さらに、ノンデバッグモード時は、スリープ状態に移行した場合は、電源の供給を停止することで省電力化を図れる。
【００４８】
（実施の形態２）
続いて、図７を用いて本発明の実施の形態２にかかる半導体集積回路１の構成例を示す。半導体集積回路１は、バックアップ制御回路２と、電源制御回路３と、選択回路５〜８と、フリップフロップ１１〜１５及び２１〜２５と、バックアップメモリ３０と、ＴＡＰコントローラ４０と、ＩＣＥ５０と、論理積回路６１と、論理和回路６２と、論理和回路６３と、論理積回路６４と、を備えている。また、選択回路５〜８と、フリップフロップ１１〜１５及び２１〜２５と、論理積回路６１と、論理和回路６２と、論理和回路６３と、論理積回路６４とは、ＣＰＵ又はＭＰＵ等を構成する（以下、ＣＰＵ７０とする）。さらに、フリップフロップ１１〜１３及びフリップフロップ２１〜２３は、デバッグ対象回路７１を構成し、フリップフロップ１４及び１５とフリップフロップ２４及び２５とは、デバッグ制御回路７２を構成する。
【００４９】
デバッグ対象回路とは、デバッグが実行される回路であり、プログラム等により指示される処理を実行した際の、データ設定状況等を解析される回路である。デバッグ制御回路とは、デバッグ対象回路のデバッグを実行する回路であり、ブレークポイントの設定等のデバッグ情報を設定する回路である。
【００５０】
バックアップ制御回路２は、ＣＰＵ７０からスリープ状態への移行を示すアクティブに設定されたスタンバイ信号ＳＢを取得した場合、指示信号ＰＣを用いて電源制御回路３へ、ＣＰＵ７０がスリープ状態へ移行することを通知する。この場合、バックアップ制御回路２は、フリップフロップが保持するデータの退避を指示する退避回復指示信号ＳＮをアクティブに設定し、論理積回路６１及びデバッグ対象回路７１へ出力する。また、バックアップ制御回路２は、スリープ状態の解除を通知するスリープ解除信号ＲＱを取得した場合、指示信号ＰＣを用いて電源制御回路３へ、ＣＰＵ７０のスリープ状態解除を通知する。この場合、バックアップ制御回路２は、退避回復指示信号ＳＮをアクティブに設定し、論理積回路６１及びデバッグ対象回路７１へ出力する。
【００５１】
電源制御回路３は、アクティブに設定されたデバッグイネーブル信号ＤＢＧ＿ＥＮを取得した場合、バックアップ制御回路２から通知される信号にかかわらず、デバッグ制御回路７２へ電源を供給し続ける。この時、電源制御回路３は、デバッグ対象回路７１へも同様に電源を供給し続けてもよく、ＣＰＵ７０がスリープ状態へ移行した場合に、デバッグ対象回路７１に対する電源供給を停止してもよい。電源制御回路３は、インアクティブに設定されたデバッグイネーブル信号ＤＢＧ＿ＥＮを取得し、ＣＰＵ７０がスリープ状態へ移行することをバックアップ制御回路２から指示信号ＰＣにより通知された場合、デバッグ対象回路７１及びデバッグ制御回路７２への電源供給を次のように制御する。電源制御回路３は、デバッグ対象回路７１に属するフリップフロップが保持するデータをバックアップメモリ３０へ退避完了した場合、デバッグ対象回路７１及びデバッグ制御回路７２に対して電源の供給を停止する。また、電源制御回路３は、ＣＰＵ７０がスリープ状態を解除することをバックアップ制御回路２からＰＣ信号により通知された場合、デバッグ対象回路７１及びデバッグ制御回路７２への電源供給を再開する。
【００５２】
論理積回路６１は、バックアップ制御回路２から退避回復指示信号ＳＮを取得し、さらに外部から入力されるデバッグイネーブル信号ＤＢＧ＿ＥＮの値を反転して取得する。論理積回路６１は、デバッグイネーブル信号ＤＢＧ＿ＥＮがアクティブに設定された場合、スキャンチェーンを形成しないことを示すため、チェーン形成信号ＳＣをインアクティブに設定して論理和回路６２へ出力する。また、デバッグイネーブル信号ＤＢＧ＿ＥＮがインアクティブに設定され、退避回復指示信号ＳＮがインアクティブに設定された場合も、チェーン形成信号ＳＣをインアクティブに設定して、論理和回路６２へ出力する。論理積回路６１は、デバッグイネーブル信号ＤＢＧ＿ＥＮがインアクティブに設定され、退避回復指示信号ＳＮがアクティブに設定された場合、チェーン形成信号ＳＣをアクティブに設定して論理和回路６２へ出力する。
【００５３】
論理和回路６２は、論理積回路６１からチェーン形成信号ＳＣを取得し、外部からスキャンイネーブル信号ＳＥを取得する。論理和回路６２は、チェーン形成信号ＳＣ又はスキャンイネーブル信号ＳＥのどちらか一方がアクティブに設定されている場合は、フリップフロップのスキャンチェーン形成を指示するチェーン形成信号ＳＣ１をアクティブに設定し、デバッグ制御回路７２に対して出力する。論理和回路６２は、チェーン形成信号ＳＣ及びスキャンイネーブル信号ＳＥの両信号ともにインアクティブが設定されている場合、インアクティブに設定したチェーン形成信号ＳＣ１をデバッグ制御回路７２へ出力する。
【００５４】
論理和回路６３は、バックアップ制御回路２から取得した退避回復指示信号ＳＮ及び外部から取得したスキャンイネーブル信号ＳＥのどちらか一方がアクティブに設定されている場合、デバッグ対象回路７１に対して、スキャンチェーンの形成を指示するアクティブに設定したチェーン形成信号ＳＣ２を出力する。論理和回路６３は、バックアップ制御回路２から取得した退避回復指示信号ＳＮ及び外部から取得したスキャンイネーブル信号ＳＥがインアクティブに設定されている場合、デバッグ対象回路７１に対して、スキャンチェーンを形成しないことを示す、インアクティブに設定したチェーン形成信号ＳＣ２を出力する。
【００５５】
デバッグ対象回路７１は、論理和回路６３からアクティブに設定されたチェーン形成信号ＳＣ２を取得した場合、フリップフロップ１１〜１３及びフリップフロップ２１〜２３をそれぞれ接続してスキャンチェーンを形成する。スキャンチェーンを形成した場合、フリップフロップ１１〜１３及びフリップフロップ２１〜２３は、形成したスキャンチェーンを介して、フリップフロップが保持するデータを出力する。
【００５６】
デバッグ制御回路７２は、論理和回路６２からアクティブに設定されたチェーン形成信号ＳＣ１を取得した場合、フリップフロップ１４及び１５と、フリップフロップ２４及び２５とで、それぞれスキャンチェーンを形成する。スキャンチェーンを形成した場合、フリップフロップ１４及び１５と、フリップフロップ２４及び２５とは、形成したスキャンチェーンを介して、フリップフロップが保持するデータを出力する。
【００５７】
選択回路５及び選択回路６は、図１と同様の構成であるため、説明を省略する。
【００５８】
選択回路７及び選択回路８は、ノーマルモード切替信号ＮＭにより制御される。ノーマルモード切替信号ＮＭがインアクティブ、つまりスキャンパステスト時、選択回路７及び選択回路８は、フリップフロップ１５及びフリップフロップ２５から、選択回路７及び選択回路８の「０」側に出力されるスキャンパステストの結果データを選択してスキャンアウト信号ＳＯ１及びＳＯ２を出力する。ノーマルモード切替信号ＮＭがアクティブ、つまりノーマル動作時は、フリップフロップ１３及びフリップフロップ２３から、選択回路７及び選択回路８の「１」側に出力されるデータを選択してスキャンアウト信号ＳＯ１及びＳＯ２を出力する。したがって、ノーマル動作時のスキャンチェーンは、デバッグ対象回路７１のフリップフロップが保持するデータを、デバッグ制御回路７２をバイパスして出力する。デバッグ対象回路７１から出力されたデータは、バックアップメモリ３０へ出力され、保存される。
【００５９】
論理積回路６４は、デバッグ制御回路７２に対して固定値を設定するリセット信号ＲＳＴ１を出力する。デバッグ制御回路７２は、ノンデバッグモードに設定され、スリープ状態へ移行すると電源の供給が停止されるため、スリープ状態解除後に、データ回復動作を行った場合に、不定値を保持することになる。そのため、論理積回路６４を用いて、デバッグ制御回路７２に対して所定の値を設定する。この場合の詳細な構成について、図８を用いて説明する。
【００６０】
図８で示されるように、論理積回路６４は、リセット信号ＲＳＴと、論理積回路６１から出力されるチェーン形成信号ＳＣとを取得する。また、論理積回路６４は、リセット信号ＲＳＴとチェーン形成信号ＳＣとに基づいて、リセット信号ＲＳＴ１を出力する。リセット信号ＲＳＴは、半導体集積回路１全体の電源をＯＮにした場合に、デバッグ対象回路７１のフリップフロップを所定の状態にする。また、リセット信号ＲＳＴ１は、フリップフロップ１４及び１５と、２４及び２５とを所定の状態に設定する。以下に、図８に示す回路の動作について説明する。なお、リセット信号ＲＳＴ及びリセット信号ＲＳＴ１は、「０」が設定された場合にアクティブ状態とし、「１」が設定された場合にインアクティブ状態として説明する。
【００６１】
リセット信号ＲＳＴは、ノーマル動作時にはインアクティブ状態に設定される。この時、デバッグモードに設定されている場合、チェーン形成信号ＳＣはインアクティブ状態に設定される。チェーン形成信号ＳＣは、論理積回路６４には設定値が反転して入力されるため、リセット信号ＲＳＴ１は、インアクティブに設定され出力される。そのため、デバッグ制御回路７２のフリップフロップは所定の状態に設定されない。ノンデバッグモードに設定されかつスリープ状態が解除される場合、チェーン形成信号ＳＣはアクティブ状態に設定される。これより、リセット信号ＲＳＴ１は、アクティブに設定され出力される。そのため、フリップフロップ１４及び１５と、フリップフロップ２４及び２５とは、所定の状態にリセットされる。これより、デバッグ制御回路７２がノンデバッグモード設定時に設定され、スリープ状態が解除されデータ回復動作を行った場合において、所定値が設定されることとなり、不定値を保持することによる誤動作を防止できる。
【００６２】
バックアップメモリ３０、ＴＡＰコントローラ４０及びＩＣＥ５０は、図１と同様の構成であるため、説明を省略する。
【００６３】
続いて、図９を用いて本発明の実施の形態２にかかる電源制御回路３の構成例について説明する。電源制御回路３は、電源制御情報生成部３０１と、デバッグ対象回路出力部３０２と、デバッグ制御回路出力部３０３とを備えている。
【００６４】
電源制御情報生成部３０１は、外部からデバッグイネーブル信号ＤＢＧ＿ＥＮと、バックアップ制御回路２から指示信号ＰＣとを取得する。アクティブに設定されたデバッグイネーブル信号ＤＢＧ＿ＥＮを取得した場合、指示信号ＰＣの設定内容にかかわらず、デバッグ制御回路７２へ電源を供給し続ける。電源制御情報生成部３０１は、デバッグ制御回路出力部３０３を介して、デバッグ制御回路７２に対する電源供給を制御する。アクティブに設定されたデバッグイネーブル信号ＤＢＧ＿ＥＮを取得した場合、電源制御情報生成部３０１は、デバッグ対象回路７１に対して、デバッグ制御回路７２と同様に、電源の供給を継続してもよく、次の制御を行ってもよい。例えば、指示信号ＰＣにてＣＰＵ７０がスリープ状態へ移行する旨の通知を受けた場合は、電源制御情報生成部３０１は、デバッグ対象回路出力部３０２を介して、デバッグ対象回路７１に対して電源の供給を停止する制御を行い、指示信号ＰＣにてＣＰＵ７０がスリープ状態以外の状態であることを通知された場合は、デバッグ対象回路出力部３０２を介して、デバッグ対象回路７１に対して電源の供給を継続する制御を行ってもよい。
【００６５】
電源制御情報生成部３０１は、インアクティブに設定されたデバッグイネーブル信号ＤＢＧ＿ＥＮとＣＰＵ７０がスリープ状態へ移行することを示す指示信号ＰＣとを取得した場合、デバッグ対象回路７１及びデバッグ制御回路７２に対する電源の供給を停止する。電源制御情報生成部３０１は、インアクティブに設定されたデバッグイネーブル信号ＤＢＧ＿ＥＮとＣＰＵ７０がノンスリープ状態であることを示す指示信号ＰＣとを取得した場合、デバッグ対象回路７１及びデバッグ制御回路７２に対して電源を供給する。
【００６６】
続いて、図１０を用いて本発明の実施の形態２にかかる半導体集積回路１にデバッグモードを設定した場合の動作例について説明する。はじめに、半導体集積回路１は、デバッグモードの設定を行う（Ｓ３０）。具体的には、外部からアクティブに設定されたデバッグイネーブル信号ＤＢＧ＿ＥＮを取得する。
【００６７】
次に、ＣＰＵ７０は、スリープ状態への移行を通知する（Ｓ３１）。ＣＰＵ７０は、実行すべき処理が無いと判断した場合に、スリープ状態へ移行してもよく、あらかじめ設定されたタイマ値に基づいてスリープ状態へ移行してもよい。この時、ＣＰＵ７０は、バックアップ制御回路２へアクティブに設定したスタンバイ信号ＳＢを出力する。
【００６８】
次に、バックアップ制御回路２は、制御する対象がデバッグ対象回路７１か、デバッグ制御回路７２かを判定する（Ｓ３２）。制御する対象がデバッグ対象回路７１である場合、バックアップ制御回路２は、論理和回路６３を介してデバッグ対象回路７１に対して、スキャンチェーンを形成するよう通知する。具体的には、論理和回路６３へアクティブに設定した退避回復指示信号ＳＮを出力し、論理和回路６３がアクティブに設定したチェーン形成信号ＳＣ２をデバッグ対象回路７１へ出力する。デバッグ対象回路７１は、形成したスキャンチェーンを介してフリップフロップが保持するデータをバックアップメモリ３０へ出力する（Ｓ３３）。つまり、デバッグ対象回路７１は、フリップフロップが保持するデータをバックアップメモリ３０へ退避する。
【００６９】
次に、データの退避が完了した場合、電源制御回路３はデバッグ対象回路７１への電源供給を停止する（Ｓ３４）。次に、バックアップ制御回路２は、外部からの割り込み処理等によりスリープ状態解除を示すスリープ解除信号ＲＱを取得する（Ｓ３５）。次に、ＣＰＵ７０のスリープ状態が解除された場合、電源制御回路３はデバッグ対象回路７１に対して電源の供給を再開する（Ｓ３６）。次に、デバッグ対象回路７１は、バックアップ制御回路２からアクティブに設定された退避回復指示信号ＳＮを取得し、スキャンチェーンを形成する。デバッグ対象回路７１が有するフリップフロップは、スキャンチェーンを介してバックアップメモリ３０に保存されているデータの再設定を行う。つまり、フリップフロップは、データの回復を行う（Ｓ３７）。
【００７０】
次に、ステップＳ３２において、制御対象がデバッグ制御回路７２である場合、論理積回路６１にＳＮ信号を出力する。ここで、デバッグモードが設定されているため、論理積回路６１は、常時インアクティブに設定されたチェーン形成信号ＳＣを出力する。これにより、デバッグ制御回路７２は、スキャンチェーンを形成せず、デバッグを実行するためにブレークポイント等のデバッグ情報を設定する（Ｓ３８）。次に、デバッグ制御回路７２は、デバッグ対象回路７１のデバッグを実行する（Ｓ３９）。この時、ステップＳ３４においてデバッグ対象回路７１への電源供給を停止せず、電源供給を継続する場合は、デバッグ対象回路７１がスリープ状態であってもデバックを実行してもよい。
【００７１】
続いて、図１１を用いて本発明の実施の形態にかかる電源供給動作について説明する。スキャンパステスト時以外のノーマル動作時でありＣＰＵ７０がスリープ状態移行前である場合、退避回復指示信号ＳＮはインアクティブに設定されており、また、デバッグモード及びノンデバッグモードのどちらが設定されている場合でも、デバッグ対象回路７１及びデバッグ制御回路７２に対して電源が供給されている。
【００７２】
ＣＰＵ７０がスリープ状態へ移行する場合、バックアップ制御回路２は、デバッグ対象回路７１が保持するデータをバックアップメモリ３０へ退避するために、退避回復指示信号ＳＮをアクティブに設定する。この時、まだスリープ状態へは移行していないため、デバッグモード及びノンデバッグモードのどちらが設定されている場合でも、デバッグ対象回路７１及びデバッグ制御回路７２に対して電源は供給されている。
【００７３】
ＣＰＵ７０がスリープ状態へ移行した場合であって、ノンデバッグモードに設定されている場合、電源制御回路３は、デバッグ対象回路７１及びデバッグ制御回路７２に対する電源の供給を停止する。また、ＣＰＵ７０がスリープ状態へ移行した場合であって、デバッグモードに設定されている場合、電源制御回路３は、デバッグ対象回路７１に対して、電源の供給を停止してもよく、電源の供給を継続してもよい。図１１においては、電源の供給が停止されている状態を示している。電源制御回路３は、デバッグ制御回路７２に対する電源の供給は継続する。
【００７４】
ＣＰＵ７０のスリープ状態が解除される場合、退避回復指示信号ＳＮは、アクティブに設定される。さらに、ノンデバッグモードに設定されている場合、電源制御回路３は、デバッグ対象回路７１及びデバッグ制御回路７２に対して電源の供給を再開する。また、デバッグ対象回路７１及びデバッグ制御回路７２は、バックアップメモリ３０に保存されているデータを再設定する。デバッグモードに設定されている場合であって、デバッグ対象回路７１の電源が停止されている場合は、デバッグ対象回路７１に対する電源の供給を再開し、バックアップメモリ３０に保存されているデータの再設定を行う。デバッグ対象回路７１の電源が供給されている状態の場合は、デバッグ対象回路７１及びデバッグ制御回路７２は、引き続き電源の供給を受け続ける。
【００７５】
続いて、図１２を用いて本発明の実施の形態にかかるデバッグモード設定時における信号の設定内容について説明する。ノーマルモード切替信号ＮＭ、スキャンイネーブル信号ＳＥ、スタンバイ信号ＳＢ及びスリープ解除信号ＲＱは、図５と同様の設定内容であるため、説明を省略する。また、チェーン形成信号ＳＣ１は、図５のチェーン形成信号ＳＣと同様の設定内容であるため、説明を省略する。
【００７６】
退避回復指示信号ＳＮは、スタンバイ信号ＳＢがアクティブに設定された場合、デバッグ対象回路７１の保持するデータの退避が完了するまでアクティブに設定される。また、スリープ解除信号ＲＱがアクティブに設定された場合、デバッグ対象回路７１のデータの回復が完了するまでアクティブに設定される。また、チェーン形成信号ＳＣは、デバッグモードが設定されている状態においては、論理積回路６１へはインアクティブに設定され入力されるため、常にインアクティブ状態となる。そのため、ノーマル動作時は、チェーン形成信号ＳＣ１はインアクティブ状態となり、デバッグ制御回路７２はスキャンチェーンを構成しない。
【００７７】
続いて、図１３を用いて本発明の実施の形態にかかるノンデバッグモード設定時における信号の設定内容について説明する。ノーマルモード切替信号ＮＭ、スキャンイネーブル信号ＳＥ、スタンバイ信号ＳＢ、スリープ解除信号ＲＱ及び退避回復指示信号ＳＮの設定内容は図１２と同様であるため、説明を省略する。
【００７８】
ノンデバッグモードが設定されている場合、論理積回路６１には、デバッグイネーブル信号ＤＢＧ＿ＥＮの設定値が反転され、アクティブに設定された値が入力される。そのため、論理積回路６１の出力信号であるチェーン形成信号ＳＣは、論理積回路６１へ入力される退避回復指示信号ＳＮと同様の内容が設定される。また、論理和回路６２の出力信号であるチェーン形成信号ＳＣ１は、スキャンパステスト時はスキャンイネーブル信号ＳＥと同様の内容が設定され、ノーマル動作時は、チェーン形成信号ＳＣと同様の内容が設定される。
【００７９】
以上説明したように、本発明の実施の形態２にかかる半導体集積回路は、デバッグ対象回路とデバッグ制御回路に分かれて電源制御及びスキャンチェーンの形成制御が行われる。これにより、デバッグモードが設定されている場合は、デバッグ制御回路に常に電源を供給することで、ＣＰＵ７０がスリープ状態に移行した場合でも、デバッグ情報が消滅することはない。そのため、スリープ状態が解除された後もデバッグ情報が設定されているため、再度デバッグ情報を設定する必要はなく、円滑にデバッグを実行することができる。
【００８０】
さらに、スリープ状態においても、デバッグ対象回路へ電源供給を継続することにより、スリープ状態においてもデバッグを継続することができる。
【００８１】
さらに、スリープ状態への移行時及びスリープ状態解除時に行うデータの退避、回復において、デバッグ対象回路のデータを、デバッグ制御回路をバイパスして出力することにより、データの退避、回復の処理時間を短縮することができる。
【００８２】
なお、本発明は上記実施の形態に限られたものではなく、趣旨を逸脱しない範囲で適宜変更することが可能である。
【符号の説明】
【００８３】
１  半導体集積回路
２  バックアップ制御回路
３  電源制御回路
４  論理和回路
５  選択回路
６  選択回路
７  選択回路
８  選択回路
１０  ＣＰＵ
２０  動作回路
１１〜１５  フリップフロップ
２１〜２５  フリップフロップ
３０  バックアップメモリ
４０  ＴＡＰコントローラ
５０  ＩＣＥ
６１  論理積回路
６２  論理和回路
６３  論理和回路
６４  論理積回路
７０  ＣＰＵ
７１  デバッグ対象回路
７２  デバッグ制御回路
２０１  回路制御情報生成部
２０２  電源制御回路出力部
２０３  動作回路出力部
３０１  電源制御情報生成部
３０２  デバッグ対象回路出力部
３０３  デバッグ制御回路出力部
【図１】
2011145972.tif 000003
【図２】
2011145972.tif 000004
【図３】
2011145972.tif 000005
【図４】
2011145972.tif 000006
【図５】
2011145972.tif 000007
【図６】
2011145972.tif 000008
【図７】
2011145972.tif 000009
【図８】
2011145972.tif 000010
【図９】
2011145972.tif 000011
【図１０】
2011145972.tif 000012
【図１１】
2011145972.tif 000013
【図１２】
2011145972.tif 000014
【図１３】
2011145972.tif 000015