(57)【要約】【課題】リテンションフリップフロップの保持部の保持性能、及びリテンションフリップフロップの退避動作及び復元動作に不良あるいは不具合がないか、を診断することができる半導体装置を提供する。【解決手段】実施形態の半導体装置１は、リテンションフリップフロップを含む複数のスキャンチェーンＳＣと、リテンションフリップフロップＲＦの保持部ＢＬへの退避を行ったデータを保持部ＢＬからリストアしてデータの復元を行い、データの復元の後に、退避前の複数のスキャンチェーンＳＣにおいてスキャンシフトして得られた出力データ列の期待値と、復元後の複数のスキャンチェーンＳＣのデータをスキャンシフトして得られた出力データ列の値とが一致するか否かの比較を行うことによりリテンションフリップフロップＲＦの診断を行う制御部２と、を有する。【選択図】図１
2018155707.tif 000002
【特許請求の範囲】
【請求項１】
リテンションフリップフロップを含む少なくとも１つのスキャンチェーンと、
前記リテンションフリップフロップの保持部への退避を行ったデータを前記保持部からリストアして前記データの復元を行い、前記データの復元の後に、前記退避前の前記少なくとも１つのスキャンチェーンにおいてスキャンシフトして得られた第１の出力データ列の第１の値と、前記復元後の前記少なくとも１つのスキャンチェーンのデータをスキャンシフトして得られた第２の出力データ列の第２の値とが一致するか否かの比較を行うことにより前記リテンションフリップフロップの診断を行う診断回路と、
を有する半導体集積回路。
【請求項２】
前記少なくとも１つのスキャンチェーンは、複数あり、
前記データは、第１の所定値であり、
前記複数のスキャンチェーンへの入力を、前記第１の所定値に固定するように切り替える切り替え回路を有し、
前記第１の値は、前記切り替え回路により前記第１の所定値を前記複数のスキャンチェーンへの入力に設定した後に、前記第１の所定値を前記複数のスキャンチェーンにおいてスキャンシフトして得られた前記第１の出力データ列の期待値であり、
前記第２の値は、前記保持部からリストアして復元された前記第１の所定値を前記複数のスキャンチェーンに入力してスキャンシフトして得られた前記第２の出力データ列の値である、請求項１に記載の半導体集積回路。
【請求項３】
前記第１の所定値は、「０」又は「１」の値である請求項２に記載の半導体集積回路。
【請求項４】
前記診断回路は、前記切り替え回路により前記複数のスキャンチェーンへの入力を前記「０」及び前記「１」の一方に固定したときの前記第１の値と前記第２の値とが一致するか否かの比較を行うことにより前記リテンションフリップフロップの診断を行った後に、前記切り替え回路により前記複数のスキャンチェーンへの入力を前記「０」及び前記「１」の他方に固定したときの前記第１の値と前記第２の値とが一致するか否かの比較を行うことにより前記リテンションフリップフロップの診断を行う請求項３に記載の半導体集積回路。
【請求項５】
前記半導体集積回路のロジック部の診断を行うロジックＢＩＳＴコントローラを有し、
前記少なくとも１つのスキャンチェーンには、前記ロジック部の診断のためのテストパターンが入力可能であり、
前記ロジックＢＩＳＴコントローラは、前記テストパターンに基づいて前記ロジック部の診断を行う請求項１に記載の半導体集積回路。
【請求項６】
前記少なくとも１つのスキャンチェーンは、複数あり、
各スキャンチェーンの入力を、前記各スキャンチェーンの前記第１の出力データ列に固定するように切り替える切り替え回路を有し、
前記第１の値は、前記切り替え回路から入力された前記複数のスキャンチェーンの前記第１の出力データ列をスキャンシフトして得られた値であり、
前記第２の値は、前記保持部からリストアして復元されたデータをスキャンシフトして得られた前記第２の出力データ列の値である、請求項１に記載の半導体集積回路。
【請求項７】
前記切り替え回路は、前記複数のスキャンチェーンへの入力を、前記第１の所定値又は前記各複数のスキャンチェーンの前記第１の出力データ列に固定するように切り替えることができ、
前記切り替え回路が前記複数のスキャンチェーンへの入力を前記第１の所定値に固定したときは、前記第１の値は、前記切り替え回路により前記第１の所定値を前記複数のスキャンチェーンへの入力に設定した後に、前記第１の所定値をスキャンシフトして得られた前記第１の出力データ列の期待値であり、前記第２の値は、前記保持部からリストアして復元された前記第１の所定値をスキャンシフトして得られた前記第２の出力データ列の値であり、
前記切り替え回路が前記複数のスキャンチェーンへの入力を前記各スキャンチェーンの前記第１の出力データ列に固定したときは、前記第１の値は、前記切り替え回路により前記各スキャンチェーンの前記第１の出力データ列をスキャンシフトして得られる値であり、前記第２の値は、前記保持部からリストアして復元されたデータをスキャンシフトして得られた前記第２の出力データ列の値である、請求項２に記載の半導体集積回路。
【請求項８】
非リテンションフリップフロップのみを含む非リテンションフリップフロップスキャンチェーンと、
前記非リテンションフリップフロップスキャンチェーンのデータをスキャンシフトして得られた第３の出力データ列を第２の所定値に切り替える第２の切り替え回路と、
を有し、
前記第１の値及び前記第２の値は、前記非リテンションフリップフロップスキャンチェーンにおいてスキャンシフトして得られた前記第３の出力データ列を含むデータ列から得られる、請求項１に記載の半導体集積回路。
【請求項９】
前記少なくとも１つのスキャンチェーンは、非リテンションフリップフロップを含み、
前記非リテンションフリップフロップの出力を第２の所定値に切り替える第２の切り替え回路を有する、請求項１に記載の半導体集積回路。
【請求項１０】
前記少なくとも１つのスキャンチェーンは、複数あり、
前記診断回路は、前記複数のスキャンチェーンの中で、最大チェーン長に満たないスキャンチェーンに対して、前記最大チェーン長と、前記最大チェーン長に満たないスキャンチェーンのチェーン長との差の分だけスキャンシフトのためのシフトクロックをマスクするマスク回路を有する、請求項１に記載の半導体集積回路。
【請求項１１】
前記少なくとも１つのスキャンチェーンは、複数あり、
前記複数のスキャンチェーンの中で最大チェーン長に満たないスキャンチェーンに設けられ、前記最大チェーン長と、前記最大チェーン長に満たないスキャンチェーンのチェーン長とを等しくする１又は２以上のダミーのフリップフロップを有する、請求項１に記載の半導体集積回路。
【請求項１２】
リテンションフリップフロップを含む少なくとも１つのスキャンチェーンを有する半導体集積回路の診断方法であって、
前記少なくとも１つのスキャンチェーンの保持部への退避を行ったデータを前記保持部からリストアして前記データの復元を行い、
前記データの復元の後に、前記退避前の前記少なくとも１つのスキャンチェーンにおいてスキャンシフトして得られた第１の出力データ列の第１の値と、前記復元後の前記少なくとも１つのスキャンチェーンのデータをスキャンシフトして得られた第２の出力データ列の第２の値とが一致するか否かの比較を行うことにより前記リテンションフリップフロップの診断を行う、
半導体集積回路の診断方法。
【請求項１３】
前記少なくとも１つのスキャンチェーンは、複数あり、
前記データは、第１の所定値であり、
前記半導体集積回路は、前記複数のスキャンチェーンへの入力を、前記第１の所定値に固定するように切り替える切り替え回路を有し、
前記第１の値は、前記切り替え回路により前記第１の所定値を前記複数のスキャンチェーンへの入力に設定した後に、前記第１の所定値を前記複数のスキャンチェーンにおいてスキャンシフトして得られた前記第１の出力データ列の期待値であり、
前記第２の値は、前記保持部からリストアして復元された前記第１の所定値が前記複数のスキャンチェーンに入力されてスキャンシフトして得られた前記第２の出力データ列の値である、請求項１２に記載の半導体集積回路の診断方法。
【請求項１４】
前記第１の所定値は、「０」又は「１」の値である請求項１３に記載の半導体集積回路の診断方法。
【請求項１５】
前記切り替え回路により前記複数のスキャンチェーンへの入力を前記「０」及び前記「１」の一方に固定したときの前記第１の値と前記第２の値とが一致するか否かの比較を行うことにより前記リテンションフリップフロップの診断を行った後に、前記切り替え回路により前記複数のスキャンチェーンへの入力を前記「０」及び前記「１」の他方に固定したときの前記第１の値と前記第２の値とが一致するか否かの比較を行うことにより前記リテンションフリップフロップの診断を行う、請求項１４に記載の半導体集積回路の診断方法。
【請求項１６】
前記少なくとも１つのスキャンチェーンは、複数あり、
前記半導体集積回路は、各スキャンチェーンの入力を、前記各スキャンチェーンの前記第１の出力データ列に固定するように切り替える切り替え回路を有し、
前記第１の値は、前記切り替え回路により前記複数のスキャンチェーンの前記第１の出力データ列が前記複数のスキャンチェーンに入力されてスキャンシフトして得られる値であり、
前記第２の値は、前記保持部からリストアして復元されたデータが前記複数のスキャンチェーンに入力されてスキャンシフトして得られた前記第２の出力データ列の値である、請求項１２に記載の半導体集積回路の診断方法。
【請求項１７】
前記切り替え回路は、前記複数のスキャンチェーンへの入力を、前記第１の所定値又は前記各複数のスキャンチェーンの前記第１の出力データ列に固定するようにも切り替えることができ、
前記切り替え回路が前記複数のスキャンチェーンへの入力を前記第１の所定値に固定したときは、前記第１の値は、前記切り替え回路により前記第１の所定値を前記複数のスキャンチェーンへの入力に設定した後に、前記第１の所定値を前記複数のスキャンチェーンにおいてスキャンシフトして得られた前記第１の出力データ列の期待値であり、前記第２の値は、前記保持部からリストアして復元された前記第１の所定値が前記複数のスキャンチェーンに入力されてスキャンシフトして得られた前記第２の出力データ列の値であり、
前記切り替え回路が前記複数のスキャンチェーンへの入力を前記各スキャンチェーンの前記第１の出力データ列に固定したときは、前記第１の値は、前記切り替え回路により前記各スキャンチェーンの前記第１の出力データ列が前記複数のスキャンチェーンに入力されてスキャンシフトして得られる値であり、前記第２の値は、前記保持部からリストアして復元されたデータが前記複数のスキャンチェーンに入力されてスキャンシフトして得られた前記第２の出力データ列の値である、請求項１３に記載の半導体集積回路の診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体装置及び半導体集積回路の診断方法に関する。
【背景技術】
【０００２】
従来より、論理回路に対する組み込み自己検査（ＢＩＳＴ：Ｂｕｉｌｔ−ｉｎ  Ｓｅｌｆ  Ｔｅｓｔ。以下、ロジックＢＩＳＴという）を利用した半導体装置の診断技術が広く用いられている。ロジックＢＩＳＴは、半導体装置の起動時の初期診断だけでなく、半導体装置の動作中の常時診断にも実行される場合がある。
【０００３】
また、半導体装置内の各データの復元のためにリテンションフリップフロップを用いる技術も提案されている。  
リテンションフリップフロップは、主要部と保持部とを有し、電源遮断前に保持部にデータを退避させ、電源復帰後、その保持部の退避データにより主要部のデータを復元することができる。
【０００４】
しかし、半導体装置の診断のためにリテンションフリップフロップを利用する場合、保持部の保持性能、リテンションフリップフロップの退避動作及び復元動作に不良あるいは不具合があると、データの復元が正しく行われない。従来、このような保持部の保持性能、リテンションフリップフロップの退避動作及び復元動作を診断する方法は、提案されていない。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２８２４１１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
そこで、実施形態は、リテンションフリップフロップの保持部の保持性能、及びリテンションフリップフロップの退避動作及び復元動作に不良あるいは不具合がないか、を診断することができる半導体装置及び半導体集積回路の診断方法を提供することを目的とする。
【課題を解決するための手段】
【０００７】
実施形態の半導体集積回路は、リテンションフリップフロップを含む少なくとも１つのスキャンチェーンと、前記リテンションフリップフロップの保持部への退避を行ったデータを前記保持部からリストアして前記データの復元を行い、前記データの復元の後に、前記退避前の前記少なくとも１つのスキャンチェーンにおいてスキャンシフトして得られた第１の出力データ列の第１の値と、前記復元後の前記少なくとも１つのスキャンチェーンのデータをスキャンシフトして得られた第２の出力データ列の第２の値とが一致するか否かの比較を行うことにより前記リテンションフリップフロップの診断を行う診断回路と、を有する半導体集積回路が提供される。
【図面の簡単な説明】
【０００８】
【図１】第１の実施形態に係わる半導体装置の回路ブロック図である。
【図２】第１の実施形態に係わる、リテンションフリップフロップＲＦの初期診断の処理の流れの例を示すフローチャートである。
【図３】トグルフリップフロップを用いたスイッチの構成例を示す図である。
【図４】第２の実施形態に係わる半導体装置の回路ブロック図である。
【図５】第２の実施形態に係わる、リテンションフリップフロップＲＦの常時診断の処理の流れの例を示すフローチャートである。
【図５Ａ】リテンションフリップフロップＲＦの常時診断の処理の流れの他の例を示すフローチャートである。
【図６】第３の実施形態に係わる半導体装置の回路ブロック図である。
【図７】変形例１に係わる半導体装置の回路ブロック図である。
【図８】変形例２に係わるスキャンチェーンＳＣの一部の回路図である。
【図９】変形例３の半導体装置の回路ブロック図である。
【発明を実施するための形態】
【０００９】
以下、図面を参照して実施形態を説明する。
（第１の実施形態）
（構成）
図１は、第１の実施形態に係わる半導体装置の回路ブロック図である。
【００１０】
半導体装置１は、ロジック部を構成する複数の組合せ回路ＣＣを含む半導体集積回路であり、半導体装置１は、ロジックＢＩＳＴ機能を有する。  
半導体装置１は、複数の組合せ回路ＣＣに加えて、制御部２と、パターン発生回路（ＰＲＰＧ：Ｐｓｅｕｄｏ  Ｒａｎｄｏｍ  Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｏｒ）３と、伸長器（Ｄｅｃｏｍｐｒｅｓｓｏｒ）４と、選択器５と、複数のスキャンチェーン６と、圧縮器（Ｃｏｍｐｒｅｓｓｏｒ）７と、多入力シグネチャレジスタ（ＭＩＳＲ：Ｍｕｌｔｉｐｌｅ  Ｉｎｐｕｔ  Ｓｉｇｎａｔｕｒｅ  Ｒｅｇｉｓｔｅｒ。以下、ＭＩＳＲと略す）８とを有する。制御部２は、ロジックＢＩＳＴのための、ロジックＢＩＳＴコントローラ２ａを有する。
【００１１】
さらに、制御部２は、半導体チップである半導体装置１への電源の供給を制御するための電源スイッチ９を制御するための電源制御信号ＰＣＳを出力可能となっている。  
半導体装置１には、ロジックＢＩＳＴのための複数のスキャンチェーン６が形成されている。スキャンチェーン６は、１つでもよい。
【００１２】
図１では、複数のスキャンチェーン６は、ｍ個（ｍは、正の整数）のスキャンチェーンＳＣ１〜ＳＣｍを有している。以下、ｍ個のスキャンチェーンＳＣ１〜ＳＣｍ中の、任意の１つのスキャンチェーン若しくは全てのスキャンチェーンを指すときは、スキャンチェーンＳＣという。ここでは、各スキャンチェーンＳＣ１〜ＳＣｍは、ロジック部中の複数のリテンションフリップフロップＲＦを縦続接続して形成されたスキャンシフト経路を構成する。各リテンションフリップフロップＲＦは、組合せ回路ＣＣ間に配置され、ロジック部の内部状態を保持可能である。
【００１３】
リテンションフリップフロップＲＦには、種々の実現方法があるが、例えば、各リテンションフリップフロップＲＦは、主要部ＭＵと保持部ＢＬとを備える構成により実現される。高速動作が要求される主要部ＭＵは、閾値電圧の低いトランジスタによるフリップフロップを備える。保持部ＢＬは、閾値電圧の高いトランジスタによるフリップフロップを備える。主要部ＭＵのフリップフロップは、閾値電圧が低いため、高速に動作するがリーク電流が大きい。保持部ＢＬのフリップフロップは、動作は遅いが、小さいリーク電流で内部状態を保持する。
【００１４】
主要部ＭＵは、Ｄ入力、シフトイン（ＳＩ）入力、シフトイネーブル（ＳＥ）入力、クロック（ＣＬＫ）入力、ストア（Ｓ）入力及びリストア（Ｒ）入力の６つの入力と、Ｑ出力とを有する。
【００１５】
各スキャンチェーンＳＣ１〜ＳＣｍでは、リテンションフリップフロップＲＦのＱ出力が、次のリテンションフリップフロップＲＦのシフトイン（ＳＩ）入力に供給されるように、複数のリテンションフリップフロップＲＦが縦続接続されている。
【００１６】
Ｄ入力は、組合せ回路ＣＣの出力であり、クロック（ＣＬＫ）入力に応じて保持されて、Ｑ出力として出力される。  
シフトイン（ＳＩ）入力は、シフトイネーブル（ＳＥ）入力に応じて保持されて、Ｑ出力に出力される。
【００１７】
リテンションフリップフロップＲＦは、ストア（Ｓ）入力に応じて、Ｑ出力を保持部ＢＬに保持する。  
リテンションフリップフロップＲＦは、リストア（Ｒ）入力に応じて、保持部ＢＬに保持されたデータを読み出して保持してＱ出力として出力する。
【００１８】
制御部２は、論理回路により構成され、半導体装置１の起動時のロジック部の初期診断処理及び複数のリテンションフリップフロップＲＦの保持部ＢＬの保持性能などの不良等の有無を確認するリテンションフリップフロップ診断処理を実行するコントローラである。ロジック部の初期診断は、ロジックＢＩＳＴコントローラ２ａにより行われる。
【００１９】
なお、制御部２は、中央処理装置（ＣＰＵ）と、ＲＯＭと、ＲＡＭとにより構成し、ＲＯＭに格納されたプログラムをＣＰＵに実行させることにより、ロジック部の診断処理及び複数のリテンションフリップフロップＲＦの診断処理を実行するようにしてもよい。
【００２０】
パターン発生回路３は、テストパターンとして擬似ランダムパターンを発生する擬似ランダムパターン発生回路（ＰＲＰＧ）である。擬似ランダムパターンは、擬似乱数データである。伸長器４は、擬似乱数データを伸長して、選択器５に供給する。
【００２１】
選択器５は、複数のスイッチＳＷ１〜ＳＷｍを含む。各スイッチＳＷ１〜ＳＷｍは、複数のスキャンチェーンＳＣ１〜ＳＣｍに対応して設けられ、各スキャンチェーンＳＣ１〜ＳＣｍのテストパターンの入力部に設けられている。
【００２２】
各スイッチＳＷ１〜ＳＷｍは、パターン発生回路３からの信号、「０」又は「１」のいずれかを選択してスキャンチェーンＳＣへ出力する回路である。各スイッチＳＷ１〜ＳＷｍがいずれの信号を選択して出力するかは、制御部２からの選択信号ＳＳに基づいて決定される。すなわち、各スイッチＳＷ１〜ＳＷｍは、複数のスキャンチェーンＳＣへの入力を、所定値である、１又は０に固定するように切り替える切り替え回路を構成する。
【００２３】
後述するように、ロジック部の初期診断時には、各スイッチＳＷ１〜ＳＷｍでは、パターン発生回路３からの信号が選択されてスキャンチェーンＳＣへ出力される。各スイッチＳＷ１〜ＳＷｍは、リテンションフリップフロップＲＦの診断処理時には、固定値である「０」又は「１」を選択してスキャンチェーンＳＣの入力部へ供給する。
【００２４】
圧縮器７は、複数のスキャンチェーンＳＣ１〜ＳＣｍの出力データを圧縮して、ＭＩＳＲ８に出力する。  
ＭＩＳＲ８は、圧縮器７の出力を格納する複数のビット幅のデータを保持可能なレジスタを有する出力応答圧縮器である。ここでは、各リテンションフリップフロップＲＦの値が「０」であるときにスキャンシフトした場合のＭＩＳＲ８の値（固定値）、及び各リテンションフリップフロップＲＦの値が「１」であるときにスキャンシフトした場合のＭＩＳＲ８の値（固定値）は計算により求まるので、制御部２は、これら２つの固定値を期待値として回路中に予め保持している。
【００２５】
制御部２は、リテンションフリップフロップＲＦの診断処理時には、ＭＩＳＲ８の出力データと、これらの期待値とを比較して、半導体装置１に故障がないかを判定する。
（作用）
はじめに、ロジック部の初期診断について説明する。
【００２６】
制御部２は、ロジック部の初期診断時、ロジックＢＩＳＴコントローラ２ａ、パターン発生回路３及び選択器５を制御して、その初期診断を実行し、ＭＩＳＲ８の出力と、ロジック部の初期診断時の期待値とを比較して、半導体装置１の診断を行う。診断結果は、制御部２が、半導体装置１内の他のＣＰＵあるいは外部へ出力される。各スキャンチェーンＳＣには、ロジック部の診断のためのテストパターンが選択器５から入力され、ロジックＢＩＳＴコントローラ２ａは、テストパターンに基づいてロジック部の診断を行う。
【００２７】
具体的には、パターン発生回路３からのテストパターンデータが、スキャンシフト経路を経由してロジック部の複数のリテンションフリップフロップＲＦにセットされる。次に、ロジック部から複数のリテンションフリップフロップＲＦにデータを与えた後に、スキャンシフト経路を経由してテストパターンを複数のリテンションフリップフロップＲＦにセットし、ＭＩＳＲ８の値が所定の期待値である否かにより、ロジック部の初期診断が行われる。
【００２８】
次に、半導体装置１のリテンションフリップフロップＲＦの診断処理について説明する。図２は、リテンションフリップフロップＲＦの初期診断の処理の流れの例を示すフローチャートである。  
制御部２は、リテンションフリップフロップＲＦの診断時、選択器５及び複数のスキャンチェーン６の動作を制御する。
【００２９】
半導体装置１は、上述したロジックＢＩＳＴの初期診断の実行後若しくは実施前に、以下に説明する各リテンションフリップフロップＲＦの初期診断を実行する。ここでは、リテンションフリップフロップＲＦの保持部ＢＬの保持性能、及びリテンションフリップフロップＲＦの退避動作及び復元動作が正しく機能しているか、の診断が行われる。
【００３０】
上述したように、制御部２は、一般回路であるロジック部に対するロジックＢＩＳＴを実行するときは、パターン発生回路３及び伸長器４からの信号を選択して各スキャンチェーン６に供給するように、各スイッチＳＷ１〜ＳＷｍを切り替える選択信号ＳＳを選択器５へ出力する。
【００３１】
これに対して、制御部２は、リテンションフリップフロップＲＦの診断時には、「０」または「１」の固定値を選択して各スキャンチェーン６に供給するように、各スイッチＳＷ１〜ＳＷｍを切り替える選択信号ＳＳを選択器５へ出力する。
【００３２】
ここでは、制御部２が各リテンションフリップフロップＲＦの保持部ＢＬの保持性能、各リテンションフリップフロップＲＦの退避動作及び復元動作を診断するとき、制御部２は、はじめに各スイッチＳＷの出力を「１」に固定する選択信号ＳＳを各スイッチＳＷへ出力する（ステップ（以下、Ｓと略す）１）。
【００３３】
制御部２は、各スキャンチェーンＳＣの各リテンションフリップフロップＲＦが「１」を保持するように、シフトイネーブル（ＳＥ）信号を各リテンションフリップフロップＲＦに所定回数だけ供給してスキャンシフトを実行する（Ｓ２）。所定回数は、各スキャンチェーンＳＣ内の各リテンションフリップフロップＲＦに「１」を保持するのに必要な回数である。Ｓ２の処理により、各スイッチＳＷには、「１」が保持される。
【００３４】
制御部２は、各リテンションフリップフロップＲＦに、ストア（Ｓ）信号を供給して、保持部ＢＬにＱ出力の値をストアさせる（Ｓ３）。  
続いて、制御部２は、各スイッチＳＷの出力を「０」に固定する選択信号ＳＳを各スイッチＳＷへ出力する（Ｓ４）。
【００３５】
制御部２は、各スキャンチェーンＳＣの各リテンションフリップフロップＲＦが「０」を保持するように、シフトイネーブル（ＳＥ）信号を各リテンションフリップフロップＲＦに所定回数だけ供給してスキャンシフトを実行する（Ｓ５）。所定回数は、各スキャンチェーンＳＣ内の各リテンションフリップフロップＲＦに「１」を保持するのに必要な回数と同じ回数である。Ｓ５の処理により、各スイッチＳＷには、「０」が保持される。
【００３６】
制御部２は、オフのための電源制御信号ＰＣＳを出力して、電源スイッチ９をオフして電源遮断を行う（Ｓ６）。  
制御部２は、その後、オンのための電源制御信号ＰＣＳを出力して、電源スイッチ９をオンして電源復帰を行う（Ｓ７）。
【００３７】
続いて、制御部２は、シフトイネーブル（ＳＥ）信号を各リテンションフリップフロップＲＦに所定回数だけ供給してスキャンシフトを実行する（Ｓ８）。このとき、各スイッチＳＷの出力は「０」に固定されているので、Ｓ８のスキャンシフトにより、各スイッチＳＷには、「０」が保持される。
【００３８】
そして、制御部２は、保持部ＢＬに保持された値に、主要部ＭＵの値を復元するために、各リテンションフリップフロップＲＦに、リストア（Ｒ）信号を供給して、保持部ＢＬから値をリストアさせる（Ｓ９）。
【００３９】
保持部ＢＬに値が正しく退避されて保持され、リストア（Ｒ）信号により正しく復元されていれば、各リテンションフリップフロップＲＦの主要部ＭＵには、リストアにより「１」が保持される。
【００４０】
制御部２は、ＭＩＳＲ８の値をクリアし、続いてシフトイネーブル（ＳＥ）信号を各リテンションフリップフロップＲＦに所定回数だけ供給してスキャンシフトを実行する（Ｓ１０）。
【００４１】
制御部２は、ＭＩＳＲ８のレジスタの値を読み出し、ＭＩＳＲ８の値と所定の期待値とを比較する（Ｓ１１）。ここでは、全て「１」の値がリストアされているとしたときの期待値と、Ｓ１０でスキャンシフトされて得られたＭＩＳＲ８の値とが比較される。
【００４２】
制御部２は、ＭＩＳＲ８の値と所定の期待値との比較結果がＯＫであるか、すなわちＭＩＳＲ８の値と所定の期待値とが一致したかを判定し（Ｓ１２）、比較結果がＮＧであるとき（Ｓ１２：ＮＯ）、初期診断結果がＮＧであると判定する（Ｓ１３）。
【００４３】
制御部２は、ＭＩＳＲ８の値と所定の期待値との比較結果がＯＫであるとき（Ｓ１２：ＹＥＳ）、制御部２は、各スイッチＳＷの出力を「０」に固定する選択信号ＳＳを各スイッチＳＷへ出力する（Ｓ１４）。
【００４４】
制御部２は、各スキャンチェーンＳＣの各リテンションフリップフロップＲＦが「０」を保持するように、シフトイネーブル（ＳＥ）信号を各リテンションフリップフロップＲＦに所定回数だけ供給してスキャンシフトを実行する（Ｓ１５）。Ｓ１５の処理により、各スイッチＳＷには、「０」が保持される。
【００４５】
制御部２は、各リテンションフリップフロップＲＦに、ストア（Ｓ）信号を供給して、保持部ＢＬにＱ出力の値をストアさせる（Ｓ１６）。  
続いて、制御部２は、各スイッチＳＷの出力を「１」に固定する選択信号ＳＳを各スイッチＳＷへ出力する（Ｓ１７）。
【００４６】
制御部２は、各スキャンチェーンＳＣの各リテンションフリップフロップＲＦが「１」を保持するように、シフトイネーブル（ＳＥ）信号を各リテンションフリップフロップＲＦに所定回数だけ供給してスキャンシフトを実行する（Ｓ１８）。Ｓ１８の処理により、各スイッチＳＷには、「１」が保持される。
【００４７】
制御部２は、電源制御信号ＰＣＳを出力して、電源スイッチ９をオフして電源遮断を行う（Ｓ１９）。  
制御部２は、その後、電源制御信号ＰＣＳを出力して、電源スイッチ９をオンして電源復帰を行う（Ｓ２０）。
【００４８】
続いて、制御部２は、シフトイネーブル（ＳＥ）信号を各リテンションフリップフロップＲＦに所定回数だけ供給してスキャンシフトを実行する（Ｓ２１）。このとき、各スイッチＳＷの出力は「１」に固定されているので、各スイッチＳＷには、「１」が保持される。
【００４９】
そして、制御部２は、保持部ＢＬに保持されたデータに、主要部ＭＵのデータを復元するために、各リテンションフリップフロップＲＦに、リストア（Ｒ）信号を供給して、保持部ＢＬからデータをリストアさせる（Ｓ２２）。
【００５０】
保持部ＢＬにデータが正しく退避されて保持され、リストア（Ｒ）信号により正しく復元されていれば、各リテンションフリップフロップＲＦの主要部ＭＵには、リストアにより「０」が保持される。
【００５１】
制御部２は、ＭＩＳＲ８のデータをクリアし、続いてシフトイネーブル（ＳＥ）信号を各リテンションフリップフロップＲＦに所定回数だけ供給してスキャンシフトを実行する（Ｓ２３）。
【００５２】
制御部２は、ＭＩＳＲ８のレジスタの値を読み出し、ＭＩＳＲ８の値と所定の期待値とを比較する（Ｓ２４）。ここでは、全て「０」の値がリストアされているとしたときの期待値と、Ｓ２３でスキャンシフトされて得られたＭＩＳＲ８の値とが比較される。
【００５３】
制御部２は、ＭＩＳＲ８の値と所定の期待値との比較結果がＯＫであるか、すなわちＭＩＳＲ８の値と所定の期待値とが一致したかを判定し（Ｓ２５）、比較結果がＮＧであるとき（Ｓ２５：ＮＯ）、初期診断結果がＮＧであると判定する（Ｓ１３）。  
制御部２は、ＭＩＳＲ８の値と所定の期待値との比較結果がＯＫであるとき（Ｓ２５：ＹＥＳ）、初期診断結果がＯＫであると判定する（Ｓ２６）。
【００５４】
以上のように、制御部２は、各リテンションフリップフロップＲＦの保持部ＢＬへの退避を行ったデータ（０又は１）を保持部ＢＬからリストアしてデータの復元を行い、そのデータの復元の後に、退避前の複数のスキャンチェーンＳＣにおいてスキャンシフトして得られた出力データ列の第１の値（期待値）と、復元後の複数のスキャンチェーンＳＣのデータをスキャンシフトして得られた出力データ列の第２の値とが一致するか否かの比較を行うことによりリテンションフリップフロップＲＦの診断を行う診断回路を構成する。
【００５５】
第１の値は、選択器５により所定値（０又は１）を複数のスキャンチェーンＳＣへの入力に設定した後に、その所定値を複数のスキャンチェーンＳＣにおいてスキャンシフトして得られた出力データ列の期待値である。第２の値は、各保持部ＢＬからリストアして復元された所定値（０又は１）を複数のスキャンチェーンＳＣに入力してスキャンシフトして得られた出力データ列の値である。
【００５６】
そして、診断回路である制御部２は、選択器５により複数のスキャンチェーンＳＣへの入力を「０」又は「１」の一方に固定したときの第１の値と前記第２の値とが一致するか否かの比較を行うことによりリテンションフリップフロップＲＦの診断を行った後に、選択器５により複数のスキャンチェーンＳＣへの入力を「０」又は「１」の他方に固定したときの第１の値と第２の値とが一致するか否かの比較を行うことによりリテンションフリップフロップＲＦの診断を行う。
【００５７】
以上のように、上述した実施形態によれば、初期診断としてリテンションフリップフロップの保持部の保持性能、及びリテンションフリップフロップの退避動作及び復元動作に不良あるいは不具合がないか、を診断することができる半導体装置及び半導体装置の診断方法を実現することができる。
【００５８】
特に、上述した例では、各リテンションフリップフロップＲＦに「０」と「１」の両方を保持させた後にリストアして、ＭＩＳＲ８の値と期待値とを比較しているので、各リテンションフリップフロップＲＦの保持部ＢＬが「０」と「１」の両論理値を確実に保持できているかが診断可能である。  
また、主要部ＭＵの値が保持部ＢＬの値と反転関係にあるときに、保持部ＢＬからのリストア処理を実行するので、保持部ＢＬにおける遷移故障による不良の判定も可能である。
【００５９】
さらに、各保持部ＢＬに「１」をストアした後に、主要部ＭＵに「０」をシフトさせてから電源遮断しているので、電源遮断の反動によって、保持部ＢＬあるいは主要部ＭＵに誤った値が保持されているか否かの判定も可能となっている。
【００６０】
なお、リテンションフリップＲＦの保持部ＢＬの「０」から「１」の遷移と、「１」から「０」の遷移の両遷移を完全に保証するために、図２においてＳ１〜Ｓ２５を実行した後に、更にＳ１〜Ｓ１２をさらに実行するようにしてもよい。
【００６１】
さらになお、上述した実施形態では、各スイッチＳＷは、「０」と「１」を選択可能であるが、隣接するフリップフロップとの干渉を考慮して、トグルフリップフロップを用いてもよい。
【００６２】
図３は、トグルフリップフロップを用いたスイッチの構成例を示す図である。図３は、選択器５の中の１つのスイッチＳＷの構成を示している。  
スイッチＳＷには、パターン発生回路３からのテストパターンと、トグルフリップフロップＴＦの２つの出力とが入力され、スイッチＳＷは、３つの入力のいずれかを選択して出力信号ＯＵＴとして出力する。トグルフリップフロップＴＦは、入力Ｔに応じて、Ｑ出力とその反転出力を出力する。
【００６３】
選択信号ＳＳにより、リテンションフリップフロップＲＦの診断のときは、トグルフリップフロップＴＦの２つの出力、すなわちＱ出力とその反転出力が交互に選択されて出力される。よって、隣り合うリテンションフリップフロップＲＦには、異なる値が保持される。
【００６４】
よって、図１の場合は、各スキャンチェーンＳＣには、「０」又は「１」が連続して入力されてスキャンシフトされ、全て「０」又は全て「１」の値が保持されるが、図３の各スキャンチェーンＳＣでは、「０」と「１」が交互に入力されてスキャンシフトされる。
【００６５】
また、上述した図２では、リテンションフリップフロップＲＦの本来の用途のための電源遮断が処理中に含まれているが、リテンションフリップフロップＲＦの常時診断時の保持及び復元用としてリテンションフリップフロップＲＦを搭載する場合は、電源遮断は省略しても構わない。
【００６６】
さらになお、上述した例では、制御部２は、複数のスキャンチェーンＳＣの出力データ列を圧縮するＭＩＳＲ８を用いて期待値との一致を判断しているが、ＭＩＳＲ８を用いないで、固定値「０」及び「１」に対応する値が得られているか否かを判定するようにしてもよい。
（第２の実施形態）
第１の実施形態は、各リテンションフリップフロップＲＦの初期診断を実行可能な半導体装置に関するが、第２の実施形態は、各リテンションフリップフロップＲＦの常時診断を実行可能な半導体装置に関する。
（構成）
図４は、第２の実施形態に係わる半導体装置の回路ブロック図である。
【００６７】
第２の実施形態の半導体装置１Ａは、第１の実施形態の半導体装置１と、類似の構成を有するので、図４において、第１の実施形態の半導体装置１と同じ構成要素については、同じ符号を付して説明は省略し、異なる構成についてのみ説明する。
【００６８】
第２の実施形態の半導体装置１Ａの複数のスキャンチェーンＳＣの入力部には、選択器５Ａが設けられている。選択器５Ａは、複数のスイッチＳＷａ１〜ＳＷａｍを含む。各スイッチＳＷａ１〜ＳＷａｍは、複数のスキャンチェーンＳＣ１〜ＳＣｍに対応して設けられ、各スキャンチェーンＳＣ１〜ＳＣｍのテストパターンの入力部に設けられている。
【００６９】
各スイッチＳＷａ１〜ＳＷａｍは、パターン発生回路３からの信号又は各スキャンチェーンＳＣの最終出力信号のいずれかを選択してスキャンチェーンＳＣへ出力する回路である。各スイッチＳＷａ１〜ＳＷａｍがいずれの信号を選択して出力するかは、制御部２からの選択信号ＳＳに基づいて決定される。すなわち、各スイッチＳＷａ１〜ＳＷａｍは、各スキャンチェーンＳＣの入力を、各スキャンチェーンＳＣの出力データ列に固定するように切り替える切り替え回路を構成する。
【００７０】
後述するように、ロジック部の常時診断時には、各スイッチＳＷａ１〜ＳＷａｍでは、パターン発生回路３からの信号が選択されてスキャンチェーンＳＣへ出力される。各スイッチＳＷａ１〜ＳＷａｍは、リテンションフリップフロップＲＦの診断時には、各スキャンチェーンＳＣの最終出力信号を選択してスキャンチェーンＳＣの入力部へ供給する。
【００７１】
各スキャンチェーンＳＣの出力は、圧縮器７を介してＭＩＳＲ８に供給される。ＭＩＳＲ８の値は、制御部２からの制御信号（図示せず）に応じて、レジスタ１０に格納可能となっている。そして、制御部２は、レジスタ１０に格納された値を、読み出し可能となっている。
（作用）
はじめに、ロジック部の常時診断について説明する。
【００７２】
制御部２は、半導体装置１が動作中に、複数のリテンションフリップフロップＲＦの保持部ＢＬにデータを退避させてから、ロジック部の常時診断を実行する。常時診断後、退避したデータを主要部ＭＵにリストアしてから、半導体装置１の動作が再開される。診断結果は、制御部２が、半導体装置１内の他のＣＰＵあるいは外部へ出力される。
【００７３】
次に、半導体装置１Ａのテンションフリップフロップの診断処理について説明する。図５は、リテンションフリップフロップＲＦの常時診断の処理の流れの例を示すフローチャートである。  
制御部２は、リテンションフリップフロップの診断時、選択器５及び複数のスキャンチェーン６の動作を制御する。
【００７４】
なお、半導体装置１は、ロジックＢＩＳＴによる常時診断の実行後若しくは実行前に、以下に説明する各リテンションフリップフロップＲＦの常時診断を実行する。ここでは、リテンションフリップフロップＲＦの保持部ＢＬの保持性能、及びリテンションフリップフロップＲＦの退避動作及び復元動作が正しく機能しているか、の診断が行われる。
【００７５】
上述したように、制御部２は、一般回路であるロジック部に対するロジックＢＩＳＴを実行するときは、パターン発生回路３及び伸長器４からの信号を選択して各スキャンチェーン６の入力部に供給するように、各スイッチＳＷａ１〜ＳＷａｍを切り替える選択信号ＳＳを選択器５Ａへ出力する。
【００７６】
これに対して、制御部２は、リテンションフリップフロップＲＦの診断時には、スキャンチェーンＳＣの最終出力信号すなわちシフトアウト信号を選択して各スキャンチェーン６の入力部に供給するように、各スイッチＳＷａ１〜ＳＷａｍを切り替える選択信号ＳＳを選択器５Ａへ出力する。
【００７７】
本実施形態の常時診断では、初期診断時には発生しないリテンションフリップフロップＲＦの保持部ＢＬの故障を検出するために、以下に説明する各リテンションフリップフロップＲＦの診断を実行する。
【００７８】
半導体装置１Ａが動作中に、その動作を中断して、リテンションフリップフロップＲＦの常時診断、ここでは、リテンションフリップフロップＲＦの保持部の保持性能、及びリテンションフリップフロップＲＦの退避動作及び復元動作、の診断が行われる。
【００７９】
半導体装置１Ａが動作を中断すると、制御部２は、電源遮断前、または、ロジック部の常時診断開始前のストア処理に移行する前に、各スキャンチェーンＳＣの入力が各スキャンチェーンの最終出力信号であるシフトアウト信号となるように、各スイッチＳＷａ１〜ＳＷａｍをシフトアウトに固定する（Ｓ３１）。図４においては、各スキャンチェーンＳＣの入力部に、各スキャンチェーンＳＣの最終出力信号がフィードバック線ＦＢを介して入力されるように、各スイッチＳＷａ１〜ＳＷａｍの切り替えが行われる。
【００８０】
次に、制御部２は、ＭＩＳＲ８をクリアし、スキャンシフトを実行する（Ｓ３２）。シフトイネーブル（ＳＥ）信号を各リテンションフリップフロップＲＦに所定回数だけ供給することによって、スキャンシフトが行われる。スキャンシフトにより、半導体装置１Ａが動作を中断したときの各リテンションフリップフロップＲＦの主要部ＭＵに保持された値が、スキャンシフトされる。所定回数は、各スキャンチェーンＳＣ内の各リテンションフリップフロップＲＦのデータが、半導体装置１Ａが動作を中断したときに保持していた値を保持するのに必要な回数である。
【００８１】
そして、制御部２は、Ｓ３２のスキャンシフトにより得られたＭＩＳＲ８の結果の値をレジスタ１０に格納させる（Ｓ３３）。  
ここでシフトアウトして得られたＭＩＳＲ８の値は、半導体装置１Ａの中断したときの各リテンションフリップフロップＲＦの主要部ＭＵに保持された値に基づく値であり、レジスタ１０に保持される。
【００８２】
さらに、このとき、各リテンションフリップフロップＲＦの主要部ＭＵに保持される値は、各データがスキャンチェーンＳＣを一回りするため、シフト前の元の値に戻ることになる。
【００８３】
この後、制御部２は、各リテンションフリップフロップＲＦに対してストア処理を施して、保持部ＢＬに主要部ＭＵの値をストアする（Ｓ３４）。  
そして、制御部２は、電源遮断を行う（Ｓ３５）。
【００８４】
なお、電源遮断に代えて、制御部２は、ロジック部の常時診断を実行してもよい。常時診断する場合は各スイッチＳＷａを伸長器４側に切り替えておく。  
制御部２は、電源復帰を行う（Ｓ３６）。なお、ロジック部の常時診断が終了したときには、主要部ＭＵの値は変更されている。
【００８５】
そして、制御部２は、リストア（Ｒ）信号を各リテンションフリップフロップＲＦに供給して、保持部ＢＬから値をリストアする（Ｓ３７）。リテンションフリップフロップＲＦに故障がなければ主要部ＭＵは電源遮断前、あるいは、ロジック部の常時診断開始前の状態が復元されている筈である。
【００８６】
なお、ロジック部の常時診断が終了したときは、各スイッチＳＷａは、再びスキャンチェーンＳＣの最終出力信号すなわちシフトアウト信号に切り替えられる。  
そして、制御部２は、ＭＩＳＲ８の値をクリアし、スキャンシフトを実行し（Ｓ３８）、レジスタ１０の値と、ＭＩＳＲ８の結果とを比較する（Ｓ３９）。
【００８７】
制御部２は、レジスタ１０の値とＭＩＳＲ８の値との比較結果がＯＫであるか、すなわちＭＩＳＲ８の値とレジスタ１０の値とが一致したかを判定し（Ｓ４０）、比較結果がＮＧであるとき（Ｓ４０：ＮＯ）、常時診断結果がＮＧであると判定する（Ｓ４１）。
【００８８】
制御部２は、ＭＩＳＲ８の値とレジスタ１０の値との比較結果がＯＫであるとき（Ｓ４０：ＹＥＳ）、常時診断結果がＯＫであると判定する（Ｓ４２）。  
ここで、ＭＩＳＲ８の値をクリアし、スキャンシフトして得られたＭＩＳＲ８の値と遮断前（あるいは診断前）にレジスタ１０に保持した値とが等しければリストアした結果がストア前の主要部ＭＵの値と等しいことになる。
【００８９】
また、スキャンシフトにより値のデータがスキャンチェーンを一巡し、各リテンションフリップフロップＲＦの主要部ＭＵは元の値に戻るため、復元データとして半導体装置１Ａの再起動後に直ちに使用することができる。
【００９０】
よって、制御部２は、各リテンションフリップフロップＲＦの保持部ＢＬへの退避を行ったデータ（半導体装置１Ａが動作を中断したときのデータ）を保持部ＢＬからリストアしてデータの復元を行い、そのデータの復元の後に、退避前の複数のスキャンチェーンＳＣにおいてスキャンシフトして得られた出力データ列の第１の値（半導体装置１Ａが動作を中断したときのデータ）と、復元後の複数のスキャンチェーンＳＣのデータをスキャンシフトして得られた出力データ列の第２の値とが一致するか否かの比較を行うことによりリテンションフリップフロップＲＦの診断を行う診断回路を構成する。
【００９１】
第１の値は、選択器５から入力された複数のスキャンチェーンＳＣの出力データ列をスキャンシフトして得られた値である。第２の値は、保持部ＢＬからリストアして復元されたデータをスキャンシフトして得られた出力データ列の値である。
【００９２】
以上のように、上述した実施形態によれば、常時診断としてリテンションフリップフロップの保持部の保持性能、及びリテンションフリップフロップの退避動作及び復元動作に不良あるいは不具合がないか、を診断することができる半導体装置及び半導体装置の診断方法を実現することができる。
【００９３】
特に、ロジック部の常時診断においてリテンションフリップフロップを利用する場合に、保持動作及び復元動作が保証されなければ、常時診断明けの半導体装置１Ａの再起動で誤動作が生じる可能性があるが、上述した実施形態では、リテンションフリップフロップＲＦの保持部の保持性能などを診断できるので、常時診断明けの半導体装置１Ａの誤動作を防止することができる。
なお、図５に代えて、図５Ａに示す処理を実行するようにしてもよい。図５Ａは、リテンションフリップフロップＲＦの常時診断の処理の流れの他の例を示すフローチャートである。図５Ａにおいて、図５と同じ処理については、同じステップ番号を付して説明は省略する。
すなわち、図５の変形例では、Ｓ３２の処理の前に、制御部２は、各リテンションフリップフロップＲＦに対してストア処理を施して、保持部ＢＬに主要部ＭＵの値をストアする（Ｓ４３）。そして、Ｓ３３の処理の後、制御部２は、電源遮断を行う（Ｓ３５）。
その後、Ｓ３５の後の処理は、図５と同様であり、Ｓ４２において常時診断結果がＯＫであると判定されると、制御部２は、リストア（Ｒ）信号を各リテンションフリップフロップＲＦに供給して、保持部ＢＬから値をリストアする（Ｓ４４）。
図５Ａの処理によっても、リテンションフリップフロップＲＦの常時診断を行うことができる。
（第３の実施形態）
第１の実施形態は、各リテンションフリップフロップＲＦの初期診断を実行可能な半導体装置に関し、第２の実施形態は、各リテンションフリップフロップＲＦの常時診断を実行可能な半導体装置に関するが、第３の実施形態は、各リテンションフリップフロップＲＦの初期診断と常時診断の両方を実行可能な半導体装置に関する。
（構成）
図６は、第３の実施形態に係わる半導体装置の回路ブロック図である。
【００９４】
第３の実施形態の半導体装置１Ｂは、第２の実施形態の半導体装置１Ａと、類似の構成を有するので、図６において、第２の実施形態の半導体装置１Ａと同じ構成要素については、同じ符号を付して説明は省略し、異なる構成についてのみ説明する。
【００９５】
第３の実施形態の半導体装置１Ｂの複数のスキャンチェーンＳＣの入力部には、選択器５Ｂが設けられている。選択器５Ｂは、複数のスイッチＳＷｂ１〜ＳＷｂｍを含む。各スイッチＳＷｂ１〜ＳＷｂｍは、複数のスキャンチェーンＳＣ１〜ＳＣｍに対応して設けられ、各スキャンチェーンＳＣ１〜ＳＣｍのテストパターンの入力部に設けられている。
【００９６】
各スイッチＳＷｂ１〜ＳＷｂｍは、パターン発生回路３からの信号、「０」、「１」、又は各スキャンチェーンＳＣの最終出力信号のいずれかを選択してスキャンチェーンＳＣへ出力する回路である。各スイッチＳＷｂ１〜ＳＷｂｍがいずれの信号を選択して出力するかは、制御部２からの選択信号ＳＳに基づいて決定される。
【００９７】
すなわち、各スイッチＳＷｂ１〜ＳＷｂｍは、複数のスキャンチェーンＳＣへの入力を、所定値（１又は０）又は前記複数のスキャンチェーンＳＣの出力データ列に固定するように切り替えることができる切り替え回路を構成する。
【００９８】
後述するように、ロジック部の初期診断時には、各スイッチＳＷｂ１〜ＳＷｂｍでは、パターン発生回路３からの信号が選択されてスキャンチェーンＳＣへ出力される。リテンションフリップフロップＲＦの初期診断時には、各スイッチＳＷｂ１〜ＳＷｂｍでは、固定値である「０」又は「１」が選択されてスキャンチェーンＳＣへ出力される。リテンションフリップフロップＲＦの常時診断時には、各スキャンチェーンＳＣの最終出力信号が選択されてスキャンチェーンＳＣへ出力される。
（作用）
半導体装置１Ｂの各リテンションフリップフロップＲＦの初期診断は、各スイッチＳＷｂ１〜ＳＷｂｍにおいて「０」又は「１」が選択されて、図１及び図２で説明したように、制御部２が動作することによって、実行される。
【００９９】
そして、半導体装置１Ｂの各リテンションフリップフロップＲＦの常時診断は、各スイッチＳＷｂ１〜ＳＷｂｍにおいて各スキャンチェーンＳＣの最終出力信号が選択されて、図４及び図５で説明したように、制御部２が動作することによって、実行される。
【０１００】
よって、制御部２は、各リテンションフリップフロップＲＦの保持部ＢＬへの退避を行ったデータを保持部ＢＬからリストアしてデータの復元を行い、そのデータの復元の後に、退避前の複数のスキャンチェーンＳＣにおいてスキャンシフトして得られた出力データ列の第１の値と、復元後の複数のスキャンチェーンＳＣのデータをスキャンシフトして得られた出力データ列の第２の値とが一致するか否かの比較を行うことによりリテンションフリップフロップＲＦの診断を行う診断回路を構成する。
【０１０１】
各スイッチＳＷｂが複数のスキャンチェーンＳＣへの入力を所定値（１又は０）に固定したときは、第１の値は、各スイッチＳＷｂにより所定値（１又は０）を複数のスキャンチェーンＳＣへの入力に設定した後に、所定値（１又は０）を複数のスキャンチェーンＳＣにおいてスキャンシフトして得られた出力データ列の期待値であり、第２の値は、保持部ＢＬからリストアして復元された所定値（１又は０）を複数のスキャンチェーンＳＣに入力してスキャンシフトして得られた出力データ列の値である。
【０１０２】
各スイッチＳＷｂが複数のスキャンチェーンＳＣへの入力を各スキャンチェーンＳＣの出力データ列に固定したときは、第１の値は、各スイッチＳＷｂにより各スキャンチェーンＳＣの出力データ列を複数のスキャンチェーンＳＣに入力してスキャンシフトして得られる値であり、第２の値は、保持部ＢＬからリストアして復元されたデータを複数のスキャンチェーンＳＣに入力してスキャンシフトして得られた第２の出力データ列の値である。
【０１０３】
以上のように、上述した実施形態によれば、初期診断及び常時診断としてリテンションフリップフロップの保持部の保持性能、及びリテンションフリップフロップの退避動作及び復元動作に不良あるいは不具合がないか、を診断することができる半導体装置及び半導体装置の診断方法を実現することができる。
【０１０４】
次に上述した各実施形態の変形例について説明する。
（変形例１）
上述した各実施形態では、半導体装置の全てのスキャンチェーンＳＣは、複数のリテンションフリップフロップＲＦのみから構成されているが、本変形例１の半導体装置は、複数の非リテンションフリップフロップのみからなるスキャンチェーンを含む。
【０１０５】
図７は、本変形例１に係わる半導体装置の回路ブロック図である。  
変形例１の半導体装置１Ｃは、複数のスキャンチェーンＳＣを含むが、複数のスキャンチェーンＳＣの一部は、複数のリテンションフリップフロップＲＦから構成され、残りは、複数の非リテンションフリップフロップＮＦから構成されている。図７では、スキャンチェーンＳＣｍが、複数の非リテンションフリップフロップＮＦから構成されていることが示されている。すなわち、複数のスキャンチェーンＳＣは、非リテンションフリップフロップＮＦのみを含む非リテンションフリップフロップスキャンチェーンを含む。
【０１０６】
スキャンチェーンＳＣｍの出力部に、ＡＮＤ回路１１が設けられている。ＡＮＤ回路１１の２つの入力の一方には、スキャンチェーンＳＣｍの最終出力信号が入力され、ＡＮＤ回路１１の２つの入力の他方には、制御部２からの所定の出力信号Ｃ１が入力される。ここでは、出力信号Ｃ１は、反転されてＡＮＤ回路１１に入力される。
【０１０７】
所定の出力信号Ｃ１が、「１」であると、ＡＮＤ回路１１の出力は常に「０」となるので、スキャンチェーンＳＣｍの出力はマスクされて常に「０」となる。リテンションフリップフロップＲＦの診断のときには、制御部２は、所定の出力信号Ｃ１を「１」にすることにより、スキャンチェーンＳＣｍの出力は、常に「０」となってＭＩＳＲ８に入力される。
【０１０８】
よって、ＡＮＤ回路１１は、非リテンションフリップフロップスキャンチェーンのデータをスキャンシフトして得られた出力データ列をマスクして、所定値に切り替える切り替え回路を構成する。
【０１０９】
ＭＩＳＲ８には、複数のスキャンチェーンＳＣの数の分のデータ圧縮値が入力されるが、非リテンションフリップフロップＮＦから構成されるスキャンチェーンＳＣｍの出力は、所定値に固定される。すなわち、非リテンションフリップフロップスキャンチェーンにおいてスキャンシフトされた出力データ列を含むデータ列から得られる値が、ＭＩＳＲ８に格納される。
【０１１０】
また、制御部２が、所定の出力信号Ｃ１を「０」にすると、ＡＮＤ回路１１の出力は、スキャンチェーンＳＣｍの最終出力信号となる。よって、通常動作時、及びロジック部の診断時には、制御部２が、所定の出力信号Ｃ１を「０」にする。
【０１１１】
リテンションフリップフロップＲＦは、通常のフリップフロップと比較すると回路面積が大きく、チップコストが増大する虞れがある。よって、半導体装置において実行される初期設定処理のような重要な回路では、リテンションフリップフロップＲＦを用いてスキャンチェーンＳＣを構成し、他の回路には、非リテンションフリップフロップＮＦを用いたスキャンチェーンＳＣを用いるようにすれば、チップコストの増大を抑制することができる。
【０１１２】
本変形例１によれば、非リテンションフリップフロップＮＦのスキャンチェーンＳＣの出力を所定値に固定できるので、リテンションフリップフロップＲＦの保持部の保持性能などを診断することができる。
【０１１３】
なお、上述した例では、非リテンションフリップフロップＮＦのスキャンチェーンＳＣの出力は、「０」に固定されているが、「１」に固定するようにしてもよい。  
さらになお、リテンションフリップフロップＲＦの初期診断であれば、リテンションフリップフロップＲＦのスキャンチェーンＳＣにおいてシフトされている、オール「０」あるいはオール「１」に合わせるようにＡＮＤ回路１１の出力を設定してもよい。
【０１１４】
なお、図７は、第３の実施形態の半導体装置と同様の構成を有する半導体装置１Ｃに、変形例１を適用した場合を示しているが、本変形例１は、第１、第２の実施形態及び他の変形例の半導体装置にも適用可能である。
（変形例２）
上述した各実施形態の各スキャンチェーンＳＣでは、全てのフリップフロップがリテンションフリップフロップＲＦであるが、本変形例では、複数のスキャンチェーンＳＣの全て若しくは一部において、リテンションフリップフロップＲＦと非リテンションフリップフロップＮＦが混在する。すなわち、リテンションフリップフロップＲＦと非リテンションフリップフロップＮＦが、同一のスキャンチェーン内で混載されている。言い換えれば、リテンションフリップフロップＲＦを含むスキャンチェーンＳＣは、非リテンションフリップフロップＮＦを含む。
【０１１５】
図８は、本変形例２に係わるスキャンチェーンＳＣの一部の回路図である。スキャンチェーンＳＣｋは、リテンションフリップフロップＲＦと非リテンションフリップフロップＮＦが混在して縦続接続されて構成されている。
【０１１６】
そして、各非リテンションフリップフロップＮＦの出力部には、ＡＮＤ回路１２が設けられている。ＡＮＤ回路１２の２つの入力の一方には、上流のフリップフロップの出力が入力され、ＡＮＤ回路１２の２つの入力の他方には、制御部２からの所定の出力信号Ｃ２が入力される。ＡＮＤ回路１２の２つの入力の他方には、出力信号Ｃ２が反転されて入力される。
【０１１７】
制御部２は、スキャンシフトの最初の１クロック目においてのみ、出力信号Ｃ２として「１」を出力する。出力信号Ｃ２が「１」であるとき、各ＡＮＤ回路１２の出力は、「０」となる。よって、ＡＮＤ回路１２は、非リテンションフリップフロップＮＦの出力を所定値に切り替える切り替え回路を構成する。  
すなわち、非リテンションフリップフロップＮＦのデータは、マスクされて「０」に固定されるので、ＭＩＳＲ８へ供給されるスキャンデータは不定とならない。
【０１１８】
なお、変形例１では、ＡＮＤ回路１１によるマスク処理は、スキャンシフト中、常に行われるが、本変形例２では、ＡＮＤ回路１２によるマスク処理は、スキャンシフトを開始する１クロック目のタイミングのみ行われる。
【０１１９】
さらになお、上述した例では、非リテンションフリップフロップのスキャンチェーンＳＣの出力は、「０」に固定されているが、ＯＲ回路を用いて「１」をそのＯＲ回路に供給することにより、「１」に固定するようにしてもよい。
なお、本変形例２は、第１、第２の実施形態及び他の変形例の半導体装置にも適用可能である。
（変形例３）
上述した各実施形態及び各変形例では、複数のスキャンチェーンＳＣの長さが同じであるが、複数のスキャンチェーンＳＣの一部の長さが、複数のスキャンチェーンＳＣの最大スキャンチェーン長を有しない場合が有り得る。本変形例３は、そのような場合においても、リテンションフリップフロップＲＦの診断を可能にするように、シフトクロックとしてのシフトイネーブル（ＳＥ）入力がマスクされる。
【０１２０】
図９は、本変形例３の半導体装置の回路ブロック図である。  
変形例３の半導体装置１Ｄは、複数のスキャンチェーンＳＣを含むが、複数のスキャンチェーンＳＣの一部は、最大スキャンチェーン長よりも短い。最大スキャンチェーン長は、複数のスキャンチェーンＳＣの中で、最もフリップフロップの数の多いスキャンチェーンの長さを意味する。図９では、スキャンチェーンＳＣｍ以外の複数のスキャンチェーンＳＣは同じスキャンチェーン長を有するが、スキャンチェーンＳＣｍのみが、最大スキャンチェーン長を有しない。すなわち、図９では、二点鎖線で示すＤＦの箇所にリテンションフリップフロップＲＦがなく、スキャンチェーンＳＣｍは、リテンションフリップフロップＲＦ２個分の長さだけ、最大スキャンチェーン長よりも短い。
【０１２１】
スキャンチェーンＳＣｍでは、最大スキャンチェーン長分のシフト動作が行われると、データがずれてスキャンチェーンＳＣｍの入力にフィードバックされ、データがずれてしまう。
【０１２２】
そこで、制御部２は、スキャンチェーンＳＣｍの長さと最大スキャンチェーン長との差のリテンションフリップフロップＲＦの数の分だけ（ここでは２個分だけ）、シフトイネーブル（ＳＥ）信号を、マスクして出力しない。マスク処理は、制御部２のマスク回路２ｂにより行われる。
【０１２３】
すなわち、診断回路である制御部２は、複数のスキャンチェーンＳＣの中で、最大チェーン長に満たないスキャンチェーンＳＣに対して、最大チェーン長と、最大チェーン長に満たないスキャンチェーンのチェーン長との差の分だけスキャンシフトのためのシフトクロックをマスクするマスク回路２ｂを有する。
【０１２４】
その結果、他のスキャンチェーンＳＣｍでは、最大スキャンチェーン長分のシフト動作が行われるが、制御部２は、スキャンチェーンＳＣｍへのシフトイネーブル（ＳＥ）を、上述したように、最大チェーン長に満たないスキャンチェーンのチェーン長との差の分だけマスク処理を行うので、スキャンチェーンＳＣｍ内では、データがずれないで、元のデータが復元される。
【０１２５】
よって、各リテンションフリップフロップＲＦのデータを復元するときに、最大チェーン長に満たないスキャンチェーンＳＣに対して、その差分だけ、シフトクロックであるシフトイネーブル（ＳＥ）信号をマスクして与えて、正しい元のデータが復元される。
【０１２６】
なお、図９は、第３の実施形態の半導体装置と同様の構成を有する半導体装置１Ｄに、変形例３を適用した場合を示しているが、本変形例３は、第１、第２の実施形態及び他の変形例の半導体装置にも適用可能である。
（変形例４）
本変形例４は、変形例３の変形例である。変形例３では、最大チェーン長に満たないスキャンチェーンＳＣに対して、その差分だけ、シフトクロックであるシフトイネーブル（ＳＥ）信号をマスクして与えていたが、本変形例４では、最大チェーン長に満たないスキャンチェーンＳＣに対して、その差分に応じてダミーのフリップフロップを挿入する。
【０１２７】
図９の場合、二点鎖線で示すＤＦの２箇所に、ダミーのフリップフロップが追加されて挿入される。各ダミーのフリップフロップは、「０」又は「１」を出力するように設定される。
【０１２８】
すなわち、半導体装置は、複数のスキャンチェーンＳＣの中で最大チェーン長に満たないスキャンチェーンに設けられ、最大チェーン長と、最大チェーン長に満たないスキャンチェーンのチェーン長とを等しくする１又は２以上のダミーのフリップフロップを有する。
【０１２９】
本変形例４に示すような最大チェーン長に満たないスキャンチェーンＳＣにおいても、正しい元のデータが復元される。  
なお、図９は、第３の実施形態の半導体装置と同様の構成を有する半導体装置１Ｄに、変形例４を適用した場合を示しているが、本変形例４は、第１、第２の実施形態及び他の変形例の半導体装置にも適用可能である。
【０１３０】
以上のように、上述した各実施形態及び各変形例によれば、リテンションフリップフロップの保持部の保持性能、及びリテンションフリップフロップの退避動作及び復元動作に不良あるいは不具合がないか、を診断することができる半導体装置及び半導体集積回路の診断方法を提供することができる。  
特に、信頼性が重視される車載製品としての半導体装置に搭載されるリテンションフリップフロップの診断などにおいて有効である。
【０１３１】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として例示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１３２】
１、１Ａ、１Ｂ、１Ｃ、１Ｄ  半導体装置、２  制御部、２ａ  ロジックＢＩＳＴコントローラ、２ｂ  マスク回路、３  パターン発生回路、４  伸長器、５、５Ａ、５Ｂ  選択器、６  スキャンチェーン、７  圧縮器、９  電源スイッチ、１０  レジスタ、１１、１２  ＡＮＤ回路。
【図１】
2018155707.tif 000003
【図２】
2018155707.tif 000004
【図３】
2018155707.tif 000005
【図４】
2018155707.tif 000006
【図５】
2018155707.tif 000007
【図５Ａ】
2018155707.tif 000008
【図６】
2018155707.tif 000009
【図７】
2018155707.tif 000010
【図８】
2018155707.tif 000011
【図９】
2018155707.tif 000012