(57)【要約】【課題】不良救済可能で、且つ、既存のスキャン技術を適用可能なフリップフロップ回路を提供すること。【解決手段】フリップフロップ回路は、入力データをラッチし出力データを出力するように構成されたラッチ部と、冗長入力データをラッチし冗長出力データを出力するように構成された冗長ラッチ部と、ラッチ部の故障検出及び救済を行う救済制御回路と、を備える。故障検出時、救済制御回路は、入力データと出力データとを比較することによってラッチ部の故障を検出する。故障を検出した場合、救済制御回路は、入力データを冗長入力データとして冗長ラッチ部に供給し、また、冗長出力データを出力データとしてラッチ部の後段に供給する。【選択図】図２
2014204360.tif 000002
【特許請求の範囲】
【請求項１】
フリップフロップ回路を備え、
前記フリップフロップ回路は、
ラッチ入力データをラッチし、ラッチ出力データを出力するように構成されたラッチ部と、
冗長ラッチ入力データをラッチし、冗長ラッチ出力データを出力するように構成された冗長ラッチ部と、
前記ラッチ部の故障検出及び救済を行う救済制御回路と
を備え、
前記故障検出時、前記救済制御回路は、前記ラッチ入力データと前記ラッチ出力データとを比較することによって前記ラッチ部の故障を検出し、
前記ラッチ部の故障を検出した場合、前記救済制御回路は、前記ラッチ入力データを前記冗長ラッチ入力データとして前記冗長ラッチ部に供給し、また、前記冗長ラッチ出力データを前記ラッチ出力データとして前記ラッチ部の後段に供給する
半導体装置。
【請求項２】
請求項１に記載の半導体装置であって、
前記ラッチ部は、
前記ラッチ入力データである第１入力データを第１クロック信号に基づいてラッチし、前記ラッチ出力データである第１出力データを出力するように構成された第１ラッチ回路と、
前記ラッチ入力データである第２入力データを前記第１クロック信号の反転信号である第２クロック信号に基づいてラッチし、前記ラッチ出力データである第２出力データを出力するように構成された第２ラッチ回路と
を含み、
前記冗長ラッチ部は、前記冗長ラッチ入力データである第３入力データを第３クロック信号に基づいてラッチし、前記冗長ラッチ出力データである第３出力データを出力するように構成された第３ラッチ回路を含み、
前記故障検出時、前記救済制御回路は、前記第１入力データと前記第１出力データとを比較することによって前記第１ラッチ回路の故障を検出し、また、前記第２入力データと前記第２出力データとを比較することによって前記第２ラッチ回路の故障を検出し、
前記第１ラッチ回路あるいは前記第２ラッチ回路の故障を検出しない場合、前記救済制御回路は、前記第１出力データを前記第２入力データとして前記第２ラッチ回路に供給し、また、前記第２出力データを出力端子に出力し、
前記第１ラッチ回路の故障を検出した場合、前記救済制御回路は、前記第１入力データ及び前記第１クロック信号のそれぞれを前記第３入力データ及び前記第３クロック信号として前記第３ラッチ回路に供給し、また、前記第３出力データを前記第２入力データとして前記第２ラッチ回路に供給し、また、前記第２出力データを前記出力端子に出力し、
前記第２ラッチ回路の故障を検出した場合、前記救済制御回路は、前記第１出力データ及び前記第２クロック信号のそれぞれを前記第３入力データ及び前記第３クロック信号として前記第３ラッチ回路に供給し、また、前記第３出力データを前記出力端子に出力する
半導体装置。
【請求項３】
請求項２に記載の半導体装置であって、
前記フリップフロップ回路は、更に、
通常入力データが入力される入力端子と、
スキャンデータが入力されるスキャン入力端子と、
テスト信号に応じて前記通常入力データあるいは前記スキャンデータのいずれか一方を選択し、前記選択した一方を前記第１入力データとして出力するセレクタと
を備える
半導体装置。
【請求項４】
請求項３に記載の半導体装置であって、
前記故障検出時、
前記スキャンデータとして、同一論理値のデータが連続的に与えられ、
前記セレクタは、前記スキャンデータを前記第１入力データとして出力し、
前記救済制御回路は、前記第１出力データを前記第２入力データとして前記第２ラッチ回路に供給し、また、前記第２出力データを前記出力端子に出力し、
前記第１入力データと前記第１出力データが不一致の場合、前記救済制御回路は、前記第１ラッチ回路が故障していると判断し、
前記第２入力データと前記第２出力データが不一致の場合、前記救済制御回路は、前記第２ラッチ回路が故障していると判断する
半導体装置。
【請求項５】
請求項１に記載の半導体装置であって、
前記ラッチ部は、前記ラッチ入力データである第１入力データを受け取り、前記ラッチ出力データである第１出力データを出力するように構成された第１フリップフロップを含み、
前記冗長ラッチ部は、前記冗長ラッチ入力データである第２入力データを受け取り、前記冗長ラッチ出力データである第２出力データを出力するように構成された第２フリップフロップを含み、
前記故障検出時、前記救済制御回路は、前記第１入力データと前記第１出力データとを比較することによって前記第１フリップフロップの故障を検出し、
前記第１フリップフロップの故障を検出しない場合、前記救済制御回路は、前記第１出力データを出力端子に出力し、
前記第１フリップフロップの故障を検出した場合、前記救済制御回路は、前記第１入力データを前記第２入力データとして前記第２フリップフロップに供給し、また、前記第２出力データを前記出力端子に出力する
半導体装置。
【請求項６】
請求項５に記載の半導体装置であって、
前記フリップフロップ回路は、更に、
通常入力データが入力される入力端子と、
スキャンデータが入力されるスキャン入力端子と、
テスト信号に応じて前記通常入力データあるいは前記スキャンデータのいずれか一方を選択し、前記選択した一方を前記第１入力データとして出力するセレクタと
を備える
半導体装置。
【請求項７】
請求項６に記載の半導体装置であって、
前記故障検出時、
前記スキャンデータとして、同一論理値のデータが連続的に与えられ、
前記セレクタは、前記スキャンデータを前記第１入力データとして出力し、
前記救済制御回路は、前記第１出力データを前記出力端子に出力し、
前記第１入力データと前記第１出力データが不一致の場合、前記救済制御回路は、前記第１フリップフロップが故障していると判断する
半導体装置。
【請求項８】
請求項１乃至７のいずれか一項に記載の半導体装置であって、
前記救済制御回路は、前記ラッチ部の故障状況を記憶する記憶回路を備えている
半導体装置。
【請求項９】
請求項８に記載の半導体装置であって、
前記フリップフロップ回路は、更に、カットパルスが入力されるカットパルス入力端子を備え、
前記記憶回路は、前記カットパルスの印加によって状態が変化するヒューズ回路である
半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、フリップフロップ回路を備える半導体装置に関する。
【背景技術】
【０００２】
半導体装置における不良は、歩留まりを低下させる。歩留まりを改善するためには、冗長化技術によって不良を救済することが重要である。半導体装置中の特にロジック領域の不良を救済するための技術として、次のものが知られている。
【０００３】
特許文献１（特開２０１０−０４１７０５号公報）は、ロジック領域を有する半導体装置を開示している。その半導体装置は、複数の基本セル、冗長セル、入力セレクタ、及び出力セレクタを備えている。複数の基本セルは、ロジック領域内に設けられ、それぞれ同一の構成を有している。冗長セルは、基本セルと同一の構成を有している。入力セレクタは、複数の基本セル及び冗長セルのそれぞれに入力される信号を切り替える。出力セレクタは、基本セル及び冗長セルのそれぞれから出力される信号を切り替える。入力セレクタ及び出力セレクタを用いて冗長セルを機能させることにより、複数の基本セルのうち故障したセルを救済することが可能である。
【０００４】
特許文献２（特開２００７−０９６９１８号公報）は、半導体装置を開示している。その半導体装置は、複数のフリップフロップ、１つ以上の冗長フリップフロップ、複数の第１選択手段、複数の第２選択手段、及び選択制御手段を備えている。複数の第１選択手段は、複数の入力端子と上記複数のフリップフロップ及び冗長フリップフロップの入力端子との間の経路を選択する。複数の第２選択手段は、複数の出力端子と上記複数のフリップフロップ及び冗長フリップフロップの出力端子との間の経路を選択する。選択制御手段は、第１の選択手段及び第２の選択手段の経路の選択を制御する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−０４１７０５号公報
【特許文献２】特開２００７−０９６９１８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記特許文献２に記載の技術によれば、通常のフリップフロップとは別の冗長フリップフロップが、ロジック領域に配置される。従って、スキャンチェーンを構成する際には、既存の手法をそのまま適用することはできず、冗長フリップフロップをも考慮した特別な手法が必要となる。スキャンテスト用のＡＴＰＧパタンを生成する際も同様に、特別な手法が必要となる。これらのことは、スキャンテストに要する時間やコストの増加を招く。
【０００７】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるだろう。
【課題を解決するための手段】
【０００８】
一実施の形態において、フリップフロップ回路を備える半導体装置が提供される。そのフリップフロップ回路は、ラッチ部、冗長ラッチ部、及び救済制御回路を備える。ラッチ部は、ラッチ入力データをラッチし、ラッチ出力データを出力するように構成されている。冗長ラッチ部は、冗長ラッチ入力データをラッチし、冗長ラッチ出力データを出力するように構成されている。救済制御回路は、ラッチ部の故障検出及び救済を行う。より詳細には、故障検出時、救済制御回路は、ラッチ入力データとラッチ出力データとを比較することによってラッチ部の故障を検出する。そして、ラッチ部の故障を検出した場合、救済制御回路は、ラッチ入力データを冗長ラッチ入力データとして冗長ラッチ部に供給し、また、冗長ラッチ出力データをラッチ出力データとしてラッチ部の後段に供給する。
【発明の効果】
【０００９】
本開示に係るフリップフロップ回路は、それ自身が故障検出・救済機能を備えている。従って、当該フリップフロップ回路とは別の冗長フリップフロップを配置することなく、不良救済を実現し、半導体装置の歩留まりを向上させることが可能となる。冗長フリップフロップを別途配置する必要がないため、スキャンチェーンを構成する際やＡＴＰＧパタンを生成する際に、特別な手法は不要であり、既存の手法を適用することが可能である。すなわち、不良救済可能で、且つ、既存のスキャン技術を適用可能なフリップフロップ回路が実現される。既存のスキャン技術が適用可能であるため、スキャンテストに要する時間やコストの増加が防止される。
【図面の簡単な説明】
【００１０】
【図１】図１は、実施の形態に係る半導体装置の構成を示す概略図である。
【図２】図２は、第１の実施の形態に係るフリップフロップ回路の構成を概略的に示すブロック図である。
【図３】図３は、第２の実施の形態に係るフリップフロップ回路の構成を示す回路ブロック図である。
【図４】図４は、第２の実施の形態に係るフリップフロップ回路の切り替え制御回路の構成例を示す回路図である。
【図５】図５は、第２の実施の形態に係るフリップフロップ回路の第１の状態を示す概念図である。
【図６】図６は、第２の実施の形態に係るフリップフロップ回路の第２の状態を示す概念図である。
【図７】図７は、第２の実施の形態に係るフリップフロップ回路の第３の状態を示す概念図である。
【図８】図８は、第２の実施の形態に係るフリップフロップ回路の故障検出回路の構成例を示す回路図である。
【図９】図９は、第２の実施の形態に係る半導体装置のテスト方法を示すフローチャートである。
【図１０】図１０は、第２の実施の形態に係るフリップフロップ回路の変形例を示す回路ブロック図である。
【図１１】図１１は、第３の実施の形態に係るフリップフロップ回路の構成を示す回路ブロック図である。
【図１２】図１２は、第３の実施の形態に係るフリップフロップ回路の切り替え制御回路の構成例を示す回路ブロック図である。
【図１３】図１３は、第３の実施の形態に係るフリップフロップ回路の第１の状態を示す概念図である。
【図１４】図１４は、第３の実施の形態に係るフリップフロップ回路の第２の状態を示す概念図である。
【図１５】図１５は、第３の実施の形態に係るフリップフロップ回路の故障検出回路の構成例を示す回路図である。
【図１６】図１６は、第３の実施の形態に係るフリップフロップ回路の変形例を示す回路ブロック図である。
【発明を実施するための形態】
【００１１】
添付図面を参照して、実施の形態に係る半導体装置を説明する。
【００１２】
１．第１の実施の形態
図１は、本実施の形態に係る半導体装置の構成を示す概略図である。図２は、その半導体装置に搭載されたフリップフロップ回路１の構成を概略的に示すブロック図である。
【００１３】
フリップフロップ回路１は、入力端子Ｄ、スキャン入力端子ＳＣＩ、クロック入力端子ＣＫＩ、及び出力端子Ｑを備えている。入力端子Ｄには、入力データＤｉｎが入力される。スキャン入力端子ＳＣＩには、スキャンデータＳＣＡＮが入力される。クロック入力端子ＣＫＩには、クロック信号ＣＬＫが入力される。出力端子Ｑからは、出力データＤｏｕｔが出力される。
【００１４】
フリップフロップ回路１は、クロック信号ＣＬＫに基づいて動作する。より詳細には、通常動作モード時、フリップフロップ回路１は、クロック信号ＣＬＫに基づいて入力データＤｉｎをラッチし、ラッチしたデータを出力データＤｏｕｔとして出力する。スキャンモード時、フリップフロップ回路１は、クロック信号ＣＬＫに基づいてスキャンデータＳＣＡＮをラッチし、ラッチしたデータを出力データＤｏｕｔとして出力する。
【００１５】
本実施の形態に係るフリップフロップ回路１の入力端子Ｄ、スキャン入力端子ＳＣＩ、クロック入力端子ＣＫＩ、及び出力端子Ｑは、既存のフリップフロップ回路が備えるものと同じである。従って、本実施の形態に係るフリップフロップ回路１を、既存のフリップフロップ回路の代替としてそのまま使用することができる。また、図１に示されるように、あるフリップフロップ回路１の出力端子Ｑを他のフリップフロップ回路１のスキャン入力端子ＳＣＩに接続することによって、スキャンチェーンを構成することができる。このスキャンチェーンを構成する際、特別な手法は不要であり、既存の手法を適用することが可能である。
【００１６】
その一方で、本実施の形態に係るフリップフロップ回路１は、その内部に、既存のフリップフロップ回路が有さない機能を搭載している。より詳細には、図２に示されるように、フリップフロップ回路１は、ラッチ部１０、冗長ラッチ部２０、及び救済制御回路３０を備えている。
【００１７】
ラッチ部１０は、クロック信号ＣＬＫに基づいてデータをラッチする機能を有している。ラッチ部１０に入力されるデータは、以下「ラッチ入力データＩ１０」と参照される。また、ラッチ部１０から出力されるデータは、以下「ラッチ出力データＯ１０」と参照される。つまり、ラッチ部１０は、クロック信号ＣＬＫに基づいてラッチ入力データＩ１０をラッチし、ラッチ出力データＯ１０を出力するように構成されている。
【００１８】
冗長ラッチ部２０は、クロック信号ＣＬＫに基づいてデータをラッチする機能を有している。冗長ラッチ部２０に入力されるデータは、以下「冗長ラッチ入力データＩ２０」と参照される。また、冗長ラッチ部２０から出力されるデータは、以下「冗長ラッチ出力データＯ２０」と参照される。つまり、冗長ラッチ部２０は、クロック信号ＣＬＫに基づいて冗長ラッチ入力データＩ２０をラッチし、冗長ラッチ出力データＯ２０を出力するように構成されている。この冗長ラッチ部２０は、ラッチ部１０が故障した場合にその代わりに使用される。
【００１９】
救済制御回路３０は、ラッチ部１０の故障検出を行う機能を有している。より詳細には、救済制御回路３０は、ラッチ部１０に入力されるラッチ入力データＩ１０とラッチ部１０から出力されるラッチ出力データＯ１０との比較を行い、それにより、ラッチ部１０の出力固定故障を検出する。
【００２０】
更に、救済制御回路３０は、ラッチ部１０の故障が検出された場合に冗長ラッチ部２０を用いて不良救済を自動的に行う機能を有している。より詳細には、ラッチ部１０の故障を検出した場合、救済制御回路３０は、ラッチ入力データＩ１０を冗長ラッチ入力データＩ２０として冗長ラッチ部２０に供給し、また、冗長ラッチ出力データＯ２０をラッチ出力データＯ１０としてラッチ部１０の後段に供給する。これにより、ラッチ部１０を通っていたデータ経路が、冗長ラッチ部２０を通るデータ経路に切り替えられることになる。すなわち、冗長ラッチ部２０を用いることにより、不良救済が行われる。
【００２１】
以上に説明されたように、本実施の形態に係るフリップフロップ回路１は、それ自身が故障検出・救済機能を備えている。従って、フリップフロップ回路１とは別の冗長フリップフロップを配置することなく、不良救済を実現し、半導体装置の歩留まりを向上させることが可能となる。
【００２２】
また、フリップフロップ回路１とは別の冗長フリップフロップを配置する必要がないため、スキャンチェーンを構成する際やＡＴＰＧパタンを生成する際に、特別な手法は不要であり、既存の手法を適用することが可能である。すなわち、本実施の形態によれば、不良救済可能で、且つ、既存のスキャン技術を適用可能なフリップフロップ回路１が実現される。既存のスキャン技術が適用可能であるため、スキャンテストに要する時間やコストの増加が防止される。
【００２３】
更に、本実施の形態に係るフリップフロップ回路１は、既存のフリップフロップ回路と同様の端子群を備えている。よって、本実施の形態に係るフリップフロップ回路１を、既存のフリップフロップ回路の代替としてそのまま使用することができる。既存のフリップフロップ回路を本実施の形態に係るフリップフロップ回路１で置き換えても、フリップフロップの数が増えることはない。このことも、スキャンテストに要する時間やコストの増加の防止に寄与する。
【００２４】
２．第２の実施の形態
第２の実施の形態では、上記第１の実施の形態の１つの具体例を説明する。尚、第１の実施の形態と重複する説明は適宜省略する。
【００２５】
２−１．全体構成
図３は、第２の実施の形態に係るフリップフロップ回路１の構成を示す回路ブロック図である。フリップフロップ回路１は、入力セレクタ１００、第１ラッチ回路１１０、第２ラッチ回路１２０、第３ラッチ回路１３０、セレクタ１４０、セレクタ１５０、切り替え制御回路１６０、及び故障検出回路１７０を備えている。
【００２６】
入力セレクタ１００は、入力端子Ｄ及びスキャン入力端子ＳＣＩに接続されており、入力データＤｉｎ及びスキャンデータＳＣＡＮを受け取ることができるように構成されている。この入力セレクタ１００は、テスト信号（図示されない）に応じて、入力データＤｉｎあるいはスキャンデータＳＣＡＮのいずれか一方を選択し、選択した一方を第１入力データＩ１１０として出力する。より詳細には、通常動作モード時、入力端子Ｄには入力データＤｉｎが入力され、入力セレクタ１００は、その入力データＤｉｎを選択し、第１入力データＩ１１０として出力する。一方、スキャンモード時、スキャン入力端子ＳＣＩにはスキャンデータＳＣＡＮが入力され、入力セレクタ１００は、そのスキャンデータＳＣＡＮを選択し、第１入力データＩ１１０として出力する。
【００２７】
第１ラッチ回路１１０は、第１クロック信号ＣＬＫ１に基づいて動作するラッチ回路である。その第１クロック信号ＣＬＫ１は、クロック信号ＣＬＫから生成される。より詳細には、第１ラッチ回路１１０の入力端子には、上記の第１入力データＩ１１０が、スキュー調整用のバッファ１０１を通して入力される。第１ラッチ回路１１０は、その第１入力データＩ１１０を第１クロック信号ＣＬＫ１に基づいてラッチし、第１出力データＯ１１０として出力する。
【００２８】
尚、第１ラッチ回路１１０は、図２で示されたラッチ部１０に相当する。第１ラッチ回路１１０に入力される第１入力データＩ１１０は、ラッチ部１０に入力されるラッチ入力データＩ１０に相当する。また、第１ラッチ回路１１０から出力される第１出力データＯ１１０は、ラッチ部１０から出力されるラッチ出力データＯ１０に相当する。
【００２９】
第２ラッチ回路１２０は、第２クロック信号ＣＬＫ２に基づいて動作するラッチ回路である。その第２クロック信号ＣＬＫ２は、第１クロック信号ＣＬＫ１の反転信号であり、クロック信号ＣＬＫから生成される。より詳細には、第２ラッチ回路１２０の入力端子には、第２入力データＩ１２０が、スキュー調整用のバッファ１０２を通して入力される。第２ラッチ回路１２０は、その第２入力データＩ１２０を第２クロック信号ＣＬＫ２に基づいてラッチし、第２出力データＯ１２０として出力する。
【００３０】
尚、第２ラッチ回路１２０も、図２で示されたラッチ部１０に相当する。第２ラッチ回路１２０に入力される第２入力データＩ１２０は、ラッチ部１０に入力されるラッチ入力データＩ１０に相当する。また、第２ラッチ回路１２０から出力される第２出力データＯ１２０は、ラッチ部１０から出力されるラッチ出力データＯ１０に相当する。
【００３１】
第３ラッチ回路１３０は、第３クロック信号ＣＬＫ３に基づいて動作するラッチ回路である。その第３クロック信号ＣＬＫ３は、第１クロック信号ＣＬＫ１あるいは第２クロック信号ＣＬＫ２である。より詳細には、第３ラッチ回路１３０の入力端子には、第３入力データＩ１３０が入力される。第３ラッチ回路１３０は、その第３入力データＩ１３０を第３クロック信号ＣＬＫ３に基づいてラッチし、第３出力データＯ１３０として出力する。
【００３２】
尚、第３ラッチ回路１３０は、図２で示された冗長ラッチ部２０に相当する。第３ラッチ回路１３０に入力される第３入力データＩ１３０は、冗長ラッチ部２０に入力される冗長ラッチ入力データＩ２０に相当する。また、第３ラッチ回路１３０から出力される第３出力データＯ１３０は、冗長ラッチ部２０から出力される冗長ラッチ出力データＯ２０に相当する。
【００３３】
セレクタ１４０は、第１ラッチ回路１１０の出力端子及び第３ラッチ回路１３０の出力端子に接続されており、第１出力データＯ１１０及び第３出力データＯ１３０を受け取ることができるように構成されている。このセレクタ１４０は、第１制御信号ＳＡに応じて、第１出力データＯ１１０あるいは第３出力データＯ１３０のいずれか一方を選択し、選択した一方を上記の第２入力データＩ１２０として出力する。詳細は後述される。
【００３４】
セレクタ１５０は、第２ラッチ回路１２０の出力端子及び第３ラッチ回路１３０の出力端子に接続されており、第２出力データＯ１２０及び第３出力データＯ１３０を受け取ることができるように構成されている。このセレクタ１５０は、第２制御信号ＳＢに応じて、第２出力データＯ１２０あるいは第３出力データＯ１３０のいずれか一方を選択し、選択した一方を出力データＤｏｕｔとして出力端子Ｑに出力する。詳細は後述される。
【００３５】
切り替え制御回路１６０は、第３ラッチ回路１３０に入力される第３入力データＩ１３０及び第３クロック信号ＣＬＫ３を、第１制御信号ＳＡ及び第２制御信号ＳＢに応じて切り替えるように構成されている。詳細は後述される。
【００３６】
故障検出回路１７０は、第１ラッチ回路１１０及び第２ラッチ回路１２０の故障（出力固定故障）を検出するための回路である。より詳細には、故障検出回路１７０は、第１入力データＩ１１０及び第１出力データＯ１１０を受け取り、それら第１入力データＩ１１０と第１出力データＯ１１０とを比較することによって第１ラッチ回路１１０の故障を検出する。その比較結果、すなわち、第１ラッチ回路１１０の故障の有無を示すのが、上記の第１制御信号ＳＡである。また、故障検出回路１７０は、第２入力データＩ１２０及び第２出力データＯ１２０を受け取り、それら第２入力データＩ１２０と第２出力データＯ１２０とを比較することによって第２ラッチ回路１２０の故障を検出する。その比較結果、すなわち、第２ラッチ回路１２０の故障の有無を示すのが、上記の第２制御信号ＳＢである。
【００３７】
故障検出回路１７０は、第１制御信号ＳＡ及び第２制御信号ＳＢを、セレクタ１４０、セレクタ１５０及び切り替え制御回路１６０に出力する。これにより、次に説明されるように、フリップフロップ回路１内部におけるデータ経路の切り替えが実現される。尚、故障検出回路１７０は、第１制御信号ＳＡ及び第２制御信号ＳＢ（すなわち、第１ラッチ回路１１０及び第２ラッチ回路１２０の故障状況）を記憶する記憶回路１７７を備えていてもよい。
【００３８】
２−２．データ経路の切り替え
本例では、第１制御信号ＳＡの初期値はＬｏｗレベルであり、第１ラッチ回路１１０の故障が検出された場合、第１制御信号ＳＡがＨｉｇｈレベルに切り替えられるとする。また、第２制御信号ＳＢの初期値はＬｏｗレベルであり、第２ラッチ回路１２０の故障が検出された場合、第２制御信号ＳＢがＨｉｇｈレベルに切り替えられるとする。
【００３９】
セレクタ１４０は、第１制御信号ＳＡに応じて、第１出力データＯ１１０あるいは第３出力データＯ１３０のいずれか一方を選択し、選択した一方を上記の第２入力データＩ１２０として出力する。より詳細には、第１制御信号ＳＡがＬｏｗレベルの場合、セレクタ１４０は、第１出力データＯ１１０を選択し、第１出力データＯ１１０を第２入力データＩ１２０として出力する。一方、第１制御信号ＳＡがＨｉｇｈレベルの場合、セレクタ１４０は、第３出力データＯ１３０を選択し、第３出力データＯ１３０を第２入力データＩ１２０として出力する。
【００４０】
セレクタ１５０は、第２制御信号ＳＢに応じて、第２出力データＯ１２０あるいは第３出力データＯ１３０のいずれか一方を選択し、選択した一方を出力データＤｏｕｔとして出力端子Ｑに出力する。より詳細には、第２制御信号ＳＢがＬｏｗレベルの場合、セレクタ１５０は、第２出力データＯ１２０を選択し、第２出力データＯ１２０を出力データＤｏｕｔとして出力端子Ｑに出力する。一方、第２制御信号ＳＢがＨｉｇｈレベルの場合、セレクタ１５０は、第３出力データＯ１３０を選択し、第３出力データＯ１３０を力データＤｏｕｔとして出力端子Ｑに出力する。
【００４１】
切り替え制御回路１６０は、第３ラッチ回路１３０に入力される第３入力データＩ１３０及び第３クロック信号ＣＬＫ３を、第１制御信号ＳＡ及び第２制御信号ＳＢに応じて切り替える。図４は、そのような切り替え制御回路１６０の構成例を示している。
【００４２】
図４に示されるように、切り替え制御回路１６０は、ＡＮＤ回路１６１、１６２、ＯＲ回路１６３、ＡＮＤ回路１６４、１６５、及びＯＲ回路１６６を備えている。ＡＮＤ回路１６１には、第１入力データＩ１１０及び第１制御信号ＳＡが入力される。ＡＮＤ回路１６２には、第２入力データＩ１２０及び第２制御信号ＳＢが入力される。ＯＲ回路１６３には、ＡＮＤ回路１６１からの出力データ及びＡＮＤ回路１６２からの出力データが入力される。そのＯＲ回路１６３からの出力データが、第３入力データＩ１３０である。ＡＮＤ回路１６４には、第１クロック信号ＣＬＫ１（第２クロック信号ＣＬＫ２の反転信号）及び第１制御信号ＳＡが入力される。ＡＮＤ回路１６５には、第２クロック信号ＣＬＫ２及び第２制御信号ＳＢが入力される。ＯＲ回路１６６には、ＡＮＤ回路１６４からの出力データ及びＡＮＤ回路１６５からの出力データが入力される。そのＯＲ回路１６６からの出力データが、第３クロック信号ＣＬＫ３である。
【００４３】
図４で示された構成の場合、第１制御信号ＳＡ及び第２制御信号ＳＢの組み合わせに応じて、第３入力データＩ１３０及び第３クロック信号ＣＬＫ３は次のように切り替えられる。すなわち、第１制御信号ＳＡ及び第２制御信号ＳＢが共にＬｏｗレベルの場合、第３入力データＩ１３０及び第３クロック信号ＣＬＫ３は共にＬｏｗレベルに固定される。第１制御信号ＳＡがＨｉｇｈレベルで、第２制御信号ＳＢがＬｏｗレベルの場合、第３入力データＩ１３０は第１入力データＩ１１０となり、第３クロック信号ＣＬＫ３は第１クロック信号ＣＬＫ１となる。第１制御信号ＳＡがＬｏｗレベルで、第２制御信号ＳＢがＨｉｇｈレベルの場合、第３入力データＩ１３０は第２入力データＩ１２０となり、第３クロック信号ＣＬＫ３は第２クロック信号ＣＬＫ２となる。
【００４４】
以上に説明されたセレクタ１４０、セレクタ１５０及び切り替え制御回路１６０での切り替えの結果、本実施の形態に係るフリップフロップ回路１の状態として、次の第１〜第３の状態があり得る。
【００４５】
＜第１の状態：ＳＡ＝Ｌ、ＳＢ＝Ｌ＞
図５は、第１の状態を示している。第１の状態では、第１制御信号ＳＡ及び第２制御信号ＳＢは共にＬｏｗレベルである。これは、第１ラッチ回路１１０と第２ラッチ回路１２０の両方が正常であり、故障が検出されていない状態である。
【００４６】
第１ラッチ回路１１０は、第１入力データＩ１１０を第１クロック信号ＣＬＫ１に基づいてラッチし、第１出力データＯ１１０として出力する。セレクタ１４０は、第１出力データＯ１１０を選択し、第１出力データＯ１１０を第２入力データＩ１２０として第２ラッチ回路１２０に出力する。第２ラッチ回路１２０は、その第２入力データＩ１２０を第２クロック信号ＣＬＫ２に基づいてラッチし、第２出力データＯ１２０として出力する。セレクタ１５０は、第２出力データＯ１２０を選択し、第２出力データＯ１２０を出力データＤｏｕｔとして出力端子Ｑに出力する。
【００４７】
このように、第１の状態では、第１ラッチ回路１１０と第２ラッチ回路１２０によりフリップフロップ回路１の機能が実現される。
【００４８】
＜第２の状態：ＳＡ＝Ｈ、ＳＢ＝Ｌ＞
図６は、第２の状態を示している。第２の状態では、第１制御信号ＳＡがＨｉｇｈレベルであり、第２制御信号ＳＢはＬｏｗレベルである。これは、第２ラッチ回路１２０は正常であるが、第１ラッチ回路１１０の故障が検出されている状態である。
【００４９】
切り替え制御回路１６０は、第１入力データＩ１１０を受け取り、その第１入力データＩ１１０を第３入力データＩ１３０として第３ラッチ回路１３０に供給する。また、切り替え制御回路１６０は、第３クロック信号ＣＬＫ３として第１クロック信号ＣＬＫ１を第３ラッチ回路１３０に供給する。第３ラッチ回路１３０は、その第３入力データＩ１３０（第１入力データＩ１１０）を第３クロック信号ＣＬＫ３（第１クロック信号ＣＬＫ１）に基づいてラッチし、第３出力データＯ１３０として出力する。セレクタ１４０は、その第３出力データＯ１３０を選択し、第３出力データＯ１３０を第２入力データＩ１２０として第２ラッチ回路１２０に出力する。第２ラッチ回路１２０は、その第２入力データＩ１２０を第２クロック信号ＣＬＫ２に基づいてラッチし、第２出力データＯ１２０として出力する。セレクタ１５０は、第２出力データＯ１２０を選択し、第２出力データＯ１２０を出力データＤｏｕｔとして出力端子Ｑに出力する。
【００５０】
このように、第２の状態では、第３ラッチ回路１３０と第２ラッチ回路１２０によりフリップフロップ回路１の機能が実現される。これは、故障した第１ラッチ回路１１０が第３ラッチ回路１３０によって置き換えられ、不良救済が行われていることを意味する。
【００５１】
＜第３の状態：ＳＡ＝Ｌ、ＳＢ＝Ｈ＞
図７は、第３の状態を示している。第３の状態では、第１制御信号ＳＡはＬｏｗレベルであり、第２制御信号ＳＢがＨｉｇｈレベルである。これは、第１ラッチ回路１１０は正常であるが、第２ラッチ回路１２０の故障が検出されている状態である。
【００５２】
第１ラッチ回路１１０は、第１入力データＩ１１０を第１クロック信号ＣＬＫ１に基づいてラッチし、第１出力データＯ１１０として出力する。セレクタ１４０は、第１出力データＯ１１０を選択し、第１出力データＯ１１０を第２入力データＩ１２０として出力する。切り替え制御回路１６０は、第２入力データＩ１２０を受け取り、その第２入力データＩ１２０（つまりは、第１出力データＯ１１０）を第３入力データＩ１３０として第３ラッチ回路１３０に供給する。また、切り替え制御回路１６０は、第３クロック信号ＣＬＫ３として第２クロック信号ＣＬＫ２を第３ラッチ回路１３０に供給する。第３ラッチ回路１３０は、その第３入力データＩ１３０（第１出力データＯ１１０）を第３クロック信号ＣＬＫ３（第２クロック信号ＣＬＫ２）に基づいてラッチし、第３出力データＯ１３０として出力する。セレクタ１５０は、その第３出力データＯ１３０を選択し、第３出力データＯ１３０を力データＤｏｕｔとして出力端子Ｑに出力する。
【００５３】
このように、第３の状態では、第１ラッチ回路１１０と第３ラッチ回路１３０によりフリップフロップ回路１の機能が実現される。これは、故障した第２ラッチ回路１２０が第３ラッチ回路１３０によって置き換えられ、不良救済が行われていることを意味する。
【００５４】
＜救済制御回路３０＞
以上に説明されたように、故障検出回路１７０は、第１ラッチ回路１１０及び第２ラッチ回路１２０の故障を検出し、故障状況を示す第１制御信号ＳＡ及び第２制御信号ＳＢを生成する。そして、セレクタ１４０、セレクタ１５０及び切り替え制御回路１６０は、それら第１制御信号ＳＡ及び第２制御信号ＳＢに応じてデータ経路を適宜切り替え、不良救済を行う。すなわち、セレクタ１４０、セレクタ１５０、切り替え制御回路１６０及び故障検出回路１７０のセットが、図２で示された「救済制御回路３０」に相当していると言える。
【００５５】
２−３．故障検出及び救済処理
次に、図８を参照して、故障検出回路１７０の具体例を説明する。図８に示される故障検出回路１７０は、ＥＸＯＲ回路１７１、１７２を備えている。
【００５６】
ＥＸＯＲ回路１７１には、第１入力データＩ１１０及び第１出力データＯ１１０が入力される。このＥＸＯＲ回路１７１は、第１入力データＩ１１０と第１出力データＯ１１０とが一致しているか否かを判定し、その判定結果を出力データとして出力する。
【００５７】
故障検出処理時、第１ラッチ回路１１０には、データ「０」あるいはデータ「１」が連続的に供給される。第１ラッチ回路１１０が正常な場合、第１入力データＩ１１０と第１出力データＯ１１０とは一致し、ＥＸＯＲ回路１７１からの出力データはＬｏｗレベルとなる。
【００５８】
一方、出力が「１」に固定された第１ラッチ回路１１０にデータ「０」が連続的に供給された場合、第１入力データＩ１１０と第１出力データＯ１１０とが不一致となり、ＥＸＯＲ回路１７１からの出力データはＨｉｇｈレベルとなる。また、出力が「０」に固定された第１ラッチ回路１１０にデータ「１」が連続的に供給された場合、第１入力データＩ１１０と第１出力データＯ１１０とが不一致となり、ＥＸＯＲ回路１７１からの出力データはＨｉｇｈレベルとなる。
【００５９】
このように、ＥＸＯＲ回路１７１は、第１入力データＩ１１０と第１出力データＯ１１０とが一致しているか否かを判定することにより、第１ラッチ回路１１０において出力固定故障が発生しているか否かを判断する。出力固定故障が検出されない場合、ＥＸＯＲ回路１７１からの出力データはＬｏｗレベルであり、出力固定故障が検出された場合、ＥＸＯＲ回路１７１からの出力データはＨｉｇｈレベルとなる。すなわち、ＥＸＯＲ回路１７１からの出力データは、第１ラッチ回路１１０の故障状態を示す上記の第１制御信号ＳＡに相当する。
【００６０】
同様に、ＥＸＯＲ回路１７２には、第２入力データＩ１２０及び第２出力データＯ１２０が入力される。このＥＸＯＲ回路１７２は、第２入力データＩ１２０と第２出力データＯ１２０とが一致しているか否かを判定することにより、第２ラッチ回路１２０において出力固定故障が発生しているか否かを判断する。出力固定故障が検出されない場合、ＥＸＯＲ回路１７２からの出力データはＬｏｗレベルであり、出力固定故障が検出された場合、ＥＸＯＲ回路１７２からの出力データはＨｉｇｈレベルとなる。すなわち、ＥＸＯＲ回路１７２からの出力データは、第２ラッチ回路１２０の故障状態を示す上記の第２制御信号ＳＢに相当する。
【００６１】
図８に示される故障検出回路１７０は、更に、第１制御信号ＳＡ及び第２制御信号ＳＢを記憶するための構成として、ＡＮＤ回路１７３、１７４、ＥＸＯＲ回路１７５、ＡＮＤ回路１７６、記憶回路１７７、及びＮＯＲ回路１７８を備えている。
【００６２】
ＡＮＤ回路１７３には、ＥＸＯＲ回路１７１、ＥＸＯＲ回路１７５及びＡＮＤ回路１７６のそれぞれからの出力データが入力される。
【００６３】
ＡＮＤ回路１７４には、ＥＸＯＲ回路１７２、ＥＸＯＲ回路１７５及びＡＮＤ回路１７６のそれぞれからの出力データが入力される。
【００６４】
ＥＸＯＲ回路１７５には、ＥＸＯＲ回路１７１、１７２のそれぞれからの出力データが入力される。
【００６５】
ＡＮＤ回路１７６には、カットパルスＣＰ及びＮＯＲ回路１７８からの出力データが入力される。
【００６６】
記憶回路１７７は、第１ヒューズ回路１７７Ａ及び第２ヒューズ回路１７７Ｂを含んでいる。第１ヒューズ回路１７７Ａは、ＡＮＤ回路１７３の出力端子に接続されている。一方、第２ヒューズ回路１７７Ｂは、ＡＮＤ回路１７４の出力端子に接続されている。これら第１ヒューズ回路１７７Ａ及び第２ヒューズ回路１７７Ｂの各々は、カットパルスＣＰの印加によってその状態が変化する。カットパルスＣＰは、フリップフロップ回路１の外部から供給される。そのため、図３に示されるように、本実施の形態に係るフリップフロップ回路１は、カットパルスＣＰが入力されるカットパルス入力端子ＣＰＩを備えている。
【００６７】
第１ヒューズ回路１７７Ａは、第１制御信号ＳＡを保持するために設けられている。例えば、第１ヒューズ回路１７７Ａはアンチヒューズであり、初期状態での保持データはＬｏｗレベルである（第１制御信号ＳＡ＝Ｌｏｗレベル）。第１ラッチ回路１１０の出力固定故障が検出された場合、ＥＸＯＲ回路１７１からの出力データ（第１制御信号ＳＡ）は、上述の通りＨｉｇｈレベルとなる。この場合、カットパルスＣＰはＡＮＤ回路１７３を通過し、第１ヒューズ回路１７７Ａに印加される。その結果、第１ヒューズ回路１７７Ａの状態が切り替わり、その保持データがＬｏｗレベルからＨｉｇｈレベルに変わる。つまり、「第１制御信号ＳＡ＝Ｈｉｇｈレベル」が第１ヒューズ回路１７７Ａに書き込まれる。
【００６８】
第２ヒューズ回路１７７Ｂは、第２制御信号ＳＢを保持するために設けられている。例えば、第２ヒューズ回路１７７Ｂはアンチヒューズであり、初期状態での保持データはＬｏｗレベルである（第２制御信号ＳＢ＝Ｌｏｗレベル）。第２ラッチ回路１２０の出力固定故障が検出された場合、ＥＸＯＲ回路１７２からの出力データ（第２制御信号ＳＢ）は、上述の通りＨｉｇｈレベルとなる。この場合、カットパルスＣＰはＡＮＤ回路１７４を通過し、第２ヒューズ回路１７７Ｂに印加される。その結果、第２ヒューズ回路１７７Ｂの状態が切り替わり、その保持データがＬｏｗレベルからＨｉｇｈレベルに変わる。つまり、「第２制御信号ＳＢ＝Ｈｉｇｈレベル」が第２ヒューズ回路１７７Ｂに書き込まれる。
【００６９】
尚、ＥＸＯＲ回路１７１、１７２からの出力データが共にＨｉｇｈレベルとなった場合、ＥＸＯＲ回路１７５からの出力データはＬｏｗレベルとなる。この場合、カットパルスＣＰは、ＡＮＤ回路１７３、１７４を通過しない。つまり、ＥＸＯＲ回路１７５は、第１ラッチ回路１１０と第２ラッチ回路１２０の両方が故障した場合にカットパルスＣＰを無効化する役割を果たす。
【００７０】
また、ＮＯＲ回路１７８には、第１制御信号ＳＡ及び第２制御信号ＳＢが入力される。第１制御信号ＳＡあるいは第２制御信号ＳＢのいずれかが既にＨｉｇｈレベルになっている場合、ＮＯＲ回路１７８からの出力データはＬｏｗレベルとなり、カットパルスＣＰはＡＮＤ回路１７６を通過しない。つまり、ＮＯＲ回路１７８は、第１制御信号ＳＡあるいは第２制御信号ＳＢのいずれかが既にＨｉｇｈレベルになっている場合にカットパルスＣＰを無効化する役割を果たす。
【００７１】
カットパルスＣＰが無効化された場合、第１ヒューズ回路１７７Ａ及び第２ヒューズ回路１７７Ｂの状態は変わらず、第１制御信号ＳＡ及び第２制御信号ＳＢも変化しない。ＥＸＯＲ回路１７５及びＮＯＲ回路１７８は、第１制御信号ＳＡと第２制御信号ＳＢが同時にＨｉｇｈレベルになることを防止していると言える。本実施の形態では、救済されるのは第１ラッチ回路１１０か第２ラッチ回路１２０のいずれか一方の故障であり、第１ラッチ回路１１０と第２ラッチ回路１２０の両方が故障した場合には救済は行われないのである。
【００７２】
次に、本実施の形態に係る半導体装置のテスト方法を説明する。本実施の形態では、通常のスキャンテストの前に、フリップフロップ回路１が有する自己故障検出・救済機能を利用した不良救済フローが実施される。すなわち、通常のスキャンテストの前に、可能な限り、各フリップフロップ回路１の内部で不良救済を実施しておく。
【００７３】
図９は、本実施の形態に係る半導体装置のテスト方法を示すフローチャートである。このテストにおいて、半導体装置の動作モードは、スキャンモードに設定される。よって、入力セレクタ１００は、スキャン入力端子ＳＣＩに入力されるスキャンデータＳＣＡＮを、第１入力データＩ１１０として出力する。また、第１制御信号ＳＡ及び第２制御信号ＳＢは共に初期状態（Ｌｏｗレベル）であり、各フリップフロップ回路１は、図５で示された第１の状態となっている。また、カットパルス入力端子ＣＰＩにカットパルスＣＰが印加される。
【００７４】
＜出力「１」固定故障の検出及び救済＞
まず、第１ラッチ回路１１０及び第２ラッチ回路１２０に関して、出力が「１」に固定される故障の検出が行われる。そのために、スキャンデータＳＣＡＮとして、データ「０」が連続的に与えられる（ステップＳ１０）。故障が検出されない場合（ステップＳ１１；Ｎｏ）、処理はステップＳ２０に進む。
【００７５】
一方、故障が検出された場合（ステップＳ１１；Ｙｅｓ）、処理はステップＳ１２に進む。ヒューズ回路（１７７Ａあるいは１７７Ｂ）に不良が発生している場合（ステップＳ１２；Ｙｅｓ）、カットパルスＣＰの印加は停止する（ステップＳ２５）。ヒューズ回路が不良である場合として、例えば、ヒューズ回路の出力がＨｉｇｈレベルに固定されている場合が考えられる。それ以外の場合（ステップＳ１２；Ｎｏ）、カットパルスＣＰの印加により、カット対象のヒューズ回路（１７７Ａあるいは１７７Ｂ）がカットされる（ステップＳ１３）。これにより、故障が検出されたラッチ回路（１１０あるいは１２０）が第３ラッチ回路１３０により置き換えられる。つまり、フリップフロップ回路１の内部で不良救済が自動的に行われる。
【００７６】
＜出力「０」固定故障の検出及び救済＞
次に、第１ラッチ回路１１０及び第２ラッチ回路１２０に関して、出力が「０」に固定される故障の検出が行われる。そのために、スキャンデータＳＣＡＮとして、データ「１」が連続的に与えられる（ステップＳ２０）。故障が検出されない場合（ステップＳ２１；Ｎｏ）、処理はステップＳ３０に進む。
【００７７】
一方、故障が検出された場合（ステップＳ２１；Ｙｅｓ）、処理はステップＳ２２に進む。第１ヒューズ回路１７７Ａあるいは第２ヒューズ回路１７７Ｂのいずれかが既にカット済みの場合（ステップＳ２２；Ｙｅｓ）、カットパルスＣＰの印加は停止する（ステップＳ２５）。それ以外の場合（ステップＳ２２；Ｎｏ）、カットパルスＣＰの印加により、カット対象のヒューズ回路（１７７Ａあるいは１７７Ｂ）がカットされる（ステップＳ２３）。これにより、故障が検出されたラッチ回路（１１０あるいは１２０）が第３ラッチ回路１３０により置き換えられる。つまり、フリップフロップ回路１の内部で不良救済が自動的に行われる。
【００７８】
＜通常のスキャンテスト＞
その後、通常のスキャンテストが実施される（ステップＳ３０）。このスキャンテストにより、良品／不良品の判定が可能である。
【００７９】
２−４．変形例
図１０は、本実施の形態の変形例を示す回路ブロック図である。本変形例では、第１制御信号ＳＡ及び第２制御信号ＳＢを外部から強制的に設定可能である。具体的には、フリップフロップ回路１は、セレクト信号ＳＥＬが入力されるセレクト信号入力端子ＳＬＩを備えている。そのセレクト信号ＳＥＬは、第１制御信号ＳＡ及び第２制御信号ＳＢの内容を指定しており、故障検出回路１７０に入力される。故障検出回路１７０は、記憶回路１７７に格納されている第１制御信号ＳＡ及び第２制御信号ＳＢを書き換えることなく、セレクト信号ＳＥＬで指定された第１制御信号ＳＡ及び第２制御信号ＳＢを出力する。
【００８０】
本変形例によれば、ヒューズ回路（１７７Ａ、１７７Ｂ）をカットすることなく、フリップフロップ回路１内部におけるデータ経路を試しに切り替えることができる。これにより、ヒューズ回路のカット前後の状態をあらかじめ比較することが可能となる。
【００８１】
また、データ経路を自由に切り替え可能なため、動作マージンの調整を行うことも可能となる。例えば、第１ラッチ回路１１０、第２ラッチ回路１２０と第３ラッチ回路１３０とでトランジスタ特性を変えておく。製造ばらつき等でマージンが不足した場合、トランジスタ特性の良い第３ラッチ回路１３０に切り替えることによって、マージンを増やすことが可能となる。
【００８２】
他の変形例として、ヒューズ回路（１７７Ａ、１７７Ｂ）の代わりにラッチ回路を用いることも考えられる。この場合、カットパルスＣＰは不要であり、カットパルス入力端子ＣＰＩはフリップフロップ回路１から省かれる。
【００８３】
３．第３の実施の形態
第３の実施の形態では、上記第１の実施の形態の他の具体例を説明する。尚、第１、第２の実施の形態と重複する説明は適宜省略する。
【００８４】
３−１．全体構成
図１１は、第３の実施の形態に係るフリップフロップ回路１の構成を示す回路ブロック図である。フリップフロップ回路１は、入力セレクタ２００、第１フリップフロップ２１０、第２フリップフロップ２２０、セレクタ２５０、切り替え制御回路２６０、及び故障検出回路２７０を備えている。
【００８５】
入力セレクタ２００は、入力端子Ｄ及びスキャン入力端子ＳＣＩに接続されており、入力データＤｉｎ及びスキャンデータＳＣＡＮを受け取ることができるように構成されている。この入力セレクタ２００は、テスト信号（図示されない）に応じて、入力データＤｉｎあるいはスキャンデータＳＣＡＮのいずれか一方を選択し、選択した一方を第１入力データＩ２１０として出力する。より詳細には、通常動作モード時、入力端子Ｄには入力データＤｉｎが入力され、入力セレクタ２００は、その入力データＤｉｎを選択し、第１入力データＩ２１０として出力する。一方、スキャンモード時、スキャン入力端子ＳＣＩにはスキャンデータＳＣＡＮが入力され、入力セレクタ２００は、そのスキャンデータＳＣＡＮを選択し、第１入力データＩ２１０として出力する。
【００８６】
第１フリップフロップ２１０は、クロック信号ＣＬＫに基づいて動作し、第１入力データＩ２１０を受け取り、第１出力データＯ２１０を出力するように構成されている。より詳細には、第１フリップフロップ２１０は、ラッチ回路２１１及びラッチ回路２１２を備えている。ラッチ回路２１１は、上記の第１入力データＩ２１０を第１クロック信号ＣＬＫ１に基づいてラッチする。ラッチ回路２１２は、ラッチ回路２１１からの出力データを第２クロック信号ＣＬＫ２に基づいてラッチし、第１出力データＯ２１０として出力する。第１クロック信号ＣＬＫ１と第２クロック信号ＣＬＫ２は、共にクロック信号ＣＬＫから生成され、且つ、互いに逆相である。
【００８７】
尚、第１フリップフロップ２１０は、図２で示されたラッチ部１０に相当する。第１ラッチ回路２１０に入力される第１入力データＩ２１０は、ラッチ部１０に入力されるラッチ入力データＩ１０に相当する。また、第１ラッチ回路２１０から出力される第１出力データＯ２１０は、ラッチ部１０から出力されるラッチ出力データＯ１０に相当する。
【００８８】
第２フリップフロップ２２０は、クロック信号ＣＬＫ’に基づいて動作し、第２入力データＩ２２０を受け取り、第２出力データＯ２２０を出力するように構成されている。より詳細には、第２フリップフロップ２２０は、ラッチ回路２２１及びラッチ回路２２２を備えている。ラッチ回路２２１は、上記の第２入力データＩ２２０を第１クロック信号ＣＬＫ１に基づいてラッチする。ラッチ回路２２２は、ラッチ回路２２１からの出力データを第２クロック信号ＣＬＫ２に基づいてラッチし、第２出力データＯ２２０として出力する。第１クロック信号ＣＬＫ１と第２クロック信号ＣＬＫ２は、共にクロック信号ＣＬＫ’から生成され、且つ、互いに逆相である。
【００８９】
尚、第２フリップフロップ２２０は、図２で示された冗長ラッチ部２０に相当する。第２フリップフロップ２２０に入力される第２入力データＩ２２０は、冗長ラッチ部２０に入力される冗長ラッチ入力データＩ２０に相当する。また、第２フリップフロップ２２０から出力される第２出力データＯ２２０は、冗長ラッチ部２０から出力される冗長ラッチ出力データＯ２０に相当する。
【００９０】
セレクタ２５０は、第１フリップフロップ２１０の出力端子及び第２フリップフロップ２２０の出力端子に接続されており、第１出力データＯ２１０及び第２出力データＯ２２０を受け取ることができるように構成されている。このセレクタ２５０は、制御信号ＳＣに応じて、第１出力データＯ２１０あるいは第２出力データＯ２２０のいずれか一方を選択し、選択した一方を出力データＤｏｕｔとして出力端子Ｑに出力する。詳細は後述される。
【００９１】
切り替え制御回路２６０は、第２フリップフロップ２２０に入力される第２入力データＩ２２０及びクロック信号ＣＬＫ’を、制御信号ＳＣに応じて切り替えるように構成されている。詳細は後述される。
【００９２】
故障検出回路２７０は、第１フリップフロップ２１０の故障（出力固定故障）を検出するための回路である。より詳細には、故障検出回路２７０は、第１入力データＩ２１０及び第１出力データＯ２１０を受け取り、それら第１入力データＩ２１０と第１出力データＯ２１０とを比較することによって第１フリップフロップ２１０の故障を検出する。その比較結果、すなわち、第１フリップフロップ２１０の故障の有無を示すのが、上記の制御信号ＳＣである。
【００９３】
故障検出回路２７０は、制御信号ＳＣを、セレクタ２５０及び切り替え制御回路２６０に出力する。これにより、次に説明されるように、フリップフロップ回路１内部におけるデータ経路の切り替えが実現される。尚、故障検出回路２７０は、制御信号ＳＣ（すなわち、第１フリップフロップ２１０の故障状況）を記憶する記憶回路２７４を備えていてもよい。
【００９４】
３−２．データ経路の切り替え
本例では、制御信号ＳＣの初期値はＬｏｗレベルであり、第１フリップフロップ２１０の故障が検出された場合、制御信号ＳＣがＨｉｇｈレベルに切り替えられるとする。
【００９５】
セレクタ２５０は、制御信号ＳＣに応じて、第１出力データＯ２１０あるいは第２出力データＯ２２０のいずれか一方を選択し、選択した一方を出力データＤｏｕｔとして出力端子Ｑに出力する。より詳細には、制御信号ＳＣがＬｏｗレベルの場合、セレクタ２５０は、第１出力データＯ２１０を選択し、第１出力データＯ２１０を出力データＤｏｕｔとして出力端子Ｑに出力する。一方、制御信号ＳＣがＨｉｇｈレベルの場合、セレクタ２５０は、第２出力データＯ２２０を選択し、第２出力データＯ２２０を力データＤｏｕｔとして出力端子Ｑに出力する。
【００９６】
切り替え制御回路２６０は、第２フリップフロップ２２０に入力される第２入力データＩ２２０及びクロック信号ＣＬＫ’を、制御信号ＳＣに応じて切り替える。図１２は、そのような切り替え制御回路２６０の構成例を示している。
【００９７】
図１２に示されるように、切り替え制御回路２６０は、ＡＮＤ回路２６１、２６２を備えている。ＡＮＤ回路２６１には、第１入力データＩ２１０及び制御信号ＳＣが入力される。そのＡＮＤ回路２６１から出力されるデータが第２入力データＩ２２０である。ＡＮＤ回路２６２には、クロック信号ＣＬＫ及び制御信号ＳＣが入力される。そのＡＮＤ回路２６２から出力されるデータがクロック信号ＣＬＫ’である。制御信号ＳＣがＬｏｗレベルの場合、第２入力データＩ２２０及びクロック信号ＣＬＫ’は共にＬｏｗレベルに固定される。制御信号ＳＣがＨｉｇｈレベルの場合、第２入力データＩ２２０は第１入力データＩ２１０となり、クロック信号ＣＬＫ’はクロック信号ＣＬＫとなる。
【００９８】
以上に説明されたセレクタ２５０及び切り替え制御回路２６０での切り替えの結果、本実施の形態に係るフリップフロップ回路１の状態として、次の第１、第２の状態があり得る。
【００９９】
＜第１の状態：ＳＣ＝Ｌ＞
図１３は、第１の状態を示している。第１の状態では、制御信号ＳＣがＬｏｗレベルである。これは、第１フリップフロップ２１０が正常であり、故障が検出されていない状態である。
【０１００】
第１フリップフロップ２１０は、クロック信号ＣＬＫに基づいて動作し、第１入力データＩ２１０を受け取り、第１出力データＯ２１０を出力する。セレクタ２５０は、第１出力データＯ２１０を選択し、第１出力データＯ２１０を出力データＤｏｕｔとして出力端子Ｑに出力する。
【０１０１】
このように、第１の状態では、第１フリップフロップ２１０によりフリップフロップ回路１の機能が実現される。
【０１０２】
＜第２の状態：ＳＣ＝Ｈ＞
図１４は、第２の状態を示している。第２の状態では、制御信号ＳＣがＨｉｇｈレベルである。これは、第１フリップフロップ２１０の故障が検出されている状態である。
【０１０３】
切り替え制御回路２６０は、第１入力データＩ２１０を受け取り、その第１入力データＩ２１０を第２入力データＩ２２０として第２フリップフロップ２２０に供給する。また、切り替え制御回路２６０は、クロック信号ＣＬＫをクロック信号ＣＬＫ’として第２フリップフロップ２２０に供給する。第２フリップフロップ２２０は、クロック信号ＣＬＫ’に基づいて動作し、第２入力データＩ２２０（第１入力データＩ２１０）を受け取り、第２出力データＯ２２０を出力する。セレクタ２５０は、第２出力データＯ２２０を選択し、第２出力データＯ２２０を出力データＤｏｕｔとして出力端子Ｑに出力する。
【０１０４】
このように、第２の状態では、第２フリップフロップ２２０によりフリップフロップ回路１の機能が実現される。これは、故障した第１フリップフロップ２１０が第２フリップフロップ２２０によって置き換えられ、不良救済が行われていることを意味する。
【０１０５】
＜救済制御回路３０＞
以上に説明されたように、故障検出回路２７０は、第１フリップフロップ２１０の故障を検出し、故障状況を示す制御信号ＳＣを生成する。そして、セレクタ２５０及び切り替え制御回路２６０は、その制御信号ＳＣに応じてデータ経路を適宜切り替え、不良救済を行う。すなわち、セレクタ２５０、切り替え制御回路２６０及び故障検出回路２７０のセットが、図２で示された「救済制御回路３０」に相当していると言える。
【０１０６】
３−３．故障検出及び救済処理
次に、図１５を参照して、故障検出回路２７０の具体例を説明する。図１５に示される故障検出回路２７０は、ＥＸＯＲ回路２７１を備えている。
【０１０７】
ＥＸＯＲ回路２７１には、第１入力データＩ２１０及び第１出力データＯ２１０が入力される。このＥＸＯＲ回路２７１は、第１入力データＩ２１０と第１出力データＯ２１０とが一致しているか否かを判定し、その判定結果を出力データとして出力する。
【０１０８】
故障検出処理時、第１フリップフロップ２１０には、データ「０」あるいはデータ「１」が連続的に供給される。第１フリップフロップ２１０が正常な場合、第１入力データＩ２１０と第１出力データＯ２１０とは一致し、ＥＸＯＲ回路２７１からの出力データはＬｏｗレベルとなる。
【０１０９】
一方、出力が「１」に固定された第１フリップフロップ２１０にデータ「０」が連続的に供給された場合、第１入力データＩ２１０と第１出力データＯ２１０とが不一致となり、ＥＸＯＲ回路２７１からの出力データはＨｉｇｈレベルとなる。また、出力が「０」に固定された第１フリップフロップ２１０にデータ「１」が連続的に供給された場合、第１入力データＩ２１０と第１出力データＯ２１０とが不一致となり、ＥＸＯＲ回路２７１からの出力データはＨｉｇｈレベルとなる。
【０１１０】
このように、ＥＸＯＲ回路２７１は、第１入力データＩ２１０と第１出力データＯ２１０とが一致しているか否かを判定することにより、第１フリップフロップ２１０において出力固定故障が発生しているか否かを判断する。出力固定故障が検出されない場合、ＥＸＯＲ回路２７１からの出力データはＬｏｗレベルであり、出力固定故障が検出された場合、ＥＸＯＲ回路２７１からの出力データはＨｉｇｈレベルとなる。すなわち、ＥＸＯＲ回路２７１からの出力データは、第１フリップフロップ２１０の故障状態を示す上記の制御信号ＳＣに相当する。
【０１１１】
図１５に示される故障検出回路２７０は、更に、制御信号ＳＣを記憶するための構成として、ＡＮＤ回路２７２、２７３、及び記憶回路２７４を備えている。
【０１１２】
ＡＮＤ回路２７２には、ＥＸＯＲ回路２７１及びＡＮＤ回路２７３のそれぞれからの出力データが入力される。
【０１１３】
ＡＮＤ回路２７３には、カットパルスＣＰ及び制御信号ＳＣの反転データが入力される。
【０１１４】
記憶回路２７４は、ヒューズ回路２７５を含んでいる。ヒューズ回路２７５は、ＡＮＤ回路２７２の出力端子に接続されている。このヒューズ回路２７５は、カットパルスＣＰの印加によってその状態が変化する。カットパルスＣＰは、フリップフロップ回路１の外部から供給される。そのため、図１１に示されるように、本実施の形態に係るフリップフロップ回路１は、カットパルスＣＰが入力されるカットパルス入力端子ＣＰＩを備えている。
【０１１５】
ヒューズ回路２７５は、制御信号ＳＣを保持するために設けられている。例えば、ヒューズ回路２７５はアンチヒューズであり、初期状態での保持データはＬｏｗレベルである（制御信号ＳＣ＝Ｌｏｗレベル）。第１フリップフロップ２１０の出力固定故障が検出された場合、ＥＸＯＲ回路２７１からの出力データ（制御信号ＳＣ）は、上述の通りＨｉｇｈレベルとなる。この場合、カットパルスＣＰはＡＮＤ回路２７２を通過し、ヒューズ回路２７５に印加される。その結果、ヒューズ回路２７５の状態が切り替わり、その保持データがＬｏｗレベルからＨｉｇｈレベルに変わる。つまり、「制御信号ＳＣ＝Ｈｉｇｈレベル」がヒューズ回路２７５に書き込まれる。
【０１１６】
尚、ＡＮＤ回路２７３には、ヒューズ回路２７５に保持されている制御信号ＳＣの反転データが入力される。制御信号ＳＣが既にＨｉｇｈレベルになっている場合、カットパルスＣＰはＡＮＤ回路２７３を通過しない。つまり、ＡＮＤ回路２７３は、制御信号ＳＣが既にＨｉｇｈレベルになっている場合にカットパルスを無効化する役割を果たす。
【０１１７】
本実施の形態に係る半導体装置のテスト方法は、第１の実施の形態の場合と同様である（図９参照）。
【０１１８】
３−４．変形例
図１６は、本実施の形態の変形例を示す回路ブロック図である。本変形例では、制御信号ＳＣを外部から強制的に設定可能である。具体的には、フリップフロップ回路１は、セレクト信号ＳＥＬが入力されるセレクト信号入力端子ＳＬＩを備えている。そのセレクト信号ＳＥＬは、制御信号ＳＣの内容を指定しており、故障検出回路２７０に入力される。故障検出回路２７０は、記憶回路２７４に格納されている制御信号ＳＣを書き換えることなく、セレクト信号ＳＥＬで指定された制御信号ＳＣを出力する。
【０１１９】
本変形例によれば、ヒューズ回路２７５をカットすることなく、フリップフロップ回路１内部におけるデータ経路を試しに切り替えることができる。これにより、ヒューズ回路２７５のカット前後の状態をあらかじめ比較することが可能となる。
【０１２０】
また、データ経路を自由に切り替え可能なため、動作マージンの調整を行うことも可能となる。例えば、第１フリップフロップ２１０と第２フリップフロップ２２０とでトランジスタ特性を変えておく。製造ばらつき等でマージンが不足した場合、トランジスタ特性の良い第２フリップフロップ２２０に切り替えることによって、マージンを増やすことが可能となる。
【０１２１】
他の変形例として、ヒューズ回路２７５の代わりにラッチ回路を用いることも考えられる。この場合、カットパルスＣＰは不要であり、カットパルス入力端子ＣＰＩはフリップフロップ回路１から省かれる。
【０１２２】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１２３】
１    フリップフロップ回路
１０    ラッチ部
２０    冗長ラッチ部
３０    救済制御回路
１００    入力セレクタ
１０１    バッファ
１０２    バッファ
１１０    第１ラッチ回路
１２０    第２ラッチ回路
１３０    第３ラッチ回路
１４０    セレクタ
１５０    セレクタ
１６０    切り替え制御回路
１７０    故障検出回路
１７７    記憶回路
１７７Ａ  第１ヒューズ回路
１７７Ｂ  第２ヒューズ回路
２００    入力セレクタ
２１０    第１フリップフロップ
２１１    ラッチ回路
２１２    ラッチ回路
２２０    第２フリップフロップ
２２１    ラッチ回路
２２２    ラッチ回路
２５０    セレクタ
２６０    切り替え制御回路
２７０    故障検出回路
２７４    記憶回路
２７５    ヒューズ回路
ＣＫＩ    クロック入力端子
ＣＬＫ    クロック信号
ＣＬＫ’  クロック信号
ＣＬＫ１  第１クロック信号
ＣＬＫ２  第２クロック信号
ＣＬＫ３  第３クロック信号
ＣＰ      カットパルス
ＣＰＩ    カットパルス入力端子
Ｄ        入力端子
Ｄｉｎ    入力データ
Ｄｏｕｔ  出力データ
Ｉ１０    ラッチ入力データ
Ｉ２０    冗長ラッチ入力データ
Ｉ１１０  第１入力データ
Ｉ１２０  第２入力データ
Ｉ１３０  第３入力データ
Ｉ２１０  第１入力データ
Ｉ２２０  第２入力データ
Ｏ１０    ラッチ出力データ
Ｏ２０    冗長ラッチ出力データ
Ｏ１１０  第１出力データ
Ｏ１２０  第２出力データ
Ｏ１３０  第３出力データ
Ｏ２１０  第１出力データ
Ｏ２２０  第２出力データ
Ｑ        出力端子
ＳＡ      第１制御信号
ＳＢ      第２制御信号
ＳＣ      制御信号
ＳＣＩ    スキャン入力端子
ＳＣＡＮ  スキャンデータ
ＳＥＬ    セレクト信号
ＳＬＩ    セレクト信号入力端子
【図１】
2014204360.tif 000003
【図２】
2014204360.tif 000004
【図３】
2014204360.tif 000005
【図４】
2014204360.tif 000006
【図５】
2014204360.tif 000007
【図６】
2014204360.tif 000008
【図７】
2014204360.tif 000009
【図８】
2014204360.tif 000010
【図９】
2014204360.tif 000011
【図１０】
2014204360.tif 000012
【図１１】
2014204360.tif 000013
【図１２】
2014204360.tif 000014
【図１３】
2014204360.tif 000015
【図１４】
2014204360.tif 000016
【図１５】
2014204360.tif 000017
【図１６】
2014204360.tif 000018