(57)【要約】【課題】ノウハウの流出を抑制する。【解決手段】解析部２が、半導体装置の設計データであるソースコードＤ１を解析して半導体装置内でのデータ及び制御の流れを示す情報（ＣＤＦＧ情報Ｄ２）を生成し、高位合成用データ生成部４が、ソースコードＤ１をコンパイルすることで得られる中間データ（オブジェクトファイルＤ８）を取得して、解析部２が生成したＣＤＦＧ情報Ｄ２を、オブジェクトファイルＤ８に組み込んだ中間データ（オブジェクトファイルＤ９）を生成し、高位合成用データとして出力する。【選択図】図１
2015076013.tif 000002
【特許請求の範囲】
【請求項１】
半導体装置の設計データであるソースコードを解析し、前記半導体装置のデータ及び制御の流れを示す情報を生成する解析部と、
前記ソースコードをコンパイルすることで得られる第１の中間データを取得して、前記解析部が生成した前記情報を、前記第１の中間データに組み込んだ第２の中間データを生成し、高位合成用データとして出力する高位合成用データ生成部と、
を有することを特徴とする高位合成用データ生成装置。
【請求項２】
前記解析部は、前記ソースコードを解析して、設定可能な高位合成情報である設計情報を出力し、前記設計情報の設定条件を示す設計条件情報を外部から取得し、前記設計条件情報と前記情報とを対応付けた対応情報を生成し、
前記高位合成用データ生成部は、前記情報と前記対応情報を前記第１の中間データに組み込んだ前記第２の中間データを生成すること、
を特徴とする請求項１に記載の高位合成用データ生成装置。
【請求項３】
前記設計条件情報は、高位合成で使用するライブラリ情報を含むこと、を特徴とする請求項２に記載の高位合成用データ生成装置。
【請求項４】
前記設計条件情報は、前記半導体装置の動作周波数の条件値を含むこと、を特徴とする請求項２または３に記載の高位合成用データ生成装置。
【請求項５】
半導体装置の設計データであるソースコードをコンパイルすることで得られる第１の中間データに、前記半導体装置のデータ及び制御の流れを示す情報が組み込まれた第２の中間データを取得して、前記第２の中間データから前記情報を抽出する抽出部と、
前記抽出部で抽出された前記情報に基づき高位合成を行う高位合成部と、
を有することを特徴とする高位合成装置。
【請求項６】
前記第２の中間データは、設定可能な高位合成情報である設計情報の設定条件を示す設計条件情報と、前記情報とが対応付けられた対応情報を含み、
前記抽出部は、前記対応情報を抽出して、前記対応情報を出力し、
前記高位合成部は、高位合成設計情報を外部から取得して、前記高位合成設計情報が前記設計条件情報に規定されている条件を満たしているか否かを検証する設計検証部を有し、
前記設計検証部は、前記高位合成設計情報が、前記条件を満たしていないときには警告を発し、前記高位合成の実行を制限することを特徴とする請求項５に記載の高位合成装置。
【請求項７】
半導体装置の設計データであるソースコードを解析して前記半導体装置内でのデータ及び制御の流れを示す情報を生成し、
前記ソースコードをコンパイルすることで得られる第１の中間データを取得して、前記情報を前記第１の中間データに組み込んだ第２の中間データを生成し、高位合成用データとして出力する、
ことを特徴とする高位合成用データ生成方法。
【請求項８】
半導体装置の設計データであるソースコードを解析して前記半導体装置内でのデータ及び制御の流れを示す情報を生成し、
前記ソースコードをコンパイルすることで得られる第１の中間データを取得して、前記情報を前記第１の中間データに組み込んだ第２の中間データを生成し、高位合成用データとして出力する、
処理をコンピュータに実行させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、高位合成用データ生成装置、高位合成装置、高位合成用データ生成方法及びプログラムに関する。
【背景技術】
【０００２】
近年における回路設計は、ムーアの法則にしたがって集積度の向上が年々とどまるところを知らず、回路設計の複雑度は日々増加している。現在、回路設計の主流であるＨＤＬ（Hardware Description Language）を用いたＲＴＬ（Register Transfer Level）設計は、ゲートレベル設計に比べて設計抽象度が高いが、年々増加している回路規模に対応できなくなりつつある。
【０００３】
そこで、ＲＴＬよりもさらに抽象度の高い高位合成（高位設計とも呼ばれる）が利用され始めている。高位合成で用いられる入力言語（たとえば、高位言語）としてはソフトウェア言語の利用が多く、もっとも利用されているものはＣ／Ｃ＋＋言語、ハードウェア記述向けクラスライブラリを実装したＳｙｓｔｅｍＣとなっている。入力言語として他には、Ｊａｖａ（登録商標）や、ＢＡＳＩＣ、アセンブリ言語などがある。高位合成では、高位言語の他に、制約やテクノロジライブラリが参照され、ＶＨＤＬ（VHSIC（Very High Speed Integrated Circuit）HDL）やＶｅｒｉｌｏｇＨＤＬ、ＳｙｓｔｅｍＶｅｒｉｌｏｇなどの、ＨＤＬが作成される。
【０００４】
高位合成では、半導体装置（または半導体回路）の設計データであるソースコードは、提供者側からユーザに提供され、ユーザ側でそのソースコードに基づく高位合成やシミュレーションが行われる。
【０００５】
なお、ＨＤＬを用いたＲＴＬ設計では、論理合成後に生成されるネットリストから元のＨＤＬは再現されづらい。また、ＨＤＬのコンパイラ識別子として暗号化のための仕組みがサポートされており、ＲＴＬシミュレーションや論理合成のＥＤＡ（Electronic Design Automation）ツールで、暗号化したＨＤＬをそのまま利用することが可能となっている。そのため、提供者側は、ネットリストや暗号化したＨＤＬをユーザに提供することで、設計データであるＨＤＬそのものを提供せずに済む。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００３−９９４０９号公報
【特許文献２】特開２０１１−１７０６０２号公報
【特許文献３】特開２０１０−１４６５７７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
高位合成では、ＲＴＬよりも抽象度の高いソフトウェア言語を用いて設計が行われるため、その設計データであるソースコードは、人が容易に解読可能となっている。従来の高位合成では、このように人が容易に解読可能なソースコードがユーザに提供されるため、提供者側のノウハウ（知的財産）が流出してしまう懸念があった。
【課題を解決するための手段】
【０００８】
発明の一観点によれば、半導体装置の設計データであるソースコードを解析し、前記半導体装置のデータ及び制御の流れを示す情報を生成する解析部と、前記ソースコードをコンパイルすることで得られる第１の中間データを取得して、前記解析部が生成した前記情報を、前記第１の中間データに組み込んだ第２の中間データを生成し、高位合成用データとして出力する高位合成用データ生成部と、を備えた高位合成用データ生成装置が提供される。
【０００９】
また、発明の一観点によれば、半導体装置の設計データであるソースコードをコンパイルすることで得られる第１の中間データに、前記半導体装置のデータ及び制御の流れを示す情報が組み込まれた第２の中間データを取得して、前記第２の中間データから前記情報を抽出する抽出部と、前記抽出部で抽出された前記情報に基づき高位合成を行う高位合成部と、を備えた高位合成装置が提供される。
【発明の効果】
【００１０】
開示の高位合成用データ生成装置、高位合成用データ生成方法及びプログラムによれば、ノウハウの流出を抑制できる。
【図面の簡単な説明】
【００１１】
【図１】本実施の形態の高位合成用データ生成装置及び高位合成装置の一例を示す図である。
【図２】高位合成装置の一例を示す図である。
【図３】高位合成用データ生成装置または高位合成装置のハードウェア例を示す図である。
【図４】高位合成用データ生成装置の処理の流れを示すフローチャートである。
【図５】コード解析処理の一例の流れを示すフローチャートである。
【図６】ソースコードの一例を示す図である。
【図７】制約設定可能情報の表示例を示す図である。
【図８】ユーザから入力される制限情報の一例を示す図である。
【図９】ユーザから入力される設定情報の他の例を示す図である。
【図１０】制約設定情報の一例を示す図である。
【図１１】ＣＤＦＧ解析処理の一例の流れを示すフローチャートである。
【図１２】ＣＤＦＧ情報の一例を示す図である。
【図１３】制約設定対応情報の一例を示す図である。
【図１４】高位合成用データ生成処理の一例の流れを示すフローチャートである。
【図１５】中間データ生成装置に入力されるソースコードの例を示す。
【図１６】ＥＬＦの構造の例を示す図である。
【図１７】アセンブリコードの一例を示す図である。
【図１８】高位合成用セクション情報の追加例を示す図である。
【図１９】高位合成装置の抽出部での抽出処理の一例を示すフローチャートである。
【図２０】高位合成装置の制約検証部での制約検証処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、発明を実施するための形態を、図面を参照しつつ説明する。
図１は、本実施の形態の高位合成用データ生成装置及び高位合成装置の一例を示す図である。
【００１３】
高位合成用データ生成装置１は、解析部２、記憶部３、高位合成用データ生成部４を有している。
解析部２は、半導体装置（以下、半導体回路も含むものとする）の設計データであるソースコードＤ１を解析し、設計対象である半導体装置のデータ及び制御の流れを示す情報Ｄ２（以下ＣＤＦＧ（Control Data Flow Graph）情報と呼ぶ）を生成する。ソースコードＤ１は、Ｃ／Ｃ＋＋言語、ＳｙｓｔｅｍＣ、ＪａｖａＢＡＳＩＣ、アセンブリ言語などの高位言語で記述されている。ＣＤＦＧは、ソースコードＤ１の動作（ビヘイビア）記述から作成されるデータの流れを示すＤＦＧ（Date Flow Graph）と、制御の流れを示すＣＦＧ（Control Flow Graph）を合わせたものである。ＣＤＦＧ情報Ｄ２の例については後述する（図１２参照）。
【００１４】
なお、解析部２は、コード解析部２ａとＣＤＦＧ解析部２ｂを有する。コード解析部２ａは、ソースコードＤ１を解析して、設定可能な高位合成情報を、制約設定可能情報（設計情報）Ｄ３として出力して、高位合成用データ生成装置１を使用する提供者に提示する機能を有する。また、高位合成用データ生成装置１を使用する提供者が制約設定可能情報（設計情報）Ｄ３に基づいて作成した制限情報（設計条件情報）Ｄ４を、コード解析部２ａが取得し、さらに、コード解析部２ａは、制約設定可能情報（設計情報）Ｄ３に制限情報（設計条件情報）Ｄ４を追加した制約設定情報（設計条件込みの設計情報）Ｄ５を生成して記憶部３に記憶する。
【００１５】
制限情報（設計条件情報）Ｄ４は、制約設定可能情報（設計情報）Ｄ３の設定条件を示すもの、換言すると、設定を制限するものであり、各種パラメータの制限値や、使用を認めるライブラリ情報などを含む。
【００１６】
ＣＤＦＧ解析部２ｂは、ソースコードＤ１の解析結果に基づきＣＤＦＧ情報Ｄ２を生成して記憶部３に記憶する。また、ＣＤＦＧ解析部２ｂは、制約設定情報Ｄ５に含まれる制限情報（設計条件情報）Ｄ４とＣＤＦＧ情報Ｄ２とを対応付けた制約設定対応情報Ｄ６を生成し、記憶部３に記憶する。
【００１７】
記憶部３は、解析部２で生成されたＣＤＦＧ情報Ｄ２、制約設定情報Ｄ５、制約設定対応情報Ｄ６を記憶する。
高位合成用データ生成部４は、ソースコードＤ１をコンパイルすることで得られる中間データを取得して、ＣＤＦＧ情報Ｄ２と制約設定対応情報Ｄ６を、その中間データに組み込んだ中間データを生成し、高位合成用データとして出力する。
【００１８】
図１の例では、ソースコードＤ１は、中間データ生成装置５のコンパイル部６でアセンブリコードＤ７に変換され、アセンブル部７にてオブジェクトファイルＤ８に変換される。高位合成用データ生成装置１の高位合成用データ生成部４は、オブジェクトファイルＤ８を中間データとして取得し、ＣＤＦＧ情報Ｄ２と制約設定対応情報Ｄ６を組み込んだオブジェクトファイルＤ９を、高位合成用データとして出力する。
【００１９】
このように高位合成用データの提供者側装置（図１の例では高位合成用データ生成装置１と中間データ生成装置５）で生成された高位合成用データは、ユーザ側装置に提供される。ユーザ側装置は、シミュレーション装置８と高位合成装置１１がある。
【００２０】
上記のような高位合成用データ生成装置１によって、ソースコードＤ１の代わりに、ＣＤＦＧ情報Ｄ２を組み込んだ中間データ（オブジェクトファイルＤ９）が高位合成用データとしてユーザ側装置に提供される。オブジェクトファイルＤ９やＣＤＦＧ情報Ｄ２からソースコードＤ１に戻すことは困難であるため、ソースコードＤ１は保護される。そのため、ノウハウの流出を抑えることができる。
【００２１】
また、制限情報（設計条件情報）Ｄ４とＣＤＦＧ情報Ｄ２とが対応付けられた制約設定対応情報Ｄ６をオブジェクトファイルＤ８に組み込むことで、ユーザ側装置では、ＣＤＦＧ情報Ｄ２の要素に対して、どのような高位合成制約が設定できるのか、容易に把握できるようになる。
【００２２】
また、高位合成用データ生成装置１は、１つのオブジェクトファイルＤ９により、ＣＤＦＧ情報Ｄ２や制約設定対応情報Ｄ６をユーザ側装置に提供できる。
以下、ユーザ側装置の一例を説明する。
【００２３】
（ユーザ側装置の一例）
図１のように、シミュレーション装置８は、高位合成用データであるオブジェクトファイルＤ９を取得して実行形式ファイルＤ１０を生成するリンク部９を有する。シミュレーション実行部１０は、実行形式ファイルＤ１０を実行することで、シミュレーションを実行し、ユーザが意図する動作を行うか確認する。後述するように、オブジェクトファイルＤ９に組み込まれるＣＤＦＧ情報Ｄ２と制約設定対応情報Ｄ６は、リンク部９での処理には影響を与えない。
【００２４】
以下、高位合成装置１１の一例を説明する。
図２は、高位合成装置の一例を示す図である。
高位合成装置１１は、抽出部２０、高位合成部２１、記憶部２２を有する。
【００２５】
抽出部２０は、高位合成用データとして供給される中間データ（オブジェクトファイルＤ９）から、ＣＤＦＧ情報Ｄ２と制約設定対応情報Ｄ６を抽出する。また、抽出部２０は、抽出した制約設定対応情報Ｄ６を出力して、高位合成装置１１のユーザに提示する。ユーザは制約設定対応情報Ｄ６に基づき、高位合成制約情報（高位合成設計情報）Ｄ１１を作成して、高位合成装置１１に入力する。
【００２６】
高位合成部２１は、抽出部２０で抽出されたＣＤＦＧ情報Ｄ２に基づき高位合成を行う。高位合成部２１は、制約検証部２１ａ、ＣＤＦＧ最適化部２１ｂ、ライブラリ処理部２１ｃ、アロケーション部２１ｄ、スケジューリング部２１ｅ、バインディング部２１ｆ、ＦＳＭＤ（Finite State Machine Data path）生成部２１ｇ、ＨＤＬ生成部２１ｈを有している。
【００２７】
制約検証部２１ａは、高位合成制約情報（高位合成設計情報）Ｄ１１を取得し、ユーザが作成した高位合成制約情報（高位合成設計情報）Ｄ１１が、制約設定対応情報Ｄ６に含まれる制限情報（設計条件情報）Ｄ４に規定されている制限を満たしているか否かを検証する。そして、制約検証部２１ａは、高位合成制約情報（高位合成設計情報）Ｄ１１が、上記制限を満たしていないときには警告を発し、高位合成の実行を制限する。
【００２８】
ＣＤＦＧ最適化部２１ｂは、制約検証部２１ａで高位合成制約情報（高位合成設計情報）Ｄ１１に問題がないと判定されたときに、抽出部２０で抽出されたＣＤＦＧ情報Ｄ２を最適化する。ＣＤＦＧ最適化部２１ｂは、たとえば、重複している掛け算があればそれをまとめたり、共通化できる変数を共通化したりして最適化を行う。
【００２９】
ライブラリ処理部２１ｃでは、記憶部２２に記憶されている高位合成ライブラリＤ１２からタイミング情報やエリア情報を取得する。
アロケーション部２１ｄは、足し算や掛け算などの演算の情報をマッピングする。
【００３０】
スケジューリング部２１ｅは、タイミング情報にしたがって、演算や配列アクセスの実行ステップを決定する。
バインディング部２１ｆは、演算子や変数、配列を演算器や、レジスタ、メモリに割り付ける。
【００３１】
ＦＳＭＤ生成部２１ｇは、ステートマシンを生成する。
ＨＤＬ生成部２１ｈは、合成された回路のアーキテクチャをＲＴＬレベルのＨＤＬデータＤ１３に変換して、記憶部２２に記憶する。
【００３２】
このような高位合成装置１１によれば、オブジェクトファイルＤ９に含まれるＣＤＦＧ情報Ｄ２に基づいて高位合成を行うことができる。また、オブジェクトファイルＤ９に含まれる制約設定対応情報Ｄ６が出力されユーザに提示されるので、ユーザは、ＣＤＦＧ情報Ｄ２の要素に対してどのような高位合成制約が設定できるのか、容易に把握できる。また、制約検証部２１ａはユーザが入力した高位合成制約情報（高位合成設計情報）Ｄ１１が、提供者側で設定された制限情報（設計条件情報）Ｄ４で規定される制限を満たさないときには警告を発し、高位合成の実行を制限することで、提供者側が意図していない設定で高位合成が行われることを防げる。
【００３３】
なお、提供者側装置である高位合成用データ生成装置１は、高位合成装置１１の機能を有していてもよい。また、中間データ生成装置５においても、シミュレーション装置８の機能を有していてもよい。
【００３４】
以下、より詳細に本実施の形態の高位合成用データ生成装置１及び高位合成装置１１の例を説明する。
（ハードウェア例）
図３は、高位合成用データ生成装置または高位合成装置のハードウェア例を示す図である。
【００３５】
高位合成用データ生成装置１または高位合成装置１１は、図３に示すようなコンピュータ３０にて実現される。中間データ生成装置５やシミュレーション装置８も同様のハードウェアにて実現可能である。
【００３６】
コンピュータ３０は、プロセッサ３１によって装置全体が制御されている。プロセッサ３１には、バス３９を介してＲＡＭ（Random Access Memory）３２と複数の周辺機器が接続されている。プロセッサ３１は、マルチプロセッサであってもよい。プロセッサ３１は、たとえばＣＰＵ（Central Processing Unit）、ＭＰＵ（Micro Processing Unit）、ＤＳＰ（Digital Signal Processor）、ＡＳＩＣ（Application Specific Integrated Circuit）、またはＰＬＤ（Programmable Logic Device）である。またプロセッサ３１は、ＣＰＵ、ＭＰＵ、ＤＳＰ、ＡＳＩＣ、ＰＬＤのうちの２以上の要素の組み合わせであってもよい。
【００３７】
ＲＡＭ３２は、コンピュータ３０の主記憶装置として使用される。ＲＡＭ３２には、プロセッサ３１に実行させるＯＳ（Operating System）のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、ＲＡＭ３２には、プロセッサ３１による処理に必要な各種データが格納される。
【００３８】
バス３９に接続されている周辺機器としては、ＨＤＤ（Hard Disk Drive）３３、グラフィック処理装置３４、入力インタフェース３５、光学ドライブ装置３６、機器接続インタフェース３７及びネットワークインタフェース３８がある。
【００３９】
ＨＤＤ３３は、内蔵したディスクに対して、磁気的にデータの書き込み及び読み出しを行う。ＨＤＤ３３は、コンピュータ３０の補助記憶装置として使用される。ＨＤＤ３３には、ＯＳのプログラム、アプリケーションプログラム、及び各種データが格納される。なお、補助記憶装置としては、フラッシュメモリなどの半導体記憶装置を使用することもできる。
【００４０】
グラフィック処理装置３４には、モニタ３４ａが接続されている。グラフィック処理装置３４は、プロセッサ３１からの命令にしたがって、画像をモニタ３４ａの画面に表示させる。モニタ３４ａとしては、ＣＲＴ（Cathode Ray Tube）を用いた表示装置や液晶表示装置などがある。
【００４１】
入力インタフェース３５には、キーボード３５ａとマウス３５ｂとが接続されている。入力インタフェース３５は、キーボード３５ａやマウス３５ｂから送られてくる信号をプロセッサ３１に送信する。なお、マウス３５ｂは、ポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
【００４２】
光学ドライブ装置３６は、レーザ光などを利用して、光ディスク３６ａに記録されたデータの読み取りを行う。光ディスク３６ａは、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク３６ａには、ＤＶＤ（Digital Versatile Disc）、ＤＶＤ−ＲＡＭ、ＣＤ−ＲＯＭ（Compact Disc Read Only Memory）、ＣＤ−Ｒ（Recordable）／ＲＷ（ReWritable）などがある。
【００４３】
機器接続インタフェース３７は、コンピュータ３０に周辺機器を接続するための通信インタフェースである。たとえば機器接続インタフェース３７には、メモリ装置３７ａやメモリリーダライタ３７ｂを接続することができる。メモリ装置３７ａは、機器接続インタフェース３７との通信機能を搭載した記録媒体である。メモリリーダライタ３７ｂは、メモリカード３７ｃへのデータの書き込み、またはメモリカード３７ｃからのデータの読み出しを行う装置である。メモリカード３７ｃは、カード型の記録媒体である。
【００４４】
ネットワークインタフェース３８は、ネットワーク３８ａに接続されている。ネットワークインタフェース３８は、ネットワーク３８ａを介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
【００４５】
以上のようなハードウェア構成によって、図１、図２に示した高位合成用データ生成装置１または高位合成装置１１の処理機能を実現することができる。たとえば、プロセッサ３１の制御によって、図１に示した高位合成用データ生成装置１の解析部２、高位合成用データ生成部４、図２に示した抽出部２０、高位合成部２１の処理機能が実現される。
【００４６】
コンピュータ３０は、たとえばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、高位合成用データ生成装置１または高位合成装置１１の処理機能を実現する。コンピュータ３０に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。たとえば、コンピュータ３０に実行させるプログラムをＨＤＤ３３に格納しておくことができる。プロセッサ３１は、ＨＤＤ３３内のプログラムの少なくとも一部をＲＡＭ３２にロードし、プログラムを実行する。またコンピュータ３０に実行させるプログラムを、光ディスク３６ａ、メモリ装置３７ａ、メモリカード３７ｃなどの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、たとえばプロセッサ３１からの制御により、ＨＤＤ３３にインストールされた後、実行可能となる。またプロセッサ３１が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
【００４７】
次に、高位合成用データ生成装置１の処理を、具体例をあげてより詳細に説明する。
（高位合成用データ生成装置の処理例）
図４は、高位合成用データ生成装置の処理の流れを示すフローチャートである。
【００４８】
高位合成用データ生成装置１は、解析処理（ステップＳ１）と、高位合成データ生成処理（ステップＳ２）を行う。
解析処理では、まずコード解析部２ａによるコード解析処理（ステップＳ１ａ）が行われ、次にＣＤＦＧ解析部２ｂによるＣＤＦＧ解析処理（ステップＳ１ｂ）が行われる。
【００４９】
図５は、コード解析処理の一例の流れを示すフローチャートである。
コード解析処理では、先ず、ソースコードＤ１の読み込みが行われ（ステップＳ１０）、その後、コード解析が行われる（ステップＳ１１）。
【００５０】
図６は、ソースコードの一例を示す図である。
図６に示されているソースコードＤ１の例では、シフトレジスタと積和演算器を有する半導体装置が記述されている。８〜１５行目にシフトレジスタが記述されており、１７〜２２行目に積和演算器が記述されている。
【００５１】
ステップＳ１１の処理では、コード解析部２ａは、ソースコードＤ１の記述から、ｆｏｒ文やｉｆ文などの高位合成で制約を設定可能な箇所を抽出する。
その後、抽出した情報が制約設定可能情報（設計情報）Ｄ３として、たとえば、図３に示したモニタ３４ａに表示される（ステップＳ１２）。
【００５２】
図７は、制約設定可能情報の表示例を示す図である。
図７には、ＣＤＦＧ情報Ｄ２の要素のＩＤ（IDentification）（後述する）、ソースコードＤ１の行番号、ラベル名、関数名、提供者が定義する名前、制限情報（設計条件情報：設定項目、デフォルト値、制限値）が示されている。制約設定可能情報（設計情報）Ｄ３としては、図６に示したソースコードＤ１において、２行目の関数名“ｓａｍｐｌｅ”の情報、９行目の、ラベル名“ｓｈｉｆｔ”の情報、１８行目の、ラベル名“ｍａｃ”の情報があることが示されている。
【００５３】
ステップＳ１２の処理後、コード解析部２ａは、ユーザから入力される制限情報（設計条件情報）Ｄ４を取得する（ステップＳ１３）。コード解析部２ａは、たとえば、以下のようにユーザがファイルで作成した制限情報（設計条件情報）Ｄ４を取得する。
【００５４】
図８は、ユーザから入力される制限情報の一例を示す図である。
図８の制限情報（設計条件情報）Ｄ４の例では、ソースコードＤ１の９行目のラベル“ｓｈｉｆｔ”のループ文に対して並列化の設定値を４〜８とすることが示されている。また、ソースコードＤ１の１８行目のラベル“ｍａｃ”のループ文に対して、パイプラインの設定値を１〜４とすることが示されている。
【００５５】
なお、制限情報（設計条件情報）Ｄ４には、制約設定可能情報（設計情報）Ｄ３として示された項目以外にも、図８のように、半導体装置の動作周波数の値、使用可能とするライブラリの名前などが含まれる。図８の例では、動作周波数のデフォルト値が１００ＭＨｚであり、５０−２００Ｍｈｚの範囲で設定可能とすることが示されている。
【００５６】
このような制限を加えることで、高位合成用データの提供者側が意図しない設定で、ユーザ側で高位合成が行われることを防げる。たとえば、特定のライブラリや、ある範囲の動作周波数で最適化が行われている場合には、そのライブラリや動作周波数の範囲以外を用いる設定が行われないように制限を加えることで、より適切な高位合成が可能となる。
【００５７】
図９は、ユーザから入力される設定情報の他の例を示す図である。
図９では、“ｓｈｉｆｔ”や“ｍａｃ”のようなラベル名ではなく、ソースコードＤ１において設定する行の行番号が指定されている。図９中の“Ｌ９”や“Ｌ１８”が、９行目、１８行目を示している。設定する内容は、図８に示した内容と同じである。
【００５８】
図９に示すように、制限情報（設計条件情報）Ｄ４は、ラベルではなく、行番号で設定する箇所が示されるようなものであってもよい。
なお、ユーザは、たとえば、モニタ３４ａ上に表示される図７に示したようなテーブルに、設定項目、デフォルト値、制限値などを入力することで、コード解析部２ａが、それらの情報を制限情報（設計条件情報）Ｄ４として取得するようにしてもよい。また、このときユーザは、各設定項目に対し、後述の図１０に示すような「提供者が定義する名前」を書き入れるようにしてもよい。
【００５９】
次に、コード解析部２ａは、取得した制限情報（設計条件情報）Ｄ４に基づき、制約設定情報Ｄ５を生成する（ステップＳ１４）。
図１０は、制約設定情報の一例を示す図である。
【００６０】
図１０に示されている制約設定情報Ｄ５は、図７に示した制約設定可能情報（設計情報）Ｄ３が、制限情報（設計条件情報）Ｄ４に基づき更新された形で示されており、図８、図９に示した制限情報（設計条件情報）Ｄ４で指定されている内容が示されている。また、「提供者が定義する名前」が各設定項目に対して示されている。
【００６１】
その後、ＣＤＦＧ解析処理が行われる。
図１１は、ＣＤＦＧ解析処理の一例の流れを示すフローチャートである。
ＣＤＦＧ解析部２ｂは、コード解析部２ａでのコード解析結果を読み込み（ステップＳ２０）、ループ解析（ステップＳ２１）や、条件分岐解析（ステップＳ２２）を行い、ＣＤＦＧ情報Ｄ２を生成する（ステップＳ２３）。なお、ステップＳ２１，Ｓ２２の順序は入れ替えてもよい。
【００６２】
図１２は、ＣＤＦＧ情報の一例を示す図である。
図６に示したソースコードＤ１の“ｓａｍｐｌｅ”という関数がＣＤＦＧで示されている。
【００６３】
パーツ４０，４３はループの開始を示し、パーツ４２，４６は、ループの終わりを示している。パーツ４０，４２は、“ｓｈｉｆｔ”のループであり、パーツ４３，４６は、“ｍａｃ”のループである。また、パーツ４１は、ｉｆ（条件分岐）を示しており、パーツ４４は乗算、パーツ４５は加算、パーツ４７はシフトを示している。
【００６４】
ステップＳ２３の処理後、ＣＤＦＧ解析部２ｂは、制約設定情報Ｄ５を読み込み（ステップＳ２４）、ＣＤＦＧ情報Ｄ２と制約設定情報Ｄ５に含まれる制限情報（設計条件情報）Ｄ４との対応付けを行う（ステップＳ２５）。
【００６５】
ステップＳ２５の処理では、ＣＤＦＧ解析部２ｂは、図１２に示したように、ＣＤＦＧの各要素（パーツ４０，４１，４３〜４５，４７）にＩＤを割り付け、制限情報（設計条件情報）Ｄ４と対応付ける。図１２に示した例では、関数“ｓａｍｐｌｅ”もパーツの１つとして“ＩＤ＝０００１”が割り付けられている。
【００６６】
ステップＳ２５の処理では、このＩＤと制限情報（設計条件情報）Ｄ４とが対応付けられる。
ＣＤＦＧ解析部２ｂは、ＣＤＦＧ情報Ｄ２と制限情報（設計条件情報）Ｄ４との対応付けの結果に基づき、制約設定対応情報Ｄ６を生成する（ステップＳ２６）。
【００６７】
図１３は、制約設定対応情報の一例を示す図である。
図１３に示されている制約設定対応情報Ｄ６は、図１０に示した制約設定情報Ｄ５が、ステップＳ２５の処理に基づき更新された形で示されている。図１０に示されている制約設定情報Ｄ５に対し、図１２に示したＣＤＦＧのパーツのＩＤが割り付けられている。
【００６８】
以上のように、解析部２での処理が終わると、高位合成用データ生成部４による高位合成データ生成処理が行われる。
図１４は、高位合成用データ生成処理の一例の流れを示すフローチャートである。
【００６９】
高位合成用データ生成部４は、ＣＤＦＧ情報Ｄ２、制約設定対応情報Ｄ６、中間データ生成装置５で生成されたオブジェクトファイルＤ８をそれぞれ読み込み（ステップＳ３０，Ｓ３１，Ｓ３２）、高位合成用セクション情報を作成する（ステップＳ３３）。なお、ステップＳ３０〜Ｓ３２の順序は適宜入れ替えてもよい。
【００７０】
ここで、簡単に中間データ生成装置５によるオブジェクトファイルＤ８の生成例を説明する。
図１５は、中間データ生成装置に入力されるソースコードの例を示す。
【００７１】
図１５では、説明の都合上、積和演算を行う“ｍａｃ”という１つの関数を有する簡単なソースコードの例が示されている。このようなソースコードを、コンパイル部６でコンパイルすることで、アセンブリコードＤ７が得られる。そしてアセンブル部７にてアセンブリコードＤ７がオブジェクトファイルＤ８に変換される。以下では、アセンブリコードＤ７やオブジェクトファイルＤ８のファイルフォーマットとして、ＥＬＦ（Executable and Linking Format）を用いるものとして説明する。
【００７２】
図１６は、ＥＬＦの構造の例を示す図である。
ＥＬＦには、ＥＬＦヘッダ、プログラムヘッダテーブル、セクションヘッダテーブルが含まれる。また、ＥＬＦでは、基本的にセクション単位でデータが扱われる。代表的なセクションとしては、プログラムが配置される“．ｔｅｘｔ”セグメントや、データが配置される“．ｄａｔａ”セグメント、リードオンリーの定数を格納する“．ｒｏｄａｔａ”セグメントなどがある。さらに、ＥＬＦでは、ユーザが追加で補足できる情報が配置される“．ｎｏｔｅ”セクションがある。
【００７３】
たとえば、図１６のフォーマットにおいて、ｓｅｃｔｉｏｎ１〜ｓｅｃｔｉｏｎ３を含むｓｅｇｍｅｎｔ１が、“．ｔｅｘｔ”セグメントで、ｓｅｃｔｉｏｎ４，ｓｅｃｔｉｏｎ５を含むｓｅｇｍｅｎｔ２が、“．ｄａｔａ”セグメントである。また、ｓｅｃｔｉｏｎ６を含むｓｅｇｍｅｎｔ３が、“．ｎｏｔｅ”セクションである。
【００７４】
図１７は、アセンブリコードの一例を示す図である。
図１７では、図１５に示したソースコードのコンパイルによって得られたアセンブリコードの例が示されている。
【００７５】
コードやデータが適切なセグメントに配置されている。図１７のアセンブリコードの例では、前述したような“．ｔｅｘｔ”セグメント、“．ｒｏｄａｔａ”セグメントの他、“．ｅｈ＿ｆｒａｍｅ”セグメントが示されており、最後に、“．ｎｏｔｅ”セクションが示されている。
【００７６】
ステップＳ３２の処理で、高位合成用データ生成部４に読み込まれるオブジェクトファイルＤ８は、図１７に示したようなアセンブリコードＤ７がバイナリに変換されたオブジェクトファイルＤ８であるが、図１７と同様のフォーマット（ＥＬＦ）となる。
【００７７】
ステップＳ３３で作成される高位合成用セクション情報は、ＣＤＦＧ情報Ｄ２と制約設定対応情報Ｄ６とに基づく情報であり、次のステップＳ３４の処理で“．ｎｏｔｅ”セクションに追加される。
【００７８】
ステップＳ３４の処理では、高位合成用データ生成部４は、オブジェクトファイルＤ８の、“．ｎｏｔｅ”セクションに、高位合成用セクション情報を追加してオブジェクトファイルＤ９を生成する。
【００７９】
図１８は、高位合成用セクション情報の追加例を示す図である。
なお、図１８では、分かりやすいように図１７に示したようなアセンブリコードに高位合成用セクション情報を追加した例を示しているが、実際にはオブジェクトファイルＤ８の“．ｎｏｔｅ”セクションに追加される。
【００８０】
図１８の例では、“．ｎｏｔｅ”セクションに、高位合成用のセクションであることを示す識別子として、“ＨＬＳ”という名前でセクションが定義されている。また、高位合成用のセクションにおいて、“ｎａｍｅｓｚ”というラベルの次の行では、“ｎａｍｅ＿ｓ”に記述される文字列のサイズが定義される。また、“ｄｅｓｃｓｚ”というラベルの次の行では、“ｄｓｅｃ＿ｓ”に記述されるデータのサイズが定義される。“ｎａｍｅ＿ｓ”というラベルの次の行では、任意の文字列が定義される。図１８の例では、高位合成ツール名“ＨＬＳ  Ｃｏｍｐｉｌｅｒ”が定義されている。“ｄｓｅｃ＿ｓ”というラベルの次の行では、ユーザ任意で追加できる情報が定義されている。図１８の例では、ＣＤＦＧ情報と制約設定対応情報がデータとして追加されている。
【００８１】
以上のように、高位合成用データ生成部４は、オブジェクトファイルにおいてユーザが追加で補足できるセクションに、ＣＤＦＧ情報Ｄ２と制約設定対応情報Ｄ６を追加するので、１つのファイルで高位合成用データを、ユーザ側装置に提供できる。なお、“．ｎｏｔｅ”セクションは、シミュレーション装置８のリンク部９でのリンク動作の際に影響を与えないため、問題なく実行形式ファイルＤ１０が作成できる。そのため、シミュレーション装置８としては、特別な変更を行わなくてもよく、既存の装置が適用できる。
【００８２】
次に、高位合成装置１１の処理例を説明する。
（高位合成装置１１の処理例）
図１９は、高位合成装置の抽出部での抽出処理の一例を示すフローチャートである。
【００８３】
抽出部２０は、高位合成用データ生成装置１で生成されたオブジェクトファイルＤ９を読み込み（ステップＳ４０）、読み込んだオブジェクトファイルＤ９から、高位合成用セクションを検索する（ステップＳ４１）。そして、抽出部２０は、高位合成用セクションを検出できたか否かを判定する（ステップＳ４２）。高位合成用セクションを検出できなかったときには、抽出部２０は、高位合成セクションが未検出である旨のエラーメッセージを、たとえば、モニタ３４ａに表示させ、高位合成部２１での高位合成の実行を中止させ、ステップＳ４０の処理に戻る。
【００８４】
抽出部２０が高位合成用セクションを検出したときには、抽出部２０は、高位合成用セクションを読み込み（ステップＳ４４）、高位合成用セクションに含まれるＣＤＦＧ情報Ｄ２と制約設定対応情報Ｄ６を抽出する（ステップＳ４５）。抽出部２０は、抽出した制約設定対応情報Ｄ６を、たとえば、モニタ３４ａに表示させる（ステップＳ４６）。また、抽出部２０は、ＣＤＦＧ情報Ｄ２をＣＤＦＧ最適化部２１ｂに渡し（ステップＳ４７）、制約設定対応情報Ｄ６を制約検証部２１ａに渡し（ステップＳ４８）、抽出処理を終える。なお、ステップＳ４６〜Ｓ４８の順序は適宜入れ替えてもよい。
【００８５】
上記のように、ユーザ側装置である高位合成装置１１には、ソースコードＤ１がそのまま供給されるのではなく、ソースコードＤ１がＣＤＦＧ情報Ｄ２に変換されてオブジェクトファイルＤ９に追加された形で供給される。そのため、ループ情報や条件分岐などの項目について、ソースコードＤ１とＣＤＦＧ情報Ｄ２との対応関係が分からない。
【００８６】
しかし、本実施の形態の高位合成装置１１では、図１４に示したような制約設定対応情報Ｄ６をユーザに提示できるため、高位合成制約の設定を自由に行える。また、図１４のように、提供者が設定項目に名前を付けているため、ユーザは、ソースコードＤ１がなくても何の設定であるかが容易に把握できる。
【００８７】
次に、高位合成装置１１の制約検証部２１ａの処理を説明する。
図２０は、高位合成装置の制約検証部での制約検証処理の一例を示すフローチャートである。
【００８８】
制約検証部２１ａは、抽出部２０から渡される制約設定対応情報Ｄ６を読み込み（ステップＳ５０）、制約設定対応情報Ｄ６を、たとえばモニタ３４ａに表示させる（ステップＳ５１）。なお、図１９のステップＳ４６に示したように抽出部２０での処理の際に、制約設定対応情報Ｄ６を表示させている場合には、ステップＳ５１の処理はなくてもよい。
【００８９】
さらに、制約検証部２１ａは、ユーザから入力される高位合成制約情報（高位合成設計情報）Ｄ１１を読み込み（ステップＳ５２）、制約設定対応情報Ｄ６を用いて高位合成制約情報（高位合成設計情報）Ｄ１１を検証する（ステップＳ５３）。
【００９０】
そして、制約検証部２１ａは、高位合成制約情報（高位合成設計情報）Ｄ１１が制約設定対応情報Ｄ６に含まれる制限情報（設計条件情報）Ｄ４で規定されている制限を満たしているか否かを判定する（ステップＳ５４）。
【００９１】
ユーザから入力される高位合成制約情報（高位合成設計情報）Ｄ１１が制限を満たしていないときには、制約検証部２１ａは警告を発する（ステップＳ５５）。たとえば、図１３に示したように、動作周波数が５０−２００ＭＨｚで制限されているとき、高位合成制約情報（高位合成設計情報）Ｄ１１で、動作周波数が２５０ＭＨｚと指定されたときには、制約検証部２１ａは警告を発する。
【００９２】
ステップＳ５５の処理では、制約検証部２１ａは、たとえば、モニタ３４ａに警告（エラーメッセージ）を表示させることで、高位合成制約情報（高位合成設計情報）Ｄ１１の設定をユーザに直すように促し（ステップＳ５５）、その後、ステップＳ５０の処理に戻る。ユーザから入力される高位合成制約情報（高位合成設計情報）Ｄ１１が正しい内容であるときには、ＣＤＦＧ最適化処理に進み（ステップＳ５６）、制約検証処理は終了する。
【００９３】
その後は、前述したＣＤＦＧ最適化部２１ｂ、ライブラリ処理部２１ｃ、アロケーション部２１ｄ、スケジューリング部２１ｅ、バインディング部２１ｆ、ＦＳＭＤ生成部２１ｇ、ＨＤＬ生成部２１ｈによる高位合成が行われる。ＨＤＬ生成部２１ｈにより生成されるＨＤＬデータＤ１３は、論理合成ツールなどの下流のツールに供給され、設計対象の半導体装置のマスクデータが生成される。
【００９４】
以上のような高位合成装置１１による処理によれば、オブジェクトファイルＤ９の高位合成用セクションに含まれるＣＤＦＧ情報Ｄ２に基づいて高位合成を行うことができる。
また、オブジェクトファイルＤ９の高位合成用セクションに含まれる制約設定対応情報Ｄ６が出力されユーザに提示されるので、ユーザは、ＣＤＦＧ情報Ｄ２の要素に対してどのような高位合成制約が設定できるのか、容易に把握できる。
【００９５】
また、高位合成制約情報（高位合成設計情報）Ｄ１１が制限情報（設計条件情報）Ｄ４に規定された制限を満たさないとき、制約検証部２１ａは警告を発し、ＣＤＦＧ最適化処理が行われないようにして高位合成の実行を制限する。これにより、提供者側が意図していない設定で高位合成が行われることを防げる。
【００９６】
以上、実施の形態に基づき、本発明の高位合成用データ生成装置、高位合成装置、高位合成用データ生成方法及びプログラムの一観点について説明してきたが、これらは一例にすぎず、上記の記載に限定されるものではない。
【００９７】
なお、上記では、高位言語としてＣ／Ｃ＋＋／ＳｙｓｔｅｍＣ言語を想定して説明したが、これに限定されず、他の高位言語（たとえば、Ｊａｖａなど）を用いてもよい。
また、上記ではアセンブリコードやオブジェクトファイルのファイルフォーマットを、ＥＬＦであるものとして説明したがＥＬＦに限定されるものではない。ユーザが追加で情報を補足できる領域を含むファイルフォーマットを適用できる。
【００９８】
なお、上記の説明では、中間データ生成装置５が中間データであるオブジェクトファイルを生成するものとして説明したが、高位合成用データ生成装置１がコンパイルやアセンブルを行い、オブジェクトファイルＤ８を生成するようにしてもよい。
【００９９】
また、高位合成用セクション情報を暗号化して、オブジェクトファイルＤ８に組み込むようにしてもよい。
以上説明した複数の実施の形態に関し、さらに以下の付記を開示する。
【０１００】
（付記１）半導体装置の設計データであるソースコードを解析し、前記半導体装置のデータ及び制御の流れを示す情報を生成する解析部と、
前記ソースコードをコンパイルすることで得られる第１の中間データを取得して、前記解析部が生成した前記情報を、前記第１の中間データに組み込んだ第２の中間データを生成し、高位合成用データとして出力する高位合成用データ生成部と、
を有することを特徴とする高位合成用データ生成装置。
【０１０１】
（付記２）前記解析部は、前記ソースコードを解析して、設定可能な高位合成情報である設計情報を出力し、前記設計情報の設定条件を示す設計条件情報を外部から取得し、前記設計条件情報と前記情報とを対応付けた対応情報を生成し、
前記高位合成用データ生成部は、前記情報と前記対応情報を前記第１の中間データに組み込んだ前記第２の中間データを生成すること、
を特徴とする付記１に記載の高位合成用データ生成装置。
【０１０２】
（付記３）前記設計条件情報は、高位合成で使用するライブラリ情報を含むこと、を特徴とする付記２に記載の高位合成用データ生成装置。
（付記４）前記設計条件情報は、前記半導体装置の動作周波数の条件値を含むこと、を特徴とする付記２または３に記載の高位合成用データ生成装置。
【０１０３】
（付記５）前記設計条件情報は、前記半導体装置で行われるパイプライン処理の設定値を含むこと、を特徴とする付記２乃至４の何れか一つに記載の高位合成用データ生成装置。
【０１０４】
（付記６）前記設計条件情報は、前記半導体装置で行われる並列化処理の設定値を含むこと、を特徴とする付記２乃至５の何れか一つに記載の高位合成用データ生成装置。
（付記７）半導体装置の設計データであるソースコードをコンパイルすることで得られる第１の中間データに、前記半導体装置のデータ及び制御の流れを示す情報が組み込まれた第２の中間データを取得して、前記第２の中間データから前記情報を抽出する抽出部と、
前記抽出部で抽出された前記情報に基づき高位合成を行う高位合成部と、
を有することを特徴とする高位合成装置。
【０１０５】
（付記８）前記第２の中間データは、設定可能な高位合成情報である設計情報の設定条件を示す設計条件情報と、前記情報とが対応付けられた対応情報を含み、
前記抽出部は、前記対応情報を抽出して、前記対応情報を出力し、
前記高位合成部は、高位合成設計情報を外部から取得して、前記高位合成設計情報が前記設計条件情報に規定されている条件を満たしているか否かを検証する設計検証部を有し、
前記設計検証部は、前記高位合成設計情報が、前記条件を満たしていないときには警告を発し、前記高位合成の実行を制限することを特徴とする付記７に記載の高位合成装置。
【０１０６】
（付記９）半導体装置の設計データであるソースコードを解析して前記半導体装置内でのデータ及び制御の流れを示す情報を生成し、
前記ソースコードをコンパイルすることで得られる第１の中間データを取得して、前記情報を前記第１の中間データに組み込んだ第２の中間データを生成し、高位合成用データとして出力する、
ことを特徴とする高位合成用データ生成方法。
【０１０７】
（付記１０）半導体装置の設計データであるソースコードを解析して前記半導体装置内でのデータ及び制御の流れを示す情報を生成し、
前記ソースコードをコンパイルすることで得られる第１の中間データを取得して、前記情報を前記第１の中間データに組み込んだ第２の中間データを生成し、高位合成用データとして出力する、
処理をコンピュータに実行させるプログラム。
【０１０８】
（付記１１）半導体装置の設計データであるソースコードをコンパイルすることで得られる第１の中間データに、前記半導体装置のデータ及び制御の流れを示す情報が組み込まれた第２の中間データを取得して、前記第２の中間データから前記情報を抽出し、
抽出した前記情報に基づき高位合成を行う、
ことを特徴とする高位合成方法。
【０１０９】
（付記１２）半導体装置の設計データであるソースコードをコンパイルすることで得られる第１の中間データに、前記半導体装置のデータ及び制御の流れを示す情報が組み込まれた第２の中間データを取得して、前記第２の中間データから前記情報を抽出し、
抽出した前記情報に基づき高位合成を行う、
処理をコンピュータに実行させるプログラム。
【符号の説明】
【０１１０】
１  高位合成用データ生成装置
２  解析部
２ａ  コード解析部
２ｂ  ＣＤＦＧ解析部
３  記憶部
４  高位合成用データ生成部
５  中間データ生成装置
６  コンパイル部
７  アセンブル部
８  シミュレーション装置
９  リンク部
１０  シミュレーション実行部
１１  高位合成装置
Ｄ１  ソースコード
Ｄ２  ＣＤＦＧ情報
Ｄ３  制約設定可能情報
Ｄ４  制限情報
Ｄ５  制約設定情報
Ｄ６  制約設定対応情報
Ｄ７  アセンブリコード
Ｄ８，Ｄ９  オブジェクトファイル
Ｄ１０  実行形式ファイル
【図１】
2015076013.tif 000003
【図２】
2015076013.tif 000004
【図３】
2015076013.tif 000005
【図４】
2015076013.tif 000006
【図５】
2015076013.tif 000007
【図６】
2015076013.tif 000008
【図７】
2015076013.tif 000009
【図８】
2015076013.tif 000010
【図９】
2015076013.tif 000011
【図１０】
2015076013.tif 000012
【図１１】
2015076013.tif 000013
【図１２】
2015076013.tif 000014
【図１３】
2015076013.tif 000015
【図１４】
2015076013.tif 000016
【図１５】
2015076013.tif 000017
【図１６】
2015076013.tif 000018
【図１７】
2015076013.tif 000019
【図１８】
2015076013.tif 000020
【図１９】
2015076013.tif 000021
【図２０】
2015076013.tif 000022