(57)【特許請求の範囲】
【請求項１】
シミュレーション対象回路を分割して複数のシミュレーションアクセラレータに割り当て、これらのシミュレーションアクセラレータを同時に動作させることにより、該シミュレーション対象回路の論理シミュレーションを実行するためのシミュレーション方法であって、
前記論理シミュレーションを実行してトレースすべき信号を指定する信号名情報を含むトレース情報を、システム制御部から、該複数のシミュレーションアクセラレータにそれぞれ対応してそなえられた複数のアクセラレータ制御部へ放送出力する第１ステップと、
前記トレース情報に応じて各アクセラレータ制御部により各シミュレーションアクセラレータを制御しながら、各シミュレーションアクセラレータにより該シミュレーション対象回路の論理シミュレーションを実行することにより、該シミュレーションアクセラレータ毎に前記信号名情報により指定された信号の状態をトレースする第２ステップと、
該複数のシミュレーションアクセラレータによって得られたトレースパターンを結合することにより、前記信号名情報により指定された全ての信号の状態をトレース結果として得る第３ステップとを有し、
各シミュレーションアクセラレータに割り当てられた該シミュレーション対象回路の分割部分における信号の信号名情報とそのシミュレーションアクセラレータにマッピングされたアドレス情報との対応関係を、該アクセラレータ制御部毎に、アドレス情報データベースとして予め保持させておき、
前記第２ステップにおいて、前記トレース情報に含まれる信号名情報に対応するアドレス情報が該アドレス情報データベースに存在する場合には、そのアドレス情報に対応するフィールドに、各シミュレーションアクセラレータにより得られた前記トレースパターンを出力する一方、前記トレース情報に含まれる信号名情報に対応するアドレス情報が該アドレス情報データベースに存在しない場合には、その信号名情報に対応するアドレス情報としてダミーアドレスを設定し、そのダミーアドレスに対応するフィールドに、前記トレースパターンとしてダミーパターンを出力し、
前記第３ステップにおいて、前記ダミーパターン以外の実際のトレースパターンのみを結合して前記トレース結果を得ることを特徴とする、シミュレーション方法。
【請求項２】
前記第２ステップの実行前に、各アクセラレータ制御部において、前記トレース情報を記述した実行スクリプトに基づいて、前記論理シミュレーションの対象となる信号に対応するアドレス情報を該アドレス情報データベースから読み出してアドレス情報テーブルを作成するとともに、前記論理シミュレーションの対象となる信号に対応するアドレス情報が該アドレス情報データベースに存在しない場合には、その信号に対応する該アドレス情報テーブルのフィールドにダミーアドレスを格納しておいてから、
前記第２ステップにおいて、各アクセラレータ制御部が該アドレス情報テーブルを参照しながら各シミュレーションアクセラレータを制御することを特徴とする、請求項１記載のシミュレーション方法。
【請求項３】
前記第２ステップの実行前に、各アクセラレータ制御部において、前記トレース情報を記述した実行スクリプトに基づいて、前記論理シミュレーションの対象となる信号に対応するアドレス情報を該アドレス情報データベースから読み出してアドレス情報抽出データベースを作成するとともに、前記論理シミュレーションの対象となる信号に対応するアドレス情報が該アドレス情報データベースに存在しない場合には、その信号に対応する該アドレス情報抽出データベースのフィールドにダミーアドレスを格納しておいてから、
前記第２ステップにおいて、各アクセラレータ制御部が、前記トレース情報に応じたアドレス情報を該アドレス情報抽出データベースから読み出し該アドレス情報テーブルとして展開することを特徴とする、請求項２記載のシミュレーション方法。
【請求項４】
前記第２ステップにおいて、該アドレス情報抽出データベースを参照して前記信号名情報に対応するアドレス情報を該アドレス情報抽出データベースから読み出すモードと、該アドレス情報データベースを直接参照して前記信号名情報に対応するアドレス情報を該アドレス情報データベースから読み出すモードとのいずれか一方を選択的に切り替えて使用することを特徴とする、請求項３記載のシミュレーション方法。
【請求項５】
前記第２ステップにおいて、前記信号名情報により指定された信号の状態がトレース不可能である場合、バックトレースによってトレース不可能な信号を出力しているゲート素子を検索し、該ゲート素子の入力端子における信号の状態をトレースするとともに該ゲート素子に対応する論理式を生成し、該ゲート素子の入力端子における信号の状態をトレースすることを特徴とする、請求項１〜請求項４のいずれか１項に記載のシミュレーション方法。
【請求項６】
該複数のシミュレーションアクセラレータを、異なる複数の接続構成で接続した状態でそれぞれ動作可能に構成し、
ある接続構成で該複数のシミュレーションアクセラレータを動作させている場合には、他の接続構成で該複数のシミュレーションアクセラレータを動作させる命令を受け付けても、当該接続構成での動作を完了するまで当該命令を待機させるように、接続構成の排他制御を行なうことを特徴とする、請求項１〜請求項５のいずれか１項に記載のシミュレーション方法。
【請求項７】
シミュレーション対象回路を分割して複数のシミュレーションアクセラレータに割り当て、これらのシミュレーションアクセラレータを同時に動作させることにより、該シミュレーション対象回路の論理シミュレーションを実行するためのシミュレーションシステムであって、
該複数のシミュレーションアクセラレータをそれぞれ直接的に制御する複数のアクセラレータ制御部と、
前記論理シミュレーションを実行してトレースすべき信号を指定する信号名情報を含むトレース情報を、該複数のアクセラレータ制御部に対して放送出力することにより、該複数のシミュレーションアクセラレータによる前記論理シミュレーションを制御するシステム制御部と、
該複数のシミュレーションアクセラレータによる前記論理シミュレーションの結果を結合する結合部とをそなえるとともに、
各シミュレーションアクセラレータに割り当てられた該シミュレーション対象回路の分割部分における信号の信号名情報とそのシミュレーションアクセラレータにマッピングされたアドレス情報との対応関係を予め保持するアドレス情報データベースを、該アクセラレータ制御部毎にそなえ、
各アクセラレータ制御部が、前記トレース情報に応じて各シミュレーションアクセラレータを制御しながら各シミュレーションアクセラレータにより該シミュレーション対象回路の論理シミュレーションを実行させることにより、該シミュレーションアクセラレータ毎に前記信号名情報により指定された信号の状態をトレースさせ、その際、前記トレース情報に含まれる信号名情報に対応するアドレス情報が該アドレス情報データベースに存在する場合には、そのアドレス情報に対応するフィールドに、各シミュレーションアクセラレータにより得られた前記トレースパターンを出力する一方、前記トレース情報に含まれる信号名情報に対応するアドレス情報が該アドレス情報データベースに存在しない場合には、その信号名情報に対応するアドレス情報としてダミーアドレスを設定し、そのダミーアドレスに対応するフィールドに、前記トレースパターンとしてダミーパターンを出力し、
該結合部が、該複数のシミュレーションアクセラレータによって得られた、前記ダミーパターン以外の実際のトレースパターンのみを結合することにより、前記信号名情報により指定された全ての信号の状態をトレース結果として得ることを特徴とする、シミュレーションシステム。
【請求項８】
各アクセラレータ制御部が、前記論理シミュレーションの実行前に、前記トレース情報を記述した実行スクリプトに基づいて、前記論理シミュレーションの対象となる信号に対応するアドレス情報を該アドレス情報データベースから読み出してアドレス情報テーブルを作成するとともに、前記論理シミュレーションの対象となる信号に対応するアドレス情報が該アドレス情報データベースに存在しない場合には、その信号に対応する該アドレス情報テーブルのフィールドにダミーアドレスを格納しておいてから、該アドレス情報テーブルを参照しながら各シミュレーションアクセラレータを制御することを特徴とする、請求項７記載のシミュレーションシステム。
【請求項９】
各アクセラレータ制御部が、前記論理シミュレーションの実行前に、前記トレース情報を記述した実行スクリプトに基づいて、前記論理シミュレーションの対象となる信号に対応するアドレス情報を該アドレス情報データベースから読み出してアドレス情報抽出データベースを作成するとともに、前記論理シミュレーションの対象となる信号に対応するアドレス情報が該アドレス情報データベースに存在しない場合には、その信号に対応する該アドレス情報抽出データベースのフィールドにダミーアドレスを格納しておいてから、前記論理シミュレーションの実行時に、前記トレース情報に応じたアドレス情報を該アドレス情報抽出データベースから読み出し該アドレス情報テーブルとして展開することを特徴とする、請求項８記載のシミュレーションシステム。
【請求項１０】
各アクセラレータ制御部が、該アドレス情報抽出データベースを参照して前記信号名情報に対応するアドレス情報を該アドレス情報抽出データベースから読み出すモードと、該アドレス情報データベースを直接参照して前記信号名情報に対応するアドレス情報を該アドレス情報データベースから読み出すモードとのいずれか一方を選択的に切り替えて使用することを特徴とする、請求項９記載のシミュレーションシステム。
【請求項１１】
前記信号名情報により指定された信号の状態がトレース不可能である場合、バックトレースによってトレース不可能な信号を出力しているゲート素子を検索し、該ゲート素子の入力端子における信号の状態をトレースするとともに該ゲート素子に対応する論理式を生成し、該ゲート素子の入力端子における信号の状態をトレース結果することを特徴とする、請求項７〜請求項１０のいずれか１項に記載のシミュレーションシステム。
【請求項１２】
該複数のシミュレーションアクセラレータを、異なる複数の接続構成で接続した状態でそれぞれ動作可能に構成し、
ある接続構成で該複数のシミュレーションアクセラレータを動作させている場合には、他の接続構成で該複数のシミュレーションアクセラレータを動作させる命令を受け付けても、当該接続構成での動作を完了するまで当該命令を待機させるように、接続構成の排他制御を行なう排他制御部をそなえたことを特徴とする、請求項７〜請求項１１のいずれか１項に記載のシミュレーションシステム。
【発明の詳細な説明】
（目次）
発明の属する技術分野
従来の技術
発明が解決しようとする課題
課題を解決するための手段
発明の実施の形態（図１〜図２１）
発明の効果
【０００１】
【発明の属する技術分野】
本発明は、複数のシミュレーションアクセラレータを同時に動作させてＬＳＩ等の大規模回路の論理シミュレーションを行なう際に用いて好適のシミュレーション方法およびシミュレーションシステムに関する。
【０００２】
【従来の技術】
一般に、ＬＳＩ等の大規模回路の論理シミュレーションを高速化するために、ソフトウェアによる論理シミュレータと同じ動作を行なうシミュレーションアクセラレータ（以下、単にアクセラレータという場合がある）と呼ばれる専用のハードウェアが用いられている。
【０００３】
アクセラレータは、１つの筐体内に複数枚の基板をそなえて構成され、各基板には、多数のプログラマブル素子（ＧＰＥ：Gate Primitive Element）が組み込まれている。そして、各プログラマブル素子にシミュレーション対象となる回路の論理（アルゴリズム）を書き込む。つまり、回路の論理を、一旦、プリミティブなゲートのレベルに直してから、プログラマブル素子にマッピングする。これにより、実際に回路を作成することなく、アクセラレータを、シミュレーション対象の回路として動作させることができる。このようなアクセラレータをワークステーション（以下、ＷＳと略記）により制御しながら、回路のシミュレーションを実行する。
【０００４】
従来、シミュレーション対象の回路が大規模化した場合、アクセラレータを成す筐体内に装着される基板数を増加させることにより、メモリなどのハードウェアリソースを拡張して対応している。
また、基板数の増加だけでは対応できない場合には、複数台のアクセラレータを接続して対応する。このとき、予めシミュレーション対象の回路データを分割して各アクセラレータに割り当ててマッピングしておき、これらのアクセラレータを各回路データに対応させて同時に動作させることにより、回路のシミュレーションを実行する。
【０００５】
このように複数台のアクセラレータを用いてシミュレーションを行なう際、アクセラレータ間を専用回線により接続するとともに、複数台のアクセラレータのうちの１台をマスタアクセラレータとし、このマスタアクセラレータに、全アクセラレータのシミュレーション動作を制御するための１台の制御用ＷＳを直接的に接続する。
【０００６】
そして、マスタアクセラレータは、制御用ＷＳからシミュレーションのためのトレース情報を受けると、そのトレース情報を解析し、そのトレース情報に応じた情報を前記専用回線により他のアクセラレータへ送る。また、シミュレーション実行時に、アクセラレータ間では、前記専用回線を介してシミュレーションに関するデータが送受信される。このようにして、各アクセラレータは、制御用ＷＳからのトレース情報に従ってアクセラレータ間で通信を行ないながら動作し、シミュレーションを実行する。シミュレーション結果は、前記専用回線を通じてマスタアクセラレータに送られ、このマスタアクセラレータから制御用ＷＳへ送られる。なお、トレース情報には、論理シミュレーションを行なってトレースすべき信号の名（信号名）が含まれている。
【０００７】
【発明が解決しようとする課題】
しかし、上述のごとく１台のＷＳにより複数台のアクセラレータを制御しながらシミュレーションを実行する場合、分割された回路データは各アクセラレータの制御部で処理されるので、ユーザがトレースポイントとして指定した大量の信号名を各アクセラレータでアドレス情報に変換しなければならない。このため、各アクセラレータの制御部におけるアドレス変換処理が実際のシミュレーションの実行時間に比べて大きくなり、シミュレータとしての性能を充分に発揮できない。また、アクセラレータ間の専用回線が、シミュレーションのためのデータ送受信以外に制御命令の送信にも使用されるため、専用回線の負荷が重くなり、シミュレーション性能を低下させる要因の一つになっている。
【０００８】
そこで、複数台のアクセラレータそれぞれにスレーブサーバＷＳをそなえ、１台の制御用ＷＳが、これらのスレーブサーバＷＳに対してトレース情報を送り、各スレーブサーバＷＳが、各アクセラレータを直接的に制御するように構成したシステムも提案されている。
このようなシステムでは、各スレーブサーバＷＳでアドレス情報の変換処理が行なわれるので、各アクセラレータの負荷が軽減される。また、トレース情報が、専用回線を用いることなく、各スレーブサーバＷＳから各アクセラレータへ直接的に送られるので、専用回線の負荷も軽減される。
【０００９】
ところで、上述したシステムにおいて制御用ＷＳが複数台のスレーブサーバＷＳに対してトレース情報を送る手法としては、以下の２つの手法▲１▼，▲２▼を用いることが考えられる。
手法▲１▼：制御用ＷＳが、各アクセラレータによってシミュレートされる回路部分に係るデータ（各アクセラレータの処理対象となるべきデータ）を判別し、その部分のみを各スレーブサーバＷＳに送る。つまり、制御用ＷＳは、スレーブサーバＷＳ毎に異なる内容のトレース情報を送る。
【００１０】
手法▲２▼：制御用ＷＳが、全てのスレーブサーバＷＳに全く同じトレース情報を放送（同報／同報通信）し、各スレーブサーバＷＳが、そのスレーブサーバＷＳの制御対象アクセラレータによってシミュレートされる回路部分に係るデータ（制御対象アクセラレータの処理対象となるべきデータ）を抽出し、そのデータ（トレース情報）に対する処理をアクセラレータに実行させる。
【００１１】
しかしながら、手法▲１▼では、制御用ＷＳが、各アクセラレータの処理対象データ（トレース情報）を判別しなければならない。このため、シミュレーション対象回路の規模が大きくなり、処理データ量（トレースポイントとして指定する信号名の数等）が膨大になると、複数台のスレーブサーバＷＳを管理しなければならない制御用ＷＳの負荷が重くなりすぎ、処理効率上好ましくない。
【００１２】
また、手法▲１▼および手法▲２▼のいずれを用いた場合でも、各アクセラレータによるシミュレーション結果は、各スレーブサーバＷＳから制御用ＷＳへ送られ、この制御用ＷＳで結合(concatenate）される。このとき、シミュレーション対象の回路データが分割され複数のアクセラレータに割り当てられているので、各スレーブサーバＷＳは、各アクセラレータで処理されているデータのアドレスを常に把握・記憶し、シミュレーション結果を制御用ＷＳへ送る際には、そのアドレスをタグとしてシミュレーション結果に付加しなければならない。従って、シミュレーション対象回路の規模が大きくなると、各スレーブサーバＷＳの負荷が重くなってしまう。さらに、制御用ＷＳでシミュレーション結果の結合を行なう際には、シミュレーション結果に付加されたアドレスを参照しながらデータの組込みを行なう必要があるため、シミュレーション対象回路の規模が大きくなると、そのシミュレーション結果の結合処理に極めて手間や時間を要する。
【００１３】
本発明は、このような課題に鑑み創案されたもので、複数のシミュレーションアクセラレータを同時に動作させて論理シミュレーションを行なう際に、シミュレーション回路が大規模化しても高速かつ効率的に論理シミュレーションを実行できるようにして、シミュレーション性能の大幅な向上を実現した、シミュレーション方法およびシミュレーションシステムを提供することを目的とする。
【００１４】
【課題を解決するための手段】
上記目的を達成するために、本発明のシミュレーション方法（請求項１）は、シミュレーション対象回路を分割して複数のシミュレーションアクセラレータに割り当て、これらのシミュレーションアクセラレータを同時に動作させることにより、該シミュレーション対象回路の論理シミュレーションを実行するためのものであって、前記論理シミュレーションを実行してトレースすべき信号を指定する信号名情報を含むトレース情報を、システム制御部から、該複数のシミュレーションアクセラレータにそれぞれ対応してそなえられた複数のアクセラレータ制御部へ放送出力（同報／同報通信）する第１ステップと、前記トレース情報に応じて各アクセラレータ制御部により各シミュレーションアクセラレータを制御しながら、各シミュレーションアクセラレータにより該シミュレーション対象回路の論理シミュレーションを実行することにより、該シミュレーションアクセラレータ毎に前記信号名情報により指定された信号の状態をトレースする第２ステップと、該複数のシミュレーションアクセラレータによって得られたトレースパターンを結合することにより、前記信号名情報により指定された全ての信号の状態をトレース結果として得る第３ステップとを有し、各シミュレーションアクセラレータに割り当てられた該シミュレーション対象回路の分割部分における信号の信号名情報とそのシミュレーションアクセラレータにマッピングされたアドレス情報との対応関係を、該アクセラレータ制御部毎に、アドレス情報データベースとして予め保持させておき、前記第２ステップにおいて、前記トレース情報に含まれる信号名情報に対応するアドレス情報が該アドレス情報データベースに存在する場合には、そのアドレス情報に対応するフィールドに、各シミュレーションアクセラレータにより得られた前記トレースパターンを出力する一方、前記トレース情報に含まれる信号名情報に対応するアドレス情報が該アドレス情報データベースに存在しない場合には、その信号名情報に対応するアドレス情報としてダミーアドレスを設定し、そのダミーアドレスに対応するフィールドに、前記トレースパターンとしてダミーパターンを出力し、前記第３ステップにおいて、前記ダミーパターン以外の実際のトレースパターンのみを結合して前記トレース結果を得ることを特徴としている。
【００１５】
なお、前記第２ステップの実行前に、各アクセラレータ制御部において、前記トレース情報を記述した実行スクリプトに基づいて、前記論理シミュレーションの対象となる信号に対応するアドレス情報を該アドレス情報データベースから読み出してアドレス情報テーブルを作成するとともに、前記論理シミュレーションの対象となる信号に対応するアドレス情報が該アドレス情報データベースに存在しない場合には、その信号に対応する該アドレス情報テーブルのフィールドにダミーアドレスを格納しておいてから、前記第２ステップにおいて、各アクセラレータ制御部が該アドレス情報テーブルを参照しながら各シミュレーションアクセラレータを制御してもよい（請求項２）。
【００１６】
この場合、前記第２ステップの実行前に、各アクセラレータ制御部において、前記トレース情報を記述した実行スクリプトに基づいて、前記論理シミュレーションの対象となる信号に対応するアドレス情報を該アドレス情報データベースから読み出してアドレス情報抽出データベースを作成するとともに、前記論理シミュレーションの対象となる信号に対応するアドレス情報が該アドレス情報データベースに存在しない場合には、その信号に対応する該アドレス情報抽出データベースのフィールドにダミーアドレスを格納しておいてから、前記第２ステップにおいて、各アクセラレータ制御部が、前記トレース情報に応じたアドレス情報を該アドレス情報抽出データベースから読み出し該アドレス情報テーブルとして展開してもよい（請求項３）。
【００１７】
このとき、前記第２ステップにおいて、該アドレス情報抽出データベースを参照して前記信号名情報に対応するアドレス情報を該アドレス情報抽出データベースから読み出すモードと、該アドレス情報データベースを直接参照して前記信号名情報に対応するアドレス情報を該アドレス情報データベースから読み出すモードとのいずれか一方を選択的に切り替えて使用してもよい（請求項４）。
【００１８】
また、前記第２ステップにおいて、前記信号名情報により指定された信号の状態がトレース不可能である場合、バックトレースによってトレース不可能な信号を出力しているゲート素子を検索し、該ゲート素子の入力端子における信号の状態をトレースするとともに該ゲート素子に対応する論理式を生成し、該ゲート素子の入力端子における信号の状態をトレースしてもよい（請求項５）。
【００１９】
さらに、該複数のシミュレーションアクセラレータを、異なる複数の接続構成で接続した状態でそれぞれ動作可能に構成し、ある接続構成で該複数のシミュレーションアクセラレータを動作させている場合には、他の接続構成で該複数のシミュレーションアクセラレータを動作させる命令を受け付けても、当該接続構成での動作を完了するまで当該命令を待機させるように、接続構成の排他制御を行なってもよい（請求項６）。
【００２０】
一方、本発明のシミュレーションシステム（請求項７）は、シミュレーション対象回路を分割して複数のシミュレーションアクセラレータに割り当て、これらのシミュレーションアクセラレータを同時に動作させることにより、該シミュレーション対象回路の論理シミュレーションを実行するためのものであって、該複数のシミュレーションアクセラレータをそれぞれ直接的に制御する複数のアクセラレータ制御部と、前記論理シミュレーションを実行してトレースすべき信号を指定する信号名情報を含むトレース情報を該複数のアクセラレータ制御部に対して放送出力（同報／同報通信）することにより該複数のシミュレーションアクセラレータによる前記論理シミュレーションを制御するシステム制御部と、該複数のシミュレーションアクセラレータによる前記論理シミュレーションの結果を結合する結合部とをそなえるとともに、各シミュレーションアクセラレータに割り当てられた該シミュレーション対象回路の分割部分における信号の信号名情報とそのシミュレーションアクセラレータにマッピングされたアドレス情報との対応関係を予め保持するアドレス情報データベースを、該アクセラレータ制御部毎にそなえ、各アクセラレータ制御部が、前記トレース情報に応じて各シミュレーションアクセラレータを制御しながら各シミュレーションアクセラレータにより該シミュレーション対象回路の論理シミュレーションを実行させることにより、該シミュレーションアクセラレータ毎に前記信号名情報により指定された信号の状態をトレースさせ、その際、前記トレース情報に含まれる信号名情報に対応するアドレス情報が該アドレス情報データベースに存在する場合には、そのアドレス情報に対応するフィールドに、各シミュレーションアクセラレータにより得られた前記トレースパターンを出力する一方、前記トレース情報に含まれる信号名情報に対応するアドレス情報が該アドレス情報データベースに存在しない場合には、その信号名情報に対応するアドレス情報としてダミーアドレスを設定し、そのダミーアドレスに対応するフィールドに、前記トレースパターンとしてダミーパターンを出力し、該結合部が、該複数のシミュレーションアクセラレータによって得られた、前記ダミーパターン以外の実際のトレースパターンのみを結合することにより、前記信号名情報により指定された全ての信号の状態をトレース結果として得ることを特徴としている。
【００２１】
なお、前記シミュレーションシステムにおいて、各アクセラレータ制御部が、前記論理シミュレーションの実行前に、前記トレース情報を記述した実行スクリプトに基づいて、前記論理シミュレーションの対象となる信号に対応するアドレス情報を該アドレス情報データベースから読み出してアドレス情報テーブルを作成するとともに、前記論理シミュレーションの対象となる信号に対応するアドレス情報が該アドレス情報データベースに存在しない場合には、その信号に対応する該アドレス情報テーブルのフィールドにダミーアドレスを格納しておいてから、該アドレス情報テーブルを参照しながら各シミュレーションアクセラレータを制御してもよい（請求項８）。
【００２２】
この場合、各アクセラレータ制御部が、前記論理シミュレーションの実行前に、前記トレース情報を記述した実行スクリプトに基づいて、前記論理シミュレーションの対象となる信号に対応するアドレス情報を該アドレス情報データベースから読み出してアドレス情報抽出データベースを作成するとともに、前記論理シミュレーションの対象となる信号に対応するアドレス情報が該アドレス情報データベースに存在しない場合には、その信号に対応する該アドレス情報抽出データベースのフィールドにダミーアドレスを格納しておいてから、前記論理シミュレーションの実行時に、前記トレース情報に応じたアドレス情報を該アドレス情報抽出データベースから読み出し該アドレス情報テーブルとして展開してもよい（請求項９）。
【００２３】
このとき、各アクセラレータ制御部が、該アドレス情報抽出データベースを参照して前記信号名情報に対応するアドレス情報を該アドレス情報抽出データベースから読み出すモードと、該アドレス情報データベースを直接参照して前記信号名情報に対応するアドレス情報を該アドレス情報データベースから読み出すモードとのいずれか一方を選択的に切り替えて使用してもよい（請求項１０）。
【００２４】
また、前記信号名情報により指定された信号の状態がトレース不可能である場合、バックトレースによってトレース不可能な信号を出力しているゲート素子を検索し、該ゲート素子の入力端子における信号の状態をトレースするとともに該ゲート素子に対応する論理式を生成し、該ゲート素子の入力端子における信号の状態をトレース結果してもよい（請求項１１）。
【００２５】
さらに、該複数のシミュレーションアクセラレータを、異なる複数の接続構成で接続した状態でそれぞれ動作可能に構成し、ある接続構成で該複数のシミュレーションアクセラレータを動作させている場合には、他の接続構成で該複数のシミュレーションアクセラレータを動作させる命令を受け付けても、当該接続構成での動作を完了するまで当該命令を待機させるように、接続構成の排他制御を行なう排他制御部をそなえてもよい（請求項１２）。
【００２６】
上述の構成により、本発明のシミュレーション方法（請求項１〜６）およびシミュレーションシステム（請求項７〜１２）では、システム制御部はトレース情報を全てのアクセラレータ制御部に対して放送出力（同報／同報通信）するので、システム制御部が、各シミュレーションアクセラレータの処理対象データ（トレース情報）を判別する必要がなくなり、システム制御部の負荷を軽減することができる。
【００２７】
また、シミュレーションアクセラレータに割り当てられていない信号がトレース情報により指定された場合、各アクセラレータ制御部において、その信号に対応するアドレスとしてダミーアドレスが設定され、そのダミーアドレスに対応するフィールドには、論理シミュレーションにより得られたトレースパターンとしてダミーパターンが出力されるので、各アクセラレータ制御部は、各シミュレーションアクセラレータで処理されているデータのアドレスを常に把握・記憶するが必要なく、通常と同様に動作しながら、割り当てられた回路分割部分のシミュレーションを行なうことができ、各アクセラレータ制御部を負荷を軽減することができる。
【００２８】
さらに、各シミュレーションアクセラレータからのトレースパターン（論理シミュレーション結果）の結合を行なう際には、ダミーパターン以外の実際のトレースパターンのみを結合するだけで、トレース結果を容易に得ることが可能になり、論理シミュレーション結果の結合処理を簡易に且つ短時間で行なうことができる。
【００２９】
また、論理シミュレーションの実行前に、トレース情報に応じたアドレス情報をアドレス情報データベースから抽出してアドレス情報テーブル／アドレス情報抽出データベースを作成しておくことにより、トレース情報に含まれる信号名情報のアドレス変換処理を行なう必要がなくなる（請求項２〜４，８〜１０）。
さらに、信号の状態がトレース不可能であっても、論理式を用いてトレース結果を得ることができる（請求項５，１１）。
【００３０】
またさらに、複数のシミュレーションアクセラレータの接続構成に合わせた排他制御を行なうことにより、様々な接続形態で複数のシミュレーションアクセラレータを同時に動作させることが可能になる（請求項６，１２）。
【００３１】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を説明する。
図１は本発明の一実施形態としてのシミュレーションシステムの構成を説明するための図、図２は本発明の一実施形態としてのシミュレーションシステムの全体構成を概略的に示す図である。
【００３２】
これらの図１および図２に示すように、本実施形態のシミュレーションシステム１０は、独立して動作する複数のシミュレーションアクセラレータ１１−１〜１１−Ｎをそなえ、これらのシミュレーションアクセラレータ１１−１〜１１−Ｎを専用回線１２により相互にデータ通信可能に接続しており、シミュレーション対象回路を分割して複数のシミュレーションアクセラレータ１１−１〜１１−Ｎに割り当て、これらのシミュレーションアクセラレータ１１−１〜１１−Ｎを同時に動作させることにより、シミュレーション対象回路の論理シミュレーションを実行するものである。
【００３３】
そして、シミュレーションシステム１０は、シミュレーションアクセラレータ１１−１〜１１−Ｎのほかに、制御用ワークステーション（以下、制御用ＷＳと略記）２０と、スレーブサーバワークステーション（以下、スレーブサーバＷＳもしくは単にサーバと略記）３０−１〜３０−Ｎと、排他制御部４０とをそなえて構成されている。
【００３４】
なお、以下では、シミュレーションアクセラレータ１１−１〜１１−Ｎを単にアクセラレータ１１と略記する場合がある。また、アクセラレータ１１−１は、全アクセラレータ１１−１〜１１−Ｎによるシミュレーション動作を制御すべく専用回線１２を通じて他のアクセラレータ１１−２〜１１−Ｎに対して命令を送出する機能を有しており、このアクセラレータ１１−１は、マスタアクセラレータと呼ばれる。
【００３５】
ここで、スレーブサーバＷＳ（アクセラレータ制御部）３０−１〜３０−Ｎはそれぞれアクセラレータ１１−１〜１１−Ｎを直接的に制御するものであり、その詳細な構成については後述する。なお、以下では、スレーブサーバＷＳ３０−１〜３０−Ｎを単にスレーブサーバＷＳ３０と略記する場合がある。
また、制御用ＷＳ２０は、前記論理シミュレーションを実行してトレースすべき信号を指定する信号名情報を含むトレース情報を、スレーブサーバＷＳ３０−１〜３０−Ｎに対して放送出力（同報／同報通信）することによりアクセラレータ１１による論理シミュレーションを制御するシステム制御部２１として機能するほか、アクセラレータ１１による論理シミュレーションの結果を結合する結合部としての機能も果たす。この結合部としての機能は、制御用ＷＳ２０において結合用の別プログラムを走らせることにより実現される。
【００３６】
なお、システム制御部２１は、ユーザが入力したコマンドに従い、後述する排他制御部４０，実行制御部３２，入出力制御部３１にプロセス間通信で制御命令を送り、アクセラレータを遠隔地から操作できるようになっている。また、制御用ＷＳ２０には、トレース情報を記述した実行スクリプトを格納する実行スクリプトデータベース２２が付設されている。また、図１や図２には図示しないが、制御用ＷＳ２０には、前記結合部により得られたトレース出力パターンを格納するトレース出力パターンデータベース５０（図１３参照）も付設されている。
【００３７】
マスタアクセラレータ１１−１を制御するスレーブサーバＷＳ３０−１は、後述する入出力制御部３１および実行制御部３２としての機能を果たすほか、その他のアクセラレータ１１−２〜１１−Ｎをそれぞれ制御するスレーブサーバＷＳ３０−２〜３０−Ｎは、後述する実行制御部３２としての機能を果たす。
また、各スレーブサーバＷＳ３０には、後述するアドレス情報データベース３３およびアドレス情報抽出データベース３４が付設されるとともに、アドレス情報テーブル３５（図３参照）を展開されるメモリ（図示省略）がそなえられている。このメモリとしては、各スレーブサーバＷＳ３０に通常そなえられているＲＡＭ等のワーキングメモリを用いることができる。
【００３８】
さらに、各スレーブサーバＷＳ３０には、各アクセラレータ１１により得られたシミュレーション結果（出力パターン）を一時的に格納するトレースファイル３６（図１３参照）もそなえられているが、このトレースファイル３６としても、各スレーブサーバＷＳ３０に通常そなえられているＲＡＭ等のワーキングメモリを用いることができる。
【００３９】
各スレーブサーバＷＳ３０に付設されたアドレス情報データベース３３は、各アクセラレータ１１に割り当てられたシミュレーション対象回路の分割部分における信号の信号名情報とそのアクセラレータ１１にマッピングされたアドレス情報との対応関係を予め保持するものである。
スレーブサーバＷＳ３０−１における実行制御部３２は、マスタアクセラレータ１１−１に命令を送り、このマスタアクセラレータ１１−１の動作を制御するものであり、マスタアクセラレータ１１−１が、実行制御部３２からの命令に従い、専用回線１２を介して他のアクセラレータ１１−２〜１１−Ｎの動作を制御することになる。
【００４０】
各スレーブサーバＷＳ３０における入出力制御部３１は、各アクセラレータ１１へのデータ入力の制御と各アクセラレータ１１からのトレース出力の制御とを行なうものである。
また、入出力制御部３１は、システム制御部２１（制御用ＷＳ２０）から送られてきたトレースコマンド（トレース情報を記述した実行スクリプト）の指示に従って、アドレス情報データベース３３もしくは後述するアドレス情報抽出データベース３４から、図３（ａ）〜図３（ｃ）に示すごとく、メモリ上にアドレス情報テーブル３５を展開・生成する機能を有している。
【００４１】
そして、全てのスレーブサーバＷＳ３０における入出力制御部３１は、システム制御部２１から放送（同報）されてきた同じトレース情報を受信すると、そのトレース情報に応じて各アクセラレータ１１を制御しながら各アクセラレータ１１によりシミュレーション対象回路の論理シミュレーションを実行させることにより、アクセラレータ１１毎に信号名により指定された信号の状態をトレースさせる。
【００４２】
その際、各入出力制御部３１は、トレース情報に含まれる信号名に対応するアドレス情報がアドレス情報テーブル３５（アドレス情報ＤＢ３３）に存在する場合には、そのアドレス情報に対応するフィールドに、各アクセラレータ１１により得られたトレースパターンを出力する一方、トレース情報に含まれる信号名に対応するアドレス情報がアドレス情報テーブル３５（アドレス情報ＤＢ３３）に存在しない場合には、その信号名に対応するアドレス情報としてダミーアドレスを設定し、そのダミーアドレスに対応するフィールドに、トレースパターンとしてダミーパターンを出力する。
【００４３】
そして、シミュレーション終了後、制御用ＷＳ２０における結合部としての機能が、アクセラレータ１１によって得られた、前記ダミーパターン以外の実際のトレースパターンのみを結合することにより、トレース情報の信号名により指定された全ての信号の状態がトレース結果として得られる。
ところで、システム制御部２１および入出力制御部３１は、アドレス情報抽出機能を有しており、このアドレス情報抽出機能により、シミュレーションを実行させるスクリプトから信号名を参照する部分を調べ、その信号に対応するアドレス情報をアドレス情報ＤＢ３３から抽出し、アドレス情報抽出ＤＢ３４をアクセラレータ１１毎に生成する。
【００４４】
つまり、各スレーブサーバＷＳ３０における入出力制御部３１は、論理シミュレーションの実行前に、制御用ＷＳ２０からのトレース情報を記述した実行スクリプトに基づいて、論理シミュレーションの対象となる信号に対応するアドレス情報をアドレス情報ＤＢ３３から読み出してアドレス情報抽出ＤＢ３４を作成するが、その際、論理シミュレーションの対象となる信号に対応するアドレス情報がアドレス情報ＤＢ３３に存在しない場合には、その信号に対応するアドレス情報抽出ＤＢ３４のフィールドにダミーアドレスを格納しておく。そして、本実施形態では、入出力制御部３１は、論理シミュレーションの実行時に、制御用ＷＳ２０からのトレース情報に応じたアドレス情報をアドレス情報抽出ＤＢ３４から読み出しアドレス情報テーブル３５としてメモリ上に展開している。
【００４５】
さらに、システム制御部２１および入出力制御部３１は、アドレス情報抽出ＤＢ入力モード，アドレス情報抽出ＤＢ出力モード，ノーマルモードの３つのモードを有しており、ユーザからの指示に応じてこれらのモードの一つを選択的に切り替えて使用するようになっている。モード切替動作や各モードに対応した詳細な動作については、図４を参照しながら後述する。
【００４６】
アドレス情報抽出ＤＢ入力モードでは、アドレス情報ＤＢ３３を使わず、シミュレーション実行前にアドレス情報抽出ＤＢ３４を読み込んでからシミュレーションを実行する。つまり、シミュレーション実行中、アドレス情報抽出ＤＢ３４を参照して信号名に対応するアドレス情報をアドレス情報抽出ＤＢ３４から読み出す。
【００４７】
アドレス情報抽出ＤＢ出力モードは、シミュレーションを実行せず実行スクリプトを解析してトレースポイント指示だけを調べてアドレス情報抽出ＤＢ３４を出力する。
ノーマルモードでは、シミュレーション実行中に信号の参照要求があれば、その都度、アドレス情報ＤＢ３３にアクセスし、アドレス情報を取り出す。つまり、シミュレーション実行中、アドレス情報ＤＢ３３を直接参照して信号名に対応するアドレス情報をアドレス情報ＤＢ３３から読み出す。
【００４８】
さらに、本実施形態の入出力制御部３１は、論理式出力機能を有している。この論理式出力機能は、トレース指示された信号がハードウェアの制限によりトレースできない場合、バックトレースにより評価素子の入力側の信号を検索し、その検索結果に基づいて論理式を生成し、その入力側の信号に対応するアドレス情報とその論理式とをアドレス情報抽出データ３４に出力する機能である。
【００４９】
つまり、信号名により指定された信号の状態がトレース不可能である場合、バックトレースによってトレース不可能な信号を出力しているゲート素子（評価素子）を検索し、そのゲート素子の入力端子における信号の状態をトレースするとともにゲート素子に対応する論理式を生成し、ゲート素子の入力端子における信号の状態をトレースするように、ゲート素子の入力端子における信号に対応するアドレス情報をアドレス情報抽出データ３４に書き込むとともに、生成された論理式もアドレス情報抽出データ３４に格納しておく。このような論理式出力機能の詳細については、図５および図６を参照しながら後述する。
【００５０】
上述した実行制御部３２および入出力制御部３１は、アクセラレータ１１とデバイスドライバにより直結されている。
また、本実施形態では、アクセラレータ１１を、異なる複数の接続構成で接続した状態でそれぞれ動作可能に構成しており、排他制御部４０は、ある接続構成でアクセラレータ１１を動作させている場合には、他の接続構成でアクセラレータ１１を動作させる命令（実行要求）を受け付けても当該接続構成での動作を完了するまで当該命令を待機させるように、接続構成の排他制御を行なうものである。この排他制御部４０は、複数のユーザからの実行要求を受付順に保持して待機させる待ち行列テーブル４１（図８，図１８，図１９参照）を有している。
【００５１】
なお、上述した排他制御部４０は、図１においていずれのＷＳにも属していないが、実際には、制御用ＷＳ２０もしくはスレーブサーバＷＳ３０のうちの１台により実現されるもので、どのＷＳ上にそなえられても構わない。
排他制御部４０による排他制御の詳細については、図７〜図１２および図１４〜図２１を参照しながら後述する。
【００５２】
次に、上述した本実施形態のシミュレーションシステム１０の動作について、図３〜図２１を参照しながら説明する。
〔１〕回路データの分割
シミュレーションを行なう回路データをアクセラレータ１１の数（図１，図２に示すではＮ台）に分割する。その際、分割された回路データ毎に、その回路データに含まれる信号名と各アクセラレータ１１にマッピングされたアドレス情報との対応関係を、アドレス情報ＤＢ３３として求める。そして、シミュレーションを実行する前に、分割された回路データとアドレス情報ＤＢ３３とを、各アクセラレータ１１に接続されているスレーブサーバＷＳ３０に転送しておく。
【００５３】
〔２〕アドレス情報テーブルの生成
シミュレーションを実行する前にトレースする信号を定義する。トレース信号は、トレースポイントとしてグループ化される。
このトレースポイントの情報（トレース情報）は、システム制御部２１から各入出力制御部３１へ送信される。トレース情報の一部を記述した実行スクリプトは、例えば下記のようなものである。
【００５４】
tracepoint -name tp1 sig1 sig2 sig3 sig4
trace -on tp1
この実行スクリプトは、信号名sig1,sig2,sig3,sig4 を“tp1 ”としてグループ化し、これらの名をもつ信号の状態をトレースするように指示している。
各入力制御部３１は、このトレースポイントの情報に基づいて、図３（ａ）〜図３（ｃ）に示すようにアドレス情報テーブル３５を生成する。
【００５５】
図３（ａ）〜図３（ｃ）に示す例では、アクセラレータ１１を３台、つまりスレーブサーバＷＳ３０を３台そなえている。そして、図３（ａ）に示すサーバ３０−１に接続されるアクセラレータ１１−１には、信号名sig1,sig2 の信号を含む回路部分のシミュレーションが割り当てられ、図３（ｂ）に示すサーバ３０−２に接続されたアクセラレータ１１−２には、信号名sig3の信号を含む回路部分のシミュレーションが割り当てられ、図３（ｃ）に示すサーバ３０−３に接続されたアクセラレータ１１−３には、信号名sig4の信号を含む回路部分のシミュレーションが割り当てられている。
【００５６】
前述した通り、シミュレーション対象回路は分割されているので、トレース情報に含まれる信号名に対応するアドレス情報が、各入出力制御部３１におけるアドレス情報ＤＢ３３（もしくはアドレス情報抽出ＤＢ３４）に存在するとは限らない。そこで、本実施形態では、各入出力制御部３１において、図３（ａ）〜図３（ｃ）に示すごとく、アドレスが存在する場合には正しいアドレスをそのまま書き込む一方で、存在しないアドレスについてはダミーアドレス（図中では“-"として記述）として書き込んだ、アドレス情報テーブル３５を生成する。
【００５７】
シミュレーション実行時、トレースのオン／オフの命令がシステム制御部２１から各入出力制御部３１へ発行される。命令を受信した入出力制御部３１は、アドレス情報テーブル３５の内容をアクセラレータ１１に転送し、トレース制御を行なう。
〔３〕アドレス情報のリモート抽出
シミュレーションを実行する前に、制御用ＷＳ２０とスレーブサーバＷＳ３０との間でプロセス間通信を行ない、各アクセラレータ１１で実際にトレースする信号のアドレス情報だけを調べ、その情報をアクセラレータ１１毎にアドレス情報抽出ＤＢ３４としてアドレス情報ＤＢ３３から抽出する。
【００５８】
図４に示すごとく対応するアドレス情報として、信号名に対応するアドレスが実際に存在するアクセラレータ１１についてはそのアドレスをアドレス情報抽出ＤＢ３４に格納し、信号名に対応するアドレスが存在しないアクセラレータ１１についてはダミーアドレスをアドレス情報抽出ＤＢ３４に格納する。
そして、シミュレーション起動時に、アドレス情報抽出ＤＢ３４は、各アクセラレータ１１に接続されている各スレーブサーバＷＳ３０のメモリ上にアドレス情報テーブル３５として展開される。
【００５９】
ここで、図４に示すフローチャート（ステップＳ１１〜Ｓ３２）に従って、各スレーブサーバＷＳ３０におけるモード切替動作や各モードに対応した詳細な動作について説明する。
各スレーブサーバＷＳ３０（入出力制御部３１）では、図４に示すように、ステップＳ１１およびＳ２０において、アドレス情報抽出ＤＢ入力モード，アドレス情報抽出ＤＢ出力モード，ノーマルモードのうちのいずれが現在指定されているかを判断する。
【００６０】
アドレス情報抽出ＤＢ入力モードが指定されている場合（ステップＳ１１のＹＥＳルート）、アドレス情報抽出データベース３４を読み込んでメモリ上に展開し、アドレス情報テーブル３５を作成する（ステップＳ１２，Ｓ１３）。この後、システム制御部２１からの命令（コマンド）を受けると、コマンド解析を行なう（ステップＳ１４）。そして、その命令がトレース命令であれば（ステップＳ１５のＹＥＳルート）、アクセラレータ１１にトレース情報を設定し（ステップＳ１６）、その命令がシミュレーション実行命令であれば（ステップＳ１５のＮＯルートからステップＳ１７のＹＥＳルート）、アクセラレータ１１によりシミュレーション動作を実行させ（ステップＳ１８）、その命令が終了命令であれば（ステップＳ１７のＮＯルートからステップＳ１９のＹＥＳルート）、処理を終了する。
【００６１】
アドレス情報抽出ＤＢ出力モードが指定されている場合（ステップＳ１１のＮＯルートからステップＳ２０のＹＥＳルート）、システム制御部２１からの命令（コマンド）を受けるとコマンド解析を行ない（ステップＳ２１）、その命令がトレースポイント指示であれば（ステップＳ２２のＹＥＳルート）、そのトレースポイント指示（実行スクリプト）に基づいて、アドレス情報をアドレス情報ＤＢ３３から抽出しアドレス情報抽出ＤＢ３４に出力・格納する（ステップＳ２３）。そして、その命令が終了命令であれば（ステップＳ２２のＮＯルートからステップＳ２４のＹＥＳルート）、処理を終了する。
【００６２】
ノーマルモードが指定されている場合（ステップＳ１１のＮＯルートからステップＳ２０のＮＯルート）、システム制御部２１からの命令（コマンド）を受けると、コマンド解析を行なう（ステップＳ２５）。そして、その命令がトレースポイント指示であれば（ステップＳ２６のＹＥＳルート）、そのトレースポイント指示（実行スクリプト）に基づいて、アドレス情報をアドレス情報ＤＢ３３から直接的に抽出して、メモリ上のアドレス情報テーブル３５に書き込む（ステップＳ２７）。その命令がトレース命令であれば（ステップＳ２６のＮＯルートからステップＳ２８のＹＥＳルート）、アクセラレータ１１にトレース情報を設定し（ステップＳ２９）、その命令がシミュレーション実行命令であれば（ステップＳ２８のＮＯルートからステップＳ３０のＹＥＳルート）、アクセラレータ１１によりシミュレーション動作を実行させ（ステップＳ３１）、その命令が終了命令であれば（ステップＳ３０のＮＯルートからステップＳ３２のＹＥＳルート）、処理を終了する。
【００６３】
〔４〕論理式の生成
アクセラレータ１１では、ハードウェアリソースに制限があるため、直接トレースできるポイントとできないポイントとが存在することになる。
そこで、本実施形態では、前述した通り、トレース指定された信号が直接トレースできない信号であった場合、その信号の入力側のプリミティブを調べる。もし、そのプリミティブが評価ゲート（ゲート素子）であった場合は、その評価ゲートの入力信号を調べ、評価ゲートと入力信号とから論理式を生成し、その入力信号に対応するアドレスと論理式とをアドレス情報抽出ＤＢ３４に登録する。入力信号が直接トレース可能であった場合は、そのアドレスをアドレス情報抽出ＤＢ３４に登録する。
【００６４】
例えば、図５（ａ）に示す信号（ＡＮＤゲートの出力信号）Ｘを直接トレースできない場合に、その信号Ｘのトレース命令〔図５（ｂ）の“trace -on Ｘ”〕をシステム制御部２１から受けると、その信号Ｘの入力側のプリミティブがＡＮＤゲートであるので、図５（ｂ）に示すように、ＡＮＤゲートの論理式Ｘ＝Ａ＆Ｂを生成し、ＡＮＤゲートの入力信号Ａ，Ｂがトレース可能であれば、その信号Ａ，Ｂに対応するアドレス情報を論理式Ｘ＝Ａ＆Ｂとともにアドレス情報抽出ＤＢ３４に登録する。信号Ａ，Ｂが直接トレースできない信号であった場合には、図６に示すように、全ての信号が直接トレースできる信号にたどり着けるまで、同様の処理を繰り返す。
【００６５】
ここで、図６に示すフローチャート（ステップＳ４１〜Ｓ５１）に従って、論理式生成動作について説明する。
各スレーブサーバＷＳ３０（入出力制御部３１）では、図６に示すように、トレース命令（トレース情報）を受けると、トレース指定された信号Ｘを調べ（ステップＳ４１）、その信号Ｘがトレース可能な信号であるか否かを判断する（ステップＳ４２）。
【００６６】
トレース可能な信号であれば（ステップＳ４２のＹＥＳルート）、そのトレース信号Ｘに識別子（id）を付与し（ステップＳ５０）、そのトレース信号Ｘに対応するアドレス情報を、アドレス情報抽出ＤＢ３４に格納する（ステップＳ５１）。
一方、信号がトレース可能な信号でない場合（ステップＳ４２のＮＯルート）には、バックトレースにより、その信号Ｘを出力しているプリミティブを検索し（ステップＳ４３）、そのプリミティブがゲート素子であるか否かを判断する（ステップＳ４４）。ゲート素子でない場合（ステップＳ４４のＮＯルート）、信号Ｘの状態はトレースできないことをメッセージ出力するとともに、トレース処理を終了する（ステップＳ４５）。
【００６７】
また、ゲート素子である場合（ステップＳ４４のＹＥＳルート）、そのプリミティブの入力信号に識別子（id1,id2,…）を付与し（ステップＳ４６）、その入力信号がトレース可能な信号であるか否かを判断する（ステップＳ４７）。
トレース可能な信号であれば（ステップＳ４７のＹＥＳルート）、ゲート素子と入力信号とから信号Ｘの値を求める論理式を生成し、その論理式と入力信号に対応するアドレスとをアドレス情報抽出ＤＢ３４に格納してから（ステップＳ４９）、トレース信号Ｘに識別子（id）を付与し（ステップＳ５０）、その識別子を、アドレス情報抽出ＤＢ３４に格納した論理式と入力信号に対応するアドレスとのセットに付与することにより、そのセットがトレース信号Ｘに対応するものであることが明示される（ステップＳ５１）。
【００６８】
従って、本実施形態では、トレース情報により指定された信号がトレース不可能な信号である場合には、その信号よりも上流側のゲート素子への入力信号をトレースし、そのトレース結果をゲート素子に応じた論理式に代入することによって、トレース不可能な信号についてのトレース結果を得ることができる。
〔５〕入力パターンの送信
入力パターンは同一のパターンを各アクセラレータ１１に接続されたＷＳ３０へ送信しておく。
【００６９】
このとき、各ＷＳ３０のメモリ上に全パターンを保持する場合と、パターンが長大であれば各ＷＳ３０がパターンの一部をファイルとして持つ場合とがある。各ＷＳ３０は、アドレス情報抽出ＤＢ３４を調べ、該当するアドレスが存在すればその値をアクセラレータ１１の入力パターンメモリに送信する。
〔６〕排他制御
本実施形態のシミュレーションシステム１０では、アクセラレータ１１の接続構成により様々な接続形態を採ることができ、それぞれの接続形態に対して排他制御部４０により排他制御を行なう。
【００７０】
採り得る形態として、以下のような２つの接続構成Ｃ１およびＣ２がある。
Ｃ１：全てのアクセラレータ１１を接続して動作させる接続構成〔図７（ａ）参照；図中、“○”はアクセラレータを示す〕。
Ｃ２：アクセラレータ１１をグループ化し、グループ毎に独立して動作させる接続形態〔図７（ｂ）参照；図中、“○”はアクセラレータを示す〕。
【００７１】
排他制御部４０は、図８に示すような待ち行列テーブル４１を有している。
この待ち行列テーブル４１の項目としては、リクエスト識別子(request id)，メインセット(main set)，グループ識別子(group id)，状態(status)がある。
リクエスト識別子(request id)は、システム制御部２１から発行された使用要求に対してユニークに付与される。
【００７２】
メインセット(main set)の項目には、図７（ａ）に示す接続構成Ｃ１を要求された時に“１”が設定され、図７（ｂ）に示す接続構成Ｃ２を要求されたときに“０”が設定される。
グループ識別子(group id)は、接続構成Ｃ２で使用するグループ毎に付与された識別子である。
【００７３】
例えば、接続構成Ｃ２において、アクセラレータ｛１，２，３｝のグループ識別子を“１”、アクセラレータ｛４，５｝のグループ識別子を“２”、アクセラレータ｛６，７，８｝のグループ識別子を“３”とする。接続構成Ｃ１の場合には、グループ構成がなく、グループ識別子として“０”を設定する。
このグループ識別子とアクセラレータ１１との組合せは、予めコンフィギュレーションファイルに定義されており、排他制御部４０が最初に起動されるときにこのコンフィギュレーションファイルを読み込む。
【００７４】
状態(status)の項目には、メインセットとグループ識別子とによって表される接続構成でアクセラレータ１１が使用中の場合、“Active”が設定される一方、実行待ちの場合、“Wait”が設定される。
ユーザからアクセラレータ１１の使用要求があると、図９に示すように、システム制御部２１から排他制御部４０へ“ request”命令が発行される。システム制御部２１は排他制御部４０から“active”命令が返ってくるまで待機状態（“wait”）になる。
【００７５】
排他制御部４０の動作は、エントリ処理とチェック処理とに分けられ、これらのエントリ処理（Entry)およびチェック処理（Check)への遷移状態は図１０に示すようになる。
つまり、システム制御部２１から排他制御の“ request”命令が来ると、最初にエントリ処理が行なわれる。このエントリ処理では、図１１を参照しながら後述するような処理を行ない、要求内容を待ち行列テーブル４１に登録する。
【００７６】
エントリ処理で“Active”状態でない場合（即ち“Wait”状態の場合）は、チェック処理に移行する。
チェック処理では、図１２を参照しながら後述するような処理を行ない、要求が“Active”になるまで一定の時間間隔でチェック処理を繰り返す。“Active”状態になると、排他制御部４０はシステム制御部２１へ“active”命令を返す。
【００７７】
シミュレーションが終了した場合には、図９に示すように、“end ”命令がスレーブサーバＷＳ３０（入出力制御部３１，実行制御部３２）からシステム制御部２１へ返され、システム制御部２１から排他制御部４０へ排他制御の“end ”命令が発行される。排他制御部４０は、“end ”命令を受けるとリクエスト識別子に基づいて、待ち行列テーブル４１における対応部分を探し出して、その対応部分を待ち行列テーブル４１から削除する。
【００７８】
ここで、図１１に示すフローチャート（ステップＳ６１〜Ｓ７０）に従って排他制御部４０のエントリ処理動作について説明するとともに、図１２に示すフローチャート（ステップＳ７１〜Ｓ８６）に従って排他制御部４０のチェック処理動作について説明する。
エントリ処理に際しては、図１１に示すように、ユーザから要求された接続構成の情報に基づいて、待ち行列テーブル４１に登録すべき接続構成のメインセットを“ｍｓ”とし（ステップＳ６１）、その接続構成のグループ識別子を“ｇ”とし（ステップＳ６２）、待ち行列テーブル４１の先頭の登録データを“Ｔ”とする（ステップＳ６３）。
【００７９】
この後、登録データＴのメインセットが“ｍｓ”と異なるか否かを判断し（ステップＳ６４）、異なっている場合（ステップＳ６４のＹＥＳルート）、状態(status)として“Wait”が設定される（ステップＳ６５）。登録データＴのメインセットが“ｍｓ”である場合（ステップＳ６４のＮＯルート）、登録データＴが待ち行列テーブル４１の最終登録データであるか否かを判断する（ステップＳ６６）。最終登録データでなければ（ステップＳ６６のＮＯルート）、待ち行列テーブル４１の次の登録データを“Ｔ”とし（ステップＳ６７）、ステップＳ６４の処理へ戻る。
【００８０】
一方、最終登録データであった場合（ステップＳ６６のＹＥＳルート）、待ち行列テーブル４１に“ｇ”と同じグループ識別子が存在するか否かを判断する（ステップＳ６８）。同じグループ識別子が存在する場合（ステップＳ６８のＹＥＳルート）、状態(status)として“Wait”が設定され（ステップＳ６９）、同じグループ識別子が存在しない場合（ステップＳ６８のＮＯルート）、状態(status)として“Active”が設定される（ステップＳ７０）。
【００８１】
また、チェック処理に際しては、図１２に示すように、状態(status)が“Active”であるかを調べるべき接続構成のメインセットを“ｍｓ”とし（ステップＳ７１）、その接続構成のグループ識別子を“ｇ”とし（ステップＳ７２）、その接続構成のリクエスト識別子を“ｒｅｑｉｄ”とし（ステップＳ７３）、待ち行列テーブル４１の先頭の登録データを“Ｔ”とする（ステップＳ７４）。
【００８２】
この後、登録データＴのメインセットが“ｍｓ”と異なるか否かを判断し（ステップＳ７５）、異なっている場合（ステップＳ７５のＹＥＳルート）、状態(status)として“Wait”が設定される（ステップＳ７６）。登録データＴのメインセットが“ｍｓ”である場合（ステップＳ７５のＮＯルート）、登録データＴのグループ識別子が“ｇ”と同じであるか否かを判断する（ステップＳ７７）。
【００８３】
同じである場合（ステップＳ７７のＹＥＳルート）、登録データＴの状態(status)が“Active”か否かを判断し（ステップＳ７８）、“Active”である場合（ステップＳ７８のＹＥＳルート）、状態(status)として“Wait”が設定される（ステップＳ６９）。“Active”でない場合（ステップＳ７８のＮＯルート）、登録データＴのリクエスト識別子と“ｒｅｑｉｄ”とが同じか否かを判断し（ステップＳ８０）、同じでなければ（ステップＳ８０のＮＯルート）、状態(status)として“Wait”が設定され（ステップＳ８１）、同じであれば（ステップＳ８０のＹＥＳルート）、登録データＴの状態(status)を“Active”にする（ステップＳ８２，Ｓ８３）。
【００８４】
一方、登録データＴのグループ識別子が“ｇ”と同じでない場合（ステップＳ７７のＮＯルート）、登録データＴが待ち行列テーブル４１の最終登録データであるか否かを判断し（ステップＳ８４）、最終登録データでなければ（ステップＳ８４のＮＯルート）、待ち行列テーブル４１の次の登録データを“Ｔ”とし（ステップＳ８５）、ステップＳ７５の処理へ戻る。また、最終登録データであった場合（ステップＳ８４のＹＥＳルート）、状態(status)として“Wait”が設定される（ステップＳ８６）。
【００８５】
〔７〕制御コマンドの送信
本実施形態では、制御コマンドは、制御用ＷＳ２０からアクセラレータ１１を管理するスレーブサーバＷＳ３０へプロセス間通信で送信される。
このとき、シミュレーション実行命令は、制御用ＷＳ２０から、そのシミュレーションを実行すべきアクセラレータ１１に接続されているスレーブサーバＷＳ３０だけへ送信される。
【００８６】
また、トレースのオン／オフ命令（トレース情報）は、制御用ＷＳ２０から、同じ命令を全てのスレーブサーバＷＳ３０へ送信（放送／同報／同報通信）される。
各アクセラレータ１１は、同じトレースポイントを持つので、同じトレース命令によりトレース処理に関して同一動作を行なう。
【００８７】
〔８〕トレースデータ出力
本実施形態のシミュレーションシステム１０では、図１３に示すように、シミュレーション停止時に、各スレーブサーバＷＳ３０（入出力制御部３１）は、各アクセラレータ１１のトレースメモリ（図示省略）から出力パターンを取り出し、各スレーブサーバＷＳ３０（入出力制御部３１）では、取り出された出力パターンからトレース指定された信号だけを、トレースファイル３６に出力する。
【００８８】
そして、図１３に示すように、トレースファイル３６において、ダミーアドレスに対応するフィールドにはダミーパターン“ｘ”を出力する。実際には、このダミーパターン“ｘ”としては“０”が出力される。
〔９〕後処理
シミュレーション終了後、アクセラレータ１１毎にトレースファイル３６が得られる。そして、制御用ＷＳ２０で実行される別プログラムにより、シミュレーション時刻毎にトレースデータを結合する。図１３に示すように、ダミーパターン“ｘ”の部分は、処理を行なわず、実際のトレースパターンだけを最終のトレース出力パターンとしてトレース出力パターンＤＢ５０へ出力する。なお、前述のようにダミーパターン“ｘ”として“０”を設定した場合、各サーバ３０からの出力パターンベクトルの論理和（ＯＲ）を算出するだけで、トレースデータを結合することができる。
【００８９】
〔１０〕接続構成の排他制御の具体例
３台のアクセラレータに制御用としてそれぞれｗｓ１，ｗｓ２，ｗｓ３というホスト名をもつＷＳが図１４（ａ）または図１４（ｂ）に示すように接続されている場合の具体例について以下に説明する。
例えば、図１４（ａ）に示す接続構成Ｃ１のグループ識別子を“０”とし、図１４（ｂ）に示す接続構成Ｃ２において、｛ｗｓ１，ｗｓ２｝のグループ識別子を“１”とし、｛ｗｓ３｝のグループ識別子を“０”とする。
【００９０】
グループ識別子“０”においては、ｗｓ１のローカルディレクトリ/home/proj１，ｗｓ２のローカルディレクトリ/home/proj２，ｗｓ３のローカルディレクトリ/home/proj３に、回路モジュール“test mod0 ”の３分割された回路データがそれぞれ置かれている。
グループ識別子“１”においては、ｗｓ１のローカルディレクトリ/home/proj１，ｗｓ２のローカルディレクトリ/home/proj２に、回路モジュール“test mod1 ”の２分割された回路データがそれぞれ置かれている。
【００９１】
グループ識別子“２”においては、ｗｓ３のローカルディレクトリ/home/proj３に回路モジュール“test mod2 ”の回路データが分割されずに置かれている。図１５はグループ識別子“０”の実行スクリプトの具体例を示し、図１６はグループ識別子“１”の実行スクリプトの具体例を示し、図１７はグループ識別子“２”の実行スクリプトを示している。
【００９２】
これらの図１５〜図１７に示される実行スクリプト中に記述されているコマンドには、以下のような意味がある。なお、以下の説明文中において、図中では記載されているアンダスコア（underscore；下線）の記載は省略されている。
“sa host ”は、アクセラレータにつながっているＷＳとＷＳ上の作業ディレクトリとを指定するコマンドである。
【００９３】
“sa loadmodule ”は、“sa host ”コマンドで指定したディレクトリにある回路データをアクセラレータに転送するコマンドである。
“sa open -i”は、シミュレーションの外部入力パターンを指定するコマンドである。
“sa open -o”は、シミュレーション結果を格納するファイル（トレースファイル）を指定するコマンドである。
【００９４】
“sa tracepoint ”は、トレースを行なう信号名を指定するコマンドである。“sa trace”は、“sa tracepoint ”コマンドで指定したトレースポイントに対してトレースのオン／オフを行なうコマンドである。
“sa run”は、オプションで指定した時間までアクセラレータにシミュレーションを実行させるコマンドである。
【００９５】
“sa quit ”は、アクセラレータに処理の終了を通知するコマンドである。
本実施形態のシミュレーションシステム１０によれば、図１５のスクリプトを実行した場合、トレースデータは、ｗｓ１のローカルディレクトリ/home/proj1,ｗｓ２のローカルディレクトリ/home/proj2,ｗｓ３のローカルディレクトリ/home/proj3 にそれぞれ“trace file0 ”という名前のファイルで生成される。
【００９６】
各トレースファイルは、サイズが同じであるが、ダミーアドレスやダミーのトレース結果を含んでおり、その内容は異なっている。
トレースファイルである ws1:/home/proj1/trace file0, ws2:/home/proj2/trace file0, ws3:/home/proj3/trace file0を結合して、その結合結果が、回路モジュール“test mod0 ”の最終的なシミュレーション結果となる。
【００９７】
また、本実施形態の排他制御方法によれば、グループ識別子“０”の接続構成で実行されているか、もしくは、連続して“Wait”状態になっている間は、グループ識別子“１”および“２”に対する実行要求はどちらも“Wait”状態になる。
図１８に示すように、リクエスト識別子“１１”の処理が終わるまで、リクエスト識別子“１２”，“１３”，“１４”の状態(status)は“Active”になることはない。
【００９８】
逆に、グループ識別子“０”の接続構成で実行されていないときは、グループ識別子“１”および“２”の接続構成は独立に動作する。グループ識別子“１”または“２”の接続構成で実行されているか、もしくは、連続してWait状態になっている間は、グループ識別子“０”の接続構成での実行要求は“Wait”状態になる。
【００９９】
図１９に示すように、リクエスト識別子“１２”，“１３”，“１４”の処理が終わるまで、リクエスト識別子“１５”の状態(status)は“Active”になることはない。リクエスト識別子“１５”と“１６”とはメインセットが異なるので、リクエスト識別子“１５”の処理が終わるまで、リクエスト識別子“１６”の状態(status)は“Active”になることはない。
【０１００】
アドレス情報抽出ＤＢ３４を出力する場合は、図２０に示すように、“sa host ”コマンドの前に“sa write ext”コマンドを実行する。“sa write ext”コマンドが実行されると、“sa host ”から“sa quit ”までに記述されているトレースポイント情報を抽出する。他の“sa run”などのコマンドは実行されない。
【０１０１】
“sa quit ”を実行した時に、ｗｓ１に“/home/proj1/ext file0 ”、ｗｓ２に“/home/proj2/ext file0 ”、ｗｓ３に“/home/proj3/ext file0 ”というファイル名でアドレス情報抽出ＤＢファイルを出力する。
アドレス情報抽出ＤＢ３４を入力する場合は、図２１に示すように、“sa host ”コマンドの前に“sa read ext ”コマンドを実行する。
【０１０２】
“sa host ”コマンドを実行した時に、ｗｓ１の“/home/proj1/ext file0 ”、ｗｓ２の“/home/proj2/ext file0 ”、ｗｓ３の“/home/proj3/ext file0 ”というファイルからアドレス情報抽出ＤＢファイルが読み込まれる。
“sa read ext ”コマンドが実行されると、“sa host ”から“sa quit ”までに記述されているトレースポイントの処理を行なう際、アドレス情報ＤＢ３３のアクセスは行なわない。
【０１０３】
本実施形態において、以前の処理により、ｗｓ１の“/home/proj1/ext file0 ”、ｗｓ２の“/home/proj2/ext file0 ”、ｗｓ３の“/home/proj3/ext file0 ”というファイルからアドレス情報抽出ＤＢファイルが既に作成されている場合には、アドレス情報ＤＢ３３を検索する必要はなく、図２１に示す“sa host ”〜“sa tracepoint ”のコマンドは実行されず、実質的には、コマンド“sa read ext"からコマンド“sa trace -on”へ飛ぶことになり、シミュレーション実行時間を大幅に短縮することができる。
【０１０４】
このように、本発明の一実施形態によれば、制御用ＷＳ２０（システム制御部２１）が各アクセラレータ１１の処理対象データを判別する必要がなくなり、制御用ＷＳ２０の負荷を軽減することができる。
また、各スレーブサーバＷＳ３０（入出力制御部３１）は、各アクセラレータ１１で処理されているデータのアドレスを常に把握・記憶するが必要なく、通常と同様に動作しながら、割り当てられた回路分割部分のシミュレーションを行なうことができ、各アクセラレータ制御部の負荷を軽減することができる。
【０１０５】
さらに、ダミーパターン以外の実際のトレースパターンのみを結合するだけでトレース結果を容易に得ることが可能になり、論理シミュレーション結果の結合処理を簡易に且つ短時間で行なうことができる。
従って、シミュレーション回路が大規模化しても高速かつ効率的に論理シミュレーションを実行することができ、シミュレーション性能が大幅に向上する。
【０１０６】
なお、論理シミュレーションの実行前に、トレース情報に応じたアドレス情報をアドレス情報ＤＢ３３から抽出してアドレス情報テーブル３５／アドレス情報抽出ＤＢ３４を作成しておくことにより、トレース情報に含まれる信号名情報のアドレス変換処理を行なう必要がなくなり、シミュレーションに要する時間を大幅に短縮することができ、特に、同じシミュレーション対象の回路データについて様々な入力パターンでシミュレーションを実行する場合に極めて有効である。
【０１０７】
また、トレース情報により指定された信号の状態がトレース不可能であっても、論理式を用いてトレース結果を得ることができるので、ハードウェアリソースの制限を緩和することができ、トレースできる信号の数の制限をクリアすることができる。
さらに、排他制御部４０により複数のアクセラレータ１１の接続形態に合わせた排他制御を行なうことで、様々な接続形態で複数のアクセラレータ１１を同時に動作させることが可能になり、これらのアクセラレータ１１の運用効率が大幅に向上する。
【０１０８】
なお、本発明は上述した実施形態に限定されるものではなく、本発明の趣旨を逸脱しない範囲で種々変形して実施することができる。
【０１０９】
【発明の効果】
以上詳述したように、本発明のシミュレーション方法（請求項１〜６）およびシミュレーションシステム（請求項７〜１２）によれば、システム制御部が各シミュレーションアクセラレータの処理対象データを判別する必要がなくなり、システム制御部の負荷を軽減することができるほか、各アクセラレータ制御部は、各シミュレーションアクセラレータで処理されているデータのアドレスを常に把握・記憶するが必要なく、通常と同様に動作しながら、割り当てられた回路分割部分のシミュレーションを行なうことができ、各アクセラレータ制御部の負荷を軽減することができ、さらに、ダミーパターン以外の実際のトレースパターンのみを結合するだけでトレース結果を容易に得ることが可能になり、論理シミュレーション結果の結合処理を簡易に且つ短時間で行なうことができる。従って、シミュレーション回路が大規模化しても高速かつ効率的に論理シミュレーションを実行することができ、シミュレーション性能が大幅に向上するという効果がある。
【０１１０】
なお、論理シミュレーションの実行前に、トレース情報に応じたアドレス情報をアドレス情報データベースから抽出してアドレス情報テーブル／アドレス情報抽出データベースを作成しておくことにより、トレース情報に含まれる信号名情報のアドレス変換処理を行なう必要がなくなり、シミュレーションに要する時間を大幅に短縮することができ、特に、同じシミュレーション対象の回路データについて様々な入力パターンでシミュレーションを実行する場合に極めて有効である（請求項２〜４，８〜１０）。
【０１１１】
また、論理シミュレーションの実行時に信号の状態がトレース不可能であっても、論理式を用いてトレース結果を得ることができるので、ハードウェアリソースの制限を緩和することができ、トレースできる信号の数の制限をクリアすることができる（請求項５，１１）。
さらに、複数のシミュレーションアクセラレータの接続形態に合わせた排他制御を行なうことにより、様々な接続形態で複数のシミュレーションアクセラレータを同時に動作させることが可能になり、これらのシミュレーションアクセラレータの運用効率が大幅に向上するという効果もある（請求項６，１２）。
【図面の簡単な説明】
【図１】本発明の一実施形態としてのシミュレーションシステムの構成を説明するための図である。
【図２】本発明の一実施形態としてのシミュレーションシステムの全体構成を概略的に示す図である。
【図３】（ａ）〜（ｃ）は本実施形態の各スレーブサーバＷＳにおけるアドレス情報テーブルの具体例を示す図である。
【図４】本実施形態における各スレーブサーバＷＳの動作を説明するためのフローチャートである。
【図５】（ａ）および（ｂ）はいずれも本実施形態の論理式生成動作を説明するための図である。
【図６】本実施形態の論理式生成動作を説明するためのフローチャートである。
【図７】（ａ）および（ｂ）はいずれも本実施形態におけるシミュレーションアクセラレータの接続構成の具体例を示す図である。
【図８】本実施形態の排他制御部における待ち行列テーブルを示す図である。
【図９】本実施形態における排他制御部の動作を説明するためのシーケンス図である。
【図１０】本実施形態における排他制御部の動作（エントリ処理およびチェック処理への遷移状態）を説明するための図である。
【図１１】本実施形態における排他制御部のエントリ処理動作を説明するためのフローチャートである。
【図１２】本実施形態における排他制御部のチェック処理動作を説明するためのフローチャートである。
【図１３】本実施形態の各アクセラレータにより得られたトレースパターンの出力状態および結合手順を説明するための図である。
【図１４】（ａ）および（ｂ）はいずれも本実施形態におけるシミュレーションアクセラレータの接続構成の具体例を示す図である。
【図１５】本実施形態で処理される実行スクリプトの具体例を示す図である。
【図１６】本実施形態で処理される実行スクリプトの具体例を示す図である。
【図１７】本実施形態で処理される実行スクリプトの具体例を示す図である。
【図１８】本実施形態の排他制御部における待ち行列テーブルの具体例を示す図である。
【図１９】本実施形態の排他制御部における待ち行列テーブルの具体例を示す図である。
【図２０】本実施形態で処理される実行スクリプトの具体例を示す図である。
【図２１】本実施形態で処理される実行スクリプトの具体例を示す図である。
【符号の説明】
１０  シミュレーションシステム
１１−１  マスタアクセラレータ（シミュレーションアクセラレータ）
１１−２〜１１−Ｎ  アクセラレータ（シミュレーションアクセラレータ）
１２  専用回線
２０  制御用ワークステーション（システム制御部，結合部）
２１  システム制御部
２２  実行スクリプトデータベース
３０−１〜３０−Ｎ  スレーブサーバワークステーション（アクセラレータ制御部）
３１  入出力制御部
３２  実行制御部
３３  アドレス情報データベース
３４  アドレス情報抽出データベース
３５  アドレス情報テーブル
３６  トレースファイル
４０  排他制御部
４１  待ち行列テーブル
５０  トレース出力パターンデータベース
【図１】
0003655114.tif 000002
【図２】
0003655114.tif 000003
【図３】
0003655114.tif 000004
【図４】
0003655114.tif 000005
【図５】
0003655114.tif 000006
【図６】
0003655114.tif 000007
【図７】
0003655114.tif 000008
【図８】
0003655114.tif 000009
【図９】
0003655114.tif 000010
【図１０】
0003655114.tif 000011
【図１１】
0003655114.tif 000012
【図１２】
0003655114.tif 000013
【図１３】
0003655114.tif 000014
【図１４】
0003655114.tif 000015
【図１５】
0003655114.tif 000016
【図１６】
0003655114.tif 000017
【図１７】
0003655114.tif 000018
【図１８】
0003655114.tif 000019
【図１９】
0003655114.tif 000020
【図２０】
0003655114.tif 000021
【図２１】
0003655114.tif 000022