(57)【要約】【課題】内部の擬似エラーを容易に生成させることが可能な半導体装置を提供する。【解決手段】エラー検出回路ＥＲＤＥＴ１〜ＥＲＤＥＴｉは、半導体装置ＤＥＶ１内で生じたエラーを検出し、当該検出結果となるエラー信号ＥＲ１〜ＥＲｉを出力する。エラー注入回路ＥＲＩＮは、予め定めたタイミングで予め定めたエラー信号ＴＥＲ１〜ＴＥＲｉを出力する。選択回路ＳＥＬ１は、モード信号ＳＭＯＤに応じてエラー検出回路の出力かエラー注入回路の出力の一方を選択し、当該選択した出力をエラーレジスタＥＲＲＥＧの出力として定める。【選択図】図１
2017151785.tif 000002
【特許請求の範囲】
【請求項１】
一個の半導体チップで構成される半導体装置であって、
前記半導体装置内で生じたエラーを検出し、当該検出結果となる第１のエラー信号を出力するエラー検出回路と、
予め定めたタイミングで予め定めた第２のエラー信号を出力するエラー注入回路と、
エラーレジスタと、
モード信号に応じて前記エラー検出回路の出力か前記エラー注入回路の出力の一方を選択し、当該選択した出力を前記エラーレジスタの出力として定める選択回路と、
を有する半導体装置。
【請求項２】
請求項１記載の半導体装置において、
前記半導体装置は、
本体プログラムを保持するメモリ回路と、
前記本体プログラムを実行するプロセッサ回路と、
を有する半導体装置。
【請求項３】
請求項２記載の半導体装置において、
前記エラー注入回路は、
前記予め定めたタイミングでトリガ信号を生成するトリガ生成回路と、
前記トリガ信号に応じて前記第２のエラー信号を出力するエラー信号生成回路と、
を有し、
前記トリガ生成回路は、
前記プロセッサ回路のプログラムカウンタの値と予め定めたプログラムカウンタ設定値とが一致した場合にプログラムカウンタ一致信号を出力するプログラムカウンタ監視回路と、
タイマ起動信号に応じてタイマ動作を開始し、予め定めたタイマ設定値に到達した際にタイマ一致信号を出力するタイマ回路と、
を有する半導体装置。
【請求項４】
請求項３記載の半導体装置において、
前記半導体装置は、外部トリガ信号が入力される外部端子を有し、
前記トリガ生成回路は、前記プログラムカウンタ一致信号、前記タイマ一致信号、前記外部トリガ信号の少なくとも一つに基づいて前記トリガ信号を生成する、
半導体装置。
【請求項５】
請求項３記載の半導体装置において、
前記タイマ起動信号は、前記プログラムカウンタ一致信号である、
半導体装置。
【請求項６】
請求項３記載の半導体装置において、
前記エラー注入回路は、
前記プログラムカウンタ設定値を定めるプログラムカウンタ設定レジスタと、
前記タイマ設定値を定めるタイマ設定レジスタと、
前記第２のエラー信号を定めるデータ設定レジスタと、
を有する、
半導体装置。
【請求項７】
請求項１記載の半導体装置において、
前記エラー検出回路は、前記半導体装置内の故障を前記エラーとして検出する、
半導体装置。
【請求項８】
請求項１記載の半導体装置において、
前記エラー検出回路は、前記半導体装置内の不正アクセスを前記エラーとして検出する、
半導体装置。
【請求項９】
一個の半導体チップで構成される半導体装置であって、
バスと、
前記バスに結合され、いずれかがプロセッサ回路である複数の内部回路と、
前記プロセッサ回路で実行される本体プログラムを保持するメモリ回路と、
前記複数の内部回路で生じたエラーを検出し、当該検出結果となる第１のエラー信号を出力する複数のエラー検出回路と、
初期値としてエラー無しを表す信号を出力し、予め定めたタイミングで予め定めた第２のエラー信号を出力するエラー注入回路と、
エラーレジスタと、
前記複数のエラー検出回路の出力と前記エラー注入回路の出力とが入力され、モード信号に応じていずれか一方の出力を選択し、当該選択した出力を前記エラーレジスタに書き込む選択回路と、
を有する半導体装置。
【請求項１０】
請求項９記載の半導体装置において、
前記半導体装置は、前記モード信号を外部から入力するための外部端子を備える、
半導体装置。
【請求項１１】
請求項９記載の半導体装置において、
前記エラー注入回路は、
前記予め定めたタイミングでトリガ信号を生成するトリガ生成回路と、
前記トリガ信号に応じて前記第２のエラー信号を出力するエラー信号生成回路と、
を有し、
前記トリガ生成回路は、
前記プロセッサ回路のプログラムカウンタの値と予め定めたプログラムカウンタ設定値とが一致した場合にプログラムカウンタ一致信号を出力するプログラムカウンタ監視回路と、
タイマ起動信号に応じてタイマ動作を開始し、予め定めたタイマ設定値に到達した際にタイマ一致信号を出力するタイマ回路と、
を有する半導体装置。
【請求項１２】
請求項１１記載の半導体装置において、
前記エラー注入回路は、
前記プログラムカウンタ設定値を定めるプログラムカウンタ設定レジスタと、
前記タイマ設定値を定めるタイマ設定レジスタと、
前記第２のエラー信号を定めるデータ設定レジスタと、
を有する、
半導体装置。
【請求項１３】
請求項１２記載の半導体装置において、
前記プログラムカウンタ設定レジスタ、前記タイマ設定レジスタおよび前記データ設定レジスタは、スキャンチェーンで結合され、
前記半導体装置は、前記スキャンチェーンにアクセスするＪＴＡＧ（Joint Test Action Group）用の外部端子を有する、
半導体装置。
【請求項１４】
請求項１２記載の半導体装置において、
前記エラー注入回路は、前記バスを介して前記プロセッサ回路に結合され、
前記メモリ回路は、
テスト用初期データと、
前記プロセッサ回路に、前記テスト用初期データを前記プログラムカウンタ設定レジスタ、前記タイマ設定レジスタ、前記データ設定レジスタに書き込ませるためのテスト用初期化プログラムと、
を有する、
半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、例えば、機能安全のテストに伴うエラー発生機能を備える半導体装置に関する。
【背景技術】
【０００２】
例えば、特許文献１には、ＬＳＩ（Large Scale Integration）内部のクリップや、狙ったタイミングでのクリップを可能とするエラー発生方法が示される。具体的には、ＬＳＩは、ＭＰＵと、ＭＰＵからアクセス可能な診断レジスタと、診断レジスタの値に基づきエラーを生成するエラー生成回路とを備える。ＭＰＵは、外部装置から所定のタイミングで診断レジスタの書き込み命令を受け、当該命令を実行することでエラー生成回路に擬似エラーを発生させる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平５−１７３８２９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特に、高い信頼性が要求されるシステムでは、機能安全と呼ばれる仕組みが適用される。機能安全（具体的にはフェイルセーフ機能）が適用されるシステムは、例えば、システム内部でエラーが発生した場合であっても、エラーの種類等に応じた各種安全動作を実行することで、重大な問題が生じる事態を回避することができる。このような機能安全が正常に働くことを保証するためには、システム内部にエラーを注入し、その後の動作を確認するようなテストが必要となる。
【０００５】
ここで、システムがＬＳＩを含む場合、機能安全のテストを実行するためには、ＬＳＩの内部にエラーを注入することが求められる。このような要求を満たすため、例えば、特許文献１に示されるように、ＬＳＩ自体に内部の擬似エラーを生成させる方式を用いることが考えられる。しかし、当該方式では、擬似エラーの生成に伴い複雑な仕組みが必要とされる恐れがある。
【０００６】
後述する実施の形態は、このようなことを鑑みてなされたものであり、その他の課題と新規な特徴は、本明細書の記述及び添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態による半導体装置は、一個の半導体チップで構成され、エラー検出回路と、エラー注入回路と、エラーレジスタと、選択回路とを有する。エラー検出回路は、半導体装置内で生じたエラーを検出し、当該検出結果となる第１のエラー信号を出力する。エラー注入回路は、予め定めたタイミングで予め定めた第２のエラー信号を出力する。選択回路は、モード信号に応じてエラー検出回路の出力かエラー注入回路の出力の一方を選択し、当該選択した出力をエラーレジスタの出力として定める。
【発明の効果】
【０００８】
前記一実施の形態によれば、半導体装置に、内部の擬似エラーを容易に生成させることが可能になる。
【図面の簡単な説明】
【０００９】
【図１】本発明の実施の形態１による半導体装置の構成例を示す概略図である。
【図２Ａ】図１の半導体装置の主要な動作例を示すフロー図である。
【図２Ｂ】図１の半導体装置の主要な動作例を示すフロー図である。
【図３】図１の半導体装置がマイクロコントローラである場合の構成例を示すブロック図である。
【図４】図３のマイクロコントローラにおいて、エラー注入回路の構成例を示す回路ブロック図である。
【図５】図４におけるトリガ生成回路の構成例を示す回路ブロック図である。
【図６】図４および図５のエラー注入回路におけるレジスタ設定方式の一例を示す概略図である。
【図７】図３のマイクロコントローラにおいて、エラーレジスタの構造例を示す概略図である。
【図８】図１の半導体装置において、機能安全のテストに伴う内部処理のタイミングの一例を示す概略図である。
【図９】本発明の実施の形態２による半導体装置（マイクロコントローラ）の構成例を示すブロック図である。
【図１０】本発明の実施の形態３による半導体装置において、その適用例となる電子制御装置の構成例および車両装置の構成例を示す概略図である。
【図１１】本発明の実施の形態４による半導体装置において、半導体装置周りの構成例を示すブロック図である。
【図１２】本発明の実施の形態５による半導体装置の構成例を示す概略図である。
【図１３】本発明の比較例として検討した半導体装置の構成例を示す概略図である。
【発明を実施するための形態】
【００１０】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらは互いに無関係なものではなく、一方は他方の一部または全部の変形例、詳細、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でも良い。
【００１１】
さらに、以下の実施の形態において、その構成要素（要素ステップ等も含む）は、特に明示した場合および原理的に明らかに必須であると考えられる場合等を除き、必ずしも必須のものではないことは言うまでもない。同様に、以下の実施の形態において、構成要素等の形状、位置関係等に言及するときは、特に明示した場合および原理的に明らかにそうでないと考えられる場合等を除き、実質的にその形状等に近似または類似するもの等を含むものとする。このことは、上記数値および範囲についても同様である。
【００１２】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１３】
（実施の形態１）
《半導体装置の概略構成》
図１は、本発明の実施の形態１による半導体装置の構成例を示す概略図である。図１に示す半導体装置ＤＥＶ１は、一個の半導体チップで構成され、複数の外部端子ＰＮと各種回路とを備える。複数の外部端子の中には、図示しない外部の装置に向けて制御信号ＳＣＴＬを出力する外部端子ＰＮ（ＳＣＴＬ）と、図示しない外部の各種センサ回路からのセンサ信号ＳＳＥＮが入力される外部端子ＰＮ（ＳＳＥＮ）と、モード信号ＳＭＯＤが入力される外部端子ＰＮ（ＳＭＯＤ）とが含まれる。モード信号ＳＭＯＤは、通常動作用の論理レベル（以降、通常用レベルと呼ぶ）かテスト用の論理レベル（以降、テスト用レベルと呼ぶ）に設定される。
【００１４】
各種回路の中には、内部回路ブロックＩＮＣＢＫと、エラー注入回路ＥＲＩＮと、エラー処理回路ＥＲＰＣと、選択回路ＳＥＬ１，ＳＥＬ２と、エラー時制御回路ＥＲＣＴＬとが含まれる。内部回路ブロックＩＮＣＢＫは、センサ信号ＳＳＥＮを受けて所定の処理を行う複数（ここではｉ個）の内部回路ＩＮＣ１〜ＩＮＣｉを備える。内部回路ブロックＩＮＣＢＫは、当該各内部回路ＩＮＣ１〜ＩＮＣｉの処理結果に基づき通常時制御信号ＮＣＴＬを出力する。
【００１５】
内部回路ＩＮＣ１〜ＩＮＣｉは、それぞれ、エラー検出回路ＥＲＤＥＴ１〜ＥＲＤＥＴｉを備える。エラー検出回路ＥＲＤＥＴ１〜ＥＲＤＥＴｉは、内部回路ＩＮＣ１〜ＩＮＣｉで生じたエラー（例えば故障）を検出し、当該検出結果となるエラー信号ＥＲ１〜ＥＲｉを出力する。例えば、エラー検出回路ＥＲＤＥＴ１は、内部回路ＩＮＣ１のエラーを検出した場合に所定ビット数（例えば、１ビットまたは数ビット）のエラー信号ＥＲ１を出力し、エラー検出回路ＥＲＤＥＴｉは、内部回路ＩＮＣｉのエラーを検出した場合に所定ビット数のエラー信号ＥＲｉを出力する。
【００１６】
エラー注入回路ＥＲＩＮは、予め定めたタイミングでトリガ信号ＴＲＧを生成するトリガ生成回路ＴＲＧＧと、トリガ信号ＴＲＧに応じてテスト用のエラー信号ＴＥＲ１〜ＴＥＲｉを出力するエラー信号生成回路ＴＥＲＧとを備える。エラー注入回路ＥＲＩＮは、モード信号ＳＭＯＤがテスト用レベルの場合に動作し、トリガ生成回路ＴＲＧＧおよびエラー信号生成回路ＴＥＲＧを用いて、予め定めたタイミングで予め定めたテスト用のエラー信号ＴＥＲ１〜ＴＥＲｉを出力する。
【００１７】
エラー処理回路ＥＲＰＣは、内部回路ブロックＩＮＣＢＫで生じた各種エラー信号を保持するためのエラーレジスタＥＲＲＥＧと、エラーレジスタＥＲＲＥＧの保持内容（すなわちエラー内容）を判別し、エラー内容に応じた各種エラー出力を行うエラー出力処理回路ＥＲＯＴとを備える。エラー出力の中には、例えば、内部回路ブロックＩＮＣＢＫで比較的重大なエラーが生じた場合に出力される制御切り換え信号ＣＳＷが含まれる。
【００１８】
選択回路ＳＥＬ１は、モード信号ＳＭＯＤに応じて、エラー検出回路の出力（すなわちエラー信号ＥＲ１〜ＥＲｉ）かエラー注入回路の出力（すなわちテスト用のエラー信号ＴＥＲ１〜ＴＥＲｉ）の一方を選択し、当該選択した出力をエラーレジスタＥＲＲＥＧの出力として定める。具体的には、選択回路ＳＥＬ１は、エラー検出回路ＥＲＤＥＴ１〜ＥＲＤＥＴｉの出力とエラー注入回路ＥＲＩＮの出力とが入力され、モード信号ＳＭＯＤが通常用レベルの場合にはエラー検出回路の出力を選択し、テスト用レベルの場合にはエラー注入回路の出力を選択し、当該選択した出力をエラーレジスタＥＲＲＥＧに書き込む。
【００１９】
エラー時制御回路ＥＲＣＴＬは、例えば、内部回路ブロックＩＮＣＢＫで比較的重大なエラーが生じた場合に安全動作を行うためのエラー時制御信号ＥＣＴＬを出力する。特に限定はされないが、例えば、通常時制御信号ＮＣＴＬは、センサ信号ＳＳＥＮからのフィードバックに基づく閉ループの制御信号であるのに対して、エラー時制御信号ＥＣＴＬは、このようなフィードバックを介さない開ループの制御信号である。
【００２０】
選択回路ＳＥＬ２は、制御切り換え信号ＣＳＷに応じて通常時制御信号ＮＣＴＬかエラー時制御信号ＥＣＴＬの一方を選択し、当該選択した信号を制御信号ＳＣＴＬとして外部端子ＰＮ（ＳＣＴＬ）へ出力する。具体的には、選択回路ＳＥＬ２は、制御切り換え信号ＣＳＷが出力されていない（言い換えればネゲートされている）場合には通常時制御信号ＮＣＴＬを出力し、制御切り換え信号ＣＳＷが出力されている（言い換えればアサートされている）場合にはエラー時制御信号ＥＣＴＬを出力する。
【００２１】
《半導体装置の概略動作》
図２Ａおよび図２Ｂは、図１の半導体装置の主要な動作例を示すフロー図である。図２Ａにおいて、例えば、図１の半導体装置ＤＥＶ１を含んだシステムを構築するシステム開発者等は、外部端子ＰＮ（ＳＭＯＤ）のモード信号ＳＭＯＤをテスト用レベル（ここでは‘１’）または通常用レベル（ここでは‘０’）に定めた状態で半導体装置ＤＥＶ１を起動する。半導体装置ＤＥＶ１は、起動した際に、モード信号ＳＭＯＤがテスト用レベルの場合、図２ＡのステップＳ１０２の処理へ移行し、モード信号ＳＭＯＤが通常用レベルの場合、図２ＢのステップＳ１１１の処理へ移行する。
【００２２】
図２ＡのステップＳ１０２において、選択回路ＳＥＬ１は、エラーレジスタＥＲＲＥＧにエラー注入回路ＥＲＩＮの出力（すなわちテスト用のエラー信号ＴＥＲ１〜ＴＥＲｉ）を結合する。この状態で、内部回路ブロックＩＮＣＢＫは通常動作を開始し、通常時制御信号ＮＣＴＬの出力を開始する（ステップＳ１０３）。一方、これと並行して、エラー注入回路ＥＲＩＮは、テスト用のエラー信号ＴＥＲ１〜ＴＥＲｉとして初期値（具体的にはエラー無しを表す信号）を出力した状態で、トリガ生成回路ＴＲＧＧを用いて予め定めたトリガ条件が成立したか否かを判定する（ステップＳ１０４）。
【００２３】
ステップＳ１０４で予め定めたトリガ条件が成立した場合、エラー注入回路ＥＲＩＮは、エラーレジスタＥＲＲＥＧにエラーを注入する（ステップＳ１０５）。具体的には、エラー注入回路ＥＲＩＮは、エラー信号生成回路ＴＥＲＧを用いて予め定めたテスト用のエラー信号ＴＥＲ１〜ＴＥＲｉを出力し、それを選択回路ＳＥＬ１を介してエラーレジスタＥＲＲＥＧに書き込む。その後、半導体装置ＤＥＶ１は、ステップＳ１０６の処理へ移行する。一方、ステップＳ１０４で予め定めたトリガ条件が成立しない場合、半導体装置ＤＥＶ１は、ステップＳ１０５の処理を経ずにステップＳ１０６の処理へ移行する。
【００２４】
ステップＳ１０６において、選択回路ＳＥＬ２は、制御切り換え信号ＣＳＷがアサート（ここでは‘１’）かネゲート（ここでは‘０’）かを判別し、アサートの場合、エラー時制御信号ＥＣＴＬを外部端子ＰＮ（ＳＣＴＬ）へ出力する（ステップＳ１０７）。すなわち、エラー出力処理回路ＥＲＯＴがエラーレジスタＥＲＲＥＧの保持内容に応じて制御切り換え信号ＣＳＷをアサートした場合、エラー時制御信号ＥＣＴＬが外部に出力される。一方、選択回路ＳＥＬ２は、制御切り換え信号ＣＳＷがネゲートの場合、通常時制御信号ＮＣＴＬを外部端子ＰＮ（ＳＣＴＬ）へ出力する（ステップＳ１０８）。その後、半導体装置ＤＥＶ１は、システム開発者等がテストを終了するまでステップＳ１０４に戻って処理を繰り返す（ステップＳ１０９）。
【００２５】
一方、図２ＢのステップＳ１１１において、選択回路ＳＥＬ１は、エラーレジスタＥＲＲＥＧに内部回路ブロックＩＮＣＢＫの出力（すなわちエラー信号ＥＲ１〜ＥＲｉ）を結合する。この状態で、内部回路ブロックＩＮＣＢＫは通常動作を開始し、通常時制御信号ＮＣＴＬの出力を開始する（ステップＳ１１２）。
【００２６】
次いで、選択回路ＳＥＬ２は、制御切り換え信号ＣＳＷがアサート（ここでは‘１’）かネゲート（ここでは‘０’）かを判別し、アサートの場合、エラー時制御信号ＥＣＴＬを外部端子ＰＮ（ＳＣＴＬ）へ出力する（ステップＳ１１５）。すなわち、内部回路ブロックＩＮＣＢＫの動作中にエラー検出回路ＥＲＤＥＴ１〜ＥＲＤＥＴｉがエラーを検出し、これに応じてエラー出力処理回路ＥＲＯＴが制御切り換え信号ＣＳＷをアサートした場合、エラー時制御信号ＥＣＴＬが外部に出力される。
【００２７】
一方、選択回路ＳＥＬ２は、制御切り換え信号ＣＳＷがネゲートの場合、通常時制御信号ＮＣＴＬを外部端子ＰＮ（ＳＣＴＬ）へ出力する（ステップＳ１１４）。その後、半導体装置ＤＥＶ１は、所定の動作を終了するまでステップＳ１１３に戻って処理を繰り返す（ステップＳ１１６）。
【００２８】
《マイクロコントローラの構成》
図３は、図１の半導体装置がマイクロコントローラである場合の構成例を示すブロック図である。図３のマイクロコントローラ（半導体装置）ＭＣＵ１において、プロセッサ回路ＣＰＵ、ＢＩＳＴ（Built In Self Test）回路ＢＩＳＴＣ、揮発性メモリ回路ＲＡＭ、および制御信号インタフェース回路ＣＴＬＩＦは、バスＢＳに結合される。この内、プロセッサ回路ＣＰＵ、ＢＩＳＴ（Built In Self Test）回路ＢＩＳＴＣ、および揮発性メモリ回路ＲＡＭのそれぞれは、図１に示したエラー検出回路を備える内部回路ＩＮＣ１〜ＩＮＣｉに該当する。
【００２９】
プロセッサ回路ＣＰＵは、この例では、マスタコアＭＣＲ、チェッカコアＣＣＲおよびエラー検出回路ＥＲＤＥＴｃを備えるロックステップデュアルコアとなっている。マスタコアＭＣＲおよびチェッカコアＣＣＲは、共に、フラッシュメモリ等の不揮発性メモリ回路ＲＯＭが保持する本体プログラムＭＲＰＧを実行する。エラー検出回路ＥＲＤＥＴｃは、マスタコアＭＣＲの実行結果とチェッカコアＣＣＲの実行結果とを比較し、比較結果が同一であればマスタコアＭＣＲの実行結果を正常と判定する。一方、エラー検出回路ＥＲＤＥＴｃは、比較結果が異なる場合は、マスタコアＭＣＲの実行結果を異常と判定し、エラー信号ＥＲ１を出力する（言い換えればアサートする）。
【００３０】
揮発性メモリ回路ＲＡＭは、例えば、ＳＲＡＭ（Static RAM）やＤＲＡＭ（Dynamic RAM）等のメモリハードマクロＭＥＭＨＭと、エラー検出回路ＥＲＤＥＴｍとを備える。エラー検出回路ＥＲＤＥＴｍは、メモリハードマクロＭＥＭＨＭへのアクセスデータに対してＥＣＣ（Error Correcting Code）等を用いてエラー検出およびエラー訂正を実行する。エラー検出回路ＥＲＤＥＴｍは、エラー検出を行った場合には、エラー信号ＥＲ２を出力する。揮発性メモリ回路ＲＡＭは、例えば、プロセッサ回路ＣＰＵのワーク用メモリを代表に各種用途で使用される。
【００３１】
ＢＩＳＴ回路ＢＩＳＴＣは、ロジックテスト回路ＬＢＩＳＴと、メモリテスト回路ＭＢＩＳＴと、エラー検出回路ＥＲＤＥＴｂとを備える。ロジックテスト回路ＬＢＩＳＴは、マイクロコントローラＭＣＵ１内の各種ロジック回路をバスＢＳを介してテストし、メモリテスト回路ＭＢＩＳＴは、マイクロコントローラＭＣＵ１内の各種メモリ回路をバスＢＳを介してテストする。エラー検出回路ＥＲＤＥＴｂは、各テスト回路でのテスト結果が不良の場合にはエラー信号ＥＲ３を出力する。ＢＩＳＴ回路ＢＩＳＴＣは、例えば、マイクロコントローラＭＣＵ１の起動時の自己診断回路として用いられる。
【００３２】
また、マイクロコントローラＭＣＵ１は、図１に示したモード信号ＳＭＯＤ用の外部端子ＰＮ（ＳＭＯＤ）および制御信号ＳＣＴＬ用の外部端子ＰＮ（ＳＣＴＬ）に加えて、外部端子ＰＮ（ＥＮＡ），ＰＮ（ＪＴＡＧ），ＰＮ（ＴＲＧＩＮ），ＰＮ（ＥＲＦＬＧ）を備える。外部端子ＰＮ（ＥＮＡ）には、マイクロコントローラＭＣＵ１（具体的には、例えばプロセッサ回路ＣＰＵ）の起動信号ＥＮＡが入力され、外部端子ＰＮ（ＴＲＧＩＮ）には、外部トリガ信号ＴＲＧＩＮが入力される。外部端子ＰＮ（ＥＲＦＬＧ）は、エラーフラグ信号ＥＲＦＬＧを出力する。
【００３３】
外部端子ＰＮ（ＪＴＡＧ）は、ＪＴＡＧ（Joint Test Action Group）信号用の外部端子であり、ＴＤＩ（Test Data In）端子、ＴＤＯ（Test Data Out)端子、ＴＣＫ（Test Clock）端子、ＴＭＳ（Test Mode Select）端子、ＴＲＳＴ（Test Reset）端子で構成される。また、図示は省略されているが、マイクロコントローラＭＣＵ１は、実際には、図１のセンサ信号ＳＳＥＮ用の外部端子ＰＮも備えている。当該センサ信号ＳＳＥＮは、例えば、バスＢＳを介してプロセッサ回路ＣＰＵ等に入力される。
【００３４】
プロセッサ回路ＣＰＵは、本体プログラムＭＰＲＧに基づき、当該センサ信号ＳＳＥＮ等に応じた制御信号を生成し、当該制御信号をバスＢＳを介して制御信号インタフェース回路ＣＴＬＩＦへ出力する。制御信号インタフェース回路ＣＴＬＩＦは、当該プロセッサ回路ＣＰＵからの制御信号を受けて、通常時制御信号ＮＣＴＬを出力する。この際に、制御信号インタフェース回路ＣＴＬＩＦは、例えば、プロセッサ回路ＣＰＵからの制御信号に対し、フォーマット変換やタイミング調整等を行うことで通常時制御信号ＮＣＴＬを生成する処理や、場合によっては、予め定められた演算を行うことで通常時制御信号ＮＣＴＬを生成する処理等を行う。
【００３５】
エラー注入回路ＥＲＩＮは、図１の場合と同様に、トリガ生成回路ＴＲＧＧおよびエラー信号生成回路ＴＥＲＧを備え、テスト用のエラー信号ＴＥＲ１〜ＴＥＲ３を出力する。この例では、エラー注入回路ＥＲＩＮには、モード信号ＳＭＯＤに加えて、起動信号ＥＮＡ、プログラムカウンタＰＣ、ＪＴＡＧ信号および外部トリガ信号ＴＲＧＩＮが入力される。プログラムカウンタＰＣは、プロセッサ回路ＣＰＵ（例えば、マスタコアＭＣＲ）のプログラム実行番地を表す。
【００３６】
選択回路ＳＥＬ１ａ〜ＳＥＬ１ｃは、図１の選択回路ＳＥＬ１に該当し、モード信号ＳＭＯＤに応じて各エラー検出回路ＥＲＤＥＴｃ，ＥＲＤＥＴｍ，ＥＲＤＥＴｂの出力かエラー注入回路ＥＲＩＮの出力の一方を選択し、それをエラー処理回路ＥＲＰＣのエラーレジスタＥＲＲＥＧに書き込む。エラー処理回路ＥＲＰＣのエラー出力処理回路ＥＲＯＴは、図１の場合と同様の制御切り換え信号ＣＳＷに加えて、リセット信号ＲＳＴ、割り込み信号ＩＮＴＣおよびエラーフラグ信号ＥＲＦＬＧを出力する。リセット信号ＲＳＴおよび割り込み信号ＩＮＴＣは、例えば、プロセッサ回路ＣＰＵに入力される。
【００３７】
選択回路ＳＥＬ２は、図１の場合と同様に、通常時制御信号ＮＣＴＬか、エラー時制御回路ＥＣＴＬからのエラー時制御信号ＥＣＴＬの一方を制御切り換え信号ＣＳＷに応じて選択し、それを制御信号ＳＣＴＬとして出力する。例えば、外部端子ＰＮ（ＳＣＴＬ）の先には、制御対象となるプラントが結合される。当該プラントは、制御信号ＳＣＴＬに基づいて動作し、図示しないセンサ回路等は、当該プラントの動作に伴う各種変位量を検出し、その検出結果となるセンサ信号ＳＳＥＮを出力する。
【００３８】
ここで、エラー出力処理回路ＥＲＯＴは、例えば、エラーレジスタＥＲＲＥＧの保持内容に基づいて認識したエラーが比較的軽微なエラーの場合には、リセット信号ＲＳＴやエラーフラグ信号ＥＲＦＬＧを出力する（言い換えればアサートする）。プロセッサ回路ＣＰＵは、当該リセット信号ＲＳＴに応じてリセットされ、外部のプラント等は、エラーフラグ信号ＥＲＦＬＧに応じて所定のエラー処理を行う。
【００３９】
一方、エラー出力処理回路ＥＲＯＴは、エラーレジスタＥＲＲＥＧの保持内容に基づいて認識したエラーが比較的重大なエラーの場合には、制御切り換え信号ＣＳＷやエラーフラグ信号ＥＲＦＬＧを出力する。制御切り換え信号ＣＳＷが出力されると、外部端子ＰＮ（ＳＣＴＬ）からは、通常時制御信号ＮＣＴＬに代わってエラー時制御信号ＥＣＴＬが出力される。
【００４０】
エラー時制御回路ＥＣＴＬは、具体的には、専用のハードウェアで構成される場合や、プロセッサ回路ＣＰＵによるプログラム処理で実装される場合等がある。プログラム処理で実装される場合、例えば、不揮発性メモリ回路ＲＯＭは、エラー時制御信号ＥＣＴＬを生成および出力するための割り込み処理プログラムを保持する。エラー出力処理回路ＥＲＯＴは、前述した比較的重大なエラーが発生した場合、当該割り込み処理プログラムを実行させるための割り込み信号ＩＮＴＣを出力する。なお、エラーレジスタＥＲＲＥＧの保持内容と、エラー出力処理回路ＥＲＯＴの各出力との組合せは、勿論このような例に限らずに適宜定められればよい。この際には、システム開発者等が組合せを任意に設定できるように、エラー出力処理回路ＥＲＯＴを構成することも可能である。
【００４１】
《エラー注入回路の詳細》
図４は、図３のマイクロコントローラにおいて、エラー注入回路の構成例を示す回路ブロック図である。図４のエラー注入回路ＥＲＩＮにおいて、トリガ生成回路ＴＲＧＧは、プログラムカウンタ（ＰＣと略す場合有り）監視回路ＰＣＭＮＩと、タイマ回路ＴＭＲと、トリガ出力回路ＴＲＧＯとを備える。ＰＣ監視回路ＰＣＭＮＩは、プロセッサ回路ＣＰＵのプログラムカウンタＰＣの値と予め定めたプログラムカウンタ設定値とが一致した場合にプログラムカウンタ一致信号ＰＣＨを出力する。
【００４２】
タイマ回路ＴＭＲは、所定のタイマ起動信号に応じてタイマ動作を開始し、予め定めたタイマ設定値に到達した際にタイマ一致信号ＴＭＨを出力する。トリガ出力回路ＴＲＧＯは、プログラムカウンタ一致信号ＰＣＨ、タイマ一致信号ＴＭＨ、外部端子ＰＮ（ＴＲＧＩＮ）からの外部トリガ信号ＴＲＧＩＮの少なくとも一つに基づいてトリガ信号ＴＲＧを生成する。詳細は後述するが、トリガ出力回路ＴＲＧＯは、これらの各信号の組合せに基づいてトリガ信号ＴＲＧを生成することも可能である。
【００４３】
エラー信号生成回路ＴＥＲＧは、レジスタ制御回路ＲＥＧＣＴと、単数または複数（ここではｋ個）のデータ設定レジスタＤＲＥＧ１〜ＤＲＥＧｋを含むデータ設定レジスタブロックＤＲＥＧＢＫと、データ出力レジスタＤＲＥＧＯとを備える。データ設定レジスタＤＲＥＧ１〜ＤＲＥＧｋのそれぞれは、テスト用のエラー信号ＴＥＲ１〜ＴＥＲｉを定める。データ出力レジスタＤＲＥＧＯは、テスト用のエラー信号ＴＥＲ１〜ＴＥＲｉを実際に出力する。
【００４４】
レジスタ制御回路ＲＥＧＣＴは、例えば、モード信号ＳＭＯＤに応じて、初期化信号ＩＮＩＴを用いてデータ出力レジスタＤＲＥＧＯの値を初期化する。これによって、エラー信号生成回路ＴＥＲＧは、初期値としてエラー無しを表す信号（言い換えれば、ネゲートされたテスト用のエラー信号ＴＥＲ１〜ＴＥＲｉ）を出力する。また、レジスタ制御回路ＲＥＧＣＴは、トリガ信号ＴＲＧに応じて、例えば、ロードイネーブル信号ＬＥ１〜ＬＥｋを用いてデータ設定レジスタＤＲＥＧ１〜ＤＲＥＧｋのいずれかの値（例えばＤＲＥＧ１の値）をデータ出力レジスタＤＲＥＧＯにロードする。
【００４５】
あるいは、レジスタ制御回路ＲＥＧＣＴは、トリガ信号ＴＲＧが入力される毎に、複数のデータ設定レジスタＤＲＥＧ１〜ＤＲＥＧｋの値を順番にデータ出力レジスタＤＲＥＧＯにロードする。このように、レジスタ制御回路ＲＥＧＣＴは、テスト用のエラー信号ＴＥＲ１〜ＴＥＲｉを出力する際のシーケンス制御を行う。ただし、当該シーケンス制御の内容は、前述したような例に特に限定されるものではなく、具体的なテスト仕様等に応じて適宜定められる。
【００４６】
図５は、図４におけるトリガ生成回路の構成例を示す回路ブロック図である。図５のトリガ生成回路ＴＲＧＧにおいて、ＰＣ監視回路ＰＣＭＮＩは、例えば、単数または複数（ここではｊ個）のＰＣ設定レジスタＰＲＥＧ１〜ＰＲＥＧｊと、単数または複数（ここではｊ個）のＥＸＯＲ演算回路ＥＯＲ１〜ＥＯＲｊと、ＮＯＲ演算回路ＮＲとを備える。
【００４７】
ＰＣ設定レジスタＰＲＥＧ１〜ＰＲＥＧｊは、それぞれ、ＰＣ設定値を定める。ＥＸＯＲ演算回路ＥＯＲ１〜ＥＯＲｊは、プログラムカウンタＰＣの値と、ＰＣ設定レジスタＰＲＥＧ１〜ＰＲＥＧｊに保持される各ＰＣ設定値との一致・不一致を判定する。ＮＯＲ演算回路ＮＲは、ＥＸＯＲ演算回路ＥＯＲ１〜ＥＯＲｊの判定結果が全て一致であった場合に、プログラムカウンタ一致信号ＰＣＨを出力する（ここでは、‘１’にアサートする）。これにより、ＰＣ監視回路ＰＣＭＮＩは、単数または複数のＰＣ設定値（すなわち、本体プログラムＭＰＲＧ上の単数または複数の処理）を全て通過した際にプログラムカウンタ一致信号ＰＣＨを出力することができる。
【００４８】
タイマ回路ＴＭＲは、起動選択レジスタＣＳＲＥＧと、タイマ制御回路ＴＭＣＴＬと、カウンタ回路ＣＵＮＴと、単数または複数（ここではｊ個）のタイマ設定レジスタＴＲＥＧ１〜ＴＲＥＧｊを備えるタイマ設定レジスタブロックＴＲＥＧＢＫと、タイマ比較回路ＴＣＭＰとを備える。タイマ制御回路ＴＭＣＴＬは、起動選択レジスタＣＳＲＥＧの保持内容に基づき、カウンタ回路ＣＵＮＴがカウント動作（タイマ動作）を開始する際のトリガとなるタイマ起動信号を選択する。この例では、タイマ起動信号は、外部端子ＰＮ（ＥＮＡ）からの起動信号ＥＮＡ、プログラムカウンタ一致信号ＰＣＨ、外部トリガ信号ＴＲＧＩＮの中から選択される。タイマ制御回路ＴＭＣＴＬは、当該選択された信号がアサートされた際に、カウンタ回路ＣＵＮＴへタイマ起動信号を発行する。
【００４９】
タイマ設定レジスタＴＲＥＧ１〜ＴＲＥＧｊは、それぞれ、タイマ設定値（カウント設定値）を定める。タイマ制御回路ＴＭＣＴＬは、タイマ設定レジスタＴＲＥＧ１〜ＴＲＥＧｊのいずれかの値（例えばＴＲＥＧ１の値）をタイマ比較回路ＴＣＭＰへ出力する。あるいは、タイマ制御回路ＴＭＣＴＬは、タイマ一致信号ＴＭＨが出力される毎に、複数のタイマ設定レジスタＴＲＥＧ１〜ＴＲＥＧｊの値を順番にタイマ比較回路ＴＣＭＰへ出力する。タイマ比較回路ＴＣＭＰは、カウンタ回路ＣＵＮＴのカウント値と、タイマ設定レジスタブロックＴＲＥＧＢＫからのタイマ設定値（カウント設定値）との一致・不一致を判定し、一致した場合にタイマ一致信号ＴＭＨを出力する（ここでは、‘１’にアサートする）。
【００５０】
トリガ出力回路ＴＲＧ０は、論理設定レジスタＬＳＲＥＧと、選択回路ＳＥＬ１１〜ＳＥＬ１３と、フリップフロップ回路ＦＦ１〜ＦＦ３と、可変論理回路ＰＬＣと、フリップフロップリセット回路ＦＲＳＣとを備える。選択回路ＳＥＬ１１およびフリップフリップ回路ＦＦ１は、プログラムカウンタ一致信号ＰＣＨがアサートされた（ここでは‘１’に遷移した）際に、当該‘１’レベルを保持する。同様に、選択回路ＳＥＬ１２およびフリップフリップ回路ＦＦ２は、タイマ一致信号ＴＭＨを対象に‘１’レベルの保持を行い、選択回路ＳＥＬ１３およびフリップフリップ回路ＦＦ３は、外部トリガ信号ＴＲＧＩＮを対象に‘１’レベルの保持を行う。
【００５１】
可変論理回路ＰＬＣは、フリップフロップ回路ＦＦ１〜ＦＦ３の出力を入力として、論理設定レジスタＬＳＲＥＧの保持内容で指定される真理値表に基づき論理演算を行い、その論理演算結果となるトリガ信号ＴＲＧを出力する。フリップフロップリセット回路ＦＲＳＣは、トリガ信号ＴＲＧのアサートを受けて、所定の期間経過後にフリップフロップリセット信号ＦＲを発行し、フリップフリップ回路ＦＦ１〜ＦＦ０をリセットする（ここでは‘０’レベルに戻す）。フリップフロップリセット回路ＦＲＳＣは、例えば、複数のタイマ設定レジスタＴＲＥＧ１〜ＴＲＥＧｊに基づきトリガ信号ＴＲＧを順次複数回生成するような場合に用いられる。
【００５２】
図４および図５のような構成を用いると、例えば、起動信号ＥＮＡが入力されたのち、プログラムカウンタ一致信号ＰＣＨ、タイマ一致信号ＴＭＨ、外部トリガ信号ＴＲＧＩＮに基づくいずれかのタイミングで、データ設定レジスタ（例えばＤＲＥＧ１）で定めたエラーを注入することができる。すなわち、プロセッサ回路ＣＰＵが本体プログラムＭＰＲＧの実行を開始してから、所定の処理（すなわちＰＣ設定値で定められる処理）に差し掛かった際や、または、所定の期間（すなわちタイマ設定値で定められる期間）を経過した際に、エラーを注入することができる。または、外部トリガ信号ＴＲＧＩＮを用いて任意のタイミングでエラーを注入することができる。
【００５３】
さらには、プログラムカウンタ一致信号ＰＣＨ、タイマ一致信号ＴＭＨ、外部トリガ信号ＴＲＧＩＮの組み合わせで定めたタイミングでエラーを注入することができる。例えば、タイマ起動信号を起動信号ＥＮＡとし、プログラムカウンタ一致信号ＰＣＨとタイマ一致信号ＴＭＨの組合せ（例えばオア演算）を用いれば、いずれか早いタイミングでエラーを注入することができる。
【００５４】
また、例えば、タイマ起動信号をプログラムカウンタ一致信号ＰＣＨとし、タイマ一致信号ＴＭＨを用いてトリガ信号ＴＲＧを生成させれば、プロセッサ回路ＣＰＵが所定の処理に差し掛かったのち、所定の期間経過後にエラーを注入することができる。同様に、タイマ起動信号を外部トリガ信号ＴＲＧＩＮとし、タイマ一致信号ＴＭＨを用いてトリガ信号ＴＲＧを生成させれば、外部トリガ信号ＴＲＧＩＮを印加してから所定の期間経過後にエラーを注入することができる。
【００５５】
図４および図５のような構成を用いると、このような動作を代表に様々なエラー注入条件を定めることが可能になる。そして、システム開発者等は、当該マイクロコントローラを含んだシステムを対象として、マイクロコントローラ内に様々な条件でエラーを注入した後の挙動をテストすることができる。その結果、システムテストの網羅性を上げることができる。なお、エラー注入回路ＥＲＩＮの構成は、必ずしも図４および図５に示したような構成に限定されるものではなく、プログラムカウンタ一致信号ＰＣＨ、タイマ一致信号ＴＭＨ、外部トリガ信号ＴＲＧＩＮのいずれか又はその組合せに基づくタイミングで所定のエラーを注入できる構成であれば適用変更することが可能である。例えば、ＰＣ監視回路ＰＣＭＮＩに、同じＰＣ設定値を複数回通過した場合にプログラムカウンタ一致信号ＰＣＨを出力するような回路を追加することも可能である。
【００５６】
図６は、図４および図５のエラー注入回路におけるレジスタ設定方式の一例を示す概略図である。図６に示すように、ＰＣ監視回路ＰＣＭＮＩ、タイマ回路ＴＭＲ、トリガ出力回路ＴＲＧＯおよびエラー信号生成回路ＴＥＲＧ内の各設定レジスタは、ＪＴＡＧ用の外部端子ＰＮ（ＪＴＡＧ）を構成するＴＤＩ端子とＴＤＯ端子との間で、スキャンチェーンＳＣで結合される。
【００５７】
各設定レジスタは、プログラムカウンタ設定レジスタＰＲＥＧ１〜ＰＲＥＧｊと、起動選択レジスタＣＳＲＥＧと、タイマ設定レジスタＴＲＥＧ１〜ＴＲＥＧｊと、論理設定レジスタＬＳＲＥＧと、データ設定レジスタＤＲＥＧ１〜ＤＲＥＧｋである。これにより、システム開発者等は、テストの初期設定として、ＪＴＡＧ用の外部端子ＰＮ（ＪＴＡＧ）を介してスキャンチェーンＳＣにアクセスすることで各設定レジスタに所定の値を設定することができる。
【００５８】
《エラーレジスタの構成》
図７は、図３のマイクロコントローラにおいて、エラーレジスタの構造例を示す概略図である。図７に示すエラーレジスタＥＲＲＥＧは、複数ビットを備え、各ビットは、それぞれ異なるエラー信号を保持する。例えば、ビット０（ｂ０）は、図３におけるプロセッサ回路ＣＰＵ内のエラー検出回路ＥＲＤＥＴｃからのエラー信号ＥＲ１を保持する。ビット１（ｂ１）は、図３における揮発性メモリ回路ＲＡＭ内のエラー検出回路ＥＲＤＥＴｍからのエラー信号ＥＲ２を保持する。
【００５９】
ビット２（ｂ２）およびビット３（ｂ３）は、図３におけるＢＩＳＴ回路ＢＩＳＴＣ内のエラー検出回路ＥＲＤＥＴｂからのエラー信号ＥＲ３を保持する。ここでは、エラー信号ＥＲ３は、２ビットであり、一方のビットはメモリテスト回路ＭＢＩＳＴによるエラー信号ＥＲ３ａを保持し、他方のビットはロジックテスト回路ＬＢＩＳＴによるエラー信号ＥＲ３ｂを保持する。
【００６０】
図７には、エラー検出回路ＥＲＤＥＴｍによってエラー信号ＥＲ２がアサートされた（例えばＥＣＣエラーが発生した）状態が示されている。図４のデータ設定レジスタＤＲＥＧ１〜ＤＲＥＧｋのそれぞれは、必ずしも限定はされないが、当該エラーレジスタＥＲＲＥＧと同じビット数を備える。エラー注入回路ＥＲＩＮで、このようなＥＣＣエラーを注入する場合には、例えば、データ設定レジスタＤＲＥＧ１に、図７に示したようなデータが予め設定される。
【００６１】
《マイクロコントローラの概略動作》
次に、図３のマイクロコントローラＭＣＵ１を用いた機能安全のテスト方法について簡単に説明する。基本的なテスト方法は、前述した図２Ａの場合と同様である。まず、システム開発者等は、マイクロコントローラＭＣＵ１の起動時（例えば電源オン時）に、モード信号ＳＭＯＤをテスト用レベルに設定しておくことで、機能安全のテストを実行することができる。この状態で、システム開発者等は、ＪＴＡＧ用の外部端子ＰＮ（ＪＴＡＧ）を介して図７のスキャンチェーンＳＣにアクセスし、各設定レジスタに所定の値を設定することでエラー注入の各種条件を定める。
【００６２】
次いで、システム開発者等は、起動信号ＥＮＡをアサートし、これに応じてプロセッサ回路ＣＰＵは、本体プログラムＭＰＲＧの実行を開始する。この段階では、エラーレジスタＥＲＲＥＧには、図４のデータ出力レジスタＤＲＥＧＯの初期値（すなわちエラー無しを表す信号）が入力される。その後、エラー注入回路ＥＲＩＮは、各設定レジスタに基づくトリガ条件が成立すると、エラーレジスタＥＲＲＥＧに各設定レジスタに基づくエラーを注入する。システム開発者等は、このエラー注入後の動作を確認することで、機能安全が正常に働くか否かをテストする。また、システム開発者等は、このようなテストを、エラー注入の各種条件を適宜変更しながら繰り返し行うことで、機能安全のテストを網羅的に実施することができる。
【００６３】
《本実施の形態１の主要な効果》
図１３は、本発明の比較例として検討した半導体装置の構成例を示す概略図である。図１３に示す半導体装置ＤＥＶ’は、複数の内部回路ＩＮＣ１’，ＩＮＣ２’を含み、内部回路ＩＮＣ１’，ＩＮＣ２’は、それぞれ、診断レジスタＤＧＲＥＧ１，ＤＧＲＥＧ２およびエラー生成回路ＥＲＧ１，ＥＲＧ２を備える。プロセッサ回路ＣＰＵの本体プログラムＭＰＲＧには、別途、割り込み処理プログラムＩＮＴＰＲＧが設けられる。
【００６４】
半導体装置ＤＥＶ’の外部には、コンピュータシステム等で構成されるメンテナンス制御部ＭＴＣＴＬが設けられる。システム開発者等は、予めメンテナンス制御部ＭＴＣＴＬを用いて、エラー生成条件（例えばプログラムカウンタ値）、診断レジスタ名およびエラー内容を定める。メンテナンス制御部ＭＴＣＴＬは、エラー生成条件を半導体装置ＤＥＶ’に通知し、これに応じて半導体装置ＤＥＶ’内の監視回路ＭＮＩは、当該エラー生成条件の成立有無を監視する。
【００６５】
メンテナンス制御部ＭＴＣＴＬは、監視回路ＭＮＩからエラー生成条件の成立が通知されると、診断レジスタ名（例えばＤＧＲＥＧ１とする）とエラー内容の組合せを割り込み信号を介してプロセッサ回路ＣＰＵに通知する。プロセッサ回路ＣＰＵは、当該割り込み信号に応じて割り込み処理プログラムＩＮＴＰＲＧを実行し、当該プログラムの中で、診断レジスタＤＧＲＥＧ１にエラー内容を書き込む。エラー生成回路ＥＲＧ１は、診断レジスタＤＧＲＥＧ１のエラー内容に応じたエラーを生成する。エラー検出回路ＥＲＤＥＴ’は、当該生成されたエラーを検出し、検出したエラーの情報をエラーレジスタＥＲＲＥＧ’に書き込み。プロセッサ回路ＣＰＵは、当該エラーレジスタＥＲＲＥＧ’を参照することでエラーの発生を認識する。
【００６６】
例えば、このような方式を用いると、擬似エラーの生成に伴い複雑な仕組みが必要とされる恐れがある。具体例として、第１に、各内部回路ＩＮＣ１’，ＩＮＣ２’毎に診断レジスタＤＧＲＥＧ１，ＤＧＲＥＧ２およびエラー生成回路ＥＲＧ１，ＥＲＧ２を設ける必要性が生じる。これは、回路面積のオーバヘッドを招くことにもなる。第２に、テスト用の割り込み処理プログラムＩＮＴＰＲＧを設ける必要性が生じる。これは、例えば、システム開発者等に対し、本来不要であるべき本体プログラムＭＰＲＧの変更（または本体プログラムＭＰＲＧに影響を及ぼす変更）を、半導体装置ＤＥＶ’の都合で求めることになる。
【００６７】
第３に、実際の機能安全のテストの中で半導体装置ＤＥＶ’に擬似エラーを生成させる際に、メンテナンス制御部ＭＴＣＴＬのような特別な外部装置を設置する必要性が生じる。すなわち、システム開発者等は、テスト対象となるシステム（半導体装置ＤＥＶ’を含む）に、このような外部装置を別途接続した状態でテストを行う必要があり、テスト環境の構築等が複雑化する恐れがある。
【００６８】
一方、図１および図３等に示した本実施の形態１の方式では、プロセッサ回路ＣＰＵを介さずにエラーレジスタＥＲＲＥＧに直接アクセスできる仕組みを設けている。これにより、半導体装置ＤＥＶ１に、内部の擬似エラーを容易に生成させることが可能になる。言い換えれば、実際の物理的なシステムを対象とした機能安全のテストを容易化することが可能になる。
【００６９】
具体的に説明すると、第１に、図１３の場合のような診断レジスタやエラー生成回路を設ける必要性がなくなる。すなわち、システム開発者等の視点では、機能安全のテストに際し、半導体装置ＤＥＶ１内のエラー検出機構を含めてテストを行う必要性は特になく、当該エラー検出機構の最終出力（すなわちエラーレジスタＥＲＲＥＧの出力）さえ得られれば足りる。
【００７０】
第２に、本体プログラムＭＰＲＧの変更が不要となり、システム開発者等に本来不要な負担を強いる必要性がなくなる。例えば、本体プログラムＭＰＲＧを変更した場合、システム開発者等に、一度実施した本体プログラムＭＰＲＧの検証を再度求めるような事態が生じ得る。第３に、実際の機能安全のテストの中で半導体装置ＤＥＶ１に擬似エラーを生成させる際に、図１３の場合のような特別な外部装置（メンテナンス制御部）は特に必要とされず、一般的なテスト装置を用いることができる。すなわち、テスト装置は、通常、ＪＴＡＧ用の外部端子にアクセスすることが可能である。これらの結果、半導体装置ＤＥＶ１に、内部の擬似エラーを容易に生成させることが可能になる。
【００７１】
さらに、別の効果として、実使用動作に近い状況下で機能安全のテストを行うことができるため、テストの検出漏れ等を防止することが可能になる。図８は、図１の半導体装置において、機能安全のテストに伴う内部処理のタイミングの一例を示す概略図である。図８には、実使用動作でエラーが発生した場合と、本実施の形態１の方式を用いてエラーを注入した場合と、比較例の方式（図１３）を用いてエラーを注入した場合とで、半導体装置の内部処理のタイミングがそれぞれ示される。
【００７２】
実使用動作において、プロセッサ回路ＣＰＵは、本体プログラムＭＰＲＧに基づき通常時の処理を実行し、通常時の処理の一つとして処理Ａを実行している。そして、処理Ａを実行する中で、例えばプログラムカウンタＰＣ＝“＃ｘｘ”の処理に差し掛かった時刻ｔ１において、エラーが発生している。ただし、プロセッサ回路ＣＰＵは、時刻ｔ１以降も処理Ａを継続的に実行する。
【００７３】
一方、プロセッサ回路ＣＰＵによる処理Ａの実行と並行して、所定のエラー検出回路は、時刻ｔ１で発生したエラーを検出し、所定の処理期間（期間Ｔｄ１）を経て時刻ｔ２でエラーレジスタＥＲＲＥＧにエラー情報を書き込む。エラーレジスタＥＲＲＥＧへの書き込みが行われると、そのエラー情報に基づく所定のエラー処理期間（期間Ｔｄ２）を経た時刻ｔ３で、プロセッサ回路ＣＰＵによる通常時の処理からエラー時制御回路ＥＲＣＴＬによるエラー時の処理への切り換えが行われる。
【００７４】
本実施の形態１の方式を用いると、このような実使用動作に近い状況下で機能安全のテストを行うことができる。すなわち、図８に示されるように、例えば、時刻ｔ２においてエラー注入を行えば、実使用動作の場合と同様に、処理Ａの実行中にエラーが発生し、時刻ｔ３において処理の切り換えが行われるような状況を再現できる。この際に、図５で説明したように、例えば、ＰＣ設定レジスタＰＲＥＧ１に“＃ｘｘ”を設定し、タイマ設定レジスタＴＲＥＧ１に期間Ｔｄ１を設定すれば、プログラムカウンタＰＣが“＃ｘｘ”に達してから期間Ｔｄ１を経たタイミングでエラーを注入でき、より実使用動作に近い状況を再現することも可能である。
【００７５】
一方、比較例の方式（図１３）の方式を用いると、メンテナンス制御部ＭＴＣＬは、プログラムカウンタＰＣ＝“＃ｘｘ”の処理に差し掛かった時刻ｔ１ａで、エラー注入を指示するための割り込み信号を発行する。これに応じて、プロセッサ回路ＣＰＵは、実使用動作の場合と異なり、処理Ａを一時中断して割り込み処理を実行し、その中でエラーを注入したのち時刻ｔ１ｂで処理Ａを再開する。このように、比較例の方式を用いると、処理Ａを中断した状態でエラーが発生するような状況下でのテストとなるため、実使用動作の状況を十分に再現できず、機能安全のテストで本来検出すべき不具合を検出できないような事態を招く可能性がある。
【００７６】
なお、図１および図３の例では、外部端子ＰＮ（ＳＭＯＤ）からモード信号ＳＭＯＤが入力される方式を用いたが、特にこれに限定されず、例えば、プロセッサ回路ＣＰＵ等の内部回路や、またはエラー注入回路ＥＲＩＮがモード信号ＳＭＯＤを生成するような方式であってもよい。具体例として、プロセッサ回路ＣＰＵは、外部からのテスト開始命令に応じてテスト用レベルのモード信号ＳＭＯＤを生成し、その後に入力される起動信号ＥＮＡに応じて本体プログラムＭＰＲＧの実行を開始する。
【００７７】
または、エラー注入回路ＥＲＩＮは、モード信号ＳＭＯＤのレベルを定めるレジスタを備え、ＪＴＡＧ用の外部端子ＰＮ（ＪＴＡＧ）から当該レジスタにテスト用レベルを書き込むことでテスト用レベルのモード信号ＳＭＯＤを生成する。ただし、プロセッサ回路ＣＰＵの本来の動作を変更することなくテストを行う観点からは、外部端子ＰＮ（ＳＭＯＤ）を用いる方式か、またはエラー注入回路ＥＲＩＮを用いる方式が望ましい。
【００７８】
また、図１および図３の例では、選択回路ＳＥＬ１がエラー検出回路の出力かエラー注入回路の出力の一方を選択し、当該選択した出力をエラーレジスタＥＲＲＥＧに書き込むことでエラーレジスタＥＲＲＥＧの出力を定めた。ただし、必ずしも当該構成に限定されず、エラーレジスタＥＲＲＥＧの出力を通常の経路とは別の経路で直接的に定めることが可能な構成であればよい。具体的として、内部回路ブロックＩＮＣＢＫからのエラー信号を保持する通常用のエラーレジスタと、エラー注入回路ＥＲＩＮからのテスト用のエラー信号を保持するテスト用のエラーレジスタとを設け、この２個のエラーレジスタの一方の出力を選択回路が選択するような構成であってもよい。この場合、図１および図３の構成例と比較してエラーレジスタが１個増加するが、図１および図３の場合と同様に、エラーレジスタＥＲＲＥＧの出力を通常の経路とは別の経路で直接的に定めることができる。
【００７９】
（実施の形態２）
《マイクロコントローラの構成（変形例）》
図９は、本発明の実施の形態２による半導体装置（マイクロコントローラ）の構成例を示すブロック図である。図９に示すマイクロコントローラＭＣＵ２は、図３の構成例と比較して、次の４点が異なっている。１点目は、ＪＴＡＧ用の外部端子ＰＮ（ＪＴＡＧ）を有しない点であり、２点目は、不揮発性メモリ回路ＲＯＭが本体プログラムＭＰＲＧに加えてテスト用初期化プログラムＴＰＲＧを保持する点である。３点目は、エラー注入回路ＥＲＩＮがバスＢＳに結合される点であり、４点目は、プロセッサ回路ＣＰＵにモード信号ＳＭＯＤが入力される点である。
【００８０】
テスト用初期化プログラムＴＰＲＧは、テスト用初期データを含み、プロセッサ回路ＣＰＵに、当該テスト用初期データを、エラー注入回路ＥＲＩＮ内の各設定レジスタ（すなわち図６に示した各設定レジスタ）に書き込ませるためのプログラムである。テスト用初期化プログラムＴＰＲＧは、本体プログラムＭＰＲＧの処理には影響を与えず、本体プログラムＭＰＲＧからは完全に独立したプログラムである。このため、システム開発者等は、本体プログラムＭＰＲＧを変更することなく、不揮発性メモリ回路ＲＯＭ内にテスト用初期化プログラムＴＰＲＧを単に追加すればよい。
【００８１】
このような構成において、例えば、モード信号ＳＭＯＤをテスト用レベルに定めた状態でマイクロコントローラＭＣＵ２を起動する（電源をオンする）と、プロセッサ回路ＣＰＵは、モード信号ＳＭＯＤのテスト用レベルに応じて、テスト用初期化プログラムＴＰＲＧを実行する。そして、プロセッサ回路ＣＰＵは、当該プログラムを実行する中で、バスＢＳを介してエラー注入回路ＥＲＩＮ内の各設定レジスタに書き込みを行う。その後、プロセッサ回路ＣＰＵは、起動信号ＥＮＡの入力に応じて本体プログラムＭＰＲＧの実行を開始し、以降、実施の形態１の場合と同様にして機能安全のテストが行われる。
【００８２】
以上、本実施の形態２の半導体装置を用いることで、実施の形態１で述べた各種効果に加えて、さらに、ＪＴＡＧ用の外部端子ＰＮ（ＪＴＡＧ）を削減でき、回路規模やコストの低減等が実現可能になる。また、システムのテスト環境がＪＴＡＧを使い難いような状況（例えば、外部端子ＰＮ（ＪＴＡＧ）にテスト装置を接続し難いような状況）であっても、機能安全のテストを行うことが可能になる。
【００８３】
（実施の形態３）
《半導体装置の適用例》
図１０は、本発明の実施の形態３による半導体装置において、その適用例となる電子制御装置の構成例および車両装置の構成例を示す概略図である。図１０の車両装置（例えば自動車）ＶＨは、エンジンユニットＥＮＧＵと、エンジンユニットＥＮＧＵを制御する電子制御装置ＥＣＵ（Electronic Control Unit）とを備える。エンジンユニットＥＮＧＵは、図示は省略するが、エンジンに加え、エンジンを動作させるための燃料噴射、バルブ制御、点火制御などを行う各種アクチェータと、これらの状態をセンシングする各種センサ回路とを備える。
【００８４】
電子制御装置ＥＣＵは、例えば、入力インタフェース装置ＩＦＩ、出力インタフェース装置ＩＦＯ、電源装置ＰＷＲ、およびマイクロコントローラ（半導体装置）ＭＣＵ等が実装される１個の配線基板で構成される。電源装置ＰＷＲは、電子制御装置ＥＣＵ内の各種装置に電源を供給する。マイクロコントローラＭＣＵは、実施の形態１や実施の形態２の構成を備える。マイクロコントローラＭＣＵには、エンジンユニットＥＮＧＵ内の各種センサ回路からのセンサ信号ＳＳＥＮが入力インタフェース装置ＩＦＩを介して入力される。
【００８５】
マイクロコントローラＭＣＵは、例えば、図３のプロセッサ回路ＣＰＵによる本体プログラムＭＰＲＧの実行を介して、センサ信号ＳＳＥＮに応じた最適な制御量を決定する。そして、マイクロコントローラＭＣＵは、当該制御量を反映した制御信号ＳＣＴＬを出力インタフェース装置ＩＦＯを介してエンジンユニットＥＮＧＵへ出力する。エンジンユニットＥＮＧＵ内の各種アクチェータは、当該制御信号ＳＣＴＬに応じて動作する。
【００８６】
ここで、例えば、自動車分野では、安全要求により、マイクロコントローラＭＣＵが前述したような動作を正常に行えない場合でも、最低限度の走行や停止を保証する必要がある。そのため、フェールセーフ機構として、図３に示したようなエラー時制御回路ＥＲＣＴＬが設けられる。エラー時制御回路ＥＲＣＴＬは、最低限のエンジン制御を行うためのアクチュエータ制御信号を出力する。
【００８７】
例えば、近年では、排ガス規制や燃費向上の要求に応じ、様々なセンサ信号ＳＳＥＮをもとに、自動車の状態に応じた最適な空燃比（空気と燃料の比率）を複雑な演算で求めるような本体プログラムＭＰＲＧが用いられる。このような本体プログラムＭＰＲＧを用いた処理にエラーが発生した場合、エラー時制御回路ＥＲＣＴＬは、最低限の走行を行うために予め設定された固定の空燃比に基づいてアクチェータ制御信号を出力する。
【００８８】
このような構成において、車両装置ＶＨに通常運転を行わせる場合には、マイクロコントローラＭＣＵに対して、通常用レベルのモード信号ＳＭＯＤを印加する。この場合、仮にマイクロコントローラＭＣＵ内のエラー検出回路でエラーが検出されると、当該エラーの情報がエラーレジスタＥＲＲＥＧに書き込まれる。これに応じて、エンジンユニットＥＮＧＵは、場合によっては、エラー時制御回路ＥＲＣＴＬからのアクチェータ制御信号（ＳＣＴＬ）を受けて動作することになる。
【００８９】
ただし、一般的に、このような自動車制御用のマイクロコントローラＭＣＵの信頼性は非常に高い。このため、エラー発生の確率は極めて低く、機能安全のテストに際してマイクロコントローラＭＣＵ内に真のエラーを生じさせることは容易でない。そこで、機能安全のテストを行いたい場合には、マイクロコントローラＭＣＵに対して、テスト用レベルのモード信号ＳＭＯＤを印加する。また、実施の形態１や実施の形態２で述べたような方式を用いて各種エラー注入条件を定め、マイクロコントローラＭＣＵのエラーレジスタＥＲＲＥＧに、当該エラー注入条件に基づく擬似エラーを注入する。
【００９０】
これにより、電子制御装置ＥＣＵまたは車両装置ＶＨをテスト対象として、マイクロコントローラＭＣＵが所定の処理を実行している最中にマイクロコントローラＭＣＵ内に所定のエラーが発生した場合の電子制御装置ＥＣＵまたは車両装置ＶＨの挙動をテストすることができる。例えば、エンジンユニットＥＮＧＵが最低限の動作（安全動作）を正しく行えるか否かをテストすることができる。
【００９１】
（実施の形態４）
《半導体装置周りの構成（変形例）》
図１１は、本発明の実施の形態４による半導体装置において、半導体装置周りの構成例を示すブロック図である。図１１に示す半導体装置ＤＥＶ２は、図１の半導体装置ＤＥＶ１と比較して、エラー時制御回路ＥＲＣＴＬおよび選択回路ＳＥＬ２が半導体装置ＤＥＶ２の外部に設けられる点が異なっている。また、これに伴い、半導体装置ＤＥＶ２は、外部端子ＰＮ（ＳＣＴＬ）を有さず、代わりに、通常時制御信号ＮＣＴＬを出力するための外部端子ＰＮ（ＮＣＴＬ）と、制御切り換え信号ＣＳＷを出力するための外部端子ＰＮ（ＣＳＷ）とを備える。
【００９２】
エラー時制御回路ＥＲＣＴＬおよび選択回路ＳＥＬ２は、例えば、図１０に示した電子制御装置ＥＣＵの配線基板上に、半導体装置ＤＥＶ２の別部品として実装される。仮に、半導体装置ＤＥＶ２内にエラー時制御回路ＥＲＣＴＬ等を設けた場合、半導体装置ＤＥＶ２内の故障が同一半導体チップ内のエラー時制御回路ＥＲＣＴＬにも影響を与える可能性がある。図１１の構成例を用いると、エラー時制御回路ＥＲＣＴＬは、半導体装置ＤＥＶ２から独立した別部品であるため、前述したような事態が生じる可能性を低減でき、更なる信頼性の向上が図れる場合がある。
【００９３】
（実施の形態５）
《半導体装置の概略構成（応用例）》
図１２は、本発明の実施の形態５による半導体装置の構成例を示す概略図である。図１２に示す半導体装置ＤＥＶ３は、図１の半導体装置ＤＥＶ１と比較して、セキュリティ上のエラーを検出するエラー検出回路を有する点が異なっている。図１２の半導体装置ＤＥＶ３において、内部回路ブロックＩＮＣＢＫは、エラー検出回路ＥＲＤＥＴ１を備える内部回路ＭＩＮＣ１と、単体で動作し、セキュリティ上のエラーを検出するエラー検出回路ＳＥＲＤＥＴ２〜ＳＥＲＤＥＴｉとを有する。
【００９４】
内部回路ＭＩＮＣ１は、図１の内部回路ＩＮＣ１〜ＩＮＣｉの場合と同様に、センサ信号ＳＳＥＮを受けて通常時制御信号ＮＣＴＬを出力する。エラー検出回路ＥＲＤＥＴ１は、内部回路ＭＩＮＣ１の故障をエラーとして検出し、エラー信号ＥＲ１を出力する。一方、エラー検出回路ＳＥＲＤＥＴ２〜ＳＥＲＤＥＴｉのそれぞれは、不正アクセス等を代表とするセキュリティ上の問題をエラーとして検出する。
【００９５】
マイクロコントローラを例にすると、エラー検出回路ＳＥＲＤＥＴ２〜ＳＥＲＤＥＴｉのそれぞれは、バス監視回路やメモリ保護回路やウォッチドッグタイマ等に該当する。バス監視回路は、不正なバスアクセス（例えば未使用アドレスへのアクセス）を監視し、メモリ保護回路は、不正なメモリアクセス（例えば保護領域へのアクセス）を監視する。ウォッチドッグタイマは、プログラムの実行時間を監視し、オーバタイム等を検出する。エラーレジスタＥＲＲＥＧは、図７に示したような故障に伴うエラーの有無を表すビットに加えて、セキュリティ上のエラーの有無を表すビットを備える。
【００９６】
以上のような構成例を用いると、実施の形態１等の場合と同様に、代表的には、半導体装置ＤＥＶ３に、内部の擬似エラーを容易に生成させることが可能になり、実際の物理的なシステムを対象としたセキュリティ保護等を含む機能安全のテストを容易化することが可能になる。すなわち、システム開発者等は、機能安全のテストに際し、例えば不正なメモリアクセスを実際に実行するといったようにセキュリティ上のエラーが生じる状況を作り出すことを出発点とする必要はなく、セキュリティ上のエラーが生じた時点を出発点として、その後の挙動をテストすることができる。
【００９７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。例えば、前述した実施の形態は、本発明を分かり易く説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。また、ある実施の形態の構成の一部を他の実施の形態の構成に置き換えることが可能であり、また、ある実施の形態の構成に他の実施の形態の構成を加えることも可能である。また、各実施の形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００９８】
ここでは、自動車向けの半導体装置（マイクロコントローラ）を例としたが、勿論、これに限定されるものではなく、例えば、比較的高い安全性が要求される各種産業機器向けの半導体装置に対して同様に適用可能である。
【００９９】
《付記》
一実施の形態による半導体装置は、一個の半導体チップで構成され、内部回路と、エラー検出回路と、エラー注入回路と、エラーレジスタと、選択回路とを有する。内部回路は、所定の処理を実行する。エラー検出回路は、半導体装置内で生じたエラーを検出し、当該検出結果となる第１のエラー信号を出力する。エラー注入回路は、予め定めたタイミングで予め定めた第２のエラー信号を出力する。選択回路は、モード信号に応じてエラー検出回路の出力かエラー注入回路の出力の一方を選択し、当該選択した出力をエラーレジスタの出力として定める。
【０１００】
また、一実施の形態によるテスト方法は、当該半導体装置を含んだシステムのテスト方法であり、第１〜第３の工程を有する。第１の工程は、エラー注入回路が出力するタイミングと第２のエラー信号とを設定する工程である。第２の工程は、選択回路にエラー注入回路の出力を選択させるようにモード信号を定める工程である。第３の工程は、第１の工程および第２の工程ののち、内部回路に所定の処理を実行させる工程である。
【符号の説明】
【０１０１】
ＤＥＶ  半導体装置
ＤＲＥＧ  データ設定レジスタ
ＥＮＡ  起動信号
ＥＲ  エラー信号
ＥＲＣＴＬ  エラー時制御回路
ＥＲＤＥＴ，ＳＥＲＤＥＴ  エラー検出回路
ＥＲＩＮ  エラー注入回路
ＥＲＯＴ  エラー出力処理回路
ＥＲＰＣ  エラー処理回路
ＥＲＲＥＧ  エラーレジスタ
ＩＮＣ，ＭＩＮＣ  内部回路
ＩＮＣＢＫ  内部回路ブロック
ＰＣ  プログラムカウンタ
ＰＣＨ  プログラムカウンタ一致信号
ＰＣＭＮＩ  プログラムカウンタ監視回路
ＰＮ  外部端子
ＰＲＥＧ  プログラムカウンタ設定レジスタ
ＳＣ  スキャンチェーン
ＳＥＬ  選択回路
ＳＭＯＤ  モード信号
ＴＥＲ  エラー信号（テスト用）
ＴＥＲＧ  エラー信号生成回路
ＴＭＨ  タイマ一致信号
ＴＭＲ  タイマ回路
ＴＰＲＧ  テスト用初期化プログラム
ＴＲＥＧ  タイマ設定レジスタ
ＴＲＧＧ  トリガ生成回路
ＴＲＧＩＮ  外部トリガ信号
ＴＲＧＯ  トリガ出力回路
【図１】
2017151785.tif 000003
【図２Ａ】
2017151785.tif 000004
【図２Ｂ】
2017151785.tif 000005
【図３】
2017151785.tif 000006
【図４】
2017151785.tif 000007
【図５】
2017151785.tif 000008
【図６】
2017151785.tif 000009
【図７】
2017151785.tif 000010
【図８】
2017151785.tif 000011
【図９】
2017151785.tif 000012
【図１０】
2017151785.tif 000013
【図１１】
2017151785.tif 000014
【図１２】
2017151785.tif 000015
【図１３】
2017151785.tif 000016