(57)【要約】【課題】半導体集積回路等の回路設計において、後工程からの手戻りが少なく開発全体を効率化（時間短縮）できるようにする。【解決手段】高位合成処理部１１は、動作記述ファイル１の高位合成を行う。合成結果解析部１２は、設計対象回路のレイアウト設計に関する条件であるレイアウト設計条件を取得し、また、高位合成結果４とレイアウト設計条件とを照合し、高位合成結果４に含まれるいずれかの要素がレイアウト設計条件と異なる場合に、動作記述の階層構造の変更方法を決定する。階層変更部１３は、合成結果解析部１２により決定された変更方法に従って、動作記述の階層構造を変更する。【選択図】図１
2016014950.tif 000002
【特許請求の範囲】
【請求項１】
設計対象回路の動作が階層構造で記述されている動作記述の高位合成を行う高位合成処理部と、
前記設計対象回路のレイアウト設計に関する条件であるレイアウト設計条件を取得するレイアウト設計条件取得部と、
前記高位合成処理部による高位合成結果と前記レイアウト設計条件とを照合し、前記高位合成結果に含まれるいずれかの要素が前記レイアウト設計条件と異なる場合に、前記動作記述の階層構造の変更方法を決定する変更方法決定部と、
前記変更方法決定部により決定された変更方法に従って、前記動作記述の階層構造を変更する階層変更部とを有することを特徴とする回路設計支援装置。
【請求項２】
前記変更方法決定部は、
前記レイアウト設計条件と異なる要素を抽出し、抽出した要素に対応させて、前記動作記述の階層構造の変更方法を決定することを特徴とする請求項１に記載の回路設計支援装置。
【請求項３】
前記高位合成処理部は、
前記階層変更部により階層構造が変更された後の動作記述の高位合成を行い、
前記変更方法決定部は、
前記高位合成処理部による高位合成結果と前記レイアウト設計条件とを照合し、前記高位合成結果に含まれるいずれかの要素が前記レイアウト設計条件と異なる場合に、改めて、前記動作記述の階層構造の変更方法を決定し、
前記階層変更部は、
改めて、前記変更方法決定部により決定された変更方法に従って、前記動作記述の階層構造を変更することを特徴とする請求項１に記載の回路設計支援装置。
【請求項４】
前記レイアウト設計条件取得部は、
レイアウト設計条件として、ゲート数についての条件及びポート数についての条件の少なくともいずれかを取得することを特徴とする請求項１に記載の回路設計支援装置。
【請求項５】
設計対象回路の動作が階層構造で記述されている動作記述の高位合成を行う高位合成処理部と、
前記高位合成処理部による高位合成結果に含まれるいずれかの要素にタイミング違反が発生している場合に、前記動作記述の階層構造の変更方法を決定する変更方法決定部と、
前記変更方法決定部により決定された変更方法に従って、前記動作記述の階層構造を変更する階層変更部とを有することを特徴とする回路設計支援装置。
【請求項６】
前記変更方法決定部は、
前記タイミング違反が発生している要素を抽出し、抽出した要素に対応させて、前記動作記述の階層構造の変更方法を決定することを特徴とする請求項５に記載の回路設計支援装置。
【請求項７】
前記高位合成処理部は、
前記階層変更部により階層構造が変更された後の動作記述の高位合成を行い、
前記変更方法決定部は、
前記高位合成処理部による高位合成結果に含まれるいずれかの要素にタイミング違反が発生している場合に、改めて、前記動作記述の階層構造の変更方法を決定し、
前記階層変更部は、
改めて、前記変更方法決定部により決定された変更方法に従って、前記動作記述の階層構造を変更することを特徴とする請求項５に記載の回路設計支援装置。
【請求項８】
回路設計支援を行うコンピュータに、
設計対象回路の動作が階層構造で記述されている動作記述の高位合成を行う高位合成処理と、
前記設計対象回路のレイアウト設計に関する条件であるレイアウト設計条件を取得するレイアウト設計条件取得処理と、
前記高位合成処理による高位合成結果と前記レイアウト設計条件とを照合し、前記高位合成結果に含まれるいずれかの要素が前記レイアウト設計条件と異なる場合に、前記動作記述の階層構造の変更方法を決定する変更方法決定処理と、
前記変更方法決定処理により決定された変更方法に従って、前記動作記述の階層構造を変更する階層変更処理とを実行させることを特徴とするプログラム。
【請求項９】
回路設計支援を行うコンピュータに、
設計対象回路の動作が階層構造で記述されている動作記述の高位合成を行う高位合成処理と、
前記高位合成処理による高位合成結果に含まれるいずれかの要素にタイミング違反が発生している場合に、前記動作記述の階層構造の変更方法を決定する変更方法決定処理と、
前記変更方法決定処理により決定された変更方法に従って、前記動作記述の階層構造を変更する階層変更処理とを実行させることを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路等の回路設計を支援する技術に関する。
【背景技術】
【０００２】
近年のＬＳＩの微細化に伴う回路規模の増大により、ＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）を手書き設計するには非常に多くの設計期間が必要となる。
これに対して、近年ではＲＴＬよりも抽象度の高い動作記述からＲＴＬを自動的に生成する高位合成（あるいは、動作合成とも呼ばれる）技術が提唱されており、これを実現する高位合成ツールも市販されている。
従来の設計手法においては動作記述（例えば、Ｃ＋＋言語やＳｙｓｔｅｍＣ言語）において（もしくはＲＴＬ設計においても）、階層構造（ブロック分割／統合等）については、機能設計者自身が検討し、どちらかというと機能単位で決めていた。
しかし、この方法では、昨今のプロセス微細化や大規模ＬＳＩ化に伴い後工程のレイアウト設計で問題（レイアウト面積増大、配線混雑、タイミング違反等）が出ることが多くなってきており、上流設計（動作記述設計やＲＴＬ設計）まで手戻りが入ることが多くなった。
そこで、ＲＴＬ設計においても、上記のような理由でレイアウトを考慮して階層構造を決めることが多くなってきた。
しかし、ＲＴＬ設計で階層を変更するのは作業が複雑、かつ、面倒であり、設計時の効率が悪いという問題点があった。
【０００３】
階層構造を変更するにはＲＴＬ設計よりも動作記述の方が容易なため、動作記述における階層構造の変更についての提案もなされている（例えば、特許文献１参照）。
また、レイアウト設計での問題点の一つであるタイミング違反（遅延違反）については、実際のレイアウト結果を基にした合成制約を高位合成時に与えることによって、手戻りをなくすという方法も提案されている（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】国際公開ＷＯ２０１１／１５５６２２号公報
【特許文献２】特開２００４−２４０５３０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１に開示される従来の方法では、高位合成での階層構造の変更について記載しているが、性能を評価し最も性能が出る階層構造を決めるのが目的であり、レイアウト設計での問題については触れられていない。
また、特許文献２に開示される従来の方法では、レイアウト設計での問題点の一つであるタイミング違反があった場合に、その実際のレイアウト結果（配線遅延）を抽出して高位合成にフィードバックする手段を設けることで回路を合成するまでの時間を短縮することが記載されているが、レイアウトでのその他の問題（レイアウト面積増大、配線混雑等）については触れられていない。
また、ＬＳＩ開発工程の後の方であるレイアウト工程からフィードバックするため、設計のフィードバックを抽出するのに時間がかかるという課題があった。
【０００６】
この発明は上記のような課題を解決することを主な目的としており、半導体集積回路等の回路設計において、後工程からの手戻りが少なく開発全体を効率化（時間短縮）できるようにすることを目的とする。
【課題を解決するための手段】
【０００７】
本発明に係る回路設計支援装置は、
設計対象回路の動作が階層構造で記述されている動作記述の高位合成を行う高位合成処理部と、
前記設計対象回路のレイアウト設計に関する条件であるレイアウト設計条件を取得するレイアウト設計条件取得部と、
前記高位合成処理部による高位合成結果と前記レイアウト設計条件とを照合し、前記高位合成結果に含まれるいずれかの要素が前記レイアウト設計条件と異なる場合に、前記動作記述の階層構造の変更方法を決定する変更方法決定部と、
前記変更方法決定部により決定された変更方法に従って、前記動作記述の階層構造を変更する階層変更部とを有することを特徴とする。
【発明の効果】
【０００８】
本発明によれば、レイアウト設計を考慮した階層構造の設計が可能となり、後工程からの手戻りが少なく開発全体を効率化（時間短縮）することができる。
【図面の簡単な説明】
【０００９】
【図１】実施の形態１に係る半導体設計支援装置の構成例を示す図。
【図２】実施の形態１に係る動作記述ファイルの例を示す図。
【図３】実施の形態１に係るＭｏｄｕｌｅＡの動作記述の例を示す図。
【図４】実施の形態１に係るＭｏｄｕｌｅＣの動作記述の例を示す図。
【図５】実施の形態１に係る半導体設計支援装置の動作例を示すフローチャート図。
【図６】実施の形態１に係る階層構造の例を示す図。
【図７】実施の形態１に係るモジュールの合成結果を示す図。
【図８】実施の形態１に係るＭｏｄｕｌｅＡの構成例を示す図。
【図９】実施の形態１に係るＭｏｄｕｌｅＡの合成結果を示す図。
【図１０】実施の形態１に係る変更後の動作記述の例を示す図。
【図１１】実施の形態１に係る変更後の動作記述の例を示す図。
【図１２】実施の形態１に係る変更後の動作記述の例を示す図。
【図１３】実施の形態１に係る変更後の階層構造の例を示す図。
【図１４】実施の形態１に係るＭｏｄｕｌｅＣの構成例を示す図。
【図１５】実施の形態１に係るＭｏｄｕｌｅＡ及びＭｏｄｕｌｅＣの合成結果を示す図。
【図１６】実施の形態１に係るＭｏｄｕｌｅ＿ａ、Ｍｏｄｕｌｅ＿ｃｘ及びＭｏｄｕｌｅ＿ｃの合成結果を示す図。
【図１７】実施の形態１に係る変更後のモジュールのポート数を示す図。
【図１８】実施の形態１に係る変更後の階層構造の例を示す図。
【図１９】実施の形態２に係る半導体設計支援装置の構成例を示す図。
【図２０】実施の形態２に係る半導体設計支援装置の動作例を示すフローチャート図。
【図２１】実施の形態１及び２に係る半導体設計支援装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【００１０】
実施の形態１．
本実施の形態及び以降の実施の形態では、高位合成結果を基にしたデータ解析手段を備え、その解析結果を基に高位合成で動作記述の階層を変更する手段を備えることで、レイアウト設計を考慮した階層構造の動作記述やＲＴＬを容易に設計でき、後工程からの手戻りが少なく開発全体を効率化（時間短縮）できる構成を説明する。
【００１１】
図１は、実施の形態１による半導体設計支援装置１０を示す構成図である。
半導体設計支援装置１０は、回路設計支援装置の例に相当する。
【００１２】
図１において、動作記述ファイル１は、抽象度の高いコンピュータプログラムであり、例えば動作を記述したアルゴリズムＣ言語やＣ＋＋言語やＳｙｓｔｅｍＣ言語のファイルである。
制約条件２は、高位合成を実行するための制約条件であり、半導体設計支援装置１０に入力される。
この出力であるＲＴＬ３は、高位合成処理部１１で生成されるＲＴＬそのものであり、高位合成結果４は、高位合成処理部１１で実行された高位合成の結果であり、具体的にはゲート数やポート数、タイミング情報等が表示される結果レポートである。
【００１３】
半導体設計支援装置１０内の高位合成処理部１１は、動作記述ファイル１をＬＳＩ化するためのハードウェア専用言語ＲＴＬに変換するためのものであり、いわゆる市販されている高位合成ツールそのものと置き換えることも可能である。
【００１４】
次に、合成結果解析部１２は、高位合成結果４とレイアウト設計条件とを入力とし、これらの情報を基に、階層変更（ブロック分割／統合）の指針や情報を出力するものであり、その出力を基に、実際に階層を変更するのが、階層変更部１３である。
【００１５】
レイアウト設計条件は、設計対象の半導体集積回路のレイアウト設計に関する条件である。
合成結果解析部１２は、高位合成処理部１１による高位合成結果４とレイアウト設計条件とを取得し、高位合成結果４とレイアウト設計条件とを照合する。
高位合成結果４に含まれるいずれかの要素がレイアウト設計条件と異なる（レイアウト設計条件に合致しない）場合に、合成結果解析部１２は、レイアウト設計条件に合致しない要素に対応させて、動作記述の階層構造の変更方法を決定する。
そして、階層変更部１３は、合成結果解析部１２により決定された変更方法に従って、動作記述の階層構造を変更する。
合成結果解析部１２は、レイアウト設計条件取得部及び変更方法決定部の例に相当する。
【００１６】
図２は、図１中の動作記述ファイル１の一例を示す図であり、ＭｏｄｕｌｅＡ、ＭｏｄｕｌｅＢ、ＭｏｄｕｌｅＣという３つの階層（モジュール）が含まれた動作記述を示している。
すなわち、半導体設計支援装置１０が動作する前の設計対象の半導体集積回路の階層構造は３つに分けられていることがわかる。
図３にＭｏｄｕｌｅＡの動作記述、図４にＭｏｄｕｌｅＣの動作記述を示す（ＭｏｄｕｌｅＢについては省略）。
なお、図２、図３、図４に示す記述は、Ｃ＋＋言語で記述されたプログラムを説明するために必要な一部の記述のみを抜き出したもので、動作記述としては不完全なプログラムである。
本説明ではＣ＋＋言語で説明するがその他の言語でもよい。
【００１７】
次に、動作について説明する。
図５は、半導体設計支援装置１０の動作を示すフローチャートであり、この図に沿って説明する。
【００１８】
先ず、階層構造を最適化したい動作記述ファイル１と高位合成の制約条件ファイル２を半導体設計支援装置１０に入力する（ステップＳ１０）。
ここでは、動作記述ファイル１には、図２で示したＣ＋＋言語のコードを入力とする。
また、制約条件ファイル２としては、関数単位でＲＴＬのモジュールになるような条件を与えるものとする。
【００１９】
次に、高位合成処理部１１で制約条件ファイル２に従い、動作記述ファイル１をＲＴＬに変換し、ＲＴＬ３とその高位合成結果４を出力する（ステップＳ１１）。
図２で示すコードを入力することで、図６に示す階層を持つＲＴＬが生成される。
また、得られた合成結果から、図７に示す合成結果を得るとする。
ここまでは通常の高位合成作業である。
【００２０】
次に、出力された高位合成結果４の情報（ゲート数、ポート数等）とレイアウト設計条件とにより、合成結果解析部１２において解析を行う（ステップＳ１２）。
例えば、最近ではレイアウト制約としてレイアウト単位の階層（ブロック）のゲート数やポート数に制約がある場合もある。
一例として、ゲート数が１Ｍゲート以内というレイアウト設計条件があった場合、全てのモジュールのゲート数が１Ｍよりも小さい場合は階層を変更する必要が無いため、ステップＳ１２に戻り次の階層の解析を行う。
もし１Ｍゲートよりも大きいゲート数のモジュールが存在する場合は階層を分割する必要があるため、ステップＳ１４の階層変更に進む。
【００２１】
ステップＳ１４では、合成結果解析部１２において階層変更箇所の抽出を行う。
抽出にあたり、対象モジュール内の下位階層モジュールの合成結果を解析する。
本実施の形態の例では、回路規模を基準としているため、合成結果解析部１２は、回路規模が最も大きいモジュールを抽出する。
図８にＭｏｄｕｌｅＡの内部モジュールのモジュール構成図、図９にそれらの合成結果を示す。
この例では、ＦｕｎｃＣが最も回路規模が大きいため、ＦｕｎｃＣが抽出される。
合成結果解析部１２は、階層構造の変更方法として、ＦｕｎｃＣを親関数ＭｏｄｕｌｅＡから抜き出し、その他の関数ＦｕｎｃＡ、ＦｕｎｃＢは親関数ＭｏｄｕｌｅＡに残すという方法を決定する。
【００２２】
次に、ステップＳ１５で、階層変更部１３が、合成結果解析部１２が決定した変更方法に従って階層変更を行う。
階層変更では、上記抽出された関数を親関数（親階層）から分離し、新たな関数（階層）を生成する。
本例では、ＦｕｎｃＣを親関数ＭｏｄｕｌｅＡから抜き出し、その他の関数ＦｕｎｃＡ、ＦｕｎｃＢは親関数ＭｏｄｕｌｅＡに残す。
より具体的には、階層変更部１３は、動作記述ファイル１のコードを以下のように変更する。
抽出された関数ＦｕｎｃＣの親関数となるＭｏｄｕｌｅＡから、上記抽出された関数ＦｕｎｃＣをコード上分離し、新たな関数ＭｏｄｕｌｅＡ＿ａを生成し（図１１）、残ったその他の関数をまとめた関数Ｍｏｄｕｌｅ＿Ａ＿ｂを生成し（図１２）、さらにそれらを接続するＭｏｄｕｌｅＡを再生成する（図１０）。
つまり、ＭｏｄｕｌｅＡ（図３）のコードがＭｏｄｕｌｅＡ＿ａ（図１１）とＭｏｄｕｌｅ＿Ａ＿ｂ（図１２）に分割されることになり、Ｔｏｐ階層（図２）は図１０になる。
【００２３】
次に、ステップＳ１６で、他に１Ｍゲートを超える階層（モジュール）が無いか確認し、あった場合は、ステップＳ１４に戻り同様のことを繰り返す。
無い場合は、ステップＳ１７に進み、階層変更された動作記述を再度高位合成し、１Ｍゲート以下になっていることを確認する。
１Ｍゲート以下になっていない場合は、同様の動作を繰り返す。
ここで得た結果のＲＴＬ階層を図１３に示す。
【００２４】
本例では、関数（階層）を分離する例を示しているが、関数（階層）を統合することも可能である。
例えば、ＭｏｄｕｌｅＡの下位の階層や関数等分割できる単位毎のゲート数をあらかじめ高位合成時に全て出力しておいて、その値より１Ｍゲート以下になるように関数（階層）を組み合わせてもよい。
さらに、本実施の形態では、コードを分割することを示したが、コードを変更せず、制約条件だけ変えて階層を変更してもよい。
【００２５】
また、上記の例では回路規模を基準としているが、ポート数を基準としてもよい。
例えばポート数が９００本以内というレイアウト設計条件の場合を説明する。
【００２６】
まず、Ｓ１１にて高位合成結果の一部としてポート数を得る。
次に、ステップＳ１３において、合成結果解析部１２は、ポート数のレイアウト設計条件を判断基準として基準を超える階層を特定する。
本実施の形態の例では、ＭｏｄｕｌｅＡにおいて、ポート数が１０００本となり、基準の９００本を超えるため、ＭｏｄｕｌｅＡについてステップＳ１４に移行する。
【００２７】
ステップＳ１４では、合成結果解析部１２が、下位階層（図１４）の合成結果（図１５）から、ＭｏｄｕｌｅＡに接続されるポート数が最も大きい関数を抽出する。
本例では、ポート数が９００本であるＦｕｎｃＣが抽出される（ＦｕｎｃＢとの接続１００本とＭｏｄｕｌｅＡとの接続８００本の合計９００本）。
さらに、合成結果解析部１２は、ＭｏｄｕｌｅＡを介してＦｕｎｃＣの接続先となるＭｏｄｕｌｅＣの合成結果を参照する。
ＭｏｄｕｌｅＣにおいて、ＭｏｄｕｌｅＣのＦｕｎｃＸが接続先となるため、合成結果解析部１２は、ＦｕｎｃＣとＦｕｎｃＸについて階層変更を行うことを決定する。
より具体的には、まずＦｕｎｃＸとＦｕｎｃＣを統合した関数Ｍｏｄｕｌｅ＿ｃｘを生成し、次に親関数ＭｏｄｕｌｅＡからＦｕｎｃＣを抜き出した関数Ｍｏｄｕｌｅ＿ａを生成し、また、親関数ＭｏｄｕｌｅＣからＦｕｎｃＸを抜き出した関数Ｍｏｄｕｌｅ＿ｃを生成することを決定する。
階層変更部１３は、合成結果解析部１２により決定された変更方法に従って、上記の手順にて階層構造を変更する。
【００２８】
以上の処理によって得られた各々のＦｕｎｃのポート数結果を図１６に示す。
また、図１７にＴｏｐのＭｏｄｕｌｅのポート数を示す。
このＴｏｐの結果から、ポート数が基準以下であれば終了する。
まだ、基準を満たさない場合は、基準を満たすまで関数統合を繰り返す。
この階層変更後、再度高位合成を行い、最終確認を行う。
得られた合成結果のＲＴＬ階層構造を図１８に示す。
【００２９】
さらに上記では、回路規模とポート数でそれぞれの基準の例を示したが、それらを組み合わせて、評価関数（例えば、ポート数からゲート数を割ったピンペア数等）を作成し判断してもよい。
【００３０】
また本実施の形態では、関数をベースに分離しているが、関数ではなく、コード中の任意の箇所を分割して、再度高位合成して同じことを繰り返し、回路規模等の条件に合う分割位置を決めてもよい。
【００３１】
以上のように、高位合成結果を基にしたデータ解析手段を備え、その解析結果を基に高位合成で動作記述の階層を変更する手段を備えることで、レイアウト設計を考慮した階層構造の動作記述やＲＴＬを容易に設計できるとともに、開発後期の下流設計（レイアウト設計等）からの手戻りが少なくなり開発全体を効率化（時間短縮）できる。
また、レイアウト設計を考慮した階層分割が出来るため、面積や消費電力の削減にも寄与することが可能となる。
【００３２】
実施の形態２．
実施の形態１では、階層毎の高位合成情報をそのまま用いて階層を変更するものであるが、実施の形態２では、設計ブロック全体のタイミング違反（遅延違反）情報に着目し、タイミング違反が発生している階層のみを分割する。
図１９は、このような場合の、実施の形態２による半導体設計支援装置２０を示す構成図である。
半導体設計支援装置２０は、回路設計支援装置の例に相当する。
【００３３】
図１９において、半導体設計支援装置２０、仮想配線モデル５、仮想配線モデル入力部２３、遅延違反解析部２２以外は、実施の形態１とまったく同じため説明を省略する。
【００３４】
半導体設計支援装置２０は、仮想配線モデル入力部２１により仮想配線モデル５を入力可能にした点と、高位合成結果４の遅延違反情報を解析する遅延違反解析部２２を設けた点以外は実施の形態１と同じである。
【００３５】
仮想配線モデル５は、ＲＴＬを論理合成する際によく使用されるもので、対象回路のゲート数やファンアウト数に応じて容量や遅延を定めたものであり、一般的には半導体のプロセス毎に存在するものである。
【００３６】
仮想配線モデル入力部２１は、仮想配線モデル５の情報を高位合成用に変換するものである。
【００３７】
遅延違反解析部２２は、高位合成結果４のタイミング違反情報を入力し、タイミング違反の解析を行い、タイミング違反が発生している要素を抽出し、抽出した要素に対応させて、動作記述の階層構造の変更方法を決定する。
遅延違反解析部２２は、変更方法決定部の例に相当する。
【００３８】
次に動作について説明する。
図２０は、半導体設計支援装置２０の動作を示すフローチャートであり、この図に沿って説明する。
【００３９】
先ず、階層構造を最適化したい動作記述ファイル１と高位合成の制約条件ファイル２と仮想配線モデル５を半導体設計支援装置２０に入力する（ステップＳ２０）。
【００４０】
次に、仮想配線モデル入力部２１により、仮想配線モデルの情報を高位合成処理部１１の制約として入力できるように変換する（ステップＳ２１）。
具体的には、仮想配線モデル５の容量や遅延の情報を高位合成処理部１１が読める遅延情報に置き換える。
例えば、高位合成処理部では、フリップフロップやＮＡＮＤゲート等のセルの遅延が０．３ｎｓ等のように値が規定されているが、その値に仮想配線モデル５の情報を加味する。
例えば、ゲート数が小さいブロックにおいては配線が短くなり遅延も小さくなるため、前記の０．３ｎｓの遅延を０．１ｎｓに置き換える。
この遅延値の置換えについては、事前にいろいろ試して変換方法を決めておく必要がある。
【００４１】
次に、高位合成処理部１１で、仮想配線モデル入力部２１と前記制約条件ファイル２に従い、動作記述ファイル１をＲＴＬに変換し、ＲＴＬ３とその高位合成結果４を出力し、そのうちタイミング違反情報を抽出する（ステップＳ２２）。
【００４２】
そして、そのタイミング違反情報を遅延違反解析部２２に入力し、遅延違反解析部２２がタイミング違反が起こっている個所を解析する（ステップＳ２３）。
具体的には、タイミング違反が起こっている個所がどの階層（モジュールや関数等）に含まれているかを検出し、その個所が含まれている最も下位の階層を抽出し、抽出した階層に対応させて階層構造の変更方法を決定する。
【００４３】
次に、その検出した階層のみを階層変更部１３により分割する（ステップＳ２４）。
階層変更部１３による具体的な階層変更方法は、実施の形態１と同じなので説明を省略する。
【００４４】
次に、階層変更された部分については、その回路規模に応じた仮想配線モデルの値が当たるようして、高位合成処理部１１において再度高位合成を実施し（ステップＳ２５）、タイミング違反が改善していることを確認する（ステップＳ２６）。
他にタイミング違反が発生して無いか確認し（ステップＳ２７）、ある場合はステップ２３に戻り、前記同様のことを繰り返し実施する。
他にタイミング違反個所が無い場合はこれで完了となる。
なお、これでもタイミング違反が無くならない場合は、本実施の形態に示す方法以外に更に別の対策（回路変更等）が必要となる。
【００４５】
なお、前記では、タイミング違反個所を含む最も小さい階層に分割することを記載しているが、あまり小さい階層が増えるとレイアウト作業が大変（煩雑）になるため、タイミング違反が出ない範囲で更に上の階層で分割してもよい。
その場合は、タイミング違反が出ない最も上位の階層を抽出すべく階層変更と高位合成を繰り返し実施する。
【００４６】
以上のように、高位合成のタイミング違反結果を基にしたデータ解析手段を備え、その解析結果を基に高位合成で遅延違反の個所の動作記述の階層を分割する手段を備えることで、タイミングの厳しい個所の遅延を設計者の手をわずらわすことなく改善することができる。
【００４７】
最後に、実施の形態１及び２に示した半導体設計支援装置１０、２０のハードウェア構成例を図２１を参照して説明する。
半導体設計支援装置１０、２０はコンピュータであり、半導体設計支援装置１０、２０の各要素をプログラムで実現することができる。
半導体設計支援装置１０、２０のハードウェア構成としては、バスに、演算装置９０１、外部記憶装置９０２、主記憶装置９０３、通信装置９０４、入出力装置９０５が接続されている。
【００４８】
演算装置９０１は、プログラムを実行するＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）である。
外部記憶装置９０２は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ、ハードディスク装置である。
主記憶装置９０３は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
通信装置９０４は、例えば、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入出力装置９０５は、例えばマウス、キーボード、ディスプレイ装置等である。
【００４９】
プログラムは、通常は外部記憶装置９０２に記憶されており、主記憶装置９０３にロードされた状態で、順次演算装置９０１に読み込まれ、実行される。
プログラムは、図１に示す「〜部」として説明している機能を実現するプログラムである。
更に、外部記憶装置９０２にはオペレーティングシステム（ＯＳ）も記憶されており、ＯＳの少なくとも一部が主記憶装置９０３にロードされ、演算装置９０１はＯＳを実行しながら、図１に示す「〜部」の機能を実現するプログラムを実行する。
また、実施の形態１及び２の説明において、「〜の判断」、「〜の判定」、「〜の抽出」、「〜の解析」、「〜の決定」、「〜の変更」、「〜の設定」、「〜の取得」、「〜の選択」、「〜の生成」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置９０３にファイルとして記憶されている。
【００５０】
なお、図２１の構成は、あくまでも半導体設計支援装置１０、２０のハードウェア構成の一例を示すものであり、半導体設計支援装置１０、２０のハードウェア構成は図２１に記載の構成に限らず、他の構成であってもよい。
【符号の説明】
【００５１】
１  動作記述ファイル、２  制約条件、３  ＲＴＬ、４  高位合成結果、５  仮想配線モデル、１０  半導体設計支援装置、１１  高位合成処理部、１２  合成結果解析部、１３  階層変更部、２０  半導体設計支援装置、２１  仮想配線モデル入力部、２２  遅延違反解析部。
【図１】
2016014950.tif 000003
【図２】
2016014950.tif 000004
【図３】
2016014950.tif 000005
【図４】
2016014950.tif 000006
【図５】
2016014950.tif 000007
【図６】
2016014950.tif 000008
【図７】
2016014950.tif 000009
【図８】
2016014950.tif 000010
【図９】
2016014950.tif 000011
【図１０】
2016014950.tif 000012
【図１１】
2016014950.tif 000013
【図１２】
2016014950.tif 000014
【図１３】
2016014950.tif 000015
【図１４】
2016014950.tif 000016
【図１５】
2016014950.tif 000017
【図１６】
2016014950.tif 000018
【図１７】
2016014950.tif 000019
【図１８】
2016014950.tif 000020
【図１９】
2016014950.tif 000021
【図２０】
2016014950.tif 000022
【図２１】
2016014950.tif 000023