(57)【要約】【課題】論理回路に対する疑似故障の注入による診断を新たな回路を追加することなく実施することができる半導体装置を提供する。【解決手段】実施形態の半導体装置は、主回路と、監視回路と、比較器と、ＤＦＴ制御回路とを有する。監視回路は、主回路と同じ回路構成を有する。比較器は、主回路の出力と前記監視回路の出力と比較する。ＤＦＴ制御回路は、主回路に設けられた複数のフリップフロップの値の内、少なくとも１つのフリップフロップの値を反転させ、スキャンチェーンを介して少なくとも１つのフリップフロップに反転させた値を設定する。【選択図】図２
2020153867.tif 000002
【特許請求の範囲】
【請求項１】
主回路と、
前記主回路と同じ回路構成を有する監視回路と、
前記主回路の出力と前記監視回路の出力と比較する比較器と、
前記主回路に設けられた複数のフリップフロップの値の内、少なくとも１つのフリップフロップの値を反転させ、スキャンチェーンを介して前記少なくとも１つのフリップフロップに反転させた値を設定するＤＦＴ制御回路と、
を有することを特徴とする半導体装置。
【請求項２】
前記ＤＦＴ制御回路は、前記スキャンチェーンを介して前記複数のフリップフロップの値をスキャンアウトして記憶部に記憶し、
さらに、前記記憶部に記憶された前記複数のフリップフロップの値の少なくとも１つの値を反転して前記記憶部に記憶する制御回路を有し、
前記ＤＦＴ制御回路は、前記制御回路によって前記記憶部に記憶された値を前記スキャンチェーンを介してスキャンインし、前記複数のフリップフロップに設定することを特徴とする請求項１に記載の半導体装置。
【請求項３】
前記制御回路は、前記記憶部に記憶された疑似故障情報に基づいて、前記少なくとも１つの値を反転することを特徴とする請求項２に記載の半導体装置。
【請求項４】
前記疑似故障情報は、前記複数のフリップフロップの内、疑似故障を注入するフリッププロップの位置を示す情報であることを特徴とする請求項３に記載の半導体装置。
【請求項５】
前記主回路への通常クロックの供給及び前記通常クロックの供給の停止を制御するクロック制御回路を有することを特徴とする請求項１から４のいずれか１つに記載の半導体装置。
【請求項６】
前記主回路の出力をマスクするマスク回路を有することを特徴する請求項１から５のいずれか１つに記載の半導体装置。
【請求項７】
所望の回路構成を有する主回路と、前記主回路と同じ回路構成を有する監視回路と、前記主回路の出力と前記監視回路の出力と比較する比較器と、を有する半導体装置の診断方法であって、
前記主回路に設けられた複数のフリップフロップの値の内、少なくとも１つのフリップフロップの値を反転させ、スキャンチェーンを介して前記少なくとも１つのフリップフロップに反転させた値を設定することを特徴とする半導体装置の診断方法。
【請求項８】
前記スキャンチェーンを介して前記複数のフリップフロップの値をスキャンアウトして記憶部に記憶し、
前記記憶部に記憶された前記複数のフリップフロップの値の少なくとも１つの値を反転して前記記憶部に記憶し、
前記記憶部に記憶された値を前記スキャンチェーンを介してスキャンインし、前記複数のフリップフロップに設定することを特徴とする請求項７に記載の半導体装置の診断方法。
【請求項９】
主回路に設けられた複数のフリップフロップの値の内、少なくとも１つのフリップフロップの値を反転させ、スキャンチェーンを介して前記少なくとも１つのフリップフロップに反転させた値を設定するステップをコンピュータに実行させることを特徴とする半導体装置の診断プログラム。
【請求項１０】
前記スキャンチェーンを介して前記複数のフリップフロップの値をスキャンアウトして記憶部に記憶するステップと、
前記記憶部に記憶された前記複数のフリップフロップの値の少なくとも１つの値を反転して前記記憶部に記憶するステップと、
前記記憶部に記憶された値を前記スキャンチェーンを介してスキャンインし、前記複数のフリップフロップに設定するステップと、
をコンピュータに実行させることを特徴とする請求項９に記載の半導体装置の診断プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、半導体装置、半導体装置の診断方法、及び、半導体装置の診断プログラムに関する。
【背景技術】
【０００２】
自動車の機能安全規格を目的として、故障検出回路を搭載する半導体装置の需要が増加している。このような半導体装置を搭載したシステムは、故障を検出するハードウェアと、検出した故障の種類等に応じて各種の処理を実行するソフトウェアとを備えている。
【０００３】
ただし、これらのハードウェア及びソフトウェアが正常に機能するかは、通常、半導体装置に実際に故障が発生しなければ検証することができない。そのため、半導体装置の機能安全機構としてのハードウェア及びソフトウェアが正常に動作するかどうかを診断することが困難となっている。
【０００４】
そこで、半導体装置に強制的に疑似故障を発生させて、疑似故障を故障として検出することができるかを診断する手法が知られている。半導体装置に疑似故障を注入して機能安全機構の診断を行う手法として、テストポイント用フリップフロップを含む複数のテストポイントを設け、疑似故障を注入する手法が存在する。
【０００５】
しかしながら、テストポイントで活性化できる回路は全体の一部（具体的には、回路全体の２％程度）であることが知られている。そのため、テストポイントから疑似故障を注入する手法では、限定的な回路部分にしか疑似故障を発生させられないという問題があった。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１７−２１５６６５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
そこで、実施形態は、論理回路に対する疑似故障の注入による診断を新たな回路を追加することなく実施することができる半導体装置を提供することを目的とする。
【課題を解決するための手段】
【０００８】
実施形態の半導体装置は、主回路と、監視回路と、比較器と、ＤＦＴ制御回路とを有する。監視回路は、主回路と同じ回路構成を有する。比較器は、主回路の出力と前記監視回路の出力と比較する。ＤＦＴ制御回路は、主回路に設けられた複数のフリップフロップの値の内、少なくとも１つのフリップフロップの値を反転させ、スキャンチェーンを介して少なくとも１つのフリップフロップに反転させた値を設定する。
【図面の簡単な説明】
【０００９】
【図１】一実施形態に係る半導体装置の構成の一例を示すブロック図である。
【図２】故障検出回路モジュールの詳細な内部構成の一例を示すブロック図である。
【図３Ａ】疑似故障注入前のＲＡＭの値の一例を示す図である。
【図３Ｂ】疑似故障注入後のＲＡＭの値の一例を示す図である。
【図４】疑似故障による故障検出診断処理の流れの一例を示すフローチャートである。
【発明を実施するための形態】
【００１０】
以下、図面を参照して実施形態について詳細に説明する。  
まず、図１に基づき、一実施形態に係る半導体装置の構成を説明する。  
図１は、一実施形態に係る半導体装置の構成の一例を示すブロック図である。
【００１１】
本実施形態の半導体装置１は、中央処理装置（以下、ＣＰＵという）１１と、ＲＡＭ１２と、ＲＯＭ１３と、クロック制御回路１４と、ＤＦＴ（Design For Test）制御回路１５と、故障検出回路モジュール１６と、バス１７とを有して構成されている。ＣＰＵ１１、ＲＭＡ１２、ＲＯＭ１３、クロック制御回路１４、ＤＦＴ制御回路１５、及び、故障検出回路モジュール１６は、互いにバス１７を介して接続されている。
【００１２】
ＣＰＵ１１は、半導体装置１内の各回路を制御する制御回路である。ＣＰＵ１１は、ＲＭＡ１２に格納されている各種の動作プログラムを読み出し、ＲＯＭ１３上に展開して実行することで、半導体装置１内の各回路を制御する。特に、ＣＰＵ１１は、ＲＯＭ１３に格納された診断プログラム１３ａをＲＡＭ１２に展開して実行することで、後述する故障診断処理を実行することができる。
【００１３】
クロック制御回路１４は、通常動作用クロック（以下、単に通常クロックという）を生成し、ＤＦＴ制御回路１５及び故障検出回路モジュール１６に出力する。また、クロック制御回路１４は、故障検出回路モジュール１６への通常クロックの供給と、通常クロックの供給の停止を制御する。
【００１４】
ＤＦＴ制御回路１５は、スキャンチェーンで値をシフトするスキャンテスト用クロック（以下、単にスキャンクロックという）、スキャンチェーンにスキャンテスト用の値を入力するスキャンイン、通常動作とスキャン動作とを切り替えるスキャン選択信号を故障検出モジュール１６に出力する。また、ＤＦＴ制御回路１５は、スキャンチェーンから出力されたスキャンアウトが入力される。
【００１５】
故障検出回路モジュール１６は、故障を検出した際に故障検知アラーム信号をＣＰＵ１１に出力する。ＣＰＵ１１は、故障検知アラーム信号に基づいて、故障の種類に応じた処理を実行する。なお、図１では、故障検出回路モジュール１６は、故障検知アラーム信号をＣＰＵ１１にするように構成されているが、例えば、バス１７を介して故障検知アラーム信号をＣＰＵ１１に出力してもよい。
【００１６】
図２は、故障検出回路モジュールの詳細な内部構成の一例を示すブロック図である。  
図２に示すように、故障検出回路モジュール１６は、主回路２１と、アイソレーション素子２２と、故障検出機構２３とを有して構成されている。故障検出機構２３は、監視回路２４と、比較器２５とにより構成されている。
【００１７】
主回路２１は、組み合わせ回路３１、３２、フリップフロップ（以下、ＦＦという）３３、３４、３５、３６、スキャンセレクタ３７、３８、３９、４０、４１と有して構成されている。また、監視回路２４は、主回路２１と同じ回路構成になっている。
【００１８】
主回路２１及び監視回路２４には、バス１７を介して同じ入力信号（DATA_IN）が入力される。主回路２１の出力信号（DATA_OUT）は、バス１７に出力されるとともに、アイソレーション素子２２に入力される。監視回路２４の出力信号は、比較器２５に入力される。
【００１９】
アイソレーション素子２２は、主回路２１の出力信号をマスクすることができる。アイソレーション素子２２によってマスクが解除されると、主回路２１の出力信号が比較器２５に入力される。
【００２０】
比較器２５は、主回路２１の出力信号と監視回路２４の出力信号とを比較し、出力信号が一致していない場合、故障検知アラーム信号をＣＰＵ１１に出力する。
【００２１】
スキャンセレクタ３７は、スキャン選択信号（SCAN_SEL）に基づいて、通常クロック（CLK）と、スキャンクロック（SCAN_CLK）とを切り替えて出力するセレクタである。すなわち、本実施形態では、スキャン選択信号に基づいて、通常動作モードとスキャン動作モードとを切り替える。スキャン動作モードに切り替えることで、スキャンチェーン４２が構成される。
【００２２】
スキャンセレクタ３７によって選択された通常クロック、または、スキャンクロックは、ＦＦ３３〜３６に入力される。スキャンセレクタ３８〜４１は、スキャン選択信号に基づいて、通常回路からの入力と、スキャンチェーン４２からの入力と切り替えてＦＦ３３〜３６に出力するセレクタである。
【００２３】
ここで、故障注入の処理について図３Ａ及び図３Ｂを用いて説明する。  
図３Ａは、疑似故障注入前のＲＡＭの値の一例を示す図であり、図３Ｂは、疑似故障注入後のＲＡＭの値の一例を示す図である。
【００２４】
図３Ａのアドレス「０ｘ００００」の値は、疑似故障を発生させるＦＦの位置を示す疑似故障ＦＦ情報５０である。
【００２５】
本実施形態では、通常動作中に通常クロックを停止し、スキャン選択信号を有効にすることでスキャン動作モードとなる。これにより、通常動作中にＦＦ３３〜３６に保持されたデータ（ｂｉｔ値）がスキャンチェーン４２を介してシフトアウトされる。
【００２６】
図３Ａのアドレス「０ｘ１０００」の値は、スキャンチェーン４２でシフトアウトされたスキャンアウトデータ５１を示している。スキャンアウトデータ５１において、値５２はＦＦ３３のｂｉｔ値を示し、値５３はＦＦ３４のｂｉｔ値を示し、値５４はＦＦ３５のｂｉｔ値を示し、値５５はＦＦ３６のｂｉｔ値を示している。
【００２７】
ＣＰＵ１１は、疑似故障ＦＦ情報５０を参照し、疑似故障を注入する。具体的には、疑似故障ＦＦ情報５５が「１１」を示しているため、３番目のＦＦに疑似故障を注入する。本実施形態では、スキャンアウトから近いＦＦの順に１番目のＦＦ、２番目のＦＦ、・・・、とする。すなわち、本実施形態では、ＦＦ３３が１番目のＦＦ、ＦＦ３４が２番目のＦＦ、ＦＦ３５が３番目のＦＦ、ＦＦ３６が４番目のＦＦとなる。
【００２８】
ＣＰＵ１１は、疑似故障ＦＦ情報５０を参照し、３番目のＦＦであるＦＦ３５の値５４を読み出し、値を反転させて元の位置に書き込む。すなわち、ＦＦ３５の値５４が「１」であるため、値を反転させて「０」を元の位置に書き込むことになる。これにより、図３Ｂに示すように、疑似故障注入後のＲＡＭ１２には、３番目のＦＦ３５の値５４が「０」となる。
【００２９】
図３Ｂのアドレス「０ｘ１０００」の値は、スキャンチェーン４２でシフトインするためのスキャンインデータ５６を示している。スキャンインデータ５６は、スキャンチェーン４２を介して入力され、スキャンシフトされることにより、ＦＦ３３、ＦＦ３４、ＦＦ３５、ＦＦ３６にセットされる。
【００３０】
すなわち、ＦＦ３３に値５２のビット値である「１」、ＦＦ３４に値５３のビット値である「０」、ＦＦ３５に値５４のビット値である「０」、ＦＦ３６に値５５のビット値である「１」がセットされる。これにより、スキャンアウトから３番目に近いＦＦ３５に反転した値をセットし、疑似故障を注入する。
【００３１】
次に、このように構成された半導体装置１の故障検出診断処理について説明する。  
図４は、疑似故障による故障検出診断処理の流れの一例を示すフローチャートである。
【００３２】
なお、図４の処理は、ＣＰＵ１１がＲＯＭ１３に格納された診断プログラムをＲＡＭ１２に展開して実行することで実施される。
【００３３】
まず、ＣＰＵ１１は、クロック制御回路１４を制御し、故障検出回路モジュール１６に入力される通常クロックを停止させる（Ｓ１）。
【００３４】
次に、ＣＰＵ１１は、ＤＦＴ制御回路１５を制御し、主回路２１の出力をアイソレーション素子２２によってマスクし、スキャン選択信号の論理を変更する（Ｓ２）。これにより、故障検出モジュール１６内の主回路２１のスキャンセレクタ３７、３８、３９、４０、４１の出力を通常側からスキャンチェーン４２側に切り替えるとともに、ＦＦ３３〜３６に入力されるクロックが通常クロックからスキャンクロックに切り替わる。
【００３５】
次に、ＣＰＵ１１は、ＤＦＴ制御回路１５を制御し、スキャンチェーン４２でＦＦ３３〜ＦＦ３６から読み出した値をスキャンアウトデータ５１としてＲＡＭ１２に格納する（Ｓ３）。これにより、図３Ａに示すように、ＦＦ３３〜ＦＦ３６から読み出されたｂｉｔ値がスキャンアウトデータ５１としてＲＡＭ１２に格納されることになる。
【００３６】
次に、ＣＰＵ１１は、ＲＡＭ１２に予め格納されている疑似故障ＦＦ情報５０を読み出す（Ｓ４）。この疑似故障ＦＦ情報５０は、予め故障しやすいＦＦを示す値をＲＯＭ１３に記憶させておき、ＲＯＭ１３に記憶させた値を読み出しＲＡＭ１２に記憶させる方法でも良いし、半導体装置１の稼働状態や診断回数等に応じて、他のＦＦを示す値に変更しても良い。すなわち、ＲＡＭ１２に記憶されている疑似故障ＦＦ情報５０は、ユーザによって書き替え可能になっている。本実施形態では、図３Ａに示すように、スキャンアウトに近い方から３番目のＦＦ３５を示す疑似故障ＦＦ情報５０がＲＡＭ１２に記憶されている。
【００３７】
次に、ＣＰＵ１１は、スキャンインに入力するスキャンイン用のスキャンインデータ５６を作成する。具体的には、ＣＰＵ１１は、疑似故障ＦＦ情報５０の番号位置に相当するｂｉｔ値を読み出し、値を反転して同じ場所に書き戻す（Ｓ５）。これにより、図３Ｂに示すように、疑似故障ＦＦ情報５０の番号位置に相当する値５４（ＦＦ３５の値）のｂｉｔ値が１から０に書き替えられたスキャンインデータ５６が作成される。
【００３８】
次に、ＣＰＵ１１は、ＲＡＭ１２からスキャンインデータ５６を読み出し、スキャンチェーン４２でＦＦ３３〜ＦＦ３６にシフトインし、ＦＦ３３〜ＦＦ３６に値をセットする（Ｓ６）。
【００３９】
次に、ＣＰＵ１１は、スキャン選択信号の論理を変更し、主回路２１の出力をアイソレーション素子２２による主回路２１に出力のマスクを解除する（Ｓ７）。そして、ＣＰＵ１１は、クロック制御回路１４を制御し、通常クロックを再開させる（Ｓ８）。これにより、主回路２１からの出力、すなわち、疑似故障が注入された出力が比較器２５に入力されるようになる。
【００４０】
次に、ＣＰＵ１１は、故障検出機構２３が疑似故障を故障として検知するか否かを判定する（Ｓ９）。具体的には、ＣＰＵ１１は、比較器２５から故障検知アラーム信号が出力されたか否かによって、疑似故障を故障として検知するか否かを判定している。上述したように、疑似故障ＦＦ情報５０の番号位置に相当するＦＦ３５のｂｉｔ値が１から０に書き替えられた後、ＦＦ３５にセットされているため、主回路２１と監視回路２４との出力が一致しなくなる。そのため、故障検出機構２３が正常に動作している場合、比較器２５から故障検知アラーム信号がＣＰＵ１１に出力されることになる。
【００４１】
ＣＰＵ１１は、比較器２５から故障検知アラーム信号が出力された場合、すなわち、疑似故障を故障として検出した場合（Ｓ９：ＹＥＳ）、故障検出機構２３が正常に動作していると判断し（Ｓ１０）、疑似故障による故障検出診断の処理を終了する。なお、ＣＰＵ１１は、疑似故障が検出された場合、故障に応じたソフトウェア処理を実行し、正しくソフトウェア処理が実行されたかを検証する。
【００４２】
一方、ＣＰＵ１１は、比較器２５から故障検知アラーム信号が出力されない場合、すなわち、疑似故障を故障として検出していない場合（Ｓ９：ＮＯ）、故障検出機構２３が正常に動作していないと判断し（Ｓ１１）、疑似故障による故障検出診断の処理を終了する。
【００４３】
以上のように、主回路２１のスキャンチェーン４２を用いて主回路２１内のＦＦ３３〜ＦＦ３６の値をスキャンアウトしてＲＡＭ１２に記憶する。記憶したＦＦ３３〜ＦＦ３６の値の少なくとも１つを反転した後、スキャンチェーン４２を用いて主回路２１内のＦＦ３３〜ＦＦ３６にスキャンインすることで、任意のＦＦに疑似故障を注入するようにしている。
【００４４】
なお、本実施形態では、スキャンチェーン４２を用いて主回路２１内のＦＦ３３〜ＦＦ３６の値をスキャンアウトしてＲＡＭ１２に記憶した後、少なくとも１つの値を反転し、スキャンチェーン４２を用いて主回路２１内のＦＦ３３〜ＦＦ３６にスキャンインするようにしているが、これに限定されるものではない。例えば、ＦＦ３３〜ＦＦ３６の値（内部状態）が予め分かっている場合、ＦＦ３３〜ＦＦ３６の値の内、少なくとも１つのＦＦの値を反転させ、スキャンチェーン４２を介して少なくとも１つのＦＦに反転させた値を設定するようにしてもよい。
【００４５】
一般的に、大規模な半導体装置では、スキャンテストが実行できるように、回路内のＦＦが全てスキャン可能になるようＤＦＴ回路が組み込まれているため、既存のＤＦＴ回路を用いて任意のＦＦに疑似故障を注入することができる。
【００４６】
よって、本実施形態の半導体装置によれば、論理回路に対する疑似故障の注入による診断を新たな回路を追加することなく実施することができる。
【００４７】
なお、本明細書におけるフローチャート中の各ステップは、その性質に反しない限り、実行順序を変更し、複数同時に実行し、あるいは実行毎に異なった順序で実行してもよい。
【００４８】
発明のいくつかの実施の形態を説明したが、これらの実施の形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施の形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施の形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００４９】
１…半導体装置、１１…ＣＰＵ、１２…ＲＡＭ、１３…ＲＯＭ、１３ａ…診断プログラム、１４…クロック制御回路、１５…ＤＦＴ制御回路、１６…故障検出モジュール、１７…バス、２１…主回路、２２…アイソレーション素子、２３…故障検出機構、２４…監視回路、２５…比較器、３１，３２…組み合わせ回路、３３〜３６…ＦＦ、３７〜４１…スキャンセレクタ、４２…スキャンチェーン、５０…疑似故障ＦＦ情報、５１…スキャンアウトデータ、５２〜５５…値、５６…スキャンインデータ。
【図１】
2020153867.tif 000003
【図２】
2020153867.tif 000004
【図３Ａ】
2020153867.tif 000005
【図３Ｂ】
2020153867.tif 000006
【図４】
2020153867.tif 000007