(57)【要約】【課題】多様な要求に対応した木目細かな自己診断処理の実行スケジュールを設定すること。【解決手段】自己診断装置は、複数の機能ブロックと、複数の機能ブロックの中から選択された一部の機能ブロックの集合である複数の処理単位と、各処理単位の自己診断処理の開始条件と、を記憶する記憶部と、各処理単位の開始条件に基づいて自己診断処理を開始する処理単位を選択し、当該選択した処理単位内の各機能ブロックについて自己診断処理を実行する自己診断部と、を備える。【選択図】図１
2015176402.tif 000002
【特許請求の範囲】
【請求項１】
複数の機能ブロックと、
前記複数の機能ブロックの中から選択された一部の機能ブロックの集合である複数の処理単位と、各処理単位の自己診断処理の開始条件と、を記憶する記憶部と、
各処理単位の前記開始条件に基づいて前記自己診断処理を開始する前記処理単位を選択し、当該選択した処理単位内の各機能ブロックについて前記自己診断処理を実行する自己診断部と、
を備える自己診断装置。
【請求項２】
前記自己診断部は、
前記自己診断処理以外の他の処理の実行状況に応じて、当該自己診断処理を実行中の機能ブロックより後に実行予定の機能ブロックを変更する
請求項１に記載の自己診断装置。
【請求項３】
前記自己診断部は、
前記選択した処理単位内の機能ブロックについて前記自己診断処理を開始する際に当該機能ブロックが前記他の処理により実行中である場合、当該機能ブロックに代えて他の未実行の機能ブロックの前記自己診断処理を開始する
請求項２に記載の自己診断装置。
【請求項４】
前記複数の機能ブロックのそれぞれは
自己の実行状態を示す実行状態情報を保持し、
前記自己診断部は、
前記選択した処理単位内の機能ブロックについて前記自己診断処理を開始する前に、当該機能ブロックの前記実行状態情報を参照し、
当該実行状態情報が前記他の処理による実行中であることを示す場合に、当該機能ブロックに代えて他の未実行の機能ブロックの前記自己診断処理を開始する
請求項３に記載の自己診断装置。
【請求項５】
前記複数の機能ブロックのそれぞれは、
前記自己診断処理の許否を示す許否情報を保持し、
前記自己診断部は、
前記選択した処理単位内の機能ブロックについて前記自己診断処理を開始する前に、当該機能ブロックの前記許否情報を参照し、
当該許否情報が当該機能ブロックにおける前記自己診断処理を許可しないことを示す場合に、当該機能ブロックに代えて他の未実行の機能ブロックの前記自己診断処理を開始する
請求項３に記載の自己診断装置。
【請求項６】
前記開始条件は、
各処理単位内の各機能ブロックにおける前記自己診断処理の実行順序と、
各処理単位間の優先順位と、
を含み、
前記自己診断部は、
前記優先順位に基づいて前記自己診断処理を開始する前記処理単位を選択し、
当該選択した処理単位内の各機能ブロックについて前記実行順序に基づいて前記自己診断処理を実行する
請求項１乃至４のいずれか１項に記載の自己診断装置。
【請求項７】
前記自己診断部は、
前記自己診断処理を実行中の機能ブロックより後に実行予定の機能ブロックを変更した場合、その旨を自己診断結果として通知する
請求項２乃至５のいずれか１項に記載の自己診断装置。
【請求項８】
前記自己診断部は、
前記選択した処理単位内の機能ブロックについて前記自己診断処理を開始する前に割込み処理が発生した場合、当該機能ブロックに代えて他の処理単位における前記自己診断処理を開始する
請求項２乃至５のいずれか１項に記載の自己診断装置。
【請求項９】
前記自己診断部は、
前記選択した処理単位内の機能ブロックについて前記自己診断処理を開始する時点で、前記他の処理による当該自己診断装置全体の負荷が所定値より低い場合、当該機能ブロックと共に他の未実行の機能ブロックの前記自己診断処理を開始する
請求項２乃至５のいずれか１項に記載の自己診断装置。
【請求項１０】
前記自己診断部は、
前記開始条件が重なる２以上の前記処理単位が存在する場合、当該処理単位間の前記機能ブロックの前記自己診断処理の開始タイミングを調整する
請求項１乃至５のいずれか１項に記載の自己診断装置。
【請求項１１】
複数の機能ブロックと、
前記複数の機能ブロックの自己診断処理の実行スケジュールを記憶する記憶部と、
前記実行スケジュールに基づいて前記複数の機能ブロックについて前記自己診断処理を実行する自己診断部と、を備え、
前記自己診断部は、
前記自己診断処理の実行中に、当該自己診断処理以外の他の処理の実行状況に応じて、前記実行スケジュールにおける実行予定の機能ブロックを変更する、
自己診断装置。
【請求項１２】
前記自己診断部は、
前記他の処理と並行して前記自己診断処理を実行し、
前記実行スケジュールに基づいて前記自己診断処理を実行予定の機能ブロックについて、前記他の処理により実行中である場合、当該機能ブロックに代えて他の未実行の機能ブロックの前記自己診断処理を開始する
請求項１１に記載の自己診断装置。
【請求項１３】
複数の機能ブロックについての自己診断処理を実行する半導体装置を用いた自己診断方法であって、
前記半導体装置は、
前記複数の機能ブロックの中から選択された一部の機能ブロックの集合である複数の処理単位と、各処理単位の自己診断処理の開始条件と、を設定し、
各処理単位の前記開始条件に基づいて前記自己診断処理を開始する前記処理単位を選択し、
当該選択した処理単位内の各機能ブロックについて前記自己診断処理を実行する
自己診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、自己診断装置及び自己診断方法に関し、例えば、マイクロコンピュータ等の半導体装置に内蔵される自己診断装置及び自己診断方法に関する。
【背景技術】
【０００２】
マイクロコンピュータの自己診断処理は、自己診断の対象である複数の機能ブロックについて自己診断の実行順序を予め固定して定義することが一般的である。また、近年、プロセスの微細化により機能ブロック数が増加し、これに伴い、自己診断の実行時間も増加している。
【０００３】
ここで、特許文献１には、効率的に自己診断を行うための自己診断装置に関する技術が開示されている。特許文献１にかかる自己診断装置は、自己診断モードの開始時に、各機能ブロックの通常動作における動作頻度や優先順位設定値に基づいて、各機能ブロックの自己診断の実行順序を決定する。その後、実行順序に従って各機能ブロックの自己診断処理を実行する。そして、制限時間や自己診断実行回数の閾値を超えた場合に、以降の実行順序における機能ブロックの自己診断処理を実行しない。これにより、動作頻度の高い機能ブロックについて優先的に自己診断を行うことができる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１２−２５２３７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１では、自己診断処理の多様な要求に対応した木目細かな実行スケジュールを設定することができないという問題点がある。例えば、自己診断処理の実行タイミングが電源投入直後、通常動作中、又は割り込み処理の直前等のいずれであるかによって、必要性の高い機能ブロックや実行順序は異なる。また、同一の機能ブロックであっても、ユーザプログラムの内容によって自己診断の必要性が異なる。特に、緊急時に動作する機能ブロックは、普段の動作頻度が低いとしても自己診断を行わせる必要性が高い場合もある。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
一実施の形態によれば、自己診断装置は、複数の機能ブロックを異なる複数の処理単位に分けて、個別に開始条件を設定するものである。
【０００８】
尚、上記実施の形態の装置を方法やシステムに置き換えて表現したもの、該装置または該装置の一部の処理をコンピュータに実行せしめるプログラム、該装置を備えた撮像装置なども、本発明の態様としては有効である。
【発明の効果】
【０００９】
前記一実施の形態によれば、多様な要求に対応した木目細かな自己診断処理の実行スケジュールを設定することができる。
【図面の簡単な説明】
【００１０】
【図１】本実施の形態１にかかる自己診断装置の構成を示すブロック図である。
【図２】本実施の形態１にかかる自己診断処理の流れを示すフローチャートである。
【図３】本実施の形態２にかかるマイクロコンピュータの構成を示すブロック図である。
【図４】本実施の形態２にかかるField-BIST制御情報の例を示す図である。
【図５】本実施の形態２にかかるField-BIST制御システムの構成を示すブロック図である。
【図６】本実施の形態３にかかる自己診断装置の構成を示すブロック図である。
【図７】本実施の形態３にかかる自己診断処理の流れを示すフローチャートである。
【図８】本実施の形態４にかかる周辺システムの構成を示すブロック図である。
【図９】本実施の形態４にかかる対象部の構成を示すブロック図である。
【図１０】本実施の形態４にかかるMatrix Controllerの構成を示すブロック図である。
【図１１】本実施の形態４にかかるマイクロコンピュータの実行の流れを示すフローチャートである。
【図１２】本実施の形態４にかかる自己診断処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１１】
以下では、上述した課題を解決するための手段を適用した具体的な実施の形態について、図面を参照しながら詳細に説明する。各図面において、同一要素には同一の符号が付されており、説明の明確化のため、必要に応じて重複説明は省略する。
【００１２】
以下の実施の形態においては便宜上その必要があるときは、複数のセクションまたは実施の形態に分割して説明するが、特に明示した場合を除き、それらはお互いに無関係なものではなく、一方は他方の一部または全部の変形例、応用例、詳細説明、補足説明等の関係にある。また、以下の実施の形態において、要素の数等（個数、数値、量、範囲等を含む）に言及する場合、特に明示した場合および原理的に明らかに特定の数に限定される場合等を除き、その特定の数に限定されるものではなく、特定の数以上でも以下でもよい。
【００１３】
＜実施の形態１＞
本実施の形態１にかかる自己診断装置は、例えば、マイクロコンピュータ等の半導体装置に内蔵されるものである。ここで、本実施の形態１で解決しようとする課題について改めて説明する。
【００１４】
まず、自己診断処理は一般的に、マイクロコンピュータの電源投入直後からユーザプログラムの実行開始前までに実行することにより、該当システムの安全動作を確認する。そして、一般に、マイクロコンピュータシステムにおける複数の自己診断対象箇所である対象部（機能ブロック）は、デージーチェインであらかじめハードコーディングされた１つのパスとして繋がれていることが多い。そのため、一旦、自己診断が実行開始されると、全ての自己診断の対象部の診断が終了するまでユーザプログラムの開始が待たされることになる。ここで、デージーチェインとは、複数の対象部を数珠繋ぎで順番に接続することにより、例えば、ｎ番目の動作終了がｎ＋１番目の動作起動要因になるように接続されたものである。また、ハードコーディングとは、デージーチェインの定義に基づいて実行の順序と状態遷移条件が論理回路で実現されている状態をいう。
【００１５】
そのため、マイクロコンピュータの電源投入後に自己診断を実施し、システムの安全を確認した後は、可及的速やかにユーザプログラムが実行開始されることが理想である。しかし、上述のようにデージーチェインで繋がれた１つのパスが長ければ長いほど、つまり、自己診断対象部が多ければ多いほど、多くの時間が必要となる問題がある。
【００１６】
また、近年では、汎用的なマイクロコンピュータが普及しており、同一の半導体装置を様々なユーザプログラムで利用することが増えている。そのため、自己診断処理に対する多様な要求がある。そして、上述したように特許文献１だけでは、木目細かな実行スケジュールを設定することができない。そこで、以下の実施の形態１によりこのような課題を解決するものとした。
【００１７】
図１は、本実施の形態１にかかる自己診断装置１００の構成を示すブロック図である。自己診断装置１００は、機能ブロック１１１、１１２、・・・、１１ｎと、記憶部１２０と、自己診断部１５０とを備える。機能ブロック１１１から１１ｎは、半導体装置内の回路の集合、つまり機能モジュール群であり、自己診断対象となる対象部である。機能モジュール群とは、例えば、クロックドメイン、パワードメインといった制約によって分割可能な最少の構成単位である。尚、機能ブロック数は、３以上であればよい。
【００１８】
記憶部１２０は、複数の処理単位１３１、１３２、・・・及び処理単位ごとの開始条件１４１、１４２、・・・を記憶する記憶装置である。処理単位１３１等は、機能ブロック１１１〜１１ｎの中から選択された一部の機能ブロックの集合である。つまり、処理単位間で所属する機能ブロックの組み合わせが異なる。例えば、処理単位１３１には、機能ブロック１１１及び１１２が属し、処理単位１３２には、機能ブロック１１１及び１１ｎが属するといったものである。尚、処理単位には、全ての機能ブロックが属するものや、一つの機能ブロックのみが属するものがあってもよい。また、開始条件１４１等は、各処理単位の自己診断処理の実行を開始するタイミングである。また、開始条件１４１等には、処理単位内の各機能ブロックの個別の自己診断処理の実行開始条件を含めてもよい。例えば、機能ブロック１１２における自己診断処理の開始条件は、機能ブロック１１１の自己診断処理の後であるというものである。そのため、開始条件１４１等には、処理単位内の機能ブロック間の実行順序を含むものといえる。
【００１９】
自己診断部１５０は、各処理単位の開始条件に基づいて自己診断処理を開始する処理単位を選択する。そして、自己診断部１５０は、当該選択した処理単位内の各機能ブロックについて自己診断処理を実行する。
【００２０】
図２は、本実施の形態１にかかる自己診断処理の流れを示すフローチャートである。まず、自己診断装置１００は、上述した複数の処理単位と、各処理単位の自己診断処理の開始条件と、の入力を受け付け、記憶部１２０に設定する（Ｓ１１）。つまり、自己診断装置１００は、外部から処理単位と開始条件の定義の入力を受け付け、記憶部１２０に処理単位１３１等及び開始条件１４１等として格納する。例えば、処理単位や開始条件は、ユーザにより入力されたものである。
【００２１】
次に、自己診断部１５０は、各処理単位の開始条件に基づいて自己診断処理を開始する処理単位を選択する（Ｓ１２）。そして、自己診断部１５０は、選択した処理単位内の各機能ブロックについて自己診断処理を実行する（Ｓ１３）。
【００２２】
このように、本実施の形態１では、マイクロコンピュータのユーザが複数の機能ブロックについて適切な処理単位に分けて設定し、処理単位ごとに個別に自己診断処理の開始条件を設定することができる。特に、記憶部１２０を不揮発性記憶装置とすることで、運用開始後も容易に設定変更が可能となる。
【００２３】
例えば、汎用的なマイクロコンピュータの場合、ユーザプログラムによっては使用されない機能ブロックがある。そのため、全ての機能ブロックを電源投入直後に自己診断対象とする必要はない。このような場合、重要な機能ブロックを一つの処理単位として、電源投入直後に自己診断を実行し、それ以外の機能ブロックを別の処理単位としてユーザプログラムの実行後の任意のタイミングで実行させることができる。そのため、マイクロコンピュータの電源投入後からユーザプログラム実行開始までの時間を、ユーザのシステムごとに最適及び最短にすることができる。
【００２４】
また、自己診断処理の実行時間は、機能ブロックによって異なる。そのため、処理単位を小分けにして、自己診断処理の実行時間が比較的長い機能ブロックについては、少数の機能ブロックが属する処理単位とし、自己診断処理の実行時間が比較的短い機能ブロックについては、ある程度多数の機能ブロックが属する処理単位とすることもできる。よって、これらの処理単位の開始条件を適切に設定することで、多様な要求に対応した木目細かな自己診断処理の実行スケジュールを設定することができる。いわば、ユーザプログラムに応じた自由度の高い自己診断処理の実行スケジューリングができるといえる。
【００２５】
＜実施の形態２＞
本実施の形態２は、上述した実施の形態１の一実施例である。図３は、本実施の形態２にかかるマイクロコンピュータ２００の構成を示すブロック図である。マイクロコンピュータ２００は、不揮発メモリ２１０と、不揮発メモリ書換え機能２２０と、マイコン制御システム２３０と、Field-BIST制御システム２４０と、内部バス２５０と、Port制御２６０と、MainCPU２７０と、周辺システム２８０とを備える。また、マイクロコンピュータ２００は、不揮発メモリ２１０を書き換えるための設定装置であるプログラマ３００と外部接続されている。
【００２６】
不揮発メモリ２１０は、上述した記憶部１２０の一例であり、Field-BIST制御情報２１１を保存する。Field-BIST制御情報２１１は、上述した処理単位１３１等及び開始条件１４１等の一例であり、自己診断対象部や実行スケジューリングに関する情報である。不揮発メモリ書換え機能２２０は、不揮発メモリ２１０の内容を書換える機能を有する。
【００２７】
図４は、本実施の形態２にかかるField-BIST制御情報２１１の例を示す図である。Field-BIST制御情報２１１は、自己診断の処理単位を複数のチェイン（Chain）として定義する。各チェインは、付加される数字で個別識別される。ここでは、チェインの名称として、”Chain_xx”という末尾に数字二桁を付ける形で例示しているが、チェインの識別情報はこれに限定されない。例えば、“Chain_00”は、システム起動時を開始条件とした処理単位の例であり、“Chain_01”以降はシステム運用時を開始条件とした処理単位の例である。チェインは、チェイン間の優先順位（Priority）、実行時間（ExTime）、チェイン内の対象部の実行順序（Exec. Order）等を構成要素とする。ここで、チェイン間の優先順位は、例えば、小さい値（“1”）から大きい値（“99”）の順序で実行されることを示す。そのため、チェイン間の優先順位は、チェイン間の定期的な実行順序又はチェインの実行スケジュールともいえる。但し、Priority“a”の”Chain_nn”は、例えば、通常のチェインの実行スケジュール外で、緊急時の割り込み処理等の直前に実行されるものとする。尚、優先順位が同じチェインは、自己診断処理が並列に実行されるものとする。また、チェイン間の優先順位は、自己診断処理の開始予定時刻として定義しても構わない。チェインの実行時間は、例えば、当該チェインにおける過去の自己診断処理時間の平均値等であり、いわば、当該チェインの実行時間の目安である。また、チェイン内の対象部の実行順序は、各対象部の識別番号を、自己診断を実行させる順序でシーケンシャルに定義したものである。尚、チェイン内の対象部の実行順序は、複数の対象部を並列実行すべく定義しても構わない。
【００２８】
マイコン制御システム２３０は、マイクロコンピュータ２００のシステム起動時（電源投入後からユーザプログラムの実行開始前）に、Field-BIST制御システム２４０に対して自己診断処理の開始を指示する。
【００２９】
Field-BIST制御システム２４０は、不揮発メモリ２１０、マイコン制御システム２３０、内部バス２５０及び周辺システム２８０と接続される。Field-BIST制御システム２４０は、Field-BIST制御情報２１１を読み出し、自己診断の実行スケジュールを決定する。そして、Field-BIST制御システム２４０は、マイコン制御システム２３０又はMainCPU２７０からの命令に応じて実行スケジュールに基づく対象部群の自己診断の指示を周辺システム２８０に対して行う。そして、Field-BIST制御システム２４０は、周辺システム２８０から自己診断の実行結果を取得し内部に保存する。
【００３０】
図５は、本実施の形態２にかかるField-BIST制御システム２４０の構成を示すブロック図である。Field-BIST制御システム２４０は、スケジューラ２４１と、コントローラ２４２とを備える。スケジューラ２４１は、システム起動時に不揮発メモリ２１０からField-BIST制御情報２１１を読み出し、Field-BIST制御情報２１１に基づき自己診断対象部の実行順序および実行条件を決定する機能モジュールである。スケジューラ２４１は、実行Plan２４１１と、実行対象２４１２と、内蔵タイマ２４１３とを備える。
【００３１】
実行Plan２４１１は、いわゆる優先順位付キュー（Queue）に相当する機能モジュールである。実行Plan２４１１は、Field-BIST制御情報２１１内のチェインをQueueに展開する。Queue内の各チェインには上述した優先順位が含まれている。そのため、スケジューラ２４１は、優先度の高いチェインをQueueから取り出すことにより、自己診断処理対象のチェインとして選択し、コントローラ２４２へ出力する。
【００３２】
実行対象２４１２は、Field-BIST制御情報２１１内の各チェインに属する対象部の実行順序に相当する情報が格納される。内蔵タイマ２４１３は、チェインの実行スケジュールの開始時刻の条件の判定やチェインや対象部の実行時間の計測に用いられる。
【００３３】
コントローラ２４２は、決定された実行順序及び実行条件に基づいて実行対象の自己診断対象部群を選択し、周辺システム２８０に指示する。また、コントローラ２４２は、周辺システム２８０から自己診断の実行結果を取得し内部に保存する。コントローラ２４２は、BIST回路２４２１と、実行結果２４２２とを備える。BIST回路２４２１は、自己診断処理を実行するための回路である。具体的には、BIST回路２４２１は、自己診断処理対象として選択されたチェイン及びそのチェインに属する対象部と実行順序をスケジューラ２４１から受け付ける。そして、BIST回路２４２１は、受け付けたチェイン及び対象部に基づくテストパターンを生成する。その後、BIST回路２４２１は、周辺システム２８０に対して自己診断の対象部とその実行順序を指定して、テストパターンを出力する。
【００３４】
Port制御２６０は、不揮発メモリ書換え用のプログラマ３００と接続するための機能モジュールである。MainCPU２７０は、ユーザプログラム等の実行に応じてマイクロコンピュータ２００内に各種処理の命令を発行する。特に、MainCPU２７０は、システム運用時（ユーザプログラムの実行中に）自己診断のスケジューリングの変更や割り込み処理を実行させるために、内部バス２５０を介してField-BIST制御システム２４０へ命令を発行する。具体的には、MainCPU２７０は、内部バス２５０を経由して、実行Plan２４１１のQueue内のチェインの優先順位を変更することができる。これにより、システム起動時は固定の優先順位で自己診断が実行されるが、ユーザプログラム実行開始後のシステム運用中における自己診断の（実行）優先順位は、システムの運用状況に応じて自由に変更できる。
【００３５】
周辺システム２８０は、自己診断の対象部（機能ブロック）の集合体である。周辺システム２８０は、MatrixController２８１と、対象部２９１〜２９ｚとを備える。MatrixController２８１は、Field-BIST制御システム２４０からの自己診断の対象部群と実行順序とテストパターン等を受け付け、実行順序に従って該当する対象部群に対してテストパターンを入力し、出力結果をField-BIST制御システム２４０へ出力する。
【００３６】
尚、本実施の形態２にかかるField-BIST制御システム２４０及びMatrixController２８１は、上述した自己診断部１５０の一例といえる。
【００３７】
また、Field-BIST制御情報２１１の設定の一例としては、マイクロコンピュータ２００は、プログラマ３００からの処理単位及び開始条件等の設定指示をPort制御２６０を介して受け付け、不揮発メモリ書換え機能２２０により不揮発メモリ２１０内のField-BIST制御情報２１１を設定する。
【００３８】
Field-BIST制御情報２１１の他の設定例としては、システム運用時に、MainCPU２７０がスケジューラ２４１やコントローラ２４２に対してチェインの変更を指示するものがある。さらに、MainCPU２７０は、Field-BIST制御情報２１１を直接上書きすることもできる。
【００３９】
ここで、本実施の形態２の特徴の一つは、次のように表現できる。すなわち、処理単位の開始条件は、各処理単位内の各機能ブロックにおける自己診断処理の実行順序（Exec. Order）と、各処理単位間の優先順位（Priority）と、を含む。そして、自己診断部（例えば、Field-BIST制御システム２４０）は、優先順位に基づいて自己診断処理を開始する処理単位を選択し、当該選択した処理単位内の各機能ブロックについて実行順序に基づいて自己診断処理を実行する。このように、機能ブロックの実行制御としてチェイン間、チェイン内、後述のフラグといった階層的に制御することで木目細かな制御が可能となる。
【００４０】
すなわち、ユーザは、システム起動時における自己診断対象を”Chain_00”とし、システム運用時における自己診断対象を”Chain_01”以降として適宜、選択して設定することができる。そのため、Field-BIST制御情報２１１によりユーザのシステムに対する機能安全要求に応じた診断対象部の最適な指定が可能となる。例えば、システム起動時は、システムが安全に起動するために必要な対象部のみをチェインとして登録し、自己診断を実行する。その後、システム運用時は、自己診断対象部を複数のチェインとして分割登録し実行させる。これにより、システムの運用状況に応じて適切に実行対象であるチェインを選択して実行することが可能となり、当該システムにおける顧客の機能安全要求が満たせる。
【００４１】
特に、例えば、システム運用時にユーザプログラムで使用される頻度が高い自己診断対象部はできるだけ短いチェインとして分けて登録し、独立性を高くする。この機構を適切に使用し、適切なタイミングとシステム運用条件に基づいて各チェインの自己診断を実行することで、より信頼の高いシステム運用が可能となる。
【００４２】
以上のことから本実施の形態２の効果をまとめると以下のようになる。すなわち、マイクロコンピュータのユーザが実現したいユーザシステムにおいて、顧客システムを安全に起動するため必要なシステム起動時の自己診断対象部が適切かつ容易に設定可能なため、当該システムに対して最適な時間でシステム起動時の自己診断が完了できる。その結果、マイクロコンピュータの電源投入後、最適な時間でユーザプログラムが実行可能となる。一方、システムを安全に運用するために重要な部分の診断は、診断対象部が設定可能な機構を用いることで、システム起動後の適切なタイミングで自己診断実行が可能である。
【００４３】
また、マイクロコンピュータのユーザが、同じマイクロコンピュータを用いた別のユーザシステム（アプリケーションが異なる別の顧客システム）においても、当該システムに対する顧客の機能安全要求に応じた診断対象部分の増減が容易にできることから、最適な診断対象部設定による最適な実行時間でのシステム起動時の自己診断完了が期待できる。
【００４４】
＜実施の形態３＞
本実施の形態３は、自己診断処理の実行中にスケジュール変更を可能とするものである。自己診断処理の実行中に、マイクロコンピュータの割り込み処理が発生することや、システム全体の負荷が高まった又は負荷が低くなった場合等、自己診断処理以外の他の処理に起因して、自己診断処理の内容を変更できる必要性がある。そこで、以下に示す本実施の形態３を説明する。
【００４５】
図６は、本実施の形態３にかかる自己診断装置１００ａの構成を示すブロック図である。自己診断装置１００ａは、機能ブロック１１１、１１２、・・・、１１ｎと、記憶部１２０と、自己診断部１５０ａとを備える。機能ブロック１１１等は、実施の形態１と同様である。記憶部１２０は、実行スケジュール１６０を記憶する。実行スケジュール１６０は、図１の処理単位１３１等及び開始条件１４１等に限らず、少なくとも複数の機能ブロックの自己診断処理を実行するための予定を示す情報であればよい。
【００４６】
自己診断部１５０ａは、実行スケジュール１６０に基づいて複数の機能ブロック１１１〜１１ｎについて自己診断処理を実行する。そして、自己診断部１５０ａは、自己診断処理の実行中に、当該自己診断処理以外の他の処理の実行状況に応じて、実行スケジュール１６０における実行予定の機能ブロックを変更するものである。これにより、自己診断処理の柔軟性を向上し、多様な要求にも対応できる。
【００４７】
ここで、自己診断処理は、システム運用中であってもユーザプログラム等の他の処理が、自己診断処理対象の機能ブロックを実行していなければ、実行可能である。逆に言うと、ユーザプログラムの実行と自己診断処理とで同一の機能ブロックを実行してしまうと、処理結果に問題が生じるため、いずれか一方しか実行できない。そして、通常は自己診断処理よりもユーザプログラム等の実行を優先させることになる。そのため、実行スケジュール１６０に従い自己診断処理を実行し、次に実行予定の機能ブロックが、並列実行されているユーザプログラム等により長期間実行されている場合には、当該実行予定の機能ブロックの自己診断処理は待たされることになる。特に、ユーザプログラム等の実行内容により当該機能ブロックがほぼ常時動作している場合には、事実上、自己診断処理は停止することになり、実行スケジュールを終了することができない。
【００４８】
そこで、本実施の形態３では、さらに次のようにできることが望ましい。すなわち、本実施の形態３にかかる自己診断部１５０ａは、他の処理と並行して自己診断処理を実行し、実行スケジュールに基づいて自己診断処理を実行予定の機能ブロックについて、他の処理により実行中である場合、当該機能ブロックに代えて他の未実行の機能ブロックの自己診断処理を開始する。これにより、少なくとも実行スケジュールを継続することができ、一部の機能ブロックを除いて自己診断処理を終了させることができる。
【００４９】
図７は、本実施の形態３にかかる自己診断処理の流れを示すフローチャートである。まず、自己診断部１５０ａは、実行スケジュール１６０に基づき自己診断処理を開始する（Ｓ２１）。例えば、実行スケジュール１６０に定義された複数の機能ブロックについて、規定された実行順序に従って順番に機能ブロックの自己診断処理を実行する。また、ステップＳ２１と並行して、自己診断装置１００ａを搭載する半導体装置は、複数の機能ブロックを用いた他の処理の実行を開始する（Ｓ２２）。
【００５０】
ここで、自己診断部１５０ａは、実行スケジュール１６０に基づき実行予定の機能ブロックがステップＳ２２の他の処理により実行中であるか否かを判定する（Ｓ２３）。ここで、実行中であると判定した場合、自己診断部１５０ａは、実行予定の機能ブロックの自己診断処理の実行を保留する（Ｓ２４）。また、自己診断部１５０ａは、実行スケジュール１６０に基づき未実行の他の機能ブロックの自己診断処理を開始する（Ｓ２５）。一方、ステップＳ２３において、実行予定の機能ブロックが他の処理により実行中でないと判定した場合、自己診断部１５０ａは、実行スケジュール１６０通り、実行予定の機能ブロックの自己診断処理を開始する（Ｓ２６）。
【００５１】
このように実施の形態３により、自己診断処理の柔軟性を向上させることができる。さらに、他の処理と並列して自己診断処理を進めることができるため、自己診断処理が停止することを防ぎ、一部を除いて大半の機能ブロックについての自己診断処理を確実に終了させることができる。
【００５２】
＜実施の形態４＞
本実施の形態４は、上述した実施の形態１、２及び３を組み合わせたものである。すなわち、実施の形態４にかかる自己診断部は、少なくとも実施の形態１の機能に加えて、自己診断処理以外の他の処理の実行状況に応じて、当該自己診断処理を実行中の機能ブロックより後に実行予定の機能ブロックを変更するものである。これにより、自己診断処理の柔軟性を向上し、多様な要求にも対応できる。
【００５３】
また、上記に加えて、実施の形態３の機能を有することが望ましい。すなわち、実施の形態４にかかる自己診断部は、選択した処理単位内の機能ブロックについて自己診断処理を開始する際に当該機能ブロックが他の処理により実行中である場合、当該機能ブロックに代えて他の未実行の機能ブロックの自己診断処理を開始する。これにより、自己診断処理が停止することを防ぎ、一部を除いて大半の機能ブロックについての自己診断処理を確実に終了させることができる。
【００５４】
さらに、上記に加えて、次の構成を有することが望ましい。すなわち、複数の機能ブロックのそれぞれは、自己の実行状態を示す実行状態情報を保持するものとする。そして、自己診断部は、選択した処理単位内の機能ブロックについて自己診断処理を開始する前に、当該機能ブロックの実行状態情報を参照し、当該実行状態情報が他の処理による実行中であることを示す場合に、当該機能ブロックに代えて他の未実行の機能ブロックの自己診断処理を開始する。これにより、機能ブロック自身が最新の実行状態を保持するため、自己診断処理を無駄なく実行することができる。
【００５５】
また、上記に加えて、次の構成を有することが望ましい。すなわち、複数の機能ブロックのそれぞれは、自己診断処理の許否を示す許否情報を保持するものとする。そして、自己診断部は、選択した処理単位内の機能ブロックについて自己診断処理を開始する前に、当該機能ブロックの許否情報を参照し、当該許否情報が当該機能ブロックにおける自己診断処理を許可しないことを示す場合に、当該機能ブロックに代えて他の未実行の機能ブロックの自己診断処理を開始する。これにより、一時に特定の機能ブロックの自己診断を回避した場合に、実行スケジュール自体を変更することなく、外部から直接制御することができる。よって、自己診断の実行中に即時に該当機能ブロックの自己診断の保留を反映させることができる。
【００５６】
さらに、上記に加えて、次の構成を有するとよい。すなわち、自己診断部は、自己診断処理を実行中の機能ブロックより後に実行予定の機能ブロックを変更した場合、その旨を自己診断結果として通知する。これにより、自己診断処理が保留された機能ブロックについて、ユーザが明確に認識することができる。例えば、保留が長期間連続して続くようであれば、何らかの異常があるか、実行スケジュールの見直しが必要であることがわかる。
【００５７】
図８は、本実施の形態４にかかる周辺システム２８０の構成を示すブロック図である。尚、その他の構成は、実施の形態２にかかる図３等と同等である。周辺システム２８０は、MatrixController２８１と、対象部２９１〜２９ｚとを備える。対象部２９１等のそれぞれは、MatrixController２８１からの制御信号ＩＮ１等と接続されている。また、対象部２９１等のそれぞれは、MatrixController２８１への出力信号ＯＵＴ１等、マスク値ＦＬＧ１１等及びフラグ値ＦＬＧ１２等と接続する。
【００５８】
図９は、本実施の形態４にかかる対象部２９１の構成を示すブロック図である。尚、対象部２９２〜２９ｚの構成は対象部２９１と同等であるため図示及び説明を省略する。対象部２９１は、マスク２９１１と、フラグ２９１２とをレジスタ内に保持する。
【００５９】
マスク２９１１は、上述した許否情報の一例であり、対象部２９１における自己診断処理の実行を許可するか禁止するかを示す情報である。例えば、マスク２９１１は、ユーザプログラムの実行等に応じて、MainCPU２７０から内部バス２５０を経由して“０”（許可）又は“１”（禁止）が設定される。この場合、マスク２９１１の“０”は、自己診断処理の実行が許可状態（＝非マスク状態）であり、マスク２９１１の“１”は、自己診断処理の実行が禁止状態（＝マスク状態）であることを示すものとする。
【００６０】
フラグ２９１２は、上述した実行状態情報の一例であり、対象部２９１が他の処理（例えば、ユーザプログラム）により使用されていることを示す情報である。フラグ２９１２は、対象部２９１が自己診断処理以外による使用（実行）が開始した場合に、対象部２９１自身によりレジスタに“１”が設定される。この場合、対象部２９１がユーザプログラムにより使用されている状態（＝自己診断実行不可能状態）であることを示す。また、当該使用が終了した場合、対象部２９１自身によりレジスタに“０”が設定される。この場合、対象部２９１がユーザプログラムにより使用されていない状態（＝自己診断実行可能状態）であることを示す。
【００６１】
図８に戻り説明を続ける。MatrixController２８１は、チェインに示される自己診断処理の実行順序に従い、ｎ番目の対象部の出力信号をｎ＋１番目の対象部の制御信号として疑似接続することで、１つのチェインを実現する。そして、自己診断処理の実行順序の最後の対象部の出力信号は、当該チェインのテスト結果としてField-BIST制御システム２４０へ出力される。
また、MatrixController２８１は、ある対象部に対する自己診断処理の開始前までに、当該対象部のマスク２９１１又はフラグ２９１２が“１”である場合、当該対象部に対する疑似接続を解除して、実行順序が次の対象部と疑似接続して自己診断処理を続ける。つまり、自己診断処理が実行中であっても後続の対象部については実行スケジュールを変更して、当該対象部を一時的に自己診断対象から外すことができる。そのため、あるチェインの自己診断処理が開始した後であっても、特定の対象部についてユーザプログラムによる実行を阻害することがない。このとき、MatrixController２８１は、当該対象部を未実行の他の対象部と実行順序を入れ替えるか、当該対象部の実行順序と当該チェインにおける最後とするか、今回のチェインの自己診断処理から除外するか等により実現してもよい。
【００６２】
ここで、図１０は、本実施の形態４にかかるMatrixController２８１の構成を示すブロック図である。MatrixController２８１は、Switching制御２８１１とスイッチ回路群２８１２とを備える。
【００６３】
ここで、MatrixController２８１は、Field-BIST制御システム２４０から自己診断処理の実行開始が指示される際に、優先順位が１番目として指定されたチェインの情報（対象部の実行順序等）が、スケジューラ２４１からコントローラ２４２を経由して（制御用信号のControlにより）出力される。これにより、Switching制御２８１１は、スイッチ回路群２８１２のうち実行順序が隣り合う対象部を上述したように疑似接続する。
【００６４】
そして、MatrixController２８１は、テストパターンの入出力用のStream_Out及びStream_In、制御用信号のControl、周辺システム２８０からの実行状況や結果を示す信号のStatus（不図示）でコントローラ２４２と相互接続される。尚、コントローラ２４２とMatrixController２８１との間は、動作制御用のControl信号と動作状態を示すStatus信号によるハンドシェイクされることとなる。
【００６５】
疑似接続の完了後、MatrixController２８１は、コントローラ２４２のBIST回路２４２１が生成する当該対象部用のテストパターンをStream_Out情報として受け付ける。そして、MatrixController２８１は、当該テストパターンをスイッチ回路群２８１２で実行順序の１番目として疑似接続された対象部に対して出力する。その後、MatrixController２８１は、１番目の対象部からの出力結果を２番目の対象部へ出力する。以降、同様に、実行順序の最後まで行われる。
【００６６】
そして、MatrixController２８１は、最後の対象部からシフト・アウトされたテスト結果を、Stream_Inとしてコントローラ２４２のBIST回路２４２１へと出力する。これにより、BIST回路２４２１は、出力結果と期待値（不図示）とを照合し、合否判定（Pass/Fail）を行い、その結果を実行結果２４２２（レジスタ）に格納する。
【００６７】
尚、回路故障を含む何らかの原因により、適切な動作が期待時間内に完了又は継続できなくなった場合は、スケジューラ２４１内の内蔵タイマ２４１３によってTime Outとして検出され、コントローラ２４２内の実行結果２４２２レジスタに書込まれる。そして、ユーザは、実行結果２４２２のレジスタ値を読み出すことにより、自己診断の実行ステータス(実行中か否か)及び実行結果（正常終了/異常終了）が確認できる。
【００６８】
図１１は、本実施の形態４にかかるマイクロコンピュータの実行の流れを示すフローチャートである。まず、マイクロコンピュータが起動する（Ｓ３１）。これにより、スケジューラ２４１は、不揮発メモリ２１０からField-BIST制御情報２１１を読み出し、内部に保存する。ここでは、電源投入直後であるため、スケジューラ２４１は、“Chein_00”を自己診断処理の対象として選択する。
【００６９】
次に、コントローラ２４２は、“Chein_00”の自己診断処理を実行する（Ｓ３２）。具体的には、まず、コントローラ２４２は、マイコン制御システム２３０から“Chein_00”の自己診断処理の実行指示を受け付ける。そして、スケジューラ２４１の実行Plan２４１１及び実行対象２４１２から“Chein_00”の情報がコントローラ２４２へ出力される。その後、コントローラ２４２は、MatrixController ２８１へ“Chein_00”の自己診断処理の実行指示を行い、そのテストパターンを生成してMatrixController２８１へ出力する。これにより、周辺システム２８０内の該当の対象部において自己診断処理が実行され、自己診断結果がコントローラ２４２へ出力される。
【００７０】
続いて、コントローラ２４２は、自己診断結果が正常か否かを判定する（Ｓ３３）。異常と判定された場合、その旨を外部へ出力し、処理を終了する。一方、自己診断結果が正常と判定された場合、MainCPU２７０は、ユーザプログラムの実行を開始し（Ｓ３５）、併せて、スケジューラ２４１及びコントローラ２４２は、“Chein_01”の自己診断処理を実行する（Ｓ３４１）。尚、“Chein_01”の自己診断処理の流れは“Chein_00”と同等であり、また、ステップＳ３３相当の判定も行われるが、フローチャート上は省略するものとする。以降、“Chein_02”・・・“Chein_05”の自己診断処理を実行する（Ｓ３４５）。“
【００７１】
図１２は、本実施の形態４にかかる自己診断処理の流れを示すフローチャートである。ここでは、図１１のステップＳ３４１〜Ｓ３４５における各自己診断処理に共通する処理ついて説明する。尚、図１１のステップＳ３２における自己診断処理に適用することも可能である。
【００７２】
まず、MatrixController２８１は、対象のチェインにおける実行順序に従い、次に実行予定の機能ブロック（対象部）を選択する（Ｓ４１）。そして、MatrixController２８１は、選択した機能ブロックの自己診断処理が実行不可か否かを判定する（Ｓ４２）。具体的には、MatrixController２８１は、選択した機能ブロックのマスク２９１１及びフラグ２９１２を参照する。そして、いずれかが“１”である場合、MatrixController２８１は、選択した機能ブロックの自己診断処理の実行を回避する（Ｓ４３）。具体的には、Switching制御２８１１がスイッチ回路群２８１２の疑似接続を、実行順序において次の機能ブロックに変更する。そして、MatrixController２８１は、当該機能ブロックの自己診断処理を回避した旨を診断結果としてコントローラ２４２へ通知する（Ｓ４４）。
【００７３】
一方、ステップＳ４２においてマスク２９１１及びフラグ２９１２のいずれもが“０”である場合、MatrixController２８１は、選択した機能ブロックの自己診断処理を実行する（Ｓ４５）。ステップＳ４４又はＳ４５の後、MatrixController２８１は、上記の処理対象の機能ブロックが実行順序の最後であったか否かを判定する（Ｓ４６）。実行順序の最後でなければ、ステップＳ４１へ戻り処理を続ける。一方、実行順序の最後であった場合、当該処理を終了する。
【００７４】
以上のことから本実施の形態４の効果をまとめると以下のようになる。すなわち、ユーザプログラム実行開始後のシステム運用中における自己診断において、自己診断対象部の動作状況が把握可能なため、自己診断対象部が非動作時であれば、ユーザプログラムのバックグラウンドで自己診断処理が実行できる。その結果、特許文献１等では、通常動作モードと自己診断モードとが直列しかできなかったものを、並列実行することにより、自己診断処理時間の全体を短縮することができる。そして、自己診断処理の間隔を、ユーザシステムの運用状況に応じて変更可能なため、機能安全として重要な診断対象箇所はより短いインターバルで、そうでない部分はより長いインターバルでの自己診断が実行可能となる。そのため、より安全かつ適切なシステム運用が可能となる。
【００７５】
また、従来では、自己診断対象部が動作中であった場合、その対象部が非動作状態になるまで自己診断処理が待たされる、もしくは、動作状況によっては、事実上、自己診断処理が行われない可能性があった。そこで、本実施の形態の自己診断対象部の可変機構及び自己診断対象部の動作状況確認機構により、ユーザプログラム実行開始後のシステム運用中における自己診断において、自己診断対象部の動作状況が把握可能となった。そのため、実行スケジュールのダイナミックな変更が可能になり、上記課題が解決できる。よって、ユーザシステムの安全運用が可能となる。
【００７６】
＜実施の形態５＞
本実施の形態５は、上述した実施の形態の改良例である。すなわち、本実施の形態５にかかる自己診断部は、選択した処理単位内の機能ブロックについて自己診断処理を開始する前に割込み処理が発生した場合、当該機能ブロックに代えて他の処理単位における自己診断処理を開始するものである。これにより、通常の動作頻度が低いが障害時等の緊急時のために使用される機能ブロックについて、障害時の割り込み要求が発生した際に、障害時用のチェインにより自己診断処理を実行させることにより、障害時用の機能ブロック自体が安全であったか否かの切り分けが可能となり、適切な障害分析を行うことが可能となる。
【００７７】
＜実施の形態６＞
本実施の形態６は、上述した実施の形態の改良例である。すなわち、本実施の形態６にかかる自己診断部は、選択した処理単位内の機能ブロックについて自己診断処理を開始する時点で、他の処理による当該自己診断装置全体の負荷が所定値より低い場合、当該機能ブロックと共に他の未実行の機能ブロックの自己診断処理を開始するものである。これにより、ユーザプログラムと並列して自己診断処理を実行した上で、さらにリソースに空きが生じたときには、チェイン内の残りの対象部についてまとめて自己診断処理を実行させることができる。そのため、効率的かつ低リスクで、自己診断時間を短縮することができる。
【００７８】
＜実施の形態７＞
上述したように自己診断処理を並列実行した場合、消費電流のピークが高まってしまうというおそれがある。ピーク電流が高まると、マイクロコンピュータの温度も上昇し、搭載したシステム全体へ悪影響を及ぼし得る。そこで、本実施の形態７では、並列実行すべく定義された複数の機能ブロック間で開始時のクロックを分散させるものである。
すなわち、本実施の形態７にかかる自己診断部は、開始条件が重なる２以上の処理単位が存在する場合、当該処理単位間の機能ブロックの自己診断処理の開始タイミングを調整する。例えば、機能ブロックの開始クロックを分散することで、ピーク電流を平滑化できる。よって、上述した実施の形態１の効果と共に、単位時間あたりの電流増加を抑制することもできる。
【００７９】
＜その他の実施の形態＞
説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。また、様々な処理を行う機能ブロックとして図面に記載される各要素は、ハードウェア的には、ＣＰＵ、メモリ、その他の回路で構成することができ、ソフトウェア的には、メモリにロードされたプログラムなどによって実現される。したがって、これらの機能ブロックがハードウェアのみ、ソフトウェアのみ、またはそれらの組合せによっていろいろな形で実現できることは当業者には理解されるところであり、いずれかに限定されるものではない。尚、各図面において、同一の要素には同一の符号が付されており、必要に応じて重複説明は省略されている。
【００８０】
また、上述したプログラムは、様々なタイプの非一時的なコンピュータ可読媒体（ｎｏｎ−ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体（ｔａｎｇｉｂｌｅ  ｓｔｏｒａｇｅ  ｍｅｄｉｕｍ）を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えばフレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば光磁気ディスク）、ＣＤ−ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ（Ｐｒｏｇｒａｍｍａｂｌｅ  ＲＯＭ）、ＥＰＲＯＭ（Ｅｒａｓａｂｌｅ  ＰＲＯＭ）、フラッシュＲＯＭ、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ））を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体（ｔｒａｎｓｉｔｏｒｙ  ｃｏｍｐｕｔｅｒ  ｒｅａｄａｂｌｅ  ｍｅｄｉｕｍ）によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【００８１】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は既に述べた実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において種々の変更が可能であることはいうまでもない。
【符号の説明】
【００８２】
１００  自己診断装置
１００ａ  自己診断装置
１１１  機能ブロック
１１２  機能ブロック
１１ｎ  機能ブロック
１２０  記憶部
１３１  処理単位
１３２  処理単位
１４１  開始条件
１４２  開始条件
１５０  自己診断部
１５０ａ  自己診断部
１６０  実行スケジュール
２００  マイクロコンピュータ
２１０  不揮発メモリ
２１１  Field-BIST制御情報
２２０  不揮発メモリ書換え機能
２３０  マイコン制御システム
２４０  Field-BIST制御システム
２４１  スケジューラ
２４１１  実行Plan
２４１２  実行対象
２４１３  内蔵タイマ
２４２  コントローラ
２４２１  BIST回路
２４２２  実行結果
２５０  内部バス
２６０  Port制御
２７０  MainCPU
２８０  周辺システム
２８１  MatrixController
２８１１  Switching制御
２８１２  スイッチ回路群
２９１  対象部
２９１１  マスク
２９１２  フラグ
２９２  対象部
２９ｚ  対象部
ＩＮ１  制御信号
ＯＵＴ１  出力信号
ＦＬＧ１１  マスク値
ＦＬＧ１２  フラグ値
３００  プログラマ
【図１】
2015176402.tif 000003
【図２】
2015176402.tif 000004
【図３】
2015176402.tif 000005
【図４】
2015176402.tif 000006
【図５】
2015176402.tif 000007
【図６】
2015176402.tif 000008
【図７】
2015176402.tif 000009
【図８】
2015176402.tif 000010
【図９】
2015176402.tif 000011
【図１０】
2015176402.tif 000012
【図１１】
2015176402.tif 000013
【図１２】
2015176402.tif 000014