(57)【要約】【課題】従来の半導体装置では、安全部と同一のデバイス上に搭載される非安全部の変更の自由度が低い問題があった。【解決手段】一実施の形態によれば、機能安全システムは、第１の半導体チップ１０と第２の半導体チップ２０とが、それぞれ、ハードウェアリソースへのアクセスを制限する空間域分離ハードウェアとを有し、安全部ソフトウェア１２、２２と、空間域・時間域分離ソフトウェア１３、２３とを時分割で実行し、空間域・時間域分離ソフトウェア１３、２３が、自半導体チップに搭載されたタイマに基づき、安全部ソフトウェアを所定のサイクルで間欠的に動作させる分離処理１４、２４と、安全部ソフトウェアの動作を検証する自己診断処理１５、２５と、分離処理及び自己診断処理を行う空間域・時間域分離ソフトウェアの動作を第１の半導体チップ１０と第２の半導体チップ２０との間で相互に診断する相互診断処理１６、２６と、を行う。【選択図】図１
2019159992.tif 000002
【特許請求の範囲】
【請求項１】
制御対象回路の制御を行う機能制御と、前記機能制御に対する安全制御を行う機能安全制御と、を実施する第１の半導体チップと、
前記機能制御に対する前記機能安全制御を少なくとも実施する第２の半導体チップと、を有し、
前記第１の半導体チップと前記第２の半導体チップが、それぞれ、
複数のソフトウェアを時分割で実行する演算部と、
前記演算部で実行されるソフトウェアにより利用される複数のハードウェアリソースと、
前記ソフトウェア毎にアクセス可能な前記複数のハーウェアリソースの範囲に制限を加えるアクセス制限処理を行う空間域分離ハードウェアと、
前記演算部における前記ソフトウェア毎の実行時間をカウントするタイマと、を有し、
前記第１の半導体チップと前記第２の半導体チップは、それぞれ、
前記機能安全制御を行う安全部ソフトウェアと、分離処理、自己診断処理及び相互診断処理を行う空間域・時間域分離ソフトウェアと、を自己の半導体チップ上の前記タイマのカウント結果に基づき所定のサイクル切り替えながら前記演算部で実行し、
前記分離処理では、前記演算部で実行されるソフトウェア毎に前記空間域分離ハードウェアが実施するアクセス制限処理の設定値となるアクセス制限設定値の正当性を診断する設定正当性診断処理と、前記アクセス制限設定値の書き換え処理と、を行い、前記設定正当性診断処理と前記書き換え処理との動作履歴情報を示す分離処理署名値を生成し、
前記自己診断処理では、前記安全部ソフトウェアにより生成される前記安全部ソフトウェアの動作履歴情報が記述された安全部署名値に基づき前記安全部ソフトウェアが正しく動作いるか否かを診断し、
前記相互診断処理では、自己の前記分離処理署名値及び前記安全部署名値を含む相互診断署名値を生成し、前記第１の半導体チップと前記第２の半導体チップとの間で相互に前記相互診断署名値を送受信し、相手方から受信した前記相互診断署名値の正当性を診断する機能安全システム。
【請求項２】
前記第１の半導体チップの前記演算部は、前記安全部ソフトウェア及び前記空間域・時間域分離ソフトウェアに加えて前記機能安全制御を行わない非安全部ソフトウェアを実行し、前記安全部ソフトウェア、前記空間域・時間域分離ソフトウェア及び前記非安全部ソフトウェアを前記タイマのカウント値に応じて切り替えて実行する請求項１に記載の機能安全システム。
【請求項３】
前記空間域・時間域分離ソフトウェアの前記自己診断処理では、前記安全部署名値が発行されたタイミングを示す発行時間と、前記安全部署名値との両方を用いて前記安全部ソフトウェアの動作検証を行う請求項１に記載の機能安全システム。
【請求項４】
前記空間域・時間域分離ソフトウェアの前記相互診断処理では、自半導体チップ上の前記タイマが生成する時間に基づき相手方から前記相互診断署名値を受信した受信タイミング時間を取得し、前記受信タイミング時間の正当性診断をさらに行う請求項１に記載の機能安全システム。
【請求項５】
前記演算部は、前記タイマが前記ソフトウェアの実行開始からの経過時間をカウントして前記カウントの値が前記複数のソフトウェアに含まれるソフトウェア毎に定められるウィンドタイムに達したことに応じて、強制的に前記演算部で実行されるソフトウェアを前記時間域・空間域分離ソフトウェアに切り替え、前記時間域・空間域分離ソフトウェアよる前記分離処理を行う請求項１に記載の機能安全システム。
【請求項６】
前記設定正当性診断処理では、
前記演算部で実行されるソフトウェアを切り替える前に前記演算部で実行されていた第１ソフトウェアに対して設定した前記空間域分離ハードウェアのアクセス制限設定値である第１のアクセス制限設定値に変更がないことを確認する第１の診断処理を行う請求項１に記載の機能安全システム。
【請求項７】
前記設定正当性診断処理では、
前記第１のアクセス制限設定値に基づき設定されたアクセス可能領域へのアクセスが可能であり、かつ、前記第１のアクセス制限設定値に基づき設定されたアクセス禁止領域へのアクセスが拒否されることを確認する第２の診断処理と、
前記演算部で実行されるソフトウェアを切り替えた後に前記演算部で実行される第２のソフトウェアに対して設定する前記空間域分離ハードウェアのアクセス制限設定値である第２のアクセス制限設定値に基づき設定されたアクセス可能領域へのアクセスが可能であり、かつ、前記第２のアクセス制限設定値に基づき設定されたアクセス禁止領域へのアクセスが拒否されることを確認する第３の診断処理と、
を行う請求項６に記載の機能安全システム。
【請求項８】
前記演算部は、前記機能安全制御を行わない非安全部ソフトウェアと、前記安全部ソフトウェアと、のいずれかの処理に関する割込処理要求を受信した場合、前記空間域・時間域分離ソフトウェアにより、
前記割込処理要求を発行したソフトウェアの割込処理のために準備された割込用アクセス制限設定値に基づき前記空間域分離ハードウェアのアクセス制限状態を設定する第１の分離処理と、
前記割込処理が終了したことに伴い前記空間域分離ハードウェアの設定値を前記割込処理要求発行前に演算部で実行されていたソフトウェアに対応するアクセス制限設定値に書き換えた後に演算部で実行されるソフトウェアを前記割込処理要求発行前に演算部で実行されていたソフトウェアに戻す第２の分離処理と、
を行う請求項１に記載の機能安全システム。
【請求項９】
前記空間域・時間域分離ソフトウェアは、外部から与えられる動作設定値に基づき前記演算部で動作させるソフトウェア毎に、前記ソフトウェアの実行時間、ソフトウェアの切り替えを繰り返す周期の長さを示す基本周期及び前記基本周期内での前記ソフトウェアの実行順序を決定する請求項１に記載の機能安全システム。
【請求項１０】
前記動作設定値には、対応するソフトウェアが未定である前記実行時間、前記実行順序の情報が含まれる請求項９に記載の機能安全システム。
【請求項１１】
前記安全部ソフトウェアは、複数の安全部ソフトウェアが含まれ、
前記時間域・空間域分離ソフトウェアは、前記複数の安全部ソフトウェアの切り替え処理において前記分離処理を適用して複数の安全部ソフトウェアが利用する前記ハードウェアリソースの利用範囲が互いに干渉することを防止する請求項１に記載の機能安全システム。
【請求項１２】
前記第１の半導体チップ及び前記第２の半導体チップは、前記分離処理、前記自己診断処理及び前記相互診断処理のいずれか１つにおいて不良が発生したと判断された場合、前記安全部ソフトウェアにより、前記制御対象回路を停止させる機能安全制御を行う請求項１に記載の機能安全システム。
【請求項１３】
制御対象回路の制御を行う機能制御と、前記機能制御に対する安全制御を行う機能安全制御と、を実施する第１の半導体チップと、
前記機能制御に対する前記機能安全制御を少なくとも実施する第２の半導体チップと、を有し、
前記第１の半導体チップと前記第２の半導体チップが、それぞれ、
複数のソフトウェアを時分割で実行する演算部と、
前記演算部で実行されるソフトウェアにより利用される複数のハードウェアリソースと、
前記ソフトウェア毎にアクセス可能な前記複数のハーウェアリソースに制限を加えるアクセス制限処理を行う空間域分離ハードウェアと、
前記演算部における前記ソフトウェア毎の実行時間をカウントするタイマと、を有する機能安全システムの安全制御方法であって、
前記第１の半導体チップと前記第２の半導体チップのそれぞれの前記演算部にて、前記機能安全制御を行う安全部ソフトウェアを所定のサイクルで間欠的に実行させ、
前記演算部で実行されるソフトウェアの切り替えに伴う前記空間域分離ハードウェアが実施するアクセス制限処理の設定値となるアクセス制限設定値の正当性を診断する設定正当性診断処理と、前記アクセス制限設定値の書き換え処理と、を行い、前記設定正当性診断処理と前記書き換え処理との動作履歴情報を示す分離処理署名値を生成する分離処理を行い、
前記安全部ソフトウェアにより生成される前記安全部ソフトウェアの動作履歴情報が記述された安全部署名値に基づき前記安全部ソフトウェアが正しく動作いるか否かを診断する自己診断処理を行い、
自己の前記分離処理署名値及び前記安全部署名値を含む相互診断署名値を生成し、前記第１の半導体チップと前記第２の半導体チップとの間で相互に前記相互診断署名値を送受信し、相手方から受信した前記相互診断署名値の正当性を診断する相互診断処理を行う機能安全システムの安全制御方法。
【請求項１４】
前記相互診断処理では、自半導体チップ上の前記タイマが生成する時間に基づき相手方から前記相互診断署名値を受信した受信タイミング時間を取得し、前記受信タイミング時間の正当性診断をさらに行う請求項１３に記載の機能安全システムの安全制御方法。
【請求項１５】
前記演算部は、前記タイマにより前記ソフトウェアの実行開始からの経過時間をカウントし、前記カウントの値が前記複数のソフトウェアに含まれるソフトウェア毎に定められるウィンドタイムに達したことに応じて、強制的に前記演算部において前記分離処理を行う請求項１３に記載の機能安全システムの安全制御方法。
【請求項１６】
前記分離処理における前記設定正当性診断処理では、
前記演算部で実行されるソフトウェアを切り替える前に前記演算部で実行されていた第１ソフトウェアに対して設定した前記空間域分離ハードウェアのアクセス制限設定値である第１のアクセス制限設定値に変更がないことを確認する第１の診断処理を行う請求項１３に記載の機能安全システムの安全制御方法。
【請求項１７】
前記分離処理における前記設定正当性診断処理では、
前記第１のアクセス制限設定値に基づき設定されたアクセス可能領域へのアクセスが可能であり、かつ、前記第１のアクセス制限設定値に基づき設定されたアクセス禁止領域へのアクセスが拒否されることを確認する第２の診断処理と、
前記演算部で実行されるソフトウェアを切り替えた後に前記演算部で実行される第２のソフトウェアに対して設定する前記空間域分離ハードウェアのアクセス制限設定値である第２のアクセス制限設定値に基づき設定されたアクセス可能領域へのアクセスが可能であり、かつ、前記第２のアクセス制限設定値に基づき設定されたアクセス禁止領域へのアクセスが拒否されることを確認する第３の診断処理と、
を行う請求項１６に記載の機能安全システムの安全制御方法。
【請求項１８】
制御対象回路の制御を行う機能制御と、前記機能制御に対する安全制御を行う機能安全制御と、を実施する第１の半導体チップと、
前記機能制御に対する前記機能安全制御を少なくとも実施する第２の半導体チップと、を有し、
前記第１の半導体チップと前記第２の半導体チップが、それぞれ、
複数のソフトウェアを時分割で実行する演算部と、
前記演算部で実行されるソフトウェアにより利用される複数のハードウェアリソースと、
前記ソフトウェア毎にアクセス可能な前記複数のハーウェアリソースに制限を加えるアクセス制限処理を行う空間域分離ハードウェアと、
前記演算部における前記ソフトウェア毎の実行時間をカウントするタイマと、を有する機能安全システムにおいて、前記第１の半導体チップの前記演算部と前記第２の半導体チップの前記演算部でそれぞれ実行される安全制御プログラムであって、
前記安全制御プログラムは、前記第１の半導体チップ側で実行される第１の安全制御プログラムと、前記第２の半導体チップ側で実行される第２の安全制御プログラムと、を含み、
前記第１の安全制御プログラムと前記第２の安全制御プログラムは、それぞれ、
前記第１の半導体チップと前記第２の半導体チップのそれぞれの前記演算部にて、前記機能安全制御を行う安全部ソフトウェアを所定のサイクルで間欠的に実行させ、
前記演算部で実行されるソフトウェアの切り替えに伴う前記空間域分離ハードウェアが実施するアクセス制限処理の設定値となるアクセス制限設定値の正当性を診断する設定正当性診断処理と、前記アクセス制限設定値の書き換え処理と、を行い、前記設定正当性診断処理と前記書き換え処理との動作履歴情報を示す分離処理署名値を生成する分離処理を行い、
前記安全部ソフトウェアにより生成される前記安全部ソフトウェアの動作履歴情報が記述された安全部署名値に基づき前記安全部ソフトウェアが正しく動作いるか否かを診断する自己診断処理を行い、
自己の前記分離処理署名値及び前記安全部署名値を含む相互診断署名値を生成し、前記第１の半導体チップと前記第２の半導体チップとの間で相互に前記相互診断署名値を送受信し、相手方から受信した前記相互診断署名値の正当性を診断する相互診断処理を行う機能安全プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は機能安全システム、機能安全システムの安全制御方法及び機能安全プログラムに関し、例えば機能安全の制御を行う安全部と、機能安全による保護対象となる非安全部と、を有する機能安全システム、機能安全システムの安全制御方法及び機能安全プログラムに関する。
【背景技術】
【０００２】
産業用機器では、機器に故障が発生した際に機器の動作を安全に停止させる機能安全を確保する必要がある。このような機能安全に対応した機器では、機器に故障或いは不具合が発生した際に、機器を安全に停止させるための安全部に故障が発生していないことを補償する必要がある。そのため、安全部には、高い信頼性が求められる。このような機能安全対応の機器の一例が特許文献１に開示されている。
【０００３】
特許文献１に記載の安全制御装置は、プロセッサでＯＳを実行する。そして、安全監視プロセスによって異常が検知されたことに応じて、通常制御スケジューリングパターンから安全制御スケジューリングパターンに切り替えて、安全監視プロセスおよび安全制御プロセスをスケジューリングする。ここで、異常検知前に適用される通常制御スケジューリングパターンは、通常制御プロセスに実行時間を割り当てる第１のタイムパーティションと、安全監視プロセスにプロセッサ実行時間を割り当てる第２のタイムパーティションを含む。また、異常検知後に適用される安全制御スケジューリングパターンは、安全制御プロセスに実行時間を割り当てる第３のタイムパーティションと、安全監視プロセスに実行時間を割り当てる第４のタイムパーティションを含む。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１０−２７１７５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
引用文献１に記載の安全制御装置では、機能安全の制御を行う安全部（例えば、安全監視プロセス及び安全制御プロセス）と、機能安全の制御を行わない非安全部（例えば、通常制御プロセス）と、が１つのプロセッサ上で実行されている。このように、１つのデバイス上に安全部と非安全部とが混在している場合、機能安全規格（例えば、ＩＥＣ６１５０８等）では非安全部の信頼性を安全部と同等に高めなければならず非安全部の変更が容易でない問題がある。そのため、非安全部の変更の自由度を高める場合は、安全部と非安全部との動作が互いに干渉しないように非安全部を安全部から分離する必要がある。つまり、引用文献１に記載の安全制御装置では、非安全部と安全部との分離の証明が十分になされておらず、非安全部の変更が自由に出来ないという問題がある。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、機能安全システムは、第１の半導体チップと第２の半導体チップとが、それぞれ、独自に動作するタイマと、ソフトウェア毎にアクセス可能なハードウェアリソースを制限する空間域分離ハードウェアとを有し、安全部ソフトウェアと、空間域・時間域分離ソフトウェアとを時分割で実行し、空間域・時間域分離ソフトウェアが、自半導体チップに搭載されたタイマに基づき、安全部ソフトウェアを所定のサイクルで間欠的に動作させる分離処理と、安全部ソフトウェアの動作を検証する自己診断処理と、分離処理及び自己診断処理を行う空間域・時間域分離ソフトウェアの動作を第１の半導体チップと第２の半導体チップとの間で相互に診断する相互診断処理と、を行う。
【発明の効果】
【０００８】
前記一実施の形態によれば、機能安全システムは、安全部となるソフトウェアを同一の半導体チップに搭載される非安全部のソフトウェアから分離されていることを補償することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１にかかる機能安全システムのブロック図である。
【図２】実施の形態１にかかる機能安全システムの処理フローを説明するフローチャートである。
【図３】実施の形態１にかかる機能安全システムで用いられる半導体チップのブロック図である。
【図４】実施の形態１にかかる機能安全システムにおける空間域分離の状態を説明するブロック図である。
【図５】実施の形態１にかかる機能安全システムの動作を説明するタイミングチャートである。
【図６】実施の形態１にかかる機能安全システムの分離処理を説明するタイミングチャートである。
【図７】実施の形態１にかかる機能安全システムの分離処理の詳細を説明するタイミングチャートである。
【図８】実施の形態１にかかる機能安全システムにおけるソフトウェアの切替時間を説明するタイミングチャートである。
【図９】実施の形態１にかかる機能安全システムの空間域・時間域分離ソフトウェアの自己診断処理及び相互診断処理の流れを説明するフローチャートである。
【図１０】実施の形態１にかかる機能安全システムに与えられる動作設定値の第１の例を説明する表である。
【図１１】実施の形態１にかかる機能安全システムに与えられる動作設定値の第２の例を説明する表である。
【図１２】実施の形態１にかかる機能安全システムに与えられる動作設定値の第３の例を説明する表である。
【図１３】実施の形態１にかかる機能安全システムおいて割り込み処理が発生した際の動作を説明するタイミングチャートである。
【図１４】実施の形態１にかかる機能安全システムのシステム構成例を説明するブロック図である。
【図１５】実施の形態２にかかる機能安全システムにおける空間域分離の状態を説明するブロック図である。
【図１６】実施の形態２にかかる機能安全システムの動作を説明するタイミングチャートである。
【図１７】実施の形態３にかかる機能安全システムにおける空間域分離の状態を説明するブロック図である。
【図１８】実施の形態３にかかる機能安全システムの動作を説明するタイミングチャートである。
【発明を実施するための形態】
【００１０】
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ（Central Processing Unit）、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。なお、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００１１】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（non-transitory computer readable medium）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（tangible storage medium）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Read Only Memory）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Programmable ROM）、ＥＰＲＯＭ（Erasable PROM）、フラッシュＲＯＭ、ＲＡＭ（Random Access Memory））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（transitory computer readable medium）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００１２】
実施の形態１
まず、図１に実施の形態１にかかる機能安全システム１のブロック図を示す。図１に示す例では、モータ３２を制御するシステムを機能安全対応させたシステムを示した。しかしながら、機能安全システム１が制御する制御対象回路は、モータに限らず様々な機能を考えることができる。
【００１３】
図１に示すように、実施の形態１にかかる機能安全システム１は、第１の半導体チップ１０、第２の半導体チップ２０、遮断回路３０、３１、モータ３２を有する。第１の半導体チップ１０及び第２の半導体チップ２０は、プログラムを実行する演算部と、演算部によってメモリ及び種々の機能を実現する周辺回路が１つの半導体チップ上に形成されたＭＣＵ（Micro Controller Unit）である。
【００１４】
実施の形態１にかかる機能安全システム１では、第１の半導体チップ１０が制御対象回路（例えば、モータ３２）の制御を行う機能制御（例えば、モータの回転制御）と、機能制御（モータの回転制御）に対する安全制御を行う機能安全制御と、を実施する。一方、第２の半導体チップ２０は、機能制御に対する機能安全制御を少なくとも実施する。
【００１５】
そこで、図１に示すように、第１の半導体チップ１０は、非安全部ソフトウェア１１及び安全部ソフトウェア１２を時分割で実行する。非安全部ソフトウェア１１は、モータ３２を制御する為のシステム制御ソフトウェアである。図１では、非安全部ソフトウェア１１のモータ制御処理を１つの処理ブロックとして図中に示した。安全部ソフトウェア１２は、モータ３２から回転情報を得てモータ３２の回転制御の異常の検出及び異常が発見された際に遮断回路３０を制御してモータ３２を停止させる機能安全制御を行う。図１では、安全部ソフトウェア１２の安全制御処理を１つの処理ブロックとして図中に示した。
【００１６】
また、第２の半導体チップ２０は、非安全部ソフトウェア２１及び安全部ソフトウェア２２を時分割で実行する。第２の半導体チップ２０で実行される非安全部ソフトウェア２１は、モータ３２の回転制御とは別の処理を行うものである。なお、第２の半導体チップ２０には非安全部ソフトウェア２１が搭載されていてもされていなくても構わない。安全部ソフトウェア２２は、モータ３２から回転情報を得てモータ３２の回転制御の異常の検出及び異常が発見された際に遮断回路３１を制御してモータ３２を停止させる機能安全制御を行う。図１では、安全部ソフトウェア２２の安全制御処理を１つの処理ブロックとして図中に示した。
【００１７】
そして、実施の形態１にかかる機能安全システム１では、第１の半導体チップ１０及び第２の半導体チップ２０が、それぞれのチップ上で実行されている非安全部ソフトウェアと安全部ソフトウェアとに対する時間域分離処理と空間域分離処理を行う時間域・空間域分離ソフトウェア１３、２３を実行する。時間域分離処理は、非安全部ソフトウェアと安全部ソフトウェアとが実行される時間を分離する処理である。また、空間域分離処理は、非安全部ソフトウェアと安全部ソフトウェアとが利用するハードウェアリソース（例えば、モリ、周辺回路）を分離する処理である。この時間域分離処理と空間域分離処理を行う処理ブロックとして、図１では分離処理ブロック１４、２４を示した。
【００１８】
また、時間域・空間域分離ソフトウェア１３、２３は、自己診断処理及び相互診断処理を行う。自己診断処理では、自チップ内で実行されている安全部ソフトウェアの動作の正当性を診断する。相互診断処理では、時間域・空間域分離ソフトウェア１３の動作の正当性と時間域・空間域分離ソフトウェア２３の動作の正当性とを相互に診断する。図１では、自己診断処理を行う処理ブロックとして自己診断処理ブロック１５、２５を示し、相互診断処理を行う処理ブロックとして相互診断処理ブロック１６、２６を示した。
【００１９】
なお、図１で示した処理を示すブロックは、基本的にはソフトウェアの動作を示すものであるが、半導体チップ内のハードウェアリソースを利用するものである。
【００２０】
続いて、図１に示した機能安全システム１の動作について説明する。そこで、図２に実施の形態１にかかる機能安全システムの処理フローを説明するフローチャートを示す。図２に示すように、実施の形態１にかかる機能安全システム１では、第１の半導体チップ１０と第２の半導体チップ２０とで、実行するソフトウェアを切り替えながら、同じ処理を進める。具体的には、第１の半導体チップ１０及び第２の半導体チップ２０は、時間域・空間域分離ソフトウェアの処理を介して非安全部ソフトウェアと安全部ソフトウェアとを所定のサイクルで切り替えながら実行する。また、第１の半導体チップ１０及び第２の半導体チップ２０では、時間域・空間域分離ソフトウェアを実行するタイミングで、分離処理、自己診断処理、相互診断処理の少なくとも１つを実行する。時間域・空間域分離ソフトウェア１３及び時間域・空間域分離ソフトウェア２３は、相互診断処理において相互に動作を監視する。時間域・空間域分離ソフトウェア１３の動作についての詳細は後述する。
【００２１】
また、第１の半導体チップ１０及び第２の半導体チップ２０は、時間域・空間域分離ソフトウェア１３、２３の処理において機能の異常が検出された場合、安全部ソフトウェアの安全制御処理を実施させて、システムを停止させた後に動作を終了する。また、第１の半導体チップ１０及び第２の半導体チップ２０は、非安全部ソフトウェア１１、２１の処理においてモータ３２の異常が検出された場合、安全部ソフトウェアの安全制御処理を実施させて、システムを停止させた後に動作を終了する。産業機器では、異常が発生した場合には、修理或いは特別な操作を実施しなければシステムを動作状態に復帰させないことが安全制御上求められる。これは、事故・故障の拡大を防ぐために必要な措置である。
【００２２】
実施の形態１にかかる機能安全システム１では、第１の半導体チップ１０、第２の半導体チップ２０のハードウェアをソフトウェアで制御することで、非安全部ソフトウェアと安全部ソフトウェアとの分離を補償する。実施の形態１にかかる第１の半導体チップ１０と第２の半導体チップ２０は、同一の構成であるものとして説明するが、第１の半導体チップ１０と第２の半導体チップ２０とは異なる構成・処理能力であっても構わない。
【００２３】
図３に実施の形態１にかかる機能安全システムで用いられる半導体チップのブロック図を示す。図３に示す例は、第１の半導体チップ１０、第２の半導体チップ２０の一例であり、図３では、第１の半導体チップ１０を半導体チップの一例として示した。
【００２４】
図３に示すように、第１の半導体チップ１０は、演算部４０、バス４１、４３、空間域分離ハードウェア（例えば、アクセス制限回路４２）、タイマ４４、周辺回路群、ＰＬＬ（Phase Locked Loop）回路４６を有する。図２で示す例では、周辺回路群の例として、タイマ４５ａ、ＲＯＭ（Read Only Memory）４５ｂ、ＲＡＭ（Random Access Memory）４５ｃ、入出力インタフェース４５ｄ、デジタルアナログ変換回路４５ｅ、アナログデジタル変換回路４５ｆを示した。
【００２５】
ＰＬＬ回路４６は、クロック信号を生成し、第１の半導体チップ１０内の各ブロックに分配する。バス４１は、演算部４０、アクセス制限回路４２を相互に接続する。バス４３は、アクセス制限回路４２と、タイマ４４、タイマ４５ａ、ＲＯＭ４５ｂ、ＲＡＭ４５ｃ、入出力インタフェース４５ｄ、デジタルアナログ変換回路４５ｅ及びアナログデジタル変換回路４５ｆと、を接続する。アクセス制限回路４２、バス４４、タイマ４５ａ、ＲＯＭ４５ｂ、ＲＡＭ４５ｃ、入出力インタフェース４５ｄ、デジタルアナログ変換回路４５ｅ及びアナログデジタル変換回路４５ｆは、演算部４０で実行されるソフトウェアにより利用されるハードウェアリソースである。
【００２６】
演算部４０は、非安全部ソフトウェア１１、安全部ソフトウェア１２、時間域・空間域分離ソフトウェア１３を時分割で実行する。タイマ４４は、レジスタ４４ａを有し、レジスタ４４ａに格納されたウィンドタイム値をカウント開始値としてＰＬＬ回路４６が出力するクロック信号に応じてカウント値をカウントダウンし、カウント値が予め設定されるタイムアウト値に達したところで演算部４０に割込信号を発する。演算部４０は、タイマ４４から割込信号が通知されたことに応じて実行するソフトウェアを時間域・空間域分離ソフトウェア１３とする。
【００２７】
アクセス制限回路４２は、レジスタ４２ａを有する。そして、アクセス制限回路４２は、例えば、レジスタ４２ａに格納されたアクセス制限設定値に基づきソフトウェア毎にアクセス可能な周辺回路群の範囲を制限する。つまり、アクセス制限回路４２は、ソフトウェア毎にアクセス可能な複数のハーウェアリソースの範囲に制限を加えるアクセス制限処理を行う。
【００２８】
ここで、このアクセス制限回路４２と演算部４０で実行されているソフトウェアとによる空間域分離の状態について説明する。図４に実施の形態１にかかる機能安全システムにおける空間域分離の状態を説明するブロック図を示す。図４に示すブロック図は、演算部４０で実行されるソフトウェアがハードウェアリソースを利用する状態を表す概念的なブロック図である。
【００２９】
図４に示すように、実施の形態１にかかる機能安全システム１では、時間域・空間域分離ソフトウェア１３がアクセス制限回路４２のアクセス制限範囲を決定するアクセス制限設定値をレジスタ４２ａに与えることでアクセス制限回路４２がソフトウェア毎のアクセス可能範囲を決定する。これにより、アクセス制限回路４２は、非安全部ソフトウェア１１がアクセス可能なハードウェアリソースの範囲には非安全部ソフトウェア１１からのアクセスのみを許可する。一方、アクセス制限回路４２は、安全部ソフトウェア１２から非安全部ソフトウェア１１に割り当てられたアクセス可能な範囲にアクセスが発生した場合には当該アクセスを遮断する。また、アクセス制限回路４２は、非安全部ソフトウェア１１がアクセス可能なハードウェアリソースの範囲には非安全部ソフトウェア１１からのアクセスのみを許可する。一方、アクセス制限回路４２は、安全部ソフトウェア１２から非安全部ソフトウェア１１に割り当てられたアクセス可能な範囲にアクセスが発生した場合には当該アクセスを遮断する。また、アクセス制限回路４２は、安全部ソフトウェア１２がアクセス可能なハードウェアリソースの範囲には安全部ソフトウェア１２からのアクセスのみを許可する。一方、アクセス制限回路４２は、非安全部ソフトウェア１１から安全部ソフトウェア１２に割り当てられたアクセス可能な範囲にアクセスが発生した場合には当該アクセスを遮断する。
【００３０】
このように、実施の形態１にかかる機能安全システム１では、時間域・空間域分離ソフトウェア１３によりアクセス制限回路４２のアクセス制限範囲を設定することで、第１の半導体チップ１０上のハードウェアリソースの空間的な分離を行う。また、実施の形態１にかかる機能安全システム１では、第２の半導体チップ２０においても第１の半導体チップ１０と同様の非安全部ソフトウェア２１及び安全部ソフトウェア２２が利用するハードウェアリソースの空間的な分離を行う。
【００３１】
上記説明より、実施の形態１にかかる機能安全システム１は、制御対象回路の制御を行う機能制御（例えば、モータ回転制御）と、機能制御に対する安全制御を行う機能安全制御と、を実施する第１の半導体チップ１０と、機能制御に対する機能安全制御を少なくとも実施する第２の半導体チップ２０と、を有する。そして、第１の半導体チップ１０及び第２の半導体チップ２０が、それぞれ、複数のソフトウェアを時分割で実行する演算部４０と、演算部４０で実行されるソフトウェアにより利用される複数のハードウェアリソース（例えば、周辺回路群）と、ソフトウェア毎にアクセス可能な複数のハーウェアリソースの範囲に制限を加えるアクセス制限処理を行う空間域分離ハードウェア（例えば、アクセス制限回路４２）と、演算部４０におけるソフトウェア毎の実行時間をカウントするタイマ４４と、を有する。また、第１の半導体チップ１０及び第２の半導体チップ２０の演算部４０では、機能安全制御を行う安全部ソフトウェア１２と、分離処理、自己診断処理及び相互診断処理を行う空間域・時間域分離ソフトウェア１３と、を自己の半導体チップ上のタイマ４４のカウント結果に基づき所定のサイクル切り替えながら実行する。なお、第１の半導体チップ１０では安全部ソフトウェア１２及び時間域・空間域分離ソフトウェア１３に加えて、非安全部ソフトウェア１１を所定のサイクルで実行する。第２の半導体チップ２０では、少なくとも安全部ソフトウェア１２及び時間域・空間域分離ソフトウェア１３が実行されていればよいが、本明細書では、第２の半導体チップ２０においても第１の半導体チップ１０と同様に非安全部ソフトウェア１１が実行されているものとする。以下の説明では、時間域・空間域分離ソフトウェア１３の分離処理、自己診断処理及び相互診断処理についてより詳細に説明を行う。
【００３２】
実施の形態１にかかる機能安全システム１では、時間域・空間域分離ソフトウェア１３、２４において分離処理、自己診断処理及び相互診断処理を行う。分離処理では、演算部４０で実行されるソフトウェア毎にアクセス制限回路４２が実施するアクセス制限処理の設定値となるアクセス制限設定値の正当性を診断する設定正当性診断処理と、アクセス制限設定値の書き換え処理と、を行う。また、分離処理では、設定正当性診断処理と書き換え処理との動作履歴情報を示す分離処理署名値を生成する。
【００３３】
自己診断処理では、安全部ソフトウェア１２により生成される安全部ソフトウェア１２の動作履歴情報が記述された安全部署名値に基づき安全部ソフトウェア１２が正しく動作しているか否かを診断する。
【００３４】
相互診断処理では、自己の分離処理署名値及び安全部署名値を含む相互診断署名値を生成し、第１の半導体チップ１０と第２の半導体チップ２０との間で相互に相互診断署名値を送受信し、相手方から受信した相互診断署名値の正当性を診断する。
【００３５】
ここで、実施の形態１にかかる機能安全システム１の動作について説明する。なお、以下の説明では、第１の半導体チップ１０側の動作を説明するが、第２の半導体チップ２０においても同様の動作が行われる。図５に実施の形態１にかかる機能安全システム１の動作を示すタイミングチャートを示す。図５に示すように、実施の形態１にかかる機能安全システム１では、非安全部ソフトウェア１１、安全部ソフトウェア１２、時間域・空間域分離ソフトウェア１３の動作が少なくとも１つ含まれる基本周期（図５中の一処理周期）を繰り返し実行し、基本周期内で各ソフトウェアを切り替えながら実行する。
【００３６】
実施の形態１にかかる機能安全システム１では、空間域・時間域分離ソフトウェア１３に外部から動作設定値を与えることで基本周期の長さ及び基本周期内でのソフトウェアの実行状態を設定する。例えば、この動作設定値には、演算部で動作させるソフトウェア毎に、ソフトウェアの実行時間、ソフトウェアの切り替えを繰り返す周期の長さを示す基本周期（例えば、基本周期の長さ）及び基本周期内でのソフトウェアの実行順序が記述される。
【００３７】
図５に示す例では、基本周期内で時間域・空間域分離ソフトウェア１３、非安全部ソフトウェア１１、安全部ソフトウェア１２の順でソフトウェアがそれぞれ１回実行される。そして、ソフトウェアの実行切り替えを行う毎に時間域・空間域分離ソフトウェア１３が分離処理を実行する。つまり、実施の形態１にかかる機能安全システム１では、単にソフトウェアの切り替えを行うだけではなく、時間域・空間域分離ソフトウェア１３による分離処理を経て演算部４０で実行されるソフトウェアの切り替えが行われる。
【００３８】
この分離処理について、詳細に説明する。図６に実施の形態１にかかる機能安全システムの分離処理を説明するタイミングチャートを示す。図６では、上段に非安全部ソフトウェア１１から安全部ソフトウェア１２に実行させるソフトウェアを切り替える際の分離処理を説明するタイミングチャートを示した。また、図６の下段は、アクセス制限回路４２に対して設定されるアクセス可能範囲を説明するメモリ空間を示した。
【００３９】
図６に示すように、実施の形態１にかかる機能安全システム１では、ソフトウェア毎にアクセス可能なメモリ空間を割り当てる（例えば、図６の下段の左側のメモリ空間マップ）。そして、時間域・空間域分離ソフトウェア１３は、ソフトウェア切り替え後に演算部４０で実行されるソフトウェアに対応したアクセス制限範囲をアクセス制限回路４２のレジスタ４２ａに与えた後に切り替え後のソフトウェアによる処理を開始させる（処理Ｐ１０、Ｐ２０）。その後、時間域・空間域分離ソフトウェア１３は、実行中のソフトウェアの動作が完了したことに応じて次に実行されるソフトウェアに対応したアクセス制限範囲をアクセス制限回路４２に設定する分離処理を実施する。このとき時間域・空間域分離ソフトウェア１３は、処理が終了したソフトウェアに対して行ったアクセス制限設定が変更されていないことを確認する第１の診断処理を行う（処理Ｐ１１、Ｐ２１）。実施の形態１にかかる機能安全システム１では、この第１の診断処理を行うことで、ハードウェアリソースの空間分離が変更されてないことの補償を行う。
【００４０】
なお、アクセス制限回路４２は、アクセス禁止領域に対してアクセスが発生した場合、所定のレジスタ（例えば、レジスタ４２ａ内の所定のレジスタ）にフラグを立てる、或いは、演算部４０に対して割り込み処理を発生させる。そして、時間域・空間域分離ソフトウェア１３がレジスタに立てられたフラグを検出した場合或いは演算部４０がアクセス制限回路４２からの割り込み処理を検出した場合、演算部４０は、安全部ソフトウェア１２を実行して第１の半導体チップ１０は機能安全処理を実施する。
【００４１】
また、実施の形態１にかかる機能安全システム１では、時間域・空間域分離ソフトウェア１３の分離処理中にアクセス制限範囲が正しく機能しているか否かの診断を行う。そこで、図７に実施の形態１にかかる機能安全システムの分離処理の詳細を説明するタイミングチャートを示す。図７に示すタイミングチャートは、１つの分離処理に関する部分を拡大して示したものである。
【００４２】
図７に示すように、実施の形態１にかかる分離処理では、切り替え前のソフトウェア（図７の例では安全部ソフトウェア）に対してしたアクセス制限設定が変更されていないことを確認する第１の診断処理を行う（処理Ｐ３０）。その後、時間域・空間域分離ソフトウェア１３は、処理Ｐ３０で確認したアクセス制限設定値が適用されたアクセス範囲に対して第２の診断処理を行う（処理Ｐ３１）。この第２の診断処理では、切り替え前のソフトウェアに対応するアクセス制限設定値に基づき設定されたアクセス可能領域へのアクセスが可能であることを確認する。また、第２の診断処理では、切り替え前のソフトウェアに対応するアクセス制限設定値に基づき設定されたアクセス禁止領域へのアクセスが拒否されることを確認する。この第２の診断処理では、アクセス許可領域とアクセス禁止領域の両方に対して実際のアクセス処理（図中の実アクセステスト）を行う。
【００４３】
続いて、実施の形態１にかかる分離処理では、時間域・空間域分離ソフトウェア１３が処理Ｐ３１の後に第３の診断処理を行う（処理Ｐ３２）。この第３の診断処理では、切り替え後のソフトウェアに対応するアクセス制限設定値に基づき設定されたアクセス可能領域へのアクセスが可能であることを確認する。また、第３の診断処理では、切り替え後のソフトウェアに対応するアクセス制限設定値に基づき設定されたアクセス禁止領域へのアクセスが拒否されることを確認する。この第３の診断処理では、アクセス許可領域とアクセス禁止領域の両方に対して実際のアクセス処理（図中の実アクセステスト）を行う。
【００４４】
なお、実アクセステストでは、アクセス許可領域とアクセス禁止領域との境界アドレスの前後の領域及び、各領域の中間点で実施する。また、ＲＡＭ、ＲＯＭ等の多くのアクセス範囲があるアクセス範囲に対する実アクセステストは、安全部ソフトウェア１２に対する診断処理（自己診断処理）中で行うものとする。
【００４５】
そして、実施の形態１にかかる分離処理では、第１の診断処理から第３の診断処理を設定正当性診断処理として行った後に、切り替え後のソフトウェアに対応するアクセス制限設定値を設定（或いは確定）する書き換え処理を実施する（処理Ｐ４０）。また、実施の形態１にかる分離処理では、設定正当性診断処理と書き換え処理との処理結果を含む分離処理署名値を生成する（処理Ｐ３３）。この分離処理署名値には、単に処理ガ完了したことを示すものでは無く、処理の成否等の処理の履歴情報が含まれるものである。
【００４６】
また、実施の形態１にかかる分離処理に含まれる何れかの処理においてエラーが発見された場合には時間域・空間域分離ソフトウェア１３は、安全部ソフトウェア１２に対して機能安全処理の実行を指示する。また、分離処理において実アクセステストを伴う中の第２の診断処理及び第３の診断処理については、実施タイミング、実施頻度、実施順序等はシステムの使用や機能安全の認証レベルにより変更しても構わない。
【００４７】
続いて、実施の形態１にかかる機能安全システム１のソフトウェアの切り替え時間について説明する。そこで、図８に実施の形態１にかかる機能安全システムにおけるソフトウェアの切替時間を説明するタイミングチャートを示す。図８に示すように、実施の形態１にかかる機能安全システム１では、時間域・空間域分離ソフトウェア１３が所定のソフトウェアが演算部４０で実行される前にタイマ４４のレジスタ４４ａに実行予定のソフトウェアの実行時間の制限値を指定するウィンドタイム設定値を与える。そして、タイマ４４はウィンドタイム設定値を開始値としてカウント値をカウントダウンする。そして、カウント値が予め設定したタイムアウト値（例えば、ゼロ）に達するとタイマ４４は、割込信号ＩＮＴを演算部４０に通知する。そして、割込信号ＩＮＴを受け取った演算部４０は、それまで実行していたソフトウェアの処理を終了して時間域・空間域分離ソフトウェア１３の分離処理を実行する。つまり、実施の形態１では、タイマ４４がソフトウェアの実行開始からの経過時間をカウントしてカウントの値が複数のソフトウェアに含まれるソフトウェア毎に定められるウィンドタイムに達したことに応じて、強制的に演算部４１で実行されるソフトウェアを時間域・空間域分離ソフトウェア１３に切り替え、時間域・空間域分離ソフトウェア１３による分離処理を行う。
【００４８】
ここで、ウィンドタイム設定値とソフトウェアの実行時間について説明する。実施の形態１にかかる機能安全システム１では、第１の半導体チップ１０上で３つのソフトウェアが動作している。この３つのソフトウェアのうち非安全部ソフトウェア１１は、例えば、ユーザーが導入するものであり、非安全部ソフトウェア１１の仕様によりウィンドタイム設定値が決定される。また、安全部ソフトウェア１２もユーザーが導入するものであるが、ウィンドタイム設定値は、安全部ソフトウェア１２の実行時間よりも十分に長い時間を設定する。これは、安全部ソフトウェア１２は、ウィンドタイム設定値の設定時間内に動作を完了して完了通知を時間域・空間域分離ソフトウェア１３に渡すためである。また、時間域・空間域分離ソフトウェア１３については、自己診断処理と相互診断処理を終わらせることが出来る時間をウィンドタイム設定値とする。
【００４９】
ここで、完了通知について説明する。安全部ソフトウェア１２を実行することで生成される完了通知には、安全部署名値が含まれる。この安全部署名値は、安全部ソフトウェア１２が行った複数の処理の順序、処理結果、処理を行った時間等の安全部ソフトウェア１２の処理履歴が記述されたものである。時間域・空間域分離ソフトウェア１３は、この完了通知の受領の有無及び安全部署名値内の処理の正当性を診断することで自己診断処理を行う。
【００５０】
続いて、時間域・空間域分離ソフトウェア１３により行われる自己診断処理及び相互診断処理について説明する。そこで、図９に実施の形態１にかかる機能安全システムの空間域・時間域分離ソフトウェアの自己診断処理及び相互診断処理の流れを説明するフローチャートを示す。
【００５１】
図９に示すように、時間域・空間域分離ソフトウェア１３は、診断処理を開始すると、まず、安全部ソフトウェア１２が発行した安全部署名値及び安全部署名値お発酵時間を検証して安全部ソフトウェア１２の動作を確認する（ステップＳ１）。ステップＳ１の検証処理では、安全部署名値及び発酵時間に対して予め設定された期待値と安全部ソフトウェア１２が生成した安全部署名値とを比較し、期待値と安全部署名値との間に差異がなければ安全部ソフトウェア１２は正しく動作していると判断する。つまり、空間域・時間域分離ソフトウェア１３の自己診断処理では、安全部署名値が発行されたタイミングを示す発行時間と、安全部署名値との両方を用いて安全部ソフトウェアの動作検証を行う。
【００５２】
そして、時間域・空間域分離ソフトウェア１３は、ステップＳ１の検証の結果安全部ソフトウェア１２が正しく動作しているとした場合、安全部ソフトウェア１２は相互診断処理を実施する（ステップＳ２のＹＥＳの枝）。一方、時間域・空間域分離ソフトウェア１３は、ステップＳ１の検証の結果安全部ソフトウェア１２に異常が生じていると判断した場合、安全部ソフトウェア１２に指示を出して安全部ソフトウェア１２に安全制御処理を開始させる（ステップＳ２のＮＯの枝、ステップＳ９）。
【００５３】
時間域・空間域分離ソフトウェア１３は、相互診断処理を行うにあたり、まず、時間域・空間域分離ソフトウェア１３が行った分離処理の履歴情報を示す分離処理署名値を取得する（ステップＳ３）。分離処理署名値は、例えば、時間域・空間域分離ソフトウェア１３がアクセス可能なＲＡＭ等に格納されている。そして、時間域・空間域分離ソフトウェア１３は、ステップＳ３で取得した分離処理署名値と、ステップＳ１で確認した安全部署名値とを含む相互診断署名値を生成し、生成した相互診断署名値を対となる第２の半導体チップ２０に送信する（ステップＳ４）。
【００５４】
続いて、時間域・空間域分離ソフトウェア１３は、対となる第２の半導体チップ２０から相互診断署名値を受信した受信タイミングを確認する（ステップＳ５）。第１の半導体チップ１０は、第２の半導体チップ２０が第１の半導体チップ１０とは独立したタイミングで送信する相互診断署名値を所定の格納領域に受信タイミングの情報と共に保持する。そして、時間域・空間域分離ソフトウェア１３は、第２の半導体チップ２０から相互診断署名値を受信した受信タイミングが想定される範囲内である場合には受信タイミングは正常であると判断して、第２の半導体チップ２０から受信した相互診断署名値の正当性の診断を行う（ステップＳ６のＹＥＳの枝）。一方、時間域・空間域分離ソフトウェア１３は、第２の半導体チップ２０から相互診断署名値を受信した受信タイミングが想定される範囲外である場合には受信タイミングが異常であると判断する（ステップＳ６のＮＯの枝）。受信タイミングが異常と判断された場合、時間域・空間域分離ソフトウェア１３は、安全部ソフトウェア１２に指示を出して安全部ソフトウェア１２に安全制御処理を開始させる（ステップＳ９）。
【００５５】
ステップＳ６にて、相互診断署名値の受信タイミングが正常であると判断された場合、時間域・空間域分離ソフトウェア１３は、第２の半導体チップ２０から受信した相互診断署名値と第１の半導体チップ１０内に格納された期待値データとを比較する（ステップＳ７）。そして、第２の半導体チップ２０から受信した相互診断署名値が期待値データとの間に差異がある場合、時間域・空間域分離ソフトウェア１３は、第２の半導体チップ２０側に異常が発生したとして安全部ソフトウェア１２に指示を出して安全部ソフトウェア１２に安全制御処理を開始させる（ステップＳ９）。一方、第２の半導体チップ２０から受信した相互診断署名値と期待値データとが一致した場合、時間域・空間域分離ソフトウェア１３は、第２の半導体チップ２０は正常に動作しているとして処理を終了する（ステップＳ８のＹＥＳの枝）。
【００５６】
このように、実施の形態１にかかる機能安全システム１では、時間域・空間域分離ソフトウェア１３、２３において相互診断処理を行うことで時間域・空間域分離ソフトウェア１３、２３の動作を補償する。
【００５７】
続いて、実施の形態１にかかる機能安全システム１において、ソフトウェアの実行時間及び実行順序を設定する動作設定値について説明する。そこで、図１０から図１２に実施の形態１にかかる機能安全システムに与えられる動作設定値の第１の例から第３の例を説明する表を示す。なお、図１０から図１２では上段に動作設定値の例となる表を示し、下段に上段に示した動作設定値に基づく半導体チップの動作のタイミングチャートを示した。
【００５８】
この動作設定値は所定のフォーマットのファイルに記述され、第１の半導体チップ１０及び第２の半導体チップ２０に与えられる。そして、第１の半導体チップ１０の時間域・空間域分離ソフトウェア１３及び第２の半導体チップ２０の時間域・空間域分離ソフトウェア２３が与えられた動作設定値を読み込み、演算部４０が動作設定値に記述された設定で各ソフトウェアを実行する。
【００５９】
図１０から図１２に示したように、動作設定値では、ソフトウェア毎にウィンドタイム、実行順序及びアクセスが許可されるハードウェアリソースのアドレス範囲が記述される。また、時間域・空間域分離ソフトウェアに対応した動作設定値には、基本周期の長さが記述される。
【００６０】
図１０に示す第１の例は、第１の半導体チップ１０上で非安全部ソフトウェア１１、安全部ソフトウェア１２、時間域・空間域分離ソフトウェア１３をそれぞれ１つずつ動作させる場合の動作設定値の例である。図１０に示す第１の例では、時間域・空間域分離ソフトウェア１３が１番目に実行され、安全部ソフトウェア１２が２番目と４番目に実行され、非安全部ソフトウェア１１が３番目と５番目に実行される。
【００６１】
図１１に示す第２の例では、第１の半導体チップ１０上で１つの非安全部ソフトウェア１１と、２つの安全部ソフトウェア１２と、１つの時間域・空間域分離ソフトウェア１３が実行される。ここで、２つの安全部ソフトウェア１２は、それぞれ異なる機能を有する機能安全制御を行うものとする。図１１に示す第２の例では、時間域・空間域分離ソフトウェア１３が一番目に実行され、第１の安全部ソフトウェア１２が２番目と５番目に実行され、第２の安全部ソフトウェア１２が３番目に実行され、非安全部ソフトウェア１１が４番目と６番目に実行される。全ソフトウェアの実行時間の合計が基本周期内であれば、図１１に示すように、同種のソフトウェアを複数実装することも出来る。
【００６２】
図１２に示す第３の例では、第１の半導体チップ１０上で１つの非安全部ソフトウェア１１と、２つの安全部ソフトウェア１２と、１つの時間域・空間域分離ソフトウェア１３が実行される。この第３の例では時間域・空間域分離ソフトウェア１３を２つの時間帯で実行する。つまり、ソフトウェアの実行時間は、異なる時間に分割されていても構わないことを第３の例では示している。
【００６３】
なお、ソフトウェアのウィンドタイムの合計が基本周期として設定された時間を超える場合、第１の半導体チップ１０及び第２の半導体チップ２０は、動作しないように設定する。これは、ソフトウェアの実行状態の設定ミスによる誤動作を防ぐためである。また、この基本周期には時間域・空間域分離ソフトウェア１３が行う分離処理の時間は含まないものとする。
【００６４】
ここで、割り込み処理が発生した際の実施の形態１にかかる機能安全システム１の動作について説明する。実施の形態１にかかる機能安全システム１では、時間域・空間域分離ソフトウェア１３を実行中以外は、割込信号の受付が可能である。しかしながら、実施の形態１にかかる機能安全システム１において割り込み処理の時間が特に問題となるのは安全部ソフトウェア１２の実行時間中である。安全部ソフトウェア１２の実行中に割り込み処理が発生した場合、安全部ソフトウェア１２に対して設定されたウィンドタイム中に安全部ソフトウェア１２の動作が完了しないと時間域・空間域分離ソフトウェア１３が安全部ソフトウェア１２に異常が発生したと判断して機能安全処理が実行される。
【００６５】
実施の形態１にかかる機能安全システム１では、割り込み処理が発生した場合、演算部は、機能安全制御を行わない非安全部ソフトウェアと、安全部ソフトウェアと、のいずれかの処理に関する割込処理要求を受信した場合、空間域・時間域分離ソフトウェアにより、第１の分離処理と第２の分離処理を行う。第１の分離処理では、割込処理要求を発行したソフトウェアの割込処理のために準備された割込用アクセス制限設定値に基づきアクセス制限回路４２のアクセス制限状態を設定する。第２の分離処理では、割込処理が終了したことに伴いアクセス制限回路４２の設定値を割込処理要求発行前に演算部で実行されていたソフトウェアに対応するアクセス制限設定値に書き換えた後に演算部で実行されるソフトウェアを割込処理要求発行前に演算部で実行されていたソフトウェアに戻す。以下でこの動作について具体的に説明する。
【００６６】
図１３に、実施の形態１にかかる機能安全システムおいて割り込み処理が発生した際の動作を説明するタイミングチャートを示す。図１３に示すように、実施の形態１にかかる機能安全システム１では、安全部ソフトウェア１２から割り込み処理要求が発行されたことに応じて、時間域・空間域分離ソフトウェア１３がアクセス制限回路４２に設定済みの安全部ソフトウェア１２に対応したアクセス制限設定値を安全部ソフトウェア１２の割り込み処理用に準備されたアクセス制限設定値に書き換える分離処理を実行する。そして、分離処理後に演算部４０が安全部ソフトウェア１２から要求された割り込み処理を実行する。また、演算部４０において安全部ソフトウェア１２に関する割り込み処理が完了したことに応じて、時間域・空間域分離ソフトウェア１３は、安全部ソフトウェア１２の割り込み処理用のアクセス制限設定値を通常の安全部ソフトウェア１２に対応して設けられたアクセス制限設定値に書き換える分離処理を行う。そして、アクセス制限設定値を安全部ソフトウェア１２に対応したものに戻した後に、演算部４０は再度安全部ソフトウェア１２を実行する。
【００６７】
また、安全部ソフトウェア１２を実行している期間中に、非安全部ソフトウェア１１に関する割り込み処理要求が発生した場合、時間域・空間域分離ソフトウェア１３がアクセス制限回路４２に設定済みの安全部ソフトウェア１２に対応したアクセス制限設定値を非安全部ソフトウェア１１の割り込み処理用に準備されたアクセス制限設定値に書き換える分離処理を実行する。そして、分離処理後に演算部４０が非安全部ソフトウェア１１から要求された割り込み処理を実行する。また、演算部４０において非安全部ソフトウェア１１に関する割り込み処理が完了したことに応じて、時間域・空間域分離ソフトウェア１３は、非安全部ソフトウェア１１の割り込み処理用のアクセス制限設定値を通常の安全部ソフトウェア１２に対応して設けられたアクセス制限設定値に書き換える分離処理を行う。そして、アクセス制限設定値を安全部ソフトウェア１２に対応したものに戻した後に、演算部４０は再度安全部ソフトウェア１２を実行する。
【００６８】
なお、割り込み処理要求に対応する分離処理はで、図７に示した第１の診断処理Ｐ３０と書き換え処理Ｐ４０のみを実行するとしても良いし、第１の診断処理Ｐ３０と書き換え処理Ｐ４０に加えて第２の診断処理Ｐ３１及び第３の診断処理Ｐ３２を実行しても構わない。
【００６９】
上記説明より、実施の形態１にかかる機能安全システム１では、第１の半導体チップ１０及び第２の半導体チップ２０上でそれぞれ安全部ソフトウェア及び時間域・空間域分離ソフトウェアを少なくとも実行する。また、実施の形態１にかかる機能安全システム１では、各半導体チップ上で時間域・空間域分離ソフトウェアを実行することで、非安全部ソフトウェアを安全部ソフトウェアとは異なる時間及空間（例えば利用するハードウェアリソースの範囲）で実行することが可能である。
【００７０】
そして、実施の形態１にかかる時間域・空間域分離ソフトウェアにより安全部ソフトウェアの動作が正しく行われているかを、安全部ソフトウェアの動作履歴が記述された安全部署名値を検証することで確認する自己診断処理を行う。これにより、実施の形態１にかかる機能安全システム１では、安全部ソフトウェアの動作の正当性を補償する。
【００７１】
また、実施の形態１にかかる機能安全システム１では、第１の半導体チップ１０と第２の半導体チップ２０との間で時間域・空間域分離ソフトウェアの動作履歴である相互診断署名値を互いに送受信し、相手方の半導体チップで生成された相互診断署名値を検証する相互診断処理を行う。この相互診断処理を行うことで、実施の形態１にかかる機能安全システム１では、安全部ソフトウェアの動作の正当性を診断する時間域・空間域分離ソフトウェアの動作の正当性を補償する。例えば、実施の形態１にかかる機能安全システム１では、第２の半導体チップ２０に搭載された時間域・空間域分離ソフトウェア２３が安全部ソフトウェア１２及び時間域・空間域分離ソフトウェア１３の不具合を検出して安全部ソフトウェア２２を用いた機能安全処理を行うことができる。
【００７２】
また、第１の半導体チップ１０及び第２の半導体チップ２０は、互いに独立したクロック信号に基づき動作することで、互いの動作に干渉を生じずに、相互診断処理の正当性を補償することができる。
【００７３】
また、実施の形態１にかかる機能安全システム１では、分離処理により、安全部ソフトウェアと、安全部ソフトウェアと同一の半導体チップ上で実行される非安全部ソフトウェアとの動作干渉を防止することができる。これにより、例えば、非安全部ソフトウェアの機能を改善する改良を施した場合でも、改めて機能安全の認証を受ける必要がなく、非安全部ソフトウェアの変更の自由度を高めることができる。
【００７４】
また、実施の形態１にかかる機能安全システム１では、非安全部ソフトウェアと安全部ソフトウェアとを同一の半導体チップ上で動作させながら、互いの独立性を補償できる。これにより、実施の形態１にかかる機能安全システム１では、機能安全のための多重化構成を有する機能安全システムの部品点数を削減することができる。
【００７５】
そこで、この部品点数削減効果を説明するために、図１４に実施の形態１にかかる機能安全システムのシステム構成例を説明するブロック図を示す。図１４では、上段の図として機能安全に関する構成がない非安全システムを示し、中段の図として比較例となる二重化構成安全システムを示し、下段の図として実施の形態１にかかる二重化構成安全システムを示した。
【００７６】
図１４に示すように、非安全システムに機能安全システムを単純に適用した場合、システム制御ＭＣＵ１００の機能安全を保障する機能安全制御ＭＣＵを２つ用いなければ、システム制御ＭＣＵで実行される非安全部ソフトウェアの改変を自由に行うことができない。しかしながら、実施の形態１にかかる第１の半導体チップ１０及び第２の半導体チップ２０を用いれば、１つの半導体チップ上に非安全部ソフトウェア及び安全部ソフトウェアを搭載しても非安全部ソフトウェアの改変の自由度は失うことはない。つまり、時間域・空間域分離ソフトウェアが搭載された実施の形態１にかかる第１の半導体チップ１０及び第２の半導体チップ２０を用いることで少ないチップ数で機能安全対応を行いながら、非安全部ソフトウェアの改変自由度を確保することができる。
【００７７】
実施の形態２
実施の形態２では、実施の形態１にかかる時間域・空間域分離ソフトウェア１３、２３の動作の別の形態について説明する。なお、実施の形態２の説明では、実施の形態１で説明した構成要素と同じ構成要素については実施の形態１と同じ符号を付して説明を省略する。
【００７８】
実施の形態２にかかる機能安全システムでは、安全部ソフトウェアに複数の安全部ソフトウェアが含まれる。そして、実施の形態２にかかる時間域・空間域分離ソフトウェア１３、２３は、複数の安全部ソフトウェアの切り替え処理において分離処理を適用して複数の安全部ソフトウェアが利用するハードウェアリソースの利用範囲が互いに干渉することを防止する。
【００７９】
そこで、図１５に実施の形態２にかかる機能安全システムにおける空間域分離の状態を説明するブロック図を示す。図１５に示すように、実施の形態２にかかる機能安全システムでは、アクセス制限回路４２にソフトウェア毎に異なるアクセス制限設定値を設定して、複数の安全部ソフトウェア間のハードウェアリソースの干渉を防止する。図１５に示す例では、安全部ソフトウェアが第１の安全部ソフトウェア、第２の安全部ソフトウェア及び第３の安全部ソフトウェアを含む。そして、第１の安全部ソフトウェアは最も安全レベルが高く設定され、第２の安全部ソフトウェアは中程度の安全レベルに設定され、第３の安全部ソフトウェアは最も安全レベルが設定される。つまり、第１の安全部ソフトウェアから第３の安全部ソフトウェアは、それぞれ検証レベル及び設計が異なり、それぞれの安全部ソフトウェアの安全レベルを補償するためには、時間域と空間域とを分離する必要がある。実施の形態２にかかる時間域・空間域分離ソフトウェア１３、２３は、第１の安全部ソフトウェアから第３の安全部ソフトウェアの実行時間及び実行空間を分離する。
【００８０】
図１６に実施の形態２にかかる機能安全システムの動作を説明するタイミングチャートを示す。図１６に示すように、実施の形態２においても、時間域・空間域分離ソフトウェアの分離処理を介して演算部４０で実行されるソフトウェアが切り替えられる。また、実施の形態２では、第１の安全部ソフトウェアから第３の安全部ソフトウェアは、異なる時間帯で実行されることで時間域が分離される。
【００８１】
上記説明より、実施の形態２にかかる機能安全システムでは、複数の安全部ソフトウェアが実行される時間域と空間域を分離することで、異なる安全レベルの安全部ソフトウェアの時間域と空間域を分離して、１つの半導体チップ上で実行することができる。これにより、実施の形態２にかかる機能安全システムでは、搭載される安全部ソフトウェアの自由度を高めることができる。
【００８２】
実施の形態３
実施の形態３では、実施の形態２にかかる時間域・空間域分離ソフトウェア１３、２３の動作の別の形態について説明する。なお、実施の形態３の説明では、実施の形態１、２で説明した構成要素と同じ構成要素については実施の形態１と同じ符号を付して説明を省略する。
【００８３】
実施の形態３にかかる機能安全システムでは、実施の形態２と同様に安全部ソフトウェアに複数の安全部ソフトウェアを含むが、一部の安全部ソフトウェアを未実装状態としたものである。そして、実施の形態３にかかる時間域・空間域分離ソフトウェア１３、２３においても、複数の安全部ソフトウェアの切り替え処理において分離処理を適用して複数の安全部ソフトウェアが利用するハードウェアリソースの利用範囲が互いに干渉することを防止する。
【００８４】
そこで、図１７に実施の形態３にかかる機能安全システムにおける空間域分離の状態を説明するブロック図を示す。図１７に示すように、実施の形態３にかかる機能安全システムでは、図１５に示した第３の安全部ソフトウェアが未実装であり、第３の安全部ソフトウェアが実装される予定の時間域及び空間域となる部分をソフトウェア実装予定領域として定義している。例えば、時間域・空間域分離ソフトウェアに与える動作設定値に、対応するソフトウェアが未定である部分に実行時間、実行順序の情報を含むことで図１７の様な空間域分離を行う。
【００８５】
図１８に実施の形態３にかかる機能安全システムの動作を説明するタイミングチャートを示す。図１８に示すように、実施の形態３では、ソフトウェア実装予定領域に対応する部分に処理を行わない時間を設ける。このような時間域分離は、時間域・空間域分離ソフトウェアに与える動作設定値に、対応するソフトウェアが未定である部分に実行時間、実行順序の情報を含むことで実現される。
【００８６】
上記説明より、実施の形態３にかかる機能安全システムでは、ソフトウェア実装予定領域を動作設定値の記述により定義する。これにより、実施の形態３にかかる機能安全システムは、全ての安全部ソフトウェアの完成を待つことなく完成したソフトウェアから動作検証を行うことが可能になる。また、ソフトウェア実装予定領域を設けることで既に実装済みの安全部ソフトウェアに対する認証処理を再度行うことなく、後から安全部ソフトウェアを追加することも可能になる。
【００８７】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００８８】
１  機能安全システム
１０  第１の半導体チップ
１１  非安全部ソフトウェア
１２  安全部ソフトウェア
１３  時間域・空間域分離ソフトウェア
１４  分離処理ブロック
１５  自己診断処理ブロック
１６  相互診断処理ブロック
２０  第２の半導体チップ
２１  非安全部ソフトウェア
２２  安全部ソフトウェア
２３  時間域・空間域分離ソフトウェア
２４  分離処理ブロック
２５  自己診断処理ブロック
２６  相互診断処理ブロック
３０  遮断回路
３１  遮断回路
３２  モータ
４０  演算部
４１  バス
４２  アクセス制限回路
４２ａ  レジスタ
４３  バス
４４  タイマ
４４ａ  レジスタ
４５ａ  タイマ
４５ｂ  ＲＯＭ
４５ｃ  ＲＡＭ
４５ｄ  入出力インタフェース
４５ｅ  デジタルアナログ変換回路
４５ｆ  アナログデジタル変換回路
４６  ＰＬＬ回路
【図１】
2019159992.tif 000003
【図２】
2019159992.tif 000004
【図３】
2019159992.tif 000005
【図４】
2019159992.tif 000006
【図５】
2019159992.tif 000007
【図６】
2019159992.tif 000008
【図７】
2019159992.tif 000009
【図８】
2019159992.tif 000010
【図９】
2019159992.tif 000011
【図１０】
2019159992.tif 000012
【図１１】
2019159992.tif 000013
【図１２】
2019159992.tif 000014
【図１３】
2019159992.tif 000015
【図１４】
2019159992.tif 000016
【図１５】
2019159992.tif 000017
【図１６】
2019159992.tif 000018
【図１７】
2019159992.tif 000019
【図１８】
2019159992.tif 000020