(57)【要約】【課題】遅延不具合を解消するための並列化及び消費電力を改善するための並列化のいずれに対しても、並列化の対象箇所を効率的に決定する。【解決手段】タイミング解析部２０２は、複数のコードブロックから、クリティカルパスに対応するクリティカルコードブロックを抽出する。回路並列化可否解析部２０３は、複数のコードブロックから、回路並列化の対象外の並列化対象外コードブロック及び並列化対象外コードブロックに後続するコードブロックを除外して、クリティカルコードブロックを含む、回路並列化の候補になる並列化候補コードブロックを特定する。回路並列化判定部２０４は、並列化候補コードブロックにおいて、評価対象となるコードブロックの範囲である評価対象範囲をクリティカルコードブロックを中心にして広狭を変化させて複数設定し、複数の評価対象範囲の中から、回路並列化の対象にする評価対象範囲を選択する。【選択図】図１
2015095130.tif 000002
【特許請求の範囲】
【請求項１】
設計対象回路の動作記述コードに含まれる複数のコードブロックの中から、前記複数のコードブロックの高位合成により生成される複数のデータパスのうちのクリティカルパスに対応するコードブロックをクリティカルコードブロックとして抽出するコードブロック抽出部と、
前記複数のコードブロックから、前記クリティカルコードブロックよりも後のコードブロックであって回路並列化の対象外のコードブロックである並列化対象外コードブロック及び前記並列化対象外コードブロックに後続するコードブロックを除外して、クリティカルコードブロックを含む、回路並列化の候補になるコードブロックを並列化候補コードブロックとして特定し、前記並列化候補コードブロックにおいて、評価対象となるコードブロックの範囲である評価対象範囲を前記クリティカルコードブロックを中心にして広狭を変化させて複数設定し、評価対象範囲ごとに、評価対象範囲のコードブロックに対応するデータパスの特性を評価し、複数の評価対象範囲の中から、回路並列化の対象にする評価対象範囲を選択する評価部とを有することを特徴とする回路設計支援装置。
【請求項２】
前記評価部は、
評価対象範囲のコードブロックに対応するデータパスの特性として、評価対象範囲のコードブロックに対応するデータパスでの遅延時間を評価することを特徴とする請求項１に記載の回路設計支援装置。
【請求項３】
前記評価部は、
評価対象範囲のコードブロックに対応するデータパスの特性として、評価対象範囲のコードブロックに対応するデータパスで構成される回路が並列化された場合の前記設計対象回路の規模を評価することを特徴とする請求項１に記載の回路設計支援装置。
【請求項４】
前記評価部は、
前記複数のコードブロックから、前記並列化対象外コードブロック、前記並列化対象外コードブロックに後続するコードブロック、及び前記回路設計支援装置のユーザにより指定されたコードブロックを除外して、前記並列化候補コードブロックを特定することを特徴とする請求項１に記載の回路設計支援装置。
【請求項５】
前記評価部は、
前記クリティカルコードブロックを中心にして前記並列化候補コードブロック内の全ての組合せが含まれるように、評価対象範囲を複数設定することを特徴とする請求項１に記載の回路設計支援装置。
【請求項６】
前記評価部は、
遅延時間が閾値以上のデータパスの数が最大の評価対象範囲を選択することを特徴とする請求項２に記載の回路設計支援装置。
【請求項７】
前記評価部は、
遅延時間が閾値以上のデータパスの数が最大の評価対象範囲が２つ以上ある場合に、
遅延時間が閾値以上のデータパスの数が最大の評価対象範囲のうち、回路並列化後の動作記述コードのコードサイズが最小になる評価対象範囲を選択することを特徴とする請求項６に記載の回路設計支援装置。
【請求項８】
前記評価部は、
回路並列化後の前記設計対象回路の規模が最小の評価対象範囲を選択することを特徴とする請求項３に記載の回路設計支援装置。
【請求項９】
前記評価部は、
前記設計対象回路がデフォルトの動作周波数から低減された低減動作周波数で動作する場合の前記設計対象回路の規模を評価することを特徴とする請求項３に記載の回路設計支援装置。
【請求項１０】
前記評価部は、
前記設計対象回路が前記低減動作周波数で動作すると前記設計対象回路に要求される条件が満たされない場合に、前記設計対象回路がデフォルトの動作周波数で動作する場合の前記設計対象回路の規模を評価することを特徴とする請求項９に記載の回路設計支援装置。
【請求項１１】
前記評価部は、
評価対象範囲のコードブロックに対応するデータパスでの遅延時間を評価する第１の評価モードと、評価対象範囲のコードブロックに対応するデータパスで構成される回路が並列化された場合の前記設計対象回路の規模を評価する第２の評価モードとのいずれかを、前記回路設計支援装置のユーザに選択させ、
前記ユーザにより前記第１の評価モードが選択された場合に、評価対象範囲ごとに、評価対象範囲のコードブロックに対応するデータパスでの遅延時間を評価し、
前記ユーザにより前記第２の評価モードが選択された場合に、評価対象範囲ごとに、評価対象範囲のコードブロックに対応するデータパスで構成される回路が並列化された場合の前記設計対象回路の規模を評価することを特徴とする請求項１に記載の回路設計支援装置。
【請求項１２】
前記回路設計支援装置は、更に、
前記評価部による評価結果を表示する評価結果表示部を有することを特徴とする請求項１に記載の回路設計支援装置。
【請求項１３】
設計対象回路の動作記述コードに含まれる複数のコードブロックの中から、前記複数のコードブロックの高位合成により生成される複数のデータパスのうちのクリティカルパスに対応するコードブロックをクリティカルコードブロックとして抽出するコードブロック抽出処理と、
前記複数のコードブロックから、前記クリティカルコードブロックよりも後のコードブロックであって回路並列化の対象外のコードブロックである並列化対象外コードブロック及び前記並列化対象外コードブロックに後続するコードブロックを除外して、クリティカルコードブロックを含む、回路並列化の候補になるコードブロックを並列化候補コードブロックとして特定し、前記並列化候補コードブロックにおいて、評価対象となるコードブロックの範囲である評価対象範囲を前記クリティカルコードブロックを中心にして広狭を変化させて複数設定し、評価対象範囲ごとに、評価対象範囲のコードブロックに対応するデータパスの特性を評価し、複数の評価対象範囲の中から、回路並列化の対象にする評価対象範囲を選択する評価処理とをコンピュータに実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回路設計を支援する回路設計支援装置に関する。
より具体的には、動作記述コード（以下、単に「動作記述」ともいう）からレジスタ転送レベルを自動生成する高位合成（動作合成）を利用した半導体設計を支援する回路設計支援装置に関する。
【背景技術】
【０００２】
従来の半導体集積回路設計では、回路に含まれるレジスタ（フリップフロップ）とレジスタ間の組み合わせ回路の動作を記述するレジスタ転送レベル（ＲＴＬ）をハードウェア記述言語で設計していた。
近年では集積回路の回路規模が増大しており、ＲＴＬ設計時間を多大に要することが問題となっている。
そこで、ＲＴＬよりも抽象度が高い高級言語であるＣ言語、Ｃ＋＋言語、ＳｙｓｔｅｍＣ言語などを用いて自動的にＲＴＬを生成する高位合成技術が提唱されており、これを実現する高位合成ツールが市販されている。
【０００３】
しかし、高位合成ツールで生成されるＲＴＬは可読性が悪いため、このような高級言語を用いた設計では、生成されるＲＴＬの性能に問題が発生した場合に、設計者にＲＴＬを解析させることなく、発生した問題についての適切な情報を設計者に通知する必要がある。
そのため、特許文献１では、遅延不具合が発生した場合に、遅延不具合に対応する高級言語のソースコード箇所、また遅延不具合に関連する高級言語のソースコード箇所をユーザに通知することが示されている。
また、特許文献２では、高級言語から回路の消費電力を解析する方法が開示されている。
特許文献２では、回路の内部処理が並列処理可能で、かつ、並列化する回路の動作周波数を下げることが可能であり、削減される消費電力が指定閾値以上である場合に、回路を並列化することで、消費電力を低減することが開示されている。
補足すると、一般に消費電力を削減する技術の一つとして、動作周波数を下げて、回路を並列化する手法がある。
上記の特許技術文献２では、その手法を利用している。
一般に消費電力は、回路規模と動作周波数に比例するが、例えば動作周波数を半分にした場合に、要求される処理能力を動作周波数を半分にする前と同じにするには、回路を並列化し、処理能力をあげる必要がある。
このとき、並列化回路の規模がもとの回路の２倍以上になっても、電源電圧を下げることが可能となれば、電源電圧は式（１）のように消費電力には二乗で効くため、消費電力を下げることが可能となる。
または、並列化しても回路規模が２倍以上とならない場合は、周波数が１／２になって、回路規模は２倍にならないため、消費電力は下がることになる。
Ｐ＝α・ｆ・Ｃ・ｖ２  ・・・式（１）
なお、式（１）において、Ｐは消費電力であり、αは動作率であり、ｆは動作周波数であり、Ｃは回路規模であり、ｖは電源電圧である。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００８−７７４９０号公報
【特許文献２】特開２００１−１４２９２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に記載の方法は、遅延不具合の主因となるクリティカルパスの位置を設計者に通知するものの、クリティカルパスを直接改善するものではない。
高位合成上、クリティカルパスの改善は、ツール依存性の問題もあり、クリティカルパス箇所の改善方法が一般化されておらず、設計者が改善することは難しいといった問題がある。
設計者が容易にクリティカルパスの改善を行えるようにすることが設計の効率化の面で望ましい。
しかしながら、前述したように、特許文献１の方法は、クリティカルパスの位置を設計者に通知するものの、クリティカルパスを改善し、遅延不具合を解消するものではない。
【０００６】
また、特許文献２による回路並列化及び動作周波数の低減による消費電力削減方法では、効果的に消費電力を削減できないといった課題がある。
具体的には、ＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）の中で、回路並列化ができる箇所は、非常に多くある。
図１６に回路並列化前の回路を示す。
図中で並列化が可能な箇所は、ａ−ｂ間、ｂ−ｃ間、ｃ−ｄ間、ｄ−ｅ間の４つある。
さらにこれら２つを組み合わせると、４Ｃ２＝６通り、さらに４Ｃ３＝４通り、全て実施して１通りとなり、この４つの小さい論理だけで１５通り（４＋６＋４＋１＝１５）の候補がある。
一般化するとΣｎ＝１：Ｎ  ＮＣｎとなる。
並列化対象となる回路はＬＳＩの回路の中で点在しており、その組み合わせは膨大となり、実時間で処理ができないといった問題がある。
また、ここで、最も広範囲に並列化ができるａ−ｅ間を並列化したとしても、それが消費電力の改善に必ずしも効果的であるとは限らない。
このように、従来技術では、並列化が可能な箇所を抽出するのに長時間を要し、また、長時間をかけても必ずしも消費電力の改善に効果的な箇所を抽出できるとも限らない。
【０００７】
この発明は、上記の事情に鑑みたものであり、遅延不具合を解消するための並列化及び消費電力を改善するための並列化のいずれに対しても、並列化の対象箇所を効率的に決定することを主な目的とする。
【課題を解決するための手段】
【０００８】
本発明に係る回路設計支援装置は、
設計対象回路の動作記述コードに含まれる複数のコードブロックの中から、前記複数のコードブロックの高位合成により生成される複数のデータパスのうちのクリティカルパスに対応するコードブロックをクリティカルコードブロックとして抽出するコードブロック抽出部と、
前記複数のコードブロックから、前記クリティカルコードブロックよりも後のコードブロックであって回路並列化の対象外のコードブロックである並列化対象外コードブロック及び前記並列化対象外コードブロックに後続するコードブロックを除外して、クリティカルコードブロックを含む、回路並列化の候補になるコードブロックを並列化候補コードブロックとして特定し、前記並列化候補コードブロックにおいて、評価対象となるコードブロックの範囲である評価対象範囲を前記クリティカルコードブロックを中心にして広狭を変化させて複数設定し、評価対象範囲ごとに、評価対象範囲のコードブロックに対応するデータパスの特性を評価し、複数の評価対象範囲の中から、回路並列化の対象にする評価対象範囲を選択する評価部とを有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、動作記述コードの全てのコードブロックを並列化の評価の対象とするのではなく、並列化候補コードブロックに限定して評価するため、並列化の対象箇所を効率的に決定することができる。
また、クリティカルコードブロックを中心にして評価対象範囲を設定するため、並列化の対象箇所を効率的に決定することができる。
また、各評価対象範囲に含まれるコードブロックに対応するデータパスでの遅延時間を評価することにより、遅延不具合に対処するための並列化の対象箇所を効率的に決定することができる。
また、各評価対象範囲に含まれるコードブロックに対応するデータパスで構成される回路が並列化された場合の設計対象回路の回路規模を評価することにより、消費電力の改善に対処するための並列化の対象箇所を効率的に決定することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係る半導体設計支援装置の構成例を示す図。
【図２】実施の形態１に係る動作記述コードの例を示す図。
【図３】実施の形態１に係る半導体設計支援装置の速度改善モードにおける動作例を示すフローチャート図。
【図４】実施の形態１に係る高位合成部により生成される回路の例を示す図。
【図５】実施の形態１に係るタイミング解析部により生成される遅延情報テーブルの例を示す図。
【図６】実施の形態１に係るタイミング解析部により生成されるヒストグラムの例を示す図。
【図７】実施の形態１に係るコード削減時の回路の例を示す図。
【図８】実施の形態１に係るコード削減時の遅延情報テーブルの例を示す図。
【図９】実施の形態１に係るコード削減時のヒストグラムの例を示す図。
【図１０】実施の形態１に係るコード削減時の回路の例を示す図。
【図１１】実施の形態１に係る回路並列化判定部の動作例を示すフローチャート図。
【図１２】実施の形態１に係る半導体設計支援装置の消費電力改善モードにおける動作例を示すフローチャート図。
【図１３】実施の形態１に係る半導体設計支援装置により生成される入出力制御回路と回路並列を接続した例を示す図。
【図１４】実施の形態１に係る入出力制御回路と回路の動作例を表すタイミングチャート図。
【図１５】実施の形態１に係る半導体設計支援装置のハードウェア構成例を示す図。
【図１６】従来技術の課題を説明するための図。
【発明を実施するための形態】
【００１１】
実施の形態１．
本実施の形態では、半導体設計支援装置を説明する。
より具体的には、本実施の形態に係る半導体設計支援装置は、動作合成の対象となるコード記述から得たタイミング情報を含むスケジューリング結果、またはＲＴＬをタイミング解析した結果から、最も遅延が大きい箇所を抽出する。
そして、本実施の形態に係る半導体設計支援装置は、最も遅延が大きい箇所を中心として、回路の並列化が可能であり、かつ、効果的に回路の並列化による動作周波数の削減で、消費電力が改善される箇所を特定する。
また、本実施の形態に係る半導体設計支援装置は、最も遅延が大きい箇所を中心として、回路の並列化が可能であり、かつ、回路規模を抑えつつ、タイミングが改善される箇所を特定することもできる。
更に、本実施の形態に係る半導体設計支援装置は、設計者が再設計することなく、動作周波数を削減し、かつ並列化された回路と、その回路の入出力回路を自動で生成することも可能である。
【００１２】
図１は、本実施の形態に係る半導体設計支援装置１０の構成例を示す。
半導体設計支援装置１０は、回路設計支援装置の例に相当する。
図１に示すように、半導体設計支援装置１０は、入出力部１００と、データ処理部２００と、記憶部３００を備える。
【００１３】
入出力部１００において、高位言語表示部１０１は、高位合成への入力となる動作記述コードを表示する。
動作記述コードでは、設計対象回路の動作が高位言語で記述されている。
また、動作記述コードには、複数のコードブロック（一塊の記述）が含まれる。
各コードブロックは、設計対象回路に含まれるデータパスに対応する。
【００１４】
並列化可能領域表示部１０２は、動作記述コードにおいて回路並列化が可能な領域である並列化可能領域を表示する。
並列化可能領域は、動作記述コードの複数のコードブロックから、並列化対象外コードブロック及び並列化対象外コードブロックに後続するコードブロックを除外した範囲である。
並列化対象外コードブロックは、回路並列化の対象外のデータパスに対応するコードブロックである。
並列化可能領域は、並列化の候補になるデータパスに対応するコードブロックの範囲である。
以下では、並列化可能領域は、並列化候補コードブロックともいう。
【００１５】
並列化指示部１０３は、設計者が動作記述コード上で並列化対象領域を指定するための要素である。
遅延情報表示部１０４は、動作記述コード上の遅延情報（スラックともいう）、クリティカルパス、遅延情報のヒストグラムを表示する。
モード指定部１０５は、速度改善モード（第１の評価モード）又は消費電力改善モード（第２の評価モード）を指定する。
性能表示部１０６は、生成された回路の遅延情報及び回路規模を表示する。
性能表示部１０６は、評価結果表示部の例に相当する。
【００１６】
記憶部３００において、スケジューリング結果・ＲＴＬ記憶部３０１は、動作記述コードの高位合成により得られるスケジューリング結果・ＲＴＬを記憶する。
【００１７】
遅延情報記憶部３０２は、動作記述コードのスケジューリング結果またはＲＴＬを静的解析した結果から得られた遅延情報が記述される遅延情報テーブルを記憶する。
遅延情報テーブルでは、データパスごとに、遅延情報とコードブロックとが対応付けられている。
【００１８】
ヒストグラム記憶部３０３は、遅延情報のヒストグラムを記憶する。
【００１９】
クリティカルパス情報記憶部３０４は、設計対象回路に含まれるデータパスのうちクリティカルパスに相当するデータパスに対応するコードブロック（クリティカルコードブロック）の情報をクリティカルパス情報として記憶する。
【００２０】
並列化可能領域記憶部３０５は、並列化可能領域を記憶する。
【００２１】
並列化回路コード記憶部３０６は、並列化した回路及び並列化に必要な入出力回路の高位言語による動作記述コード又はＲＴＬを記憶する。
【００２２】
データ処理部２００において、高位合成部２０１は、高位言語での動作記述コード及び高位合成に必要なオプションを入力し、高位合成後の中間結果であるスケジューリング結果、及び合成の結果であるＲＴＬを生成する。
【００２３】
タイミング解析部２０２は、以下の３つの機能を有する。
（ａ）動作記述コード上の変数や処理に対応する遅延情報を取得し、コードブロックと遅延情報を対応づける。
（ｂ）上記（ａ）で得られた遅延情報を元にヒストグラムを作成する。
（ｃ）得られた遅延情報からクリティカルパスを抽出する。
【００２４】
タイミング解析部２０２の入力は、動作記述コードと当該動作記述コードに対応するスケジューリング結果、またはＲＴＬである。
タイミング解析部２０２の出力は、クリティカルパスと当該クリティカルパスに対応するコードブロック（クリティカルコードブロック）、遅延情報のヒストグラムである。
【００２５】
まず、上記（ａ）について説明する。
タイミング解析部２０２は、以下の（１）または（２）を元に、設計対象回路内で、全ての遅延情報（スラック）とそれに対応する動作記述コード上の変数を取得する。
タイミング解析方法は、以下の２つから選択できる。
２つのうちいずれかで実施するかは、設計者が選択できる。
（１）高位合成後のスケジューリング結果から解析する
（２）静的タイミング解析により解析する（ＲＴＬのマッピング）
【００２６】
上記（１）の利点は、論理合成などの後工程に依らず、短期間に実施ができる点である。
一方で、消費電力の改善、または速度改善の効果が低い可能性がある。
上記（２）の利点は、マッピング後の解析となるため、情報が正確であり、消費電力の改善、または速度改善の効果が高い可能性がある。
しかし、マッピング試行などを行うため、短期間の効果は（１）より低い。
【００２７】
ここで、スラックとは、目標となる速度にどれだけ余裕があるかを示す値である。
例えば目標が１０ｎｓ（１００ＭＨｚ）である場合に、あるレジスタ間の遅延が１０．１ｎｓである場合は、−０．１ｎｓがスラックとなる。
これはタイミング違反となる。
逆に、レジスタ間の遅延が９．９ｎｓであった場合は、＋０．１ｎｓのスラックであり、タイミングは０．１ｎｓの余裕があることになる。
【００２８】
なお、上記における（２）のタイミング情報と高位言語の対応は、特許文献１に記載されている。
【００２９】
上記（１）または（２）の手段により、タイミング解析部２０２は、遅延情報と対応するコードブロックとをひもづける。
具体的には、スケジューリング結果、あるいはＲＴＬの各データパスと、各データパスでのスラック（遅延情報）と、各データパスに対応するコードブロックとが記述された遅延情報テーブルを生成し、生成した遅延情報テーブルを遅延情報記憶部３０２に書き込む。
例えば、図４の回路に対する遅延情報テーブルは、図５のようになる。
図４及び図５の詳細は後述する。
【００３０】
次に、上記の（ｂ）について説明する。
タイミング解析部２０２は、動作記述コードに対応する全ての遅延情報をヒストグラム化する。
ヒストグラムは、横軸をスラック、縦軸をそのスラックを持つデータパス数とする。
タイミング解析部２０２は、生成したヒストグラムをヒストグラム記憶部３０３に書き込む。
例えば、図５の遅延情報テーブルから生成されたヒストグラムは、図６のようになる。
図６の詳細は後述する。
【００３１】
次に、上記（ｃ）を説明する。
タイミング解析部２０２は、上記（ａ）により得られた遅延情報テーブルを参照して、最も遅延が大きいデータパス（クリティカルパス）と、そのデータパスの遅延情報、そのデータパスに対応するコードブロック（クリティカルコードブロック）を抽出する。
そして、タイミング解析部２０２は、抽出したデータパス、遅延情報、コードブロックの情報を、クリティカルパス情報として、クリティカルパス情報記憶部３０４に書き込む。
このように、タイミング解析部２０２は、動作記述コードに含まれる複数のコードブロックの中から、クリティカルコードブロックを抽出しており、コードブロック抽出部の例に相当する。
【００３２】
なお、上記（ａ）、（ｂ）、（ｃ）で得られた情報は、遅延情報表示部１０４にて、設計者に表示し、解析の補助にしてもよい。
【００３３】
回路並列化可否解析部２０３は、動作記述コードにおいて、クリティカルコードブロックを含む、回路並列化の候補になるコードブロックを並列化候補コードブロックとして特定する。
動作記述コードには、回路並列化ができるコードブロックとできないコードブロックがある。
回路並列化可否解析部２０３は、動作記述コードの複数のコードブロックから、クリティカルコードブロックよりも後のコードブロックであって並列化の対象外のコードブロックである並列化対象外コードブロック及び並列化対象外コードブロックに後続するコードブロックを除外して、並列化候補コードブロックを抽出する。
並列化の対象外のコードブロックは、前クロックでの処理結果が現在のクロックでの処理結果に影響を与えるコードブロックである。
回路並列化可否解析部２０３は、このように、並列化候補コードブロックを抽出しており、後述の回路並列化判定部２０４とともに、評価部の例に相当する。
【００３４】
具体的には、ある変数が参照後、代入されている場合（例えば、ｃｏｕｎｔｅｒ＝ｃｏｕｎｔｅｒ＋１は、ｃｏｕｎｔｅｒ変数が参照後、その変数に代入されている）、時間制約がある部分（ＳｙｓｔｅｍＣ言語の場合はｗａｉｔ（）の有無）、さらに合成オプションによる制約部分は並列化ができない。
合成オプションにより回路並列化ができない例としては、ループ展開しない場合や、メモリポート数制約でポート数が足りない場合などである。
【００３５】
回路並列化可否解析部２０３は、動作記述コードを入力として、上記のように並列化ができない箇所を排除し、並列化できるコードブロックを抽出し、抽出したコードブロックを並列化可能領域記憶部３０５に書き込む。
【００３６】
上記のように、回路並列化可否解析部２０３が静的に並列化可能領域（並列化候補コードブロック）を決めることにより、設計者が並列化が可能かどうかを判断することなく、回路並列化が容易に可能となる。
【００３７】
また、ＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）などのメモリは、並列化により容量が２倍になる可能性があり、回路規模の増加量が多い可能性がある。
特にＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）はメモリ配置が決まっている場合があり、メモリが増加することで、速度劣化が生じる懸念がある。
このように制約がある場合があるので、並列化可能領域表示部１０２が、動作記述コード上の回路並列化が可能な領域を設計者にハイライトで示すようにしてもよい。
設計者は、開発の制約により回路の複製を希望しない箇所を、並列化指示部１０３を介して回路並列化可否解析部２０３に通知することで、該当箇所を回路並列化の対象外とすることができる。
【００３８】
また、回路並列化可否解析部２０３は、設計者が記述した全ての動作記述コードを並列化可否の解析の対象とせず、設計者に対象となるコードを指定させてもよい。
さらに、回路並列化可否解析部２０３は、ある変数を入力とし、その変数を中心とした範囲で並列化の可否を判定してもよい。
【００３９】
なお、上記では、回路並列化可否解析部２０３は、動作記述コードから解析を行っているが、高位合成の中間結果であるスケジューリング結果、あるいは、合成結果であるＲＴＬから回路並列化の判断をしてもよい。
【００４０】
回路並列化判定部２０４は、回路並列化可否解析部２０３により抽出された並列化可能領域（並列化候補コードブロック）において、データパスの特性を評価し、速度改善ができる箇所や消費電力が削減できる箇所を抽出し、回路並列化を行う範囲を判定する。
モード指定部１０５で速度改善モードが指定されていれば、回路並列化判定部２０４は、速度改善ができる箇所を抽出し、消費電力改善モードが指定されていれば、回路並列化判定部２０４は、消費電力が削減できる箇所を抽出する。
並列化ができる範囲は、通常、ソースコード上で点在している。
点在した箇所の全てを、あるいは、その組み合わせの全てに対して回路並列化を施しても、速度の改善又は消費電力の改善が実現されるとは限らない。
また、点在した箇所の全て、あるいは、その組み合わせの全てに対して回路並列化の効果を評価するには長時間を要する。
そこで、回路並列化判定部２０４は、クリティカルパスを中心にして、効率的に速度改善ができる箇所や消費電力が削減できる箇所を抽出する。
回路並列化判定部２０４の動作の詳細は、後述する。
なお、回路並列化判定部２０４は、前述の回路並列化可否解析部２０３とともに、評価部の例に相当する。
【００４１】
並列回路生成部２０５は、回路並列化判定部２０４により選択された箇所（コードブロック）の並列化を実施する。
つまり、並列回路生成部２０５は、回路並列化判定部２０４により選択されたコードブロックに対応するデータパスで構成される回路を並列化する。
回路並列化前後で、外から見たときの機能を同一にするには、並列化に付随する入出力回路も必要となる。
そこで、並列回路生成部２０５は、対象回路の並列化とそれに付随する入出力回路を自動的に生成する機能も有する。
【００４２】
並列回路生成部２０５が、並列化対象となる回路及び付随する入出力回路も自動生成することで、設計者に並列化対象となる回路及び入出力回路を再設計させる必要がなく、設計開発の短期化が可能となる。
また以下に示す通り、生成される回路は高位言語でも可能となる。
そのため、高速なシミュレーションも可能である。
【００４３】
並列回路生成部２０５による回路の生成方法について述べる。
並列回路生成部２０５は、並列化可能領域記憶部３０５から、回路並列化判定部２０４により選択された並列化の対象範囲の入力信号と出力信号を抽出し、スケジューリング結果・ＲＴＬ記憶部３０１にある信号と対応させる。
【００４４】
ここで、入出力制御回路はあらかじめテンプレートとなる高位言語を用意しておき、並列回路生成部２０５は、並列化の対象となる回路の入力信号毎に入力制御回路を、出力信号毎に出力制御回路を生成する。
テンプレートの入力制御回路は、並列化対象回路のクロックと、そのクロックの２倍の周期をもつクロックと、並列化対象回路と同一のリセット信号と、１つのデータ入力信号と、２つのデータ出力信号と、その２つのデータ出力信号が有意であることを示す２つのイネーブル信号を持つ。
この入力制御回路は、データ入力信号を奇数クロックと偶数クロックで交互にイネーブル付きで出力する機能を有する。
データ出力信号とイネーブル信号は、上記２倍の周期で出力される。
同様に、テンプレートの出力制御回路は、並列化対象回路のクロックと、そのクロックの２倍の周期をもつクロックと、並列化対象回路と同一のリセット信号と、２つのデータ入力信号と、そのデータ入力信号が有意であることを示すイネーブル信号と、１つのデータ出力信号を持つ。
この出力制御回路は、入力信号のイネーブルが有意なものを出力する機能を持つ。
データ出力信号は元のクロック周期で出力される。
また、上記において、もし並列化対象回路の入出力信号にイネーブルがついていた場合は、出力制御回路においてもイネーブル付きでデータ出力信号を生成する。
【００４５】
簡単のため、並列化対象回路の入力信号がａ、出力信号がｅの場合の生成される回路イメージを図１３に示す。
また、図１３の回路の動作を示すタイミングチャートを図１４に示す。
図１３及び図１４において、複製回路１及び複製回路２は、並列化された回路である。
ａ＿ｅｖｅｎは偶数クロックでの入力制御回路からのデータ出力信号であり、ａ＿ｏｄｄは奇数クロックでの入力制御回路からのデータ出力信号である。
ｉｅｎ＿ｅｖｅｎは偶数クロックでの入力制御回路からのイネーブル信号であり、ｉｅｎ＿ｏｄｄは奇数クロックでの入力制御回路からのイネーブル信号である。
ｅ＿ｅｖｅｎは偶数クロックでの出力制御回路へのデータ入力信号であり、ｅ＿ｏｄｄは奇数クロックでの出力制御回路へのデータ入力信号である。
ｏｅｎ＿ｅｖｅｎは偶数クロックでの出力制御回路へのイネーブル信号であり、ｏｅｎ＿ｏｄｄは奇数クロックでの出力制御回路へのイネーブル信号である。
ｅは出力制御回路からのデータ出力信号であり、ｏ＿ｅｎは出力制御回路からのイネーブル信号である。
ｃｌｋ１はデフォルトのクロック信号であり、ｃｌｋ２はｃｌｋ１の２倍の周期のクロック信号である。
【００４６】
また、並列回路生成部２０５は、並列化可能領域記憶部３０５から抽出した入力信号と出力信号から、上記のとおり入出力回路の高位言語を自動で生成し、高位合成を行う。
このときスケジューリング結果が得られるので、並列回路生成部２０５は、このスケジューリング結果と、前記抽出した並列化のスケジューリング結果とその複製を１つ生成し、上記全てを結合したスケジューリングを生成し、高位合成を行う。
これにより、自動的に並列化した回路とそれに付随する入出力制御回路が自動生成される。
自動生成された上記全ての回路は、並列化回路コード記憶部３０６に書き込まれる。
【００４７】
また、上記では生成されるのはＲＴＬだけだが、高位言語で出力する方法もある。
一般にＲＴＬより高位言語のほうがシミュレーションが高速なため、高位言語で出力することでシミュレーションの高速化が可能となる。
【００４８】
高位言語で出力するためには、並列回路生成部２０５は、まず並列化の対象となった範囲を動作記述コードから抜き出す。
次に、並列回路生成部２０５は、抜き出したコードを関数化、あるいはモジュール化する。
その後、並列回路生成部２０５は、関数化、モジュール化された前記コードから入出力信号を抽出し、前記テンプレートとなる高位言語で記述された入出力制御回路を自動生成する。
その後、並列回路生成部２０５は、並列化対象となるコードと入出力制御コードを接続する。
【００４９】
なお、本実施の形態では、周波数を１／２にし、回路を２並列化しているが、周波数を１／Ｎ（Ｎは３以上の整数）、回路をＮ並列に置き換えてもよい。
【００５０】
次に、本実施の形態に係る半導体設計支援装置１０による速度改善例と消費電力改善例を説明する。
速度改善モードか消費電力改善モードかは、設計者がモード指定部１０５を介して指定する。
また、以降の説明で用いる動作記述コードのサンプルプログラムコードを図２に示す。
このサンプルプログラムコードは、説明に不要な箇所のコードは除いているので、不完全であることに注意する。
また、このサンプルプログラムコードは、Ｃ言語で記述されているが、他の言語で記述されていてもよい。
図５において、破線で区切った範囲が、一塊の記述であり、コードブロックに相当する。
【００５１】
まず、速度改善を行うための動作例を示す。
図６に、速度改善モードでの半導体設計支援装置１０の動作フローを示す。
【００５２】
ステップ１０１：高位合成
高位合成部２０１が、高位言語の動作記述コード（図５）を高位合成する。
そして、高位合成部２０１は、生成したスケジューリング結果とＲＴＬをスケジューリング結果・ＲＴＬ記憶部３０１に書き込む。
図４は、生成されたＲＴＬの一部を示す。
【００５３】
ステップ１０２：クリティカルパス解析
タイミング解析部２０２が、高位合成部２０１によって得られたスケジューリング結果、あるいは、生成されたＲＴＬより静的タイミング解析された情報から、スラックを算出し、遅延情報テーブルを生成し、また、クリティカルパス及びクリティカルコードブロックの抽出を行う。
タイミング解析部２０２は、遅延情報テーブルを遅延情報記憶部３０２に書込み、クリティカルパス情報をクリティカルパス情報記憶部３０４に書き込む。
図４の回路に対して生成された遅延情報テーブルを図５に示す。
図４の例では、クリティカルパスに対応する記述が図２の「ｄ＝ａ＊ｂ＋ｃ；」（６行目）であると仮定する。
「ｄ＝ａ＊ｂ＋ｃ；」（６行目）は、５行目〜９行目で構成されるコードブロックに含まれており、タイミング解析部２０２は、５行目〜９行目で構成されるコードブロックをクリティカルコードブロックとして抽出する。
後述するように、回路並列化判定部２０４は、このクリティカルコードブロックを中心として、動作記述コード上で評価対象範囲を設定する。
評価対象範囲とは、速度改善の評価の対象にするコードブロックの範囲である。
【００５４】
ステップ１０３：回路並列化可否解析
回路並列化可否解析部２０３は、クリティカルパス情報記憶部３０４のクリティカルパス情報を入力し、クリティカルコードブロックを中心として回路並列化が可能な並列化可能領域（並列化候補コードブロック）を抽出する。
回路並列化可否解析部２０３は、まず、クリティカルコードブロックよりも後のコードブロックから、並列化対象外コードブロック及び前記並列化対象外コードブロックに後続するコードブロックを動作記述コードから除外する。
そして、回路並列化可否解析部２０３は、除外後の動作記述コードを、並列化可能領域とする。
図２のサンプルプログラムコードでは、「ｘ＝ｘ＋ｆ；」及び「ｃｏｕｎｔｅｒ＋＋」が先行するコードブロックと依存関係があるため、「ｘ＝ｘ＋ｆ；」及び「ｉｆ（ｘ＞０）ｃｏｕｎｔｅｒ＋＋」が並列化対象外コードブロックとなり、除外される。
図２のサンプルプログラムコードでは、「ｘ＝ｘ＋ｆ；」及び「ｉｆ（ｘ＞０）ｃｏｕｎｔｅｒ＋＋」に後続するコードブロックが存在していないが、後続するコードブロックが存在している場合には、後続するコードブロックも除外される。
回路並列化可否解析部２０３は、並列化可能領域を、並列化可能領域記憶部３０５に書き込む。
【００５５】
ステップ１０４：タイミング解析
タイミング解析部２０２は、並列化可能領域記憶部３０５から並列化可能領域を入力し、並列化可能領域に対して、ステップ１０２と同様にして、スラックを算出し、遅延情報テーブルを生成する。
この段階で生成される遅延情報テーブルも図５に示すものと同様である。
並列化可能領域記憶部３０５は、生成した遅延情報テーブルを遅延情報記憶部３０２に書き込む。
【００５６】
ステップ１０５：回路並列化判定
ステップ１０５−１：
まず、タイミング解析部２０２が、ステップ１０４で生成した遅延情報テーブルを元に、横軸がスラック、縦軸がデータパス個数のヒストグラムを作成し、ヒストグラム記憶部３０３に書き込む。
また、ここで基準となるスラックの値（閾値）を設計者が設定する。
通常、余裕を見て＋０．２などの値が設定される。
この段階で生成されるヒストグラム例を図６に示す。
図６のヒストグラムは、図５の遅延情報テーブルから生成されたものである。
図６において、ヒストグラムの上部に記述されている値は、データパスの個数である。
ステップ１０５−２：
次に、図１１に示すフローに従って、並列化可能範囲の中から並列化の対象とする箇所が選択される。
以下にて、図１１の各ステップを説明する。
【００５７】
ステップ１０５１：
回路並列化判定部２０４が、並列化可能範囲において、評価対象となるコードブロックの範囲である評価対象範囲を設定する。
回路並列化判定部２０４は、ステップ１０５１の繰り返しの度に、クリティカルコードブロックを中心にして評価対象範囲の広狭を変化させて、複数の評価対象範囲を設定する。
具体的には、回路並列化判定部２０４は、ステップ１０５１の繰り返しごとに、クリティカルコードブロックを中心にして徐々に範囲を狭めていって複数の評価対象範囲を設定する。
例えば、図２の例において、並列化可能範囲で、クリティカルコードブロックを中心とする最も広い評価対象範囲は、１行目〜１５行目である。
このため、回路並列化判定部２０４は、最初に、１行目〜１５行目を評価対象範囲として設定する。
次のステップ１０５１では、例えば、クリティカルコードブロックの前方で、クリティカルコードブロックから最も離れたコードブロックを除外した範囲を評価対象範囲として設定する。
前方でクリティカルコードブロックから最も離れている行は、１行目である。
図２の例では、１行目〜４行目で１つのコードブロックを形成するので、回路並列化判定部２０４は、１行目〜４行目のコードブロックを除外して、５行目〜１５行目のコードブロックを評価対象範囲として設定する。
次のステップ１０５１では、例えば、クリティカルコードブロックの後方で、クリティカルコードブロックから最も離れたコードブロックを除外した範囲を評価対象範囲として設定する。
後方でクリティカルコードブロックから最も離れている行は、１５行目である。
図２の例では、１１行目〜１５行目で１つのコードブロックを形成するので、回路並列化判定部２０４は、１１行目〜１５行目のコードブロックを除外して、１行目〜１０行目のコードブロックを評価対象範囲として設定する。
このようにして、回路並列化判定部２０４は、クリティカルコードブロックを中心にして並列化可能範囲内の全ての組合せが含まれるように、複数の評価対象範囲を設定する。
【００５８】
ステップ１０５２：
タイミング解析部２０２が、評価対象範囲でのスラックを計算する。
スラックの計算は、ステップ１０４のものと同じである。
【００５９】
ステップ１０５３：
次に、タイミング解析部２０２が、基準値以下のスラックのデータパスの個数（ヒストグラム上の面積）を計数する。
基準値は、ステップ１０５−１で指定された基準値（＋０．２）である。
【００６０】
なお、１行目〜１５行目についてのスラックは既にステップ１０４で計算され、また、基準値以下のスラックのデータパスの個数もステップ１０５−１で計数されているので、１行目〜１５行目の評価対象範囲については、ステップ１０５２及びステップ１０５３は省略される。
【００６１】
ステップ１０５４：
次に、タイミング解析部２０２は、ステップ１０５３での計数結果をヒストグラム記憶部３０３に書き込む。
【００６２】
ステップ１０５５：
回路並列化判定部２０４は、並列化可能領域で設定可能な全ての評価対象範囲に対してステップ１０５２〜１０５４の処理を行ったかを判断し、未処理の評価対象範囲があれば、ステップ１０５１以降の処理を繰り返す。
一方、全ての評価対象範囲に対する処理が完了していれば、ステップ１０５６に進む。
【００６３】
ステップ１０５６：
回路並列化判定部２０４は、複数の評価対象範囲の中から、並列化を行う評価対象範囲を選択する。
具体的には、回路並列化判定部２０４は、ステップ１０５３で計数されたデータパスの個数が最も大きい評価対象範囲を選択する。
また、最も大きい個数を持つ評価対象範囲が複数ある場合は、回路並列化後の動作記述コードのコードサイズが最も小さいものを選択する。
最も小さいコードサイズのものを選択するのは、回路規模の増加を抑える目的である。
例えば、評価対象範囲が図２の１行目〜１５行目である場合は、基準値＋０．２以下となる個数は、図５及び図６に示すように、５個である。
また、評価対象範囲が図２の５行目〜１５行目である場合は、回路構成は図７のようになり、基準値＋０．２以下となる個数は、図８及び図９に示すように、５個である。
また、評価対象範囲が図２の１行目〜１０行目である場合は、回路構成図、遅延情報テーブル及びヒストグラムの図示は省略するが、基準値＋０．２以下となる個数は、５個である。
これら以外の評価対象範囲の場合は、基準値＋０．２以下となる個数は、４個以下である。
そして、個数が最も大きく、かつ、コードサイズが最も小さいのは、図２の１行目〜１０行目の評価対象範囲であり、回路並列化判定部２０４は、この評価対象範囲を選択する。
なお、図２の１行目〜１０行目の評価対象範囲の回路構成は、図１０のようになる。
【００６４】
ステップ１０６：並列回路生成（図３）
並列回路生成部２０５が、ステップ１０５において選択された評価対象範囲のコードブロックに対応する回路（図１０）を並列化する。
【００６５】
なお、ここで、ステップ１０５で並列化された回路の規模が大きい場合は、ステップ１０５に戻り、次にスラックの面積が大きい評価対象範囲を選択し、許容できる回路規模内において、最適な改善効果があるものを選択してもよい。
【００６６】
次に消費電力の改善を行う例を説明する。
以下では、図２のサンプルプログラムコードを用いて説明を行う。
消費電力改善モードの際の半導体設計支援装置１０の動作フローを図１２に示す。
【００６７】
図１２において、ステップ１０１〜１０４は図６と同一である。
【００６８】
ステップ２０１：再合成
設計対象回路がデフォルトの動作周波数から低減された低減動作周波数（例えば、１／２の周波数）で動作するとの設定で、高位合成部２０１が高位合成を再度行い、ＲＴＬを得る。
再度合成するのは、周波数が低減されたことで、回路規模が削減される、つまりフリップフロップ（ＦＦ）が削減され、消費電力が下がる可能性があるためである。
なお、
【００６９】
ステップ２０２：並列回路生成
並列回路生成部２０５が、図１３に示すように、複製回路、入力制御回路及び出力制御回路を生成し、これらを上記再合成したＲＴＬとつなげ、回路規模を得る。
【００７０】
ステップ２０３：回路並列化判定
次に、回路並列化判定部２０４が、並列化可能領域においてクリティカルコードブロックを中心に広狭を変化させて評価対象範囲を設定する。
これは速度改善モードと同様の処理である。
【００７１】
ステップ２０１〜２０３を、全ての評価対象範囲について処理した後、回路並列化判定部２０４は、回路並列化後の設計対象回路の回路規模が最も小さくなる評価対象範囲を選択する。
このように、消費電力改善モードでは、回路並列化判定部２０４は、評価対象範囲のコードブロックに対応するデータパスで構成される回路が並列化された場合の設計対象回路の回路規模を評価して、評価対象範囲を選択する。
【００７２】
なお、上記では、ステップ２０１において、設計対象回路が低減動作周波数で動作する設定で高位合成を行うことで、設計対象回路が低減動作周波数する場合の回路規模を評価する例を説明した。
しかしながら、設計対象回路が低減動作周波数で動作すると設計対象回路に要求される条件が満たされない場合は、ステップ２０１を省略し、設計対象回路がデフォルトの動作周波数で動作する場合の設計対象回路の回路規模を評価するようにしてもよい。
【００７３】
また、速度改善モード及び消費電力改善モードのいずれにおいても、性能表示部１０６が、並列化対象箇所とその性能である速度及び回路規模を、設計者にて通知する。
【００７４】
また、本実施の形態では、回路並列化判定部２０４が解析を自動的に行い、並列化する範囲の決定を行っているが、回路並列化可否解析部２０３、並列回路生成部２０５を用いて、設計者が並列化する範囲を決めることも可能である。
【００７５】
以上、本実施の形態に係る半導体設計支援装置によれば、設計者の能力に依存することなく低消費電力なハードウェア構成のＲＴＬを短時間で得るという効果がある。
また、要求となる動作周波数に到達しない場合でも、設計者が問題個所の特定と改善を行うことなく、自動的に速度改善が短時間に行えるといった効果がある。
【００７６】
以上、本実施の形態では、
回路の動作を記述した動作記述を入力として、高位合成処理を行い、ＨＤＬ記述を出力する半導体設計支援装置であって、
前記高位合成された結果であるスケジューリング結果、あるいはＲＴＬから、遅延情報を取得し、前記動作記述と遅延情報を関連付け、また遅延情報のヒストグラムを作成するタイミング解析手段と、
並列化回路と並列化に必要な入出力回路を自動生成する並列回路生成手段と、
並列化が可能な領域を前記動作記述から抽出する回路並列化可否解析手段と、
複数の並列化可能領域から、前記ヒストグラムと前記並列化回路と入出力回路の回路規模を取得し、
その中から、速度を満足する回路、あるいは周波数を改善できる回路を抽出する手段を有する半導体設計支援装置を説明した。
【００７７】
最後に、本実施の形態に示した半導体設計支援装置１０のハードウェア構成例を図１５を参照して説明する。
半導体設計支援装置１０はコンピュータであり、半導体設計支援装置１０の各要素をプログラムで実現することができる。
半導体設計支援装置１０のハードウェア構成としては、バスに、演算装置９０１、外部記憶装置９０２、主記憶装置９０３、通信装置９０４、入出力装置９０５が接続されている。
【００７８】
演算装置９０１は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
外部記憶装置９０２は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ、ハードディスク装置である。
主記憶装置９０３は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
記憶部３００は、主記憶装置９０３又は外部記憶装置９０２により実現される。
通信装置９０４は、例えば、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入出力装置９０５は、例えばマウス、キーボード、ディスプレイ装置等である。
【００７９】
プログラムは、通常は外部記憶装置９０２に記憶されており、主記憶装置９０３にロードされた状態で、順次演算装置９０１に読み込まれ、実行される。
プログラムは、図１に示す「〜部」（記憶部３００内の要素を除く、以下も同様）として説明している機能を実現するプログラムである。
更に、外部記憶装置９０２にはオペレーティングシステム（ＯＳ）も記憶されており、ＯＳの少なくとも一部が主記憶装置９０３にロードされ、演算装置９０１はＯＳを実行しながら、図１に示す「〜部」の機能を実現するプログラムを実行する。
また、本実施の形態の説明において、「〜の判断」、「〜の判定」、「〜の抽出」、「〜の設定」、「〜の選択」、「〜の算出」、「〜の計数」、「〜の解析」、「〜の評価」、「〜の生成」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置９０３にファイルとして記憶されている。
また、暗号鍵・復号鍵や乱数値やパラメータが、主記憶装置９０３にファイルとして記憶されてもよい。
【００８０】
なお、図１５の構成は、あくまでも半導体設計支援装置１０のハードウェア構成の一例を示すものであり、半導体設計支援装置１０のハードウェア構成は図１５に記載の構成に限らず、他の構成であってもよい。
【符号の説明】
【００８１】
１０  半導体設計支援装置、１００  入出力部、１０１  高位言語表示部、１０２  並列化可能領域表示部、１０３  並列化指示部、１０４  遅延情報表示部、１０５  モード指定部、１０６  性能表示部、２００  データ処理部、２０１  高位合成部、２０２  タイミング解析部、２０３  回路並列化可否解析部、２０４  回路並列化判定部、２０５  並列回路生成部、３００  記憶部、３０１  スケジューリング結果・ＲＴＬ記憶部、３０２  遅延情報記憶部、３０３  ヒストグラム記憶部、３０４  クリティカルパス情報記憶部、３０５  並列化可能領域記憶部、３０６  並列化回路コード記憶部。
【図１】
2015095130.tif 000003
【図２】
2015095130.tif 000004
【図３】
2015095130.tif 000005
【図４】
2015095130.tif 000006
【図５】
2015095130.tif 000007
【図６】
2015095130.tif 000008
【図７】
2015095130.tif 000009
【図８】
2015095130.tif 000010
【図９】
2015095130.tif 000011
【図１０】
2015095130.tif 000012
【図１１】
2015095130.tif 000013
【図１２】
2015095130.tif 000014
【図１３】
2015095130.tif 000015
【図１４】
2015095130.tif 000016
【図１５】
2015095130.tif 000017
【図１６】
2015095130.tif 000018