(57)【要約】【課題】処理能力を向上できる。【解決手段】実施形態に係る半導体装置は、第１及び第２動作モードを有する。半導体装置は、第１動作モード時に動作可能であり、第２動作モード時に電源を遮断される第１ラッチ２１と、第１ラッチ２１の電源が遮断されている間、第１ラッチ２１のデータを保持可能な第２ラッチ２２とを含む第１フリップフロップ２０を含む。第１ラッチ２１は、第１期間に実行される第１テストに用いられる。第２ラッチは、第１期間に第１ラッチ２１のデータを保持し、第１期間と異なる第２期間に実行される第２テストに用いられる。【選択図】図２
2018044910.tif 000002
【特許請求の範囲】
【請求項１】
第１及び第２動作モードを有する半導体装置であって、前記半導体装置は、
前記第１動作モード時に動作可能であり、前記第２動作モード時に電源を遮断される第１ラッチと、前記第１ラッチの前記電源が遮断されている間、前記第１ラッチのデータを保持可能な第２ラッチとを含む第１フリップフロップを備え、
前記第１ラッチは、第１期間に実行される第１テストに用いられ、
前記第２ラッチは、前記第１期間に前記第１ラッチの前記データを保持し、前記第１期間と異なる第２期間に実行される第２テストに用いられる半導体装置。
【請求項２】
前記第１動作モード時に動作可能であり、前記第２動作モード時に電源を遮断される第３ラッチと、前記第３ラッチが前記電源を遮断されている間、前記第３ラッチのデータを保持可能な第４ラッチとを含む第２フリップフロップを更に備え、
前記第２及び第４ラッチは、前記第２テストのデータ入力端子と、データ出力端子とを含み、
前記第２テストを実行する際、前記第２ラッチの前記データ出力端子は、前記第４ラッチの前記データ入力端子に接続される
請求項１記載の半導体装置。
【請求項３】
データの入出力が可能な第１状態と、前記データの入出力をおこなわずに前記データを保持する第２状態とを有するＳＲＡＭ（static random access memory）と、
前記第１及び第２テストを制御する第１回路と、
前記第１フリップフロップのリセットを制御する第２回路と、
を更に備え、
前記第１テストを実行する場合、前記第１回路は、前記第１ラッチの前記データを前記第２ラッチに転送し、前記ＳＲＡＭを前記第１状態から前記第２状態に移行させた後、前記第１テストを実行し、
前記第２回路は、前記第１テスト後、前記第１ラッチをリセットし、前記第２ラッチが保持する前記データを前記第１ラッチに転送させ、前記ＳＲＡＭを前記第２状態から前記第１状態に移行させ、
前記第２テストを実行する場合、前記第１回路は、前記第１ラッチの前記データを前記第２ラッチに転送せず、且つ前記ＳＲＡＭを前記第１状態から前記第２状態に移行させることなく、前記第２テストを実行する
請求項１または２記載の半導体装置。
【請求項４】
前記第１動作モードの期間に前記第１及び第２期間が含まれ、
前記第２期間に、前記第１ラッチは動作可能である
請求項１乃至３のいずれか一項記載の半導体装置。
【請求項５】
前記第１及び第２ラッチに電源を供給する第３回路と、
前記第１乃至第３回路を制御する第４回路と
を更に備え、
前記第３回路は、前記第２テストを実行中に前記第４回路から前記第２動作モードに移行する要求を受けた場合、前記第２テストを終了した後に前記第１ラッチへの電源供給を停止する
請求項３記載の半導体装置。
【請求項６】
第１及び第２動作モードを有する半導体装置であって、前記半導体装置は、
前記第１動作モード時に動作可能であり、前記第２動作モード時に電源を遮断される第１ラッチと、前記第１ラッチの前記電源が遮断されている間、前記第１ラッチのデータを保持可能な第２ラッチとを含むフリップフロップを備え、
前記第１ラッチは、
前記第１ラッチを用いた第１テストに対応する第１イネーブル信号入力端子と、
前記第１テストに用いられる第１テストデータが入力される第１テストデータ入力端子と、
第１出力端子と、
第１クロック信号が入力される第１クロック信号入力端子と、
リセット信号が入力されるリセット信号入力端子と、
第１電源電圧が印加される第１電源端子と
を含み、
前記第２ラッチは、
前記第２ラッチを用いた第２テストに対応する第２イネーブル信号入力端子と、
前記第２テストに用いられる第２テストデータが入力される第２テストデータ入力端子と、
第２出力端子と、
第２クロック信号が入力される第２クロック信号入力端子と、
第２電源電圧が印加される第２電源端子と
を含む半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、半導体装置に関する。
【背景技術】
【０００２】
自動車あるいは産業機械などの分野では高信頼性の半導体装置が求められている。例えば自動車部品の機能安全を示す国際規格としてＩＳＯ２６２６２のＡＳＩＬ（automotive safety integrity level）がある。ＡＳＩＬ対応が求められるシステムには、システムが通常動作状態にあっても組み込み自己テスト（ＢＩＳＴ（built in self test））を行う機能を有しているものがある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００６−２５４００号公報
【特許文献２】特開２００８−７８７５４号公報
【特許文献３】特開２０１４−２７４６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
処理能力を向上できる半導体装置を提供する。
【課題を解決するための手段】
【０００５】
実施形態に係る半導体装置は、第１及び第２動作モードを有する。半導体装置は、第１動作モード時に動作可能であり、第２動作モード時に電源を遮断される第１ラッチと、第１ラッチの電源が遮断されている間、第１ラッチのデータを保持可能な第２ラッチとを含む第１フリップフロップを含む。第１ラッチは、第１期間に実行される第１テストに用いられる。第２ラッチは、第１期間に第１ラッチのデータを保持し、第１期間と異なる第２期間に実行される第２テストに用いられる。
【図面の簡単な説明】
【０００６】
【図１】図１は、第１実施形態に係る半導体装置のブロック図である。
【図２】図２は、第１実施形態に係る半導体装置の備えるリテンションフリップフロップのブロック図である。
【図３】図３は、第１実施形態に係る半導体装置におけるチェーンパターンを示すブロック図である。
【図４】図４は、第１実施形態に係る半導体装置におけるノーマルラッチテストのフローチャートである。
【図５】図５は、第１実施形態に係る半導体装置におけるバルーンラッチテストのフローチャートである。
【図６】図６は、第１実施形態に係る半導体装置におけるＬＢＩＳＴのタイミングを示すタイミングチャートである。
【図７】図７は、第２実施形態に係る半導体装置におけるノーマルラッチテストのフローチャートである。
【発明を実施するための形態】
【０００７】
以下、実施形態につき図面を参照して説明する。この説明に際し、全図にわたり、共通する部分には共通する参照符号を付す。
【０００８】
１．第１実施形態
第１実施形態に係る半導体装置について説明する。以下では、半導体装置がＳｏＣ（system on chip）である場合を例に挙げて説明する。
【０００９】
１．１  半導体装置の構成について  
まず、半導体装置の構成について説明する。
【００１０】
図１は、本実施形態に係る半導体装置のブロック図である。
【００１１】
図１に示すように、ＳｏＣ１は外部デバイス１００と接続され、外部デバイス１００からの命令に応答して各種処理（タスク）を行う。本実施形態におけるＳｏＣ１は、タスクを実行していないときに、ＳｏＣ１内の一部の回路への電源供給を停止して、低消費電力状態に移行する機能を有する。以下、ＳｏＣ１への電源供給が遮断されていない状態を「通常動作モード」と呼び、ＳｏＣ１がタスクを実行していない低消費電力状態を「低電力モード」と呼ぶ。
【００１２】
また、ＳｏＣ１は、通常動作モードにおいて、定期的にロジック回路の組み込み自己テスト（以下、「ＬＢＩＳＴ（logic built in self test）」、あるいは単に「テスト」と呼ぶ）を実行し、故障診断を行う。ＬＢＩＳＴでは、予めロジック回路に組み込まれたテストパターン（または「スキャンパターン」と呼ぶ）を用いて、ロジック回路内のフリップフロップをテストする。
【００１３】
ＳｏＣ１は、ＣＰＵ（central processing unit）２、ＬＢＩＳＴシーケンサ３、システム管理ユニット（SMU; system management unit）４、メモリ５、及び電源制御回路６を備え、それぞれが内部バスを介して互いに接続されている。
【００１４】
ＣＰＵ２は、ロジック回路１０及びキャッシュ１１を含む。ＣＰＵ２は、外部デバイス１００の命令に応答して、ＳｏＣ１内における各種タスクおよびＬＢＩＳＴの制御を司る。ＣＰＵ２は、通常動作モード期間、ＬＢＩＳＴを定期的に実行する。ＬＢＩＳＴにより故障を検知した場合、ＣＰＵ２は、故障診断結果を外部デバイス１００に通知する。
【００１５】
なお、ＣＰＵ２は、シングルコアでもマルチコアでも良く、また複数のＣＰＵを有するマルチクラスタであっても良い。以下では、ＣＰＵ２がシングルコアである場合について説明する。
【００１６】
ロジック回路１０は、タスクを実行するための各種演算処理を行う。ロジック回路１０は、演算処理に用いられるレジスタ１２を含む。
【００１７】
レジスタ１２は、ロジック回路１０が実行する演算処理に用いられる。レジスタ１２は、低電力モードにおいてもデータ保持可能なリテンション機能を有する複数のフリップフロップ２０（以下、「リテンションフリップフロップ（RFF；retention flip flop）」あるいは「リテンションＦＦ」と呼ぶ）を含む（図１の参照符号“リテンションＦＦ”）。
【００１８】
リテンションフリップフロップ２０は、ノーマルラッチ及びバルーンラッチを含む（詳細は後述する）。ノーマルラッチは、通常動作モードでは、ロジック回路１０がタスクを実行するための演算処理あるいはＬＢＩＳＴに用いられる。ノーマルラッチは、低電力モードでは休止（電源供給停止）状態にされる。バルーンラッチは、ノーマルラッチを用いてＬＢＩＳＴが実行されている間、あるいはノーマルラッチが休止状態の間、ノーマルラッチのデータを保持する。以下、リテンションフリップフロップ２０において、バルーンラッチがノーマルラッチのデータを保持している状態を「リテンションモード」と呼び、バルーンラッチがノーマルラッチのデータを保持していない状態、すなわちノーマルラッチが通常動作可能な状態にある場合を「ノーマルモード」と呼ぶ。
【００１９】
キャッシュ１１は、ロジック回路１０が各種演算処理を行うために必要な情報（データ、アドレス、プログラム等）を一時的に保持し、この情報をロジック回路１０に送信する。本実施形態におけるキャッシュ１１は、例えば低電力モードにおいてもデータ保持可能なリテンション機能を有する複数のＳＲＡＭ１３（以下、「リテンションＳＲＡＭ（retention static random access memory）」と呼ぶ）を含む。
【００２０】
リテンションＳＲＡＭ１３は、データを保持するメモリコア部（不図示）、及びデータの入出力を制御する周辺回路部（不図示）を含む。リテンションＳＲＡＭ１３は、例えば低電力モードにおいてもメモリコア部に電源が供給されるため、データを保持可能である。但し、低電力モード期間、周辺回路部への電源供給が停止されるため、データの入出力はできない。以下、リテンションＳＲＡＭ１３が通常動作可能な状態にある場合、すなわちデータの入出力が可能な状態を「ノーマルモード」と呼ぶ。またリテンションＳＲＡＭ１３に含まれる周辺回路部に電源が供給されておらず、メモリコア部がデータを保持している状態を「リテンションモード」と呼ぶ。
【００２１】
ＬＢＩＳＴシーケンサ３は、例えばＬＢＩＳＴに対応するシステムレジスタ１４を含み、ＣＰＵ２からＬＢＩＳＴに関する信号を受信するとＬＢＩＳＴを実行する。より具体的には、本実施形態におけるＬＢＩＳＴは、ノーマルラッチをテストするノーマルラッチテストと、バルーンラッチをテストするバルーンラッチテストとを含む。そして、ノーマルラッチテストとバルーンラッチテストとは、それぞれ異なる期間に実行される。ＣＰＵ２からＬＢＩＳＴシーケンサ３に送信されるノーマルラッチテストに関する信号をＮＬＴ、バルーンラッチテストに関する信号をＢＬＴとする。すると、例えば信号ＮＬＴが“Ｈ”レベルでアサートされると、ノーマルラッチテストに対応するシステムレジスタ１４に“１”がセットされ、ＬＢＩＳＴシーケンサ３は、ノーマルラッチテストを実行する。
【００２２】
他方で、信号ＢＬＴが“Ｈ”レベルでアサートされると、バルーンラッチテストに対応するシステムレジスタ１４に“１”がセットされ、ＬＢＩＳＴシーケンサ３は、バルーンラッチテストを実行する。なお、ノーマルラッチテストあるいはバルーンラッチテストに対応するシステムレジスタは、ＬＢＩＳＴシーケンサ３の外部に設けられても良い。ＬＢＩＳＴシーケンサ３は、信号ＮＬＴあるいは信号ＢＬＴに対応して、ノーマルラッチテストあるいはバルーンラッチテストに応じたスキャンチェーン（テストパターン）を構成し、ＬＢＩＳＴを実行する。
【００２３】
ＬＢＩＳＴシーケンサ３は、ＬＢＩＳＴの結果を用いて故障診断を行い、故障が検知された場合、その旨をＣＰＵ２、システム管理ユニット４、あるいは外部デバイス１００に通知する。
【００２４】
ＬＢＩＳＴシーケンサ３は、ノーマルラッチテストあるいはバルーンラッチテストが終了すると、テストが終了した旨をシステム管理ユニット４に通知する。例えばＬＢＩＳＴシーケンサ３からシステム管理ユニット４に送信されるノーマルラッチテストの終了信号をＮＬＦとし、バルーンラッチテストの終了信号をＢＬＦとする。すると、例えば信号ＮＬＦが“Ｈ”レベルでアサートされると、システム管理ユニット４内のノーマルラッチテストに対応するシステムレジスタ１５に“１”がセットされる。他方で、信号ＢＬＦが“Ｈ”レベルでアサートされると、システム管理ユニット４内のバルーンラッチテストに対応するシステムレジスタ１５に“１”がセットされる。
【００２５】
システム管理ユニット４は、ＳｏＣ１全体のクロックあるいはリセット制御を行い、例えばノーマルラッチテスト及びバルーンラッチテストに対応するシステムレジスタ１５を含む。システム管理ユニット４は、ＬＢＩＳＴシーケンサ３からテストが終了した旨の通知を受信すると、テストに応じた後処理（例えばノーマルラッチテストにおけるＣＰＵ２の復帰処理等）を行う。
【００２６】
メモリ５は、例えばＤＲＡＭ（dynamic random access memory）等の半導体メモリである。メモリ５は、例えば外部デバイス１００から入力されたデータ、コマンドあるいは各種タスクのプログラム等を保持する。本実施形態におけるメモリ５は、例えばＬＢＩＳＴを実行する際のテストパターンの設定、テストプログラム、及びテストデータ等を保持する。なお、本実施形態では、メモリ５を内蔵する場合について説明するが、メモリ５は、ＳｏＣ１の外部に実装されても良く、例えば外部デバイス１００に内蔵されても良い。また、ＬＢＩＳＴを実行する際のテストパターンの設定、テストプログラム、及びテストデータ等は、外部メモリ（Ｆｌａｓｈメモリ等）に保持されても良いし、ＳｏＣ１内のｅＦｕｓｅを用いたＯＴＰ (one time programmable)メモリ、ＲＯＭ、ハードワイヤードロジック（hard wired logic）として実装されても良い。
【００２７】
電源制御回路６は、ＳｏＣ１内において必要な電圧を生成し、この生成した電圧を各回路に供給する。電源制御回路６は、ＳｏＣ１内部の一部の回路への電源供給の停止及び再開を制御することにより、低電力モードへ移行させる機能と、通常動作モードに復帰させる機能とを有する。より具体的には、電源制御回路６は、例えばＣＰＵ２から低電力モードに移行させる休止信号を受信すると、ＣＰＵ２、ＬＢＩＳＴシーケンサ３、システム管理ユニット４、及びメモリ５への電源供給を制限し、低電力モードに移行させる。また、電源制御回路６は、例えば外部デバイス１００からの信号の受信に応じて、ＣＰＵ２等への電源供給を再開し、通常動作モードに復帰させる。また、電源制御回路６は、通常動作モードから低電力モードに移行する際、ノーマルラッチへの電源供給を停止し、バルーンラッチへの電源供給を継続する。
【００２８】
１．２  リテンションフリップフロップについて  
次に、リテンションフリップフロップ２０について、図２を用いて説明する。
【００２９】
図２に示すように、リテンションフリップフロップ２０は、ノーマルラッチ２１とバルーンラッチ２２とを含む。
【００３０】
ノーマルラッチ２１は、通常動作モード期間、ロジック回路１０の演算処理やノーマルラッチテストに使用される。ノーマルラッチ２１は、低電力モード期間、電源電圧ＶＮＬの供給を停止され、休止状態になる。電源電圧ＶＮＬは、電源制御回路６からノーマルラッチ２１に供給される。ノーマルラッチ２１の保持データは、リテンションフリップフロップ２０がノーマルモードからリテンションモードに移行する際に、バルーンラッチ２２に転送される。また、リテンションフリップフロップ２０がリテンションモードからノーマルモードに復帰する際には、バルーンラッチ２２に転送したデータがノーマルラッチ２１に読み戻される。
【００３１】
ノーマルラッチ２１は、データ入力端子Ｄ１〜Ｄ３、制御信号入力端子Ｓ１、電源端子Ｖ１、リセット信号入力端子Ｒ、クロック信号入力端子ＣＫ１、及びデータ出力端子Ｑ１及びＱ２を有する。なお、ノーマルラッチ２１は、他の端子を有していても良い。例えば、ノーマルモードとリテンションモードとの切り替えを制御するリテンションモード制御信号の入力端子を有しても良い。
【００３２】
データ入力端子Ｄ１には、データＤＩが入力される。データＤＩは、ロジック回路１０の各種演算処理に対応するデータであり、ノーマルラッチ２１に入力される。
【００３３】
データ入力端子Ｄ２には、例えばスキャンデータＳＩ１が入力される。スキャンデータＳＩ１は、ノーマルラッチテストに用いられるテストデータであり、ＬＢＩＳＴシーケンサ３からノーマルラッチ２１に送信される。以下、ＬＢＩＳＴの際に、複数のリテンションフリップフロップ２０が直列に接続されてスキャンチェーンが構成され、テストが実行されることをスキャンと呼び、スキャン（ＬＢＩＳＴ）に用いられるデータをスキャンデータと呼ぶ。なお、各リテンションフリップフロップ２０に対するテストには、ＬＢＩＳＴの他に、生産工場での故障テスト（製造検査）や電源オン時（起動時）に毎回行われる初期診断テスト等がある。これらのテストの際、データ入力端子Ｄ２には、ＬＢＩＳＴと異なるテストデータが入力されても良い。
【００３４】
制御信号入力端子Ｓ１には、スキャンイネーブル信号ＳＥ１が入力される。スキャンイネーブル信号ＳＥ１は、ノーマルラッチテストをイネーブルにするための信号であり、例えば“Ｈ”レベルでアサートされる。スキャンイネーブル信号ＳＥ１は、ＬＢＩＳＴシーケンサ３からノーマルラッチ２１に送信される。
【００３５】
電源端子Ｖ１には、電源制御回路６から電源電圧ＶＮＬが印加される。
【００３６】
リセット信号入力端子Ｒには、リセット信号ＲＥＳＥＴが入力される。リセット信号ＲＥＳＥＴは、例えばＬＢＩＳＴ後にノーマルラッチ２１をリセットするための信号であり、システム管理ユニット４からノーマルラッチ２１に送信される。
【００３７】
クロック信号入力端子ＣＫ１には、クロック信号ＣＬＫ１が入力される。クロック信号ＣＬＫ１は、システム管理ユニット４からノーマルラッチ２１に送信される。
【００３８】
データ出力端子Ｑ１から、出力データＤＯ１が出力される。出力データＤＯ１は、ロジック回路１０の演算処理やノーマルラッチテストに使用される。
【００３９】
データ入力端子Ｄ３及びデータ出力端子Ｑ２は、バルーンラッチとのデータの送受信に用いられる。
【００４０】
バルーンラッチ２２は、ノーマルラッチテストの間及び低電力モード期間、ノーマルラッチ２１のデータを保持する。このため、バルーンラッチ２２は、低電力モード期間も、電源制御回路６から電源電圧ＶＢＬを供給される。バルーンラッチ２２は、リテンションフリップフロップ２０がノーマルモードの場合、待機状態にあり、リテンションモードの場合、動作状態にある。このため、バルーンラッチテストは、バルーンラッチ２２が待機状態の間、すなわちリテンションフリップフロップ２０がノーマルモードにある間に、実行される。
【００４１】
バルーンラッチ２２は、データ入力端子Ｄ４及びＤ５、制御信号入力端子Ｓ２、電源端子Ｖ２、クロック信号入力端子ＣＫ２、及びデータ出力端子Ｑ３及びＱ４を有する。なお、バルーンラッチ２２は、他の端子を有していても良い。例えば、ノーマルモードとリテンションモードとの切り替えを制御するリテンションモード制御信号の入力端子を有しても良い。
【００４２】
データ入力端子Ｄ４には、スキャンデータＳＩ２が入力される。スキャンデータＳＩ２は、バルーンラッチテストに用いられるテストデータであり、ＬＢＩＳＴシーケンサ３からバルーンラッチ２２に送信される。
【００４３】
制御信号入力端子Ｓ２には、スキャンイネーブル信号ＳＥ２が入力される。スキャンイネーブル信号ＳＥ２は、バルーンラッチテストをイネーブルにするための信号であり、例えば“Ｈ”レベルでアサートされる。スキャンイネーブル信号ＳＥ１は、ＬＢＩＳＴシーケンサ３からノーマルラッチ２１に送信される。
【００４４】
電源端子Ｖ２には、電源制御回路６から電源電圧ＶＢＬが印加される。
【００４５】
クロック信号入力端子ＣＫ２には、クロック信号ＣＬＫ２が入力される。クロック信号ＣＬＫ２は、システム管理ユニット４からバルーンラッチ２２に送信される。なお、クロック信号ＣＬＫ２の周波数は、クロック信号ＣＬＫ１の周波数と同じでも良く、異なっていても良い。例えば、バルーンラッチテストは、通常動作モード期間にＣＰＵ２がタスクを実行している際、すなわちノーマルモード期間に並列に処理される。このため、バルーンラッチテストの間は、タスクによる消費電力に、バルーンラッチテストによる消費電力が加算されるため、ＳｏＣ１全体としての消費電力が多くなってしまう。クロック信号ＣＬＫ２の周波数が高くなると、バルーンラッチテストの処理能力は向上するが、消費電力も増える。このため、クロック信号ＣＬＫ２の周波数は、ＳｏＣ１全体としての消費電力がシステムの許容する消費電力に収まるように設定される。
【００４６】
データ出力端子Ｑ３から、出力データＤＯ２が出力される。出力データＤＯ２は、バルーンラッチテストに使用される。
【００４７】
データ入力端子Ｄ５及びデータ出力端子Ｑ４は、バルーンラッチとのデータの送受信に用いられ、それぞれノーマルラッチのデータ出力端子Ｑ２及びデータ入力端子Ｄ３に接続される。
次に、スキャンチェーンについて、図３を用いて説明する。図３の例は、ノーマルラッチのスキャンチェーンを実線で、バルーンラッチテストのスキャンチェーンを点線で示している。
【００４８】
図３に示すように、例えばノーマルラッチテストでは、複数のノーマルラッチ２１が直列に接続されてスキャンチェーンが構成される。より具体的には、例えばノーマルラッチ２１のデータ出力端子Ｑ１が次段のノーマルラッチ２１のデータ入力端子Ｄ２に接続される。そして、スキャンチェーンの最終段にあるノーマルラッチ２１の出力データＤＯ１を確認することにより、故障の有無を確認する。
【００４９】
同様に、バルーンラッチテストでは、複数のバルーンラッチ２２が直列に接続されてスキャンチェーンが構成される。より具体的には、例えばバルーンラッチ２２のデータ出力端子Ｑ３が隣接するバルーンラッチ２２のデータ入力端子Ｄ４に接続される。そして、スキャンチェーンの最終段にあるバルーンラッチ２２の出力データＤＯ２を確認することにより、故障の有無を確認する。
【００５０】
１．２  ＬＢＩＳＴの流れについて  
次に、ノーマルラッチテスト及びバルーンラッチテストの流れについて、それぞれ説明する。
【００５１】
１．２．１  ノーマルラッチテストの流れ
まず、ノーマルラッチテストの流れについて、図４を用いて説明する。
【００５２】
図４に示すように、ＣＰＵ２は、例えば通常動作モード開始から一定期間経過後、あるいは、前回のノーマルラッチテストから一定期間経過後、ノーマルラッチテストの準備関数、すなわちノーマルラッチテストに移行するための処理を実行する（ステップＳ１１）。ＣＰＵ２は、ノーマルラッチテストの準備関数に従い、ノーマルラッチテストの前処理を開始する。なお、ノーマルラッチテストは、通常動作モード期間、定期的に実行される。
【００５３】
次に、ＣＰＵ２は、ノーマルラッチテストの前処理として、バリア命令を実行する（ステップＳ１２）。バリア命令とは、新たなタスクを実行させずに実行中の先行命令、すなわちタスクを完了させる命令である。
【００５４】
次に、ＣＰＵ２は、実行中のタスクが終了すると、ＬＢＩＳＴシーケンサ３にノーマルラッチテストを実行するように命令する（ステップＳ１３）。より具体的には、まず、ＣＰＵ２は、ＬＢＩＳＴシーケンサ３内のノーマルラッチテストに対応するシステムレジスタを確認する。そして、ＣＰＵ２は、ノーマルラッチテストに対応するシステムレジスタに“１”がセットされている場合には、“０”にクリアする。次に、ＣＰＵ２は信号ＮＬＴを一定時間“Ｈ”レベルにする。信号ＮＬＴが“Ｈ”レベルにされると、ＬＢＩＳＴシーケンサ３内において、ノーマルラッチテストに対応するシステムレジスタに“１”がセットされる。なお、システム管理ユニット４も信号ＮＬＴを受信しても良く、この場合、システム管理ユニット４内のノーマルラッチテストに対応するシステムレジスタにも例えば“１”がセットされる。
【００５５】
次に、ＣＰＵ２は、スリープ命令を実行し、スリープ状態に入る（ステップＳ１４）。スリープとは、ＣＰＵ２が外部デバイス１００から新たな命令を受け付けない状態、すなわち、新たなタスクを実行しない状態を示す。また、ＣＰＵ２は、ＬＢＩＳＴシーケンサ３あるいはシステム管理ユニット４等に、スリープ状態に入る旨を通知する（ＳＬＥＥＰ信号を送信する）。例えば、ＬＢＩＳＴシーケンサ３は、内部にＣＰＵ２のスリープに関するシステムレジスタを有していても良い。ＬＢＩＳＴシーケンサ３は、ＣＰＵ２がスリープ状態の場合、このシステムレジスタに“１”をセットする。そして、ＬＢＩＳＴシーケンサ３は、ノーマルラッチテストに対応するシステムレジスタと、ＣＰＵ２のスリープに関するシステムレジスタとがともに“１”データを保持している場合に、ノーマルラッチテストを実行する。
【００５６】
次に、ＬＢＩＳＴシーケンサ３は、ＣＰＵ２内部のリテンションＳＲＡＭ１３をリテンションモードにする（ステップＳ１５）。電源制御回路６は、リテンションＳＲＡＭ１３の周辺回路部への電源供給を停止する。
【００５７】
次に、ＬＢＩＳＴシーケンサ３は、ＣＰＵ２内部のリテンションフリップフロップ２０をリテンションモードにする（ステップＳ１６）。より具体的には、リテンションフリップフロップ２０は、ノーマルラッチ２１のデータをバルーンラッチ２２に転送する。電源制御回路６は、ノーマルラッチ２１の電源供給を停止する。なお、ステップＳ１５とＳ１６の順序は任意に設定できる。ＬＢＩＳＴシーケンサ３は、ステップＳ１６を先に実行しても良く、ステップＳ１５とＳ１６を同時に実行しても良い。
【００５８】
次に、ＬＢＩＳＴシーケンサ３は、ノーマルラッチテストを実行する（ステップＳ１７）。より具体的には、まずＬＢＩＳＴシーケンサ３は、ノーマルラッチテストに対応するスキャンチェーンを構成する。次にＬＢＩＳＴシーケンサ３は、スキャンイネーブル信号ＳＥ１を“Ｈ”レベルにした後、スキャンデータＳＩ１をリテンションフリップフロップ２０（ノーマルラッチ２１）に送信し、ノーマルラッチテストを実行する。ノーマルラッチテスト後、ＬＢＩＳＴシーケンサ３は、出力データＤＯ１を確認し、故障が検知された場合には、その結果を、例えば、ＣＰＵ２（ＣＰＵ２が通知結果を判断できる場合（例えばマルチコアあるいはマルチクラスタ等））、システム管理ユニット４、あるいは外部デバイス１００等に通知する。
【００５９】
次に、ＬＢＩＳＴシーケンサ３は、システム管理ユニット４に、ノーマルラッチテスト終了を通知する（ステップＳ１８）。具体的には、ＬＢＩＳＴシーケンサ３は、信号ＮＬＦを一定時間“Ｈ”レベルにする。これにより、システム管理ユニット４内のノーマルラッチテスト終了に対応するシステムレジスタに例えば“１”がセットされる。
【００６０】
次に、システム管理ユニット４は、ＬＢＩＳＴ後処理として、まずＣＰＵ２をリセットする（ステップＳ１９）、より具体的には、ノーマルラッチテストに関係する回路（ノーマルラッチ２１等）のリセット信号を一定期間アサートし、その後、リセット信号を解除する。
【００６１】
次に、システム管理ユニット４は、ＣＰＵ２内のリテンションＳＲＡＭ１３をノーマルモードにする（ステップＳ２２）。電源制御回路６は、例えばシステム管理ユニット４の制御に応じて、リテンションＳＲＡＭ１３の周辺回路部に電源を供給する。
【００６２】
次に、システム管理ユニット４は、ＣＰＵ２内のリテンションフリップフロップ２０をノーマルモードにする（ステップＳ２１）。より具体的には、電源制御回路６は、例えばシステム管理ユニット４の制御に応じて、ノーマルラッチ２１に電源を供給する。リテンションフリップフロップ２０は、バルーンラッチ２２のデータをノーマルラッチ２１にリストアする。
【００６３】
次に、システム管理ユニット４は、ＣＰＵ２にスリープを解除させる（ステップＳ２２）。そして、システム管理ユニット４は、ＣＰＵ２がスリープを解除すると、ＣＰＵ２にノーマルラッチテストの終了を報告する。また、例えば、システム管理ユニット４は、ＬＢＩＳＴシーケンサ３内のＣＰＵ２のスリープに関するシステムレジスタを“０”にクリアする。これにより、ノーマルラッチテストの後処理が終了する。
【００６４】
１．２．２  バルーンラッチテストの流れ
次に、バルーンラッチテストの流れについて、図５を用いて説明する。なお、バルーンラッチテストでは、図４のステップＳ１２、Ｓ１４〜Ｓ１６Ｓ１９〜Ｓ２２で説明した処理は不要となる。
【００６５】
図５に示すように、ＣＰＵ２は、例えば通常動作モード開始から一定期間経過後、あるいは、前回のバルーンラッチテストから一定期間経過後、バルーンラッチテストの準備関数を実行する（ステップＳ１１’）。バルーンラッチテストは、タスクと並列に実行される。このため、バルーンラッチテストの場合、バリア命令及びＣＰＵ２のスリープは実行されない。
【００６６】
次に、ＣＰＵ２は、ＬＢＩＳＴシーケンサ３にバルーンラッチテストを実行するように命令する（ステップＳ１３’）。より具体的には、ＣＰＵ２は、信号ＢＬＴを一定時間“Ｈ”レベルにする。信号ＢＬＴが“Ｈ”レベルにされると、ＬＢＩＳＴシーケンサ３内において、バルーンラッチテストに対応するシステムレジスタに“１”がセットされる。なお、システム管理ユニット４も信号ＢＬＴを受信しても良く、この場合、システム管理ユニット４内のバルーンラッチテストに対応するシステムレジスタにも例えば“１”がセットされる。
【００６７】
次に、ＬＢＩＳＴシーケンサ３は、バルーンラッチテストを実行する（ステップＳ１７’）。より具体的には、まずＬＢＩＳＴシーケンサ３は、バルーンラッチテストに対応するスキャンチェーンを構成する。次にＬＢＩＳＴシーケンサ３は、スキャンイネーブル信号ＳＥ２を“Ｈ”レベルにした後、スキャンデータＳＩ２をリテンションフリップフロップ２０に送信し、テストを実行する。ＬＢＩＳＴシーケンサ３は、出力データＤＯ２を確認し、故障が検知された場合には、その結果をＣＰＵ２、システム管理ユニット４、あるいは外部デバイス１００に通知する。
【００６８】
次に、ＬＢＩＳＴシーケンサ３は、システム管理ユニット４に、バルーンラッチテスト終了を通知する（ステップＳ１８’）。具体的には、ＬＢＩＳＴシーケンサ３は、信号ＢＬＦを一定時間“Ｈ”レベルにする。これにより、システム管理ユニット４内のバルーンラッチテスト終了に対応するシステムレジスタに例えば“１”がセットされる。バルーンラッチテストの場合、システム管理ユニット４が実行するＬＢＩＳＴ後処理は不要であるため、例えばシステム管理ユニット４は、バルーンラッチテストが終了した旨をＣＰＵ２に報告する。なお、システム管理ユニット４への通知が省略されても、ＬＢＩＳＴシーケンサ３が、ＣＰＵ２にバルーンラッチテストの終了を報告しても良い。
【００６９】
１．３  ＬＢＩＳＴ実行のタイミングについて
次にＬＢＩＳＴ実行のタイミングについて、図６を用いて説明する。図６の例では、スキャンデータＳＩ１及びＳＩ２の送信期間を斜線部で示している。またノーマルラッチテストとバルーンラッチテストの繰り返しをＬＢＩＳＴサイクルと呼ぶ。例えば時刻ｔ１〜ｔ３の期間が、１回のＬＢＩＳＴサイクルに相当する。
【００７０】
図６に示すように、時刻ｔ１において、ＳｏＣ１は通常動作モードにある。通常動作モード期間、ノーマルラッチ２１及びバルーンラッチ２２は、電源電圧ＶＮＬ及びＶＢＬがそれぞれ供給されている。この状態において、ＣＰＵ２はノーマルラッチテストを開始する。なお、図６の例では、クロック信号ＣＬＫ１の周期がクロック信号ＣＬＫ２の周期より短くなっているが、クロック信号ＣＬＫ２の周期は、任意に設定可能である。例えばクロック信号ＣＬＫ１及びＣＬＫ２の周期は同じでも良い。また、クロック信号ＣＬＫ１とＣＬＫ２とは非同期であっても良い。また、クロック信号ＣＬＫ１は、ノーマルラッチテスト期間とバルーンラッチテスト期間でクロックが異なっていても良い。更に、図６の例では、クロック信号ＣＬＫ１の立ち上がりのタイミングでノーマルラッチテストが開始されているが、立ち下がりのタイミングで開始されても良く、任意に設定可能である。
【００７１】
時刻ｔ１〜ｔ２の期間（図６の（１）ノーマルラッチテスト期間）、ＣＰＵ２は、ノーマルラッチテストを実行する。より具体的には、リテンションフリップフロップ２０にはノーマルラッチテストを実行するため、クロック信号ＣＬＫ１（例えば１００ＭＨｚ）が入力される。なお、図６の例では、クロック信号ＣＬＫ２がオフ状態とされているが、リテンションフリップフロップ２０がリテンションモードに移行する間、リテンションフリップフロップ２０には、クロック信号ＣＬＫ２も入力される。リテンションモード移行後、クロック信号ＣＬＫ２は不要となる。リテンションフリップフロップ２０及びリテンションＳＲＡＭ１３がリテンションモードに移行した後、ＬＢＩＳＴシーケンサ３は、ノーマルラッチテストを開始する。ＬＢＩＳＴシーケンサ３は、スキャンイネーブル信号ＳＥ１を“Ｈ”レベルにし、スキャンデータＳＩ１をノーマルラッチ２１に送信する。
【００７２】
そして、ＬＢＩＳＴシーケンサ３は、ノーマルラッチテスト終了にともない、スキャンデータＳＩ１の送信を終了し、スキャンイネーブル信号ＳＥ１を“Ｌ”レベルにする。その後、システム管理ユニット４は、ノーマルラッチテストの後処理を実行する。より具体的には、システム管理ユニット４は、リセット信号ＲＥＳＥＴを一旦“Ｈ”レベルにし、ノーマルラッチ２１をリセットする。その後、システム管理ユニット４は、リテンションフリップフロップ２０及びリテンションＳＲＡＭ１３をノーマルモードに復帰させる。システム管理ユニット４は、ノーマルモードに復帰した旨をＣＰＵ２に報告し、ノーマルラッチテストの後処理が終了する。
【００７３】
時刻ｔ２〜ｔ３の期間（図６の（２）バルーンラッチテスト期間）、ＣＰＵ２は、いずれかのタイミングで、バルーンラッチテストを実行する。より具体的には、リテンションフリップフロップ２０には、タスク及びバルーンラッチテストを実行するため、クロック信号ＣＬＫ１（例えば１ＧＨｚ）及びＣＬＫ２(例えば１０ＭＨｚ)が入力される。ＬＢＩＳＴシーケンサ３は、バルーンラッチテストの間、スキャンイネーブル信号ＳＥ２を“Ｈ”レベルにし、スキャンデータＳＩ２をバルーンラッチ２２に送信する。
【００７４】
そして、ＬＢＩＳＴシーケンサ３は、バルーンラッチテスト終了にともない、スキャンイネーブル信号ＳＥ２を“Ｌ”レベルにし、スキャンデータＳＩ２の送信を終了する。
【００７５】
なお、図６の例では、時刻ｔ２〜ｔ３の期間の全体を通して、スキャンイネーブル信号ＳＥ２が“Ｈ”レベルとされ、クロック信号ＣＬＫ２及びスキャンデータＳＩ２が送信状態となっている。しかし、時刻ｔ２〜ｔ３の一部の期間（バルーンラッチテストが実行される期間）だけ、スキャンイネーブル信号ＳＥ２が“Ｈ”レベルとされ、クロック信号ＣＬＫ２及びスキャンデータＳＩ２が送信状態となっていれば良い。
【００７６】
時刻ｔ３〜ｔ４の期間、時刻ｔ１〜ｔ２の期間と同様に、ＣＰＵ２は、ノーマルラッチテストを実行する。
【００７７】
時刻ｔ４〜ｔ６の期間のいずれかのタイミングで、時刻ｔ２〜ｔ３の期間と同様に、ＣＰＵ２は、バルーンラッチテストを実行する。以下、本実施形態では、時刻ｔ５において、バルーンラッチテストが終了していない場合について説明する。
【００７８】
時刻ｔ５において、ＣＰＵ２は、低電力モードへの移行準備を開始する。但し、バルーンラッチテストが実行中であると、ノーマルラッチ２１のデータをバルーンラッチ２２に転送できない。このような場合、ＬＢＩＳＴシーケンサ３は、バルーンラッチテストが終了するまで、バルーンラッチテストを継続する。より具体的には、電源制御回路６は、引き続きノーマルラッチ２１に電源電圧ＶＮＬを供給する。システム管理ユニット４は、クロック信号ＣＬＫ２の送信を継続する。また、システム管理ユニット４は、ノーマルラッチ２１へのクロック信号ＣＬＫ１の送信を停止する（以下、「クロックゲーティング」と呼ぶ）。これにより、ノーマルラッチ２１は、バルーンラッチが終了するまで、ノーマルラッチ２１の出力信号を固定させられる（データが維持される）。
【００７９】
そして、バルーンラッチテストが完了すると、ＣＰＵ２は、リテンションフリップフロップ２０及びリテンションＳＲＡＭ１３をリテンションモードに移行させる。システム管理ユニット４は、クロック信号ＣＬＫ２の送信を停止し、バルーンラッチ２２の出力信号を固定させる。
【００８０】
ソフトウエア上では、例えば予め設定された低電力モードへの移行準備期間後、実際には低電力モードに移行していなくても、低電力モードに移行したとみなされる。従って、ソフトウエアが低電力モードに移行したとみなしてから、実際にハードウエアが低電力モードに移行するまでの期間は、疑似的な低電力モード状態にあると言える。すなわち、ソフトウエアからは見えないように、ハードウエアが処理を進める。よって、ＳｏＣ１の状態は、低電力モード移行準備開始時にバルーンラッチテストを実行している場合、通常動作モード→低電力モード移行準備→疑似的低電力モード→低電力モードと移行する。
【００８１】
時刻ｔ６において、ＳｏＣ１は、低電力モードに移行する。より具体的には、電源制御回路６は、ノーマルラッチ２１及びリテンションＳＲＡＭ１３の周辺回路部への電源供給を停止する（以下、「パワーゲーティング」と呼ぶ）。
【００８２】
時刻ｔ６〜ｔ７の期間、ＳｏＣ１は、低電力モードを維持する。
【００８３】
時刻ｔ７において、例えば外部デバイス１００から信号が入力されると、電源制御回路６は、通常動作モードへの復帰準備を開始する。より具体的には、電源制御回路６は、ノーマルラッチ２１及びリテンションＳＲＡＭ１３の周辺回路部等への電源供給を再開する。システム管理ユニット４は、リテンションフリップフロップ２０にクロック信号ＣＬＫ１を送信する。ＣＰＵ２は、リテンションフリップフロップ２０及びリテンションＳＲＡＭ１３をノーマルモードに復帰させる。
【００８４】
時刻ｔ８において、ＳｏＣ１は、通常動作モードに復帰する。すると、ＣＰＵ２は、時刻ｔ８〜ｔ９の期間、タスクを実行する。
【００８５】
時刻ｔ９〜ｔ１０の期間、時刻ｔ１〜ｔ２の期間と同様に、ＣＰＵ２は、ノーマルラッチテストを実行する。
【００８６】
時刻ｔ１０〜ｔ１１の期間のいずれかのタイミングで、時刻ｔ２〜ｔ３の期間と同様に、ＣＰＵ２は、バルーンラッチテストを実行する。
【００８７】
時刻ｔ１１において、ＣＰＵ２は、低電力モードへの移行準備を開始する。このとき、ＬＢＩＳＴは実行されていないため、ＣＰＵ２は、クロックゲーティング後、リテンションフリップフロップ２０及びリテンションＳＲＡＭ１３をリテンションモードに移行させる。
【００８８】
時刻ｔ１２において、ＳｏＣ１は、パワーゲーティングを行い低電力モードに移行する。
【００８９】
時刻ｔ１２〜ｔ１３の期間、時刻ｔ６〜ｔ７の期間と同様に、ＳｏＣ１は、低電力モードを維持する。
【００９０】
時刻ｔ１３〜１４の期間、時刻ｔ７〜ｔ８の期間と同様に、ＳｏＣ１は、通常動作モードへの復帰準備を開始する。
【００９１】
時刻ｔ１４において、時刻ｔ８と同様に、ＳｏＣ１は、通常動作モードに復帰する。
【００９２】
１．４  本実施形態に係る効果について
本実施形態に係る構成であれば、処理能力を向上することができる。以下、本効果につき説明する。
【００９３】
例えばＡＳＩＬ（automotive safety integrity level）に対応した半導体装置では、ＡＳＩＬのレベル（例えばＡＳＩＬ−ＢあるいはＡＳＩＬ−Ｄ）に応じて対象回路のフリップフロップの故障検出率が決められている。このため、半導体装置では、故障検出率を満足させるために、通常動作状態において、定期的にＬＢＩＳＴが実行される場合が多い。ＬＢＩＳＴを実行するとＣＰＵ内部のレジスタの状態（フリップフロップの値）が壊れてしまう。このため、ＬＢＩＳＴを実行しても半導体装置として問題が生じないように、ＬＢＩＳＴの前処理と後処理とが必要となる。例えばＬＢＩＳＴの前処理として、レジスタの状態やキャッシュの情報をメモリへ退避させる必要がある。またＬＢＩＳＴの後処理として、ＣＰＵの再立ち上げ（初期化シーケンスの実行）あるいは、メモリに退避させた情報を復元した後、ＣＰＵをある状態から復帰させる処理が必要となる。
【００９４】
ＬＢＩＳＴの前処理及び後処理の処理時間が長くなると、ＬＢＩＳＴの実行周期に対して、１周期中に半導体装置がタスクを実行できる時間の割合が低くなる。このため、半導体装置の処理能力が低下する。例えば故障検出率向上のためにＬＢＩＳＴの頻度を増加する、ＬＢＩＳＴに関係するクロック信号の周波数を高くする、あるいは半導体装置の高集積化にともないＬＢＩＳＴのテストパターンを増加すると、処理能力の低下はより顕著となる。
【００９５】
これに対し、本実施形態に係る構成では、リテンションフリップフロップ２０及びリテンションＳＲＡＭ１３を含むＣＰＵ２を含む。これにより、レジスタあるいはキャッシュ１１の情報をメモリ５に退避させる必要がなくなる。また、ＣＰＵ２の再立ち上げが不要となり割り込み復帰が可能となる。すなわち、ＣＰＵ２は、ＬＢＩＳＴ実行前後の命令を復帰開始できるため、ＬＢＩＳＴの前処理及び後処理の時間を短縮させることができる。すなわち、ＬＢＩＳＴの実行周期に対して、タスクを実行させる時間の割合を高くさせることができる。よって、半導体装置の処理能力を向上させることができる。
【００９６】
更に、タスクを実行できる時間の割合が増えるため、処理時間が比較的長いタスクも実行できるようになる。よって、半導体装置の開発の自由度を向上できる。
【００９７】
更に、従来はＣＰＵをリセット（再立ち上げ）する必要があるため、リセットが実行できる回路の単位でＬＢＩＳＴを実行する必要があった。これに対し、本実施形態に係る構成では、リセットが不要となるため、ＬＢＩＳＴを実行する回路の単位を細分化でき、ＬＢＩＳＴの故障検出パターン、テストのアルゴリズムを最適化することができる。これによりＬＢＩＳＴの処理時間を低減できる。よって、半導体装置の処理能力を向上できる。
【００９８】
更に、本実施形態に係る半導体装置に含まれるリテンションフリップフロップ２０は、ノーマルラッチ２１とバルーンラッチ２２とを別々にテストすることができる。バルーンラッチ２２もテストできるため、リテンションフリップフロップ２０を用いることによる半導体装置の故障検出率の低下を抑制できる。
【００９９】
更に、リテンションフリップフロップ２０及びリテンションＳＲＡＭ１３を用いることにより、低消費電力動作が可能となる。よって半導体装置の消費電力を低減できる。
【０１００】
更に、ノーマルラッチ２１とバルーンラッチ２２とは異なる期間にテストでき、バルーンラッチ２２をテストしている間、ノーマルラッチ２１は通常動作が可能である。すなわち、バルーンラッチテストは、タスクの実行と並列に行うことができる。よって、バルーンラッチテストにより、タスクが実行できる時間の割合が低下することを抑制できる。
【０１０１】
更に、本実施形態に係る構成では、ＬＢＩＳＴシーケンサ３を含む。よって、ＬＢＩＳＴシーケンサ３を用いることにより、ＬＢＩＳＴをハードウエア制御できる。ソフトウエアによるＬＢＩＳＴの制御が不要となるため、ＣＰＵ２における作業量を軽減できる。よって半導体装置の処理速度を向上できる。
【０１０２】
更に、ＬＢＩＳＴに関するプログラムを簡略化することができ、ソフトウエアの開発費及び開発工期を短縮できる。
【０１０３】
２．第２実施形態
次に、第２実施形態について説明する。第２実施形態では、ＣＰＵがマルチコアであり、且つ対称型マルチプロセッシング（ＳＭＰ（symmetric multi processing））に対応する場合について説明する。対称型マルチプロセッシングでは、複数のコアに処理を分散させるため、それぞれのコアに対応するキャッシュ１１が一貫性を保ち、１つのメモリ空間を共有する。
【０１０４】
２．１  ノーマルラッチテストの流れ
ノーマルラッチテストの流れについて、図７を用いて説明する。図７の例は、ＣＰＵ２の１つのコアに対してノーマルラッチテストを実行する場合を示しているが、ステップＳ１１、Ｓ１２、Ｓ１３〜Ｓ２２における各処理は、第１実施形態の図４と同じである。以下では、第１実施形態の図４と異なる点についてのみ説明する。
【０１０５】
図７に示すように、ＣＰＵ２は、バリア命令実行後（ステップＳ１２）、キャッシュ１１をクリーンにする（ステップＳ２３）。より具体的には、ＣＰＵ２は、メモリ５の情報を一時的にキャッシュ１１に読み出し、タスクを実行する。このため、キャッシュ１１のデータとメモリ５のデータとで内容が異なる場合がある。対称型マルチプロセッシングでは、複数のコアに処理を分散させる。このため、１つのコアがＬＢＩＳＴを実行する際、対応するキャッシュ１１のデータとメモリ５のデータとが異なる状態、あるいはＬＢＩＳＴ対象のコアしか保持していないデータがキャッシュ１１にある状態だと、他のコアを用いたタスクの実行に問題が生じる場合がある。従って、ＣＰＵ２は、キャッシュ１１のデータをメモリ５に転送して、キャッシュ１１のデータとメモリ５のデータとを整合させる「クリーン」と呼ばれる処理を実行する。なお、ＣＰＵ２は、クリーン実行後、あるいはクリーン実行と同時に、「インバリデーション」（invalidation）と呼ばれるキャッシュ１１のデータの無効化処理を実行しても良い。
【０１０６】
以降の処理は、図４と同じである。なお、２つ以上のコアに対してＬＢＩＳＴを同時に実行しても良い。
【０１０７】
２．２  本実施形態に係る効果について
本実施形態に係る構成であれば、第１実施形態と同様の効果を得ることができる。
【０１０８】
３．変形例等
上記実施形態に係る半導体装置は、第１及び第２動作モード(通常動作モード及び低電力モード）)を有する。半導体装置は、第１動作モード時に動作可能であり、第２動作モード時に電源を遮断される第１ラッチ(21@図2)と、第１ラッチの電源が遮断されている間、第１ラッチのデータを保持可能な第２ラッチ(22@図2)とを含む第１フリップフロップ(20@図2)を含む。第１ラッチは、第１期間に実行される第１テスト(ノーマルラッチテスト)に用いられる。第２ラッチは、第１期間に第１ラッチのデータを保持し、第１期間((1)@図6)と異なる第２期間((2)@図6)に実行される第２テスト（バルーンラッチテスト）に用いられる。
【０１０９】
例えば上記実施形態におけるＣＰＵは、サブシステムとしてマルチコアあるいはマルチクラスタ構成も含む。または、ＣＰＵは、キャッシュの一貫性を保つ対称型マルチプロセッシング、あるいはキャッシュの一貫性を持たない非対象マルチプロセッシングのどちらかもしくは両方で動作している場合を含む。更に、ＣＰＵに限定されず、例えばＧＰＵ（graphics processing unit）あるいはＤＳＰ（digital signal processor）等のハードウエアエンジンであっても良い。
【０１１０】
更に、ＳｏＣに限定されず、ＬＢＩＳＴ対象回路を有する半導体装置において適用できる。
【０１１１】
更に、上記実施形態における「接続」とは、間に例えばトランジスタあるいは抵抗等、他の何かを介在させて間接的に接続されている状態も含む。
【０１１２】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると同様に、特許請求の範囲に記載された発明とその均等の範囲に含まれるものである。
【符号の説明】
【０１１３】
１…ＳｏＣ、２…ＣＰＵ、３…ＬＢＩＳＴシーケンサ、４…システム管理ユニット、５メモリ、６…電源制御回路、１４、１５…システムレジスタ、２０…リテンションフリップフロップ、２１…ノーマルラッチ、２２…バルーンラッチ、１００…外部デバイス。
【図１】
2018044910.tif 000003
【図２】
2018044910.tif 000004
【図３】
2018044910.tif 000005
【図４】
2018044910.tif 000006
【図５】
2018044910.tif 000007
【図６】
2018044910.tif 000008
【図７】
2018044910.tif 000009