(57)【要約】【課題】疑似故障発生条件における複数の事象の発生の順序に様々なパターンが存在する場合でも、好適に疑似故障注入が実現できる技術を提供する。【解決手段】半導体装置であるマイコンは、ＣＰＵ１１と、メモリおよび入出力デバイスを含むデバイス４０と、疑似故障注入回路２０とを備え、それらがシステムバス３０に接続されている。疑似故障注入装置２０は、疑似故障発生条件として、アドレスバス３２のアドレスおよびデータバス３３のデータの状態に関する複数の部分条件から構成される条件と、疑似故障データとを含む設定データが設定され、条件に基づいて、アドレスバス３２のアドレスおよびデータバス３３のデータと、条件のアドレスおよびデータとを比較して、複数の部分条件の成否を判定し、判定に応じて、疑似故障データをデータバス３３に注入する。条件の複数の部分条件は、複数のアドレスの発生の順序が異なる複数のパターンを含む。【選択図】図３
2020095501.tif 000002
【特許請求の範囲】
【請求項１】
プロセッサと、
メモリおよび入出力デバイスを含むデバイスと、
それらが接続されている制御バス、アドレスバス、およびデータバスを含むシステムバスと、
前記システムバスに接続されている疑似故障注入テストを行うための疑似故障注入装置と、
を備える半導体装置であって、
前記疑似故障注入装置は、
疑似故障発生条件として、前記アドレスバスのアドレスおよび前記データバスのデータの状態に関する複数の部分条件から構成される条件と、疑似故障データとを含む設定データが設定され、
前記条件に基づいて、前記アドレスバスのアドレスおよび前記データバスのデータと、前記条件のアドレスおよびデータとを比較して、前記複数の部分条件の成否を判定し、前記判定に応じて、前記疑似故障データを前記データバスに注入し、
前記条件の前記複数の部分条件は、複数のアドレスの発生の順序が異なる複数のパターンを含む、
半導体装置。
【請求項２】
請求項１記載の半導体装置において、
前記疑似故障注入装置は、前記条件のうちの所定の複数の部分条件が、すべて成立した場合に、前記疑似故障データとして特定の疑似故障データを注入する、
半導体装置。
【請求項３】
請求項１記載の半導体装置において、
前記条件の前記複数の部分条件は、同じアドレスに対する複数回のアクセスを持つパターンを含む、
半導体装置。
【請求項４】
請求項１記載の半導体装置において、
前記疑似故障注入装置は、
前記条件の複数のアドレスが設定され、前記アドレスバスのアドレスと前記条件の複数のアドレスとを比較して、アドレスの一致を判定し、判定したアドレスに対応するインデックスを出力する第１回路と、
前記条件の複数のデータ、および前記疑似故障データを含むエントリーが設定され、前記インデックスに対応するエントリーが参照される第２回路と、
前記データバスのデータと前記インデックスに対応するエントリーの前記条件の複数のデータとを比較して、データの一致を判定する第３回路と、
前記アドレスの一致および前記データの一致に基づいて、前記条件の前記複数の部分条件の成否の状態を記憶し、前記複数の部分条件の成否の状態に応じて、前記疑似故障データを注入するか判定する第４回路と、
前記注入の判定に応じて、前記データバスに前記疑似故障データを注入する第５回路と、
を有する、半導体装置。
【請求項５】
請求項４記載の半導体装置において、
前記第１回路は、連想メモリで構成されている、
半導体装置。
【請求項６】
請求項４記載の半導体装置において、
前記第２回路の前記エントリーには、前記複数の部分条件のうち特定の部分条件を指定するための条件フラグと、前記複数の部分条件の各部分条件を指定するための検出フラグとを含み、
前記第４回路は、前記条件フラグおよび前記検出フラグの値に応じて、前記複数の部分条件の各部分条件の成否の状態を表す値を記憶する、
半導体装置。
【請求項７】
請求項４記載の半導体装置において、
前記疑似故障注入装置は、
前記第１回路と前記第２回路との間に接続され、前記条件の複数のアドレスにおける個別のアドレスを制御するための独立疑似故障データインデックスが設定される第６回路と、
前記第１回路と前記第２回路との間に接続され、前記条件の複数のアドレスをグループとして制御するためのグループインデックスが設定される第７回路と、
前記第７回路に接続され、前記グループ内のアドレスの状態を制御するためのグループ疑似故障データインデックスが設定される第８回路と、
前記独立疑似故障データインデックスと前記グループ疑似故障データインデックスとから、所定の演算で、前記インデックスとして前記第２回路の前記エントリーを参照するための疑似故障データインデックスを算出する第９回路と、
を有する、半導体装置。
【請求項８】
請求項７記載の半導体装置において、
前記第２回路には、前記疑似故障データインデックスの前記エントリー毎に、次回独立疑似故障データインデックスおよび次回グループ疑似故障データインデックスが設定され、
前記疑似故障注入装置は、前記条件の部分条件の成立毎に、前記次回独立疑似故障データインデックスを前記第６回路に設定し、前記次回グループ疑似故障データインデックスを前記第８回路に設定する、
半導体装置。
【請求項９】
請求項１記載の半導体装置において、
前記疑似故障注入装置は、外部からの操作に基づいて前記設定データを設定する設定回路を有する、
半導体装置。
【請求項１０】
請求項６記載の半導体装置において、
前記条件データおよび前記条件フラグは、それぞれ、マスクとバリューとの２つの要素を有する、
半導体装置。
【請求項１１】
請求項６記載の半導体装置において、
前記検出フラグおよび前記疑似故障データは、それぞれ、マスクとバリューとの２つの要素を有する、
半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣ等の半導体装置の技術に関し、疑似故障注入テストのための技術に関する。
【背景技術】
【０００２】
疑似故障注入テストは、対象のシステムや機器の機能や動作をテストする際に、実際の故障を発生させてテストすることが難しいまたは非効率である場合に、計算機上で擬似的な故障を発生させるものである。疑似故障注入テストに係わる先行技術例としては、特許第２９７２７５１号公報（特許文献１）が挙げられる。特許文献１には、プログラムデバッグ支援回路等が記載されている。特許文献１には、プロセッサのバスを監視して、アドレスやデータが、設定されたパターンに該当する場合に、本来のデータに代わって疑似的な故障データに差し替える旨が記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特許第２９７２７５１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
従来技術例の疑似故障注入装置は、疑似故障注入を発生させるための、設定されたパターン等の条件（疑似故障発生条件と記載する場合がある）が成立した場合に、疑似故障データを注入する。その条件は、複数の部分条件の事象で構成されている。その事象は、システムバス上の複数のアドレスやデータである。従来技術例の疑似故障注入装置では、その条件は、所定の発生の順序を持つ複数の部分条件による固定的な条件として設定されている。
【０００５】
しかし、従来技術例では、各事象の発生の順序によっては、疑似故障注入ができない。すなわち、従来技術例では、設定された条件の所定の順序とは異なる順序で各事象が発生する場合には、疑似故障注入ができない。また、従来技術例で、順序が異なる複数の条件での複数の疑似故障注入に対応できるようにするためには、条件毎に設定を変更する作業が必要となる。これは作業者による設定作業を含む擬似故障注入テスト作業の負荷が大きい。その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００６】
一実施の形態の半導体装置は、疑似故障注入装置を含む半導体装置である。この疑似故障注入装置は、プロセッサとメモリおよび入出力デバイスを含むデバイスとの間のシステムバスに接続されている。疑似故障注入装置は、疑似故障発生条件として、アドレスバスのアドレスおよびデータバスのデータの状態に関する複数の部分条件から構成される条件と、疑似故障データとを含む設定データが設定される。疑似故障注入装置は、条件に基づいて、アドレスバスのアドレスおよびデータバスのデータと、条件のアドレスおよびデータとを比較して、複数の部分条件の成否を判定し、判定に応じて、疑似故障データをデータバスに注入する。条件の複数の部分条件は、複数のアドレスの発生の順序が異なる複数のパターンを含む。
【発明の効果】
【０００７】
一実施の形態によれば、疑似故障発生条件における複数の事象の発生の順序に様々なパターンが存在する場合でも、好適に疑似故障注入が実現できる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態１の半導体装置を含む、テスト対象システムの構成を示す図である。
【図２】実施の形態１の半導体装置であるマイクロコントローラの構成を示す図である。
【図３】実施の形態１における、マイコン内の疑似故障注入回路の構成を示す図である。
【図４】実施の形態１で、アドレステーブル、疑似故障データテーブル、および疑似故障発生判定回路等の構成を示す図である。
【図５】実施の形態１で、疑似故障注入回路の第１処理フローを示す図である。
【図６】実施の形態１で、疑似故障注入回路の第２処理フローを示す図である。
【図７】実施の形態１で、疑似故障注入回路の第３処理フローを示す図である。
【図８】実施の形態１で、疑似故障注入回路の第４処理フローを示す図である。
【図９】実施の形態１で、アドレステーブル等の設定例の第１状態を示す図である。
【図１０】実施の形態１で、アドレステーブル等の設定例の第２状態を示す図である。
【図１１】実施の形態１で、アドレステーブル等の設定例の第３状態を示す図である。
【図１２】実施の形態１の変形例における、疑似故障データテーブルの構成を示す図である。
【図１３】本発明の実施の形態２の半導体装置を含む、テスト対象システムの構成を示す図である。
【図１４】実施の形態２における、マイコン内の疑似故障注入回路の構成を示す図である。
【図１５】実施の形態２で、アドレステーブル、疑似故障データテーブル、独立疑似故障データインデックステーブル、グループインデックステーブル、グループ疑似故障データインデックステーブル、疑似故障データインデックス算出回路、および疑似故障データテーブルの構成を示す図である。
【図１６】実施の形態２で、疑似故障注入回路の第１処理フローを示す図である。
【図１７】実施の形態２で、疑似故障注入回路の第３処理フローを示す図である。
【図１８】実施の形態２で、アドレステーブル等の設定例における第１パターンの場合の第１状態を示す図である。
【図１９】実施の形態２で、第１パターンの場合の第２状態、第３状態、および第４状態を示す図である。
【発明を実施するための形態】
【０００９】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、全図面において同一部には原則として同一符号を付し、繰り返しの説明は省略する。
【００１０】
（実施の形態１）
図１〜図１２を用いて、本発明の実施の形態１の疑似故障注入装置を含む半導体装置について説明する。
【００１１】
［テスト対象システム］
図１は、実施の形態１の半導体装置であるマイクロコントローラ１（マイコンと記載する場合がある）を含む、テスト対象システム１００の構成を示す。テスト対象システム１００は、疑似故障注入テストを含むテストの対象となるシステムであり、一例として搬送ライン安全システムである。マイコン１は、この搬送ライン安全システムの主制御を行う部分であり、そのための搬送ライン安全制御機能１Ａが実装されている。マイコン１は、疑似故障注入装置（言い換えると疑似故障注入回路）を含む半導体装置である。マイコン１は、疑似故障注入機能１Ｂが、疑似故障注入装置として組み込みで実装されている。疑似故障注入機能１Ｂは、疑似故障注入テストを行うための機能である。
【００１２】
テスト対象システム１００である搬送ライン安全システムは、マイコン１と、搬送ライン１０１と、複数の例えば２つのセンサ１０２と、安全ドア１０３とを有し、これらが通信線で相互に接続されている。搬送ライン１０１は、工場等において所定の物を搬送する機構であり、図示しない制御機構によって稼動が管理および制御されている。センサ１０２は、搬送ライン１０１の稼動の状態を検出するための機構である。例えば、搬送ライン１０１上の所定の位置に、２つのセンサ１０２が設置されている。２つのセンサ１０２を用いているのは、二重化によって、検知性能や信頼性をより高めるためである。１つのセンサ１０２は、例えば図示のように光出射部１０２ａと光入射部１０２ｂとの間で光を照射し、その光の状態に応じて、搬送ライン１０１が稼動しているか否かの状態を検知する。各センサ１０２は、検知の状態を表す信号を出力する。センサ１０２の信号の値は、例えば、搬送ライン１０１が稼働中の状態の場合には“ＯＮ”（ビット値１）、非稼働中の状態の場合には“ＯＦＦ”（ビット値０）が設定されている。一方のセンサ１０２（第１センサ）からの信号を信号ＳＩＮ１、他方のセンサ１０２（第２センサ）からの信号を信号ＳＩＮ２とする。センサ１０２からの信号ＳＩＮ１，ＳＩＮ２は、マイコン１の対応する入力ポートＩＮ１，ＩＮ２に入力される。
【００１３】
搬送ライン１０１の周囲は、壁や仕切り等で囲われており、その壁等には安全ドア１０３が設けられている。安全ドア１０３は、作業者が搬送ライン１０１の空間に対して出入りする場合に使用される。安全ドア１０３は、安全ドアスイッチ１０４を備えている。安全ドアスイッチ１０４は、電磁ロック方式の錠を備えている。安全ドアスイッチ１０４は、マイコン１と接続されており、マイコン１の出力ポートＯＵＴ１からの出力の信号ＳＯＵＴ１によって、錠のロック／アンロック状態、すなわち安全ドア１０３の開閉状態が制御できる。また、安全ドアスイッチ１０４は、搬送ライン１０１の駆動部と接続されており、安全ドアスイッチ１０４からの信号ＳＤ１に応じて、搬送ライン１０１の稼動／非稼動の状態が制御できる。
【００１４】
この搬送ライン安全システムにおいて、マイコン１の搬送ライン安全制御機能１Ａは、後述のプログラム処理に基づいて、以下のような概要の制御を行う。マイコン１は、センサ１０２からの信号ＳＩＮ１，ＳＩＮ２に基づいて、搬送ライン１０１の稼働／非稼動の状態を把握する。マイコン１は、例えば、信号ＳＩＮ１および信号ＳＩＮ２の両方がＯＮ（１）である場合、搬送ライン１０１が稼働中の状態であると判断する。マイコン１は、搬送ライン１０１が稼動中の状態の時には、安全確保のために、安全ドアスイッチ１０４をロック状態、すなわち安全ドア１０３が閉状態となるように、出力の信号ＳＯＵＴ１によって制御する。出力の信号ＳＯＵＴ１の値は、例えばロックの場合には“ＯＮ”（ビット値１）、アンロックの場合には“ＯＦＦ”（ビット値０）とする。ロック状態（閉状態）では作業者が安全ドア１０３から搬送ライン１０１の空間に入ることができないので、事故等が防止できる。マイコン１は、搬送ライン１０１が非稼動中の状態の時には、安全ドアスイッチ１０４をアンロック状態、すなわち安全ドア１０３が開状態となるように、出力の信号ＳＯＵＴ１によって制御する。アンロック状態（開状態）では、作業者が安全ドア１０３から搬送ライン１０１の空間に入ることが可能である。また、安全ドアスイッチ１０４は、アンロック状態の時には、安全確保のために、信号ＳＤ１によって、搬送ライン１０１の稼動を停止させる。安全ドアスイッチ１０４は、ロック状態の時には、信号ＳＤ１によって、搬送ライン１０１の稼動が可能な状態とする。
【００１５】
上記のような搬送ライン安全制御機能１Ａが正常に働くかどうかについて、予めシステム導入時や保守点検時等に、テストによって検証する必要がある。テストは、所定のテスト作業者によって行われる。このテストの一部として、疑似故障注入テストがある。マイコン１等に実際の故障を発生させてテストすることは難しいまたは非効率であるため、疑似故障注入テストが用いられる。疑似故障注入は、テスト対象システムに対し、プログラム処理に基づいて疑似的な故障を発生させる、言い換えると疑似故障データを注入するものである。この疑似故障注入テストを容易に効率的に行うことができるように、マイコン１に、疑似故障注入機能１Ｂが実装されている。この疑似故障注入テストは、テスト対象システム１００の搬送ライン安全制御機能１Ａについて、疑似故障注入機能１Ｂによって疑似故障データを注入して、テスト作業者が動作等を確認するものである。
【００１６】
マイコン１の疑似故障注入機能１Ｂの回路には、疑似故障注入テストのために、予め、後述の条件を含む所定の設定データが設定される。マイコン１の疑似故障注入機能１Ｂは、その設定データ、およびテスト作業者の指示入力に基づいて、疑似故障注入テストを実行する。疑似故障注入機能１Ｂは、センサ１０２からの入力信号に応じて、設定に基づいた条件が成立するかを判定して、疑似故障データを注入し、対応する出力信号を安全ドアスイッチ１０４へ出力する。これにより、安全ドアスイッチ１０４は、疑似故障に応じた動作を行う。テスト作業者は、その動作を確認する。
【００１７】
［マイコン］
図２は、マイコン１の構成を示す。マイコン１は、ＣＰＵ１１、メモリ１２、入出力デバイス（ＩＯ）１３等を有し、それらがシステムバス３０に接続されている。システムバス３０は、制御バス３１、アドレスバス３２、およびデータバス３３を含む。入出力デバイス１３は、入力デバイスおよび出力デバイスを含み、例えば、入力デバイス１３１（ＤＩＮ１）、入力デバイス１３２（ＤＩＮ２）、および出力デバイス１３２（ＤＯＵＴ１）を含む。入出力デバイス１３は、言い換えると、入出力ポートを含む入出力インタフェース部、周辺デバイス、または通信インタフェース装置等である。メモリ１２および入出力デバイス１３を含む部分を１つにまとめてデバイス４０と記載する。デバイス４０は、メモリ１２または入出力デバイス１３である。
【００１８】
ＣＰＵ１１およびデバイス４０とシステムバス３０との間には、疑似故障注入機能１Ｂの実装部分である疑似故障注入回路２０が設けられている。疑似故障注入回路２０は、システムバス３０上のアドレスやデータや制御信号の状態を参照しながら、設定されている条件の判定に基づいて、疑似故障データを発生し、データバス３３に注入する。
【００１９】
また、マイコン１のＣＰＵ１１および疑似故障注入回路２０に対しては、デバイス４０の通信インタフェース装置等を介して、外部のＰＣ１５０等の装置が接続可能である。ＰＣ１５０とマイコン１のＣＰＵ１１や疑似故障注入回路２０とが通信する。テスト作業者であるユーザがＰＣ１５０を操作する。これにより、外部の装置から疑似故障注入回路２０（疑似故障注入機能１Ｂ）に対し、ユーザによる設定や指示の入力、疑似故障注入テストに関わる情報の出力、等が可能となっている。
【００２０】
［疑似故障注入回路］
図３は、疑似故障注入回路２０の構成を示し、ＣＰＵ１１、デバイス４０、およびシステムバス３０（制御バス３１，アドレスバス３２，データバス３３）も併せて示す。疑似故障注入回路２０は、アドレステーブル２１、疑似故障データテーブル２２、疑似故障発生判定回路２３、条件データ判定回路２４、疑似故障データ注入回路２５、および設定回路２６を含む。
【００２１】
アドレステーブル２１は、ＣＰＵ１１とデバイス４０との間のアドレスバス３２における転送されているアドレス（対応するアドレス値）の状態に基づいて、疑似故障発生条件を構成する対象アドレスへのアクセスを検出する回路である。このアドレス検出が、疑似故障発生のためのトリガとなる。アドレステーブル２１は、対象アドレスを検出した場合には、対応するインデックス信号Ｃ２を出力し、また、対応するアドレス一致信号Ｃ３を出力する。
【００２２】
アドレステーブル２１は、実施の形態１では連想メモリ（content addressable memory：ＣＡＭ）で実装されている。アドレステーブル２１は、アドレスバス３２に対し、アドレス信号Ｃ１の信号線で接続され、疑似故障データテーブル２２に対し、インデックス信号Ｃ２の信号線で接続され、疑似故障発生判定回路２３に対し、アドレス一致信号Ｃ３の信号線で接続されている。アドレステーブル２１には、疑似故障発生条件のうち、複数の部分条件における対象アドレス値を含む情報が設定されている。
【００２３】
なお、公知の連想メモリは、メモリ（記憶装置）の一種であり、所定のソフトウェアまたはハードウェアで実装可能である。一般的なメモリは、指定されたアドレス値に対応するアドレスの内容（データ）を読み書きする。それに対し、連想メモリは、連想メモリ内の内容（データ）の一部（実施の形態１ではアドレス値）が指定されると、その内容の一部またはそれを含む内容全体のデータや対応するインデックスを検索して読み出すことができる構成を持つメモリである。実施の形態１では、アドレステーブル２１は、ハードウェアによる連想メモリで実装されている。この連想メモリであるアドレステーブル２１は、入力として指定された内容の一部であるアドレス値に対し、テーブル全体を並列に検索して、所定の時間内で高速に、検索結果であるインデックス値を応答する。なお、連想メモリおよびアドレステーブル２１の実装はこれに限らず可能である。
【００２４】
疑似故障データテーブル２２は、「条件データ」、「条件フラグ」、「検出フラグ」、「疑似故障データ」が設定、記憶されている。「条件データ」は、疑似故障発生条件のうち複数の部分条件におけるデータバス３３の対象データ値を表すデータである。「条件フラグ」は、複数の部分条件における特定の疑似故障データの注入に係わる特定の部分条件を表すためのフラグである。「検出フラグ」は、所定の複数の部分条件における部分条件毎の検出を表すフラグである。「疑似故障データ」は、条件が成立する時、すなわち疑似故障発生時に、データバス３３に本来のデータに代わって注入するためのデータである。
【００２５】
疑似故障データテーブル２２は、実施の形態１ではメモリで実装されている。疑似故障データテーブル２２は、条件データ判定回路２４に対し、条件データ信号Ｃ４の信号線で接続され、疑似故障発生判定回路２３に対し、条件フラグ信号Ｃ５の信号線および検出フラグ信号Ｃ６の信号線で接続され、疑似故障データ注入回路２５に対し、疑似故障データ信号Ｃ７の信号線で接続されている。
【００２６】
条件データ判定回路２４は、データバス３３のデータ値の状態を参照し、条件の「条件データ」と比較して、該当するかどうかを判定し、その結果を出力する回路である。条件データ判定回路２４は、データバス３３および制御バス３１に対し接続されている。条件データ判定回路２４は、条件データに該当する場合には、データ一致信号Ｃ８の値をTRUE（ビット値１）として出力する。
【００２７】
データバス３３は、ＣＰＵ１１に接続されているＣＰＵ側データバス３３Ａと、デバイス４０に接続されているデバイス側データバス３３Ｂとを含む。ＣＰＵ１１がデバイス４０に対してデータを書き込む場合には、ＣＰＵ側データバス３３Ａからデバイス側データバス３３Ｂへとデータが転送される。この場合、データの転送元がＣＰＵ１１、転送先がデバイス４０である。ＣＰＵ１１がデバイス４０からデータを読み出す場合には、デバイス側データバス３３ＢからＣＰＵ側データバス３３Ａへとデータが転送される。この場合、データの転送元がデバイス４０、転送先がＣＰＵ１１である。
【００２８】
疑似故障発生判定回路２３は、検出フラグレジスタ２３Ｒを含む。疑似故障発生判定回路２３は、条件データ判定回路２４に対し、データ一致信号Ｃ８の信号線で接続され、疑似故障データ注入回路２５に対し、疑似故障データ注入信号Ｃ９の信号線で接続されている。疑似故障発生判定回路２３は、アドレス一致信号Ｃ３、データ一致信号Ｃ８、条件フラグ信号Ｃ５、および検出フラグ信号Ｃ６に基づいて、疑似故障を発生させるかどうかを判定する。疑似故障発生判定回路２３は、アドレス一致信号Ｃ３から、アドレスバス３２のアドレスと条件のアドレスとの一致を把握し、データ一致信号Ｃ８から、データバス３３のデータと条件のデータとの一致を把握する。疑似故障発生判定回路２３は、アドレス一致かつデータ一致の場合に、部分条件の成否および疑似故障の発生に係わる判定を行う。
【００２９】
擬似故障発生判定回路２３は、条件フラグ信号Ｃ５の内容、検出フラグ信号Ｃ６の内容、および検出フラグレジスタ２３Ｒの内容に基づいて、条件の複数の部分条件の成否の状況を判断する。疑似故障発生判定回路２３は、その状況の判断に応じて、疑似故障を発生させる否か、すなわち疑似故障データを注入するか否かを判定する。疑似故障発生判定回路２３は、条件における所定の複数の部分条件が、発生の順序によらずに、すべて成立した状態になった場合、特定の疑似故障データを注入すると判定する。実施の形態１では、所定の複数の部分条件の事象（対応するアドレスおよびデータ）の発生の順序は、順不同でよい。言い換えると、所定の複数の部分条件は、順不同による複数のパターンを含んでいる。具体的に、疑似故障発生判定回路２３は、検出フラグレジスタ２３Ｒの値が、条件フラグの値の状態になった場合、その条件フラグに対応付けられる特定の疑似故障データを注入すると判定する。
【００３０】
疑似故障発生判定回路２３は、条件の複数の部分条件の成否の状況を、検出フラグレジスタ２３Ｒに記憶する。検出フラグレジスタ２３Ｒは、「検出フラグ」（対応する検出フラグ信号Ｃ６）による部分条件の検出の状態を記憶するレジスタである。「検出フラグ」は、条件の複数の部分条件（対応する事象のアドレス）毎にビットに対応させた情報である。検出フラグレジスタ２３Ｒの各ビットには、検出フラグ信号Ｃ６の各ビット値に基づいて、部分条件毎の発生、成立の状態が記憶される。疑似故障発生判定回路２３は、部分条件の成立毎に擬似故障データを注入すると判定した場合、検出フラグ信号Ｃ６の対応するビット値１を、検出フラグレジスタ２３Ｒの対応するビットに設定する。検出フラグレジスタ２３Ｒのビット値が、「条件フラグ」（対応する条件フラグ信号Ｃ５）のビット値と同じ（例えばすべてのビットが１）になった場合、条件の所定の複数の部分条件が成立した状態に相当する。この状態の場合、疑似故障発生判定回路２３は、特定の疑似故障データを注入すると判定する。
【００３１】
疑似故障発生判定回路２３は、判定結果を表す信号である疑似故障データ注入信号Ｃ９を、疑似故障データ注入回路２５に通知する。疑似故障データ注入信号Ｃ９の値は、例えば、注入の場合にはTRUE（１）、非注入の場合にはFALSE（０）が設定される。
【００３２】
検出フラグレジスタ２３Ｒは、実施の形態１では２ポートレジスタで実装されている。２ポートレジスタは、同じレジスタ領域に対する読み出しと書き込みとの両方が同時に可能である構造のレジスタである。具体的に、検出フラグレジスタ２３Ｒに対する読み書き同時アクセスとしては、条件フラグ信号Ｃ５との値の比較のための読み出しと、検出フラグ信号Ｃ６の値の書き込みとの２つのアクセスがある。
【００３３】
疑似故障データ注入回路２５は、データバス３３に疑似故障データを注入する回路である。疑似故障データ注入回路２５は、実施の形態１ではセレクタで実装されている。疑似故障データ注入回路２５は、データバス３３において、ＣＰＵ側データバス３３Ａとデバイス側データバス３３Ｂとの間に接続されている。疑似故障データ注入回路２５は、疑似故障発生判定回路２３からの疑似故障データ注入信号Ｃ９に基づいて、データバス３３に、疑似故障データ信号Ｃ７の「疑似故障データ」を注入する。疑似故障データ注入信号Ｃ９の値がFALSE（０）である場合、非注入を意味し、TRUE（１）である場合、注入を意味する。疑似故障データ注入回路２５は、通常時、すなわち非注入時には、本来のデータバス３３の動作として、ＣＰＵ側データバス３３Ａとデバイス側データバス３３Ｂとの間で本来のデータを選択して転送する。疑似故障データ注入回路２５は、注入時には、ＣＰＵ側データバス３３Ａとデバイス側データバス３３Ｂとの間で、本来のデータに代わって、疑似故障データ信号Ｃ７の「疑似故障データ」を選択して転送する。
【００３４】
なお、疑似故障データの転送の仕方は、ＣＰＵ１１が実行している命令の種類がデータ書き込みであるかデータ読み出しであるかに応じて異なる。この転送は、データ書き込みの場合にはＣＰＵ側データバス３３Ａからデバイス側データバス３３Ｂへの転送であり、データ読み出しの場合にはデバイス側データバス３３ＢからＣＰＵ側データバス３３Ａへの転送である。
【００３５】
設定回路２６は、ＣＰＵ１１、アドレステーブル２１、疑似故障データテーブル２２および疑似故障発生判定回路２３等と接続されている。設定回路２６は、ＣＰＵ１１からの設定指示に従って、アドレステーブル２１、疑似故障データテーブル２２および検出フラグレジスタ２３Ｒに、それぞれの設定データを設定する。これらの設定データの内容は、テスト対象システム１００および疑似故障注入テストの内容に応じて変更可能である。
【００３６】
［アドレステーブル等の構成］
図４は、アドレステーブル２１、疑似故障データテーブル２２、疑似故障発生判定回路２３等の構成を示す。アドレステーブル２１は、データ項目の列として、インデックス（＃）２１ａ、アドレス２１ｂを有する。アドレステーブル２１等の各テーブルの行におけるインデックスを除く部分をエントリーとも記載する。エントリーにおけるアドレス２１ｂは、アドレスバス３２の対象アドレス値を表すデータである。アドレステーブル２１の複数の行の複数のエントリーにおいて、異なる複数のアドレスが設定されている。例えばアドレスＡ１，Ａ２，Ａ３は異なる３個のアドレス値を示す。
【００３７】
疑似故障データテーブル２２は、列として、インデックス２２ａ、条件データ２２ｂ、条件フラグ２２ｃ、検出フラグ２２ｄ、疑似故障データ２２ｅを有する。インデックス２２ａは、アドレステーブル２１のインデックス２１ａと対応させて設けられている。すなわち、疑似故障データテーブル２２は、アドレステーブル２１のエントリーの数と同じ数のエントリーを有する。エントリーにおける、条件データ２２ｂ、条件フラグ２２ｃ、検出フラグ２２ｄ、および疑似故障データ２２ｅは、前述の「条件データ」、「条件フラグ」、「検出フラグ」、および「疑似故障データ」を格納する各領域である。疑似故障データテーブル２２の複数の行において、「条件データ」や「疑似故障データ」等の値をセットとして、複数のエントリーが設定されている。これらの複数のエントリーは、概略的に、複数の部分条件を表しており、特定の疑似故障データを発生させるための特定の部分条件のエントリー（例えば最後の行のエントリー）を含む。条件フラグ２２ｃおよび検出フラグ２２ｄは、それぞれ、複数のビットを有し、これらの複数のビットは複数の対象アドレスと対応させられている。図示の例では、条件フラグ２２ｃおよび検出フラグ２２ｄにおいて２ビットを用いる場合を示すが、これに限らず、複数のビットが可能である。
【００３８】
また、検出フラグレジスタ２３Ｒは、検出フラグ２２ｄの複数のビットに対応させた複数のビットを有する。本例では、条件フラグ２２ｃ、検出フラグ２２ｄ、および検出フラグレジスタ２３Ｒの２ビットは、２つのセンサ１０２の信号ＳＩＮ１，ＳＩＮ２の２つの入力ポートＩＮ１，ＩＮ２の２つのアドレス値に対応させられる。
【００３９】
検出フラグ２２ｄは、条件の設定で、部分条件（対応するアドレス）毎の特定のビット箇所に値１がセットされている。部分条件が成立した場合、対応する検出フラグ２２ｄのビット値１が、検出フラグ信号Ｃ６によって、検出フラグレジスタ２３Ｒの対応するビットに設定される。
【００４０】
疑似故障注入回路２０は、連想メモリであるアドレステーブル２１によって、アドレスバス３２において転送されているアドレス（対応するアドレス信号Ｃ１）に一致するアドレスを検索して検出する。疑似故障注入回路２０は、アドレステーブル２１におけるアドレス信号Ｃ１に該当するアドレス値があったエントリーの位置のインデックス２１ａの値を、インデックス信号Ｃ２に設定する。そのインデックス信号Ｃ２が疑似故障データテーブル２２に通知される。また、アドレステーブル２１は、アドレス信号Ｃ１のアドレス値と一致するアドレスをアドレス２１ｂから検出した場合、アドレス一致信号Ｃ３の値をTRUE（ビット値１）として、疑似故障発生判定回路２３に通知する。
【００４１】
疑似故障データテーブル２２において、アドレステーブル２１からのインデックス信号Ｃ２が指すインデックス２２ａのエントリーが選択、参照される。疑似故障注入回路２０は、選択されたエントリーにおける、条件データ２２ｂに対応する条件データ信号Ｃ４を、条件データ判定回路２４に通知する。また、疑似故障注入回路２０は、条件フラグ２２ｃに対応する条件フラグ信号Ｃ５、および検出フラグ２２ｄに対応する検出フラグ信号Ｃ６を、疑似故障発生判定回路２３に通知する。また、疑似故障注入回路２０は、疑似故障データ２２ｅに対応する疑似故障データ信号Ｃ７を、疑似故障データ注入回路２５に通知する。
【００４２】
条件データ判定回路２４は、データバス３３および制御バス３１のアクセス状態、すなわち転送されているデータや制御信号を参照する。条件データ判定回路２４は、制御バス３１の状態から、ＣＰＵ１１が実行している命令が、データバス３３へのデータ書き込みであるか、データバス３３からのデータ読み出しであるかを調べる。データ書き込みに対応する命令は、例えばＳＴＯＲＥ／ＯＵＴ命令等がある。データ読み出しに対応する命令は、例えばＬＯＡＤ／ＩＮ命令等がある。
【００４３】
条件データ判定回路２４は、データ書き込みの場合には、ＣＰＵ側データバス３３Ａのデータ値を選択し、データ読み出しの場合には、デバイス側データバス３３Ｂのデータ値を選択する。条件データ判定回路２４は、データバス３３から選択したデータ値と、条件データ信号Ｃ３の条件データ値とを比較し、比較結果を表す値を、データ一致信号Ｃ８に設定する。データ値が一致する場合には、データ一致信号Ｃ８の値にTRUE（１）が設定される。
【００４４】
［アドレステーブル等の設定例］
図９は、アドレステーブル２１、疑似故障データテーブル２２、および検出フラグレジスタ２３Ｒの設定例を示す。テスト作業者の操作に基づいて、アドレステーブル２１等に、図１のテスト対象システム１００の疑似故障注入テストのための設定データが設定される。
【００４５】
本例では、アドレステーブル２１において、例えばインデックス＃１〜＃３の３行のデータが設定されている。インデックス＃１のエントリーには、入力デバイスＤＩＮ１の入力ポートＩＮ１のアドレスＡ１が設定されている。インデックス＃２のエントリーには、入力デバイスＤＩＮ２の入力ポートＩＮ２のアドレスＡ２が設定されている。インデックス＃３のエントリーには、出力デバイスＤＯＵＴ１の出力ポートＯＵＴ１のアドレスＡ３が設定されている。例えば、入力ポートＩＮ１のアドレスＡ１は、図２の入出力デバイス１３のうちの入力デバイス１３１（ＤＩＮ１）の入力ポートＩＮ１および信号ＳＩＮ１に対応するアドレス値である。
【００４６】
疑似故障データテーブル２２において、アドレステーブル２１の３個のエントリーに対応させて例えばインデックス＃１〜＃３の３行のデータが設定されている。例えば、インデックス＃１の第１エントリーには、条件データとしてビット値１が設定され、疑似故障データとしてビット値１が設定されている。また、条件フラグは、２ビットとして、入力ポートＩＮ１用の１ビット（第１ビット）、入力ポートＩＮ２用の１ビット（第２ビット）を有し、第１ビットに０、第２ビットに０が設定されている。同様に、検出フラグは、入力ポートＩＮ１用の１ビット、入力ポートＩＮ２用の１ビットを有し、第１ビットに１、第２ビットに０が設定されている。まとめると、インデックス＃１の第１エントリーには、データ値｛１，０，０，１，０，１｝が設定されている。インデックス＃２の第２エントリーには、データ値｛１，０，０，０，１，１｝が設定されている。インデックス＃３の第３エントリーには、データ値｛１，１，１，０，０，０｝が設定されている。
【００４７】
本設定例では、特に、インデックス＃１，＃２の２つのエントリーでは、検出フラグの特定のアドレスに対応した特定のビットに値１が設定されている。すなわち、インデックス＃１の第１エントリーでは、第１部分条件として、入力ポートＩＮ１の第１ビットに値１が設定され、インデックス＃２の第２エントリーでは、第２部分条件として、入力ポートＩＮ２の第２ビットに値１が設定されている。これにより、順不同の所定の複数の部分条件が表されている。そして、インデックス＃３の第３エントリーでは、条件フラグに値｛１，１｝が設定されており、検出フラグには値｛０，０｝が設定されている。第３エントリーは、特定の部分条件（第３部分条件）を表しており、特定の疑似故障データが設定されている。インデックス＃１，＃２のエントリーの疑似故障データは値１（すなわちロック状態を表す）である。それに対し、インデックス＃３の第３エントリーの特定の疑似故障データは値０（すなわちアンロック状態を表す）として異なる値が設定されている。
【００４８】
［処理フロー］
図５〜図８は、疑似故障注入回路２０の疑似故障注入処理に係わる処理フローを示す。なお、予め、前述の設定回路２６等を用いて、アドレステーブル２１等には、条件の設定データが設定されている。
【００４９】
図５は、第１処理フローとして、最初のアドレステーブル２１の処理や疑似故障データテーブル２２の処理を示す。記号Ａ１等は複数のフロー間のつながりを示す。まず、ステップS100で、疑似故障注入回路２０は、ＣＰＵ１１がアドレスバス３２に送出したアドレス値をアドレス信号Ｃ１から参照し、そのアドレス値に一致するアドレス値のエントリーがアドレステーブル２１内のアドレス２１ｂに有るかどうかを検出する。連想メモリであるアドレステーブル２１によってこの検出が可能である。アドレステーブル２１内に、対象アドレス値のエントリーが有る場合（S100-Y，TRUE）にはステップS101へ、無い場合（S100-N，FALSE）にはステップS102へ進む。
【００５０】
ステップS101で、疑似故障注入回路２０は、アドレス一致信号Ｃ３の値にTRUE（１）を設定し、該当するアドレス値があったエントリーのインデックス２１ａの値を、インデックス信号Ｃ２に設定し、ステップS110に進む。ステップS102で、疑似故障注入回路２０は、アドレス一致信号Ｃ３の値にFALSE（０）を設定し、ステップS110に進む。
【００５１】
ステップS110で、疑似故障注入回路２０は、疑似故障データテーブル２２から、インデックス信号Ｃ２が指すインデックス２２ａの位置にあるエントリーのデータ｛条件データ２２ｂ，条件フラグ２２ｃ，検出フラグ２２ｄ，疑似故障データ２２ｅ｝を読み出す。疑似故障注入回路２０は、その条件データ２２ｂの値の条件データ信号Ｃ４を条件データ判定回路２４に送出する。疑似故障注入回路２０は、その条件フラグ２２ｃの値の条件フラグ信号Ｃ５、およびその検出フラグ２２ｄの値の検出フラグ信号Ｃ６を、疑似故障発生判定回路２３に送出する。疑似故障注入回路２０は、その疑似故障データ２２ｅの値の疑似故障データ信号Ｃ７を、疑似故障データ注入回路２５に送出する。ステップS110の次にステップS120へ進む。
【００５２】
図６は、第２処理フローとして、条件データ判定回路２４の条件データ判定処理等を示す。ステップS120で、条件データ判定回路２４は、制御バス３１の制御信号の状態を参照することで、ＣＰＵ１１が実行している命令が、データバス３３に対するデータ書き込み（Ｗ）であるかデータ読み出し（Ｒ）であるかを調べる。データ書き込み（Ｗ）である場合（S120-Ｗ）にはステップS121へ、データ読み出し（S120-Ｒ）である場合にはステップS122へ進む。ステップS121で、条件データ判定回路２４は、ＣＰＵ側データバス３３Ａのデータ値を読み取り、ステップS123に進む。ステップS122で、条件データ判定回路２４は、デバイス側データバス３３Ｂのデータ値を読み取り、ステップS123に進む。
【００５３】
ステップS123で、条件データ判定回路２４は、読み取ったデータ値が、条件データ信号Ｃ４の条件データ値と一致するかどうかを比較判定する。データ値が一致の場合（S123-Y）にはステップS124に、非一致の場合（S123-N）にはステップS125に進む。
【００５４】
なお、上記条件データの構成および判定方式に限定されるものではなく、他の構成として、後述する変形例の条件データの構成および判定方式を適用してもよい。
【００５５】
ステップS124で、疑似故障注入回路２０は、データ一致信号Ｃ８の値をTRUE（１）に設定し、ステップS130に進む。ステップS124で、疑似故障注入回路２０は、データ一致信号Ｃ８の値をFALSE（０）に設定し、ステップS130に進む。
【００５６】
図７は、第３処理フローとして、疑似故障発生判定回路２３による疑似故障発生判定処理等を示す。ステップS130で、疑似故障発生判定回路２３は、アドレス一致信号Ｃ３の値がTRUE（１）である場合（S130-Y）にはステップS131に、FALSEである場合（S130-N）にはステップS135に進む。ステップS131で、疑似故障発生判定回路２３は、データ一致信号Ｃ８の値がTRUE（１）である場合（S131-Y）にはステップS132に、FALSEである場合（S131-N）にはステップS135に進む。
【００５７】
ステップS132で、疑似故障発生判定回路２３は、条件フラグ信号Ｃ５の条件フラグの複数のビットを、対応するビット位置毎に参照して、条件フラグのビット値が１であるビット箇所に対応する検出フラグレジスタ２３Ｒのビット箇所のビット値を調べる。疑似故障発生判定回路２３は、条件フラグのビット値が１のビット箇所に対応する検出フラグレジスタ２３Ｒのビット箇所で０がないかを判断する。この判断で、０がない場合（S132-Y）にはステップS133に進み、０がある場合（S132-N）にはステップS135に進む。
【００５８】
なお、上記条件フラグの構成および判定方式に限定されるものではなく、他の構成として、後述する変形例の条件フラグの構成および判定方式を適用してもよい。
【００５９】
ステップS133で、疑似故障発生判定回路２３は、疑似故障を発生させる、すなわち疑似故障データを注入すると判定して、疑似故障データ注入信号Ｃ９の値をTRUE（１）に設定し、ステップS134に進む。
【００６０】
ステップS134で、疑似故障発生判定回路２３は、検出フラグ信号Ｃ６の検出フラグをビット毎に参照して、検出フラグのビット値が１であるビット箇所に対応する検出フラグレジスタ２３Ｒのビット箇所の値を１に設定し、ステップS140に進む。
【００６１】
ステップS135で、疑似故障発生判定回路２３は、疑似故障を発生させない、すなわち疑似故障データを注入しないと判定して、疑似故障データ注入信号Ｃ９の値をFALSE（０）に設定し、ステップS140に進む。
【００６２】
なお、上記検出フラグおよび検出フラグレジスタ２３Ｒの構成および判定方式に限定されるものではなく、他の構成として、後述する変形例の検出フラグおよび検出フラグレジスタの構成および判定方式を適用してもよい。
【００６３】
図８は、第４処理フローとして、疑似故障データ注入回路２５による疑似故障データ注入処理等を示す。ステップS140で、疑似故障データ注入回路２５は、疑似故障データ注入信号Ｃ９の値がTRUEである場合（S140-Y）にはステップS141に進み、FALSEである場合（S140-N）には、本フローを終了する。ステップS141で、疑似故障データ注入回路２５は、制御バス３１の状態を参照することで、ＣＰＵ１１が実行している命令がデータ読み出しであるかデータ書き込みであるかを調べ、データ書き込みである場合（Ｗ）には、ステップS142に進み、データ読み出しである場合（Ｒ）にはステップS143に進む。なお、この処理の際には、疑似故障データ注入回路２５が制御バス３１の状態を参照して判断してもよいし、条件データ判定回路２４が調べた結果を疑似故障データ注入回路２５が受け取って判断してもよい。
【００６４】
ステップS142で、疑似故障データ注入回路２５は、デバイス側データバス３３Ｂのデータ値に、疑似故障データ信号Ｃ９の疑似故障データ値を設定し、本フローを終了する。ステップS143で、疑似故障データ注入回路２５は、ＣＰＵ側データバス３３Ａのデータ値に、疑似故障データ信号Ｃ９の疑似故障データ値を設定し、本フローを終了する。
【００６５】
なお、上記疑似故障データ注入の構成および設定方式に限定されるものではなく、他の構成として、後述する変形例の疑似故障データ注入の構成および設定方式を適用してもよい。
【００６６】
［疑似故障注入テストの実行例］
上記マイコン１の疑似故障注入回路２０を用いて、図１のテスト対象システム１００である搬送ライン安全システムの搬送ライン安全制御機能１Ａに関する疑似故障注入テストを実行する例について以下に説明する。マイコン１の搬送ライン安全制御機能１Ａの正常な機能の概要は以下である。搬送ライン安全制御機能１Ａは、前述のように、搬送ライン１０１の稼動時には、安全ドアスイッチ１０４をロック状態にし、安全ドア１０３を閉状態にする。搬送ライン安全制御機能１Ａは、安全ドアスイッチ１０４がアンロック状態である安全ドア１０３の開状態の時には、搬送ライン１０１を非稼動状態にする。
【００６７】
マイコン１の搬送ライン安全制御機能１Ａは、２つのセンサ１０２からの信号ＳＩＮ１，ＳＩＮ２の入力に基づいて、搬送ライン１０１の稼動の状態を把握する。搬送ライン安全制御機能１Ａは、２つの信号ＳＩＮ１，ＳＩＮ２の両方がＯＮ（１）である場合には、搬送ライン１０１が稼働中の状態であると判断する。搬送ライン安全制御機能１Ａは、その稼働中の状態である場合には、出力の信号ＳＯＵＴ１を、安全ドアスイッチ１０４をロック状態にすることを表す値であるＯＮ（１）にする。
【００６８】
上記搬送ライン安全制御機能１Ａに関する疑似故障注入テストの例として、搬送ライン１０１の稼動時に、マイコン１からの出力の信号ＳＯＵＴ１の値が、正常時にはＯＮ（１）になるべきところ、疑似故障としてＯＦＦ（０）にするテストが挙げられる。なお、この疑似故障注入テストを含む、より大きな意味でのテストとしては、この疑似故障注入テストによって信号ＳＯＵＴ１がＯＦＦ（０）すなわちアンロック状態となって安全ドア１０３が開状態になってしまった場合に、搬送ライン１０１の稼動が停止されるかどうかのテストが挙げられる。このようなテストがテスト作業者によって行われる。
【００６９】
まず、アドレステーブル２１等には、テスト作業者のＰＣ１５０からの操作に基づいて、ＣＰＵ１１から設定回路２６を通じて、行うべき疑似故障注入テスト用の設定データが設定される。
【００７０】
前述の図９は、上記疑似故障注入テスト例に対応するアドレステーブル２１、疑似故障データテーブル２２、および検出フラグレジスタ２３Ｒの設定例、特に第１時点の第１状態を示す。前述のように、第１状態では、アドレステーブル２１におけるインデックス＃１〜＃３の３個のエントリーを有し、入力ポートＩＮ１のアドレスＡ１、入力ポートＩＮ２のアドレスＡ２、および出力ポートＯＵＴ１のアドレスＡ３が設定されている。また、前述のように、疑似故障データテーブル２２において、アドレステーブル２１に対応して、インデックス＃１〜＃３の３個のエントリーの各データが設定されている。
【００７１】
また、最初、検出フラグレジスタ２３Ｒには、値０ｂ００が設定されている。“０ｂ”はビット表現を示す。検出フラグレジスタ２３Ｒの第１ビット（「ＩＮ１」ビット）に値０、第２ビット（「ＩＮ２」ビット）に値０が設定されている。
【００７２】
以下、上記疑似故障注入テストの実行時における、条件の複数の事象の具体的な発生の順序の例と共に、動作例を示す。以下の例では、事象の発生の順序のパターンとして、第１パターン、第２パターンを示す。第１パターンは、第１時点に信号ＳＩＮ１がＯＮとなり、第２時点に信号ＳＩＮ２がＯＮとなる場合である。また、第２パターンは、第１時点に信号ＳＩＮ２がＯＮとなり、第２時点に信号ＳＩＮ１がＯＮとなる場合である。まず、第１パターンの場合には以下の通りである。図９〜図１１には、動作中の各状態に対応して、各テーブル等の設定状態の変化を示している。
【００７３】
（１．第１時点）  第１時点で、例えば、一方のセンサ１０２が搬送ライン１０１の稼動を検知し、そのセンサ１０２から値がＯＮ（１）の信号ＳＩＮ１が発生する。その信号ＳＩＮ１が、マイコン１の入力デバイス１３１（ＤＩＮ１）の入力ポートＩＮ１に入力される。これにより、入力ポートＩＮ１に対応するデータ値が１となる。
【００７４】
（１−１）  ＣＰＵ１１は、入力ポートＩＮ１からデータ読み出しをする。この際、まず、デバイス側データバス３３Ｂにおいて転送されるデータ値が１となる。また、対応して、アドレスバス３２において転送されるアドレス値は、入力ポートＩＮ１のアドレス値Ａ１となる。対応するアドレス信号Ｃ１は、そのアドレス値Ａ１を持つ。
【００７５】
（１−２）  疑似故障注入回路２０は、アドレス信号Ｃ１＝Ａ１に基づいて、アドレステーブル２１からアドレス値を検索する（図５のS100）。連想メモリであるアドレステーブル２１において、アドレス値Ａ１に対応して、インデックス＃１のエントリーが該当する。この結果、インデックス信号Ｃ２にインデックス＃１が設定される。また、アドレス一致信号Ｃ３にTRUEが設定される（S101）。
【００７６】
（１−３）  疑似故障注入回路２０は、疑似故障データテーブル２２から、インデックス信号Ｃ２のインデックス＃１が指すエントリーを参照する（S110）。インデックス＃１の第１エントリーにおいて、条件データ値１が条件データ信号Ｃ４として出力される。条件データ判定回路２４は、入力ポートＩＮ１のデータ読み出しであるため、デバイス側データバス３３Ｂのデータ値＝１を参照する（S122）。条件データ判定回路２４は、条件データ値１とデバイス側データバス３３Ｂのデータ値１とを比較した結果、一致しているので、データ一致信号Ｃ８にTRUEを設定する（S124）。
【００７７】
（１−４）  アドレス一致信号Ｃ３がTRUEであり（S130）、かつ、データ一致信号Ｃ８がTRUEである（S131）。疑似故障発生判定回路２３は、疑似故障データテーブル２２のインデックス＃１の第１エントリーに対応する条件フラグ信号Ｃ５の値０ｂ００と、検出フラグレジスタ２３Ｒの値０ｂ００とを比較する（S132）。この比較の結果、値０ｂ００と値０ｂ００であるため、TRUEと判定される。この結果、疑似故障データ注入信号Ｃ９にTRUEが設定される（S133）。
【００７８】
（１−５）  疑似故障発生判定回路２３は、疑似故障データテーブル２２のインデックス＃１の第１エントリーに対応する検出フラグ信号Ｃ６の値０ｂ１０から、検出フラグレジスタ２３Ｒの値を更新する。第１時点では、検出フラグの「ＩＮ１」ビット値が１であるため、検出フラグレジスタ２３Ｒの対応する「ＩＮ１」ビットに値１が設定される（S134）。その結果、検出フラグレジスタ２３Ｒの値は０ｂ１０になる（図９の検出フラグレジスタ２３Ｒの更新）。
【００７９】
（１−６）  疑似故障データ注入信号Ｃ９がTRUEである（S140）。また、この際、ＣＰＵ１１は、入力ポートＩＮ１のデータ読み出しをしている（S141）。疑似故障データ注入回路２５は、疑似故障データテーブル２２のインデックス＃１の第１エントリーに対応する疑似故障データ信号Ｃ７の値１を、ＣＰＵ側データバス３３Ａに設定する（S143）。上記のように、第１時点では、第１エントリーに対応する第１部分条件の事象（アドレス値Ａ１，データ値１）が成立している。これに対応する疑似故障データ値１によって、出力の信号ＳＯＵＴ１の値はＯＮ（１）、すなわちロック状態となる。
【００８０】
（２．第２時点）  図１０は、第２時点のテーブル等の状態を示す。第２時点では、例えば、他方のセンサ１０２が搬送ライン１０１の稼動を検知し、そのセンサ１０２から値がＯＮ（１）の信号ＳＩＮ２が発生する。信号ＳＩＮ２がマイコン１の入力デバイス１３２（ＤＩＮ２）の入力ポートＩＮ２に入力される。これにより、入力ポートＩＮ２に対応するデータ値が１となる。以下の第２時点の動作内容は、上記第１時点の動作内容と概略的には同様となる。
【００８１】
（２−１）  ＣＰＵ１１は、入力ポートＩＮ２からデータ読み出しをする。この際、まず、デバイス側データバス３３Ｂにおいて転送されるデータ値が１となり、アドレスバス３２において転送されるアドレス値が入力ポートＩＮ２のアドレス値Ａ２となる。
【００８２】
（２−２）  疑似故障注入回路２０は、アドレス信号Ｃ１＝Ａ２に基づいて、アドレステーブル２１を検索した結果、アドレスＡ２に対応するインデックス＃２が該当し、インデックス信号Ｃ２にインデックス＃２が設定される。また、アドレス一致信号Ｃ３にTRUEが設定される。
【００８３】
（２−３）  疑似故障注入回路２０は、疑似故障データテーブル２２から、インデックス信号Ｃ２＝＃２が指す第２エントリーを参照する。インデックス＃２の第２エントリーにおいて、条件データ値１である。条件データ判定回路２４は、条件データ値１とデバイス側データバス３３Ｂのデータ値１とを比較した結果、データ一致信号Ｃ８にTRUEを設定する。
【００８４】
（２−４）  アドレス一致信号Ｃ３がTRUE、かつ、データ一致信号Ｃ８がTRUEである。疑似故障発生判定回路２３は、疑似故障データテーブル２２のインデックス＃２の第２エントリーにおける条件フラグの値０ｂ００と、検出フラグレジスタ２３Ｒの値０ｂ１０とを比較する。第２時点では、このS132の判断の結果、疑似故障データ注入信号Ｃ９にTRUEが設定される。
【００８５】
（２−５）  疑似故障発生判定回路２３は、第２エントリーに対応する検出フラグの値０ｂ０１から、「ＩＮ２」ビット値が１であるため、検出フラグレジスタ２３Ｒの「ＩＮ２」ビットに値１を設定する。その結果、検出フラグレジスタ２３Ｒの値は０ｂ１１になる（図１０の検出フラグレジスタ２３Ｒの更新）。
【００８６】
（２−６）  疑似故障データ注入信号Ｃ９がTRUEである。また、この際、ＣＰＵ１１は、入力ポートＩＮ２のデータ読み出しをしている。疑似故障データ注入回路２５は、第２エントリーの疑似故障データ値１を、ＣＰＵ側データバス３３Ａに設定する。上記第２時点で、第２部分条件（アドレス値Ａ２，データ値１）が成立した状態となっている。出力の信号ＳＯＵＴ１の値はＯＮ（１）、すなわちロック状態である。
【００８７】
（３．第３時点）  図１２は、第３時点のテーブル等の状態を示す。第３時点では、特定の疑似故障データの注入として、出力ポートＯＵＴ１のデータ値を、疑似故障データ値としてＯＦＦ（０）にする。マイコン１の出力デバイス１３３（ＤＯＵＴ１）の出力ポートＯＵＴ１から、値をＯＦＦ（０）とした信号ＳＯＵＴ１が出力される。
【００８８】
（３−１）  ＣＰＵ１１は、出力ポートＯＵＴ１に対し、信号ＳＯＵＴ１＝ＯＦＦ（０）とするためのデータ書き込みをする。この際、まず、ＣＰＵ側データバス３３Ａにおいて転送されるデータ値＝０となる。また、対応して、アドレスバス３２において転送されるアドレス値は、出力ポートＯＵＴ１のアドレス値Ａ３となる。
【００８９】
（３−２）  疑似故障注入回路２０は、アドレス信号Ｃ１＝Ａ３に基づいて、アドレステーブル２１を検索した結果、インデックス＃３のエントリーが該当する。この結果、インデックス信号Ｃ２にインデックス＃３が設定される。また、アドレス一致信号Ｃ３にTRUEが設定される。
【００９０】
（３−３）  疑似故障注入回路２０は、疑似故障データテーブル２２から、インデックス信号Ｃ２＝＃３が指す第３エントリーを参照する。第３エントリーにおいて、条件データ値１である。条件データ判定回路２４は、条件データ値１と、ＣＰＵ側データバス３３Ａのデータ値１とを比較した結果、データ一致信号Ｃ８にTRUEを設定する。
【００９１】
（３−４）  アドレス一致信号Ｃ３がTRUEであり、かつ、データ一致信号Ｃ８がTRUEである。疑似故障発生判定回路２３は、第３エントリーにおける条件フラグの値０ｂ１１と、検出フラグレジスタ２３Ｒの値０ｂ１１とを比較する（S132）。第３時点では、値０ｂ１１と値０ｂ１１との比較であり、対応するすべてのビット箇所で値１である。詳細には、条件フラグの「ＩＮ１」ビット値１に対し、検出フラグレジスタ２３Ｒの「ＩＮ１」ビット値が１であり、０がない。同様に、「ＩＮ２」ビット値にも０がない。よって、S132の判断の結果、疑似故障データ注入信号Ｃ９にTRUE（１）が設定される。
【００９２】
（３−５）  疑似故障注入回路２０は、第３エントリーにおける検出フラグの値０ｂ００に基づいて、検出フラグレジスタ２３Ｒを更新する（S134）。第３時点では、検出フラグの値０ｂ００は全ビットで０であり、ビット値１の箇所は無い。そのため、S134では、検出フラグレジスタ２３Ｒの値０ｂ１１は、そのまま変更されない（図１１の検出フラグレジスタ２３Ｒ）。
【００９３】
（３−６）  疑似故障データ注入信号Ｃ９がTRUEである。また、この際、ＣＰＵ１１は、出力ポートＯＵＴ１のデータ書き込みをしている。疑似故障データ注入回路２５は、第３エントリーにおける疑似故障データ値０を、デバイス側データバス３３Ｂに設定する。これにより、特定の疑似故障データの注入として、出力ポートＯＵＴ１の信号ＳＯＵＴ１の値がＯＦＦ（０）、すなわちアンロック状態にされる。
【００９４】
上記のように、第１パターンでは、事象の発生の順序として、最初に信号ＳＩＮ１＝ＯＮ、次に信号ＳＩＮ２＝ＯＮとなり、２つの部分条件が成立する。そして、最後に、特定の疑似故障データの信号ＳＯＵＴ１＝ＯＦＦが発生する。同じ設定において、順序が異なる第２パターンの場合でも、同様に動作する。第２パターンの場合、最初に信号ＳＩＮ２＝ＯＮ、次に信号ＳＩＮ１＝ＯＮとなり、２つの部分条件が成立する。そして、最後に、特定の疑似故障データの信号ＳＯＵＴ１＝ＯＦＦが発生する。第３エントリーにおける特定の疑似故障データ値０の注入の直前では、第１パターン、第２パターンのいずれの場合でも、検出フラグレジスタ２３Ｒは値０ｂ１１の状態となる。上記のように、条件における所定の複数の部分条件の事象（例えばアドレスＡ１，Ａ２）が発生する順序が、前後に異なる各パターンの場合で、同様に特定の疑似故障データを注入できる。
【００９５】
上記のように、実施の形態１では、条件を構成する複数の事象の発生の順序が、予め固定された１つの順序には限定されず、１回の設定で、複数の事象の発生の順序を順不同として、疑似故障データ注入が可能である。複数の信号の検知の順序が異なる各パターンがある場合でも、テスト作業者による設定変更作業を要せずに、疑似故障データ注入が可能である。なお、上記疑似故障注入テスト例では、入力信号が２つ、出力信号が１つの場合を示したが、当然ながら、これに限定されず、テスト対象システムに応じて、複数の入力信号および複数の出力信号に関して、複数の種類のアドレス値およびデータ値を扱うことで、同様に適用可能である。
【００９６】
［画面］
テスト作業者は、ＰＣ１５０からマイコン１にアクセスし、疑似故障注入テストに係わる情報やデータを画面に表示して、確認や設定することができる。画面には、例えば、前述のアドレステーブル２１等の各テーブルや検出フラグレジスタ２３Ｒ等の内容が表示される。また、画面には、擬似故障注入テストの進捗や結果等の情報が表示される。
【００９７】
［効果等（１）］
上記のように、実施の形態１によれば、疑似故障発生条件における複数の事象の発生の順序に様々なパターンが存在する場合でも、１回の設定で好適な疑似故障注入テストが可能となる。実施の形態１によれば、従来技術例よりも少ない設定作業で、効率的に疑似故障注入テストが可能である。実施の形態１によれば、１回の設定で様々なパターンに対応した疑似故障注入テストが可能であり、従来技術例よりも、対応できる疑似故障注入テストの内容を増加、範囲拡大することができる。従来技術例では、条件の設定において、複数の事象の発生の順序が固定であり、順序が異なる各パターンのテストを行うためには、パターン毎に条件の設定変更作業が必要である。それに対し、実施の形態１によれば、１回の設定に基づいて、条件における所定の複数の部分条件の発生の順序を順不同として、所定の複数の部分条件のすべてが成立した時点で、特定の疑似故障データを注入することが可能である。実施の形態１によれば、従来技術例よりも、テスト作業者による設定作業や準備作業が容易になり、疑似故障注入テスト作業の負荷を低減でき、全体的に手間および時間が削減でき、テスト工数を低減できる。
【００９８】
また、実施の形態１によれば、独立している複数の条件、すなわち部分条件同士での影響関係が無い複数の条件である場合には、疑似故障データテーブル２２等の容量の範囲内で、それらの複数の条件を設定することも可能である。例えば、マイコン１に対し、複数のテスト対象システムが並列に接続される場合に、マイコン１に、複数の条件として、各テスト対象システム毎の疑似故障発生条件を設定してもよい。その場合、マイコン１は、テスト実行時、設定されている複数の条件に基づいて、順次に１つずつテストを実行してもよいし、複数のテストを同時並列に実行してもよい。
【００９９】
上記のように、実施の形態１では、システムバス３０上の実際のアドレスおよびデータが、それぞれ、条件を構成するアドレスおよびデータと一致するかどうかを高速に検出、判定できる構成とした。また、実施の形態１では、上記条件のアドレスおよびデータ等を容易に可変に設定できる構成とし、多様な疑似故障注入テストを可能とした。
【０１００】
実施の形態１では、処理のトリガとなる対象アドレスを検出するためのアドレステーブル２１が、連想メモリで実装されている。このため、条件を構成する複数のアドレスは、連想メモリによって自動的に所定の時間内で高速に検索できる。また、実施の形態１では、アドレステーブル２１の対象アドレスのインデックスの位置と対応する同じ位置に疑似故障データテーブル２２のエントリーが配置されている。これにより、疑似故障データテーブル２２から対象アドレスに対応するエントリーの条件データ等を高速に得ることができる。すなわち、実施の形態１によれば、疑似故障発生条件の成否を高速に判定でき、その結果、疑似故障注入テストを高速に効率的に行うことができる。
【０１０１】
また、実施の形態１では、疑似故障データテーブル２２のエントリーにおける検出フラグと、それに対応する検出フラグレジスタ２３Ｒとを設ける構成とした。実施の形態１では、それらを用いて、条件における複数の部分条件の成否の状況を判定および記録する構成とした。検出フラグレジスタ２３Ｒは、部分条件に関する検出の結果を、組合せ（例えば複数の入力ポートのアドレスの組合せ）毎に記録できる構成とした。検出フラグレジスタ２３Ｒには、複数の部分条件の発生の順序を限定せずに、順不同での成否の状況が、集約して記憶できる。そして、実施の形態１では、順不同で複数の部分条件が成立した時に、特定の疑似故障データを注入できる。検出フラグレジスタ２３は、特に２ポートレジスタとした場合、複数の部分条件の成否の判断のためのデータ読み出しと、部分条件の成立の記録、設定のためのデータ書き込みとを、同時に行うことができる（S132）。よって、実施の形態１では、疑似故障発生判定をより高速に行うことができる。
【０１０２】
実施の形態１では、設定において、条件フラグには、特定の部分条件および擬似故障データのエントリーに対応させた値（例えば０ｂ１１）が設定され、検出フラグには、それぞれの部分条件の成立に対応させた値（例えば０ｂ１０，０ｂ０１）が設定されている。そして、検出フラグレジスタ２３Ｒの値が、それらの条件フラグおよび検出フラグの値に対応した状態（例えば０ｂ１１）になった場合に、特定の疑似故障データ（例えば値０）の注入を実行すべきと判定することができる。
【０１０３】
実施の形態１での擬似故障注入テスト例では、前提となる所定の複数の部分条件（例えばインデックス＃１，＃２のエントリー）の各部分条件が成立した時点毎に第１の疑似故障データ（例えば値１）を注入した。そして、それらの所定の複数の部分条件のすべてが成立した場合に、特定の部分条件（例えばインデックス＃３のエントリー）における特定の疑似故障データとして第２の疑似故障データ（例えば値０）を注入した。
【０１０４】
なお、これに限らず、他のテスト例としては、設定に応じて、条件における所定の複数の部分条件のすべてが成立するまでは疑似故障データを注入せず、すべてが成立した場合のみに疑似故障データを注入させることも可能である。また、他のテスト例としては、設定に応じて、条件として設定されている複数の部分条件のうち、一部の部分条件が成立した場合に、対応する特定の疑似故障データを注入させることも可能である。例えば、部分条件Ａ，Ｂ，Ｃのうち（Ａ，Ｂ）または（Ａ，Ｃ）を満たした場合に特定の疑似故障データＸを注入すること等が可能である。また、他のテスト例としては、設定に応じて、条件の複数の部分条件のうち、成立した部分条件の違いに応じて異なる特定の疑似故障データを注入させることも可能である。例えば、部分条件Ａ，Ｂ，Ｃのうち（Ａ，Ｂ）を満たした場合には疑似故障データＸ、（Ａ，Ｃ）を満たした場合には疑似故障データＹを注入すること等が可能である。
【０１０５】
なお、実施の形態１では、マイコン１の疑似故障注入回路２０に対し設定回路２６を通じて設定データが設定可能である。これに限らず、マイコン１自身が設定回路２６を通じてプログラムにより設定データを設定可能とする形態としてもよい。また、例えば通信網を通じてサーバから設定データがマイコン１へダウンロード可能である形態等としてもよい。
【０１０６】
［変形例（１）］
実施の形態１の変形例として以下が可能である。第１変形例の疑似故障注入回路２０は、前述の条件データ２２ｂおよび条件フラグ２２ｃの構成と判定方式について、以下のような構成を有する。
【０１０７】
図１２の（Ａ）は、第１変形例における疑似故障データテーブル２２の構成を示す。このテーブルは、条件データ２２ｂ列および条件フラグ２２ｃ列の構成として、それぞれ、マスク（MASK）とバリュー（VALUE）との２つの要素の列を持つ。マスク列とバリュー列は、対応する複数のビットを有する。この第１変形例の構成では、以下のような３種類の判定を行うことが可能である。
【０１０８】
（Ａ）  第１判定は、データバス３３のデータ値において、「MASK」列に１があるビットが、「VALUE」列のビット値と同じであるという判定である。
【０１０９】
（Ｂ）  第２判定は、データバス３３のデータ値において、「MASK」列に０があるビットで「VALUE」列に１があるビットに対し、いずれかに１があるという判定である。
【０１１０】
（Ｃ）  第３判定は、データバス３３のデータ値において、「MASK」列のビットがすべて０で「VALUE」列のビットもすべて０であるという判定である。この場合、データ値はどのような値でもよい。
【０１１１】
条件データ２２ｂを例に説明すると、疑似故障注入回路２０は、以下の式で、所定の判定を行う。この判定では、公知のビットＸＯＲ演算等を用いる。なお、以下の式１で示す所定の判定である［データ一致］は、［ＡＮＤ判定］と［ＯＲ判定］とを用いて構成されている。
【０１１２】
式１：
［ＡＮＤ判定］  ＝  （（（［データバス値］  ビットＸＯＲ  ［条件データ VALUE値］）  ビットＡＮＤ  ［条件データ  MASK値］）  ＝＝  ０）  ＡＮＤ  （［条件データ  MASK値］！＝０）。
【０１１３】
［ＯＲ判定］  ＝  （（［データバス値］  ビットＡＮＤ  ［条件データ  VALUE値］）  ビットＡＮＤ  （ビットＮＯＴ  ［条件データ  MASK値］））  ！＝  ０。
【０１１４】
［データ一致］  ＝  ［ＡＮＤ判定］  ＯＲ  ［ＯＲ判定］  ＯＲ  （［条件データ  MASK値］  ＝＝  ０  ＡＮＤ  ［条件データ  VALUE値］  ＝＝  ０）。
【０１１５】
［変形例（２）］
第２変形例の疑似故障注入回路２０は、前述の検出フラグ２２ｃの構成と設定方式、および疑似故障データ２２ｅの構成と設定方式について、以下のような構成を有する。図１２の（Ｂ）は、第２変形例における疑似故障データテーブル２２の構成を示す。このテーブルは、検出フラグ２２ｃ列および疑似故障データ２２ｅ列が、それぞれ、マスク（MASK）とバリュー（VALUE）との２つの要素の列を持つ。この第２変形例の構成では、以下の３種類の演算を行うことができる。
【０１１６】
（Ａ）  第１演算は、データバス３３のデータ値において、「MASK」列に１があるビットに、「VALUE」列のビット値を設定する演算である。
【０１１７】
（Ｂ）  第２演算は、データバス３３のデータ値において、「MASK」列に０があるビットで「VALUE」列に１があるビットについては、元のビット値を反転する演算である。
【０１１８】
（Ｃ）  第３演算は、データバス３３のデータ値において、「MASK」列に０があるビットで「VALUE」列に０があるビットについては、元のビット値と同じとする演算である。
【０１１９】
疑似故障データ２２ｅを例に説明すると、疑似故障注入回路２０は、以下の式２で、疑似故障注入データの決定に関する、所定の演算を行う。
【０１２０】
式２：
［転送先データ］  ＝  （［転送元データ］  ビットＡＮＤ  （ビットＮＯＴ  ［疑似故障データ  MASK値］））  ビットＸＯＲ  ［疑似故障データ  VALUE値］。
【０１２１】
なお、式２の「転送元」と「転送先」は、前述のように、データバス３３に対するデータ書き込みかデータ読み出しかに応じた、ＣＰＵ側データバス３３Ａまたはデバイス側データバス３３Ｂを指す。なお、第２変形例の構成が検出フラグ２２ｄに適用される場合、［転送元データ］と［転送先データ］は、共に検出フラグレジスタ２３Ｒの値になる。この場合、上記所定の演算の後に、［転送先データ］の値によって検出フラグレジスタ２３Ｒの値が更新される。
【０１２２】
（実施の形態２）
図１３〜図１９を用いて、本発明の実施の形態２の疑似故障注入装置を含む半導体装置について説明する。実施の形態２における基本的な構成は実施の形態１と同様であり、以下では、実施の形態２における実施の形態１とは異なる構成部分について説明する。
【０１２３】
［テスト対象システム］
図１３は、実施の形態２におけるテスト対象システム１００の例を示す。このテスト対象システム１００は、工場等においてテーブルの移動の停止を制御するシステムであり、説明上、テーブル停止制御システムと記載する。このテーブル停止制御システムは、典型的なアクチュエータを用いて構成されている。アクチュエータは、基準点を検出するために機械原点復帰動作が可能である。図１３のテーブル停止制御システムは、モータ２００の回転軸にテーブル２０１が設置されており、モータ２００の回転駆動に応じて、回転軸の方向として図示の左右に、テーブル２０１の水平移動が可能となっている。テーブル２０１の移動可能範囲として、図示の右端の位置Ｌ１から左端の位置Ｌ２までの範囲とする。位置Ｌ１と位置Ｌ２との間には、原点位置Ｌ０がある。このシステムは、テーブル２０１を、基本的にこの原点位置Ｌ０に停止させるように制御する。テーブル２０１の現在の位置を位置ＬＴで示す。
【０１２４】
テーブル停止制御システムは、テーブル２０１の位置を検知するための複数のセンサ２０２を有する。複数のセンサ２０２として、原点位置Ｌ０にセンサ２０２Ａが、右端の位置Ｌ１にセンサ２０２Ｂが、左端の位置Ｌ２にセンサ２０２Ｃが設置されている。各センサ２０２は、マイコン１と接続されている。各センサ２０２は、対応する位置におけるテーブル２０１の有無を検知し、検知の信号をマイコン１へ出力する。センサ２０２の信号の値は、テーブル２０１の位置（有り）を検知した場合にはＯＮ（１）、検知していない場合にはＯＦＦ（０）とする。各センサ２０２（２０２Ａ，２０２Ｂ，２０２Ｃ）の信号を、信号ＳＡ，ＳＢ，ＳＣとする。マイコン１は、各センサ２０２からの信号を、対応する入力ポートＩＮ（本例では複数の入力ポート）に入力する。また、モータ２００は、マイコン１と接続されており、マイコン１の出力ポートＯＵＴからの出力の信号に応じて、モータ２００の回転駆動が制御可能である。
【０１２５】
テーブル２０１が原点位置Ｌ０への復帰を開始する際、その時のテーブル２０１の位置ＬＴに応じて、以下のように例えば２種類の原点復帰動作の場合があり得る。すなわち、位置ＬＴが原点位置Ｌ０に対し右側にある第１の場合（第１パターンともいう）と、左側にある第２の場合（第２パターンともいう）とがある。
【０１２６】
図１３の（Ａ）は、テーブル２０１の原点復帰動作の移動に関する第１例として第１パターンの場合を示す。第１例では、テーブル２０１の位置ＬＴが、開始の時点で、原点位置Ｌ０よりも右側の位置ＬＴ１にある。テーブル２０１は、最初、位置ＬＴ１から左側に移動し、原点位置Ｌ０を通り過ぎて、位置Ｌ３まで行く。次に、テーブル２０１は、位置Ｌ３から右側に移動し、原点位置Ｌ０を通り過ぎて、位置Ｌ４まで行く。次に、テーブル２０１は、位置Ｌ４から左側に移動し、原点位置Ｌ０まで行って停止する。
【０１２７】
図１３の（Ｂ）は、テーブル２０１の原点復帰動作の移動に関する第２例として第２パターンの場合を示す。第２例では、テーブル２０１の位置ＬＴが、開始の時点で、原点位置Ｌ０よりも左側の位置ＬＴ２にある。テーブル２０１は、最初、位置ＬＴ２から左側に移動し、左端の位置Ｌ２まで行く。次に、テーブル２０１は、位置Ｌ２から右側に移動し、原点位置Ｌ０を通り過ぎて、位置Ｌ５まで行く。次に、テーブル２０１は、位置Ｌ５から左側に移動し、原点位置Ｌ０まで行って停止する。
【０１２８】
本例のように、テーブル２０１の原点復帰動作の際、テーブル２０１の移動のパターンが複数存在する。これらのパターンに応じて、時系列上、複数のセンサ２０２による信号の検知の状況が異なる。パターンに応じて、同じセンサ２０２からの同じ信号が複数回発生する場合がある。
【０１２９】
第１パターンの場合には以下の通りである。まず、第１時点で、原点位置Ｌ０のセンサ２０２Ａによる１回目の検知がされ、信号ＳＡ＝ＯＮ（１）となる。次に、第２時点で、原点位置Ｌ０のセンサ２０２Ａによる２回目の検知がされ、信号ＳＡ＝ＯＮとなる。次に、第３時点で、原点位置Ｌ０のセンサ２０２Ａによる３回目の検知がされ、信号ＳＡ＝ＯＮとなる。第２パターンの場合には以下の通りである。まず、第１時点で、左端の位置Ｌ２のセンサ２０２Ｃによる１回目の検知がされ、信号ＳＣ＝ＯＮ（１）と成る。次に、第２時点で、原点位置Ｌ０のセンサ２０２Ａによる１回目の検知がされ、信号ＳＡ＝ＯＮとなる。次に、第３時点で、原点位置Ｌ０のセンサ２０２Ａによる２回目の検知がされ、信号ＳＡ＝ＯＮとなる。
【０１３０】
上記複数のセンサ２０２の信号は、マイコン１の入力ポートＩＮにおける複数のアドレスおよびデータと対応付けられる。例えば、位置Ｌ０のセンサ２０２Ａの信号ＳＡは、入力ポートＬ０のアドレスＡＬ０に対応し、位置Ｌ１のセンサ２０２Ｂの信号ＳＢは、入力ポートＬ１のアドレスＡＬ１に対応し、位置Ｌ２のセンサ２０２Ｃの信号ＳＣは、入力ポートＬ２のアドレスＡＬ２に対応するとする。上記例では、同じ信号の同じアドレスに対する複数回のアクセスが発生する。第１パターンでは信号ＳＡ（アドレスＡＬ０）に対する３回のアクセスが発生し、第２パターンでは、信号ＳＣ（アドレスＡＬ２）に対する１回のアクセス、信号ＳＡ（アドレスＡＬ０）に対する２回のアクセスが発生する。
【０１３１】
実施の形態２におけるマイコン１は、テーブル停止制御機能１Ｃ、および疑似故障注入機能１Ｄを有する。テーブル停止制御機能１Ｃは、プログラム処理で実装されており、上記テーブル停止制御システムの制御を担う。疑似故障注入機能１Ｄは、図１４のように疑似故障注入回路５０として実装されている。この疑似故障注入機能１Ｄは、このテスト対象システム１００における複数のセンサ２０２による信号の発生の複数のパターンに対応して、１回の設定で疑似故障注入テストを行うことができる。
【０１３２】
このテスト対象システム１００に対する疑似故障注入テストの例は以下の通りである。テーブル停止制御機能１Ｃは、正常である場合、上記第１パターンや第２パターンに応じて、テーブル２０１の復帰動作を制御し、最後の時点では、原点位置Ｌ０のセンサ２０２Ａによって、テーブル２０１の位置（有り）を検知し、信号ＳＡ＝ＯＮ（１）となる。マイコン１は、その検知に基づいて、モータ２００への出力の信号によって、モータ２００の駆動を停止させる。それに対し、疑似故障注入テストでは、疑似故障注入機能１Ｄは、各パターンで最後の原点位置Ｌ０のセンサ２０２Ａによるテーブル２０１の位置（有り）の検知ができなかった場合を、疑似故障として再現する。すなわち、疑似故障注入時には、最後の時点のセンサ２０２Ａの信号の値が、ＯＮ（１）ではなく、ＯＦＦ（０）とされる。この疑似故障注入テストを含むテストの目的としては、結果的に、左端の位置Ｌ２のセンサ２０２Ｃによる検知によってモータ２００が停止される動作が、正常な機能に期待される動作である。
【０１３３】
実施の形態２における疑似故障注入機能１Ｄは、実施の形態１における疑似故障注入機能１Ｂとの大きな違いとして以下がある。疑似故障注入機能１Ｄは、疑似故障発生条件を構成する複数の事象のアドレスのセットをグループとして扱い、そのグループのアドレスの状態を考慮して、特有のインデックスを算出する。そして、疑似故障注入機能１Ｄは、そのインデックスに基づいて、疑似故障データテーブル２２のエントリーを参照する仕組みを有する。また、疑似故障注入機能１Ｄは、疑似故障発生条件の設定に応じて、部分条件の成立の時点毎に、次回の部分条件に係わるインデックスを更新できる仕組みを有する。これにより、実施の形態２では、時系列上で、各パターンの順序で信号（対応するアドレス）が発生する場合に、特に同じアドレスが複数回発生する場合でも、その状況に応じて疑似故障注入が可能である。実施の形態２では、同じアドレスに対する複数回のアクセスの回数に応じて異なる部分条件の判定が可能である。実施の形態２では、同じアドレスに対する所望の回数目のアクセスに応じて、異なる特定の疑似故障データの注入が可能である。
【０１３４】
［疑似故障注入回路］
図１４は、実施の形態２の半導体装置であるマイコン１における、疑似故障注入回路５０の構成を、ＣＰＵ１１、デバイス４０およびシステムバス３０と併せて示す。疑似故障注入回路５０は、疑似故障注入回路２０に対し、独立疑似故障データインデックステーブル５１、グループテーブル５２、グループデータインデックステーブル５３、および疑似故障データインデックス算出回路５４を追加的に有する。また、疑似故障データテーブル２２は、設定データとして設定される内容が実施の形態１から変更、追加されており、次回インデックス２２Ｂを含む。なお、図１３は、設定回路２６等の図示を省略しているが、実施の形態１と同様に適用可能である。
【０１３５】
実施の形態１での疑似故障注入回路２０は、前述のように、アドレステーブル２１からのインデックス信号Ｃ２に基づいて、直接的に、疑似故障データテーブル２３からエントリーが選択される。それに対し、実施の形態２での疑似故障注入回路５０は、アドレステーブル２１と疑似故障データテーブル２２との間に、間接的な、各テーブル（５１，５２，５３）が設けられている。すなわち、疑似故障注入回路５０は、独立疑似故障データインデックステーブル５１、グループテーブル５２、およびグループデータインデックステーブル５３を有する。疑似故障注入回路５０は、これらのテーブルおよび疑似故障データインデックス回路５４を用いて、疑似故障データインデックスを算出する。この疑似故障データインデックスは、疑似故障データテーブル２２内のエントリーを指し示す。
【０１３６】
疑似故障注入回路５０は、対象アドレスに基づいて、各テーブル（２１，５１，５２，５３）を通じて、疑似故障データインデックスの算出のための各信号（独立疑似故障データインデックス信号Ｅ１、グループ疑似故障データインデックス信号Ｅ３）を得る。そして、疑似故障データインデックス算出回路５４は、それらの信号から、疑似故障データインデックス（対応する疑似故障データインデックス信号Ｅ４）を算出する。この疑似故障データインデックスによって、疑似故障データテーブル２２からエントリーが選択される。疑似故障データテーブル２２の次回インデックス２２Ｂを含む内容は、実施の形態１と同様に、疑似故障注入テストの事前に、設定回路２６を通じて設定されている。
【０１３７】
［独立疑似故障データテーブル等の構成］
図１５は、アドレステーブル２１、疑似故障データテーブル２２、独立疑似故障データインデックステーブル５１、グループインデックステーブル５２、グループ疑似故障データインデックステーブル５３、および疑似故障データインデックス算出回路５４の構成例を示す。
【０１３８】
疑似故障注入回路５０は、アドレスバス３２のアドレス信号Ｃ１に基づいて検索されたアドレステーブル２１のインデックス２１ａを表すインデックス信号Ｃ２を、独立疑似故障データインデックステーブル５１とグループテーブル５２に通知する。インデックス信号Ｃ２によって、独立疑似故障データインデックステーブル５１内にある独立疑似故障データインデックス５１ｂが選択される。独立疑似故障データインデックステーブル５１からは、選択された独立疑似故障データインデックス５１ｂを表す信号である独立疑似故障データインデックス信号Ｅ１が、疑似故障データインデックス算出回路５４に通知される。
【０１３９】
また、インデックス信号Ｃ２によって、グループテーブル５２内にあるグループインデックス５２ｂが選択される。グループテーブル５２からは、選択されたグループインデックス５２ｂを表す信号であるグループインデックス信号Ｅ２が、グループ疑似故障データインデックステーブル５３に通知される。
【０１４０】
グループインデックス信号Ｅ２によって、グループ疑似故障データインデックステーブル５３内にあるグループ疑似故障データインデックス５３ｂが選択される。グループ疑似故障データインデックステーブル５３からは、選択されたグループ疑似故障データインデックスを表す信号であるグループ疑似故障データインデックス信号Ｅ３が、疑似故障データインデックス算出回路５４に通知される。
【０１４１】
疑似故障データインデックス算出回路５４は、疑似故障データインデックス信号Ｅ１とグループ疑似故障データインデックス信号Ｅ３とから、所定の演算、例えばビットＯＲ演算によって、疑似故障データインデックスを算出する。算出された疑似故障データインデックスを表す信号である疑似故障データインデックス信号Ｅ４が、疑似故障データテーブル２２に通知される。
【０１４２】
疑似故障データテーブル２２は、実施の形態１で説明した各データ｛インデックス２２ａ，条件データ２２ｂ，条件フラグ２２ｃ，検出フラグ２２ｄ，疑似故障データ２２ｅ｝に加え、次回インデックス２２Ｂとして、次回独立疑似故障データインデックス２２ｆと、次回グループ疑似故障データインデックス２２ｇとを有する。
【０１４３】
疑似故障データインデックス信号Ｅ４によって指し示すインデックス２２ａに対応するエントリーが選択、読み出しされる。そのエントリーにおける、条件データ２２ｂ、条件フラグ２２ｃ、検出フラグ２２ｄ、および疑似故障データ２２ｅについては、実施の形態１と同様に、各信号（Ｃ４〜Ｃ７）として各部へ通知等の処理が行われる。
【０１４４】
疑似故障注入回路５０は、そのエントリーにおける、次回独立疑似故障データインデックス２２ｆを表す信号である次回独立疑似故障データインデックス信号Ｅ５を、独立疑似故障データインデックステーブル５１に通知する。また、疑似故障注入回路５０は、疑似故障発生判定回路２３による疑似故障データ注入信号Ｃ９を、独立疑似故障データインデックステーブル５１に通知する。また、疑似故障注入回路５０は、そのエントリーにおける、次回グループ疑似故障データインデックス２２ｇを表す信号である次回グループ疑似故障データインデックス信号Ｅ６を、グループ疑似故障データインデックステーブル５３に通知する。また、疑似故障注入回路５０は、疑似故障発生判定回路２３による疑似故障データ注入信号Ｃ９を、グループ疑似故障データインデックステーブル５３に通知する。
【０１４５】
次回独立疑似故障データインデックス信号Ｅ５によって、独立疑似故障データインデックステーブル５１の独立疑似故障データインデックス５１ｂの内容が更新される。また、次回グループ疑似故障データインデックス信号Ｅ６によって、グループ疑似故障データインデックステーブル５３のグループ疑似故障データインデックス５３ｂの内容が更新される。更新は、疑似故障データ注入信号Ｃ９の値がTRUEである場合に行われる。
【０１４６】
独立疑似故障データインデックステーブル５１は、実施の形態２では、２ポートレジスタファイルで実装されている。また、グループテーブル５２は、メモリで実装されている。また、グループ疑似故障データインデックステーブル５３は、２ポートレジスタファイルで実装されている。２ポートレジスタファイルは、同時に読み書きのアクセスが可能であるレジスタファイルである。
【０１４７】
実施の形態１では、インデックス信号Ｃ２の値は、部分条件（対応するアドレス）に応じた所定の値である。それに対し、実施の形態２では、疑似故障データテーブル２２のエントリーを指す疑似故障データインデックス信号Ｅ４の値は、条件の各部分条件の成立に応じて更新された値である。疑似故障注入回路５０は、疑似故障データテーブル２２の次回インデックス２２Ｂに基づいて、部分条件の成立に応じて、次回の部分条件の判定のためのインデックス値（Ｅ５，Ｅ６）を、対応するテーブル（５１，５３）に設定可能である。
【０１４８】
実施の形態２では、グループテーブル５２等のグループとは、複数の事象のアドレスをセットとして制御するためのグループである。グループインデックスは、そのグループを表す値である。グループ疑似故障データインデックスは、グループにおける事象のアドレスの発生の状態を表す値である。独立疑似故障データインデックスは、グループとは独立に個別の事象のアドレスの発生の状態を表す値である。疑似故障データインデックスは、独立疑似故障データインデックスとグループ疑似故障データインデックスとの両方の状態を反映して算出された、疑似故障データテーブル２２のエントリーを参照するための値である。
【０１４９】
実施の形態２では、条件における部分条件の事象の発生、成立の状況に応じて、次回のインデックス（独立疑似故障データインデックス、グループ疑似故障データインデックス）が更新される。例えば、１回目の検知の信号が信号ＳＡである場合、第１パターンに該当し、１回目の検知の信号が信号ＳＣである場合、第２パターンに該当する。検知の信号のアドレスに応じて次回のアドレス値に応じたインデックスとなるように更新される。これにより、同じアドレスへのアクセスが複数回発生するテストの場合でも、１回の設定で、その時の信号の状況に応じて、異なる部分条件（対応するインデックス）を設定して、疑似故障発生判定が可能である。
【０１５０】
［処理フロー］
図１６および図１７は、実施の形態２における、実施の形態１に対して追加、変更された部分の処理フローを示す。図１６は、実施の形態２における第１処理フローを示し、図５の第１処理フローに対し、ステップS101の次に、ステップS201〜S204が追加されている。ステップS201で、疑似故障注入回路５０は、独立疑似故障データインデックステーブル５１から、インデックス信号Ｃ２が指すインデックス５１ａの位置のエントリーを読み出す。疑似故障注入回路５０は、そのエントリーの独立疑似故障データインデックス５１ｂを表す独立疑似故障データインデックス信号Ｅ１を、疑似故障データインデックス算出回路５４に送出する。
【０１５１】
ステップS202で、疑似故障注入回路５０は、グループテーブル５２から、インデックス信号Ｃ２が指すインデックス５２ａの位置のエントリーを読み出す。疑似故障注入回路５０は、そのエントリーのグループインデックス５２ｂを表すグループインデックス信号Ｅ２を、グループ疑似故障データインデックステーブル５３に送出する。
【０１５２】
ステップS203で、疑似故障注入回路５０は、グループ疑似故障データインデックステーブル５３から、グループインデックス信号Ｅ２が指すインデックス５３ａの位置のエントリーを読み出す。疑似故障注入回路５０は、そのエントリーのグループ疑似故障データインデックス５３ｂを表すグループ疑似故障データインデックス信号Ｅ３を、疑似故障データインデックス算出回路５４に送出する。
【０１５３】
ステップS204で、疑似故障データインデックス算出回路５４は、独立疑似故障データインデックス信号Ｅ１とグループ疑似故障データインデックス信号Ｅ３との２つの値の入力から、ビットＯＲ演算の結果を出力する。疑似故障データインデックス算出回路５４は、演算結果値を、疑似故障データインデックス信号Ｅ４として、疑似故障データテーブル２２へ送出する。
【０１５４】
なお、上記疑似故障データインデックス算出に関して、変形例として、ビットＯＲ演算以外の演算を適用してもよい。この演算は、例えば、２つの信号（Ｅ１，Ｅ３）の加算としてもよい。また、この演算は、例えば、独立疑似故障データインデックスを上位ビットに配置し、グループ疑似故障データインデックスを下位ビットに配置した値を得る演算としてもよい。上記演算に対応させて、疑似故障データテーブル２１のインデックス２２ａが構成される。
【０１５５】
また、図１６で、S204の後（Ａ１）には、図５のステップS110の代わりに、ステップS210を有する。ステップS210で、疑似故障注入回路５０は、疑似故障データテーブル２２から、疑似故障データインデックス信号Ｅ４が指すインデックス２２ａの位置のエントリーを読み出す。実施の形態１と同様に、そのエントリーにおける、条件データ２２ｂ、条件フラグ２２ｃ、検出フラグ２２ｄ、および疑似故障データ２２ｅのそれぞれに対応する信号（Ｃ４〜Ｃ７）が、対応する各部に送出される。疑似故障注入回路５０は、そのエントリーの次回独立疑似故障データインデックス２２ｆに対応する次回独立疑似故障データインデックス信号Ｅ５を、独立疑似故障データインデックステーブル５１に送出する。疑似故障注入回路５０は、そのエントリーの次回グループ疑似故障データインデックス２２ｇに対応する次回グループ疑似故障データインデックス信号Ｅ６を、グループ疑似故障データインデクステーブル５３に送出する。
【０１５６】
実施の形態２における条件データ判定に係わる第２処理フローは、実施の形態１の第２処理フロー（図６）と同様である。
【０１５７】
図１７は、実施の形態２における条件判定に係わる第３処理フローを示す。この第３処理フローは、実施の形態１での第３処理フロー（図７）に対し、ステップS134の次に、ステップS231，S232が追加されている。これらのステップは、部分条件の成立に応じた次回のインデックスの設定更新処理に相当する。ステップS231で、疑似故障注入回路５０は、疑似故障データテーブル２２の次回独立疑似故障データインデックス２２ｆの値を、独立疑似故障データインデックステーブル５１のインデックス信号Ｃ２が指すインデックス５１ａの位置の独立疑似故障データインデックス５１ｂに書き込む。また、ステップS231で、疑似故障注入回路５０は、疑似故障データテーブル２２の次回グループ疑似故障データインデックス２２ｇの値を、グループ疑似故障データインデックステーブル５３のグループインデックス信号Ｅ２が指すインデックス５３ａの位置のグループ疑似故障データインデックス５３ｂに書き込む。
【０１５８】
実施の形態２における第４処理フローは、実施の形態１での第４処理フロー（図８）と同様である。
【０１５９】
［設定例］
実施の形態２における、図１３の２つのパターンに対応できる疑似故障注入テストを行う場合の各テーブルの設定例は以下の通りである。疑似故障注入回路５０は、設定回路２６を通じて、各テーブル（２１，２２，５１，５２，５３）および検出フラグレジスタ２３Ｒに設定データを設定する。
【０１６０】
図１８は、各テーブル｛アドレステーブル２１，疑似故障データテーブル２２，独立疑似故障データインデックステーブル５１，グループテーブル５２，グループ疑似故障データインデックステーブル５３｝および検出フラグレジスタ２３の設定例を示す。図１８は、特にテスト開始時の第１状態を示し、第１パターンで最初にアドレスＡＬ０が発生する場合の動作を示す。
【０１６１】
アドレステーブル５１には、インデックス＃１，＃２の２行のエントリーがある。アドレス値は、インデックス＃１には入力ポートＬ２のアドレスＡＬ２、インデックス＃２には入力ポートＬ０のアドレスＡＬ０が設定されている。グループテーブル５２には、アドレステーブル２１に対応して、インデックス＃１，＃２の２行のエントリーがある。グループインデックス５２ｂは、インデックス＃１，＃２ともに、同じグループインデックス＃ｇ１が設定されている。独立疑似故障データインデックステーブル５１には、アドレステーブル２１に対応して、インデックス＃１，＃２の２行のエントリーがある。独立疑似故障データインデックス５１ｂは、インデックス＃１には値０ｘ１００、インデックス＃２には値０ｘ２００が設定されている。なお、“０ｘ”は１６進数表現を示す。０ｘ１００，０ｘ２００等の値は一例であって、識別できる複数の値であればよい。グループ疑似故障データインデックステーブル５３には、１行のグループインデックス＃ｇ１のエントリーがある。グループインデックス＃ｇ１には、グループ疑似故障データインデックス５３ｂとして、値０ｘ０が設定されている。検出フラグレジスタ２３Ｒには、１ビットの値として、値０ｂ１が設定されている。本例では、条件フラグおよび検出フラグは１ビットを用いるので、対応して検出フラグレジスタ２３Ｒも１ビットを用いる。
【０１６２】
本例では、複数のエントリーにおいて、条件フラグは、すべて値０が設定されており、検出フラグは、すべて値１が設定されている。疑似故障データは、疑似故障データインデックス値０ｘ２２０に対応した特定のエントリーのみで特定の疑似故障データ値０（すなわち出力信号＝ＯＦＦを表す値）が設定されている。
【０１６３】
［疑似故障注入テスト］
実施の形態２における疑似故障注入テストの動作例を説明する。図１３の第１パターンの場合に対応する動作例は以下の通りである。
【０１６４】
（１−１−１）  第１時点で、原点位置Ｌ０のセンサ２０２Ａによる１回目の検知がされ、信号ＳＡ＝ＯＮ（１）が、マイコン１の入力ポートＬ０に入力される。入力ポートＬ０のデータ値＝１となる。ＣＰＵ１１は入力ポートＬ１のデータを読み出す。その際、アドレスバス３２のアドレス値＝ＡＬ０となり、データバス３３のデータ値＝１となる。
【０１６５】
（１−１−２）  疑似故障注入回路５０は、アドレス信号Ｃ１＝ＡＬ０に基づいて、アドレステーブル２１を検索し、該当するインデックス＃２のインデックス信号Ｃ２を得る（S100）。アドレス一致信号Ｃ３にはTRUEが設定される（S101）。疑似故障注入回路５０は、独立疑似故障データインデックステーブル５１から、インデックス信号Ｃ２＝＃２が指すエントリーの独立疑似故障データインデックスの値０ｘ２００を得る（S201）。また、疑似故障注入回路５０は、グループテーブル５２から、インデックス信号Ｃ２＝＃２が指すエントリーのグループインデックス＃ｇ１を得る（S202）。疑似故障注入回路５０は、グループ疑似故障データインデックステーブル５３から、グループインデックス＃ｇ１が指すエントリーのグループ疑似故障データインデックスの値０ｘ０を得る（S203）。疑似故障データインデックス算出回路５４は、独立疑似故障データインデックス信号Ｅ１の値０ｘ２００とグループ疑似故障データインデックス信号Ｅ３の値０ｘ０とから、ビットＯＲ演算で、疑似故障データインデックス信号Ｅ４の値０ｘ２００を得る（S204）。
【０１６６】
疑似故障注入回路５０は、疑似故障データテーブル２２から、疑似故障データインデックスＥ４の値０ｘ２００が指すエントリーを読み出す（S210）。これにより、図１８の第１状態の場合では、条件データ値１、条件フラグ値０、検出フラグ値１、疑似故障データ値１が得られ、加えて、次回独立疑似故障データインデックスの値０ｘ２１０、次回グループ疑似故障データインデックスの値０ｘ０が得られる。疑似故障注入回路５０は、これらの値を、対応する各信号（Ｃ４〜Ｃ７，Ｅ５，Ｅ６）に設定する。
【０１６７】
条件データ判定回路２４は、実施の形態１と同様に処理を行い、この結果、データ一致信号Ｃ８にはTRUEが設定される。
【０１６８】
（１−１−３）  疑似故障発生判定回路２４は、図１７の第３処理フローで実施の形態１と同様に条件判定処理を行う。疑似故障発生判定回路２３の検出フラグレジスタ２３Ｒに関する読み書きの動作は実施の形態１と同様となる。検出フラグレジスタ２３Ｒは値０ｂ１のままとなる。S133で疑似故障データ注入信号Ｃ９にTRUEが設定される。その後の処理は以下のようになる。疑似故障注入回路５０は、次回独立疑似故障データインデックス信号Ｅ５の値０ｘ２１０を、独立疑似故障データインデックステーブル５１のインデックス＃２の独立疑似故障データインデックス５１ｂに設定する（S231）。また、疑似故障注入回路５０は、次回グループ疑似故障データインデックス信号Ｅ６の値０ｘ０を、グループ疑似故障データインデックステーブル５３のグループインデックス＃ｇ１のグループ疑似故障データインデックス５３ｂに設定する（S232）。
【０１６９】
図１９の（Ａ）は、独立疑似故障データテーブル５１およびグループ疑似故障データインデックステーブル５３について、第１状態からの更新後の第２状態を示す。本例では、グループ疑似故障データテーブル５３は、更新前後で同じ値０ｘ０を持つ。
【０１７０】
（１−２−１）  第２時点で、原点位置Ｌ０のセンサ２０２Ａによる２回目の検知がされ、同様に、信号ＳＡ＝ＯＮ（１）が入力ポートＬ０に入力される。これにより、対象のアドレス値＝ＡＬ０、データ値＝１が発生する。
【０１７１】
（１−２−２）  疑似故障注入回路５０は、アドレス値＝ＡＬ１に基づいて、アドレステーブル２１を検索し、該当するインデックス＃２を得る。疑似故障注入回路５０は、第２状態の独立疑似故障データインデックステーブル５１から、インデックス＃２が指すエントリーの独立疑似故障データインデックス５１ｂの値０ｘ２１０を得る。また、疑似故障注入回路５０は、グループテーブル５２から、インデックス＃２が指すグループインデックス＃ｇ１を得る。疑似故障注入回路５０は、グループ疑似故障データインデックステーブル５３から、グループインデックス＃ｇ１が指すエントリーのグループ疑似故障データインデックスの値０ｘ０を得る。疑似故障データインデックス算出回路５４は、独立疑似故障データインデックス信号Ｅ１の値０ｘ２１０とグループ疑似故障データインデックス信号Ｅ３の値０ｘ０から、疑似故障データインデックスＥ４の値０ｘ２１０を得る。
【０１７２】
疑似故障注入回路５０は、疑似故障データテーブル２２から、疑似故障データインデックスＥ４の値０ｘ２１０が指すエントリーを読み出す。これにより、第２状態の場合、条件データ値１、条件フラグ値０、検出フラグ値１、疑似故障データ値１が得られ、加えて、次回独立疑似故障データインデックスの値０ｘ２２０、次回グループ疑似故障データインデックスの値０ｘ０が得られる。
【０１７３】
（１−２−３）  S134後、疑似故障注入回路５０は、次回独立疑似故障データインデックス信号Ｅ５の値０ｘ２２０を、独立疑似故障データインデックステーブル５１のインデックス＃２の独立疑似故障データインデックス５１ｂに設定する。また、疑似故障注入回路５０は、次回グループ疑似故障データインデックス信号Ｅ６の値０ｘ０を、グループ疑似故障データインデックステーブル５３のグループインデックス＃ｇ１のグループ疑似故障データインデックス５３ｂに設定する。
【０１７４】
図１９の（Ｂ）は、独立疑似故障データテーブル５１およびグループ疑似故障データインデックステーブル５３について、第２状態からの更新後の第３状態を示す。本例では、グループ疑似故障データインデックスは、更新前後で同じ値０ｘ０を持つ。
【０１７５】
（１−３−１）  第３時点で、原点位置Ｌ０のセンサ２０２Ａによる３回目の検知がされ、信号ＳＡ＝ＯＮ（１）が入力ポートＬ０に入力される。これにより、対象のアドレス値＝ＡＬ０、データ値＝１が発生する。
【０１７６】
（１−３−２）  疑似故障注入回路５０は、アドレス値＝ＡＬ０に基づいて、アドレステーブル２１を検索し、該当するインデックス＃２を得る。疑似故障注入回路５０は、第３状態の独立疑似故障データインデックステーブル５１から、インデックス＃２が指すエントリーの独立疑似故障データインデックス５１ｂの値０ｘ２２０を得る。疑似故障注入回路５０は、グループテーブル５２から、インデックス＃２が指すエントリーのグループインデックス値＃ｇ１を得る。疑似故障注入回路５０は、グループ疑似故障データインデックステーブル５３から、グループインデックス信号Ｅ２＝＃ｇ１が指すエントリーのグループ疑似故障データインデックスの値０ｘ０を得る。
【０１７７】
疑似故障データインデックス算出回路５４は、独立疑似故障データインデックス信号Ｅ１の値０ｘ２２０とグループ疑似故障データインデックス信号Ｅ３の値０ｘ０から、疑似故障データインデックス信号Ｅ４の値０ｘ２２０を得る。疑似故障注入回路５０は、疑似故障データテーブル２２から、疑似故障データインデックス信号Ｅ４の値０ｘ２２０が指すエントリーを参照する。第３状態の場合、条件データ値１、条件フラグ値０、検出フラグ値１、疑似故障データ値０が得られ、加えて、次回独立疑似故障データインデックスの値０ｘ２００、次回グループ疑似故障データインデックスの値０ｘ０が得られる。
【０１７８】
（１−３−３）  S134後、疑似故障注入回路５０は、次回独立疑似故障データインデックス信号Ｅ５の値０ｘ２００を、独立疑似故障データインデックステーブル５１のインデックス＃２の独立疑似故障データインデックス５１ｂに設定する。また、疑似故障注入回路５０は、次回グループ疑似故障データインデックス信号Ｅ６の値０ｘ０を、グループ疑似故障データインデックステーブル５３のグループインデックス＃ｇ１のグループ疑似故障データインデックス５３ｂに設定する。
【０１７９】
図１９の（Ｃ）は、独立疑似故障データテーブル５１およびグループ疑似故障データインデックステーブル５３について、第３状態からの更新後の第４状態を示す。本例では、グループ疑似故障データインデックスは、更新前後で同じ値０ｘ０を持つ。
【０１８０】
（１−３−４）  S210では、疑似故障データ注入回路２５は、疑似故障データ信号Ｃ７の値０を、ＣＰＵ側データバス３３Ａに設定する。これにより、マイコン１の出力ポートＯＵＴからの出力の信号は、疑似故障注入としてＯＦＦ（０）となる。
【０１８１】
図１３の第２パターンの場合に対応する動作例は以下の通りである。最初の第１状態で、各テーブル等の設定は、第１パターンの場合（図１８）と同じである。
【０１８２】
（２−１−１）  第１時点で、左端の位置Ｌ２のセンサ２０２Ｃによる１回目の検知がされ、信号ＳＣ＝ＯＮ（１）が、マイコン１の入力ポートＬ２に入力される。これにより、対象のアドレス値＝ＡＬ２、データ値＝１が発生する。
【０１８３】
（２−１−２）  疑似故障注入回路５０は、アドレス値＝ＡＬ２に基づいて、アドレステーブル２１を検索し、該当するインデックス＝＃１を得る。アドレス一致信号Ｃ３にはTRUEが設定される。疑似故障注入回路５０は、独立疑似故障データインデックステーブル５１から、インデックス＃１が指すエントリーの独立疑似故障データインデックスの値０ｘ１００を得る。疑似故障注入回路５０は、グループテーブル５２から、インデックス＃１が指すエントリーのグループインデックス値＃ｇ１を得る。疑似故障注入回路５０は、グループ疑似故障データインデックステーブル５３から、グループインデックス信号Ｅ２＝＃ｇ１が指すエントリーのグループ疑似故障データインデックスの値０ｘ０を得る。
【０１８４】
疑似故障データインデックス算出回路５４は、独立疑似故障データインデックス信号Ｅ１の値０ｘ１００とグループ疑似故障データインデックス信号Ｅ３の値０ｘ０から、疑似故障データインデックス信号Ｅ４の値０ｘ１００を得る。疑似故障注入回路５０は、疑似故障データテーブル２２から、疑似故障データインデックス信号Ｅ４の値０ｘ１００が指すエントリーを読み出す。これにより、第１状態では、条件データ値１、条件フラグ値０、検出フラグ値１、疑似故障データ値１が得られ、加えて、次回独立疑似故障データインデックスの値０ｘ１００、次回グループ疑似故障データインデックスの値０ｘ１が得られる。
【０１８５】
（２−１−３）  S134後、疑似故障注入回路５０は、次回独立疑似故障データインデックス信号Ｅ５の値０ｘ１００を、独立疑似故障データインデックステーブル５１のインデックス＃１の独立疑似故障データインデックス５１ｂに設定する。また、疑似故障注入回路５０は、次回グループ疑似故障データインデックス信号Ｅ６の値０ｘ１を、グループ疑似故障データインデックステーブル５３のグループインデックス＃ｇ１のグループ疑似故障データインデックス５３ｂに設定する。本例では、この際、グループ疑似故障データインデックスが値０ｘ０から値０ｘ１へ更新されている。
【０１８６】
（２−２−１）  第２時点で、原点位置Ｌ０のセンサ２０２Ａによる１回目の検知がされ、信号ＳＡ＝ＯＮ（１）が入力ポートＬ０に入力される。これにより、対象のアドレス値＝ＡＬ０、データ値＝１が発生する。
【０１８７】
（２−２−２）  疑似故障注入回路５０は、アドレス値＝ＡＬ０に基づいて、アドレステーブル２１から、該当するインデックス＝＃２を得る。疑似故障注入回路５０は、インデックス＃２に基づいて、各テーブル（５１，５２，５３）から、独立疑似故障データインデックスの値０ｘ２００、グループインデックス値＃ｇ１、グループ疑似故障データインデックスの値０ｘ１を得る。疑似故障データインデックス算出回路５４は、独立疑似故障データインデックス信号Ｅ１の値０ｘ２００とグループ疑似故障データインデックス信号Ｅ３の値０ｘ１から、疑似故障データインデックス信号Ｅ４の値０ｘ２０１を得る。疑似故障注入回路５０は、疑似故障データテーブル２２から、疑似故障データインデックス信号Ｅ４の値０ｘ２０１が指すエントリーを読み出す。これにより、第２状態では、条件データ値１、条件フラグ値０、検出フラグ値１、疑似故障データ値１が得られ、加えて、次回独立疑似故障データインデックスの値０ｘ２２０、次回グループ疑似故障データインデックスの値０ｘ０が得られる。
【０１８８】
（２−２−３）  S134後、疑似故障注入回路５０は、次回独立疑似故障データインデックス信号Ｅ５の値０ｘ２２０を、独立疑似故障データインデックステーブル５１のインデックス＃２の独立疑似故障データインデックスに設定する（０ｘ２００→０ｘ２２０）。また、疑似故障注入回路５０は、次回グループ疑似故障データインデックス信号Ｅ６の値０ｘ０を、グループ疑似故障データインデックステーブル５３のグループインデックス＃ｇ１のグループ疑似故障データインデックスに設定する（０ｘ１→０ｘ０）。
【０１８９】
（２−３−１）  第３時点で、原点位置Ｌ０のセンサ２０２Ａによる２回目の検知がされ、同様に、信号ＳＡ＝ＯＮ（１）が入力ポートＬ０に入力される。これにより、対象のアドレス値＝ＡＬ０、データ値＝１が発生する。
【０１９０】
（２−３−２）  疑似故障注入回路５０は、アドレス値＝ＡＬ０に基づいて、アドレステーブル２１から、該当するインデックス＝＃２を得る。疑似故障注入回路５０は、インデックス＃２に基づいて、各テーブル（５１，５２，５３）から、独立疑似故障データインデックスの値０ｘ２２０、グループインデックス値＃ｇ１、グループ疑似故障データインデックスの値０ｘ０を得る。疑似故障データインデックス算出回路５４は、独立疑似故障データインデックス信号Ｅ１の値０ｘ２２０とグループ疑似故障データインデックス信号Ｅ３の値０ｘ０から、疑似故障データインデックス信号Ｅ４の値０ｘ２２０を得る。疑似故障注入回路５０は、疑似故障データテーブル２２から、疑似故障データインデックス信号Ｅ４の値０ｘ２２０が指すエントリーを読み出す。これにより、第３状態では、条件データ値１、条件フラグ値０、検出フラグ値１、疑似故障データ値０が得られ、加えて、次回独立疑似故障データインデックスの値０ｘ２００、次回グループ疑似故障データインデックスの値０ｘ０が得られる。
【０１９１】
（２−３−３）  S134後、疑似故障注入回路５０は、次回独立疑似故障データインデックス信号Ｅ５の値０ｘ２００を、独立疑似故障データインデックステーブル５１のインデックス＃２の独立疑似故障データインデックスに設定する（０ｘ２２０→０ｘ２００）。また、疑似故障注入回路５０は、次回グループ疑似故障データインデックス信号Ｅ６の値０ｘ０を、グループ疑似故障データインデックステーブル５３のグループインデックス＃ｇ１のグループ疑似故障データインデックスに設定する（０ｘ０→０ｘ０）。
【０１９２】
（２−３−４）  疑似故障データ注入回路２５は、疑似故障データ信号Ｃ７の疑似故障データ値０を、ＣＰＵ側データバス３３Ａに設定する。上記のように、第２パターンの場合にも、第１パターンの場合と同様に、マイコン１の出力ポートからの出力信号を、疑似故障注入としてＯＦＦ（０）とすることができる。
【０１９３】
［効果等（２）］
上記のように、実施の形態２によれば、実施の形態１と同様の効果に加え、以下のような効果を有する。実施の形態１では、アドレステーブル２１で検索された位置が、直接的に、疑似故障データテーブル２２のエントリーを指している。それに対し、実施の形態２では、アドレステーブル２１で検索された位置のインデックスに基づいて、各テーブル（５１，５２，５３）を介して間接的に得たインデックスに基づいて、疑似故障データインデックスを算出する。独立疑似故障データインデックステーブル５１からは、個別のアドレスに応じた独立疑似故障データインデックスが得られる。グループテーブル５２およびグループ疑似故障データインデックステーブル５３からは、グループのアドレスの状態に応じたグループ疑似故障データインデックスが得られる。そして、それらのインデックス（Ｅ１，Ｅ３）の両方を反映した疑似故障データインデックスが得られ、その疑似故障データインデックスによって、対応する部分条件が参照される。
【０１９４】
実施の形態２では、条件における複数の事象としての複数のアドレスの全体に同じグループ（対応するグループインデックス）を対応させて、グループ内のアドレスの状態を制御できる構成とした。設定に応じて、複数のグループの設定も可能である。また、実施の形態２では、独立疑似故障データインデックステーブル５１およびグループ疑似故障データインデックステーブル５３の値を、部分条件の成立毎に更新できる構成とした。すなわち、実施の形態２では、条件の内容を、事象の発生の状況に応じて更新できる構成とした。
【０１９５】
これにより、実施の形態２では、前述の例のように、所定の順序で事象が発生する複数のパターンがある場合にも、１回の設定で、疑似故障注入テストが可能である。また、実施の形態２では、特に、同じアドレスへの複数回のアクセスの回数に応じて疑似故障の発生の仕方が異なる場合でも、設定に応じて、所望の回数目のアクセスで、特定の疑似故障データを注入することができる。
【０１９６】
また、間接的な参照のためのテーブル（独立疑似故障データインデックステーブル５１、グループ疑似故障データインデックステーブル５３）は、特に２ポートレジスタファイルとした。この場合、このテーブルのエントリーは、インデックス信号Ｃ２からの参照（すなわちデータ読み出し）と同時に、次回インデックス２２Ｂによる更新（すなわちデータ書き込み）が可能である。よって、実施の形態２では、より高速に疑似故障注入が可能である。
【０１９７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることは言うまでもない。実施の形態におけるデータ構造としてテーブルを用いる場合を説明したが、これに限らず、他のデータ構造を適用可能である。
【符号の説明】
【０１９８】
１１…ＣＰＵ、２０…疑似故障注入回路、２１…アドレステーブル、２２…疑似故障データテーブル、２３…疑似故障発生判定回路、２４…条件データ判定回路、２５…疑似故障データ注入回路、２６…設定回路、３１…制御バス、３２…アドレスバス、３３…データバス、４０…デバイス（メモリまたはＩＯ）。
【図１】
2020095501.tif 000003
【図２】
2020095501.tif 000004
【図３】
2020095501.tif 000005
【図４】
2020095501.tif 000006
【図５】
2020095501.tif 000007
【図６】
2020095501.tif 000008
【図７】
2020095501.tif 000009
【図８】
2020095501.tif 000010
【図９】
2020095501.tif 000011
【図１０】
2020095501.tif 000012
【図１１】
2020095501.tif 000013
【図１２】
2020095501.tif 000014
【図１３】
2020095501.tif 000015
【図１４】
2020095501.tif 000016
【図１５】
2020095501.tif 000017
【図１６】
2020095501.tif 000018
【図１７】
2020095501.tif 000019
【図１８】
2020095501.tif 000020
【図１９】
2020095501.tif 000021