(57)【要約】【課題】一つのＣＰＵコアがブレイクポイント等で停止した際に、他のＣＰＵコアを遅延することなく停止させシミュレーション精度を向上させる。【解決手段】ＣＰＵコア１２、デバッグ制御部１３を有するハードウェアエミュレータ１０と、ＣＰＵコア２３、クロックを生成してＣＰＵコア１３、２３に供給するクロック生成部２１を有するソフトウェアシミュレータ２０と、ＣＰＵコア１２、２３に対するデバッグを行い、クロックの停止条件が設定されるデバッガ３０とを備え、デバッグ制御部１３が、デバッガ３０に設定されたクロックの停止条件が成立したと判断するとクロック停止信号を出力し、クロック生成部２１がクロック停止信号を受け取るとクロックの生成を停止することを特徴とする。【選択図】図１
2008310727.tif 000002
【特許請求の範囲】
【請求項１】
シミュレーションの対象としての第１のＣＰＵコアと、デバッグ制御部とを有するハードウェアエミュレータと、
シミュレーションの対象としての第２のＣＰＵコアと、クロックを生成して前記第１のＣＰＵコア及び前記第２のＣＰＵコアに供給するクロック生成部とを有するソフトウェアシミュレータと、
前記第１、第２のＣＰＵコアに対するデバッグを行い、クロックの停止条件が設定されるデバッガと、  
を備え、
前記デバッグ制御部が、前記デバッガに設定されたクロックの停止条件が成立したと判断すると、クロック停止信号を出力し、
前記クロック生成部が前記クロック停止信号を受け取ると、前記クロックの生成を停止することを特徴とするシミュレーション装置。
【請求項２】
前記デバッガは、ブレイクポイントが設定されるブレイクポイント設定部を有し、
前記デバッグ制御部は、前記第１のＣＰＵコアにおいて実行しているプログラムのアドレスが前記ブレイクポイント設定部に設定されている前記ブレイクポイントに一致したとき、前記デバッガに設定されたクロックの停止条件が成立したと判断することを特徴とする請求項１記載のシミュレーション装置。
【請求項３】
前記デバッガは、ブレイクポイントが設定されるブレイクポイント設定部と、動作開始条件が設定される動作開始設定部とを有し、
前記デバッグ制御部は、前記第１のＣＰＵコアにおいて実行しているプログラムのアドレスが前記ブレイクポイント設定部に設定されている前記ブレイクポイントに一致し、かつ前記動作開始設定部に第１の値が設定されているとき、前記デバッガに設定されたクロックの停止条件が成立したと判断して前記クロック停止信号を出力し、その後、前記動作開始設定部に第２の値が設定されると、クロック動作信号を出力し、
前記クロック生成部が前記クロック動作信号を受け取ると、前記クロックの生成を開始して前記第１のＣＰＵコア及び前記第２のＣＰＵコアに供給することを特徴とする請求項１記載のシミュレーション装置。
【請求項４】
シミュレーションの対象としての第１のＣＰＵコアと、クロックを生成して前記第１のＣＰＵコアに供給するエミュレータ動作制御部と、デバッグ制御部とを有するハードウェアエミュレータと、
シミュレーションの対象としての第２のＣＰＵコアと、クロックを生成して前記第２のＣＰＵコアに供給するシミュレータ動作制御部と、前記エミュレータ動作制御部と前記シミュレータ動作制御部との動作を協調する協調動作制御部とを有するソフトウェアシミュレータと、
前記第１、第２のＣＰＵコアに対するデバッグを行い、クロックの停止条件が設定されるデバッガと、  
を備え、
前記デバッグ制御部が、前記デバッガに設定されたクロックの停止条件が成立したと判断すると、クロック停止信号を出力し、
前記エミュレータ動作制御部が前記クロック停止信号を受け取ると、動作停止割り込み信号を出力し、
前記協調動作制御部が前記動作停止割り込み信号を受け取ると、前記エミュレータ動作制御部と前記シミュレータ動作制御部とに同期／制御情報を出力し、これにより前記エミュレータ動作制御部と前記シミュレータ動作制御部とがクロックの生成を停止することを特徴とするシミュレーション装置。
【請求項５】
シミュレーションの対象としての第１のＣＰＵコアと、デバッグ制御部とを有するハードウェアエミュレータと、シミュレーションの対象としての第２のＣＰＵコアと、クロックを生成して前記第１のＣＰＵコア及び前記第２のＣＰＵコアに供給するクロック生成部とを有するソフトウェアシミュレータと、前記第１、第２のＣＰＵコアに対するデバッグを行い、クロックの停止条件が設定されるデバッガとを備えるシミュレーション装置を用いて、前記第１、第２のＣＰＵコアに対するデバッグを行うシミュレーションを行う方法であって、
前記デバッグ制御部により、前記デバッガに設定された前記クロックの停止条件が成立するか否かを判断するステップと、
前記デバッグ制御部が、前記クロックの停止条件が成立したと判断すると、前記クロック生成部が前記クロックの生成を停止するステップと、
を備えることを特徴とするシミュレーション方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、シミュレーション装置及びシミュレーション方法に関し、特にハードウェアエミュレータとソフトウェアシミュレータとの協調シミュレーションが行われるシミュレーション装置及び方法に関する。
【背景技術】
【０００２】
近年における大規模化されたシステムＬＳＩにおいて、チップ上に形成された後にアーキテクチャレベルの不具合が発見されると、修正に多くの時間とコストが必要になる。そこで、このようなシステムＬＳＩ開発では、検証済みの既存設計のブロックやモジュール等を再利用したり、トップダウン設計手法により段階的に検証を行うようにして、設計品質と開発効率を向上させることが行われている。このようなシステムレベルの検証では、システム全体を対象とする検証技術が必要とされ、シミュレーションによって検証を行う際には高い精度が要求されている。
【０００３】
シミュレーションでは、ソフトウェアによるシミュレーションの他に、プログラマブルデバイス（例えば、ＦＰＧＡ（Field Programmable Gate Array））を用いてシミュレーションを行うハードウェアエミュレータが用いられている。
【０００４】
ハードウェアエミュレータは、ソフトウェアシミュレータに比べて、数桁高速に動作することができる。しかし、プログラマブルデバイスの素子数の規模やコストの点から、エミュレートできる回路規模が限られている。このため、ハードウェアエミュレータとソフトウェアシミュレータとを協調させてシミュレーションする手法が提案されている。
【０００５】
このような協調シミュレーションでは、ハードウェアエミュレータ内におけるテスト対象物（Design Under Test）としてのＣＰＵコアと、ソフトウェアシミュレータ内のＣＰＵコアとに対し、デバッガによりデバッグが行われる。
【０００６】
マルチＣＰＵコアをデバッグする手法としては、例えばＪＴＡＧ−ＩＣＥ（Joint Test Action Group）を利用したデバッグがある。しかしこの手法では、ある１つのＣＰＵコアがブレイクポイントに達するなどによりシミュレーションが停止した後、他のＣＰＵコアを停止させるまで１ミリ秒程度の遅延が生じる（日経エレクトロニクス２００６．１．２号 第１２２頁参照）。
【０００７】
これは、ＣＰＵコアが停止したことをＪＴＡＧ−ＩＣＥに送信するために１サイクル、ＪＴＡＧ−ＩＣＥから他のＣＰＵコアを停止させるために１サイクルを要するためである。
【０００８】
そのため、ブレイクポイント等において停止する度に、それぞれのＣＰＵコア毎に実行サイクル数が変わってしまい、シミュレーションの精度が落ちるという問題があった。
【０００９】
以下、従来のハードウェアエミュレータ及びソフトウェアシミュレータを協調させたシミュレーション手法を開示する文献名を記載する。
【特許文献１】米国特許第２００６／００３６４２７号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明は、一つのＣＰＵコアにおいてブレイクポイントに到達した際に、他のＣＰＵコアとともに同時に停止させることで各ＣＰＵコアの実行サイクル数を一致させ、シミュレーション精度を向上させることができるシミュレーション装置及びシミュレーション方法を提供することを目的とする。
【課題を解決するための手段】
【００１１】
本発明の一態様によるシミュレーション装置は、シミュレーションの対象としての第１のＣＰＵコアと、デバッグ制御部とを有するハードウェアエミュレータと、シミュレーションの対象としての第２のＣＰＵコアと、クロックを生成して前記第１のＣＰＵコア及び前記第２のＣＰＵコアに供給するクロック生成部とを有するソフトウェアシミュレータと、前記第１、第２のＣＰＵコアに対するデバッグを行い、クロックの停止条件が設定されるデバッガとを備え、前記デバッグ制御部が、前記デバッガに設定されたクロックの停止条件が成立したと判断すると、クロック停止信号を出力し、前記クロック生成部が前記クロック停止信号を受け取ると、前記クロックの生成を停止することを特徴とする。
【００１２】
本発明の一態様によるシミュレーション装置は、シミュレーションの対象としての第１のＣＰＵコアと、クロックを生成して前記第１のＣＰＵコアに供給するエミュレータ動作制御部と、デバッグ制御部とを有するハードウェアエミュレータと、シミュレーションの対象としての第２のＣＰＵコアと、クロックを生成して前記第２のＣＰＵコアに供給するシミュレータ動作制御部と、前記エミュレータ動作制御部と前記シミュレータ動作制御部との動作を協調する協調動作制御部とを有するソフトウェアシミュレータと、前記第１、第２のＣＰＵコアに対するデバッグを行い、クロックの停止条件が設定されるデバッガとを備え、前記デバッグ制御部が、前記デバッガに設定されたクロックの停止条件が成立したと判断すると、クロック停止信号を出力し、前記エミュレータ動作制御部が前記クロック停止信号を受け取ると、動作停止割り込み信号を出力し、前記協調動作制御部が前記動作停止割り込み信号を受け取ると、前記エミュレータ動作制御部と前記シミュレータ動作制御部とに同期／制御情報を出力し、これにより前記エミュレータ動作制御部と前記シミュレータ動作制御部とがクロックの生成を停止することを特徴とする。
【００１３】
本発明の一態様によるシミュレーション方法は、シミュレーションの対象としての第１のＣＰＵコアと、デバッグ制御部とを有するハードウェアエミュレータと、シミュレーションの対象としての第２のＣＰＵコアと、クロックを生成して前記第１のＣＰＵコア及び前記第２のＣＰＵコアに供給するクロック生成部とを有するソフトウェアシミュレータと、前記第１、第２のＣＰＵコアに対するデバッグを行い、クロックの停止条件が設定されるデバッガとを備えるシミュレーション装置を用いて、前記第１、第２のＣＰＵコアに対するデバッグを行うシミュレーションを行う方法であって、前記デバッグ制御部により、前記デバッガに設定された前記クロックの停止条件が成立するか否かを判断するステップと、前記デバッグ制御部が、前記クロックの停止条件が成立したと判断すると、前記クロック生成部が前記クロックの生成を停止するステップとを備えることを特徴とする。
【発明の効果】
【００１４】
本発明のシミュレーション装置及びシミュレーション方法によれば、一つのＣＰＵコアがブレイクポイントに到達した際にも他のＣＰＵコアとともに同時に停止させることにより、シミュレーション精度を向上させることが可能である。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態について図面を参照して説明する。
【００１６】
（１）実施の形態１
本発明の実施の形態１によるシミュレーション装置の構成を図１に示す。
【００１７】
このシミュレーション装置は、ハードウェアエミュレータ１０と、ソフトウェアシミュレータ２０と、デバッガ３０とを備える。
【００１８】
ハードウェアエミュレータ１０は、ＤＵＴ１１としてのＣＰＵコア１２と、デバッガ操作情報を受け取りクロックを停止又は動作させるためのクロック停止／動作信号をソフトウェアシミュレータ２０に送信するデバッグ制御部１３とを有する。ソフトウェアシミュレータ２０は、クロックを生成するクロック生成部２１と、ＤＵＴ２２としてのＣＰＵコア２３とを有する。デバッガ３０は、ＣＰＵコア１２、２３との間でＣＰＵ内部情報を送受信し、デバッグ制御部１３とＣＰＵコア２３との間でデバッガ操作情報を送受信してＣＰＵコア１２、２３のデバッグを行うものである。
【００１９】
このシミュレーション装置は、ソフトウェアシミュレータ２０内のクロック生成部２１において生成されたクロックに共に同期して、ハードウェアエミュレータ１０内のＣＰＵコア１２とソフトウェアシミュレータ２０内のＣＰＵコア２３とが動作することにより、協調シミュレーションを行う。
【００２０】
デバッガ３０がＣＰＵコア１２、２３内のそれぞれのプログラムカウンタやレジスタの状態に関するＣＰＵ内部情報を受け取り、デバッグ操作に関するデバッガ操作情報をデバッグ制御部１３、ＣＰＵコア２３に出力しながらデバッグ動作を進めていく。
【００２１】
そして、ハードウェアエミュレータ１０内のＣＰＵコア１２がブレイクポイントに到達すると、デバッガ３０からクロックを停止するようにデバッガ操作情報がデバッグ制御部１３に出力される。デバッグ制御部１３はこのデバッガ操作情報を受け取ると、クロック停止を伝えるクロック停止／動作信号をソフトウェアシミュレータ２０内のクロック生成部２１に与えて、クロック生成を停止させる。これにより、クロック生成部２１からＣＰＵコア１２、２３へのクロックの供給が停止され、デバッグ動作が停止する。
【００２２】
図２に、デバッグ制御部１３とクロック生成部２１との間の信号の送受信及び動作手順を示す。
【００２３】
図示されてないデバッガ３０からデバッガ操作情報を与えられたデバッグ制御部１３が、クロック停止／動作信号をクロック生成部２１に与える。クロック生成部２１は、図２に示されたようなクロック生成用の関数を有し、クロック停止／動作信号が論理「１」である場合にクロックを停止し、論理「０」である場合にはクロックを生成する。クロックを停止する場合は、クロック生成部２１からＣＰＵコア１２、２３へのクロックの供給が停止される。
【００２４】
図３に、ハードウェアエミュレータ１０とデバッガ３０との間における信号の送受信及び動作手順を示す。
【００２５】
ハードウェアエミュレータ１０におけるＣＰＵコア１２内に、ＣＰＵコア１２が動作しているプログラム上のアドレス値が格納されているプログラムカウンタ１２ａと、制御・汎用レジスタ１２ｂとが設けられている。
【００２６】
デバッガ３０内における表示部３１に、ＣＰＵコア１２内のプログラムカウンタ１２ａ、制御・汎用レジスタ１２ｂが有するＣＰＵコア１２の内部情報として、例えばレジスタに保持されたデータやデバッグの対象となるソースコード等が表示される。
【００２７】
デバッガ３０内におけるブレイクポイント設定部３２に、ブレイクポイントの設定が行われる。設定されたデータは変更されるまでの間保持され、ブレイクポイント信号がブレイクポイント判断部１３ａに出力される。
【００２８】
動作開始設定部３３には、ブレイクポイントに到達した時に停止可能なようにするための設定、あるいはブレイクポイント等において一旦動作が停止した状態から開始させるための設定が行われ、動作開始信号がＡＮＤ回路ＡＮ１に出力される。動作開始信号が論理「０」であるときは、ブレイクポイントにおいて停止が可能な状態に設定され、論理「１」であるときは、動作が開始するように設定される。
【００２９】
デバッグ制御部１３におけるブレイクポイント判断部１３ａには、プログラムカウンタ１２ａからのプログラムカウンタ値と、ブレイクポイント設定部３２からのブレイクポイント信号とが入力され、両者が一致しているか否かが判断される。一致しない間は論理「０」を有する不一致信号が出力され、一致すると論理「１」の一致信号がＡＮＤ回路ＡＮ１に出力される。
【００３０】
ＡＮＤ回路ＡＮ１において、論理「１」の一致信号が入力され、かつ動作開始設定部３３から論理「０」の動作／停止信号が反転されて論理「１」が入力されると、論理「１」のクロック停止／動作信号が出力される。これ以外の場合は、論理「０」のクロック停止／動作信号が出力される。
【００３１】
論理「１」のクロック停止／動作信号が出力されてクロック生成部２１に与えられると、クロック生成動作が停止する。これにより、ハードウェアエミュレータ１０内のＣＰＵコア１２とソフトウェアシミュレータ２０内のＣＰＵコア２３とが、両者の間に時間的ずれを伴うことなく同時に動作を停止する。
【００３２】
ブレイクポイントにおいて一旦動作が停止すると、プログラムカウンタ１２ａ内の値はブレイクポイントにおいて停止する。この状態から、デバッガ３０内の動作開始設定部３３にユーザが動作開始を設定すると、論理「１」の動作開始信号が出力され、反転されて論理「０」がＡＮＤ回路ＡＮ１に入力されてクロック停止／動作信号が論理「０」となる。これにより、クロック生成部２１が動作を再開してＣＰＵコア１２、２３にクロックを供給する。ＣＰＵコア１２、２３が同時期に動作を開始する。
【００３３】
ここで、ブレイクポイントや動作開始に関する設定をデバッガ３０において行い保持することで、ブレイクポイントに至るまでの間、ハードウェアエミュレータ１０とデバッガ３０との間でクロックの同期を取る必要性が排除される。
【００３４】
図４に、ブレイクポイントに到達してクロックの供給を停止し、ＣＰＵコア１２、２３の動作を停止させるまでの各種信号の波形を示し、動作手順について説明する。
１）デバッガ３０内のブレイクポイント設定部３２に、ハードウェアエミュレータ１０内のＣＰＵコア１２に対するブレイクポイント（図４において、「０ｘ８」）の設定が行われる。
２）デバッガ３０内の動作開始設定部３３において、ハードウェアエミュレータ１０内のＣＰＵコア１２を動作させるための動作開始の設定（論理「１」）が行われる。
３）デバッグ制御部１３が、クロック生成部２１に対してクロックを生成させるように、ＡＮＤ回路ＡＮ１から論理「０」のクロック停止／動作信号を出力する。
４）クロック生成部２１がクロックを生成し、図４に示されたようにハードウェアエミュレータ１０内のＣＰＵコア１２とソフトウェアシミュレータ２０内のＣＰＵコア２３とに供給する。
５）デバッガ３０内のブレイクポイント設定部３２に設定されたブレイクポイント（「０ｘ８」）と、ハードウェアエミュレータ１０内のプログラムカウンタ１２ａの値とが一致し、かつデバッガ３０内の動作開始設定部３３から論理「０」の動作開始信号が出力されている時点に到達するまでの間は、クロック生成部２１はクロックを生成する。
６）プログラムカウンタ１２ａの値がブレイクポイントに到達し、かつ動作開始設定部３３から論理「０」の動作開始信号が出力されている時点に到達すると、
（ア）デバッグ制御部１３からクロック生成部２１に対し、クロックを停止させるためのクロック停止／動作信号（論理「１」）が出力される。
（イ）クロック生成部２１からＣＰＵコア１２、２３へのクロック供給が停止する。
（ウ）ハードウェアエミュレータ１０内の制御・汎用レジスタ１２ｂからデバッガ３０に対し、ＣＰＵコア１２の内部情報、例えば制御レジスタや汎用レジスタの値等が送られ、表示部３１に表示する等の処理が行われる。
７）デバッガ３０内の動作開始設定部３３に、動作開始の設定が行われて論理「１」の動作開始信号が出力されると、論理「０」のクロック停止／動作信号が出力され、クロック生成部２１がクロックの生成を再開する。
【００３５】
比較例によるシミュレーション装置では、ハードウェアエミュレータ内のＣＰＵコアが実行しているプログラム中にブレイクポイントがあると、デバッガがハードウェアエミュレータ内及びソフトウェアシミュレータ内のそれぞれのＣＰＵコアに命令を与えて動作を停止していた。このため、各ＣＰＵコアの動作停止時期にずれが生じていた。
【００３６】
これに対し本実施の形態１によれば、エミュレータ内のＣＰＵコアにおいて実行中のプログラムがブレイクポイントに到達した時、ハードウェアエミュレータ１０内のデバッグ制御部１３からソフトウェアシミュレータ２０内のクロック生成部２１にクロック停止を通知することで、遅延することなく各ＣＰＵコア１２、２３を同時に停止させることができる。
【００３７】
これにより、ブレイクポイントで停止し動作を再開した場合にも、複数のＣＰＵコア間で実行サイクル数が変わることがなく、シミュレーション精度を向上させることができる。
【００３８】
（２）実施の形態２
本発明の実施の形態２によるシミュレーション装置について、その構成を示した図５を用いて説明する。
【００３９】
上記実施の形態１では、クロック生成はソフトウェアシミュレータ２０内に設けられたクロック生成部２１においてのみ行われ、このクロック生成部２１からソフトウェアシミュレータ２０内のＣＰＵコア２３とハードウェアエミュレータ１０内のＣＰＵコア１２とにクロックが供給される。
【００４０】
これに対し本実施の形態２では、ハードウェアエミュレータ５０内に、エミュレータ動作制御部５４においてクロックの生成が行われ、このクロックがハードウェアエミュレータ５０内のＣＰＵコア１２に供給される。
【００４１】
また、ソフトウェアシミュレータ６０内に、ソフトウェアシミュレータ６０内のＣＰＵコア６３に供給するクロックを生成するシミュレータ動作制御部６１ｂが設けられている。さらにソフトウェアシミュレータ６０内に、エミュレータ動作制御部５４と、シミュレータ動作制御部６１ｂとの間で、クロック生成動作を同期・協調するための協調動作制御部６１ａが設けられている。
【００４２】
デバッガ７０内に予め設定されたブレイクポイントに、ハードウェアエミュレータ５０内のＣＰＵコア５２のプログラムカウンタの値が到達すると、クロックを停止するためのクロック停止／動作信号がデバッグ制御部５３から出力されるまでの動作は、上記実施の形態１と同様であり説明を省略する。
【００４３】
このクロック停止／動作信号は、ハードウェアエミュレータ５０内のエミュレータ動作制御部５４に一旦入力され、動作停止／開始割り込み信号がソフトウェアシミュレータ３０内の協調動作制御部６１ａに入力される。この後、協調動作制御部６１ａからエミュレータ動作制御部５４とシミュレータ動作制御部６１ａとに、同時にクロックを停止するように同期／制御情報がそれぞれ出力される。これにより、エミュレータ動作制御部５４からＣＰＵコア５２へのクロックの供給が停止され、シミュレータ動作制御部６１ｂからＣＰＵコア６３へのクロックの供給が停止され、同時に動作が停止する。
【００４４】
本実施の形態２においても上記実施の形態１と同様に、ハードウェアエミュレータ５０内、ソフトウェアシミュレータ６０内のＣＰＵコア５２、６３をデバッグする際に、プログラムカウンタの値がブレイクポイントに到達した時、クロックの供給を停止し複数のＣＰＵコア５２、６３間でサイクル誤差を生じることなく動作を停止させることができるため、精度の高いデバッグが可能となる。特に、組み込み機器の開発においては、サイクルに依存したプログラム設計がなされることがあり、より高精度のデバッグが要求されるため実施の形態１、２を適用することは有意義である。
【００４５】
上述した実施の形態はいずれも一例であって、本発明を限定するものではなく、本発明の技術的範囲内において様々に変形することが可能である。例えば、上記実施の形態１では図３に示されたように、デバッガ３０内にはブレイクポイント設定部３２が一つしか設けられておらず、ブレイクポイントを１カ所しか設定することはできない。しかしこれに限らず、複数のブレイクポイント設定部を設けて、複数箇所にブレイクポイントが設定できるように構成してもよい。この場合にも同様に、各ブレイクポイントに到達した時点でクロックの供給が停止し、各ＣＰＵコアの動作を同時に停止させることができる。
【図面の簡単な説明】
【００４６】
【図１】本発明の実施の形態１によるシミュレーション装置の構成を示したブロック図。
【図２】同シミュレーション装置におけるハードウェアエミュレータとソフトウェアシミュレータにおける動作内容を示した説明図。
【図３】同シミュレーション装置におけるハードウェアエミュレータとデバッガにおける動作内容を示した説明図。
【図４】同シミュレーション装置におけるハードウェアエミュレータ内のデバッグ制御部からソフトウェアシミュレータ内のクロック生成部のクロック生成動作を制御するタイミングを示すタイムチャート。
【図５】本発明の実施の形態２によるシミュレーション装置の構成を示したブロック図。
【符号の説明】
【００４７】
１０、５０  ハードウェアエミュレータ
１２、５２  ＣＰＵコア
１３、５３  デバッグ制御部
２０、６０  ソフトウェアシミュレータ
２１  クロック生成部
２３、６３  ＣＰＵコア
３０、７０  デバッガ
６１ａ  協調動作制御部
６１ｂ  シミュレータ動作制御部
【図１】
2008310727.tif 000003
【図２】
2008310727.tif 000004
【図３】
2008310727.tif 000005
【図４】
2008310727.tif 000006
【図５】
2008310727.tif 000007