以下、実施形態の一例について図面を参照しつつ説明する。
[第1実施形態]
まず、第1実施形態について説明を行う。
(適用例)
図1は、第1実施形態に係るスキャンフリップフロップ回路1(以下、適宜「SFF」と表記する。)及び故障診断回路2の適用例を示すブロック図である。図1に示すように、複数のSFF1が組合回路3を介して直列に配置されている。各SFF1は、後段の組合回路3を介して、入力されたデータを後段のSFF1に次々に転送していく。故障診断回路2は、これら複数のSFF1に対する故障診断を行う。以下では、最も前段(初段)に配置されたSFF1を「最前段のSFF1」と呼び、最も後段(最終段)に配置されたSFF1を「最後段のSFF1」と呼ぶ。なお、SFF1は、集積回路(半導体集積回路)の一例に相当する。
SFF1は、基本的には、1つの「0」若しくは「1」といった状態を保持可能な1ビットの記憶回路であり、スキャン試験方式による試験が可能に構成されている。具体的には、SFF1は、図示しないマスター段セルを構成するラッチ回路(以下、「マスターラッチ回路」と呼ぶ。)と、スレーブ段セルを構成する2つのラッチ回路(以下、それぞれ「第1スレーブラッチ回路」及び「第2スレーブラッチ回路」と呼ぶ。)とを有する。なお、マスターラッチ回路、第1スレーブラッチ回路、及び第2スレーブラッチ回路については、詳細は後述する。
SFF1は、組合回路3から入力データDが供給されると共に、外部の回路(不図示)からクロック信号CKが供給される。この場合、複数のSFF1において最前段のSFF1は、外部の回路(不図示)から入力データDが供給される。また、SFF1は、前段のSFF1から、故障診断するためのスキャンデータSI(以下、適宜「スキャンインデータSI」と呼ぶ。)が供給される。この場合、最前段のSFF1は、故障診断回路2からスキャンインデータSIが供給される。
更に、SFF1は、故障診断回路2から、クロック信号CKに依らずに第1スレーブラッチ回路を強制ホールドするための第1出力ホールド信号XS1Hと、クロック信号CKに依らずに第2スレーブラッチ回路を強制ホールドするための第2出力ホールド信号XS2Hとが供給される。加えて、SFF1は、故障診断回路2から、スキャンモードSMを設定するための信号と、第1スレーブラッチ回路及び第2スレーブラッチ回路のいずれかの出力を選択するための選択信号SSELとが供給される。
そして、SFF1は、入力データDに対応する出力データQ及びスキャンインデータSIに対応するスキャンデータSO(以下では、適宜「スキャンアウトデータSO」と呼ぶ。)のいずれかを出力する。基本的には、出力データQは組合回路3に供給され、スキャンアウトデータSOは組合回路3を介さずに後段のSFF1に供給される。なお、最後段のSFF1から出力された出力データQは外部の回路に供給され、最後段のSFF1から出力されたスキャンアウトデータSOは故障診断回路2に供給される。
故障診断回路2は、論理BIST回路21と、期待値比較回路22と、シフトレジスタ回路23と、セレクタ24と、を有する。故障診断回路2は、上記した、スキャンインデータSIと、第1出力ホールド信号XS1Hと、第2出力ホールド信号XS2Hと、スキャンモードSMを設定するための信号と、選択信号SSELとを、SFF1に供給する。
論理BIST回路21は、故障診断を行うためのスキャンデータを生成する。具体的には、論理BIST回路21は、故障診断の内容に応じたパターン(例えば乱数パターン)を生成し、これをスキャンデータとして出力する。論理BIST回路21から出力されたスキャンデータは、セレクタ24及び期待値比較回路22に供給される。なお、「スキャンデータを生成する」には、新たなスキャンデータを求めるだけでなく、予め設定されたスキャンデータを用いることも含まれるものとする。
期待値比較回路22は、最後段のSFF1から出力されたスキャンアウトデータSOが供給され、当該スキャンアウトデータSOに基づいてSFF1などの故障診断を行う。具体的には、期待値比較回路22は、論理BIST回路21が生成したスキャンデータを複数のSFF1などに供給した場合に、最後段のSFF1から最終的に出力されるべきデータに対応する値を期待値として用いる。この場合、期待値比較回路22は、論理BIST回路21が生成したスキャンデータに応じた期待値を用いる。そして、期待値比較回路22は、当該期待値と最後段のSFF1から出力されたスキャンアウトデータSOとを比較することで、故障診断を行う。例えば、期待値比較回路22は、CRC(Cyclic Redundancy Check)などの手法を用いて故障診断を行う。
シフトレジスタ回路23は、例えば複数のフリップフロップ回路がカスケード接続されて構成された回路であり、入力されたデータを当該回路内で移動(シフト)させる。具体的には、シフトレジスタ回路23は、スキャンデータを用いた故障診断の実行時において、最後段のSFF1から出力された出力データQが供給されて、当該出力データQを保持する。そして、シフトレジスタ回路23は、論理BIST回路21が生成したスキャンデータに応じて遅延させたタイミングで、保持しているデータを出力する。シフトレジスタ回路23から出力されたデータは、セレクタ24に供給される。例えば、論理BIST回路21が3パターンのスキャンデータを生成する場合には、シフトレジスタ回路23は3段のシフトレジスタ回路として構成される。
セレクタ24は、論理BIST回路21が生成したスキャンデータ及びシフトレジスタ回路23から出力されたデータが供給される。セレクタ24は、図示しない故障診断回路2内の回路によって制御され、スキャンデータ及びシフトレジスタ回路23から出力されたデータのいずれかのデータを選択し、選択したデータを出力する。セレクタ24から出力されたデータは、最前段のSFF1に供給される。この場合、スキャンデータは、スキャンインデータSIとして最前段のSFF1に供給される。
組合回路3は、出力がその時点における入力の値の組み合わせにより定まる論理回路である。組合回路3は、2つのSFF1の間に配置されており、前段のSFF1から出力されたデータが供給される。基本的には、組合回路3は、前段のSFF1から出力データQが供給される。組合回路3は、供給されたデータに対して所定の演算を行い、その結果に対応するデータを出力する。組合回路3から出力されたデータは、入力データDとして、後段のSFF1に供給される。
(SFFの構成)
図2は、第1実施形態に係るSFF1の構成の一例を示すブロック図である。図2に示すように、SFF1は、セレクタ11と、マスターラッチ回路12と、AND回路13、14と、第1スレーブラッチ回路15と、第2スレーブラッチ回路16と、セレクタ17と、を有する。前述したように、SFF1は、組合回路3若しくは外部の回路から入力データDが供給されると共に、外部の回路からクロック信号CKが供給される。また、SFF1は、前段のSFF1若しくは故障診断回路2から、スキャンインデータSIが供給される。更に、SFF1は、故障診断回路2から、第1出力ホールド信号XS1Hと、第2出力ホールド信号XS2Hと、スキャンモードSMを設定するための信号と、選択信号SSELとが供給される。
セレクタ11は、スキャンインデータSI及び入力データDが供給されると共に、スキャンモードSMを設定するための信号が供給される。セレクタ11は、スキャンモードSMに応じてスキャンインデータSI及び入力データDのいずれかを選択し、選択したデータを出力する。具体的には、セレクタ11は、スキャンモードSMが「0」である場合には入力データDを出力し、スキャンモードSMが「1」である場合にはスキャンインデータSIを出力する。基本的には、通常動作時にはスキャンモードSMは「0」に設定され、故障診断時にスキャンモードSMが「1」に設定される。セレクタ11から出力されたデータは、マスターラッチ回路12に供給される。なお、セレクタ11は、入力選択回路の一例に相当する。
マスターラッチ回路12は、所謂Dラッチ回路として構成されている。基本的には、マスターラッチ回路12は、セレクタ11から出力されたデータが供給されると共にクロック信号CK(イネーブル信号に相当する)が供給され、クロック信号CKに応じて、セレクタ11から出力されたデータを保持する。具体的には、マスターラッチ回路12は、クロック信号CKを反転させた信号(以下、単に「反転クロック信号」と呼ぶ。)がハイレベルである場合には、入力されたデータを反転させたデータを出力する。これに対して、マスターラッチ回路12は、反転クロック信号がローレベルである場合には、以前に入力されたデータを保持する。つまり、この場合、マスターラッチ回路12は、現在入力されているデータに関わらずに、反転クロック信号がローレベルになる直前に入力されたデータに対応するデータを出力し続ける。マスターラッチ回路12から出力されたデータは、第1スレーブラッチ回路15及び第2スレーブラッチ回路16の両方に供給される。つまり、第1スレーブラッチ回路15及び第2スレーブラッチ回路16は、マスターラッチ回路12に対してパラレルに接続されている。なお、マスターラッチ回路12は、第1記憶回路の一例に相当し、クロック信号CKは、第1制御信号の一例に相当する。
AND回路13及びAND回路14は、クロック信号CKが供給されると共に、それぞれ第1出力ホールド信号XS1H及び第2出力ホールド信号XS2H(以下、これらを区別しない場合には「出力ホールド信号XS1H、XS2H」と表記する。)が供給される。AND回路13、14は、それぞれ、出力ホールド信号XS1H、XS2Hが「1」である場合には、供給されたクロック信号CKをそのまま出力する。これに対して、AND回路13、14は、それぞれ、出力ホールド信号XS1H、XS2Hが「0」である場合には、供給されたクロック信号CKに関わらずに「0」を出力する。つまり、出力ホールド信号XS1H、XS2Hが「0」である場合には、クロック信号CKは、AND回路13、14によって無効(言い換えると不能)にされる。AND回路13、14から出力されたデータは、それぞれ、第1スレーブラッチ回路15及び第2スレーブラッチ回路16に供給される。
基本的には、クロック信号CKに依存させずに第1スレーブラッチ回路15を強制ホールドさせる場合に、第1出力ホールド信号XS1Hが「0」に設定される。一方、クロック信号CKに依存させずに第2スレーブラッチ回路16を強制ホールドさせる場合に第2出力ホールド信号XS2Hが「0」に設定される。例えば故障診断時において、第1出力ホールド信号XS1H及び第2出力ホールド信号XS2Hの少なくともいずれかが「0」に設定される。
なお、AND回路13及びAND回路14は、制御信号出力回路の一例に相当する。この場合、出力ホールド信号XS1H、XS2Hが「0」であるときのAND回路13、14の出力、つまりAND回路13、14から出力された「0」の信号は、第2制御信号の一例に相当する。また、上記した故障診断回路2は、第1スレーブラッチ回路15及び第2スレーブラッチ回路16の少なくともいずれかに対して、クロック信号CKに依らずに強制的にデータを保持させるために、AND回路13、14を制御する制御回路の一例に相当する。この場合、故障診断回路2は、出力ホールド信号XS1H、XS2Hを設定することでAND回路13、14に対する制御を行う。
第1スレーブラッチ回路15及び第2スレーブラッチ回路16(以下、これらを区別しない場合には「スレーブラッチ回路15、16」と表記する。)は、所謂Dラッチ回路として構成されている。スレーブラッチ回路15、16は、マスターラッチ回路12から出力されたデータが供給されると共に、それぞれAND回路13、14から出力されたデータが供給される。そして、スレーブラッチ回路15、16は、それぞれ、AND回路13、14から出力されたデータを制御信号として用いて、マスターラッチ回路12より入力されたデータを保持する。具体的には、スレーブラッチ回路15、16は、それぞれ、AND回路13、14から出力されたデータがハイレベルである場合には、入力されたデータを反転させたデータを出力する。これに対して、スレーブラッチ回路15、16は、それぞれ、AND回路13、14から出力されたデータがローレベルである場合には、出力を保持する。つまり、この場合には、スレーブラッチ回路15、16は、現在入力されたデータに関わらずに、AND回路13、14から出力されたデータがローレベルになる直前に入力されたデータに対応するデータを出力し続ける。スレーブラッチ回路15、16から出力されたデータは、セレクタ17に供給される。なお、スレーブラッチ回路15、16は、それぞれ、第2記憶回路の一例に相当する。
セレクタ17は、スレーブラッチ回路15、16からそれぞれ出力されたデータが供給されると共に、選択信号SSELが供給される。セレクタ17は、選択信号SSELに応じて、第1スレーブラッチ回路15及び第2スレーブラッチ回路16のいずれかから出力されたデータを選択し、選択したデータを出力する。具体的には、セレクタ17は、選択信号SSELが「0」である場合には第1スレーブラッチ回路15から出力されたデータを選択し、選択信号SSELが「1」である場合には第2スレーブラッチ回路16から出力されたデータを選択する。セレクタ17から出力されたデータは、前述した出力データQ又はスキャンアウトデータSOに相当する。基本的には、出力データQは組合回路3に供給され、スキャンアウトデータSOは組合回路3を介さずに後段のSFF1に供給される。なお、セレクタ17は、出力選択回路の一例に相当する。
(通常動作例)
次に、第1実施形態に係るSFF1及び故障診断回路2の通常動作例について説明する。ここで、「通常動作」とは、各SFF1が、クロック信号CKに応じて、前段の組合回路3から入力された入力データDを出力データQとして後段の組合回路3へ転送していく動作を指す。なお、基本的には、通常動作時においては、故障診断回路2は動作しない(SFF1内の各回路を制御するための信号を供給する動作は行うものとする)。
図3は、第1実施形態に係るSFF1及び故障診断回路2の通常動作の一例を示す。
図3(a)は、SFF1に関して、通常動作時におけるデータの流れの一例を示している。具体的には、矢印でデータの流れを示している。通常動作時においては、各SFF1は、前段の組合回路3から入力データDが供給され、当該入力データDに対応する出力データQをクロック信号CKに応じて後段の組合回路3へ供給する。各組合回路3は、前段のSFF1から出力データQが供給され、当該出力データQに対して所定の演算を行い、その結果を入力データDとして後段のSFF1に供給する。
図3(b)は、図3(a)中の破線領域内のSFF1に関して、通常動作時における主なデータの流れの一例を示している。具体的には、太線でデータの流れを示している。通常動作時においては、スキャンモードSMは「0」に設定される。そのため、セレクタ11は入力データDを出力し、当該入力データDがマスターラッチ回路12に供給される。そして、マスターラッチ回路12は、クロック信号CKに応じて、スレーブラッチ回路15、16に対して、入力データDに対応するデータを出力する。
通常動作時では、第1出力ホールド信号XS1Hは「1」に設定される。そのため、AND回路13はクロック信号CKをそのまま出力し、当該クロック信号CKが第1スレーブラッチ回路15に供給される。この場合、第1スレーブラッチ回路15は、クロック信号CKに応じて、マスターラッチ回路12より入力されたデータに応じたデータを出力する。
一方、通常動作時では、第2出力ホールド信号XS2Hは「0」に設定される。そのため、AND回路14は「0」を出力し、第2スレーブラッチ回路16には制御信号として「0」が供給される。つまり、第2スレーブラッチ回路16へのクロック信号CKの供給が遮断される。この場合には、第2スレーブラッチ回路16は、マスターラッチ回路12からの入力に関わらずに、所定の出力を保持する。
更に、通常動作時では、選択信号SSELは「0」に設定される。そのため、セレクタ17は、第1スレーブラッチ回路15から出力されたデータに応じたデータを、つまり入力データDに応じたデータを、出力データQとして出力する。
なお、図3では、通常動作時において第2出力ホールド信号XS2Hを「0」に設定する例を示したが、「0」の代わりに、第2出力ホールド信号XS2Hを「1」に設定しても良い。つまり、第2スレーブラッチ回路16へのクロック信号CKを止める代わりに、第2スレーブラッチ回路16へクロック信号CKを供給しても良い。
(故障診断動作例)
次に、第1実施形態に係る故障診断動作例について説明する。
(a)第1スレーブパスの故障診断
ここでは、SFF1によってスキャンデータがシフトされるパス(以下、「スキャンシフトパス」と呼ぶ。)に対する故障診断の一例を示す。特に、第1スレーブラッチ回路15に関するスキャンシフトパス(以下、「第1スレーブパス」と呼ぶ。)に対する故障診断の一例を示す。この第1スレーブパスの故障診断には、第1スレーブラッチ回路15に対する故障診断が含まれる。なお、スキャンシフトパスは、基本的には、組合回路3を経由しないパスである。
第1実施形態では、第1スレーブパスの故障診断は、第1スレーブラッチ回路15の出力を利用して行われる。また、第1スレーブパスの故障診断は、シフトレジスタ回路23を利用して行われる。具体的には、第1スレーブパスの故障診断は、故障診断前に入力された入力データDに対応するデータを、シフトレジスタ回路23に保持させながら行われる。
図4は、第1実施形態に係る第1スレーブパスの故障診断動作の一例を示す。図4(a)は、SFF1及び故障診断回路2に関して、第1スレーブパスの故障診断時におけるデータの流れの一例を示している。
第1スレーブパスの故障診断では、故障診断回路2内の論理BIST回路21が、第1スレーブパスを適切に試験することが可能なスキャンデータを生成する。例えば、論理BIST回路21は、「010」といった3パターンのスキャンデータを生成する。論理BIST回路21が生成したスキャンデータは、セレクタ24に供給される。そして、セレクタ24はスキャンデータを選択することで、当該スキャンデータをスキャンインデータSIとして最前段のSFF1に供給する。
このようにスキャンインデータSIが最前段のSFF1に供給されることで、第1スレーブパスの故障診断が開始される。そして、各SFF1は、図4(a)中の矢印A1で示すように、スキャンデータを転送していく。つまり、各SFF1は、前段のSFF1からスキャンインデータSIが供給され、当該スキャンインデータSIに対応するスキャンアウトデータSOを、組合回路3を介さずに後段のSFF1へ供給する。この場合、各SFF1は、内部の第1スレーブラッチ回路15の出力を用いて、スキャンデータを転送していく。
そして、このようにスキャンデータが転送されていった場合において、最後段のSFF1は、図4(a)中の矢印A2で示すように、スキャンアウトデータSOを期待値比較回路22に供給する。期待値比較回路22は、論理BIST回路21が生成したスキャンデータに応じた期待値と、最後段のSFF1から出力されたスキャンアウトデータSOとを比較することで、第1スレーブパスに対する故障診断を行う。
また、上記のように第1スレーブパスの故障診断が開始された際に、図4(a)中の破線矢印A3で示すように、最後段のSFF1から出力された出力データQがシフトレジスタ回路23へ供給される。具体的には、故障診断回路2によって最前段のSFF1へのスキャンデータの供給が開始された際に、最後段のSFF1から出力された出力データQがシフトレジスタ回路23へ供給される。この場合、シフトレジスタ回路23は、供給された出力データQを保持する。そして、シフトレジスタ回路23は、論理BIST回路21が生成したスキャンデータのパターン数に応じて遅延させたタイミングで、図4(a)中の破線矢印A4で示すように、保持しているデータをセレクタ24へ出力する。シフトレジスタ回路23がスキャンデータのパターン数に応じて遅延させたタイミングでデータを出力するため、セレクタ24には、論理BIST回路21がスキャンデータを出力し終えた際に、シフトレジスタ回路23からデータが供給されることとなる。例えば、論理BIST回路21が3パターンのスキャンデータを生成した場合には、シフトレジスタ回路23は、当該3パターンだけ遅延させたタイミングで、保持しているデータを出力する。
このように、シフトレジスタ回路23は、第1スレーブパスの故障診断の実行時において、最後段のSFF1から次々と供給された出力データQを保持し、当該出力データQをスキャンデータのパターン数分遅延させてセレクタ24へ次々と出力する。そして、セレクタ24は、シフトレジスタ回路23から出力されたデータを選択することで、当該データを最前段のSFF1に供給する。具体的には、セレクタ24は、論理BIST回路21がスキャンデータを出力し終えた際に、選択して出力するデータを、スキャンデータから、シフトレジスタ回路23から出力されたデータへと切り替える。この後、各SFF1は、図4(a)中の破線矢印A5で示すように、セレクタ24から供給されたデータ(つまり最後段のSFF1から出力された出力データQ)を、後段のSFF1へ次々と転送していく。
以上のようにシフトレジスタ回路23が動作することで、各SFF1は、第1スレーブパスの故障診断の終了後において、故障診断の直前の状態に戻されることとなる。つまり、各SFF1は、第1スレーブパスの故障診断の直前に保持していたデータを適切に保持することとなる。
なお、このようなシフトレジスタ回路23の動作は、第1スレーブパスの故障診断が終了するまで行われる、つまり最後段のSFF1から期待値比較回路22へのスキャンデータの出力が終了するまで行われる。また、基本的には、第1スレーブパスの故障診断を行う場合以外には、シフトレジスタ回路23は動作しない。
図4(b)は、図4(a)中の破線領域内のSFF1に関して、第1スレーブパスの故障診断時における主なデータの流れの一例を示している。具体的には、太線でデータの流れを示している。第1スレーブパスの故障診断時においては、スキャンモードSMは「1」に設定される。そのため、セレクタ11はスキャンインデータSIを出力し、当該スキャンインデータSIがマスターラッチ回路12に供給される。そして、マスターラッチ回路12は、クロック信号CKに応じて、スレーブラッチ回路15、16に対して、スキャンインデータSIに対応するデータを出力する。
第1スレーブパスの故障診断時では、第1出力ホールド信号XS1Hは「1」に設定される。そのため、AND回路13はクロック信号CKをそのまま出力し、当該クロック信号CKが第1スレーブラッチ回路15に供給される。この場合、第1スレーブラッチ回路15は、クロック信号CKに応じて、マスターラッチ回路12より入力されたデータに応じたデータを出力する。
一方、第1スレーブパスの故障診断時では、第2出力ホールド信号XS2Hは「0」に設定される。そのため、AND回路14は「0」を出力し、第2スレーブラッチ回路16には制御信号として「0」が供給される。つまり、第2スレーブラッチ回路16へのクロック信号CKの供給が遮断される。この場合には、第2スレーブラッチ回路16は、マスターラッチ回路12からの入力に関わらずに、所定の出力を保持する。なお、最終段のセレクタ17が第2スレーブラッチ回路16の出力を選択するようにスタック故障していた場合を考慮して、上記のように第2スレーブラッチ回路16へのクロック信号CKの供給を遮断している。
更に、第2スレーブパスの故障診断時では、選択信号SSELは「0」に設定される。そのため、セレクタ17は、第1スレーブラッチ回路15から出力されたデータに応じたデータを、つまりスキャンインデータSIに応じたデータを、スキャンアウトデータSOとして出力する。
このような各信号によってSFF1内の各回路を設定することで、第1スレーブラッチ回路15より出力させたスキャンデータに基づいて、第1スレーブパスの故障診断を適切に行うことが可能となる。
以上説明したように、第1スレーブパスの故障診断時では、故障診断回路2内のシフトレジスタ回路23が、最後段のSFF1から供給された出力データQを保持し、当該出力データQをスキャンデータのパターン数分遅延させて出力する。これにより、第1スレーブパスの故障診断後において、故障診断直前の状態にSFF1を適切に戻すことができる。したがって、第1スレーブラッチ回路15の故障診断を適切に行うことが可能となる。具体的には、後述する第2スレーブパスや組合回路3の故障診断時において入力データDに対応するデータを保持する役目を有する第1スレーブラッチ回路15に対して、適切に故障診断することが可能となる。
(b)第2スレーブパスの故障診断
次に、第1実施形態における、第2スレーブラッチ回路16に関するスキャンシフトパス(以下、「第2スレーブパス」と呼ぶ。)に対する故障診断の一例を示す。第2スレーブパスの故障診断は、故障診断前に入力されたデータを第1スレーブラッチ回路15に保持させた状態で、第2スレーブラッチ回路16の出力を利用して行われる点で、第1スレーブパスの故障診断と異なる。つまり、第2スレーブパスの故障診断では、第1スレーブパスの故障診断のようにシフトレジスタ回路23にデータを保持させるのではなく、第1スレーブラッチ回路15にデータを保持させる。
第2スレーブパスの故障診断は、好適には、第1スレーブパスの故障診断の後に行われる。これは、第2スレーブパスの故障診断では第1スレーブラッチ回路15にデータを保持させておくため、第1スレーブラッチ回路15が正常であることが判定された後に、第2スレーブパスを故障診断するのが望ましいからである。上記したように、第1スレーブパスの故障診断の終了時には、シフトレジスタ回路23の動作により、第1スレーブラッチ回路15に入力データDに対応するデータが保持された状態となる。そのため、第1スレーブパスの故障診断の後に第2スレーブパスの故障診断を行うことで、第1スレーブラッチ回路15にデータが適切に保持された状態で、第2スレーブパスの故障診断を開始することができる。
なお、第2スレーブパスの故障診断には、第2スレーブラッチ回路16に対する故障診断が含まれる。
図5は、第1実施形態に係る第2スレーブパスの故障診断動作の一例を示す。図5(a)は、SFF1及び故障診断回路2に関して、第2スレーブパスの故障診断時におけるデータの流れの一例を示している。
第2スレーブパスの故障診断では、故障診断回路2内の論理BIST回路21が、第2スレーブパスを適切に試験することが可能なスキャンデータを生成する。例えば、論理BIST回路21は、「010」といった3パターンのスキャンデータを生成する。論理BIST回路21が生成したスキャンデータは、セレクタ24に供給される。そして、セレクタ24はスキャンデータを選択することで、当該スキャンデータをスキャンインデータSIとして最前段のSFF1に供給する。
この後、各SFF1は、図5(a)中の矢印B1で示すように、スキャンデータを転送していく。つまり、各SFF1は、前段のSFF1からスキャンインデータSIが供給され、当該スキャンインデータSIに対応するスキャンアウトデータSOを、組合回路3を介さずに後段のSFF1へ供給する。この場合、各SFF1は、内部の第2スレーブラッチ回路16の出力を用いて、スキャンデータを転送していく。また、各SFF1は、故障診断前に入力された入力データDに対応するデータを、内部の第1スレーブラッチ回路15に保持させておく。
そして、このようにスキャンデータが転送されていった場合において、最後段のSFF1は、図5(a)中の矢印B2で示すように、スキャンアウトデータSOを期待値比較回路22に供給する。期待値比較回路22は、論理BIST回路21が生成したスキャンデータに応じた期待値と、最後段のSFF1から出力されたスキャンアウトデータSOとを比較することで、第2スレーブパスに対する故障診断を行う。
なお、第2スレーブパスの故障診断を行う場合には、第1スレーブラッチ回路15にデータを保持させておくため、第1スレーブパスの故障診断を行う場合のようにシフトレジスタ回路23は動作されない。
図5(b)は、図5(a)中の破線領域内のSFF1に関して、第2スレーブパスの故障診断時における主なデータの流れの一例を示している。具体的には、太線でデータの流れを示している。第2スレーブパスの故障診断時においては、スキャンモードSMは「1」に設定される。そのため、セレクタ11はスキャンインデータSIを出力し、当該スキャンインデータSIがマスターラッチ回路12に供給される。そして、マスターラッチ回路12は、クロック信号CKに応じて、スレーブラッチ回路15、16に対して、スキャンインデータSIに対応するデータを出力する。
第2スレーブパスの故障診断時では、第1出力ホールド信号XS1Hは「0」に設定される。そのため、AND回路13は「0」を出力し、第1スレーブラッチ回路15には制御信号として「0」が供給される。つまり、第1スレーブラッチ回路15へのクロック信号CKの供給が遮断される。この場合には、第1スレーブラッチ回路15は、マスターラッチ回路12からの入力に関わらずに、所定の出力を保持する。具体的には、第1スレーブラッチ回路15は、第1スレーブパスの故障診断を行う前に入力された入力データDに対応するデータを保持する。
一方、第2スレーブパスの故障診断時では、第2出力ホールド信号XS2Hは「1」に設定される。そのため、AND回路14はクロック信号CKをそのまま出力し、当該クロック信号CKが第2スレーブラッチ回路16に供給される。この場合、第2スレーブラッチ回路16は、クロック信号CKに応じて、マスターラッチ回路12より入力されたデータに応じたデータを出力する。
更に、第2スレーブパスの故障診断時では、選択信号SSELは「1」に設定される。そのため、セレクタ17は、第2スレーブラッチ回路16から出力されたデータに応じたデータを、つまりスキャンインデータSIに応じたデータを、スキャンアウトデータSOとして出力する。
このような各信号によってSFF1内の各回路を設定することで、第1スレーブラッチ回路15にデータを保持させた状態で、第2スレーブラッチ回路16より出力させたスキャンデータに基づいて第2スレーブパスの故障診断を適切に行うことが可能となる。
以上説明したように、第2スレーブパスの故障診断時では、SFF1が、故障診断前に入力されたデータを第1スレーブラッチ回路15に保持させつつ、第2スレーブラッチ回路16の出力を用いてスキャンデータを転送する。これにより、第2スレーブパスの故障診断を適切に行うことができると共に、故障診断動作から通常動作への復帰を容易に行うことができる。つまり、第1スレーブラッチ回路15に保持されたデータによって、故障診断前のSFF1の状態に容易に復帰することができる。
(c)組合回路の故障診断
次に、第1実施形態に係る組合回路3の故障診断の一例を示す。組合回路3の故障診断は、第2スレーブパスの故障診断と同様に、故障診断前に入力されたデータを第1スレーブラッチ回路15に保持させた状態で、第2スレーブラッチ回路16の出力を利用して行われる。つまり、組合回路3の故障診断では、前述した第1スレーブパスの故障診断のようにシフトレジスタ回路23にデータを保持させるのではなく、第1スレーブラッチ回路15にデータを保持させる。
組合回路3の故障診断は、好適には、第1スレーブパスの故障診断後に行われる。これは、組合回路3の故障診断では第1スレーブラッチ回路15にデータを保持させておくため、第1スレーブラッチ回路15が正常であることが判定された後に、組合回路3を故障診断するのが望ましいからである。また、好適には、組合回路3の故障診断は、第2スレーブパスの故障診断後に行われる。これは、組合回路3の故障診断では第2スレーブラッチ回路16の出力が利用されるため、第2スレーブラッチ回路16が正常であることが判定された後に、組合回路3を故障診断するのが望ましいからである。
上記したように、第2スレーブパスの故障診断は、故障診断前に入力されたデータを第1スレーブラッチ回路15に保持させた状態で行われる。そのため、第2スレーブパスの故障診断の後に組合回路3の故障診断を行うことで、第1スレーブラッチ回路15にデータが適切に保持された状態で、組合回路3の故障診断を開始することができる。
図6は、第1実施形態に係る組合回路3の故障診断動作の一例を示す。図6(a)は、SFF1及び故障診断回路2に関して、組合回路3の故障診断時におけるデータの流れの一例を示している。
組合回路3の故障診断では、故障診断回路2内の論理BIST回路21が、組合回路3を適切に試験することが可能なスキャンデータを生成する。具体的には、論理BIST回路21は、各組合回路3で行われる演算の内容を考慮したスキャンデータを生成する。例えば、論理BIST回路21は、乱数パターンのスキャンデータを生成する。論理BIST回路21が生成したスキャンデータは、セレクタ24に供給される。そして、セレクタ24はスキャンデータを選択することで、当該スキャンデータをスキャンインデータSIとして最前段のSFF1に供給する。
組合回路3の故障診断を実行する場合、故障診断回路2は、まず、スキャンモードSMを「1」に設定する。これにより、各SFF1は、上記したようなスキャンデータを、図6(a)中の破線矢印C1で示すように転送していく。つまり、各SFF1は、前段のSFF1からスキャンインデータSIが供給され、当該スキャンインデータSIに対応するスキャンアウトデータSOを、組合回路3を介さずに後段のSFF1へ供給する。この場合、各SFF1は、内部の第2スレーブラッチ回路16の出力を用いて、スキャンデータを転送していく。また、各SFF1は、故障診断前に入力された入力データDに対応するデータを、内部の第1スレーブラッチ回路15に保持させておく。
このようにスキャンデータが転送されていくことで、各SFF1は、後段の組合回路3を故障診断することが可能なスキャンデータを保持した状態となる、つまり後段の組合回路3を故障診断することが可能なスキャンデータを出力可能な状態となる。具体的には、スキャンデータが概ね最後段のSFF1まで転送された際に、各SFF1がこのような状態となる。この際に、故障診断回路2は、スキャンモードSMを「1」から「0」に切り替える。詳しくは、故障診断回路2は、クロック信号CKの1回分に相当する時間だけ、スキャンモードSMを「0」に設定する。これにより、図6(a)中の矢印C2で示すように、各SFF1には前段の組合回路3がスキャンデータを処理した結果に対応するデータが供給され、各SFF1は当該データを出力することとなる。
この後、故障診断回路2は、スキャンモードSMを「0」から「1」に切り替える。これにより、各SFF1は、図6(a)中の破線矢印C1で示すように、組合回路3がスキャンデータを処理した結果に対応するデータを転送していく。つまり、組合回路3がスキャンデータを処理した結果に対応するデータが、組合回路3を介さずに、前段のSFF1から後段のSFF1へと次々に転送されていく。そして、最後段のSFF1は、図6(a)中の矢印C3で示すように、組合回路3がスキャンデータを処理した結果に対応するデータをスキャンアウトデータSOとして、期待値比較回路22に供給する。期待値比較回路22は、論理BIST回路21が生成したスキャンデータに応じた期待値と、最後段のSFF1から出力されたスキャンアウトデータSOとを比較することで、組合回路3に対する故障診断を行う。
なお、組合回路3の故障診断を行う場合には、第1スレーブラッチ回路15にデータを保持させておくため、第1スレーブパスの故障診断を行う場合のようにシフトレジスタ回路23は動作されない。
図6(b)は、図6(a)中の破線領域内のSFF1に関して、組合回路3の故障診断時における主なデータの流れの一例を示している。ここでは、スキャンモードSMが「1」に設定されている場合の一例を示す。この場合、セレクタ11はスキャンインデータSIを出力し、当該スキャンインデータSIがマスターラッチ回路12に供給される。そして、マスターラッチ回路12は、クロック信号CKに応じて、スレーブラッチ回路15、16に対して、スキャンインデータSIに対応するデータを出力する。
組合回路3の故障診断時では、第1出力ホールド信号XS1Hは「0」に設定される。そのため、AND回路13は「0」を出力し、第1スレーブラッチ回路15には制御信号として「0」が供給される。つまり、第1スレーブラッチ回路15へのクロック信号CKの供給が遮断される。この場合には、第1スレーブラッチ回路15は、マスターラッチ回路12からの入力に関わらずに、所定の出力を保持する。具体的には、第1スレーブラッチ回路15は、第1スレーブパスの故障診断を行う前に入力された入力データDに対応するデータを保持する。
一方、組合回路3の故障診断時では、第2出力ホールド信号XS2Hは「1」に設定される。そのため、AND回路14はクロック信号CKをそのまま出力し、当該クロック信号CKが第2スレーブラッチ回路16に供給される。この場合、第2スレーブラッチ回路16は、クロック信号CKに応じて、マスターラッチ回路12より入力されたデータに応じたデータを出力する。
更に、組合回路3の故障診断時では、選択信号SSELは「1」に設定される。そのため、セレクタ17は、第2スレーブラッチ回路16から出力されたデータに応じたデータを、つまりスキャンインデータSIに応じたデータを、スキャンアウトデータSOとして出力する。
このような各信号によってSFF1内の各回路を設定することで、第1スレーブラッチ回路15にデータを保持させた状態で、第2スレーブラッチ回路16より出力させたスキャンデータに基づいて、組合回路3の故障診断を適切に行うことが可能となる。
以上説明したように、組合回路3の故障診断時において、SFF1は、故障診断前に入力されたデータを第1スレーブラッチ回路15に保持させつつ、第2スレーブラッチ回路16の出力を用いてスキャンデータを転送する。これにより、組合回路3の故障診断を適切に行うことができると共に、故障診断動作から通常動作への復帰を容易に行うことができる。つまり、第1スレーブラッチ回路15に保持されたデータによって、故障診断前のSFF1の状態に容易に復帰することができる。
(故障診断フロー)
次に、第1実施形態に係る故障診断フローについて説明する。図7は、第1実施形態に係る故障診断フローの一例を示すフローチャートである。このフローは、基本的には、SFF1の通常動作時に開始される。また、このフローは、故障診断回路2によって実行される。
まず、ステップS101では、故障診断回路2が、SFF1の故障診断を実行可能な状態であるか否かを判定する。例えば、故障診断回路2は、SFF1が組み込まれた回路などが現在行っている処理の内容に応じて、当該判定を行う。故障診断を実行可能な状態である場合(ステップS101;Yes)、処理はステップS102に進む。故障診断を実行可能な状態ではない場合(ステップS101;No)、処理はステップS101に戻る。この場合には、通常動作が継続される。
ステップS102では、故障診断回路2が、第1スレーブパスの故障診断を行う。具体的には、まず、故障診断回路2内の論理BIST回路21が、第1スレーブパスを適切に試験することが可能なスキャンデータを生成し、故障診断回路2内のセレクタ24が当該スキャンデータをSFF1に供給する。この場合、故障診断回路2は、スキャンモードSMを「1」に設定し、第1出力ホールド信号XS1Hを「1」に設定し、第2出力ホールド信号XS2Hを「0」に設定し、選択信号SSELを「0」に設定する。これにより、SFF1内の第1スレーブラッチ回路15から出力されたスキャンデータが転送されていくこととなる。そして、故障診断回路2内の期待値比較回路22に、最後段のSFF1からスキャンアウトデータSOが供給される。期待値比較回路22は、当該スキャンアウトデータSOと、論理BIST回路21が生成したスキャンデータに応じた期待値とを比較することで、第1スレーブパスに対する故障診断を行う。更に、このように第1スレーブパスの故障診断を行う場合に、故障診断回路2内のシフトレジスタ回路23が、最後段のSFF1から供給された出力データQを、スキャンデータのパターン数分遅延させてセレクタ24へ出力する。以上の処理が終了すると、処理はステップS103に進む。
ステップS103では、故障診断回路2が、ステップS102での診断結果に基づいて、第1スレーブパスが故障しているか否かを判定する。第1スレーブパスが故障している場合(ステップS103;Yes)、処理はステップS108に進む。この場合、故障内容に応じた対処が行われ(ステップS108)、処理は終了する。これに対して、第1スレーブパスが故障していない場合(ステップS103;No)、処理はステップS104に進む。
ステップS104では、故障診断回路2が、第2スレーブパスの故障診断を行う。具体的には、まず、故障診断回路2内の論理BIST回路21が、第2スレーブパスを適切に試験することが可能なスキャンデータを生成し、故障診断回路2内のセレクタ24が当該スキャンデータをSFF1に供給する。この場合、故障診断回路2は、スキャンモードSMを「1」に設定し、第1出力ホールド信号XS1Hを「0」に設定し、第2出力ホールド信号XS2Hを「1」に設定し、選択信号SSELを「1」に設定する。これにより、故障診断前に入力されたデータがSFF1内の第1スレーブラッチ回路15に保持されつつ、SFF1内の第2スレーブラッチ回路16から出力されたスキャンデータが転送されていくこととなる。そして、故障診断回路2内の期待値比較回路22に、最後段のSFF1からスキャンアウトデータSOが供給される。期待値比較回路22は、当該スキャンアウトデータSOと、論理BIST回路21が生成したスキャンデータに応じた期待値とを比較することで、第2スレーブパスに対する故障診断を行う。以上の処理が終了すると、処理はステップS105に進む。
ステップS105では、故障診断回路2が、ステップS104での診断結果に基づいて、第2スレーブパスが故障しているか否かを判定する。第2スレーブパスが故障している場合(ステップS105;Yes)、処理はステップS108に進む。この場合、故障内容に応じた対処が行われ(ステップS108)、処理は終了する。これに対して、第2スレーブパスが故障していない場合(ステップS105;No)、処理はステップS106に進む。
ステップS106では、故障診断回路2が、組合回路3の故障診断を行う。具体的には、まず、故障診断回路2内の論理BIST回路21が、組合回路3を適切に試験することが可能なスキャンデータを生成し、故障診断回路2内のセレクタ24が当該スキャンデータをSFF1に供給する。この場合、故障診断回路2は、スキャンモードSMを「1」に設定し、第1出力ホールド信号XS1Hを「0」に設定し、第2出力ホールド信号XS2Hを「1」に設定し、選択信号SSELを「1」に設定する。これにより、故障診断前に入力されたデータがSFF1内の第1スレーブラッチ回路15に保持されつつ、SFF1内の第2スレーブラッチ回路16から出力されたスキャンデータが転送されていくこととなる。
このようにスキャンデータが転送されていくことで、各SFF1は、後段の組合回路3を故障診断することが可能なスキャンデータを保持した状態となる。この際に、故障診断回路2は、クロック信号CKの1回分に相当する時間だけ、スキャンモードSMを「1」から「0」に切り替える。これにより、各SFF1には前段の組合回路3がスキャンデータを処理した結果に対応するデータが供給され、各SFF1は当該データを出力することとなる。この後、故障診断回路2は、スキャンモードSMを「0」から「1」に切り替える。これにより、各SFF1は、組合回路3がスキャンデータを処理した結果に対応するデータを、後段のSFF1へ転送していく。そして、組合回路3がスキャンデータを処理した結果に対応するデータが、最後段のSFF1から故障診断回路2内の期待値比較回路22へ、スキャンアウトデータSOとして供給される。期待値比較回路22は、当該スキャンアウトデータSOと、論理BIST回路21が生成したスキャンデータに応じた期待値とを比較することで、組合回路3に対する故障診断を行う。以上の処理が終了すると、処理はステップS107に進む。
ステップS107では、故障診断回路2が、ステップS106での診断結果に基づいて、組合回路3が故障しているか否かを判定する。組合回路3が故障している場合(ステップS107;Yes)、処理はステップS108に進む。この場合、故障内容に応じた対処が行われ(ステップS108)、処理は終了する。これに対して、組合回路3が故障していない場合(ステップS107;No)、処理は終了する。この場合には、SFF1の通常動作が再開される。
以上説明したように、第1実施形態に係るSFF1は、マスターラッチ回路12と、マスターラッチ回路12から出力されたデータが供給される2つのスレーブラッチ回路15、16と、を備える。また、SFF1は、クロック信号CKに依らずにスレーブラッチ回路15、16をホールド状態にすることが可能なAND回路13、14と、スレーブラッチ回路15、16のいずれかの出力を選択するセレクタ17と、を備える。このようなSFF1は、スキャンデータを用いた故障診断の実行時において、故障診断前に入力されたデータを第1スレーブラッチ回路15に保持させつつ、第2スレーブラッチ回路16の出力を用いてスキャンデータを転送する。つまり、SFF1は、故障診断前に入力されたデータを第1スレーブラッチ回路15に退避させた状態で、第2スレーブラッチ回路16の出力を利用して故障診断を行う。これにより、SFF1や組合回路3などの故障診断を適切に行うことができると共に、故障診断動作から通常動作への動作遷移を容易に行うことができる。つまり、第1スレーブラッチ回路15に保持されたデータを出力させるだけで、故障診断動作から通常動作を速やかに再開することができる。
また、第1実施形態に係る故障診断回路2は、第1スレーブパスの故障診断時において、最後段のSFF1から供給された出力データQを保持し、当該出力データQをスキャンデータのパターン数分遅延させて出力するシフトレジスタ回路23を備える。このようなシフトレジスタ回路23によれば、第1スレーブパスの故障診断後において、故障診断直前の状態にSFF1を適切に戻すことができる。これにより、第2スレーブパスや組合回路3の故障診断時において故障診断前のデータを保持させておく第1スレーブラッチ回路15に対して、故障診断を適切に行うことが可能となる。具体的には、故障診断前の入力データDに対応するデータが失われることなく故障診断を行うことができる。
なお、上記した第1実施形態では、第2スレーブパスの故障診断を第1スレーブパスの故障診断の後に行う例を示したが、この代わりに、第2スレーブパスの故障診断を第1スレーブパスの故障診断の前に行っても良い。また、上記では、組合回路3の故障診断を第1スレーブパス及び第2スレーブパスの故障診断の後に行う例を示したが、この代わりに、組合回路3の故障診断を、第1スレーブパスの故障診断及び/又は第2スレーブパスの故障診断の前に行っても良い。
なお、上記した第1実施形態では、第2スレーブラッチ回路16の出力を利用して故障診断を行う例を示したが、この代わりに、第1スレーブラッチ回路15の出力を利用してスキャンシフトパスの故障診断を行っても良い。この場合には、故障診断前に入力されたデータを第2スレーブラッチ回路16に保持させた状態で、故障診断を行うこととなる。
[第2実施形態]
次に、第2実施形態について説明を行う。なお、以下の説明では、第1実施形態で示した構成要素や信号などと同一のものについては、同一の符号を付し、その説明を省略する。また、特に説明しない構成要素や信号などについては、第1実施形態と同様であるものとする。
(適用例)
図8は、第2実施形態に係るSFF1a及び故障診断回路2aの適用例を示すブロック図である。
図8に示すように、SFF1aは、第2スレーブラッチ回路16のデータを復帰させるためのモードRTN(以下、「スレーブデータ復帰モード」と呼ぶ。)を設定するための信号が故障診断回路2aから供給される点で、前述したSFF1と異なる。このスレーブデータ復帰モードRTNは、故障診断動作の終了後において、第2スレーブラッチ回路16を故障診断前の通常状態へ復帰させるために設定される。詳細は後述するが、故障診断前の通常状態への復帰動作は、第1スレーブラッチ回路15に保持されたデータを第2スレーブラッチ回路16に書き込むことで行われる。
また、SFF1aは、スレーブラッチ回路15、16のそれぞれからの出力のレベルが同一であるか否かを示す信号F(以下、「出力レベル判定信号F」と呼ぶ。)を出力する点で、前述したSFF1と異なる。SFF1aから出力された出力レベル判定信号Fは、故障診断回路2aに供給される。
故障診断回路2aは、シフトレジスタ回路23及びセレクタ24を具備せずに、スレーブラッチ故障診断回路25を具備する点で、前述した故障診断回路2と異なる。また、故障診断回路2aは、上記したスレーブデータ復帰モードRTNを設定するための信号をSFF1aに供給する点で、故障診断回路2と異なる。なお、故障診断回路2aはセレクタ24を具備しないため、論理BIST回路21から出力されたスキャンデータは、スキャンインデータSIとして最前段のSFF1aに直接供給される。
スレーブラッチ故障診断回路25は、各SFF1aから出力レベル判定信号Fが供給され、当該出力レベル判定信号Fに基づいて、各SFF1a内のスレーブラッチ回路15、16に対する故障診断を行う。スレーブラッチ故障診断回路25は、スレーブラッチ回路15、16の出力が一致していないことを出力レベル判定信号Fが示している場合、スレーブラッチ回路15、16の少なくともいずれかが故障していると判定する。このようなスレーブラッチ回路15、16の故障診断は、SFF1aの通常動作時において、スレーブラッチ故障診断回路25が出力レベル判定信号Fを監視することで行われる。なお、スレーブラッチ故障診断回路25は、第2記憶回路故障診断回路の一例に相当する。
(SFFの構成)
図9は、第2実施形態に係るSFF1aの構成の一例を示すブロック図である。図9に示すように、SFF1aはセレクタ18a、18b及びXOR回路19を具備する点で、前述したSFF1と異なる。また、上記したように、SFF1aは、故障診断回路2aから、スレーブデータ復帰モードRTNを設定するための信号が供給される。
セレクタ18aは、スキャンインデータSIが供給されると共に、最終段のセレクタ17から出力されたデータが供給される。具体的には、セレクタ18aは、最終段のセレクタ17から、入力データDに対応する出力データQが供給される。更に、セレクタ18aは、スレーブデータ復帰モードRTNを設定するための信号が供給される。セレクタ18aは、スレーブデータ復帰モードRTNに応じてスキャンインデータSI及び出力データQのいずれかを選択し、選択したデータを出力する。具体的には、セレクタ18aは、スレーブデータ復帰モードRTNが「0」である場合にはスキャンインデータSIを出力し、スレーブデータ復帰モードRTNが「1」である場合には出力データQを出力する。基本的には、通常動作時及び故障診断時にはスレーブデータ復帰モードRTNは「0」に設定され、故障診断の終了直後にスレーブデータ復帰モードRTNが「1」に設定される。セレクタ18aから出力されたデータは、セレクタ18bに供給される。
セレクタ18bは、セレクタ18aから出力されたスキャンインデータSI及び出力データQのいずれか一方が供給されると共に、入力データDが供給される。また、セレクタ18bは、スキャンモードSMを設定するための信号が供給される。セレクタ18bは、スキャンモードSMに応じて、セレクタ18aから出力されたデータ及び入力データDのいずれかを選択し、選択したデータを出力する。具体的には、セレクタ18bは、スキャンモードSMが「0」である場合には入力データDを出力し、スキャンモードSMが「1」である場合にはセレクタ18aから出力されたデータを出力する。基本的には、通常動作時にはスキャンモードSMは「0」に設定され、故障診断時及び故障診断の終了直後にスキャンモードSMが「1」に設定される。セレクタ18bから出力されたデータは、マスターラッチ回路12に供給される。なお、セレクタ18a、18bは、入力選択回路の一例に相当する。
XOR回路19は、スレーブラッチ回路15、16のそれぞれから出力されたデータが供給される。そして、XOR回路19は、スレーブラッチ回路15、16のそれぞれから出力されたデータが一致するか否かを示す出力レベル判定信号Fを出力する。具体的には、XOR回路19は、スレーブラッチ回路15、16のそれぞれから出力されたデータが一致しない場合には、出力レベル判定信号Fとして「1」を出力する。一方、XOR回路19は、スレーブラッチ回路15、16のそれぞれから出力されたデータが一致する場合には、出力レベル判定信号Fとして「0」を出力する。XOR回路19から出力された出力レベル判定信号Fは、故障診断回路2a内のスレーブラッチ故障診断回路25に供給される。なお、XOR回路19は、出力レベル判定回路の一例に相当する。
(通常動作例)
次に、第2実施形態に係るSFF1a及び故障診断回路2aの通常動作例について説明する。第2実施形態では、SFF1aの通常動作時において、故障診断回路2aがスレーブラッチ回路15、16に対して故障診断を行う。
図10は、第2実施形態に係るSFF1a及び故障診断回路2aの通常動作の一例を示す。
図10(a)は、SFF1a及び故障診断回路2aに関して、通常動作時におけるデータの流れの一例を示している。通常動作時においては、各SFF1aは、図10(a)中の矢印D1で示すように、前段の組合回路3から入力データDが供給され、当該入力データDに対応する出力データQをクロック信号CKに応じて後段の組合回路3へ供給する。各組合回路3は、前段のSFF1aから出力データQが供給され、当該出力データQに対して所定の演算を行い、その結果を入力データDとして後段のSFF1aに供給する。
また、各SFF1aは、通常動作時において、図10(a)中の矢印D2で示すように、出力レベル判定信号Fを故障診断回路2a内のスレーブラッチ故障診断回路25へ供給する。そして、スレーブラッチ故障診断回路25は、出力レベル判定信号Fに基づいて、各SFF1a内のスレーブラッチ回路15、16に対する故障診断を行う。具体的には、スレーブラッチ故障診断回路25は、出力レベル判定信号Fが「0」である場合には、スレーブラッチ回路15、16が正常であると判定する。これに対して、スレーブラッチ故障診断回路25は、出力レベル判定信号Fが「1」である場合には、スレーブラッチ回路15、16の少なくともいずれかが故障していると判定する。
図10(b)は、図10(a)中の破線領域内のSFF1aに関して、通常動作時における主なデータの流れの一例を示している。具体的には、太線でデータの流れを示している。通常動作時においては、スレーブデータ復帰モードRTNが「0」に設定されると共に、スキャンモードSMが「0」に設定される。そのため、セレクタ18bは入力データDを出力し、当該入力データDがマスターラッチ回路12に供給される。そして、マスターラッチ回路12は、クロック信号CKに応じて、スレーブラッチ回路15、16に対して、入力データDに対応するデータを出力する。
通常動作時では、出力ホールド信号XS1H、XS2Hは両方とも「1」に設定される。そのため、AND回路13、14は両方ともクロック信号CKをそのまま出力し、当該クロック信号CKがスレーブラッチ回路15、16に供給される。この場合、スレーブラッチ回路15、16は両方とも、クロック信号CKに応じて、マスターラッチ回路12より入力されたデータに応じたデータを出力する。また、通常動作時では、選択信号SSELは「0」に設定される。そのため、セレクタ17は、第1スレーブラッチ回路15から出力されたデータに応じたデータを、つまり入力データDに応じたデータを、出力データQとして出力する。
更に、通常動作時では、XOR回路19は、スレーブラッチ回路15、16のそれぞれから出力されたデータが一致するか否かを示す出力レベル判定信号Fを出力する。具体的には、XOR回路19は、スレーブラッチ回路15、16のそれぞれから出力されたデータが一致しない場合には、出力レベル判定信号Fとして「1」を出力する。一方、XOR回路19は、スレーブラッチ回路15、16のそれぞれから出力されたデータが一致する場合には、出力レベル判定信号Fとして「0」を出力する。
なお、図10では、通常動作時において選択信号SSELを「0」に設定する例を示したが、「0」の代わりに、選択信号SSELを「1」に設定しても良い。つまり、第1スレーブラッチ回路15から出力されたデータに応じたデータの代わりに、第2スレーブラッチ回路16から出力されたデータに応じたデータを、出力データQとして用いても良い。
以上説明したように、第2実施形態では、SFF1a内のXOR回路19が、スレーブラッチ回路15、16のそれぞれから出力されたデータが一致するか否かを示す出力レベル判定信号Fを出力する。そして、故障診断回路2a内のスレーブラッチ故障診断回路25が、SFF1aの通常動作時において、当該出力レベル判定信号Fに基づいて、スレーブラッチ回路15、16に対する故障診断を行う。これにより、スキャンシフトパスや組合回路3の故障診断時において故障診断前のデータを保持する役目を有するスレーブラッチ回路15、16に対して、故障診断を適切に行うことが可能となる。具体的には、スキャンシフトパスや組合回路3の故障診断を行う前に、スレーブラッチ回路15、16の故障診断を予め行っておくことができる。即ち、スレーブラッチ回路15、16が正常であることが確認された状態で、スキャンシフトパスや組合回路3の故障診断を行うことが可能となる。
(故障診断動作例)
次に、第2実施形態に係る故障診断動作例について説明する。
(a)スキャンシフトパスの故障診断
まず、第2実施形態における、SFF1aによってスキャンデータがシフトされるパス(スキャンシフトパス)に対する故障診断の一例を示す。第2実施形態では、スキャンシフトパスの故障診断は、故障診断前に入力されたデータを第1スレーブラッチ回路15に保持させた状態で、第2スレーブラッチ回路16の出力を利用して行われる。また、第2実施形態では、スキャンシフトパスの故障診断の実行時において、出力レベル判定信号Fに基づいて、XOR回路19に対する故障診断も同時に行われる。
なお、このようなスキャンシフトパスの故障診断は、上記した通常動作が行われている際に開始される。具体的には、スキャンシフトパスの故障診断は、通常動作を中断して実行される。そのため、スキャンシフトパスの故障診断は、出力レベル判定信号Fに基づいたスレーブラッチ回路15、16に対する故障診断が行われた後で実行されることとなる。つまり、スキャンシフトパスの故障診断は、スレーブラッチ回路15、16が正常であることが確認された状態で行われる。
図11は、第2実施形態に係るスキャンシフトパスの故障診断動作の一例を示す。図11(a)は、SFF1a及び故障診断回路2aに関して、スキャンシフトパスの故障診断時におけるデータの流れの一例を示している。
スキャンシフトパスの故障診断では、故障診断回路2a内の論理BIST回路21が、スキャンシフトパスを適切に試験することが可能なスキャンデータを生成する。例えば、論理BIST回路21は、「010」といった3パターンのスキャンデータを生成する。論理BIST回路21が生成したスキャンデータは、スキャンインデータSIとして最前段のSFF1aに供給される。
この後、各SFF1aは、図11(a)中の矢印E1で示すように、スキャンデータを転送していく。つまり、各SFF1aは、前段のSFF1aからスキャンインデータSIが供給され、当該スキャンインデータSIに対応するスキャンアウトデータSOを、組合回路3を介さずに後段のSFF1aへ供給する。この場合、各SFF1aは、内部の第2スレーブラッチ回路16の出力を用いて、スキャンデータを転送していく。また、各SFF1aは、故障診断前に入力された入力データDに対応するデータを、内部の第1スレーブラッチ回路15に保持させておく。
そして、このようにスキャンデータが転送されていった場合において、最後段のSFF1aは、図11(a)中の矢印E2で示すように、スキャンアウトデータSOを期待値比較回路22に供給する。期待値比較回路22は、論理BIST回路21が生成したスキャンデータに応じた期待値と、最後段のSFF1aから出力されたスキャンアウトデータSOとを比較することで、スキャンシフトパスに対する故障診断を行う。
また、上記のようなスキャンシフトパスの故障診断時において、各SFF1aは、図11(a)中の矢印E3で示すように、出力レベル判定信号Fを故障診断回路2a内のスレーブラッチ故障診断回路25へ供給する。そして、スレーブラッチ故障診断回路25は、出力レベル判定信号Fに基づいて、XOR回路19に対する故障診断を行う。
ここで、XOR回路19に対する故障診断の基本原理について説明する。スキャンシフトパスの故障診断時では、第1スレーブラッチ回路15はデータを保持しているため一定値を出力し、これに対して、第2スレーブラッチ回路16はスキャンインデータSIに応じた値を出力する。つまり、第1スレーブラッチ回路15の出力は一定値であるが、第2スレーブラッチ回路16の出力は変化する傾向にある。スキャンデータは例えば「010」といったパターンが用いられるため、つまり「0」及び「1」の一方の値のみが用いられるわけではないので、第2スレーブラッチ回路16の出力は変化する傾向にある。
よって、基本的には、スキャンシフトパスの故障診断中においては、スレーブラッチ回路15、16のそれぞれの出力は一致と不一致との間で変化するものと言える。したがって、XOR回路19が正常である場合には、XOR回路19の出力レベル判定信号Fの値が変化すると言える。逆に、出力レベル判定信号Fの値が変化しない場合には、XOR回路19が故障していると言える。
以上のことを考慮して、第2実施形態では、スキャンシフトパスの故障診断時において、XOR回路19から出力された出力レベル判定信号Fに基づいて、XOR回路19の故障診断を行う。具体的には、スレーブラッチ故障診断回路25は、出力レベル判定信号Fの値が変化している場合、つまりXOR回路19の出力が「0」と「1」との間で変化している場合には、XOR回路19が正常であると判定する。これに対して、スレーブラッチ故障診断回路25は、出力レベル判定信号Fの値が変化していない場合、つまりXOR回路19が「0」又は「1」を出力し続けている場合には、XOR回路19が故障していると判定する。
図11(b)は、図11(a)中の破線領域内のSFF1aに関して、スキャンシフトパスの故障診断時における主なデータの流れの一例を示している。具体的には、太線でデータの流れを示している。スキャンシフトパスの故障診断時においては、スレーブデータ復帰モードRTNが「0」に設定されると共に、スキャンモードSMが「1」に設定される。そのため、セレクタ18aはスキャンインデータSIを出力すると共に、セレクタ18bはスキャンインデータSIを出力し、当該スキャンインデータSIがマスターラッチ回路12に供給される。そして、マスターラッチ回路12は、クロック信号CKに応じて、スレーブラッチ回路15、16に対して、スキャンインデータSIに対応するデータを出力する。
スキャンシフトパスの故障診断時では、第1出力ホールド信号XS1Hは「0」に設定される。そのため、AND回路13は「0」を出力し、第1スレーブラッチ回路15には制御信号として「0」が供給される。つまり、第1スレーブラッチ回路15へのクロック信号CKの供給が遮断される。この場合には、第1スレーブラッチ回路15は、マスターラッチ回路12からの入力に関わらずに、所定の出力を保持する。具体的には、第1スレーブラッチ回路15は、スキャンシフトパス故障診断を行う前に入力された入力データDに対応するデータを保持する。
一方、スキャンシフトパスの故障診断時では、第2出力ホールド信号XS2Hは「1」に設定される。そのため、AND回路14はクロック信号CKをそのまま出力し、当該クロック信号CKが第2スレーブラッチ回路16に供給される。この場合、第2スレーブラッチ回路16は、クロック信号CKに応じて、マスターラッチ回路12より入力されたデータに応じたデータを出力する。
また、スキャンシフトパスの故障診断時では、選択信号SSELは「1」に設定される。そのため、セレクタ17は、第2スレーブラッチ回路16から出力されたデータに応じたデータを、つまりスキャンインデータSIに応じたデータを、スキャンアウトデータSOとして出力する。
更に、スキャンシフトパスの故障診断時では、XOR回路19は、スレーブラッチ回路15、16のそれぞれから出力されたデータが一致するか否かを示す出力レベル判定信号Fを出力する。具体的には、XOR回路19は、スレーブラッチ回路15、16のそれぞれから出力されたデータが一致しない場合には、出力レベル判定信号Fとして「1」を出力する。一方、XOR回路19は、スレーブラッチ回路15、16のそれぞれから出力されたデータが一致する場合には、出力レベル判定信号Fとして「0」を出力する。
このような各信号によってSFF1aを設定することで、第1スレーブラッチ回路15にデータを保持させた状態で、第2スレーブラッチ回路16より出力させたスキャンデータに基づいて、スキャンシフトパスの故障診断を適切に行うことが可能となる。
以上説明したように、スキャンシフトパスの故障診断時において、SFF1aは、故障診断前に入力されたデータを第1スレーブラッチ回路15に保持させつつ、第2スレーブラッチ回路16の出力を用いてスキャンデータを転送する。これにより、スキャンシフトパスの故障診断を適切に行うことができると共に、故障診断動作から通常動作への復帰を容易に行うことができる。つまり、第1スレーブラッチ回路15に保持されたデータによって、故障診断前のSFF1aの状態に容易に復帰することができる。
また、第2実施形態では、スキャンシフトパスの故障診断時において、故障診断回路2aのスレーブラッチ故障診断回路25が、出力レベル判定信号Fに基づいてXOR回路19の故障診断を行う。これにより、スキャンシフトパスの故障診断時において、XOR回路19の故障診断を同時に適切に行うことができる。即ち、スレーブラッチ回路15、16の故障診断を行う役目を有するXOR回路19に対して、故障診断を適切に行うことができる。
なお、上記では、第2スレーブパスによってデータを転送することでスキャンシフトパスの故障診断を行う例を示したが、この代わりに、第1スレーブパスによってデータを転送することでスキャンシフトパスの故障診断を行っても良い。この場合には、故障診断前に入力されたデータを第2スレーブラッチ回路16に保持させた状態で、故障診断を行うこととなる。
(b)組合回路の故障診断
次に、第2実施形態に係る組合回路3の故障診断の一例を示す。組合回路3の故障診断は、故障診断前に入力されたデータを第1スレーブラッチ回路15に保持させた状態で、第2スレーブラッチ回路16の出力を利用して行われる。
組合回路3の故障診断は、好適には、スキャンシフトパスの故障診断後に行われる。これは、組合回路3の故障診断ではスキャンシフトパスが利用されるため、スキャンシフトパスが正常であることが判定された後に、組合回路3を故障診断するのが望ましいからである。また、組合回路3の故障診断は、上記した通常動作後に行われる。そのため、組合回路3の故障診断は、スレーブラッチ回路15、16が正常であることが確認された状態で行われることとなる。
なお、組合回路3の故障診断時においては、基本的には、故障診断回路2a内のスレーブラッチ故障診断回路25は動作しない。これは、組合回路3の故障診断前において、スレーブラッチ回路15、16の故障診断及びXOR回路19の故障診断が既に行われているからである。
図12は、第2実施形態に係る組合回路3の故障診断動作の一例を示す。図12(a)は、SFF1a及び故障診断回路2aに関して、組合回路3の故障診断時におけるデータの流れの一例を示している。
組合回路3の故障診断では、故障診断回路2a内の論理BIST回路21が、組合回路3を適切に試験することが可能なスキャンデータを生成する。具体的には、論理BIST回路21は、各組合回路3で行われる演算の内容を考慮したスキャンデータを生成する。例えば、論理BIST回路21は、乱数パターンのスキャンデータを生成する。論理BIST回路21が生成したスキャンデータは、スキャンインデータSIとして最前段のSFF1aに供給される。
組合回路3の故障診断を実行する場合、故障診断回路2aは、まず、スキャンモードSMを「1」に設定する。これにより、各SFF1aは、上記したようなスキャンデータを、図12(a)中の破線矢印F1で示すように転送していく。つまり、各SFF1aは、前段のSFF1aからスキャンインデータSIが供給され、当該スキャンインデータSIに対応するスキャンアウトデータSOを、組合回路3を介さずに後段のSFF1aへ供給する。この場合、各SFF1aは、内部の第2スレーブラッチ回路16の出力を用いて、スキャンデータを転送していく。また、各SFF1aは、故障診断前に入力された入力データDに対応するデータを、内部の第1スレーブラッチ回路15に保持させておく。
このようにスキャンデータが転送されていくことで、各SFF1aは、後段の組合回路3を故障診断することが可能なスキャンデータを保持した状態となる、つまり後段の組合回路3を故障診断することが可能なスキャンデータを出力可能な状態となる。具体的には、スキャンデータが概ね最後段のSFF1aまで転送された際に、各SFF1aがこのような状態となる。この際に、故障診断回路2aは、スキャンモードSMを「1」から「0」に切り替える。詳しくは、故障診断回路2aは、クロック信号CKの1回分に相当する時間だけ、スキャンモードSMを「0」に設定する。これにより、図12(a)中の矢印F2で示すように、各SFF1aには前段の組合回路3がスキャンデータを処理した結果に対応するデータが供給され、各SFF1aは当該データを出力することとなる。
この後、故障診断回路2aは、スキャンモードSMを「0」から「1」に切り替える。これにより、各SFF1aは、図12(a)中の破線矢印F1で示すように、組合回路3がスキャンデータを処理した結果に対応するデータを転送していく。つまり、組合回路3がスキャンデータを処理した結果に対応するデータが、組合回路3を介さずに、前段のSFF1aから後段のSFF1aへと次々に転送されていく。そして、最後段のSFF1aは、図12(a)中の矢印F3で示すように、組合回路3がスキャンデータを処理した結果に対応するデータをスキャンアウトデータSOとして、期待値比較回路22に供給する。期待値比較回路22は、論理BIST回路21が生成したスキャンデータに応じた期待値と、最後段のSFF1aから出力されたスキャンアウトデータSOとを比較することで、組合回路3に対する故障診断を行う。
図12(b)は、図12(a)中の破線領域内のSFF1aに関して、組合回路3の故障診断時における主なデータの流れの一例を示している。具体的には、太線でデータの流れを示している。組合回路3の故障診断時においては、スレーブデータ復帰モードRTNが「0」に設定されると共に、スキャンモードSMが「1」に設定される。そのため、セレクタ18aはスキャンインデータSIを出力すると共に、セレクタ18bはスキャンインデータSIを出力し、当該スキャンインデータSIがマスターラッチ回路12に供給される。そして、マスターラッチ回路12は、クロック信号CKに応じて、スレーブラッチ回路15、16に対して、スキャンインデータSIに対応するデータを出力する。
組合回路3の故障診断時では、第1出力ホールド信号XS1Hは「0」に設定される。そのため、AND回路13は「0」を出力し、第1スレーブラッチ回路15には制御信号として「0」が供給される。つまり、第1スレーブラッチ回路15へのクロック信号CKの供給が遮断される。この場合には、第1スレーブラッチ回路15は、マスターラッチ回路12からの入力に関わらずに、所定の出力を保持する。具体的には、第1スレーブラッチ回路15は、スキャンシフトパスの故障診断を行う前に入力された入力データDに対応するデータを保持する。
一方、組合回路3の故障診断時では、第2出力ホールド信号XS2Hは「1」に設定される。そのため、AND回路14はクロック信号CKをそのまま出力し、当該クロック信号CKが第2スレーブラッチ回路16に供給される。この場合、第2スレーブラッチ回路16は、クロック信号CKに応じて、マスターラッチ回路12より入力されたデータに応じたデータを出力する。
また、組合回路3の故障診断時では、選択信号SSELは「1」に設定される。そのため、セレクタ17は、第2スレーブラッチ回路16から出力されたデータに応じたデータを、つまりスキャンインデータSIに応じたデータを、スキャンアウトデータSOとして出力する。
このような各信号によってSFF1aを設定することで、第1スレーブラッチ回路15にデータを保持させた状態で、第2スレーブラッチ回路16より出力させたスキャンデータに基づいて、組合回路3の故障診断を適切に行うことが可能となる。
以上説明したように、組合回路3の故障診断時において、SFF1aは、故障診断前に入力されたデータを第1スレーブラッチ回路15に保持させつつ、第2スレーブラッチ回路16の出力を用いてスキャンデータを転送する。これにより、組合回路3の故障診断を適切に行うことができると共に、故障診断動作から通常動作への復帰を容易に行うことができる。つまり、第1スレーブラッチ回路15に保持されたデータによって、故障診断前のSFF1aの状態に容易に復帰することができる。
(通常状態への復帰動作)
次に、第2実施形態における、故障診断前の通常状態への復帰動作例について説明する。第2実施形態では、上記したような故障診断の終了後に、具体的には故障診断後から通常動作の再開までの間に、第2スレーブラッチ回路16を故障診断前の通常状態へ復帰させるための動作が行われる。ここで、「第2スレーブラッチ回路16を故障診断前の通常状態へ復帰させる」とは、故障診断前の入力データDに対応するデータを第2スレーブラッチ回路16に保持させた状態に設定することを意味する。つまり、故障診断の終了直後においては第2スレーブラッチ回路16にスキャンデータに対応するデータが保持された状態となっているため、当該状態から、故障診断前に入力されたデータを第2スレーブラッチ回路16に保持させた状態に設定する。
具体的には、SFF1aは、故障診断動作の終了直後において、第1スレーブラッチ回路15に保持されたデータを第2スレーブラッチ回路16に書き込むことで、第2スレーブラッチ回路16を故障診断前の通常状態へ復帰させる。このような復帰を行うのは、故障診断後の通常動作において出力レベル判定信号Fに基づいたスレーブラッチ回路15、16の故障診断が行われるため、通常動作が再開される前に、スレーブラッチ回路15、16の出力を合わせておくことが望ましいからである。
なお、通常状態への復帰動作時においては、基本的には、故障診断回路2aは動作しない(SFF1a内の各回路を制御するための信号を供給する動作は行うものとする)。
図13は、第2実施形態に係る通常状態への復帰動作の一例を示す。図13(a)は、SFF1aに関して、復帰動作時におけるデータの流れの一例を示している。具体的には、各SFF1aは、図13(a)中の矢印G1で示すように出力側のデータを入力側に戻すことによって、第2スレーブラッチ回路16を故障診断前の通常状態へ復帰させる。
図13(b)は、図13(a)中の破線領域内のSFF1aに関して、通常状態への復帰動作時における主なデータの流れの一例を示している。具体的には、太線でデータの流れを示している。
通常状態への復帰動作時においては、第1出力ホールド信号XS1Hは「0」に設定される。そのため、AND回路13は「0」を出力し、第1スレーブラッチ回路15には制御信号として「0」が供給される。この場合には、第1スレーブラッチ回路15は、マスターラッチ回路12からの入力に関わらずに、所定の出力を保持する。具体的には、第1スレーブラッチ回路15は、故障診断を行う前に入力された入力データDに対応するデータを出力する。第1スレーブラッチ回路15から出力されたデータは、セレクタ17に供給される。
また、通常状態への復帰動作時では、選択信号SSELは「0」に設定される。そのため、セレクタ17は、第1スレーブラッチ回路15から出力されたデータに応じたデータを出力する。具体的には、第1スレーブラッチ回路15から出力されたデータは故障診断前の入力データDに対応するデータであるため、セレクタ17は、当該入力データDに対応する出力データQを出力することとなる。セレクタ17から出力された出力データQは、最前段のセレクタ18aに供給される。
また、通常状態への復帰動作時では、スレーブデータ復帰モードRTNが「1」に設定されると共に、スキャンモードSMが「1」に設定される。そのため、セレクタ18aは、上記したようにセレクタ17から出力されたデータを選択して出力すると共に、セレクタ18bは、セレクタ18aから出力されたデータを選択して出力する。セレクタ18bから出力されたデータは、つまり出力データQに対応するデータは、マスターラッチ回路12に供給される。そして、マスターラッチ回路12は、クロック信号CKに応じて、スレーブラッチ回路15、16に対して、出力データQに対応するデータを出力する。
更に、通常状態への復帰動作時では、第2出力ホールド信号XS2Hは「1」に設定される。そのため、AND回路14はクロック信号CKをそのまま出力し、当該クロック信号CKが第2スレーブラッチ回路16に供給される。この場合、第2スレーブラッチ回路16は、クロック信号CKに応じて、マスターラッチ回路12より入力されたデータに応じたデータを出力する、つまり出力データQに対応するデータを出力する。このような第2スレーブラッチ回路16の状態は、故障診断前の入力データDに対応するデータを保持した状態に相当する。つまり、第1スレーブラッチ回路15に保持されたデータが第2スレーブラッチ回路16に書き込まれた状態に相当する。
このような各信号によってSFF1aを設定することで、第1スレーブラッチ回路15に保持されたデータを、第2スレーブラッチ回路16に適切に書き込むことが可能となる。
以上説明したように、SFF1aは、故障診断の終了後において、第2スレーブラッチ回路16を故障診断前の通常状態へ復帰させるための動作を行う、つまり故障診断前に入力されたデータを第2スレーブラッチ回路16に保持させた状態に設定する。これにより、通常動作が再開された際にスレーブラッチ回路15、16の出力を合わせておくことができ、通常動作時における出力レベル判定信号Fに基づいたスレーブラッチ回路15、16の故障診断を、適切に行うことが可能となる。
(故障診断フロー)
次に、第2実施形態に係る故障診断フローについて説明する。図14は、第2実施形態に係る故障診断フローの一例を示すフローチャートである。このフローは、基本的には、SFF1aの通常動作時に開始される。また、このフローは、故障診断回路2aによって実行される。
まず、ステップS201では、故障診断回路2aが、SFF1aの故障診断を実行可能な状態であるか否かを判定する。例えば、故障診断回路2aは、SFF1aが組み込まれた回路などが現在行っている処理の内容に応じて、当該判定を行う。故障診断を実行可能な状態である場合(ステップS201;Yes)、処理はステップS202に進む。故障診断を実行可能な状態ではない場合(ステップS201;No)、処理はステップS201に戻る。この場合には、通常動作が継続される。
ステップS202では、故障診断回路2aが、スキャンシフトパスの故障診断を行う。具体的には、まず、故障診断回路2a内の論理BIST回路21が、スキャンシフトパスを適切に試験することが可能なスキャンデータを生成し、当該スキャンデータをSFF1aに供給する。この場合、故障診断回路2aは、スキャンモードSMを「1」に設定し、第1出力ホールド信号XS1Hを「0」に設定し、第2出力ホールド信号XS2Hを「1」に設定し、選択信号SSELを「1」に設定する。また、故障診断回路2aは、スレーブデータ復帰モードRTNを「0」に設定する。これにより、故障診断前に入力されたデータがSFF1a内の第1スレーブラッチ回路15に保持されつつ、SFF1a内の第2スレーブラッチ回路16から出力されたスキャンデータが転送されていくこととなる。そして、故障診断回路2a内の期待値比較回路22に、最後段のSFF1aからスキャンアウトデータSOが供給される。期待値比較回路22は、当該スキャンアウトデータSOと、論理BIST回路21が生成したスキャンデータに応じた期待値とを比較することで、スキャンシフトパスに対する故障診断を行う。更に、このようにスキャンシフトパスの故障診断を行う場合に、故障診断回路2a内のスレーブラッチ故障診断回路25が、SFF1a内のXOR回路19から出力された出力レベル判定信号Fに基づいて、XOR回路19に対する故障診断を行う。以上の処理が終了すると、処理はステップS203に進む。なお、第2スレーブパスによってデータを転送する代わりに、第1スレーブパスによってデータを転送することで、スキャンシフトパスの故障診断を行っても良い。
ステップS203では、故障診断回路2aが、ステップS202での診断結果に基づいて、スキャンシフトパスが故障しているか否かを判定する。スキャンシフトパスが故障している場合(ステップS203;Yes)、処理はステップS207に進む。この場合、故障内容に応じた対処が行われ(ステップS207)、処理は終了する。これに対して、スキャンシフトパスが故障していない場合(ステップS203;No)、処理はステップS204に進む。
ステップS204では、故障診断回路2aが、組合回路3の故障診断を行う。具体的には、まず、故障診断回路2a内の論理BIST回路21が、組合回路3を適切に試験することが可能なスキャンデータを生成し、当該スキャンデータをSFF1aに供給する。この場合、故障診断回路2aは、スキャンモードSMを「1」に設定し、第1出力ホールド信号XS1Hを「0」に設定し、第2出力ホールド信号XS2Hを「1」に設定し、選択信号SSELを「1」に設定する。また、故障診断回路2aは、スレーブデータ復帰モードRTNを「0」に設定する。これにより、故障診断前に入力されたデータがSFF1a内の第1スレーブラッチ回路15に保持されつつ、SFF1a内の第2スレーブラッチ回路16から出力されたスキャンデータが転送されていくこととなる。
このようにスキャンデータが転送されていくことで、各SFF1aは、後段の組合回路3を故障診断することが可能なスキャンデータを保持した状態となる。この際に、故障診断回路2aは、クロック信号CKの1回分に相当する時間だけ、スキャンモードSMを「1」から「0」に切り替える。これにより、各SFF1aには前段の組合回路3がスキャンデータを処理した結果に対応するデータが供給され、各SFF1aは当該データを出力することとなる。この後、故障診断回路2aは、スキャンモードSMを「0」から「1」に切り替える。これにより、各SFF1aは、組合回路3がスキャンデータを処理した結果に対応するデータを、後段のSFF1aへ転送していく。そして、組合回路3がスキャンデータを処理した結果に対応するデータが、最後段のSFF1aから故障診断回路2a内の期待値比較回路22へ、スキャンアウトデータSOとして供給される。期待値比較回路22は、当該スキャンアウトデータSOと、論理BIST回路21が生成したスキャンデータに応じた期待値とを比較することで、組合回路3に対する故障診断を行う。以上の処理が終了すると、処理はステップS205に進む。
ステップS205では、故障診断回路2aが、ステップS204での診断結果に基づいて、組合回路3が故障しているか否かを判定する。組合回路3が故障している場合(ステップS205;Yes)、処理はステップS207に進む。この場合、故障内容に応じた対処が行われ(ステップS207)、処理は終了する。これに対して、組合回路3が故障していない場合(ステップS205;No)、処理はステップS206に進む。
ステップS206では、故障診断回路2aが、第2スレーブラッチ回路16を故障診断前の通常状態へ復帰させるための動作を行う。この場合、故障診断回路2aは、スキャンモードSMを「1」に設定し、第1出力ホールド信号XS1Hを「0」に設定し、第2出力ホールド信号XS2Hを「1」に設定し、選択信号SSELを「0」に設定する。また、故障診断回路2aは、スレーブデータ復帰モードRTNを「1」に設定する。これにより、故障診断動作の終了後において、SFF1aは、第1スレーブラッチ回路15に保持されたデータが第2スレーブラッチ回路16に書き込まれた状態となる。つまり、SFF1aは、故障診断前に入力されたデータが第2スレーブラッチ回路16に保持された状態となる。以上のステップS206の処理が終了すると、処理は終了する。この後、SFF1aの通常動作が再開される。
以上説明したように、第2実施形態では、SFF1a内のXOR回路19が、スレーブラッチ回路15、16のそれぞれから出力されたデータが一致するか否かを示す出力レベル判定信号Fを出力する。そして、故障診断回路2a内のスレーブラッチ故障診断回路25が、SFF1aの通常動作時において、当該出力レベル判定信号Fに基づいて、スレーブラッチ回路15、16に対する故障診断を行う。これにより、スキャンシフトパスや組合回路3の故障診断時において故障診断前のデータを保持する役目を有する第1スレーブラッチ回路15に対して、故障診断を適切に行うことが可能となる。具体的には、スキャンシフトパスや組合回路3の故障診断を行う前に、スレーブラッチ回路15、16の故障診断を予め行っておくことができる。したがって、第1実施形態では第1スレーブパス及び第2スレーブパスの2回の故障診断を行っていたが、第2実施形態によれば、スキャンシフトパスの1回の故障診断のみ行えば良いと言える。つまり、第2実施形態によれば、第1実施形態と比較して、パスに対する故障診断の回数を減らすことができる。
また、第2実施形態では、スキャンシフトパスの故障診断時において、故障診断回路2aのスレーブラッチ故障診断回路25が、出力レベル判定信号Fに基づいてXOR回路19の故障診断を行う。これにより、スキャンシフトパスの故障診断時において、XOR回路19の故障診断を同時に適切に行うことができる。即ち、スレーブラッチ回路15、16の故障診断を行う役目を有するXOR回路19に対して、故障診断を適切に行うことができる。
更に、第2実施形態では、SFF1aが、故障診断の終了後において、第2スレーブラッチ回路16を故障診断前の通常状態へ復帰させるための動作を行う、つまり故障診断前に入力されたデータを第2スレーブラッチ回路16に保持させた状態に設定する。これにより、通常動作が再開された際にスレーブラッチ回路15、16の出力を合わせておくことができ、通常動作時における出力レベル判定信号Fに基づいたスレーブラッチ回路15、16の故障診断を適切に行うことが可能となる。
なお、上記した第2実施形態では、組合回路3の故障診断をスキャンシフトパスの故障診断の後に行う例を示したが、この代わりに、組合回路3の故障診断をスキャンシフトパスの故障診断の前に行っても良い。
なお、上記した第2実施形態では、第2スレーブラッチ回路16の出力を利用して故障診断を行う例を示したが、この代わりに、第1スレーブラッチ回路15の出力を利用してスキャンシフトパスの故障診断を行っても良い。この場合には、故障診断前に入力されたデータを第2スレーブラッチ回路16に保持させた状態で、故障診断を行うこととなる。また、この場合には、第2スレーブラッチ回路16に保持されたデータを第1スレーブラッチ回路15に書き込むことで、第1スレーブラッチ回路15を故障診断前の通常状態に復帰させることとなる。
[変形例]
上記の実施形態では、2つのスレーブラッチ回路(第1スレーブラッチ回路15及び第2スレーブラッチ回路16)を有するSFFを示したが、3以上のスレーブラッチ回路を有するようにSFFを構成しても良い。このようなSFFによれば、1以上のスレーブラッチ回路が故障していると診断された場合に、他のスレーブラッチ回路によって故障対処を適切に行うことが可能となる。つまり、他の正常なスレーブラッチ回路によって通常動作を適切に行わせることが可能となる。