(58)【調査した分野】(Int.Cl.,DB名)
前記診断回路は、前記複数のスキャンチェーンの中で、最大チェーン長に満たないスキャンチェーンに対して、前記最大チェーン長と、前記最大チェーン長に満たないスキャンチェーンのチェーン長との差の分だけスキャンシフトのためのシフトクロックをマスクするマスク回路を有する、請求項1に記載の半導体集積回路。
前記複数のスキャンチェーンの中で最大チェーン長に満たないスキャンチェーンに設けられ、前記最大チェーン長と、前記最大チェーン長に満たないスキャンチェーンのチェーン長とを等しくする1又は2以上のダミーのフリップフロップを有する、請求項1に記載の半導体集積回路。
【発明を実施するための形態】
【0009】
以下、図面を参照して実施形態を説明する。
(第1の実施形態)
(構成)
図1は、第1の実施形態に係わる半導体装置の回路ブロック図である。
【0010】
半導体装置1は、ロジック部を構成する複数の組合せ回路CCを含む半導体集積回路であり、半導体装置1は、ロジックBIST機能を有する。
半導体装置1は、複数の組合せ回路CCに加えて、制御部2と、パターン発生回路(PRPG:Pseudo Random Pattern Generator)3と、伸長器(Decompressor)4と、選択器5と、複数のスキャンチェーン6と、圧縮器(Compressor)7と、多入力シグネチャレジスタ(MISR:Multiple Input Signature Register。以下、MISRと略す)8とを有する。制御部2は、ロジックBISTのための、ロジックBISTコントローラ2aを有する。
【0011】
さらに、制御部2は、半導体チップである半導体装置1への電源の供給を制御するための電源スイッチ9を制御するための電源制御信号PCSを出力可能となっている。
半導体装置1には、ロジックBISTのための複数のスキャンチェーン6が形成されている。スキャンチェーン6は、1つでもよい。
【0012】
図1では、複数のスキャンチェーン6は、m個(mは、正の整数)のスキャンチェーンSC1〜SCmを有している。以下、m個のスキャンチェーンSC1〜SCm中の、任意の1つのスキャンチェーン若しくは全てのスキャンチェーンを指すときは、スキャンチェーンSCという。ここでは、各スキャンチェーンSC1〜SCmは、ロジック部中の複数のリテンションフリップフロップRFを縦続接続して形成されたスキャンシフト経路を構成する。各リテンションフリップフロップRFは、組合せ回路CC間に配置され、ロジック部の内部状態を保持可能である。
【0013】
リテンションフリップフロップRFには、種々の実現方法があるが、例えば、各リテンションフリップフロップRFは、主要部MUと保持部BLとを備える構成により実現される。高速動作が要求される主要部MUは、閾値電圧の低いトランジスタによるフリップフロップを備える。保持部BLは、閾値電圧の高いトランジスタによるフリップフロップを備える。主要部MUのフリップフロップは、閾値電圧が低いため、高速に動作するがリーク電流が大きい。保持部BLのフリップフロップは、動作は遅いが、小さいリーク電流で内部状態を保持する。
【0014】
主要部MUは、D入力、シフトイン(SI)入力、シフトイネーブル(SE)入力、クロック(CLK)入力、ストア(S)入力及びリストア(R)入力の6つの入力と、Q出力とを有する。
【0015】
各スキャンチェーンSC1〜SCmでは、リテンションフリップフロップRFのQ出力が、次のリテンションフリップフロップRFのシフトイン(SI)入力に供給されるように、複数のリテンションフリップフロップRFが縦続接続されている。
【0016】
D入力は、組合せ回路CCの出力であり、クロック(CLK)入力に応じて保持されて、Q出力として出力される。
シフトイン(SI)入力は、シフトイネーブル(SE)入力に応じて保持されて、Q出力に出力される。
【0017】
リテンションフリップフロップRFは、ストア(S)入力に応じて、Q出力を保持部BLに保持する。
リテンションフリップフロップRFは、リストア(R)入力に応じて、保持部BLに保持されたデータを読み出して保持してQ出力として出力する。
【0018】
制御部2は、論理回路により構成され、半導体装置1の起動時のロジック部の初期診断処理及び複数のリテンションフリップフロップRFの保持部BLの保持性能などの不良等の有無を確認するリテンションフリップフロップ診断処理を実行するコントローラである。ロジック部の初期診断は、ロジックBISTコントローラ2aにより行われる。
【0019】
なお、制御部2は、中央処理装置(CPU)と、ROMと、RAMとにより構成し、ROMに格納されたプログラムをCPUに実行させることにより、ロジック部の診断処理及び複数のリテンションフリップフロップRFの診断処理を実行するようにしてもよい。
【0020】
パターン発生回路3は、テストパターンとして擬似ランダムパターンを発生する擬似ランダムパターン発生回路(PRPG)である。擬似ランダムパターンは、擬似乱数データである。伸長器4は、擬似乱数データを伸長して、選択器5に供給する。
【0021】
選択器5は、複数のスイッチSW1〜SWmを含む。各スイッチSW1〜SWmは、複数のスキャンチェーンSC1〜SCmに対応して設けられ、各スキャンチェーンSC1〜SCmのテストパターンの入力部に設けられている。
【0022】
各スイッチSW1〜SWmは、パターン発生回路3からの信号、「0」又は「1」のいずれかを選択してスキャンチェーンSCへ出力する回路である。各スイッチSW1〜SWmがいずれの信号を選択して出力するかは、制御部2からの選択信号SSに基づいて決定される。すなわち、各スイッチSW1〜SWmは、複数のスキャンチェーンSCへの入力を、所定値である、1又は0に固定するように切り替える切り替え回路を構成する。
【0023】
後述するように、ロジック部の初期診断時には、各スイッチSW1〜SWmでは、パターン発生回路3からの信号が選択されてスキャンチェーンSCへ出力される。各スイッチSW1〜SWmは、リテンションフリップフロップRFの診断処理時には、固定値である「0」又は「1」を選択してスキャンチェーンSCの入力部へ供給する。
【0024】
圧縮器7は、複数のスキャンチェーンSC1〜SCmの出力データを圧縮して、MISR8に出力する。
MISR8は、圧縮器7の出力を格納する複数のビット幅のデータを保持可能なレジスタを有する出力応答圧縮器である。ここでは、各リテンションフリップフロップRFの値が「0」であるときにスキャンシフトした場合のMISR8の値(固定値)、及び各リテンションフリップフロップRFの値が「1」であるときにスキャンシフトした場合のMISR8の値(固定値)は計算により求まるので、制御部2は、これら2つの固定値を期待値として回路中に予め保持している。
【0025】
制御部2は、リテンションフリップフロップRFの診断処理時には、MISR8の出力データと、これらの期待値とを比較して、半導体装置1に故障がないかを判定する。
(作用)
はじめに、ロジック部の初期診断について説明する。
【0026】
制御部2は、ロジック部の初期診断時、ロジックBISTコントローラ2a、パターン発生回路3及び選択器5を制御して、その初期診断を実行し、MISR8の出力と、ロジック部の初期診断時の期待値とを比較して、半導体装置1の診断を行う。診断結果は、制御部2が、半導体装置1内の他のCPUあるいは外部へ出力される。各スキャンチェーンSCには、ロジック部の診断のためのテストパターンが選択器5から入力され、ロジックBISTコントローラ2aは、テストパターンに基づいてロジック部の診断を行う。
【0027】
具体的には、パターン発生回路3からのテストパターンデータが、スキャンシフト経路を経由してロジック部の複数のリテンションフリップフロップRFにセットされる。次に、ロジック部から複数のリテンションフリップフロップRFにデータを与えた後に、スキャンシフト経路を経由してテストパターンを複数のリテンションフリップフロップRFにセットし、MISR8の値が所定の期待値である否かにより、ロジック部の初期診断が行われる。
【0028】
次に、半導体装置1のリテンションフリップフロップRFの診断処理について説明する。
図2は、リテンションフリップフロップRFの初期診断の処理の流れの例を示すフローチャートである。
制御部2は、リテンションフリップフロップRFの診断時、選択器5及び複数のスキャンチェーン6の動作を制御する。
【0029】
半導体装置1は、上述したロジックBISTの初期診断の実行後若しくは実施前に、以下に説明する各リテンションフリップフロップRFの初期診断を実行する。ここでは、リテンションフリップフロップRFの保持部BLの保持性能、及びリテンションフリップフロップRFの退避動作及び復元動作が正しく機能しているか、の診断が行われる。
【0030】
上述したように、制御部2は、一般回路であるロジック部に対するロジックBISTを実行するときは、パターン発生回路3及び伸長器4からの信号を選択して各スキャンチェーン6に供給するように、各スイッチSW1〜SWmを切り替える選択信号SSを選択器5へ出力する。
【0031】
これに対して、制御部2は、リテンションフリップフロップRFの診断時には、「0」または「1」の固定値を選択して各スキャンチェーン6に供給するように、各スイッチSW1〜SWmを切り替える選択信号SSを選択器5へ出力する。
【0032】
ここでは、制御部2が各リテンションフリップフロップRFの保持部BLの保持性能、各リテンションフリップフロップRFの退避動作及び復元動作を診断するとき、制御部2は、はじめに各スイッチSWの出力を「1」に固定する選択信号SSを各スイッチSWへ出力する(ステップ(以下、Sと略す)1)。
【0033】
制御部2は、各スキャンチェーンSCの各リテンションフリップフロップRFが「1」を保持するように、シフトイネーブル(SE)信号を各リテンションフリップフロップRFに所定回数だけ供給してスキャンシフトを実行する(S2)。所定回数は、各スキャンチェーンSC内の各リテンションフリップフロップRFに「1」を保持するのに必要な回数である。S2の処理により、各スイッチSWには、「1」が保持される。
【0034】
制御部2は、各リテンションフリップフロップRFに、ストア(S)信号を供給して、保持部BLにQ出力の値をストアさせる(S3)。
続いて、制御部2は、各スイッチSWの出力を「0」に固定する選択信号SSを各スイッチSWへ出力する(S4)。
【0035】
制御部2は、各スキャンチェーンSCの各リテンションフリップフロップRFが「0」を保持するように、シフトイネーブル(SE)信号を各リテンションフリップフロップRFに所定回数だけ供給してスキャンシフトを実行する(S5)。所定回数は、各スキャンチェーンSC内の各リテンションフリップフロップRFに「1」を保持するのに必要な回数と同じ回数である。S5の処理により、各スイッチSWには、「0」が保持される。
【0036】
制御部2は、オフのための電源制御信号PCSを出力して、電源スイッチ9をオフして電源遮断を行う(S6)。
制御部2は、その後、オンのための電源制御信号PCSを出力して、電源スイッチ9をオンして電源復帰を行う(S7)。
【0037】
続いて、制御部2は、シフトイネーブル(SE)信号を各リテンションフリップフロップRFに所定回数だけ供給してスキャンシフトを実行する(S8)。このとき、各スイッチSWの出力は「0」に固定されているので、S8のスキャンシフトにより、各スイッチSWには、「0」が保持される。
【0038】
そして、制御部2は、保持部BLに保持された値に、主要部MUの値を復元するために、各リテンションフリップフロップRFに、リストア(R)信号を供給して、保持部BLから値をリストアさせる(S9)。
【0039】
保持部BLに値が正しく退避されて保持され、リストア(R)信号により正しく復元されていれば、各リテンションフリップフロップRFの主要部MUには、リストアにより「1」が保持される。
【0040】
制御部2は、MISR8の値をクリアし、続いてシフトイネーブル(SE)信号を各リテンションフリップフロップRFに所定回数だけ供給してスキャンシフトを実行する(S10)。
【0041】
制御部2は、MISR8のレジスタの値を読み出し、MISR8の値と所定の期待値とを比較する(S11)。ここでは、全て「1」の値がリストアされているとしたときの期待値と、S10でスキャンシフトされて得られたMISR8の値とが比較される。
【0042】
制御部2は、MISR8の値と所定の期待値との比較結果がOKであるか、すなわちMISR8の値と所定の期待値とが一致したかを判定し(S12)、比較結果がNGであるとき(S12:NO)、初期診断結果がNGであると判定する(S13)。
【0043】
制御部2は、MISR8の値と所定の期待値との比較結果がOKであるとき(S12:YES)、制御部2は、各スイッチSWの出力を「0」に固定する選択信号SSを各スイッチSWへ出力する(S14)。
【0044】
制御部2は、各スキャンチェーンSCの各リテンションフリップフロップRFが「0」を保持するように、シフトイネーブル(SE)信号を各リテンションフリップフロップRFに所定回数だけ供給してスキャンシフトを実行する(S15)。S15の処理により、各スイッチSWには、「0」が保持される。
【0045】
制御部2は、各リテンションフリップフロップRFに、ストア(S)信号を供給して、保持部BLにQ出力の値をストアさせる(S16)。
続いて、制御部2は、各スイッチSWの出力を「1」に固定する選択信号SSを各スイッチSWへ出力する(S17)。
【0046】
制御部2は、各スキャンチェーンSCの各リテンションフリップフロップRFが「1」を保持するように、シフトイネーブル(SE)信号を各リテンションフリップフロップRFに所定回数だけ供給してスキャンシフトを実行する(S18)。S18の処理により、各スイッチSWには、「1」が保持される。
【0047】
制御部2は、電源制御信号PCSを出力して、電源スイッチ9をオフして電源遮断を行う(S19)。
制御部2は、その後、電源制御信号PCSを出力して、電源スイッチ9をオンして電源復帰を行う(S20)。
【0048】
続いて、制御部2は、シフトイネーブル(SE)信号を各リテンションフリップフロップRFに所定回数だけ供給してスキャンシフトを実行する(S21)。このとき、各スイッチSWの出力は「1」に固定されているので、各スイッチSWには、「1」が保持される。
【0049】
そして、制御部2は、保持部BLに保持されたデータに、主要部MUのデータを復元するために、各リテンションフリップフロップRFに、リストア(R)信号を供給して、保持部BLからデータをリストアさせる(S22)。
【0050】
保持部BLにデータが正しく退避されて保持され、リストア(R)信号により正しく復元されていれば、各リテンションフリップフロップRFの主要部MUには、リストアにより「0」が保持される。
【0051】
制御部2は、MISR8のデータをクリアし、続いてシフトイネーブル(SE)信号を各リテンションフリップフロップRFに所定回数だけ供給してスキャンシフトを実行する(S23)。
【0052】
制御部2は、MISR8のレジスタの値を読み出し、MISR8の値と所定の期待値とを比較する(S24)。ここでは、全て「0」の値がリストアされているとしたときの期待値と、S23でスキャンシフトされて得られたMISR8の値とが比較される。
【0053】
制御部2は、MISR8の値と所定の期待値との比較結果がOKであるか、すなわちMISR8の値と所定の期待値とが一致したかを判定し(S25)、比較結果がNGであるとき(S25:NO)、初期診断結果がNGであると判定する(S13)。
制御部2は、MISR8の値と所定の期待値との比較結果がOKであるとき(S25:YES)、初期診断結果がOKであると判定する(S26)。
【0054】
以上のように、制御部2は、各リテンションフリップフロップRFの保持部BLへの退避を行ったデータ(0又は1)を保持部BLからリストアしてデータの復元を行い、そのデータの復元の後に、退避前の複数のスキャンチェーンSCにおいてスキャンシフトして得られた出力データ列の第1の値(期待値)と、復元後の複数のスキャンチェーンSCのデータをスキャンシフトして得られた出力データ列の第2の値とが一致するか否かの比較を行うことによりリテンションフリップフロップRFの診断を行う診断回路を構成する。
【0055】
第1の値は、選択器5により所定値(0又は1)を複数のスキャンチェーンSCへの入力に設定した後に、その所定値を複数のスキャンチェーンSCにおいてスキャンシフトして得られた出力データ列の期待値である。第2の値は、各保持部BLからリストアして復元された所定値(0又は1)を複数のスキャンチェーンSCに入力してスキャンシフトして得られた出力データ列の値である。
【0056】
そして、診断回路である制御部2は、選択器5により複数のスキャンチェーンSCへの入力を「0」又は「1」の一方に固定したときの第1の値と前記第2の値とが一致するか否かの比較を行うことによりリテンションフリップフロップRFの診断を行った後に、選択器5により複数のスキャンチェーンSCへの入力を「0」又は「1」の他方に固定したときの第1の値と第2の値とが一致するか否かの比較を行うことによりリテンションフリップフロップRFの診断を行う。
【0057】
以上のように、上述した実施形態によれば、初期診断としてリテンションフリップフロップの保持部の保持性能、及びリテンションフリップフロップの退避動作及び復元動作に不良あるいは不具合がないか、を診断することができる半導体装置及び半導体装置の診断方法を実現することができる。
【0058】
特に、上述した例では、各リテンションフリップフロップRFに「0」と「1」の両方を保持させた後にリストアして、MISR8の値と期待値とを比較しているので、各リテンションフリップフロップRFの保持部BLが「0」と「1」の両論理値を確実に保持できているかが診断可能である。
また、主要部MUの値が保持部BLの値と反転関係にあるときに、保持部BLからのリストア処理を実行するので、保持部BLにおける遷移故障による不良の判定も可能である。
【0059】
さらに、各保持部BLに「1」をストアした後に、主要部MUに「0」をシフトさせてから電源遮断しているので、電源遮断の反動によって、保持部BLあるいは主要部MUに誤った値が保持されているか否かの判定も可能となっている。
【0060】
なお、リテンションフリップRFの保持部BLの「0」から「1」の遷移と、「1」から「0」の遷移の両遷移を完全に保証するために、
図2においてS1〜S25を実行した後に、更にS1〜S12をさらに実行するようにしてもよい。
【0061】
さらになお、上述した実施形態では、各スイッチSWは、「0」と「1」を選択可能であるが、隣接するフリップフロップとの干渉を考慮して、トグルフリップフロップを用いてもよい。
【0062】
図3は、トグルフリップフロップを用いたスイッチの構成例を示す図である。
図3は、選択器5の中の1つのスイッチSWの構成を示している。
スイッチSWには、パターン発生回路3からのテストパターンと、トグルフリップフロップTFの2つの出力とが入力され、スイッチSWは、3つの入力のいずれかを選択して出力信号OUTとして出力する。トグルフリップフロップTFは、入力Tに応じて、Q出力とその反転出力を出力する。
【0063】
選択信号SSにより、リテンションフリップフロップRFの診断のときは、トグルフリップフロップTFの2つの出力、すなわちQ出力とその反転出力が交互に選択されて出力される。よって、隣り合うリテンションフリップフロップRFには、異なる値が保持される。
【0064】
よって、
図1の場合は、各スキャンチェーンSCには、「0」又は「1」が連続して入力されてスキャンシフトされ、全て「0」又は全て「1」の値が保持されるが、
図3の各スキャンチェーンSCでは、「0」と「1」が交互に入力されてスキャンシフトされる。
【0065】
また、上述した
図2では、リテンションフリップフロップRFの本来の用途のための電源遮断が処理中に含まれているが、リテンションフリップフロップRFの常時診断時の保持及び復元用としてリテンションフリップフロップRFを搭載する場合は、電源遮断は省略しても構わない。
【0066】
さらになお、上述した例では、制御部2は、複数のスキャンチェーンSCの出力データ列を圧縮するMISR8を用いて期待値との一致を判断しているが、MISR8を用いないで、固定値「0」及び「1」に対応する値が得られているか否かを判定するようにしてもよい。
(第2の実施形態)
第1の実施形態は、各リテンションフリップフロップRFの初期診断を実行可能な半導体装置に関するが、第2の実施形態は、各リテンションフリップフロップRFの常時診断を実行可能な半導体装置に関する。
(構成)
図4は、第2の実施形態に係わる半導体装置の回路ブロック図である。
【0067】
第2の実施形態の半導体装置1Aは、第1の実施形態の半導体装置1と、類似の構成を有するので、
図4において、第1の実施形態の半導体装置1と同じ構成要素については、同じ符号を付して説明は省略し、異なる構成についてのみ説明する。
【0068】
第2の実施形態の半導体装置1Aの複数のスキャンチェーンSCの入力部には、選択器5Aが設けられている。選択器5Aは、複数のスイッチSWa1〜SWamを含む。各スイッチSWa1〜SWamは、複数のスキャンチェーンSC1〜SCmに対応して設けられ、各スキャンチェーンSC1〜SCmのテストパターンの入力部に設けられている。
【0069】
各スイッチSWa1〜SWamは、パターン発生回路3からの信号又は各スキャンチェーンSCの最終出力信号のいずれかを選択してスキャンチェーンSCへ出力する回路である。各スイッチSWa1〜SWamがいずれの信号を選択して出力するかは、制御部2からの選択信号SSに基づいて決定される。すなわち、各スイッチSWa1〜SWamは、各スキャンチェーンSCの入力を、各スキャンチェーンSCの出力データ列に固定するように切り替える切り替え回路を構成する。
【0070】
後述するように、ロジック部の常時診断時には、各スイッチSWa1〜SWamでは、パターン発生回路3からの信号が選択されてスキャンチェーンSCへ出力される。各スイッチSWa1〜SWamは、リテンションフリップフロップRFの診断時には、各スキャンチェーンSCの最終出力信号を選択してスキャンチェーンSCの入力部へ供給する。
【0071】
各スキャンチェーンSCの出力は、圧縮器7を介してMISR8に供給される。MISR8の値は、制御部2からの制御信号(図示せず)に応じて、レジスタ10に格納可能となっている。そして、制御部2は、レジスタ10に格納された値を、読み出し可能となっている。
(作用)
はじめに、ロジック部の常時診断について説明する。
【0072】
制御部2は、半導体装置1が動作中に、複数のリテンションフリップフロップRFの保持部BLにデータを退避させてから、ロジック部の常時診断を実行する。常時診断後、退避したデータを主要部MUにリストアしてから、半導体装置1の動作が再開される。診断結果は、制御部2が、半導体装置1内の他のCPUあるいは外部へ出力される。
【0073】
次に、半導体装置1Aのテンションフリップフロップの診断処理について説明する。
図5は、リテンションフリップフロップRFの常時診断の処理の流れの例を示すフローチャートである。
制御部2は、リテンションフリップフロップの診断時、選択器5及び複数のスキャンチェーン6の動作を制御する。
【0074】
なお、半導体装置1は、ロジックBISTによる常時診断の実行後若しくは実行前に、以下に説明する各リテンションフリップフロップRFの常時診断を実行する。ここでは、リテンションフリップフロップRFの保持部BLの保持性能、及びリテンションフリップフロップRFの退避動作及び復元動作が正しく機能しているか、の診断が行われる。
【0075】
上述したように、制御部2は、一般回路であるロジック部に対するロジックBISTを実行するときは、パターン発生回路3及び伸長器4からの信号を選択して各スキャンチェーン6の入力部に供給するように、各スイッチSWa1〜SWamを切り替える選択信号SSを選択器5Aへ出力する。
【0076】
これに対して、制御部2は、リテンションフリップフロップRFの診断時には、スキャンチェーンSCの最終出力信号すなわちシフトアウト信号を選択して各スキャンチェーン6の入力部に供給するように、各スイッチSWa1〜SWamを切り替える選択信号SSを選択器5Aへ出力する。
【0077】
本実施形態の常時診断では、初期診断時には発生しないリテンションフリップフロップRFの保持部BLの故障を検出するために、以下に説明する各リテンションフリップフロップRFの診断を実行する。
【0078】
半導体装置1Aが動作中に、その動作を中断して、リテンションフリップフロップRFの常時診断、ここでは、リテンションフリップフロップRFの保持部の保持性能、及びリテンションフリップフロップRFの退避動作及び復元動作、の診断が行われる。
【0079】
半導体装置1Aが動作を中断すると、制御部2は、電源遮断前、または、ロジック部の常時診断開始前のストア処理に移行する前に、各スキャンチェーンSCの入力が各スキャンチェーンの最終出力信号であるシフトアウト信号となるように、各スイッチSWa1〜SWamをシフトアウトに固定する(S31)。
図4においては、各スキャンチェーンSCの入力部に、各スキャンチェーンSCの最終出力信号がフィードバック線FBを介して入力されるように、各スイッチSWa1〜SWamの切り替えが行われる。
【0080】
次に、制御部2は、MISR8をクリアし、スキャンシフトを実行する(S32)。シフトイネーブル(SE)信号を各リテンションフリップフロップRFに所定回数だけ供給することによって、スキャンシフトが行われる。スキャンシフトにより、半導体装置1Aが動作を中断したときの各リテンションフリップフロップRFの主要部MUに保持された値が、スキャンシフトされる。所定回数は、各スキャンチェーンSC内の各リテンションフリップフロップRFのデータが、半導体装置1Aが動作を中断したときに保持していた値を保持するのに必要な回数である。
【0081】
そして、制御部2は、S32のスキャンシフトにより得られたMISR8の結果の値をレジスタ10に格納させる(S33)。
ここでシフトアウトして得られたMISR8の値は、半導体装置1Aの中断したときの各リテンションフリップフロップRFの主要部MUに保持された値に基づく値であり、レジスタ10に保持される。
【0082】
さらに、このとき、各リテンションフリップフロップRFの主要部MUに保持される値は、各データがスキャンチェーンSCを一回りするため、シフト前の元の値に戻ることになる。
【0083】
この後、制御部2は、各リテンションフリップフロップRFに対してストア処理を施して、保持部BLに主要部MUの値をストアする(S34)。
そして、制御部2は、電源遮断を行う(S35)。
【0084】
なお、電源遮断に代えて、制御部2は、ロジック部の常時診断を実行してもよい。常時診断する場合は各スイッチSWaを伸長器4側に切り替えておく。
制御部2は、電源復帰を行う(S36)。なお、ロジック部の常時診断が終了したときには、主要部MUの値は変更されている。
【0085】
そして、制御部2は、リストア(R)信号を各リテンションフリップフロップRFに供給して、保持部BLから値をリストアする(S37)。リテンションフリップフロップRFに故障がなければ主要部MUは電源遮断前、あるいは、ロジック部の常時診断開始前の状態が復元されている筈である。
【0086】
なお、ロジック部の常時診断が終了したときは、各スイッチSWaは、再びスキャンチェーンSCの最終出力信号すなわちシフトアウト信号に切り替えられる。
そして、制御部2は、MISR8の値をクリアし、スキャンシフトを実行し(S38)、レジスタ10の値と、MISR8の結果とを比較する(S39)。
【0087】
制御部2は、レジスタ10の値とMISR8の値との比較結果がOKであるか、すなわちMISR8の値とレジスタ10の値とが一致したかを判定し(S40)、比較結果がNGであるとき(S40:NO)、常時診断結果がNGであると判定する(S41)。
【0088】
制御部2は、MISR8の値とレジスタ10の値との比較結果がOKであるとき(S40:YES)、常時診断結果がOKであると判定する(S42)。
ここで、MISR8の値をクリアし、スキャンシフトして得られたMISR8の値と遮断前(あるいは診断前)にレジスタ10に保持した値とが等しければリストアした結果がストア前の主要部MUの値と等しいことになる。
【0089】
また、スキャンシフトにより値のデータがスキャンチェーンを一巡し、各リテンションフリップフロップRFの主要部MUは元の値に戻るため、復元データとして半導体装置1Aの再起動後に直ちに使用することができる。
【0090】
よって、制御部2は、各リテンションフリップフロップRFの保持部BLへの退避を行ったデータ(半導体装置1Aが動作を中断したときのデータ)を保持部BLからリストアしてデータの復元を行い、そのデータの復元の後に、退避前の複数のスキャンチェーンSCにおいてスキャンシフトして得られた出力データ列の第1の値(半導体装置1Aが動作を中断したときのデータ)と、復元後の複数のスキャンチェーンSCのデータをスキャンシフトして得られた出力データ列の第2の値とが一致するか否かの比較を行うことによりリテンションフリップフロップRFの診断を行う診断回路を構成する。
【0091】
第1の値は、選択器5から入力された複数のスキャンチェーンSCの出力データ列をスキャンシフトして得られた値である。第2の値は、保持部BLからリストアして復元されたデータをスキャンシフトして得られた出力データ列の値である。
【0092】
以上のように、上述した実施形態によれば、常時診断としてリテンションフリップフロップの保持部の保持性能、及びリテンションフリップフロップの退避動作及び復元動作に不良あるいは不具合がないか、を診断することができる半導体装置及び半導体装置の診断方法を実現することができる。
【0093】
特に、ロジック部の常時診断においてリテンションフリップフロップを利用する場合に、保持動作及び復元動作が保証されなければ、常時診断明けの半導体装置1Aの再起動で誤動作が生じる可能性があるが、上述した実施形態では、リテンションフリップフロップRFの保持部の保持性能などを診断できるので、常時診断明けの半導体装置1Aの誤動作を防止することができる。
なお、
図5に代えて、
図5Aに示す処理を実行するようにしてもよい。
図5Aは、リテンションフリップフロップRFの常時診断の処理の流れの他の例を示すフローチャートである。
図5Aにおいて、
図5と同じ処理については、同じステップ番号を付して説明は省略する。
すなわち、
図5の変形例では、S32の処理の前に、制御部2は、各リテンションフリップフロップRFに対してストア処理を施して、保持部BLに主要部MUの値をストアする(S43)。そして、S33の処理の後、制御部2は、電源遮断を行う(S35)。
その後、S35の後の処理は、
図5と同様であり、S42において常時診断結果がOKであると判定されると、制御部2は、リストア(R)信号を各リテンションフリップフロップRFに供給して、保持部BLから値をリストアする(S44)。
図5Aの処理によっても、リテンションフリップフロップRFの常時診断を行うことができる。
(第3の実施形態)
第1の実施形態は、各リテンションフリップフロップRFの初期診断を実行可能な半導体装置に関し、第2の実施形態は、各リテンションフリップフロップRFの常時診断を実行可能な半導体装置に関するが、第3の実施形態は、各リテンションフリップフロップRFの初期診断と常時診断の両方を実行可能な半導体装置に関する。
(構成)
図6は、第3の実施形態に係わる半導体装置の回路ブロック図である。
【0094】
第3の実施形態の半導体装置1Bは、第2の実施形態の半導体装置1Aと、類似の構成を有するので、
図6において、第2の実施形態の半導体装置1Aと同じ構成要素については、同じ符号を付して説明は省略し、異なる構成についてのみ説明する。
【0095】
第3の実施形態の半導体装置1Bの複数のスキャンチェーンSCの入力部には、選択器5Bが設けられている。選択器5Bは、複数のスイッチSWb1〜SWbmを含む。各スイッチSWb1〜SWbmは、複数のスキャンチェーンSC1〜SCmに対応して設けられ、各スキャンチェーンSC1〜SCmのテストパターンの入力部に設けられている。
【0096】
各スイッチSWb1〜SWbmは、パターン発生回路3からの信号、「0」、「1」、又は各スキャンチェーンSCの最終出力信号のいずれかを選択してスキャンチェーンSCへ出力する回路である。各スイッチSWb1〜SWbmがいずれの信号を選択して出力するかは、制御部2からの選択信号SSに基づいて決定される。
【0097】
すなわち、各スイッチSWb1〜SWbmは、複数のスキャンチェーンSCへの入力を、所定値(1又は0)又は前記複数のスキャンチェーンSCの出力データ列に固定するように切り替えることができる切り替え回路を構成する。
【0098】
後述するように、ロジック部の初期診断時には、各スイッチSWb1〜SWbmでは、パターン発生回路3からの信号が選択されてスキャンチェーンSCへ出力される。リテンションフリップフロップRFの初期診断時には、各スイッチSWb1〜SWbmでは、固定値である「0」又は「1」が選択されてスキャンチェーンSCへ出力される。リテンションフリップフロップRFの常時診断時には、各スキャンチェーンSCの最終出力信号が選択されてスキャンチェーンSCへ出力される。
(作用)
半導体装置1Bの各リテンションフリップフロップRFの初期診断は、各スイッチSWb1〜SWbmにおいて「0」又は「1」が選択されて、
図1及び
図2で説明したように、制御部2が動作することによって、実行される。
【0099】
そして、半導体装置1Bの各リテンションフリップフロップRFの常時診断は、各スイッチSWb1〜SWbmにおいて各スキャンチェーンSCの最終出力信号が選択されて、
図4及び
図5で説明したように、制御部2が動作することによって、実行される。
【0100】
よって、制御部2は、各リテンションフリップフロップRFの保持部BLへの退避を行ったデータを保持部BLからリストアしてデータの復元を行い、そのデータの復元の後に、退避前の複数のスキャンチェーンSCにおいてスキャンシフトして得られた出力データ列の第1の値と、復元後の複数のスキャンチェーンSCのデータをスキャンシフトして得られた出力データ列の第2の値とが一致するか否かの比較を行うことによりリテンションフリップフロップRFの診断を行う診断回路を構成する。
【0101】
各スイッチSWbが複数のスキャンチェーンSCへの入力を所定値(1又は0)に固定したときは、第1の値は、各スイッチSWbにより所定値(1又は0)を複数のスキャンチェーンSCへの入力に設定した後に、所定値(1又は0)を複数のスキャンチェーンSCにおいてスキャンシフトして得られた出力データ列の期待値であり、第2の値は、保持部BLからリストアして復元された所定値(1又は0)を複数のスキャンチェーンSCに入力してスキャンシフトして得られた出力データ列の値である。
【0102】
各スイッチSWbが複数のスキャンチェーンSCへの入力を各スキャンチェーンSCの出力データ列に固定したときは、第1の値は、各スイッチSWbにより各スキャンチェーンSCの出力データ列を複数のスキャンチェーンSCに入力してスキャンシフトして得られる値であり、第2の値は、保持部BLからリストアして復元されたデータを複数のスキャンチェーンSCに入力してスキャンシフトして得られた第2の出力データ列の値である。
【0103】
以上のように、上述した実施形態によれば、初期診断及び常時診断としてリテンションフリップフロップの保持部の保持性能、及びリテンションフリップフロップの退避動作及び復元動作に不良あるいは不具合がないか、を診断することができる半導体装置及び半導体装置の診断方法を実現することができる。
【0104】
次に上述した各実施形態の変形例について説明する。
(変形例1)
上述した各実施形態では、半導体装置の全てのスキャンチェーンSCは、複数のリテンションフリップフロップRFのみから構成されているが、本変形例1の半導体装置は、複数の非リテンションフリップフロップのみからなるスキャンチェーンを含む。
【0105】
図7は、本変形例1に係わる半導体装置の回路ブロック図である。
変形例1の半導体装置1Cは、複数のスキャンチェーンSCを含むが、複数のスキャンチェーンSCの一部は、複数のリテンションフリップフロップRFから構成され、残りは、複数の非リテンションフリップフロップNFから構成されている。
図7では、スキャンチェーンSCmが、複数の非リテンションフリップフロップNFから構成されていることが示されている。すなわち、複数のスキャンチェーンSCは、非リテンションフリップフロップNFのみを含む非リテンションフリップフロップスキャンチェーンを含む。
【0106】
スキャンチェーンSCmの出力部に、AND回路11が設けられている。AND回路11の2つの入力の一方には、スキャンチェーンSCmの最終出力信号が入力され、AND回路11の2つの入力の他方には、制御部2からの所定の出力信号C1が入力される。ここでは、出力信号C1は、反転されてAND回路11に入力される。
【0107】
所定の出力信号C1が、「1」であると、AND回路11の出力は常に「0」となるので、スキャンチェーンSCmの出力はマスクされて常に「0」となる。リテンションフリップフロップRFの診断のときには、制御部2は、所定の出力信号C1を「1」にすることにより、スキャンチェーンSCmの出力は、常に「0」となってMISR8に入力される。
【0108】
よって、AND回路11は、非リテンションフリップフロップスキャンチェーンのデータをスキャンシフトして得られた出力データ列をマスクして、所定値に切り替える切り替え回路を構成する。
【0109】
MISR8には、複数のスキャンチェーンSCの数の分のデータ圧縮値が入力されるが、非リテンションフリップフロップNFから構成されるスキャンチェーンSCmの出力は、所定値に固定される。すなわち、非リテンションフリップフロップスキャンチェーンにおいてスキャンシフトされた出力データ列を含むデータ列から得られる値が、MISR8に格納される。
【0110】
また、制御部2が、所定の出力信号C1を「0」にすると、AND回路11の出力は、スキャンチェーンSCmの最終出力信号となる。よって、通常動作時、及びロジック部の診断時には、制御部2が、所定の出力信号C1を「0」にする。
【0111】
リテンションフリップフロップRFは、通常のフリップフロップと比較すると回路面積が大きく、チップコストが増大する虞れがある。よって、半導体装置において実行される初期設定処理のような重要な回路では、リテンションフリップフロップRFを用いてスキャンチェーンSCを構成し、他の回路には、非リテンションフリップフロップNFを用いたスキャンチェーンSCを用いるようにすれば、チップコストの増大を抑制することができる。
【0112】
本変形例1によれば、非リテンションフリップフロップNFのスキャンチェーンSCの出力を所定値に固定できるので、リテンションフリップフロップRFの保持部の保持性能などを診断することができる。
【0113】
なお、上述した例では、非リテンションフリップフロップNFのスキャンチェーンSCの出力は、「0」に固定されているが、「1」に固定するようにしてもよい。
さらになお、リテンションフリップフロップRFの初期診断であれば、リテンションフリップフロップRFのスキャンチェーンSCにおいてシフトされている、オール「0」あるいはオール「1」に合わせるようにAND回路11の出力を設定してもよい。
【0114】
なお、
図7は、第3の実施形態の半導体装置と同様の構成を有する半導体装置1Cに、変形例1を適用した場合を示しているが、本変形例1は、第1、第2の実施形態及び他の変形例の半導体装置にも適用可能である。
(変形例2)
上述した各実施形態の各スキャンチェーンSCでは、全てのフリップフロップがリテンションフリップフロップRFであるが、本変形例では、複数のスキャンチェーンSCの全て若しくは一部において、リテンションフリップフロップRFと非リテンションフリップフロップNFが混在する。すなわち、リテンションフリップフロップRFと非リテンションフリップフロップNFが、同一のスキャンチェーン内で混載されている。言い換えれば、リテンションフリップフロップRFを含むスキャンチェーンSCは、非リテンションフリップフロップNFを含む。
【0115】
図8は、本変形例2に係わるスキャンチェーンSCの一部の回路図である。スキャンチェーンSCkは、リテンションフリップフロップRFと非リテンションフリップフロップNFが混在して縦続接続されて構成されている。
【0116】
そして、各非リテンションフリップフロップNFの出力部には、AND回路12が設けられている。AND回路12の2つの入力の一方には、上流のフリップフロップの出力が入力され、AND回路12の2つの入力の他方には、制御部2からの所定の出力信号C2が入力される。AND回路12の2つの入力の他方には、出力信号C2が反転されて入力される。
【0117】
制御部2は、スキャンシフトの最初の1クロック目においてのみ、出力信号C2として「1」を出力する。出力信号C2が「1」であるとき、各AND回路12の出力は、「0」となる。よって、AND回路12は、非リテンションフリップフロップNFの出力を所定値に切り替える切り替え回路を構成する。
すなわち、非リテンションフリップフロップNFのデータは、マスクされて「0」に固定されるので、MISR8へ供給されるスキャンデータは不定とならない。
【0118】
なお、変形例1では、AND回路11によるマスク処理は、スキャンシフト中、常に行われるが、本変形例2では、AND回路12によるマスク処理は、スキャンシフトを開始する1クロック目のタイミングのみ行われる。
【0119】
さらになお、上述した例では、非リテンションフリップフロップのスキャンチェーンSCの出力は、「0」に固定されているが、OR回路を用いて「1」をそのOR回路に供給することにより、「1」に固定するようにしてもよい。
なお、本変形例2は、第1、第2の実施形態及び他の変形例の半導体装置にも適用可能である。
(変形例3)
上述した各実施形態及び各変形例では、複数のスキャンチェーンSCの長さが同じであるが、複数のスキャンチェーンSCの一部の長さが、複数のスキャンチェーンSCの最大スキャンチェーン長を有しない場合が有り得る。本変形例3は、そのような場合においても、リテンションフリップフロップRFの診断を可能にするように、シフトクロックとしてのシフトイネーブル(SE)入力がマスクされる。
【0120】
図9は、本変形例3の半導体装置の回路ブロック図である。
変形例3の半導体装置1Dは、複数のスキャンチェーンSCを含むが、複数のスキャンチェーンSCの一部は、最大スキャンチェーン長よりも短い。最大スキャンチェーン長は、複数のスキャンチェーンSCの中で、最もフリップフロップの数の多いスキャンチェーンの長さを意味する。
図9では、スキャンチェーンSCm以外の複数のスキャンチェーンSCは同じスキャンチェーン長を有するが、スキャンチェーンSCmのみが、最大スキャンチェーン長を有しない。すなわち、
図9では、二点鎖線で示すDFの箇所にリテンションフリップフロップRFがなく、スキャンチェーンSCmは、リテンションフリップフロップRF2個分の長さだけ、最大スキャンチェーン長よりも短い。
【0121】
スキャンチェーンSCmでは、最大スキャンチェーン長分のシフト動作が行われると、データがずれてスキャンチェーンSCmの入力にフィードバックされ、データがずれてしまう。
【0122】
そこで、制御部2は、スキャンチェーンSCmの長さと最大スキャンチェーン長との差のリテンションフリップフロップRFの数の分だけ(ここでは2個分だけ)、シフトイネーブル(SE)信号を、マスクして出力しない。マスク処理は、制御部2のマスク回路2bにより行われる。
【0123】
すなわち、診断回路である制御部2は、複数のスキャンチェーンSCの中で、最大チェーン長に満たないスキャンチェーンSCに対して、最大チェーン長と、最大チェーン長に満たないスキャンチェーンのチェーン長との差の分だけスキャンシフトのためのシフトクロックをマスクするマスク回路2bを有する。
【0124】
その結果、他のスキャンチェーンSCmでは、最大スキャンチェーン長分のシフト動作が行われるが、制御部2は、スキャンチェーンSCmへのシフトイネーブル(SE)を、上述したように、最大チェーン長に満たないスキャンチェーンのチェーン長との差の分だけマスク処理を行うので、スキャンチェーンSCm内では、データがずれないで、元のデータが復元される。
【0125】
よって、各リテンションフリップフロップRFのデータを復元するときに、最大チェーン長に満たないスキャンチェーンSCに対して、その差分だけ、シフトクロックであるシフトイネーブル(SE)信号をマスクして与えて、正しい元のデータが復元される。
【0126】
なお、
図9は、第3の実施形態の半導体装置と同様の構成を有する半導体装置1Dに、変形例3を適用した場合を示しているが、本変形例3は、第1、第2の実施形態及び他の変形例の半導体装置にも適用可能である。
(変形例4)
本変形例4は、変形例3の変形例である。変形例3では、最大チェーン長に満たないスキャンチェーンSCに対して、その差分だけ、シフトクロックであるシフトイネーブル(SE)信号をマスクして与えていたが、本変形例4では、最大チェーン長に満たないスキャンチェーンSCに対して、その差分に応じてダミーのフリップフロップを挿入する。
【0127】
図9の場合、二点鎖線で示すDFの2箇所に、ダミーのフリップフロップが追加されて挿入される。各ダミーのフリップフロップは、「0」又は「1」を出力するように設定される。
【0128】
すなわち、半導体装置は、複数のスキャンチェーンSCの中で最大チェーン長に満たないスキャンチェーンに設けられ、最大チェーン長と、最大チェーン長に満たないスキャンチェーンのチェーン長とを等しくする1又は2以上のダミーのフリップフロップを有する。
【0129】
本変形例4に示すような最大チェーン長に満たないスキャンチェーンSCにおいても、正しい元のデータが復元される。
なお、
図9は、第3の実施形態の半導体装置と同様の構成を有する半導体装置1Dに、変形例4を適用した場合を示しているが、本変形例4は、第1、第2の実施形態及び他の変形例の半導体装置にも適用可能である。
【0130】
以上のように、上述した各実施形態及び各変形例によれば、リテンションフリップフロップの保持部の保持性能、及びリテンションフリップフロップの退避動作及び復元動作に不良あるいは不具合がないか、を診断することができる半導体装置及び半導体集積回路の診断方法を提供することができる。
特に、信頼性が重視される車載製品としての半導体装置に搭載されるリテンションフリップフロップの診断などにおいて有効である。
【0131】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として例示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれると共に、特許請求の範囲に記載された発明とその均等の範囲に含まれる。