(57)【要約】【課題】故障診断動作から通常動作への動作遷移を容易に行うことを目的とする。【解決手段】開示の装置は、第１記憶回路及び複数の第２記憶回路を備える。第１記憶回路は、第１制御信号に応じて、入力選択回路から出力された入力データ又はスキャンデータを保持する。複数の第２記憶回路は、それぞれ、第１制御信号又は第１制御信号に依らずに強制的にデータを保持させるための第２制御信号に応じて、第１記憶回路から出力されたデータを保持する。制御信号出力回路は、複数の第２記憶回路のそれぞれに対して、第１制御信号及び第２制御信号のうちの一方を出力する。そして、出力選択回路は、複数の第２記憶回路のうちの１つの第２記憶回路を選択し、選択した第２記憶回路から出力されたデータを出力する。【選択図】図２
2011133356.tif 000002
【特許請求の範囲】
【請求項１】
入力データ及び故障診断を行うためのスキャンデータが供給され、前記入力データ及び前記スキャンデータのうちの一方を選択して出力する入力選択回路と、
前記入力選択回路から出力されたデータが供給されると共に第１制御信号が供給され、前記第１制御信号に応じて、前記入力選択回路から出力されたデータを保持する第１記憶回路と、
前記第１記憶回路から出力されたデータが供給されると共に、前記第１制御信号又は前記第１制御信号に依らずに強制的にデータを保持させるための第２制御信号が供給され、前記第１制御信号又は前記第２制御信号に応じて、前記第１記憶回路から出力されたデータを保持する複数の第２記憶回路と、
前記複数の第２記憶回路のそれぞれに対して、前記第１制御信号及び前記第２制御信号のうちの一方を出力する制御信号出力回路と、
前記複数の第２記憶回路のうちの１つの第２記憶回路を選択し、選択した前記第２記憶回路から出力されたデータを出力する出力選択回路と、を備えることを特徴とする集積回路。
【請求項２】
請求項１に記載の集積回路に対して故障診断を行う故障診断回路であって、
前記スキャンデータを用いた故障診断を行う場合に、前記複数の第２記憶回路のうちの１以上の第２記憶回路に、前記第１制御信号に依らずに強制的にデータを保持させるために、当該第２記憶回路に対して前記第２制御信号が供給されるように前記制御信号出力回路を制御する制御回路を備えることを特徴とする故障診断回路。
【請求項３】
前記第１制御信号に依らずに強制的にデータを保持させる前記第２記憶回路に対する前記故障診断が行われる際に、前記出力選択回路から出力されたデータを保持し、保持しているデータを前記スキャンデータに応じて遅延させたタイミングで前記集積回路に対して出力するシフトレジスタ回路を更に備え、
前記制御回路は、前記第１制御信号に依らずに強制的にデータを保持させる前記第２記憶回路に対する前記故障診断を行う場合には、当該第２記憶回路に対して前記第１制御信号が供給されるように前記制御信号出力回路を制御することを特徴とする請求項２に記載の故障診断回路。
【請求項４】
入力データ及び故障診断を行うためのスキャンデータが供給され、前記入力データ及び前記スキャンデータのうちの一方を選択して出力する入力選択回路と、
前記入力選択回路から出力されたデータが供給されると共に第１制御信号が供給され、前記第１制御信号に応じて、前記入力選択回路から出力されたデータを保持する第１記憶回路と、
前記第１記憶回路から出力されたデータが供給されると共に、前記第１制御信号、又は前記第１制御信号に依らずに強制的にデータを保持させるための第２制御信号が供給され、前記第１制御信号又は前記第２制御信号に応じて、前記第１記憶回路から出力されたデータを保持する複数の第２記憶回路と、
前記複数の第２記憶回路のそれぞれに対して、前記第１制御信号及び前記第２制御信号のうちの一方を出力する制御信号出力回路と、
前記複数の第２記憶回路のうちの１つの第２記憶回路を選択し、選択した前記第２記憶回路から出力されたデータを出力する出力選択回路と、
前記複数の第２記憶回路のそれぞれからの出力のレベルが同一であるか否かを判定し、判定結果に対応するデータを出力する出力レベル判定回路と、を備えることを特徴とする集積回路。
【請求項５】
前記入力選択回路は、前記入力データ及び前記スキャンデータの他に、前記出力選択回路から出力されたデータが更に供給され、前記故障診断の終了後において、前記出力選択回路から出力されたデータを選択して出力することを特徴とする請求項４に記載の集積回路。
【請求項６】
請求項４又は５に記載の集積回路に対して故障診断を行う故障診断回路であって、
前記集積回路の通常動作時において、前記出力レベル判定回路の出力に基づいて、前記複数の第２記憶回路に対して故障診断を行う第２記憶回路故障診断回路を備えることを特徴とする故障診断回路。
【請求項７】
前記第２記憶回路故障診断回路は、前記スキャンデータを用いた故障診断が行われている際に、前記出力レベル判定回路の出力に基づいて、前記出力レベル判定回路を故障診断することを特徴とする請求項６に記載の故障診断回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路及びその故障診断を行う故障診断回路に関する。
【背景技術】
【０００２】
集積回路を高信頼化するための手法として、故障を検出する故障診断回路を集積回路に組み込み、集積回路の稼動時に故障診断回路を動作させて故障を検出する仕組みが知られている。一例としては、組み込み型自己診断方式であるＢＩＳＴ（Ｂｕｉｌｔ−Ｉｎ−Ｓｅｌｆ−Ｔｅｓｔ）構造が用いられている。
【０００３】
例えば、論理回路の診断回路を有する集積回路において、論理回路の内部状態を保持するレジスタと、レジスタに保持された内部状態を論理回路に入力する復帰回路とを有し、通常動作と診断動作との切り替えを行う集積回路が提案されている。この集積回路では、診断中に別の回路からのアクセスに応答しながら診断動作を続けたり、診断動作を中断して診断前の状態に復帰したりすることを図っている。
【０００４】
また、スキャン試験方式による試験が可能なスキャンフリップフロップ回路が知られている。例えば、スキャン試験動作時において、スキャンデータをセットされた時点では、マスター段セルのラッチ回路とスレーブ段セルのラッチ回路とを切り離し、セットされたスキャンデータを出力しないスキャンフリップフロップ回路が提案されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−３００６５０号公報
【特許文献２】特開平７−１９８７８７号公報
【特許文献３】特開２００７−７８６８９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上記したように、従来の技術では、故障診断前の入力データを保持した状態で故障診断が行われると共に、故障診断動作から通常動作へ切り替える際に、保持していたデータによって復帰が行われている。しかしながら、現状では、故障診断動作から通常動作への動作遷移を容易に行うことが困難であった。例えば、従来の技術では、故障診断動作から通常動作への復帰時に、保持されていたデータを集積回路内の回路に書き込む処理などを別途行っていた。
【課題を解決するための手段】
【０００７】
開示の装置は、入力選択回路と、第１記憶回路と、複数の第２記憶回路と、を備える。第１記憶回路は、第１制御信号に応じて、入力選択回路から出力された入力データ又はスキャンデータを保持する。複数の第２記憶回路は、それぞれ、第１制御信号又は第２制御信号に応じて、第１記憶回路から出力されたデータを保持する。ここで、第２制御信号は、第１制御信号に依らずに、第２記憶回路に強制的にデータを保持させるための制御信号である。つまり、第２制御信号は、第１制御信号の入力状態に依存させずに第２記憶回路を強制ホールドさせるための制御信号である。言い換えると、第２制御信号は、第１制御信号を無効（不能）にする制御信号である。この場合、制御信号出力回路は、複数の第２記憶回路のそれぞれに対して、第１制御信号及び第２制御信号のうちの一方を出力する。そして、出力選択回路は、複数の第２記憶回路のうちの１つの第２記憶回路を選択し、選択した第２記憶回路から出力されたデータを出力する。
【発明の効果】
【０００８】
開示の装置によれば、スキャンデータを用いた故障診断の実行時において、故障診断前に入力されたデータを１以上の第２記憶回路に保持させつつ、当該第２記憶回路以外の第２記憶回路の出力を用いてスキャンデータを転送させることができる。つまり、開示の装置によれば、故障診断前に入力されたデータを１以上の第２記憶回路に退避させた状態で、他の第２記憶回路の出力を利用して故障診断を行うことができる。これにより、故障診断を適切に行うことができると共に、故障診断動作から通常動作への復帰を容易に行うことができる。具体的には、第２記憶回路に保持されたデータを出力させるだけで、故障診断動作から通常動作を速やかに再開することができる。
【図面の簡単な説明】
【０００９】
【図１】第１実施形態に係るＳＦＦ及び故障診断回路の適用例を示すブロック図である。
【図２】第１実施形態に係るＳＦＦの構成の一例を示すブロック図である。
【図３】第１実施形態に係るＳＦＦ及び故障診断回路の通常動作の一例を示す。
【図４】第１実施形態に係る第１スレーブパスの故障診断動作の一例を示す。
【図５】第１実施形態に係る第２スレーブパスの故障診断動作の一例を示す。
【図６】第１実施形態に係る組合回路の故障診断動作の一例を示す。
【図７】第１実施形態に係る故障診断フローの一例を示すフローチャートである。
【図８】第２実施形態に係るＳＦＦ及び故障診断回路の適用例を示すブロック図である。
【図９】第２実施形態に係るＳＦＦの構成の一例を示すブロック図である。
【図１０】第２実施形態に係るＳＦＦ及び故障診断回路の通常動作の一例を示す。
【図１１】第２実施形態に係るスキャンシフトパスの故障診断動作の一例を示す。
【図１２】第２実施形態に係る組合回路の故障診断動作の一例を示す。
【図１３】第２実施形態に係る通常状態への復帰動作の一例を示す。
【図１４】第２実施形態に係る故障診断フローの一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、実施形態の一例について図面を参照しつつ説明する。
【００１１】
［第１実施形態］
まず、第１実施形態について説明を行う。
【００１２】
（適用例）
図１は、第１実施形態に係るスキャンフリップフロップ回路１（以下、適宜「ＳＦＦ」と表記する。）及び故障診断回路２の適用例を示すブロック図である。図１に示すように、複数のＳＦＦ１が組合回路３を介して直列に配置されている。各ＳＦＦ１は、後段の組合回路３を介して、入力されたデータを後段のＳＦＦ１に次々に転送していく。故障診断回路２は、これら複数のＳＦＦ１に対する故障診断を行う。以下では、最も前段（初段）に配置されたＳＦＦ１を「最前段のＳＦＦ１」と呼び、最も後段（最終段）に配置されたＳＦＦ１を「最後段のＳＦＦ１」と呼ぶ。なお、ＳＦＦ１は、集積回路（半導体集積回路）の一例に相当する。
【００１３】
ＳＦＦ１は、基本的には、１つの「０」若しくは「１」といった状態を保持可能な１ビットの記憶回路であり、スキャン試験方式による試験が可能に構成されている。具体的には、ＳＦＦ１は、図示しないマスター段セルを構成するラッチ回路（以下、「マスターラッチ回路」と呼ぶ。）と、スレーブ段セルを構成する２つのラッチ回路（以下、それぞれ「第１スレーブラッチ回路」及び「第２スレーブラッチ回路」と呼ぶ。）とを有する。なお、マスターラッチ回路、第１スレーブラッチ回路、及び第２スレーブラッチ回路については、詳細は後述する。
【００１４】
ＳＦＦ１は、組合回路３から入力データＤが供給されると共に、外部の回路（不図示）からクロック信号ＣＫが供給される。この場合、複数のＳＦＦ１において最前段のＳＦＦ１は、外部の回路（不図示）から入力データＤが供給される。また、ＳＦＦ１は、前段のＳＦＦ１から、故障診断するためのスキャンデータＳＩ（以下、適宜「スキャンインデータＳＩ」と呼ぶ。）が供給される。この場合、最前段のＳＦＦ１は、故障診断回路２からスキャンインデータＳＩが供給される。
【００１５】
更に、ＳＦＦ１は、故障診断回路２から、クロック信号ＣＫに依らずに第１スレーブラッチ回路を強制ホールドするための第１出力ホールド信号ＸＳ１Ｈと、クロック信号ＣＫに依らずに第２スレーブラッチ回路を強制ホールドするための第２出力ホールド信号ＸＳ２Ｈとが供給される。加えて、ＳＦＦ１は、故障診断回路２から、スキャンモードＳＭを設定するための信号と、第１スレーブラッチ回路及び第２スレーブラッチ回路のいずれかの出力を選択するための選択信号ＳＳＥＬとが供給される。
【００１６】
そして、ＳＦＦ１は、入力データＤに対応する出力データＱ及びスキャンインデータＳＩに対応するスキャンデータＳＯ（以下では、適宜「スキャンアウトデータＳＯ」と呼ぶ。）のいずれかを出力する。基本的には、出力データＱは組合回路３に供給され、スキャンアウトデータＳＯは組合回路３を介さずに後段のＳＦＦ１に供給される。なお、最後段のＳＦＦ１から出力された出力データＱは外部の回路に供給され、最後段のＳＦＦ１から出力されたスキャンアウトデータＳＯは故障診断回路２に供給される。
【００１７】
故障診断回路２は、論理ＢＩＳＴ回路２１と、期待値比較回路２２と、シフトレジスタ回路２３と、セレクタ２４と、を有する。故障診断回路２は、上記した、スキャンインデータＳＩと、第１出力ホールド信号ＸＳ１Ｈと、第２出力ホールド信号ＸＳ２Ｈと、スキャンモードＳＭを設定するための信号と、選択信号ＳＳＥＬとを、ＳＦＦ１に供給する。
【００１８】
論理ＢＩＳＴ回路２１は、故障診断を行うためのスキャンデータを生成する。具体的には、論理ＢＩＳＴ回路２１は、故障診断の内容に応じたパターン（例えば乱数パターン）を生成し、これをスキャンデータとして出力する。論理ＢＩＳＴ回路２１から出力されたスキャンデータは、セレクタ２４及び期待値比較回路２２に供給される。なお、「スキャンデータを生成する」には、新たなスキャンデータを求めるだけでなく、予め設定されたスキャンデータを用いることも含まれるものとする。
【００１９】
期待値比較回路２２は、最後段のＳＦＦ１から出力されたスキャンアウトデータＳＯが供給され、当該スキャンアウトデータＳＯに基づいてＳＦＦ１などの故障診断を行う。具体的には、期待値比較回路２２は、論理ＢＩＳＴ回路２１が生成したスキャンデータを複数のＳＦＦ１などに供給した場合に、最後段のＳＦＦ１から最終的に出力されるべきデータに対応する値を期待値として用いる。この場合、期待値比較回路２２は、論理ＢＩＳＴ回路２１が生成したスキャンデータに応じた期待値を用いる。そして、期待値比較回路２２は、当該期待値と最後段のＳＦＦ１から出力されたスキャンアウトデータＳＯとを比較することで、故障診断を行う。例えば、期待値比較回路２２は、ＣＲＣ（Cyclic Redundancy Check）などの手法を用いて故障診断を行う。
【００２０】
シフトレジスタ回路２３は、例えば複数のフリップフロップ回路がカスケード接続されて構成された回路であり、入力されたデータを当該回路内で移動（シフト）させる。具体的には、シフトレジスタ回路２３は、スキャンデータを用いた故障診断の実行時において、最後段のＳＦＦ１から出力された出力データＱが供給されて、当該出力データＱを保持する。そして、シフトレジスタ回路２３は、論理ＢＩＳＴ回路２１が生成したスキャンデータに応じて遅延させたタイミングで、保持しているデータを出力する。シフトレジスタ回路２３から出力されたデータは、セレクタ２４に供給される。例えば、論理ＢＩＳＴ回路２１が３パターンのスキャンデータを生成する場合には、シフトレジスタ回路２３は３段のシフトレジスタ回路として構成される。
【００２１】
セレクタ２４は、論理ＢＩＳＴ回路２１が生成したスキャンデータ及びシフトレジスタ回路２３から出力されたデータが供給される。セレクタ２４は、図示しない故障診断回路２内の回路によって制御され、スキャンデータ及びシフトレジスタ回路２３から出力されたデータのいずれかのデータを選択し、選択したデータを出力する。セレクタ２４から出力されたデータは、最前段のＳＦＦ１に供給される。この場合、スキャンデータは、スキャンインデータＳＩとして最前段のＳＦＦ１に供給される。
【００２２】
組合回路３は、出力がその時点における入力の値の組み合わせにより定まる論理回路である。組合回路３は、２つのＳＦＦ１の間に配置されており、前段のＳＦＦ１から出力されたデータが供給される。基本的には、組合回路３は、前段のＳＦＦ１から出力データＱが供給される。組合回路３は、供給されたデータに対して所定の演算を行い、その結果に対応するデータを出力する。組合回路３から出力されたデータは、入力データＤとして、後段のＳＦＦ１に供給される。
【００２３】
（ＳＦＦの構成）
図２は、第１実施形態に係るＳＦＦ１の構成の一例を示すブロック図である。図２に示すように、ＳＦＦ１は、セレクタ１１と、マスターラッチ回路１２と、ＡＮＤ回路１３、１４と、第１スレーブラッチ回路１５と、第２スレーブラッチ回路１６と、セレクタ１７と、を有する。前述したように、ＳＦＦ１は、組合回路３若しくは外部の回路から入力データＤが供給されると共に、外部の回路からクロック信号ＣＫが供給される。また、ＳＦＦ１は、前段のＳＦＦ１若しくは故障診断回路２から、スキャンインデータＳＩが供給される。更に、ＳＦＦ１は、故障診断回路２から、第１出力ホールド信号ＸＳ１Ｈと、第２出力ホールド信号ＸＳ２Ｈと、スキャンモードＳＭを設定するための信号と、選択信号ＳＳＥＬとが供給される。
【００２４】
セレクタ１１は、スキャンインデータＳＩ及び入力データＤが供給されると共に、スキャンモードＳＭを設定するための信号が供給される。セレクタ１１は、スキャンモードＳＭに応じてスキャンインデータＳＩ及び入力データＤのいずれかを選択し、選択したデータを出力する。具体的には、セレクタ１１は、スキャンモードＳＭが「０」である場合には入力データＤを出力し、スキャンモードＳＭが「１」である場合にはスキャンインデータＳＩを出力する。基本的には、通常動作時にはスキャンモードＳＭは「０」に設定され、故障診断時にスキャンモードＳＭが「１」に設定される。セレクタ１１から出力されたデータは、マスターラッチ回路１２に供給される。なお、セレクタ１１は、入力選択回路の一例に相当する。
【００２５】
マスターラッチ回路１２は、所謂Ｄラッチ回路として構成されている。基本的には、マスターラッチ回路１２は、セレクタ１１から出力されたデータが供給されると共にクロック信号ＣＫ（イネーブル信号に相当する）が供給され、クロック信号ＣＫに応じて、セレクタ１１から出力されたデータを保持する。具体的には、マスターラッチ回路１２は、クロック信号ＣＫを反転させた信号（以下、単に「反転クロック信号」と呼ぶ。）がハイレベルである場合には、入力されたデータを反転させたデータを出力する。これに対して、マスターラッチ回路１２は、反転クロック信号がローレベルである場合には、以前に入力されたデータを保持する。つまり、この場合、マスターラッチ回路１２は、現在入力されているデータに関わらずに、反転クロック信号がローレベルになる直前に入力されたデータに対応するデータを出力し続ける。マスターラッチ回路１２から出力されたデータは、第１スレーブラッチ回路１５及び第２スレーブラッチ回路１６の両方に供給される。つまり、第１スレーブラッチ回路１５及び第２スレーブラッチ回路１６は、マスターラッチ回路１２に対してパラレルに接続されている。なお、マスターラッチ回路１２は、第１記憶回路の一例に相当し、クロック信号ＣＫは、第１制御信号の一例に相当する。
【００２６】
ＡＮＤ回路１３及びＡＮＤ回路１４は、クロック信号ＣＫが供給されると共に、それぞれ第１出力ホールド信号ＸＳ１Ｈ及び第２出力ホールド信号ＸＳ２Ｈ（以下、これらを区別しない場合には「出力ホールド信号ＸＳ１Ｈ、ＸＳ２Ｈ」と表記する。）が供給される。ＡＮＤ回路１３、１４は、それぞれ、出力ホールド信号ＸＳ１Ｈ、ＸＳ２Ｈが「１」である場合には、供給されたクロック信号ＣＫをそのまま出力する。これに対して、ＡＮＤ回路１３、１４は、それぞれ、出力ホールド信号ＸＳ１Ｈ、ＸＳ２Ｈが「０」である場合には、供給されたクロック信号ＣＫに関わらずに「０」を出力する。つまり、出力ホールド信号ＸＳ１Ｈ、ＸＳ２Ｈが「０」である場合には、クロック信号ＣＫは、ＡＮＤ回路１３、１４によって無効（言い換えると不能）にされる。ＡＮＤ回路１３、１４から出力されたデータは、それぞれ、第１スレーブラッチ回路１５及び第２スレーブラッチ回路１６に供給される。
【００２７】
基本的には、クロック信号ＣＫに依存させずに第１スレーブラッチ回路１５を強制ホールドさせる場合に、第１出力ホールド信号ＸＳ１Ｈが「０」に設定される。一方、クロック信号ＣＫに依存させずに第２スレーブラッチ回路１６を強制ホールドさせる場合に第２出力ホールド信号ＸＳ２Ｈが「０」に設定される。例えば故障診断時において、第１出力ホールド信号ＸＳ１Ｈ及び第２出力ホールド信号ＸＳ２Ｈの少なくともいずれかが「０」に設定される。
【００２８】
なお、ＡＮＤ回路１３及びＡＮＤ回路１４は、制御信号出力回路の一例に相当する。この場合、出力ホールド信号ＸＳ１Ｈ、ＸＳ２Ｈが「０」であるときのＡＮＤ回路１３、１４の出力、つまりＡＮＤ回路１３、１４から出力された「０」の信号は、第２制御信号の一例に相当する。また、上記した故障診断回路２は、第１スレーブラッチ回路１５及び第２スレーブラッチ回路１６の少なくともいずれかに対して、クロック信号ＣＫに依らずに強制的にデータを保持させるために、ＡＮＤ回路１３、１４を制御する制御回路の一例に相当する。この場合、故障診断回路２は、出力ホールド信号ＸＳ１Ｈ、ＸＳ２Ｈを設定することでＡＮＤ回路１３、１４に対する制御を行う。
【００２９】
第１スレーブラッチ回路１５及び第２スレーブラッチ回路１６（以下、これらを区別しない場合には「スレーブラッチ回路１５、１６」と表記する。）は、所謂Ｄラッチ回路として構成されている。スレーブラッチ回路１５、１６は、マスターラッチ回路１２から出力されたデータが供給されると共に、それぞれＡＮＤ回路１３、１４から出力されたデータが供給される。そして、スレーブラッチ回路１５、１６は、それぞれ、ＡＮＤ回路１３、１４から出力されたデータを制御信号として用いて、マスターラッチ回路１２より入力されたデータを保持する。具体的には、スレーブラッチ回路１５、１６は、それぞれ、ＡＮＤ回路１３、１４から出力されたデータがハイレベルである場合には、入力されたデータを反転させたデータを出力する。これに対して、スレーブラッチ回路１５、１６は、それぞれ、ＡＮＤ回路１３、１４から出力されたデータがローレベルである場合には、出力を保持する。つまり、この場合には、スレーブラッチ回路１５、１６は、現在入力されたデータに関わらずに、ＡＮＤ回路１３、１４から出力されたデータがローレベルになる直前に入力されたデータに対応するデータを出力し続ける。スレーブラッチ回路１５、１６から出力されたデータは、セレクタ１７に供給される。なお、スレーブラッチ回路１５、１６は、それぞれ、第２記憶回路の一例に相当する。
【００３０】
セレクタ１７は、スレーブラッチ回路１５、１６からそれぞれ出力されたデータが供給されると共に、選択信号ＳＳＥＬが供給される。セレクタ１７は、選択信号ＳＳＥＬに応じて、第１スレーブラッチ回路１５及び第２スレーブラッチ回路１６のいずれかから出力されたデータを選択し、選択したデータを出力する。具体的には、セレクタ１７は、選択信号ＳＳＥＬが「０」である場合には第１スレーブラッチ回路１５から出力されたデータを選択し、選択信号ＳＳＥＬが「１」である場合には第２スレーブラッチ回路１６から出力されたデータを選択する。セレクタ１７から出力されたデータは、前述した出力データＱ又はスキャンアウトデータＳＯに相当する。基本的には、出力データＱは組合回路３に供給され、スキャンアウトデータＳＯは組合回路３を介さずに後段のＳＦＦ１に供給される。なお、セレクタ１７は、出力選択回路の一例に相当する。
【００３１】
（通常動作例）
次に、第１実施形態に係るＳＦＦ１及び故障診断回路２の通常動作例について説明する。ここで、「通常動作」とは、各ＳＦＦ１が、クロック信号ＣＫに応じて、前段の組合回路３から入力された入力データＤを出力データＱとして後段の組合回路３へ転送していく動作を指す。なお、基本的には、通常動作時においては、故障診断回路２は動作しない（ＳＦＦ１内の各回路を制御するための信号を供給する動作は行うものとする）。
【００３２】
図３は、第１実施形態に係るＳＦＦ１及び故障診断回路２の通常動作の一例を示す。
【００３３】
図３（ａ）は、ＳＦＦ１に関して、通常動作時におけるデータの流れの一例を示している。具体的には、矢印でデータの流れを示している。通常動作時においては、各ＳＦＦ１は、前段の組合回路３から入力データＤが供給され、当該入力データＤに対応する出力データＱをクロック信号ＣＫに応じて後段の組合回路３へ供給する。各組合回路３は、前段のＳＦＦ１から出力データＱが供給され、当該出力データＱに対して所定の演算を行い、その結果を入力データＤとして後段のＳＦＦ１に供給する。
【００３４】
図３（ｂ）は、図３（ａ）中の破線領域内のＳＦＦ１に関して、通常動作時における主なデータの流れの一例を示している。具体的には、太線でデータの流れを示している。通常動作時においては、スキャンモードＳＭは「０」に設定される。そのため、セレクタ１１は入力データＤを出力し、当該入力データＤがマスターラッチ回路１２に供給される。そして、マスターラッチ回路１２は、クロック信号ＣＫに応じて、スレーブラッチ回路１５、１６に対して、入力データＤに対応するデータを出力する。
【００３５】
通常動作時では、第１出力ホールド信号ＸＳ１Ｈは「１」に設定される。そのため、ＡＮＤ回路１３はクロック信号ＣＫをそのまま出力し、当該クロック信号ＣＫが第１スレーブラッチ回路１５に供給される。この場合、第１スレーブラッチ回路１５は、クロック信号ＣＫに応じて、マスターラッチ回路１２より入力されたデータに応じたデータを出力する。
【００３６】
一方、通常動作時では、第２出力ホールド信号ＸＳ２Ｈは「０」に設定される。そのため、ＡＮＤ回路１４は「０」を出力し、第２スレーブラッチ回路１６には制御信号として「０」が供給される。つまり、第２スレーブラッチ回路１６へのクロック信号ＣＫの供給が遮断される。この場合には、第２スレーブラッチ回路１６は、マスターラッチ回路１２からの入力に関わらずに、所定の出力を保持する。
【００３７】
更に、通常動作時では、選択信号ＳＳＥＬは「０」に設定される。そのため、セレクタ１７は、第１スレーブラッチ回路１５から出力されたデータに応じたデータを、つまり入力データＤに応じたデータを、出力データＱとして出力する。
【００３８】
なお、図３では、通常動作時において第２出力ホールド信号ＸＳ２Ｈを「０」に設定する例を示したが、「０」の代わりに、第２出力ホールド信号ＸＳ２Ｈを「１」に設定しても良い。つまり、第２スレーブラッチ回路１６へのクロック信号ＣＫを止める代わりに、第２スレーブラッチ回路１６へクロック信号ＣＫを供給しても良い。
【００３９】
（故障診断動作例）
次に、第１実施形態に係る故障診断動作例について説明する。
【００４０】
（ａ）第１スレーブパスの故障診断
ここでは、ＳＦＦ１によってスキャンデータがシフトされるパス（以下、「スキャンシフトパス」と呼ぶ。）に対する故障診断の一例を示す。特に、第１スレーブラッチ回路１５に関するスキャンシフトパス（以下、「第１スレーブパス」と呼ぶ。）に対する故障診断の一例を示す。この第１スレーブパスの故障診断には、第１スレーブラッチ回路１５に対する故障診断が含まれる。なお、スキャンシフトパスは、基本的には、組合回路３を経由しないパスである。
【００４１】
第１実施形態では、第１スレーブパスの故障診断は、第１スレーブラッチ回路１５の出力を利用して行われる。また、第１スレーブパスの故障診断は、シフトレジスタ回路２３を利用して行われる。具体的には、第１スレーブパスの故障診断は、故障診断前に入力された入力データＤに対応するデータを、シフトレジスタ回路２３に保持させながら行われる。
【００４２】
図４は、第１実施形態に係る第１スレーブパスの故障診断動作の一例を示す。図４（ａ）は、ＳＦＦ１及び故障診断回路２に関して、第１スレーブパスの故障診断時におけるデータの流れの一例を示している。
【００４３】
第１スレーブパスの故障診断では、故障診断回路２内の論理ＢＩＳＴ回路２１が、第１スレーブパスを適切に試験することが可能なスキャンデータを生成する。例えば、論理ＢＩＳＴ回路２１は、「０１０」といった３パターンのスキャンデータを生成する。論理ＢＩＳＴ回路２１が生成したスキャンデータは、セレクタ２４に供給される。そして、セレクタ２４はスキャンデータを選択することで、当該スキャンデータをスキャンインデータＳＩとして最前段のＳＦＦ１に供給する。
【００４４】
このようにスキャンインデータＳＩが最前段のＳＦＦ１に供給されることで、第１スレーブパスの故障診断が開始される。そして、各ＳＦＦ１は、図４（ａ）中の矢印Ａ１で示すように、スキャンデータを転送していく。つまり、各ＳＦＦ１は、前段のＳＦＦ１からスキャンインデータＳＩが供給され、当該スキャンインデータＳＩに対応するスキャンアウトデータＳＯを、組合回路３を介さずに後段のＳＦＦ１へ供給する。この場合、各ＳＦＦ１は、内部の第１スレーブラッチ回路１５の出力を用いて、スキャンデータを転送していく。
【００４５】
そして、このようにスキャンデータが転送されていった場合において、最後段のＳＦＦ１は、図４（ａ）中の矢印Ａ２で示すように、スキャンアウトデータＳＯを期待値比較回路２２に供給する。期待値比較回路２２は、論理ＢＩＳＴ回路２１が生成したスキャンデータに応じた期待値と、最後段のＳＦＦ１から出力されたスキャンアウトデータＳＯとを比較することで、第１スレーブパスに対する故障診断を行う。
【００４６】
また、上記のように第１スレーブパスの故障診断が開始された際に、図４（ａ）中の破線矢印Ａ３で示すように、最後段のＳＦＦ１から出力された出力データＱがシフトレジスタ回路２３へ供給される。具体的には、故障診断回路２によって最前段のＳＦＦ１へのスキャンデータの供給が開始された際に、最後段のＳＦＦ１から出力された出力データＱがシフトレジスタ回路２３へ供給される。この場合、シフトレジスタ回路２３は、供給された出力データＱを保持する。そして、シフトレジスタ回路２３は、論理ＢＩＳＴ回路２１が生成したスキャンデータのパターン数に応じて遅延させたタイミングで、図４（ａ）中の破線矢印Ａ４で示すように、保持しているデータをセレクタ２４へ出力する。シフトレジスタ回路２３がスキャンデータのパターン数に応じて遅延させたタイミングでデータを出力するため、セレクタ２４には、論理ＢＩＳＴ回路２１がスキャンデータを出力し終えた際に、シフトレジスタ回路２３からデータが供給されることとなる。例えば、論理ＢＩＳＴ回路２１が３パターンのスキャンデータを生成した場合には、シフトレジスタ回路２３は、当該３パターンだけ遅延させたタイミングで、保持しているデータを出力する。
【００４７】
このように、シフトレジスタ回路２３は、第１スレーブパスの故障診断の実行時において、最後段のＳＦＦ１から次々と供給された出力データＱを保持し、当該出力データＱをスキャンデータのパターン数分遅延させてセレクタ２４へ次々と出力する。そして、セレクタ２４は、シフトレジスタ回路２３から出力されたデータを選択することで、当該データを最前段のＳＦＦ１に供給する。具体的には、セレクタ２４は、論理ＢＩＳＴ回路２１がスキャンデータを出力し終えた際に、選択して出力するデータを、スキャンデータから、シフトレジスタ回路２３から出力されたデータへと切り替える。この後、各ＳＦＦ１は、図４（ａ）中の破線矢印Ａ５で示すように、セレクタ２４から供給されたデータ（つまり最後段のＳＦＦ１から出力された出力データＱ）を、後段のＳＦＦ１へ次々と転送していく。
【００４８】
以上のようにシフトレジスタ回路２３が動作することで、各ＳＦＦ１は、第１スレーブパスの故障診断の終了後において、故障診断の直前の状態に戻されることとなる。つまり、各ＳＦＦ１は、第１スレーブパスの故障診断の直前に保持していたデータを適切に保持することとなる。
【００４９】
なお、このようなシフトレジスタ回路２３の動作は、第１スレーブパスの故障診断が終了するまで行われる、つまり最後段のＳＦＦ１から期待値比較回路２２へのスキャンデータの出力が終了するまで行われる。また、基本的には、第１スレーブパスの故障診断を行う場合以外には、シフトレジスタ回路２３は動作しない。
【００５０】
図４（ｂ）は、図４（ａ）中の破線領域内のＳＦＦ１に関して、第１スレーブパスの故障診断時における主なデータの流れの一例を示している。具体的には、太線でデータの流れを示している。第１スレーブパスの故障診断時においては、スキャンモードＳＭは「１」に設定される。そのため、セレクタ１１はスキャンインデータＳＩを出力し、当該スキャンインデータＳＩがマスターラッチ回路１２に供給される。そして、マスターラッチ回路１２は、クロック信号ＣＫに応じて、スレーブラッチ回路１５、１６に対して、スキャンインデータＳＩに対応するデータを出力する。
【００５１】
第１スレーブパスの故障診断時では、第１出力ホールド信号ＸＳ１Ｈは「１」に設定される。そのため、ＡＮＤ回路１３はクロック信号ＣＫをそのまま出力し、当該クロック信号ＣＫが第１スレーブラッチ回路１５に供給される。この場合、第１スレーブラッチ回路１５は、クロック信号ＣＫに応じて、マスターラッチ回路１２より入力されたデータに応じたデータを出力する。
【００５２】
一方、第１スレーブパスの故障診断時では、第２出力ホールド信号ＸＳ２Ｈは「０」に設定される。そのため、ＡＮＤ回路１４は「０」を出力し、第２スレーブラッチ回路１６には制御信号として「０」が供給される。つまり、第２スレーブラッチ回路１６へのクロック信号ＣＫの供給が遮断される。この場合には、第２スレーブラッチ回路１６は、マスターラッチ回路１２からの入力に関わらずに、所定の出力を保持する。なお、最終段のセレクタ１７が第２スレーブラッチ回路１６の出力を選択するようにスタック故障していた場合を考慮して、上記のように第２スレーブラッチ回路１６へのクロック信号ＣＫの供給を遮断している。
【００５３】
更に、第２スレーブパスの故障診断時では、選択信号ＳＳＥＬは「０」に設定される。そのため、セレクタ１７は、第１スレーブラッチ回路１５から出力されたデータに応じたデータを、つまりスキャンインデータＳＩに応じたデータを、スキャンアウトデータＳＯとして出力する。
【００５４】
このような各信号によってＳＦＦ１内の各回路を設定することで、第１スレーブラッチ回路１５より出力させたスキャンデータに基づいて、第１スレーブパスの故障診断を適切に行うことが可能となる。
【００５５】
以上説明したように、第１スレーブパスの故障診断時では、故障診断回路２内のシフトレジスタ回路２３が、最後段のＳＦＦ１から供給された出力データＱを保持し、当該出力データＱをスキャンデータのパターン数分遅延させて出力する。これにより、第１スレーブパスの故障診断後において、故障診断直前の状態にＳＦＦ１を適切に戻すことができる。したがって、第１スレーブラッチ回路１５の故障診断を適切に行うことが可能となる。具体的には、後述する第２スレーブパスや組合回路３の故障診断時において入力データＤに対応するデータを保持する役目を有する第１スレーブラッチ回路１５に対して、適切に故障診断することが可能となる。
【００５６】
（ｂ）第２スレーブパスの故障診断
次に、第１実施形態における、第２スレーブラッチ回路１６に関するスキャンシフトパス（以下、「第２スレーブパス」と呼ぶ。）に対する故障診断の一例を示す。第２スレーブパスの故障診断は、故障診断前に入力されたデータを第１スレーブラッチ回路１５に保持させた状態で、第２スレーブラッチ回路１６の出力を利用して行われる点で、第１スレーブパスの故障診断と異なる。つまり、第２スレーブパスの故障診断では、第１スレーブパスの故障診断のようにシフトレジスタ回路２３にデータを保持させるのではなく、第１スレーブラッチ回路１５にデータを保持させる。
【００５７】
第２スレーブパスの故障診断は、好適には、第１スレーブパスの故障診断の後に行われる。これは、第２スレーブパスの故障診断では第１スレーブラッチ回路１５にデータを保持させておくため、第１スレーブラッチ回路１５が正常であることが判定された後に、第２スレーブパスを故障診断するのが望ましいからである。上記したように、第１スレーブパスの故障診断の終了時には、シフトレジスタ回路２３の動作により、第１スレーブラッチ回路１５に入力データＤに対応するデータが保持された状態となる。そのため、第１スレーブパスの故障診断の後に第２スレーブパスの故障診断を行うことで、第１スレーブラッチ回路１５にデータが適切に保持された状態で、第２スレーブパスの故障診断を開始することができる。
【００５８】
なお、第２スレーブパスの故障診断には、第２スレーブラッチ回路１６に対する故障診断が含まれる。
【００５９】
図５は、第１実施形態に係る第２スレーブパスの故障診断動作の一例を示す。図５（ａ）は、ＳＦＦ１及び故障診断回路２に関して、第２スレーブパスの故障診断時におけるデータの流れの一例を示している。
【００６０】
第２スレーブパスの故障診断では、故障診断回路２内の論理ＢＩＳＴ回路２１が、第２スレーブパスを適切に試験することが可能なスキャンデータを生成する。例えば、論理ＢＩＳＴ回路２１は、「０１０」といった３パターンのスキャンデータを生成する。論理ＢＩＳＴ回路２１が生成したスキャンデータは、セレクタ２４に供給される。そして、セレクタ２４はスキャンデータを選択することで、当該スキャンデータをスキャンインデータＳＩとして最前段のＳＦＦ１に供給する。
【００６１】
この後、各ＳＦＦ１は、図５（ａ）中の矢印Ｂ１で示すように、スキャンデータを転送していく。つまり、各ＳＦＦ１は、前段のＳＦＦ１からスキャンインデータＳＩが供給され、当該スキャンインデータＳＩに対応するスキャンアウトデータＳＯを、組合回路３を介さずに後段のＳＦＦ１へ供給する。この場合、各ＳＦＦ１は、内部の第２スレーブラッチ回路１６の出力を用いて、スキャンデータを転送していく。また、各ＳＦＦ１は、故障診断前に入力された入力データＤに対応するデータを、内部の第１スレーブラッチ回路１５に保持させておく。
【００６２】
そして、このようにスキャンデータが転送されていった場合において、最後段のＳＦＦ１は、図５（ａ）中の矢印Ｂ２で示すように、スキャンアウトデータＳＯを期待値比較回路２２に供給する。期待値比較回路２２は、論理ＢＩＳＴ回路２１が生成したスキャンデータに応じた期待値と、最後段のＳＦＦ１から出力されたスキャンアウトデータＳＯとを比較することで、第２スレーブパスに対する故障診断を行う。
【００６３】
なお、第２スレーブパスの故障診断を行う場合には、第１スレーブラッチ回路１５にデータを保持させておくため、第１スレーブパスの故障診断を行う場合のようにシフトレジスタ回路２３は動作されない。
【００６４】
図５（ｂ）は、図５（ａ）中の破線領域内のＳＦＦ１に関して、第２スレーブパスの故障診断時における主なデータの流れの一例を示している。具体的には、太線でデータの流れを示している。第２スレーブパスの故障診断時においては、スキャンモードＳＭは「１」に設定される。そのため、セレクタ１１はスキャンインデータＳＩを出力し、当該スキャンインデータＳＩがマスターラッチ回路１２に供給される。そして、マスターラッチ回路１２は、クロック信号ＣＫに応じて、スレーブラッチ回路１５、１６に対して、スキャンインデータＳＩに対応するデータを出力する。
【００６５】
第２スレーブパスの故障診断時では、第１出力ホールド信号ＸＳ１Ｈは「０」に設定される。そのため、ＡＮＤ回路１３は「０」を出力し、第１スレーブラッチ回路１５には制御信号として「０」が供給される。つまり、第１スレーブラッチ回路１５へのクロック信号ＣＫの供給が遮断される。この場合には、第１スレーブラッチ回路１５は、マスターラッチ回路１２からの入力に関わらずに、所定の出力を保持する。具体的には、第１スレーブラッチ回路１５は、第１スレーブパスの故障診断を行う前に入力された入力データＤに対応するデータを保持する。
【００６６】
一方、第２スレーブパスの故障診断時では、第２出力ホールド信号ＸＳ２Ｈは「１」に設定される。そのため、ＡＮＤ回路１４はクロック信号ＣＫをそのまま出力し、当該クロック信号ＣＫが第２スレーブラッチ回路１６に供給される。この場合、第２スレーブラッチ回路１６は、クロック信号ＣＫに応じて、マスターラッチ回路１２より入力されたデータに応じたデータを出力する。
【００６７】
更に、第２スレーブパスの故障診断時では、選択信号ＳＳＥＬは「１」に設定される。そのため、セレクタ１７は、第２スレーブラッチ回路１６から出力されたデータに応じたデータを、つまりスキャンインデータＳＩに応じたデータを、スキャンアウトデータＳＯとして出力する。
【００６８】
このような各信号によってＳＦＦ１内の各回路を設定することで、第１スレーブラッチ回路１５にデータを保持させた状態で、第２スレーブラッチ回路１６より出力させたスキャンデータに基づいて第２スレーブパスの故障診断を適切に行うことが可能となる。
【００６９】
以上説明したように、第２スレーブパスの故障診断時では、ＳＦＦ１が、故障診断前に入力されたデータを第１スレーブラッチ回路１５に保持させつつ、第２スレーブラッチ回路１６の出力を用いてスキャンデータを転送する。これにより、第２スレーブパスの故障診断を適切に行うことができると共に、故障診断動作から通常動作への復帰を容易に行うことができる。つまり、第１スレーブラッチ回路１５に保持されたデータによって、故障診断前のＳＦＦ１の状態に容易に復帰することができる。
【００７０】
（ｃ）組合回路の故障診断
次に、第１実施形態に係る組合回路３の故障診断の一例を示す。組合回路３の故障診断は、第２スレーブパスの故障診断と同様に、故障診断前に入力されたデータを第１スレーブラッチ回路１５に保持させた状態で、第２スレーブラッチ回路１６の出力を利用して行われる。つまり、組合回路３の故障診断では、前述した第１スレーブパスの故障診断のようにシフトレジスタ回路２３にデータを保持させるのではなく、第１スレーブラッチ回路１５にデータを保持させる。
【００７１】
組合回路３の故障診断は、好適には、第１スレーブパスの故障診断後に行われる。これは、組合回路３の故障診断では第１スレーブラッチ回路１５にデータを保持させておくため、第１スレーブラッチ回路１５が正常であることが判定された後に、組合回路３を故障診断するのが望ましいからである。また、好適には、組合回路３の故障診断は、第２スレーブパスの故障診断後に行われる。これは、組合回路３の故障診断では第２スレーブラッチ回路１６の出力が利用されるため、第２スレーブラッチ回路１６が正常であることが判定された後に、組合回路３を故障診断するのが望ましいからである。
【００７２】
上記したように、第２スレーブパスの故障診断は、故障診断前に入力されたデータを第１スレーブラッチ回路１５に保持させた状態で行われる。そのため、第２スレーブパスの故障診断の後に組合回路３の故障診断を行うことで、第１スレーブラッチ回路１５にデータが適切に保持された状態で、組合回路３の故障診断を開始することができる。
【００７３】
図６は、第１実施形態に係る組合回路３の故障診断動作の一例を示す。図６（ａ）は、ＳＦＦ１及び故障診断回路２に関して、組合回路３の故障診断時におけるデータの流れの一例を示している。
【００７４】
組合回路３の故障診断では、故障診断回路２内の論理ＢＩＳＴ回路２１が、組合回路３を適切に試験することが可能なスキャンデータを生成する。具体的には、論理ＢＩＳＴ回路２１は、各組合回路３で行われる演算の内容を考慮したスキャンデータを生成する。例えば、論理ＢＩＳＴ回路２１は、乱数パターンのスキャンデータを生成する。論理ＢＩＳＴ回路２１が生成したスキャンデータは、セレクタ２４に供給される。そして、セレクタ２４はスキャンデータを選択することで、当該スキャンデータをスキャンインデータＳＩとして最前段のＳＦＦ１に供給する。
【００７５】
組合回路３の故障診断を実行する場合、故障診断回路２は、まず、スキャンモードＳＭを「１」に設定する。これにより、各ＳＦＦ１は、上記したようなスキャンデータを、図６（ａ）中の破線矢印Ｃ１で示すように転送していく。つまり、各ＳＦＦ１は、前段のＳＦＦ１からスキャンインデータＳＩが供給され、当該スキャンインデータＳＩに対応するスキャンアウトデータＳＯを、組合回路３を介さずに後段のＳＦＦ１へ供給する。この場合、各ＳＦＦ１は、内部の第２スレーブラッチ回路１６の出力を用いて、スキャンデータを転送していく。また、各ＳＦＦ１は、故障診断前に入力された入力データＤに対応するデータを、内部の第１スレーブラッチ回路１５に保持させておく。
【００７６】
このようにスキャンデータが転送されていくことで、各ＳＦＦ１は、後段の組合回路３を故障診断することが可能なスキャンデータを保持した状態となる、つまり後段の組合回路３を故障診断することが可能なスキャンデータを出力可能な状態となる。具体的には、スキャンデータが概ね最後段のＳＦＦ１まで転送された際に、各ＳＦＦ１がこのような状態となる。この際に、故障診断回路２は、スキャンモードＳＭを「１」から「０」に切り替える。詳しくは、故障診断回路２は、クロック信号ＣＫの１回分に相当する時間だけ、スキャンモードＳＭを「０」に設定する。これにより、図６（ａ）中の矢印Ｃ２で示すように、各ＳＦＦ１には前段の組合回路３がスキャンデータを処理した結果に対応するデータが供給され、各ＳＦＦ１は当該データを出力することとなる。
【００７７】
この後、故障診断回路２は、スキャンモードＳＭを「０」から「１」に切り替える。これにより、各ＳＦＦ１は、図６（ａ）中の破線矢印Ｃ１で示すように、組合回路３がスキャンデータを処理した結果に対応するデータを転送していく。つまり、組合回路３がスキャンデータを処理した結果に対応するデータが、組合回路３を介さずに、前段のＳＦＦ１から後段のＳＦＦ１へと次々に転送されていく。そして、最後段のＳＦＦ１は、図６（ａ）中の矢印Ｃ３で示すように、組合回路３がスキャンデータを処理した結果に対応するデータをスキャンアウトデータＳＯとして、期待値比較回路２２に供給する。期待値比較回路２２は、論理ＢＩＳＴ回路２１が生成したスキャンデータに応じた期待値と、最後段のＳＦＦ１から出力されたスキャンアウトデータＳＯとを比較することで、組合回路３に対する故障診断を行う。
【００７８】
なお、組合回路３の故障診断を行う場合には、第１スレーブラッチ回路１５にデータを保持させておくため、第１スレーブパスの故障診断を行う場合のようにシフトレジスタ回路２３は動作されない。
【００７９】
図６（ｂ）は、図６（ａ）中の破線領域内のＳＦＦ１に関して、組合回路３の故障診断時における主なデータの流れの一例を示している。ここでは、スキャンモードＳＭが「１」に設定されている場合の一例を示す。この場合、セレクタ１１はスキャンインデータＳＩを出力し、当該スキャンインデータＳＩがマスターラッチ回路１２に供給される。そして、マスターラッチ回路１２は、クロック信号ＣＫに応じて、スレーブラッチ回路１５、１６に対して、スキャンインデータＳＩに対応するデータを出力する。
【００８０】
組合回路３の故障診断時では、第１出力ホールド信号ＸＳ１Ｈは「０」に設定される。そのため、ＡＮＤ回路１３は「０」を出力し、第１スレーブラッチ回路１５には制御信号として「０」が供給される。つまり、第１スレーブラッチ回路１５へのクロック信号ＣＫの供給が遮断される。この場合には、第１スレーブラッチ回路１５は、マスターラッチ回路１２からの入力に関わらずに、所定の出力を保持する。具体的には、第１スレーブラッチ回路１５は、第１スレーブパスの故障診断を行う前に入力された入力データＤに対応するデータを保持する。
【００８１】
一方、組合回路３の故障診断時では、第２出力ホールド信号ＸＳ２Ｈは「１」に設定される。そのため、ＡＮＤ回路１４はクロック信号ＣＫをそのまま出力し、当該クロック信号ＣＫが第２スレーブラッチ回路１６に供給される。この場合、第２スレーブラッチ回路１６は、クロック信号ＣＫに応じて、マスターラッチ回路１２より入力されたデータに応じたデータを出力する。
【００８２】
更に、組合回路３の故障診断時では、選択信号ＳＳＥＬは「１」に設定される。そのため、セレクタ１７は、第２スレーブラッチ回路１６から出力されたデータに応じたデータを、つまりスキャンインデータＳＩに応じたデータを、スキャンアウトデータＳＯとして出力する。
【００８３】
このような各信号によってＳＦＦ１内の各回路を設定することで、第１スレーブラッチ回路１５にデータを保持させた状態で、第２スレーブラッチ回路１６より出力させたスキャンデータに基づいて、組合回路３の故障診断を適切に行うことが可能となる。
【００８４】
以上説明したように、組合回路３の故障診断時において、ＳＦＦ１は、故障診断前に入力されたデータを第１スレーブラッチ回路１５に保持させつつ、第２スレーブラッチ回路１６の出力を用いてスキャンデータを転送する。これにより、組合回路３の故障診断を適切に行うことができると共に、故障診断動作から通常動作への復帰を容易に行うことができる。つまり、第１スレーブラッチ回路１５に保持されたデータによって、故障診断前のＳＦＦ１の状態に容易に復帰することができる。
【００８５】
（故障診断フロー）
次に、第１実施形態に係る故障診断フローについて説明する。図７は、第１実施形態に係る故障診断フローの一例を示すフローチャートである。このフローは、基本的には、ＳＦＦ１の通常動作時に開始される。また、このフローは、故障診断回路２によって実行される。
【００８６】
まず、ステップＳ１０１では、故障診断回路２が、ＳＦＦ１の故障診断を実行可能な状態であるか否かを判定する。例えば、故障診断回路２は、ＳＦＦ１が組み込まれた回路などが現在行っている処理の内容に応じて、当該判定を行う。故障診断を実行可能な状態である場合（ステップＳ１０１；Ｙｅｓ）、処理はステップＳ１０２に進む。故障診断を実行可能な状態ではない場合（ステップＳ１０１；Ｎｏ）、処理はステップＳ１０１に戻る。この場合には、通常動作が継続される。
【００８７】
ステップＳ１０２では、故障診断回路２が、第１スレーブパスの故障診断を行う。具体的には、まず、故障診断回路２内の論理ＢＩＳＴ回路２１が、第１スレーブパスを適切に試験することが可能なスキャンデータを生成し、故障診断回路２内のセレクタ２４が当該スキャンデータをＳＦＦ１に供給する。この場合、故障診断回路２は、スキャンモードＳＭを「１」に設定し、第１出力ホールド信号ＸＳ１Ｈを「１」に設定し、第２出力ホールド信号ＸＳ２Ｈを「０」に設定し、選択信号ＳＳＥＬを「０」に設定する。これにより、ＳＦＦ１内の第１スレーブラッチ回路１５から出力されたスキャンデータが転送されていくこととなる。そして、故障診断回路２内の期待値比較回路２２に、最後段のＳＦＦ１からスキャンアウトデータＳＯが供給される。期待値比較回路２２は、当該スキャンアウトデータＳＯと、論理ＢＩＳＴ回路２１が生成したスキャンデータに応じた期待値とを比較することで、第１スレーブパスに対する故障診断を行う。更に、このように第１スレーブパスの故障診断を行う場合に、故障診断回路２内のシフトレジスタ回路２３が、最後段のＳＦＦ１から供給された出力データＱを、スキャンデータのパターン数分遅延させてセレクタ２４へ出力する。以上の処理が終了すると、処理はステップＳ１０３に進む。
【００８８】
ステップＳ１０３では、故障診断回路２が、ステップＳ１０２での診断結果に基づいて、第１スレーブパスが故障しているか否かを判定する。第１スレーブパスが故障している場合（ステップＳ１０３；Ｙｅｓ）、処理はステップＳ１０８に進む。この場合、故障内容に応じた対処が行われ（ステップＳ１０８）、処理は終了する。これに対して、第１スレーブパスが故障していない場合（ステップＳ１０３；Ｎｏ）、処理はステップＳ１０４に進む。
【００８９】
ステップＳ１０４では、故障診断回路２が、第２スレーブパスの故障診断を行う。具体的には、まず、故障診断回路２内の論理ＢＩＳＴ回路２１が、第２スレーブパスを適切に試験することが可能なスキャンデータを生成し、故障診断回路２内のセレクタ２４が当該スキャンデータをＳＦＦ１に供給する。この場合、故障診断回路２は、スキャンモードＳＭを「１」に設定し、第１出力ホールド信号ＸＳ１Ｈを「０」に設定し、第２出力ホールド信号ＸＳ２Ｈを「１」に設定し、選択信号ＳＳＥＬを「１」に設定する。これにより、故障診断前に入力されたデータがＳＦＦ１内の第１スレーブラッチ回路１５に保持されつつ、ＳＦＦ１内の第２スレーブラッチ回路１６から出力されたスキャンデータが転送されていくこととなる。そして、故障診断回路２内の期待値比較回路２２に、最後段のＳＦＦ１からスキャンアウトデータＳＯが供給される。期待値比較回路２２は、当該スキャンアウトデータＳＯと、論理ＢＩＳＴ回路２１が生成したスキャンデータに応じた期待値とを比較することで、第２スレーブパスに対する故障診断を行う。以上の処理が終了すると、処理はステップＳ１０５に進む。
【００９０】
ステップＳ１０５では、故障診断回路２が、ステップＳ１０４での診断結果に基づいて、第２スレーブパスが故障しているか否かを判定する。第２スレーブパスが故障している場合（ステップＳ１０５；Ｙｅｓ）、処理はステップＳ１０８に進む。この場合、故障内容に応じた対処が行われ（ステップＳ１０８）、処理は終了する。これに対して、第２スレーブパスが故障していない場合（ステップＳ１０５；Ｎｏ）、処理はステップＳ１０６に進む。
【００９１】
ステップＳ１０６では、故障診断回路２が、組合回路３の故障診断を行う。具体的には、まず、故障診断回路２内の論理ＢＩＳＴ回路２１が、組合回路３を適切に試験することが可能なスキャンデータを生成し、故障診断回路２内のセレクタ２４が当該スキャンデータをＳＦＦ１に供給する。この場合、故障診断回路２は、スキャンモードＳＭを「１」に設定し、第１出力ホールド信号ＸＳ１Ｈを「０」に設定し、第２出力ホールド信号ＸＳ２Ｈを「１」に設定し、選択信号ＳＳＥＬを「１」に設定する。これにより、故障診断前に入力されたデータがＳＦＦ１内の第１スレーブラッチ回路１５に保持されつつ、ＳＦＦ１内の第２スレーブラッチ回路１６から出力されたスキャンデータが転送されていくこととなる。
【００９２】
このようにスキャンデータが転送されていくことで、各ＳＦＦ１は、後段の組合回路３を故障診断することが可能なスキャンデータを保持した状態となる。この際に、故障診断回路２は、クロック信号ＣＫの１回分に相当する時間だけ、スキャンモードＳＭを「１」から「０」に切り替える。これにより、各ＳＦＦ１には前段の組合回路３がスキャンデータを処理した結果に対応するデータが供給され、各ＳＦＦ１は当該データを出力することとなる。この後、故障診断回路２は、スキャンモードＳＭを「０」から「１」に切り替える。これにより、各ＳＦＦ１は、組合回路３がスキャンデータを処理した結果に対応するデータを、後段のＳＦＦ１へ転送していく。そして、組合回路３がスキャンデータを処理した結果に対応するデータが、最後段のＳＦＦ１から故障診断回路２内の期待値比較回路２２へ、スキャンアウトデータＳＯとして供給される。期待値比較回路２２は、当該スキャンアウトデータＳＯと、論理ＢＩＳＴ回路２１が生成したスキャンデータに応じた期待値とを比較することで、組合回路３に対する故障診断を行う。以上の処理が終了すると、処理はステップＳ１０７に進む。
【００９３】
ステップＳ１０７では、故障診断回路２が、ステップＳ１０６での診断結果に基づいて、組合回路３が故障しているか否かを判定する。組合回路３が故障している場合（ステップＳ１０７；Ｙｅｓ）、処理はステップＳ１０８に進む。この場合、故障内容に応じた対処が行われ（ステップＳ１０８）、処理は終了する。これに対して、組合回路３が故障していない場合（ステップＳ１０７；Ｎｏ）、処理は終了する。この場合には、ＳＦＦ１の通常動作が再開される。
【００９４】
以上説明したように、第１実施形態に係るＳＦＦ１は、マスターラッチ回路１２と、マスターラッチ回路１２から出力されたデータが供給される２つのスレーブラッチ回路１５、１６と、を備える。また、ＳＦＦ１は、クロック信号ＣＫに依らずにスレーブラッチ回路１５、１６をホールド状態にすることが可能なＡＮＤ回路１３、１４と、スレーブラッチ回路１５、１６のいずれかの出力を選択するセレクタ１７と、を備える。このようなＳＦＦ１は、スキャンデータを用いた故障診断の実行時において、故障診断前に入力されたデータを第１スレーブラッチ回路１５に保持させつつ、第２スレーブラッチ回路１６の出力を用いてスキャンデータを転送する。つまり、ＳＦＦ１は、故障診断前に入力されたデータを第１スレーブラッチ回路１５に退避させた状態で、第２スレーブラッチ回路１６の出力を利用して故障診断を行う。これにより、ＳＦＦ１や組合回路３などの故障診断を適切に行うことができると共に、故障診断動作から通常動作への動作遷移を容易に行うことができる。つまり、第１スレーブラッチ回路１５に保持されたデータを出力させるだけで、故障診断動作から通常動作を速やかに再開することができる。
【００９５】
また、第１実施形態に係る故障診断回路２は、第１スレーブパスの故障診断時において、最後段のＳＦＦ１から供給された出力データＱを保持し、当該出力データＱをスキャンデータのパターン数分遅延させて出力するシフトレジスタ回路２３を備える。このようなシフトレジスタ回路２３によれば、第１スレーブパスの故障診断後において、故障診断直前の状態にＳＦＦ１を適切に戻すことができる。これにより、第２スレーブパスや組合回路３の故障診断時において故障診断前のデータを保持させておく第１スレーブラッチ回路１５に対して、故障診断を適切に行うことが可能となる。具体的には、故障診断前の入力データＤに対応するデータが失われることなく故障診断を行うことができる。
【００９６】
なお、上記した第１実施形態では、第２スレーブパスの故障診断を第１スレーブパスの故障診断の後に行う例を示したが、この代わりに、第２スレーブパスの故障診断を第１スレーブパスの故障診断の前に行っても良い。また、上記では、組合回路３の故障診断を第１スレーブパス及び第２スレーブパスの故障診断の後に行う例を示したが、この代わりに、組合回路３の故障診断を、第１スレーブパスの故障診断及び／又は第２スレーブパスの故障診断の前に行っても良い。
【００９７】
なお、上記した第１実施形態では、第２スレーブラッチ回路１６の出力を利用して故障診断を行う例を示したが、この代わりに、第１スレーブラッチ回路１５の出力を利用してスキャンシフトパスの故障診断を行っても良い。この場合には、故障診断前に入力されたデータを第２スレーブラッチ回路１６に保持させた状態で、故障診断を行うこととなる。
【００９８】
［第２実施形態］
次に、第２実施形態について説明を行う。なお、以下の説明では、第１実施形態で示した構成要素や信号などと同一のものについては、同一の符号を付し、その説明を省略する。また、特に説明しない構成要素や信号などについては、第１実施形態と同様であるものとする。
【００９９】
（適用例）
図８は、第２実施形態に係るＳＦＦ１ａ及び故障診断回路２ａの適用例を示すブロック図である。
【０１００】
図８に示すように、ＳＦＦ１ａは、第２スレーブラッチ回路１６のデータを復帰させるためのモードＲＴＮ（以下、「スレーブデータ復帰モード」と呼ぶ。）を設定するための信号が故障診断回路２ａから供給される点で、前述したＳＦＦ１と異なる。このスレーブデータ復帰モードＲＴＮは、故障診断動作の終了後において、第２スレーブラッチ回路１６を故障診断前の通常状態へ復帰させるために設定される。詳細は後述するが、故障診断前の通常状態への復帰動作は、第１スレーブラッチ回路１５に保持されたデータを第２スレーブラッチ回路１６に書き込むことで行われる。
【０１０１】
また、ＳＦＦ１ａは、スレーブラッチ回路１５、１６のそれぞれからの出力のレベルが同一であるか否かを示す信号Ｆ（以下、「出力レベル判定信号Ｆ」と呼ぶ。）を出力する点で、前述したＳＦＦ１と異なる。ＳＦＦ１ａから出力された出力レベル判定信号Ｆは、故障診断回路２ａに供給される。
【０１０２】
故障診断回路２ａは、シフトレジスタ回路２３及びセレクタ２４を具備せずに、スレーブラッチ故障診断回路２５を具備する点で、前述した故障診断回路２と異なる。また、故障診断回路２ａは、上記したスレーブデータ復帰モードＲＴＮを設定するための信号をＳＦＦ１ａに供給する点で、故障診断回路２と異なる。なお、故障診断回路２ａはセレクタ２４を具備しないため、論理ＢＩＳＴ回路２１から出力されたスキャンデータは、スキャンインデータＳＩとして最前段のＳＦＦ１ａに直接供給される。
【０１０３】
スレーブラッチ故障診断回路２５は、各ＳＦＦ１ａから出力レベル判定信号Ｆが供給され、当該出力レベル判定信号Ｆに基づいて、各ＳＦＦ１ａ内のスレーブラッチ回路１５、１６に対する故障診断を行う。スレーブラッチ故障診断回路２５は、スレーブラッチ回路１５、１６の出力が一致していないことを出力レベル判定信号Ｆが示している場合、スレーブラッチ回路１５、１６の少なくともいずれかが故障していると判定する。このようなスレーブラッチ回路１５、１６の故障診断は、ＳＦＦ１ａの通常動作時において、スレーブラッチ故障診断回路２５が出力レベル判定信号Ｆを監視することで行われる。なお、スレーブラッチ故障診断回路２５は、第２記憶回路故障診断回路の一例に相当する。
【０１０４】
（ＳＦＦの構成）
図９は、第２実施形態に係るＳＦＦ１ａの構成の一例を示すブロック図である。図９に示すように、ＳＦＦ１ａはセレクタ１８ａ、１８ｂ及びＸＯＲ回路１９を具備する点で、前述したＳＦＦ１と異なる。また、上記したように、ＳＦＦ１ａは、故障診断回路２ａから、スレーブデータ復帰モードＲＴＮを設定するための信号が供給される。
【０１０５】
セレクタ１８ａは、スキャンインデータＳＩが供給されると共に、最終段のセレクタ１７から出力されたデータが供給される。具体的には、セレクタ１８ａは、最終段のセレクタ１７から、入力データＤに対応する出力データＱが供給される。更に、セレクタ１８ａは、スレーブデータ復帰モードＲＴＮを設定するための信号が供給される。セレクタ１８ａは、スレーブデータ復帰モードＲＴＮに応じてスキャンインデータＳＩ及び出力データＱのいずれかを選択し、選択したデータを出力する。具体的には、セレクタ１８ａは、スレーブデータ復帰モードＲＴＮが「０」である場合にはスキャンインデータＳＩを出力し、スレーブデータ復帰モードＲＴＮが「１」である場合には出力データＱを出力する。基本的には、通常動作時及び故障診断時にはスレーブデータ復帰モードＲＴＮは「０」に設定され、故障診断の終了直後にスレーブデータ復帰モードＲＴＮが「１」に設定される。セレクタ１８ａから出力されたデータは、セレクタ１８ｂに供給される。
【０１０６】
セレクタ１８ｂは、セレクタ１８ａから出力されたスキャンインデータＳＩ及び出力データＱのいずれか一方が供給されると共に、入力データＤが供給される。また、セレクタ１８ｂは、スキャンモードＳＭを設定するための信号が供給される。セレクタ１８ｂは、スキャンモードＳＭに応じて、セレクタ１８ａから出力されたデータ及び入力データＤのいずれかを選択し、選択したデータを出力する。具体的には、セレクタ１８ｂは、スキャンモードＳＭが「０」である場合には入力データＤを出力し、スキャンモードＳＭが「１」である場合にはセレクタ１８ａから出力されたデータを出力する。基本的には、通常動作時にはスキャンモードＳＭは「０」に設定され、故障診断時及び故障診断の終了直後にスキャンモードＳＭが「１」に設定される。セレクタ１８ｂから出力されたデータは、マスターラッチ回路１２に供給される。なお、セレクタ１８ａ、１８ｂは、入力選択回路の一例に相当する。
【０１０７】
ＸＯＲ回路１９は、スレーブラッチ回路１５、１６のそれぞれから出力されたデータが供給される。そして、ＸＯＲ回路１９は、スレーブラッチ回路１５、１６のそれぞれから出力されたデータが一致するか否かを示す出力レベル判定信号Ｆを出力する。具体的には、ＸＯＲ回路１９は、スレーブラッチ回路１５、１６のそれぞれから出力されたデータが一致しない場合には、出力レベル判定信号Ｆとして「１」を出力する。一方、ＸＯＲ回路１９は、スレーブラッチ回路１５、１６のそれぞれから出力されたデータが一致する場合には、出力レベル判定信号Ｆとして「０」を出力する。ＸＯＲ回路１９から出力された出力レベル判定信号Ｆは、故障診断回路２ａ内のスレーブラッチ故障診断回路２５に供給される。なお、ＸＯＲ回路１９は、出力レベル判定回路の一例に相当する。
【０１０８】
（通常動作例）
次に、第２実施形態に係るＳＦＦ１ａ及び故障診断回路２ａの通常動作例について説明する。第２実施形態では、ＳＦＦ１ａの通常動作時において、故障診断回路２ａがスレーブラッチ回路１５、１６に対して故障診断を行う。
【０１０９】
図１０は、第２実施形態に係るＳＦＦ１ａ及び故障診断回路２ａの通常動作の一例を示す。
【０１１０】
図１０（ａ）は、ＳＦＦ１ａ及び故障診断回路２ａに関して、通常動作時におけるデータの流れの一例を示している。通常動作時においては、各ＳＦＦ１ａは、図１０（ａ）中の矢印Ｄ１で示すように、前段の組合回路３から入力データＤが供給され、当該入力データＤに対応する出力データＱをクロック信号ＣＫに応じて後段の組合回路３へ供給する。各組合回路３は、前段のＳＦＦ１ａから出力データＱが供給され、当該出力データＱに対して所定の演算を行い、その結果を入力データＤとして後段のＳＦＦ１ａに供給する。
【０１１１】
また、各ＳＦＦ１ａは、通常動作時において、図１０（ａ）中の矢印Ｄ２で示すように、出力レベル判定信号Ｆを故障診断回路２ａ内のスレーブラッチ故障診断回路２５へ供給する。そして、スレーブラッチ故障診断回路２５は、出力レベル判定信号Ｆに基づいて、各ＳＦＦ１ａ内のスレーブラッチ回路１５、１６に対する故障診断を行う。具体的には、スレーブラッチ故障診断回路２５は、出力レベル判定信号Ｆが「０」である場合には、スレーブラッチ回路１５、１６が正常であると判定する。これに対して、スレーブラッチ故障診断回路２５は、出力レベル判定信号Ｆが「１」である場合には、スレーブラッチ回路１５、１６の少なくともいずれかが故障していると判定する。
【０１１２】
図１０（ｂ）は、図１０（ａ）中の破線領域内のＳＦＦ１ａに関して、通常動作時における主なデータの流れの一例を示している。具体的には、太線でデータの流れを示している。通常動作時においては、スレーブデータ復帰モードＲＴＮが「０」に設定されると共に、スキャンモードＳＭが「０」に設定される。そのため、セレクタ１８ｂは入力データＤを出力し、当該入力データＤがマスターラッチ回路１２に供給される。そして、マスターラッチ回路１２は、クロック信号ＣＫに応じて、スレーブラッチ回路１５、１６に対して、入力データＤに対応するデータを出力する。
【０１１３】
通常動作時では、出力ホールド信号ＸＳ１Ｈ、ＸＳ２Ｈは両方とも「１」に設定される。そのため、ＡＮＤ回路１３、１４は両方ともクロック信号ＣＫをそのまま出力し、当該クロック信号ＣＫがスレーブラッチ回路１５、１６に供給される。この場合、スレーブラッチ回路１５、１６は両方とも、クロック信号ＣＫに応じて、マスターラッチ回路１２より入力されたデータに応じたデータを出力する。また、通常動作時では、選択信号ＳＳＥＬは「０」に設定される。そのため、セレクタ１７は、第１スレーブラッチ回路１５から出力されたデータに応じたデータを、つまり入力データＤに応じたデータを、出力データＱとして出力する。
【０１１４】
更に、通常動作時では、ＸＯＲ回路１９は、スレーブラッチ回路１５、１６のそれぞれから出力されたデータが一致するか否かを示す出力レベル判定信号Ｆを出力する。具体的には、ＸＯＲ回路１９は、スレーブラッチ回路１５、１６のそれぞれから出力されたデータが一致しない場合には、出力レベル判定信号Ｆとして「１」を出力する。一方、ＸＯＲ回路１９は、スレーブラッチ回路１５、１６のそれぞれから出力されたデータが一致する場合には、出力レベル判定信号Ｆとして「０」を出力する。
【０１１５】
なお、図１０では、通常動作時において選択信号ＳＳＥＬを「０」に設定する例を示したが、「０」の代わりに、選択信号ＳＳＥＬを「１」に設定しても良い。つまり、第１スレーブラッチ回路１５から出力されたデータに応じたデータの代わりに、第２スレーブラッチ回路１６から出力されたデータに応じたデータを、出力データＱとして用いても良い。
【０１１６】
以上説明したように、第２実施形態では、ＳＦＦ１ａ内のＸＯＲ回路１９が、スレーブラッチ回路１５、１６のそれぞれから出力されたデータが一致するか否かを示す出力レベル判定信号Ｆを出力する。そして、故障診断回路２ａ内のスレーブラッチ故障診断回路２５が、ＳＦＦ１ａの通常動作時において、当該出力レベル判定信号Ｆに基づいて、スレーブラッチ回路１５、１６に対する故障診断を行う。これにより、スキャンシフトパスや組合回路３の故障診断時において故障診断前のデータを保持する役目を有するスレーブラッチ回路１５、１６に対して、故障診断を適切に行うことが可能となる。具体的には、スキャンシフトパスや組合回路３の故障診断を行う前に、スレーブラッチ回路１５、１６の故障診断を予め行っておくことができる。即ち、スレーブラッチ回路１５、１６が正常であることが確認された状態で、スキャンシフトパスや組合回路３の故障診断を行うことが可能となる。
【０１１７】
（故障診断動作例）
次に、第２実施形態に係る故障診断動作例について説明する。
【０１１８】
（ａ）スキャンシフトパスの故障診断
まず、第２実施形態における、ＳＦＦ１ａによってスキャンデータがシフトされるパス（スキャンシフトパス）に対する故障診断の一例を示す。第２実施形態では、スキャンシフトパスの故障診断は、故障診断前に入力されたデータを第１スレーブラッチ回路１５に保持させた状態で、第２スレーブラッチ回路１６の出力を利用して行われる。また、第２実施形態では、スキャンシフトパスの故障診断の実行時において、出力レベル判定信号Ｆに基づいて、ＸＯＲ回路１９に対する故障診断も同時に行われる。
【０１１９】
なお、このようなスキャンシフトパスの故障診断は、上記した通常動作が行われている際に開始される。具体的には、スキャンシフトパスの故障診断は、通常動作を中断して実行される。そのため、スキャンシフトパスの故障診断は、出力レベル判定信号Ｆに基づいたスレーブラッチ回路１５、１６に対する故障診断が行われた後で実行されることとなる。つまり、スキャンシフトパスの故障診断は、スレーブラッチ回路１５、１６が正常であることが確認された状態で行われる。
【０１２０】
図１１は、第２実施形態に係るスキャンシフトパスの故障診断動作の一例を示す。図１１（ａ）は、ＳＦＦ１ａ及び故障診断回路２ａに関して、スキャンシフトパスの故障診断時におけるデータの流れの一例を示している。
【０１２１】
スキャンシフトパスの故障診断では、故障診断回路２ａ内の論理ＢＩＳＴ回路２１が、スキャンシフトパスを適切に試験することが可能なスキャンデータを生成する。例えば、論理ＢＩＳＴ回路２１は、「０１０」といった３パターンのスキャンデータを生成する。論理ＢＩＳＴ回路２１が生成したスキャンデータは、スキャンインデータＳＩとして最前段のＳＦＦ１ａに供給される。
【０１２２】
この後、各ＳＦＦ１ａは、図１１（ａ）中の矢印Ｅ１で示すように、スキャンデータを転送していく。つまり、各ＳＦＦ１ａは、前段のＳＦＦ１ａからスキャンインデータＳＩが供給され、当該スキャンインデータＳＩに対応するスキャンアウトデータＳＯを、組合回路３を介さずに後段のＳＦＦ１ａへ供給する。この場合、各ＳＦＦ１ａは、内部の第２スレーブラッチ回路１６の出力を用いて、スキャンデータを転送していく。また、各ＳＦＦ１ａは、故障診断前に入力された入力データＤに対応するデータを、内部の第１スレーブラッチ回路１５に保持させておく。
【０１２３】
そして、このようにスキャンデータが転送されていった場合において、最後段のＳＦＦ１ａは、図１１（ａ）中の矢印Ｅ２で示すように、スキャンアウトデータＳＯを期待値比較回路２２に供給する。期待値比較回路２２は、論理ＢＩＳＴ回路２１が生成したスキャンデータに応じた期待値と、最後段のＳＦＦ１ａから出力されたスキャンアウトデータＳＯとを比較することで、スキャンシフトパスに対する故障診断を行う。
【０１２４】
また、上記のようなスキャンシフトパスの故障診断時において、各ＳＦＦ１ａは、図１１（ａ）中の矢印Ｅ３で示すように、出力レベル判定信号Ｆを故障診断回路２ａ内のスレーブラッチ故障診断回路２５へ供給する。そして、スレーブラッチ故障診断回路２５は、出力レベル判定信号Ｆに基づいて、ＸＯＲ回路１９に対する故障診断を行う。
【０１２５】
ここで、ＸＯＲ回路１９に対する故障診断の基本原理について説明する。スキャンシフトパスの故障診断時では、第１スレーブラッチ回路１５はデータを保持しているため一定値を出力し、これに対して、第２スレーブラッチ回路１６はスキャンインデータＳＩに応じた値を出力する。つまり、第１スレーブラッチ回路１５の出力は一定値であるが、第２スレーブラッチ回路１６の出力は変化する傾向にある。スキャンデータは例えば「０１０」といったパターンが用いられるため、つまり「０」及び「１」の一方の値のみが用いられるわけではないので、第２スレーブラッチ回路１６の出力は変化する傾向にある。
【０１２６】
よって、基本的には、スキャンシフトパスの故障診断中においては、スレーブラッチ回路１５、１６のそれぞれの出力は一致と不一致との間で変化するものと言える。したがって、ＸＯＲ回路１９が正常である場合には、ＸＯＲ回路１９の出力レベル判定信号Ｆの値が変化すると言える。逆に、出力レベル判定信号Ｆの値が変化しない場合には、ＸＯＲ回路１９が故障していると言える。
【０１２７】
以上のことを考慮して、第２実施形態では、スキャンシフトパスの故障診断時において、ＸＯＲ回路１９から出力された出力レベル判定信号Ｆに基づいて、ＸＯＲ回路１９の故障診断を行う。具体的には、スレーブラッチ故障診断回路２５は、出力レベル判定信号Ｆの値が変化している場合、つまりＸＯＲ回路１９の出力が「０」と「１」との間で変化している場合には、ＸＯＲ回路１９が正常であると判定する。これに対して、スレーブラッチ故障診断回路２５は、出力レベル判定信号Ｆの値が変化していない場合、つまりＸＯＲ回路１９が「０」又は「１」を出力し続けている場合には、ＸＯＲ回路１９が故障していると判定する。
【０１２８】
図１１（ｂ）は、図１１（ａ）中の破線領域内のＳＦＦ１ａに関して、スキャンシフトパスの故障診断時における主なデータの流れの一例を示している。具体的には、太線でデータの流れを示している。スキャンシフトパスの故障診断時においては、スレーブデータ復帰モードＲＴＮが「０」に設定されると共に、スキャンモードＳＭが「１」に設定される。そのため、セレクタ１８ａはスキャンインデータＳＩを出力すると共に、セレクタ１８ｂはスキャンインデータＳＩを出力し、当該スキャンインデータＳＩがマスターラッチ回路１２に供給される。そして、マスターラッチ回路１２は、クロック信号ＣＫに応じて、スレーブラッチ回路１５、１６に対して、スキャンインデータＳＩに対応するデータを出力する。
【０１２９】
スキャンシフトパスの故障診断時では、第１出力ホールド信号ＸＳ１Ｈは「０」に設定される。そのため、ＡＮＤ回路１３は「０」を出力し、第１スレーブラッチ回路１５には制御信号として「０」が供給される。つまり、第１スレーブラッチ回路１５へのクロック信号ＣＫの供給が遮断される。この場合には、第１スレーブラッチ回路１５は、マスターラッチ回路１２からの入力に関わらずに、所定の出力を保持する。具体的には、第１スレーブラッチ回路１５は、スキャンシフトパス故障診断を行う前に入力された入力データＤに対応するデータを保持する。
【０１３０】
一方、スキャンシフトパスの故障診断時では、第２出力ホールド信号ＸＳ２Ｈは「１」に設定される。そのため、ＡＮＤ回路１４はクロック信号ＣＫをそのまま出力し、当該クロック信号ＣＫが第２スレーブラッチ回路１６に供給される。この場合、第２スレーブラッチ回路１６は、クロック信号ＣＫに応じて、マスターラッチ回路１２より入力されたデータに応じたデータを出力する。
【０１３１】
また、スキャンシフトパスの故障診断時では、選択信号ＳＳＥＬは「１」に設定される。そのため、セレクタ１７は、第２スレーブラッチ回路１６から出力されたデータに応じたデータを、つまりスキャンインデータＳＩに応じたデータを、スキャンアウトデータＳＯとして出力する。
【０１３２】
更に、スキャンシフトパスの故障診断時では、ＸＯＲ回路１９は、スレーブラッチ回路１５、１６のそれぞれから出力されたデータが一致するか否かを示す出力レベル判定信号Ｆを出力する。具体的には、ＸＯＲ回路１９は、スレーブラッチ回路１５、１６のそれぞれから出力されたデータが一致しない場合には、出力レベル判定信号Ｆとして「１」を出力する。一方、ＸＯＲ回路１９は、スレーブラッチ回路１５、１６のそれぞれから出力されたデータが一致する場合には、出力レベル判定信号Ｆとして「０」を出力する。
【０１３３】
このような各信号によってＳＦＦ１ａを設定することで、第１スレーブラッチ回路１５にデータを保持させた状態で、第２スレーブラッチ回路１６より出力させたスキャンデータに基づいて、スキャンシフトパスの故障診断を適切に行うことが可能となる。
【０１３４】
以上説明したように、スキャンシフトパスの故障診断時において、ＳＦＦ１ａは、故障診断前に入力されたデータを第１スレーブラッチ回路１５に保持させつつ、第２スレーブラッチ回路１６の出力を用いてスキャンデータを転送する。これにより、スキャンシフトパスの故障診断を適切に行うことができると共に、故障診断動作から通常動作への復帰を容易に行うことができる。つまり、第１スレーブラッチ回路１５に保持されたデータによって、故障診断前のＳＦＦ１ａの状態に容易に復帰することができる。
【０１３５】
また、第２実施形態では、スキャンシフトパスの故障診断時において、故障診断回路２ａのスレーブラッチ故障診断回路２５が、出力レベル判定信号Ｆに基づいてＸＯＲ回路１９の故障診断を行う。これにより、スキャンシフトパスの故障診断時において、ＸＯＲ回路１９の故障診断を同時に適切に行うことができる。即ち、スレーブラッチ回路１５、１６の故障診断を行う役目を有するＸＯＲ回路１９に対して、故障診断を適切に行うことができる。
【０１３６】
なお、上記では、第２スレーブパスによってデータを転送することでスキャンシフトパスの故障診断を行う例を示したが、この代わりに、第１スレーブパスによってデータを転送することでスキャンシフトパスの故障診断を行っても良い。この場合には、故障診断前に入力されたデータを第２スレーブラッチ回路１６に保持させた状態で、故障診断を行うこととなる。
【０１３７】
（ｂ）組合回路の故障診断
次に、第２実施形態に係る組合回路３の故障診断の一例を示す。組合回路３の故障診断は、故障診断前に入力されたデータを第１スレーブラッチ回路１５に保持させた状態で、第２スレーブラッチ回路１６の出力を利用して行われる。
【０１３８】
組合回路３の故障診断は、好適には、スキャンシフトパスの故障診断後に行われる。これは、組合回路３の故障診断ではスキャンシフトパスが利用されるため、スキャンシフトパスが正常であることが判定された後に、組合回路３を故障診断するのが望ましいからである。また、組合回路３の故障診断は、上記した通常動作後に行われる。そのため、組合回路３の故障診断は、スレーブラッチ回路１５、１６が正常であることが確認された状態で行われることとなる。
【０１３９】
なお、組合回路３の故障診断時においては、基本的には、故障診断回路２ａ内のスレーブラッチ故障診断回路２５は動作しない。これは、組合回路３の故障診断前において、スレーブラッチ回路１５、１６の故障診断及びＸＯＲ回路１９の故障診断が既に行われているからである。
【０１４０】
図１２は、第２実施形態に係る組合回路３の故障診断動作の一例を示す。図１２（ａ）は、ＳＦＦ１ａ及び故障診断回路２ａに関して、組合回路３の故障診断時におけるデータの流れの一例を示している。
【０１４１】
組合回路３の故障診断では、故障診断回路２ａ内の論理ＢＩＳＴ回路２１が、組合回路３を適切に試験することが可能なスキャンデータを生成する。具体的には、論理ＢＩＳＴ回路２１は、各組合回路３で行われる演算の内容を考慮したスキャンデータを生成する。例えば、論理ＢＩＳＴ回路２１は、乱数パターンのスキャンデータを生成する。論理ＢＩＳＴ回路２１が生成したスキャンデータは、スキャンインデータＳＩとして最前段のＳＦＦ１ａに供給される。
【０１４２】
組合回路３の故障診断を実行する場合、故障診断回路２ａは、まず、スキャンモードＳＭを「１」に設定する。これにより、各ＳＦＦ１ａは、上記したようなスキャンデータを、図１２（ａ）中の破線矢印Ｆ１で示すように転送していく。つまり、各ＳＦＦ１ａは、前段のＳＦＦ１ａからスキャンインデータＳＩが供給され、当該スキャンインデータＳＩに対応するスキャンアウトデータＳＯを、組合回路３を介さずに後段のＳＦＦ１ａへ供給する。この場合、各ＳＦＦ１ａは、内部の第２スレーブラッチ回路１６の出力を用いて、スキャンデータを転送していく。また、各ＳＦＦ１ａは、故障診断前に入力された入力データＤに対応するデータを、内部の第１スレーブラッチ回路１５に保持させておく。
【０１４３】
このようにスキャンデータが転送されていくことで、各ＳＦＦ１ａは、後段の組合回路３を故障診断することが可能なスキャンデータを保持した状態となる、つまり後段の組合回路３を故障診断することが可能なスキャンデータを出力可能な状態となる。具体的には、スキャンデータが概ね最後段のＳＦＦ１ａまで転送された際に、各ＳＦＦ１ａがこのような状態となる。この際に、故障診断回路２ａは、スキャンモードＳＭを「１」から「０」に切り替える。詳しくは、故障診断回路２ａは、クロック信号ＣＫの１回分に相当する時間だけ、スキャンモードＳＭを「０」に設定する。これにより、図１２（ａ）中の矢印Ｆ２で示すように、各ＳＦＦ１ａには前段の組合回路３がスキャンデータを処理した結果に対応するデータが供給され、各ＳＦＦ１ａは当該データを出力することとなる。
【０１４４】
この後、故障診断回路２ａは、スキャンモードＳＭを「０」から「１」に切り替える。これにより、各ＳＦＦ１ａは、図１２（ａ）中の破線矢印Ｆ１で示すように、組合回路３がスキャンデータを処理した結果に対応するデータを転送していく。つまり、組合回路３がスキャンデータを処理した結果に対応するデータが、組合回路３を介さずに、前段のＳＦＦ１ａから後段のＳＦＦ１ａへと次々に転送されていく。そして、最後段のＳＦＦ１ａは、図１２（ａ）中の矢印Ｆ３で示すように、組合回路３がスキャンデータを処理した結果に対応するデータをスキャンアウトデータＳＯとして、期待値比較回路２２に供給する。期待値比較回路２２は、論理ＢＩＳＴ回路２１が生成したスキャンデータに応じた期待値と、最後段のＳＦＦ１ａから出力されたスキャンアウトデータＳＯとを比較することで、組合回路３に対する故障診断を行う。
【０１４５】
図１２（ｂ）は、図１２（ａ）中の破線領域内のＳＦＦ１ａに関して、組合回路３の故障診断時における主なデータの流れの一例を示している。具体的には、太線でデータの流れを示している。組合回路３の故障診断時においては、スレーブデータ復帰モードＲＴＮが「０」に設定されると共に、スキャンモードＳＭが「１」に設定される。そのため、セレクタ１８ａはスキャンインデータＳＩを出力すると共に、セレクタ１８ｂはスキャンインデータＳＩを出力し、当該スキャンインデータＳＩがマスターラッチ回路１２に供給される。そして、マスターラッチ回路１２は、クロック信号ＣＫに応じて、スレーブラッチ回路１５、１６に対して、スキャンインデータＳＩに対応するデータを出力する。
【０１４６】
組合回路３の故障診断時では、第１出力ホールド信号ＸＳ１Ｈは「０」に設定される。そのため、ＡＮＤ回路１３は「０」を出力し、第１スレーブラッチ回路１５には制御信号として「０」が供給される。つまり、第１スレーブラッチ回路１５へのクロック信号ＣＫの供給が遮断される。この場合には、第１スレーブラッチ回路１５は、マスターラッチ回路１２からの入力に関わらずに、所定の出力を保持する。具体的には、第１スレーブラッチ回路１５は、スキャンシフトパスの故障診断を行う前に入力された入力データＤに対応するデータを保持する。
【０１４７】
一方、組合回路３の故障診断時では、第２出力ホールド信号ＸＳ２Ｈは「１」に設定される。そのため、ＡＮＤ回路１４はクロック信号ＣＫをそのまま出力し、当該クロック信号ＣＫが第２スレーブラッチ回路１６に供給される。この場合、第２スレーブラッチ回路１６は、クロック信号ＣＫに応じて、マスターラッチ回路１２より入力されたデータに応じたデータを出力する。
【０１４８】
また、組合回路３の故障診断時では、選択信号ＳＳＥＬは「１」に設定される。そのため、セレクタ１７は、第２スレーブラッチ回路１６から出力されたデータに応じたデータを、つまりスキャンインデータＳＩに応じたデータを、スキャンアウトデータＳＯとして出力する。
【０１４９】
このような各信号によってＳＦＦ１ａを設定することで、第１スレーブラッチ回路１５にデータを保持させた状態で、第２スレーブラッチ回路１６より出力させたスキャンデータに基づいて、組合回路３の故障診断を適切に行うことが可能となる。
【０１５０】
以上説明したように、組合回路３の故障診断時において、ＳＦＦ１ａは、故障診断前に入力されたデータを第１スレーブラッチ回路１５に保持させつつ、第２スレーブラッチ回路１６の出力を用いてスキャンデータを転送する。これにより、組合回路３の故障診断を適切に行うことができると共に、故障診断動作から通常動作への復帰を容易に行うことができる。つまり、第１スレーブラッチ回路１５に保持されたデータによって、故障診断前のＳＦＦ１ａの状態に容易に復帰することができる。
【０１５１】
（通常状態への復帰動作）
次に、第２実施形態における、故障診断前の通常状態への復帰動作例について説明する。第２実施形態では、上記したような故障診断の終了後に、具体的には故障診断後から通常動作の再開までの間に、第２スレーブラッチ回路１６を故障診断前の通常状態へ復帰させるための動作が行われる。ここで、「第２スレーブラッチ回路１６を故障診断前の通常状態へ復帰させる」とは、故障診断前の入力データＤに対応するデータを第２スレーブラッチ回路１６に保持させた状態に設定することを意味する。つまり、故障診断の終了直後においては第２スレーブラッチ回路１６にスキャンデータに対応するデータが保持された状態となっているため、当該状態から、故障診断前に入力されたデータを第２スレーブラッチ回路１６に保持させた状態に設定する。
【０１５２】
具体的には、ＳＦＦ１ａは、故障診断動作の終了直後において、第１スレーブラッチ回路１５に保持されたデータを第２スレーブラッチ回路１６に書き込むことで、第２スレーブラッチ回路１６を故障診断前の通常状態へ復帰させる。このような復帰を行うのは、故障診断後の通常動作において出力レベル判定信号Ｆに基づいたスレーブラッチ回路１５、１６の故障診断が行われるため、通常動作が再開される前に、スレーブラッチ回路１５、１６の出力を合わせておくことが望ましいからである。
【０１５３】
なお、通常状態への復帰動作時においては、基本的には、故障診断回路２ａは動作しない（ＳＦＦ１ａ内の各回路を制御するための信号を供給する動作は行うものとする）。
【０１５４】
図１３は、第２実施形態に係る通常状態への復帰動作の一例を示す。図１３（ａ）は、ＳＦＦ１ａに関して、復帰動作時におけるデータの流れの一例を示している。具体的には、各ＳＦＦ１ａは、図１３（ａ）中の矢印Ｇ１で示すように出力側のデータを入力側に戻すことによって、第２スレーブラッチ回路１６を故障診断前の通常状態へ復帰させる。
【０１５５】
図１３（ｂ）は、図１３（ａ）中の破線領域内のＳＦＦ１ａに関して、通常状態への復帰動作時における主なデータの流れの一例を示している。具体的には、太線でデータの流れを示している。
【０１５６】
通常状態への復帰動作時においては、第１出力ホールド信号ＸＳ１Ｈは「０」に設定される。そのため、ＡＮＤ回路１３は「０」を出力し、第１スレーブラッチ回路１５には制御信号として「０」が供給される。この場合には、第１スレーブラッチ回路１５は、マスターラッチ回路１２からの入力に関わらずに、所定の出力を保持する。具体的には、第１スレーブラッチ回路１５は、故障診断を行う前に入力された入力データＤに対応するデータを出力する。第１スレーブラッチ回路１５から出力されたデータは、セレクタ１７に供給される。
【０１５７】
また、通常状態への復帰動作時では、選択信号ＳＳＥＬは「０」に設定される。そのため、セレクタ１７は、第１スレーブラッチ回路１５から出力されたデータに応じたデータを出力する。具体的には、第１スレーブラッチ回路１５から出力されたデータは故障診断前の入力データＤに対応するデータであるため、セレクタ１７は、当該入力データＤに対応する出力データＱを出力することとなる。セレクタ１７から出力された出力データＱは、最前段のセレクタ１８ａに供給される。
【０１５８】
また、通常状態への復帰動作時では、スレーブデータ復帰モードＲＴＮが「１」に設定されると共に、スキャンモードＳＭが「１」に設定される。そのため、セレクタ１８ａは、上記したようにセレクタ１７から出力されたデータを選択して出力すると共に、セレクタ１８ｂは、セレクタ１８ａから出力されたデータを選択して出力する。セレクタ１８ｂから出力されたデータは、つまり出力データＱに対応するデータは、マスターラッチ回路１２に供給される。そして、マスターラッチ回路１２は、クロック信号ＣＫに応じて、スレーブラッチ回路１５、１６に対して、出力データＱに対応するデータを出力する。
【０１５９】
更に、通常状態への復帰動作時では、第２出力ホールド信号ＸＳ２Ｈは「１」に設定される。そのため、ＡＮＤ回路１４はクロック信号ＣＫをそのまま出力し、当該クロック信号ＣＫが第２スレーブラッチ回路１６に供給される。この場合、第２スレーブラッチ回路１６は、クロック信号ＣＫに応じて、マスターラッチ回路１２より入力されたデータに応じたデータを出力する、つまり出力データＱに対応するデータを出力する。このような第２スレーブラッチ回路１６の状態は、故障診断前の入力データＤに対応するデータを保持した状態に相当する。つまり、第１スレーブラッチ回路１５に保持されたデータが第２スレーブラッチ回路１６に書き込まれた状態に相当する。
【０１６０】
このような各信号によってＳＦＦ１ａを設定することで、第１スレーブラッチ回路１５に保持されたデータを、第２スレーブラッチ回路１６に適切に書き込むことが可能となる。
【０１６１】
以上説明したように、ＳＦＦ１ａは、故障診断の終了後において、第２スレーブラッチ回路１６を故障診断前の通常状態へ復帰させるための動作を行う、つまり故障診断前に入力されたデータを第２スレーブラッチ回路１６に保持させた状態に設定する。これにより、通常動作が再開された際にスレーブラッチ回路１５、１６の出力を合わせておくことができ、通常動作時における出力レベル判定信号Ｆに基づいたスレーブラッチ回路１５、１６の故障診断を、適切に行うことが可能となる。
【０１６２】
（故障診断フロー）
次に、第２実施形態に係る故障診断フローについて説明する。図１４は、第２実施形態に係る故障診断フローの一例を示すフローチャートである。このフローは、基本的には、ＳＦＦ１ａの通常動作時に開始される。また、このフローは、故障診断回路２ａによって実行される。
【０１６３】
まず、ステップＳ２０１では、故障診断回路２ａが、ＳＦＦ１ａの故障診断を実行可能な状態であるか否かを判定する。例えば、故障診断回路２ａは、ＳＦＦ１ａが組み込まれた回路などが現在行っている処理の内容に応じて、当該判定を行う。故障診断を実行可能な状態である場合（ステップＳ２０１；Ｙｅｓ）、処理はステップＳ２０２に進む。故障診断を実行可能な状態ではない場合（ステップＳ２０１；Ｎｏ）、処理はステップＳ２０１に戻る。この場合には、通常動作が継続される。
【０１６４】
ステップＳ２０２では、故障診断回路２ａが、スキャンシフトパスの故障診断を行う。具体的には、まず、故障診断回路２ａ内の論理ＢＩＳＴ回路２１が、スキャンシフトパスを適切に試験することが可能なスキャンデータを生成し、当該スキャンデータをＳＦＦ１ａに供給する。この場合、故障診断回路２ａは、スキャンモードＳＭを「１」に設定し、第１出力ホールド信号ＸＳ１Ｈを「０」に設定し、第２出力ホールド信号ＸＳ２Ｈを「１」に設定し、選択信号ＳＳＥＬを「１」に設定する。また、故障診断回路２ａは、スレーブデータ復帰モードＲＴＮを「０」に設定する。これにより、故障診断前に入力されたデータがＳＦＦ１ａ内の第１スレーブラッチ回路１５に保持されつつ、ＳＦＦ１ａ内の第２スレーブラッチ回路１６から出力されたスキャンデータが転送されていくこととなる。そして、故障診断回路２ａ内の期待値比較回路２２に、最後段のＳＦＦ１ａからスキャンアウトデータＳＯが供給される。期待値比較回路２２は、当該スキャンアウトデータＳＯと、論理ＢＩＳＴ回路２１が生成したスキャンデータに応じた期待値とを比較することで、スキャンシフトパスに対する故障診断を行う。更に、このようにスキャンシフトパスの故障診断を行う場合に、故障診断回路２ａ内のスレーブラッチ故障診断回路２５が、ＳＦＦ１ａ内のＸＯＲ回路１９から出力された出力レベル判定信号Ｆに基づいて、ＸＯＲ回路１９に対する故障診断を行う。以上の処理が終了すると、処理はステップＳ２０３に進む。なお、第２スレーブパスによってデータを転送する代わりに、第１スレーブパスによってデータを転送することで、スキャンシフトパスの故障診断を行っても良い。
【０１６５】
ステップＳ２０３では、故障診断回路２ａが、ステップＳ２０２での診断結果に基づいて、スキャンシフトパスが故障しているか否かを判定する。スキャンシフトパスが故障している場合（ステップＳ２０３；Ｙｅｓ）、処理はステップＳ２０７に進む。この場合、故障内容に応じた対処が行われ（ステップＳ２０７）、処理は終了する。これに対して、スキャンシフトパスが故障していない場合（ステップＳ２０３；Ｎｏ）、処理はステップＳ２０４に進む。
【０１６６】
ステップＳ２０４では、故障診断回路２ａが、組合回路３の故障診断を行う。具体的には、まず、故障診断回路２ａ内の論理ＢＩＳＴ回路２１が、組合回路３を適切に試験することが可能なスキャンデータを生成し、当該スキャンデータをＳＦＦ１ａに供給する。この場合、故障診断回路２ａは、スキャンモードＳＭを「１」に設定し、第１出力ホールド信号ＸＳ１Ｈを「０」に設定し、第２出力ホールド信号ＸＳ２Ｈを「１」に設定し、選択信号ＳＳＥＬを「１」に設定する。また、故障診断回路２ａは、スレーブデータ復帰モードＲＴＮを「０」に設定する。これにより、故障診断前に入力されたデータがＳＦＦ１ａ内の第１スレーブラッチ回路１５に保持されつつ、ＳＦＦ１ａ内の第２スレーブラッチ回路１６から出力されたスキャンデータが転送されていくこととなる。
【０１６７】
このようにスキャンデータが転送されていくことで、各ＳＦＦ１ａは、後段の組合回路３を故障診断することが可能なスキャンデータを保持した状態となる。この際に、故障診断回路２ａは、クロック信号ＣＫの１回分に相当する時間だけ、スキャンモードＳＭを「１」から「０」に切り替える。これにより、各ＳＦＦ１ａには前段の組合回路３がスキャンデータを処理した結果に対応するデータが供給され、各ＳＦＦ１ａは当該データを出力することとなる。この後、故障診断回路２ａは、スキャンモードＳＭを「０」から「１」に切り替える。これにより、各ＳＦＦ１ａは、組合回路３がスキャンデータを処理した結果に対応するデータを、後段のＳＦＦ１ａへ転送していく。そして、組合回路３がスキャンデータを処理した結果に対応するデータが、最後段のＳＦＦ１ａから故障診断回路２ａ内の期待値比較回路２２へ、スキャンアウトデータＳＯとして供給される。期待値比較回路２２は、当該スキャンアウトデータＳＯと、論理ＢＩＳＴ回路２１が生成したスキャンデータに応じた期待値とを比較することで、組合回路３に対する故障診断を行う。以上の処理が終了すると、処理はステップＳ２０５に進む。
【０１６８】
ステップＳ２０５では、故障診断回路２ａが、ステップＳ２０４での診断結果に基づいて、組合回路３が故障しているか否かを判定する。組合回路３が故障している場合（ステップＳ２０５；Ｙｅｓ）、処理はステップＳ２０７に進む。この場合、故障内容に応じた対処が行われ（ステップＳ２０７）、処理は終了する。これに対して、組合回路３が故障していない場合（ステップＳ２０５；Ｎｏ）、処理はステップＳ２０６に進む。
【０１６９】
ステップＳ２０６では、故障診断回路２ａが、第２スレーブラッチ回路１６を故障診断前の通常状態へ復帰させるための動作を行う。この場合、故障診断回路２ａは、スキャンモードＳＭを「１」に設定し、第１出力ホールド信号ＸＳ１Ｈを「０」に設定し、第２出力ホールド信号ＸＳ２Ｈを「１」に設定し、選択信号ＳＳＥＬを「０」に設定する。また、故障診断回路２ａは、スレーブデータ復帰モードＲＴＮを「１」に設定する。これにより、故障診断動作の終了後において、ＳＦＦ１ａは、第１スレーブラッチ回路１５に保持されたデータが第２スレーブラッチ回路１６に書き込まれた状態となる。つまり、ＳＦＦ１ａは、故障診断前に入力されたデータが第２スレーブラッチ回路１６に保持された状態となる。以上のステップＳ２０６の処理が終了すると、処理は終了する。この後、ＳＦＦ１ａの通常動作が再開される。
【０１７０】
以上説明したように、第２実施形態では、ＳＦＦ１ａ内のＸＯＲ回路１９が、スレーブラッチ回路１５、１６のそれぞれから出力されたデータが一致するか否かを示す出力レベル判定信号Ｆを出力する。そして、故障診断回路２ａ内のスレーブラッチ故障診断回路２５が、ＳＦＦ１ａの通常動作時において、当該出力レベル判定信号Ｆに基づいて、スレーブラッチ回路１５、１６に対する故障診断を行う。これにより、スキャンシフトパスや組合回路３の故障診断時において故障診断前のデータを保持する役目を有する第１スレーブラッチ回路１５に対して、故障診断を適切に行うことが可能となる。具体的には、スキャンシフトパスや組合回路３の故障診断を行う前に、スレーブラッチ回路１５、１６の故障診断を予め行っておくことができる。したがって、第１実施形態では第１スレーブパス及び第２スレーブパスの２回の故障診断を行っていたが、第２実施形態によれば、スキャンシフトパスの１回の故障診断のみ行えば良いと言える。つまり、第２実施形態によれば、第１実施形態と比較して、パスに対する故障診断の回数を減らすことができる。
【０１７１】
また、第２実施形態では、スキャンシフトパスの故障診断時において、故障診断回路２ａのスレーブラッチ故障診断回路２５が、出力レベル判定信号Ｆに基づいてＸＯＲ回路１９の故障診断を行う。これにより、スキャンシフトパスの故障診断時において、ＸＯＲ回路１９の故障診断を同時に適切に行うことができる。即ち、スレーブラッチ回路１５、１６の故障診断を行う役目を有するＸＯＲ回路１９に対して、故障診断を適切に行うことができる。
【０１７２】
更に、第２実施形態では、ＳＦＦ１ａが、故障診断の終了後において、第２スレーブラッチ回路１６を故障診断前の通常状態へ復帰させるための動作を行う、つまり故障診断前に入力されたデータを第２スレーブラッチ回路１６に保持させた状態に設定する。これにより、通常動作が再開された際にスレーブラッチ回路１５、１６の出力を合わせておくことができ、通常動作時における出力レベル判定信号Ｆに基づいたスレーブラッチ回路１５、１６の故障診断を適切に行うことが可能となる。
【０１７３】
なお、上記した第２実施形態では、組合回路３の故障診断をスキャンシフトパスの故障診断の後に行う例を示したが、この代わりに、組合回路３の故障診断をスキャンシフトパスの故障診断の前に行っても良い。
【０１７４】
なお、上記した第２実施形態では、第２スレーブラッチ回路１６の出力を利用して故障診断を行う例を示したが、この代わりに、第１スレーブラッチ回路１５の出力を利用してスキャンシフトパスの故障診断を行っても良い。この場合には、故障診断前に入力されたデータを第２スレーブラッチ回路１６に保持させた状態で、故障診断を行うこととなる。また、この場合には、第２スレーブラッチ回路１６に保持されたデータを第１スレーブラッチ回路１５に書き込むことで、第１スレーブラッチ回路１５を故障診断前の通常状態に復帰させることとなる。
【０１７５】
［変形例］
上記の実施形態では、２つのスレーブラッチ回路（第１スレーブラッチ回路１５及び第２スレーブラッチ回路１６）を有するＳＦＦを示したが、３以上のスレーブラッチ回路を有するようにＳＦＦを構成しても良い。このようなＳＦＦによれば、１以上のスレーブラッチ回路が故障していると診断された場合に、他のスレーブラッチ回路によって故障対処を適切に行うことが可能となる。つまり、他の正常なスレーブラッチ回路によって通常動作を適切に行わせることが可能となる。
【符号の説明】
【０１７６】
１、１ａ  スキャンフリップフロップ回路（ＳＦＦ）
２、２ａ  故障診断回路
３  組合回路
１１、１７、１８ａ、１８ｂ  セレクタ
１２  マスターラッチ回路
１３、１４  ＡＮＤ回路
１５  第１スレーブラッチ回路
１６  第２スレーブラッチ回路
１９  ＸＯＲ回路
２１  論理ＢＩＳＴ回路
２２  期待値比較回路
２３  シフトレジスタ回路
２５  スレーブラッチ故障診断回路
ＣＫ  クロック信号
Ｄ  入力データ
Ｆ  出力レベル判定信号
Ｑ  出力データ
ＲＴＮ  スレーブデータ復帰モード
ＳＩ  スキャンインデータ
ＳＭ  スキャンモード
ＳＯ  スキャンアウトデータ
ＳＳＥＬ  選択信号
ＸＳ１Ｈ  第１出力ホールド信号
ＸＳ２Ｈ  第２出力ホールド信号
【図１】
2011133356.tif 000003
【図２】
2011133356.tif 000004
【図３】
2011133356.tif 000005
【図４】
2011133356.tif 000006
【図５】
2011133356.tif 000007
【図６】
2011133356.tif 000008
【図７】
2011133356.tif 000009
【図８】
2011133356.tif 000010
【図９】
2011133356.tif 000011
【図１０】
2011133356.tif 000012
【図１１】
2011133356.tif 000013
【図１２】
2011133356.tif 000014
【図１３】
2011133356.tif 000015
【図１４】
2011133356.tif 000016