(57)【要約】【課題】従来の高位合成装置におけるレイテンシ調整用のFFは、モジュール間に挿入されるため回路規模の観点から回路全体として最適でない場合がある。【解決手段】レイテンシ調整手段で動作記述の高位合成から各モジュール間に挿入が必要なFF数より必要遅延を算出し、入力FF数取得手段で高位合成されたHDL又は合成ログより、入力がFF受けのピンを抽出してFF受けの入力FF段数を取得し、レイテンシ再調整手段で上記必要遅延と入力遅延から最適遅延を求め、上記合成ログ、又はHDLから、ピンを持つFF挿入対象モジュー内の各状態と夫々の状態で保持しているFF数の総和が最小となる状態を前段モジュール解析手段で検出し、上記最適遅延とFF数の最小状態から得たFF挿入箇所を元にFF挿入最適化合成手段で全体を再度高位合成をし最適化したHDLを得る。【選択図】図２
2014142918.tif 000002
【特許請求の範囲】
【請求項１】
回路動作を記述した動作記述から高位合成手段により高位合成されたHDLまたは合成ログから取得した各モジュールのレイテンシ値より、モジュール間に挿入が必要な必要遅延であるFF数を算出するレイテンシ調整手段と、
前記HDLまたは合成ログより、入力がFF受けのピンを抽出し、入力遅延であるFF受けの入力FF段数を取得する入力FF数取得手段と、
前記レイテンシ調整手段からの必要遅延と前記入力FF数取得手段からの入力遅延から最適遅延を求めるレイテンシ再調整手段と、
前記合成ログまたはHDLから、FF挿入対象となるピンを持つモジュールを対象にモジュール内の各状態とそれぞれの状態で保持しているFF数の総和が最小となる状態を検出する前段モジュール解析手段と、
前記レイテンシ再調整手段からの最適遅延と前記前段モジュール解析手段からのFF数の最小状態から得たFF挿入箇所を元に前記高位合成手段により全体を再度高位合成をし最適化したHDLを得るFF挿入最適化合成手段とを備えた半導体集積回路設計支援装置。
【請求項２】
回路動作を記述した動作記述から高位合成手段により高位合成されたHDLまたは合成ログから取得した各モジュールのレイテンシ値より、モジュール間に挿入が必要な必要遅延であるFF数を算出するレイテンシ調整工程と、
前記HDLまたは合成ログより、入力がFF受けのピンを抽出し、入力遅延であるFF受けの入力FF段数を取得する入力FF数取得工程と、
前記レイテンシ調整工程からの必要遅延と前記入力FF数取得工程からの入力遅延から最適遅延を求めるレイテンシ再調整工程と、
前記合成ログまたはHDLから、FFが挿入対象となるピンを持つモジュールを対象にモジュール内の各状態とそれぞれの状態で保持しているFF数の総和が最小となる状態を検出する前段モジュール解析工程と、
前記レイテンシ再調整工程からの最適遅延と前記前段モジュール解析工程からのFF数の最小状態から得たFF挿入箇所を元に全体を再度高位合成をし最適化したHDLを得るFF挿入最適化合成工程とを備えた半導体集積回路設計支援方法。
【請求項３】
コンピュータを、
回路動作を記述した動作記述から高位合成手段により高位合成されたHDLまたは合成ログから取得した各モジュールのレイテンシ値より、モジュール間に挿入が必要な必要遅延であるFF数算出するレイテンシ調整手段と、
前記HDLまたは合成ログより、入力がFF受けのピンを抽出し、入力遅延であるFF受けの入力FF段数を取得する入力FF数取得手段と、
前記レイテンシ調整手段からの必要遅延と前記入力FF数取得手段からの入力遅延から最適遅延を求めるレイテンシ再調整手段と、
前記合成ログまたはHDLから、FF挿入対象となるピンを持つモジュールを対象にモジュール内の各状態とそれぞれの状態で保持しているFF数の総和が最小となる状態を検出する前段モジュール解析手段と、
前記レイテンシ再調整手段からの最適遅延と前記前段モジュール解析手段からのFF数の最小状態から得たFF挿入箇所を元に全体を再度高位合成をし最適化したHDLを得るFF挿入最適化合成手段として機能させることを特徴とする半導体集積回路設計支援プログラム。
【請求項４】
高級言語により集積回路の回路動作を記述した動作記述を解析してRTLを生成する高位合成を実施する高位合成手段を備え、前記高位合成手段と連携し、前記高位合成手段が前記高位合成を行う際に中間結果として出力する前記集積回路の各モジュールの各出力ピンのレイテンシと各モジュール内の各クロック境界における信号線間の遅延情報とを含むスケジューリング結果を利用することにより、前記高位合成によって前記RTLに挿入されるFF（フリップフロップ）の挿入箇所および挿入段数を最適化する半導体集積回路設計支援装置であって、
前記動作記述の中から、レイテンシ調整対象モジュールを抽出するモジュール解析部と、
前記レイテンシ調整対象モジュール間のレイテンシを調整するために挿入されるべきFFの個数を、最適化前挿入FF段数として算出するレイテンシ仮調整部と、
前記挿入されるべきFFが入力となる後段モジュールにおいて、論理を介さずにFFによってラッチされている入力ラッチピンを抽出し、前記入力ラッチピンをラッチしている入力ラッチFFの段数を入力ラッチFF段数として算出する入力ラッチFF判定部と、
前記レイテンシ仮調整部で算出された前記最適化前挿入FF段数と、前記入力ラッチFF判定部で算出された前記入力ラッチFF段数との関係から、相殺可能な前記入力ラッチFFおよび前記挿入されるべきFFを特定し、FFの段数を削減するレイテンシ再調整部と、
前記レイテンシ再調整部により削減するとして特定されたFFを、前記スケジューリング結果から削除し、前記スケジューリング結果を最適化した上で、再度、前記高位合成手段と連携することにより、最適化された前記スケジューリング結果を基に、最適化された前記RTLを生成する再高位合成部と
をさらに備える半導体集積回路設計支援装置。
【請求項５】
高級言語により集積回路の回路動作を記述した動作記述を解析してRTLを生成する高位合成を実施する高位合成手段を備え、前記高位合成手段と連携し、前記高位合成手段が前記高位合成を行う際に中間結果として出力する前記集積回路の各モジュールの各出力ピンのレイテンシと各モジュール内の各クロック境界における信号線間の遅延情報とを含むスケジューリング結果を利用することにより、前記高位合成によって前記RTLに挿入されるFF（フリップフロップ）の挿入箇所および挿入段数を最適化する半導体集積回路設計支援装置であって、
前記動作記述の中から、レイテンシ調整対象モジュールを抽出するモジュール解析部と、
前記レイテンシ調整対象モジュール間のレイテンシを調整するために挿入されるべきFFの個数を、最適化前挿入FF段数として算出するレイテンシ仮調整部と、
前記レイテンシ再調整部において算出された前記最適化前挿入FF段数が挿入される前段および後段のレイテンシ調整対象モジュール内において、前記最適化前挿入FF段数がモジュール間に挿入された場合とタイミングおよび機能が同じになるFF挿入箇所候補を選定するFF挿入箇所候補選定部と、
前記FF挿入箇所候補選定部によって選定された前記FF挿入箇所候補から、前記集積回路全体の回路規模を縮小させることのできる、あるいは、前記集積回路全体の処理効率を向上させることのできる挿入箇所を選択し、前記最適化前挿入FFの代わりとしてモジュール内に挿入すべきFFの挿入箇所を特定するFF挿入箇所判定部と、
前記FF挿入箇所判定部により挿入するとして特定されたFFを、前記スケジューリング結果に追加し、前記スケジューリング結果を最適化した上で、再度、前記高位合成手段と連携することにより、最適化された前記スケジューリング結果を基に、最適化された前記RTLを生成する再高位合成部と
をさらに備える半導体集積回路設計支援装置。
【請求項６】
高級言語により集積回路の回路動作を記述した動作記述が記憶部に記憶されており、前記記憶部内に記憶された前記動作記述を解析してRTLを生成する高位合成処理を実施する高位合成ステップを有し、前記高位合成ステップと連携し、前記高位合成ステップが前記高位合成処理を行う際に中間結果として出力する前記集積回路の各モジュールの各出力ピンのレイテンシと各モジュール内の各クロック境界における信号線間の遅延情報とを含むスケジューリング結果を利用することにより、前記高位合成処理によって前記RTLに挿入されるFF（フリップフロップ）の挿入箇所および挿入段数を最適化する半導体集積回路設計支援方法であって、
前記記憶部に記憶された前記動作記述の中から、レイテンシ調整対象モジュールを抽出するモジュール解析ステップと、
前記レイテンシ調整対象モジュール間のレイテンシを調整するために挿入されるべきFFの個数を、最適化前挿入FF段数として算出するレイテンシ仮調整ステップと、
前記挿入されるべきFFが入力となる後段モジュールにおいて、論理を介さずにFFによってラッチされている入力ラッチピンを抽出し、前記入力ラッチピンをラッチしている入力ラッチFFの段数を入力ラッチFF段数として算出する入力ラッチFF判定ステップと、
前記レイテンシ仮調整ステップで算出された前記最適化前挿入FF段数と、前記入力ラッチFF判定ステップで算出された前記入力ラッチFF段数との関係から、相殺可能な前記入力ラッチFFおよび前記挿入されるべきFFを特定し、FFの段数を削減するレイテンシ再調整ステップと、
前記レイテンシ再調整ステップにより削減するとして特定されたFFを、前記スケジューリング結果から削除し、前記スケジューリング結果を最適化した上で、再度、前記高位合成ステップと連携することにより、最適化された前記スケジューリング結果を基に、最適化された前記RTLを生成する再高位合成ステップと
をさらに有する半導体集積回路設計支援方法。
【請求項７】
高級言語により集積回路の回路動作を記述した動作記述が記憶部に記憶されており、前記記憶部内に記憶された前記動作記述を解析してRTLを生成する高位合成処理を実施する高位合成ステップを有し、前記高位合成ステップと連携し、前記高位合成ステップが前記高位合成処理を行う際に中間結果として出力する前記集積回路の各モジュールの各出力ピンのレイテンシと各モジュール内の各クロック境界における信号線間の遅延情報とを含むスケジューリング結果を利用することにより、前記高位合成処理によって前記RTLに挿入されるFF（フリップフロップ）の挿入箇所および挿入段数を最適化する半導体集積回路設計支援方法であって、
前記記憶部に記憶された前記動作記述の中から、レイテンシ調整対象モジュールを抽出するモジュール解析ステップと、
前記レイテンシ調整対象モジュール間のレイテンシを調整するために挿入されるべきFFの個数を、最適化前挿入FF段数として算出するレイテンシ仮調整ステップと、
前記レイテンシ再調整ステップにおいて算出された前記最適化前挿入FF段数が挿入される前段および後段のレイテンシ調整対象モジュール内において、前記最適化前挿入FF段数がモジュール間に挿入された場合とタイミングおよび機能が同じになるFF挿入箇所候補を選定するFF挿入箇所候補選定ステップと、
前記FF挿入箇所候補選定ステップによって選定された前記FF挿入箇所候補から、前記集積回路全体の回路規模を縮小させることのできる、あるいは、前記集積回路全体の処理効率を向上させることのできる挿入箇所を選択し、前記最適化前挿入FFの代わりとしてモジュール内に挿入すべきFFの挿入箇所を特定するFF挿入箇所判定ステップと、
前記FF挿入箇所判定ステップにより挿入するとして特定されたFFを、前記スケジューリング結果に追加し、前記スケジューリング結果を最適化した上で、再度、前記高位合成ステップと連携することにより、最適化された前記スケジューリング結果を基に、最適化された前記RTLを生成する再高位合成ステップと
をさらに有する半導体集積回路設計支援方法。
【請求項８】
請求項４に記載の半導体集積回路設計支援装置において用いられる半導体集積回路設計支援プログラムであって、
コンピュータを、
前記動作記述の中から、レイテンシ調整対象モジュールを抽出するモジュール解析手段と、
前記レイテンシ調整対象モジュール間のレイテンシを調整するために挿入されるべきFFの個数を、最適化前挿入FF段数として算出するレイテンシ仮調整手段と、
前記挿入されるべきFFが入力となる後段モジュールにおいて、論理を介さずにFFによってラッチされている入力ラッチピンを抽出し、前記入力ラッチピンをラッチしている入力ラッチFFの段数を入力ラッチFF段数として算出する入力ラッチFF判定手段と、
前記レイテンシ仮調整手段で算出された前記最適化前挿入FF段数と、前記入力ラッチFF判定手段で算出された前記入力ラッチFF段数との関係から、相殺可能な前記入力ラッチFFおよび前記挿入されるべきFFを特定し、FFの段数を削減するレイテンシ再調整手段と、
前記レイテンシ再調整手段により削減するとして特定されたFFを、前記スケジューリング結果から削除し、前記スケジューリング結果を最適化した上で、再度、前記高位合成手段と連携することにより、最適化された前記スケジューリング結果を基に、最適化された前記RTLを生成する再高位合成手段と
して機能させる半導体集積回路設計支援プログラム。
【請求項９】
請求項５に記載の半導体集積回路設計支援装置において用いられる半導体集積回路設計支援プログラムであって、
コンピュータを、
前記動作記述の中から、レイテンシ調整対象モジュールを抽出するモジュール解析手段と、
前記レイテンシ調整対象モジュール間のレイテンシを調整するために挿入されるべきFFの個数を、最適化前挿入FF段数として算出するレイテンシ仮調整手段と、
前記レイテンシ再調整手段において算出された前記最適化前挿入FF段数が挿入される前段および後段のレイテンシ調整対象モジュール内において、前記最適化前挿入FF段数がモジュール間に挿入された場合とタイミングおよび機能が同じになるFF挿入箇所候補を選定するFF挿入箇所候補選定手段と、
前記FF挿入箇所候補選定手段によって選定された前記FF挿入箇所候補から、前記集積回路全体の回路規模を縮小させることのできる、あるいは、前記集積回路全体の処理効率を向上させることのできる挿入箇所を選択し、前記最適化前挿入FFの代わりとしてモジュール内に挿入すべきFFの挿入箇所を特定するFF挿入箇所判定手段と、
前記FF挿入箇所判定手段により挿入するとして特定されたFFを、前記スケジューリング結果に追加し、前記スケジューリング結果を最適化した上で、再度、前記高位合成手段と連携することにより、最適化された前記スケジューリング結果を基に、最適化された前記RTLを生成する再高位合成手段と
して機能させる半導体集積回路設計支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、回路の動作記述から半導体集積回路におけるレジスタ転送レベル（RTL：Register Transfer Level）を自動生成する高位合成、または動作合成を利用した半導体集積回路の設計を支援する半導体集積回路設計支援装置、方法及びプログラムに関する。
【背景技術】
【０００２】
従来における半導体集積回路の設計では、ハードウェア記述言語（HDL：Hardware Description Language)により回路に含まれるレジスタ（フリップフロップ）間の組み合わせ回路の動作を記述するRTLで設計をしていた。近年では集積回路の回路規模が増大しており、RTLでの設計に多大の時間を要することが問題となっていた。そこで、RTLよりも抽象度が高いC言語、C++言語、SystemC言語などの高級言語を用いて自動的にRTLを生成する技術が提唱されており、これを実現する高位合成ツールが市販されている。
一方で、高位合成ツールだけでは実現できない処理を実現する補助的な設計技術が提案されている。特開2010-165334号公報（特許文献１）では、複数のモジュール間におけるレイテンシを調整するために、モジュールのFF（フリップフロップ）段数を抽出し、自動的にFFをモジュール間に挿入することで、複数のモジュール間のレイテンシを自動で合わせることが出来ることが示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開2010-165334号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１は、目的がレイテンシを自動で調整するものであり、回路規模や全体の処理能力の観点から見れば、挿入されたFFは、回路全体としては最適な箇所ではない場合があるといった課題が生じる。
【０００５】
上記挿入されたFFが最適な箇所でない場合について図３１の例で考える。図３１は、モジュールAとモジュールBがモジュールCへ接続され、特許文献１の方法によりモジュールBとモジュールCの間にFFが２個挿入された例である。この特許文献１では、各モジュールのレイテンシを抽出し、モジュール間にレイテンシ調整のためのFFを自動挿入することで、設計が効率的に行えることが開示されている。
図３２に図３１のモジュールCの内部の詳細を示した一例を示す。モジュールCでは、ピンa1の入力をFFで受けている点がポイントである。この場合、モジュールBとモジュールCの間に挿入されたFFとモジュールCの内部におけるピンa1の入力を受けるFFは相殺され、図３３に示すようにモジュールBとモジュールCの間に挿入すべきFFを１個に削減できる。
【０００６】
また別の例を挙げる。図３４にモジュールBの内部構成とFFの簡略図を示す。モジュールBでは、10bitの入力から任意の計算をし、8bitのFFでその計算結果を一旦保持している。さらにその結果を計算処理し、8bitx2のFFで出力する例である。この8bitx2のFFの出力がモジュールCに繋がるため、この従来例では、モジュールBと挿入されたFFのbitを合計すると図３５に示す算式のように56bitのFFが挿入されることになる。
一方で、もし仮にFFが挿入される箇所がモジュールBとモジュールCの間ではなく、図３６に示すようにモジュールB内のFFのビット数が少ない箇所に挿入できるとしたなら、図３７に示す算式のように挿入されるFF数は40bitとなり削減することができる。
このように特許文献１に開示されるモジュール間に挿入されるFFは、回路全体から見れば、回路規模の面で最適な箇所でない場合がある。
【０００７】
この発明は上記のような課題を解決するためになされたもので、高位合成されたRTLの記述言語であるHDLまたは合成ログより、入力がFF受けのピンを抽出し、さらにFF数が最小となる回路状態を検出し、この回路状態においてのFFの挿入箇所を検出し、そのFF挿入箇所を元に、回路全体を再度高位合成し、レイテンシを自動調整しつつ、回路規模が小さいRTLの記述言語であるHDLを得る半導体集積回路設計支援技術を提供することにある。
【課題を解決するための手段】
【０００８】
この発明に係る半導体集積回路設計支援装置は、
回路動作を記述した動作記述から高位合成手段により高位合成されたHDLまたは合成ログから取得した各モジュールのレイテンシ値より、モジュール間に挿入が必要な必要遅延であるFF数を算出するレイテンシ調整手段と、
前記HDLまたは合成ログより、入力がFF受けのピンを抽出し、入力遅延であるFF受けの入力FF段数を取得する入力FF数取得手段と、
前記レイテンシ調整手段からの必要遅延と前記入力FF数取得手段からの入力遅延から最適遅延を求めるレイテンシ再調整手段と、
前記合成ログまたはHDLから、FF挿入対象となるピンを持つモジュールを対象にモジュール内の各状態とそれぞれの状態で保持しているFF数の総和が最小となる状態を検出する前段モジュール解析手段と、
前記レイテンシ再調整手段からの最適遅延と前記前段モジュール解析手段からのFF数の最小状態から得たFF挿入箇所を元に前記高位合成手段により全体を再度高位合成をし最適化したHDLを得るFF挿入最適化合成手段とを備える。
【発明の効果】
【０００９】
この発明の半導体集積回路設計支援装置によれば、
高位合成されたHDLまたは合成ログより取得した各モジュールのレイテンシ値より取得したモジュール間に挿入が必要な必要遅延と、高位合成されたHDLまたは合成ログより入力がFF受けのピンを抽出し、FF受けの段数即ち入力遅延を取得し、レイテンシ再調整手段で必要遅延と入力遅延から最適遅延を求め、高位合成されたHDLまたは合成ログよりFF挿入対象となるピンを持つモジュールを対象として、各状態において保持しているFF数の総和を求め、FF数が最小の状態を検出し、上記で得たFFの挿入箇所を元に高位合成手段により、回路全体を再度高位合成することで、回路規模が小さなRTLの記述言語であるHDLを得ることが出来、設計者の能力に依存することなく小回路規模なハードウェア構成を短時間で得るという効果がある。
【図面の簡単な説明】
【００１０】
【図１】この発明の実施の形態１による半導体集積回路設計支援装置の機能ブロック図である。
【図２】図１における半導体集積回路設計支援手段の内部構成を示す機能ブロック図である。
【図３】この発明の実施の形態１の適用例を示すモジュール間の構成図である。
【図４】レイテンシ調整手段によって生成されるテーブル情報を示した図である。
【図５】入力FF段数取得手段によって生成されるテーブル情報を示した図である。
【図６】レイテンシ再調整手段によって生成されるテーブル情報を示した図である。
【図７】図３のモジュール間の構成がレイテンシ再調整手段により最適化された結果のモジュール構成図である。
【図８】図３のモジュール間の構成がFF挿入最適化合成手段により最適化された結果のモジュール構成図である。
【図９】本発明の実施の形態２に係る半導体集積回路設計支援装置の構成の例示図である。
【図１０Ａ】本発明の実施の形態２に係る、高級言語で記述された動作記述の第１の例示図である。
【図１０Ｂ】本発明の実施の形態２に係る、高級言語で記述された動作記述の第２の例示図ある。
【図１０Ｃ】本発明の実施の形態２に係る、高級言語で記述された動作記述の第３の例示図である。
【図１０Ｄ】本発明の実施の形態２に係る、高級言語で記述された動作記述の第４の例示図である。
【図１１】本発明の実施の形態２に係るモジュール接続関係抽出部が出力するモジュール接続リストの例示図である。
【図１２】図１１のモジュール接続リストに示す各モジュール間の接続関係を示すブロック図である。
【図１３】本発明の実施の形態２に係る、モジュールCを後段モジュールとする解析最小単位の構成の例示図である。
【図１４】本発明の実施の形態２に係る、モジュールEを後段モジュールとする解析最小単位の構成の例示図である。
【図１５】本発明の実施の形態２に係る前段／後段モジュール判定部が出力する前段／後段モジュールリストの例示図である。
【図１６】本発明の実施の形態２に係る仮高位合成部が出力するモジュールBのスケジューリング結果の例示図である。
【図１７】本発明の実施の形態２に係る仮高位合成部が出力するモジュールCのスケジューリング結果の例示図である。
【図１８】本発明の実施の形態２に係る仮高位合成部が出力するモジュールEのスケジューリング結果の例示図である。
【図１９】本発明の実施の形態２に係る仮高位合成部が出力する前段モジュールの各出力ピンのレイテンシの例示図である。
【図２０】本発明の実施の形態２に係るレイテンシ仮調整部が算出する前段モジュールの各出力ピンの最適化前挿入FF段数の例示図である。
【図２１】本発明の実施の形態２に係る、前段モジュールの各出力ピンに挿入された最適化前挿入FFの例示図である。
【図２２】本発明の実施の形態２に係る入力ラッチFF判定部が算出する入力ラッチFF段数の例示図である。
【図２３】本発明の実施の形態２に係るレイテンシ再調整部が算出する前段モジュールの各出力ピンの最適化後挿入FF段数の例示図である。
【図２４】本発明の実施の形態２に係る、最適化後のモジュールCのスケジューリング結果の例示図である。
【図２５】本発明の実施の形態２に係る、前段モジュールの各出力ピンに挿入された最適化後挿入FFの例示図である。
【図２６】本発明の実施の形態２に係る、図１３に示す解析最小単位における統合スケジューリング結果である。
【図２７】本発明の実施の形態２に係る、図１４に示す解析最小単位における統合スケジューリング結果である。
【図２８】本発明の実施の形態２に係る、図２６に示す統合スケジューリング結果と、図２７に示す統合スケジューリング結果とを、更に統合した統合スケジューリング結果である。
【図２９】本発明の実施の形態２に係るFF挿入箇所候補選定部が算出する最適化後挿入FFの挿入箇所の候補を示すスケジューリング結果である。
【図３０】本発明の実施の形態２に係る、最適化後挿入FFの各挿入箇所候補におけるFF数と遅延情報である。
【図３１】従来技術によるモジュール間でFFが挿入された構成図である。
【図３２】図３１におけるモジュールCの内部構成を示した図である。
【図３３】図３１におけるモジュールCの内部構成とピンa1のFFと挿入FFの相殺結果を示す図である。
【図３４】図３１におけるモジュールBの内部構成を簡略に示した図である。
【図３５】従来技術を適用した図９の構成によるFF数の算出を示した図である。
【図３６】図３１のモジュールB内部のFFビット幅が小さい箇所にFFを挿入した場合の構成図である。
【図３７】図３６のモジュールBにおける削減FF数の算出を示した図である。
【発明を実施するための形態】
【００１１】
実施の形態１．
この発明における半導体集積回路設計支援装置は、コンピュータ本体、グラフィックディスプレイ装置、キーボード、マウス、CD-ROM（Compact Disc Read-Only Memory）が装着されるCD-ROM装置、及びネットワークを含む。
半導体集積回路設計支援プログラムはCD-ROM等の記憶媒体によって供給され、コンピュータ本体によって実行される。操作者はグラフィックディスプレイ装置を見ながらキーボードまたはマウス操作することにより半導体集積回路の設計支援を行う。
また、半導体集積回路設計支援プログラムは他のコンピュータより通信回線を経由し、ネットワークを介してコンピュータ本体に供給されてもよい。
コンピュータ本体は、CPU（Central Processor Unit）、ROM（Read-Only Memory）、RAM（Random Access Memory）及びハードディスクを含む。CPUは、グラフィックディスプレイ装置、キーボード、マウス、CD-ROM装置、ネットワーク、ROM、RAMまたはハードディスクとの間でデータを入出力しながら処理を行う。
CD-ROMに記録された半導体集積回路設計支援プログラムは、CPUによりCD-ROM装置を介して一旦ハードディスクに格納される。CPUはハードディスクから適宜半導体集積回路設計支援プログラムをRAMにロードして実行することにより半導体集積回路設計支援を行う。
【００１２】
図１は、この発明の実施の形態１による半導体集積回路設計支援装置の機能を示す機能ブロックである。図１において、半導体集積回路設計支援手段1は、高位言語(C/C++/SystemC言語など)で記述した高位合成向け動作記述が高位合成向け動作記述保管手段2から入力されると、高位合成手段3とテーブル4を利用して、高性能なRTLに変換し、変換されたRTLをRTL記憶手段5に記憶する。
ここで高位合成向け高位言語を説明する。一般に高位言語で記述されたコードは、高位合成ツールが高位合成できるように書き直しを行う必要がある。この書き直しは、高位合成ツールの制約で合成できない記述をコードから削除、あるいは合成可能な記述に書き換えるといった作業と、記述をアーキテクチャを考慮したコードに変更することを意味する。
【００１３】
半導体集積回路設計支援手段1は、高位合成の対象となる回路の動作を記述したコード、例えばC言語、C++言語、SystemC言語を高位合成向け動作記述保管手段2から受理し、高位合成手段3と連携し、複数のモジュール間でのレイテンシ調整のためのFFをより回路規模が小さくなるように配置設計する手段である。これを実現するために、本実施の形態１による半導体集積回路設計支援装置は処理結果を格納するテーブル4と、高位合成手段3を備える。
半導体集積回路設計支援手段1は、図２に示すように、レイテンシ調整手段11、入力FF数取得手段12、レイテンシ再調整手段13、前段モジュール解析手段14、FF挿入最適化合成手段15を備える。
図３に本実施の形態１による半導体集積回路設計支援装置を適用するモジュール構成図を示す。
【００１４】
次に、図３のモジュール構成図を例に図２を参照し実施の形態１の動作について説明する。
図２に示す半導体集積回路設計支援手段1を構成する各手段は必要なときにテーブル4および高位合成手段3との間でデータのやりとりを行う。
【００１５】
ステップ１：レイテンシ調整
レイテンシ調整手段11が高位合成向け動作記述保管手段2から動作記述を入力として、動作記述中に定義されているそれぞれのモジュールにおいて、高位合成手段3により高位合成を行いHDL、または合成ログを得る。そしてこの合成結果から各モジュールのレイテンシを取得し、モジュール間に挿入する必要のあるFF数を算出する。レイテンシ調整手段11から出力されるデータは図４に示すようなものであり、これをテーブル4に書き込む。なお、本ステップは、従来技術と同様な処理である。
【００１６】
ステップ２：入力FF段数取得
次に合成されたHDL、または合成ログから、入力FF数取得手段12により入力がFF受けになっているピンを抽出し、FF受けの段数を取得し、図５に示すデータを作成する。このデータをテーブル4に書き込む。
【００１７】
ステップ３：レイテンシ再調整
レイテンシ再調整手段13は、レイテンシ調整手段11で得た必要レイテンシと入力FF数取得手段12の入力FF段数から必要遅延の最適数を計算する。各ピン接続において、以下の計算式より、最適遅延を求める。
【００１８】
各最適化前遅延 ＝ 各必要遅延 ＋ 各入力遅延（入力FF段数）
冗長FF数 ＝ min(各最適化前遅延)
各最適遅延 ＝ 各必要遅延  冗長FF
上記計算により図６に示すような結果を得、これをテーブル4に書き込む。なお、本ステップで最適な遅延がわかったため、適用後では図３に比べ、回路全体で図７のようにFFを削減できる。
【００１９】
ステップ４：前段モジュール解析
ステップ４は、FF挿入対象となる出力ピンを持つモジュールを対象とする。本実施の形態では、モジュールBが該当する。従来の技術では、モジュールBの出力にFF挿入を行っていたが、本ステップでは、前段モジュール解析手段14が機能に影響しない複数の状態において、どこにFFを挿入したら、最もFF数が小さいかを抽出する。具体的には、動作記述から高位合成手段により高位合成された合成ログ、あるいはHDLから、モジュールB内の各状態とそれぞれの状態で保持しているFF数をリストアップする。ここで状態とは、状態遷移の意味の状態である。実際にHDL状態遷移がないパイプライン回路においてもFF間をそれぞれ状態と定義する。それぞれの状態において、状態をコピーできる箇所を選択する。状態のコピーの可否は、状態をコピーしても回路のレイテンシが延びることを除いて、正常に動作することが保障されるかに依存する。
上記において状態の抽出対象となるものは、高位合成ログまたは、動作記述コードからでもよい。抽出された状態のコピーが可能な各状態において、保持しているFF数の総和を求め、FF数が最も小さい状態を検出する。
【００２０】
ステップ５：FF挿入最適化
ステップ３とステップ４で得たFF挿入箇所を元に、FF挿入最適化合成手段15が回路全体を再度高位合成し、最適化したHDLを得、RTL記憶部５に記憶する。最適となったFF構成の略図を図８に示す。
【００２１】
実施の形態２．
次に、本実施の形態２における半導体集積回路設計支援装置ついて説明する。本発明の実施の形態２に係る半導体集積回路設計支援装置の構成は図１と同じである。
【００２２】
図１に示す半導体集積回路設計支援手段1は、高級言語（C/C++/SystemC言語等）で記述された集積回路の動作記述コード（以下、単に、「動作記述」という）を、高位合成向け動作記述保管手段2から入力する。そして、動作記述を解析してRTLを生成する高位合成を実施する高位合成手段3と連携することにより、RTLを生成してRTL記憶手段5に出力する。
【００２３】
このとき、半導体集積回路設計支援手段1は、高位合成の過程で生じる処理結果の一時的な格納領域としてテーブル4を利用する。また、半導体集積回路設計支援手段1は、高位合成によってRTLに挿入されるFFの挿入箇所および挿入段数を最適化することにより、集積回路全体の回路規模を縮小して集積回路全体の処理効率を向上させる。
【００２４】
図１に示す半導体集積回路設計支援手段1は、例えば、コンピュータ本体、グラフィックディスプレイ装置、キーボード、マウス、CD-ROM（Compact Disc Read-Only Memory）が装着されるCD-ROM装置、ネットワーク等を備えて構成される。
【００２５】
コンピュータ本体は、例えば、CPU（Central Processor Unit）、ROM（Read-Only Memory）、RAM（Random Access Memory）及びハードディスク等を備えて構成される。CPUは、グラフィックディスプレイ装置、キーボード、マウス、CD-ROM装置、ネットワーク、ROM、RAMまたはハードディスクとの間でデータを入出力しながら処理を行う。
【００２６】
また、コンピュータ本体を半導体集積回路設計支援装置として機能させる半導体集積回路設計支援プログラムは、例えば、CD-ROM等の記憶媒体によって供給され、コンピュータ本体によって実行される。そして、操作者は、グラフィックディスプレイ装置を見ながらキーボードまたはマウス操作することにより、集積回路の設計支援を行う。この半導体集積回路設計支援プログラムは、他のコンピュータより通信回線を経由し、ネットワークを介してコンピュータ本体に供給されてもよい。
【００２７】
CD-ROM等に記録された半導体集積回路設計支援プログラムは、例えば、CPUにより、CD-ROM装置を介して一旦ハードディスクに格納される。そして、CPUは、ハードディスクから適宜半導体集積回路設計支援プログラムをRAMにロードして実行することにより、半導体集積回路設計支援を行う。
【００２８】
また、図１に示す高位合成手段3は、高級言語で記述された動作記述を解析して、コントロールデータフローグラフ生成やスケジューリング処理を行い、RTLを生成する高位合成（または動作合成）を実施する装置である。高位合成手段3は、高位合成を行う際に、各モジュールの各出力ピンのレイテンシと各モジュール内の各クロック境界における信号線間の遅延情報とを含むスケジューリング結果を中間結果として出力する。また、高位合成手段3は、中間結果であるスケジューリング結果から、目的するRTLを生成することもできる。
【００２９】
次に、半導体集積回路設計支援手段1の内部構成について説明する。図９は、本発明の実施の形態２に係る半導体集積回路設計支援手段1の構成の例示図である。図９に示す半導体集積回路設計支援手段1は、モジュール接続関係抽出部21、前段／後段モジュール判定部22、仮高位合成部23、レイテンシ仮調整部24、入力ラッチFF判定部25、レイテンシ再調整部26、FF挿入箇所候補選定部27、FF挿入箇所判定部28、および再高位合成部29を備えて構成される。半導体集積回路設計支援手段1に含まれるこれらの構成部は、必要に応じてテーブル4および高位合成手段3との間でデータのやりとりを行う。以下、各構成部の機能について具体的に説明する。
【００３０】
ステップ１：モジュール接続関係抽出ステップ
モジュール接続関係抽出部21は、高位合成向け動作記述保管手段2から入力した動作記述に記述された集積回路の各モジュール間の接続関係を抽出し、その結果をモジュール接続リストとしてテーブル4に書き込む。このとき、モジュール接続リストには、各モジュールにおいて、入出力ピンの名前、入力ピンの場合は接続元となるモジュール名とその接続されるピン名、および、出力ピンの場合は接続先となるモジュール名とその接続されるピン名を含んだ情報を書きこむ。
【００３１】
図１０Ａ〜図１０Ｄは、本発明の実施の形態２に係る、高級言語で記述された動作記述の例示図である。また、図１１は、本発明の実施の形態２に係るモジュール接続関係抽出部21が出力するモジュール接続リストの例示図である。また、図１２は、図１１のモジュール接続リストに示す各モジュール間の接続関係を示すブロック図である。
【００３２】
図１１に示すモジュール接続リストは、モジュール接続関係抽出部21が、図１０Ａ〜図１０Ｄに示す動作記述を入力した場合に、出力するモジュール接続リストを示している。ここで、図１１に示すモジュール接続リストの本実施の形態２に関係しない箇所については、「Ｘ」と表示している。また、図１２は、図１１に示すモジュール接続リストを理解し易くするために、モジュール間の接続関係をブロック図として表したものである。
【００３３】
ステップ２：前段／後段モジュール判定ステップ
前段／後段モジュール判定部22は、モジュール接続関係抽出部21が出力するモジュール接続リスト内の各モジュールについて、前段モジュールであるか、後段モジュールであるかを解析する。
【００３４】
ここで、後段モジュールとは、複数のモジュールの出力ピンを入力ピンとして受ける（接続される）モジュールのことをいう。また、前段モジュールとは、後段モジュールの入力ピンに接続される出力ピンを持つモジュールのことをいう。前段モジュールに接続される前段モジュールが後段モジュールではない限り、前段モジュールとして扱う。また、１つの後段モジュールとそれにつながる複数の前段モジュールを解析最小単位と定義する。
【００３５】
前段／後段モジュール判定部22は、テーブル4からモジュール接続リストを読み込み、モジュール接続リストにおいて、入力ピンに接続されるモジュールを示す「ｆｒｏｍ」に複数の異なるモジュールが定義されているものを後段モジュール、この後段モジュールの入力となるモジュールを前段モジュールとして定義する。この定義に沿って、判定された前段／後段モジュールリストをテーブル4に書き込む。
【００３６】
図１３は、本発明の実施の形態２に係る、モジュールCを後段モジュールとする解析最小単位の構成の例示図である。また、図１４は、本発明の実施の形態２に係る、モジュールEを後段モジュールとする解析最小単位の構成の例示図である。また、図１５は、本発明の実施の形態２に係る前段／後段モジュール判定部22が出力する前段／後段モジュールリストの例示図である。
【００３７】
図１１に示すモジュール接続リストを入力した場合は、図１５に示すように、モジュールA、モジュールB、モジュールDが、前段モジュールとなり、モジュールC、モジュールEが、後段モジュールとなる。また、図１３に示す後段モジュールCと、後段モジュールCに接続された前段モジュールAおよび前段モジュールBとが解析最小単位を構成している。また、同様に、図１４に示す後段モジュールEと、後段モジュールEに接続された前段モジュールBおよび前段モジュールDとが解析最小単位を構成している。
【００３８】
次に、図１３に示すモジュールCを後段モジュールとする解析最小単位、および、図１４に示すモジュールEを後段モジュールとする解析最小単位におけるレイテンシ調整方法について、以下で説明することとする。なお、どのモジュールにおいてレイテンシ調整を行うかは、外部からユーザが指定してするようにしてもよい。
【００３９】
ステップ３：仮高位合成ステップ
仮高位合成部23は、テーブル4から、前段／後段モジュールリストを読み込み、各解析最小単位において、前段／後段モジュールリストで指定される後段モジュールおよび前段モジュールを、高位合成手段3と連携して高位合成する。そして、仮高位合成部23は、高位合成の中間結果である各モジュールの各出力ピンのレイテンシと各モジュール内の各クロック境界における信号線間の遅延情報（クリティカルパス）とを含むスケジューリング結果をテーブル4に書き込む。
【００４０】
図１６は、本発明の実施の形態２に係る仮高位合成部23が出力するモジュールBのスケジューリング結果の例示図である。また、図１７は、本発明の実施の形態２に係る仮高位合成部23が出力するモジュールCのスケジューリング結果の例示図である。また、図１８は、本発明の実施の形態２に係る仮高位合成部23が出力するモジュールEのスケジューリング結果の例示図である。
【００４１】
図１６〜図１８には、図１０Ａ〜図１０Ｄに示す動作記述を入力した場合の、仮高位合成部23による出力が示されている。但し、図１６〜図１８では、本実施の形態２に関係しない箇所については図示を省略している。図中の各縦線は、クロックの境界を示しており、これらの箇所にFFが挿入されることになる。
【００４２】
図１９は、本発明の実施の形態２に係る仮高位合成部23が出力する前段モジュールの各出力ピンのレイテンシの例示図である。図１９に示すように、スケジューリング結果に含まれる処理レイテンシは、前段モジュールの各出力ピンのレイテンシとして書き込まれる。
【００４３】
ステップ４：レイテンシ仮調整ステップ
レイテンシ仮調整部24は、テーブル4から、スケジューリング結果を読み込み、各解析最小単位内の前段モジュールの中で最も大きいレイテンシ値である最適化前最大レイテンシから、各前段モジュールのレイテンシの値を引いた値を最適化前挿入FF段数としてテーブル4に書き込む。
【００４４】
図２０は、本発明の実施の形態２に係るレイテンシ仮調整部24が算出する前段モジュールの各出力ピンの最適化前挿入FF段数の例示図である。また、図２１は、本発明の実施の形態２に係る、前段モジュールの各出力ピンに挿入された最適化前挿入FFの例示図である。
【００４５】
図１９に示す処理レイテンシの場合は、レイテンシ仮調整部24が算出する最適化前挿入FF段数は、図２０に示すようになる。この結果、レイテンシ調整のために、各モジュール間にどれだけの最適化前挿入FF段数が必要かを判断することができるようになる。そして、最適化前挿入FF段数が分かれば、図２１に示すように、モジュール間に最適化前挿入FFを挿入することでレイテンシを合わせるという目的は達成される。
【００４６】
本実施の形態２では、ここから更に、モジュールの内部を解析することにより、回路規模的あるいは速度的（動作周波数）に改善できるように、最適化前挿入FFの挿入箇所を最適化する。以下、この最適化方法について説明する。
【００４７】
ステップ５：入力ラッチFF判定ステップ
入力ラッチFF判定部25は、テーブル4から、スケジューリング結果を読み込み、各解析最小単位における後段モジュールにおいて、入力ラッチピンがどれだけあるかを算出する。ここで、入力ラッチピンとは、後段モジュールの入力ピンが論理を挟まずにFFでラッチされるピンである。入力ラッチFF判定部25は、スケジューリング結果を基に、入力ピンが論理を挟まずにクロック境界を超えている場合には、そのピンは入力ラッチピンであると判定する。
【００４８】
また、入力ラッチFF判定部25は、入力ラッチピンをラッチしているFFである入力ラッチFFの段数が、複数のクロック境界をまたがる場合は、その境界数だけカウントする。入力ラッチFF判定部25は、カウントした数を入力ラッチFF段数としてテーブル4に書き込む。
【００４９】
図２２は、本発明の実施の形態２に係る入力ラッチFF判定部25が算出する入力ラッチFF段数の例示図である。入力ラッチFF判定部25は、図２２に示すように、前段モジュールの各出力ピンに接続された後段モジュールの入力ピンの入力ラッチFF段数をテーブル4に書き込む。
【００５０】
ステップ６：レイテンシ再調整ステップ
レイテンシ再調整部26は、各解析最小単位において、最適化前最大レイテンシ数を持つピンに接続される後段モジュールの入力ピンにおいて、入力ラッチFF段数の値を最適化前最大レイテンシから引く。この引いた値を最適化後最大レイテンシとする。次に最適化後最大レイテンシから前段モジュールの出力ピンの各レイテンシを引く。この数が最適化後挿入FF段数となる。
【００５１】
レイテンシ再調整部26は、この値をテーブル4に書き込む。ここで、レイテンシ調整を行う対象となるピンをレイテンシ調整ピンとする。
【００５２】
次にテーブル4から、入力ラッチFFが相殺される後段モジュールのスケジューリング結果を読み出し、相殺される入力ラッチFFを削除し、テーブル4に書き戻すことで、スケジューリング結果を更新する。
【００５３】
具体的には、モジュールCを後段モジュールとする図１３に示す解析最小単位においては、最適化前最大レイテンシは４、入力ラッチFF段数は１であるから、最適化後最大レイテンシは３となる。また、モジュールEを後段モジュールとする図１４に示す解析最小単位においては、最適化前最大レイテンシは２、入力ラッチFF段数は０であるから、最適化後最大レイテンシは２となる。
【００５４】
図２３は、本発明の実施の形態２に係るレイテンシ再調整部26が算出する前段モジュールの各出力ピンの最適化後挿入FF段数の例示図である。上記のようにして算出した最適化後最大レイテンシから前段モジュールの出力ピンの各レイテンシを引くと、モジュールBの最適化後挿入FF段数は、図２３に示すように算出することができる。
【００５５】
図２４は、本発明の実施の形態２に係る、最適化後のモジュールCのスケジューリング結果の例示図である。また、図２５は、本発明の実施の形態２に係る、前段モジュールの各出力ピンに挿入された最適化後挿入FFの例示図である。図２４に示すように、最適化後のモジュールCの最適化前挿入FF段数は、入力ラッチFF段数と相殺され、１段削減させている。この結果、モジュール間に挿入される最適化後挿入FFは、図２５に示すようになる。
【００５６】
ステップ７：FF挿入箇所候補選定ステップ
FF挿入箇所候補選定部27は、各解析最小単位の後段モジュールと前段モジュールにおいて、各解析最小単位の入出力からみて、最適化前挿入FFがモジュール間に挿入された場合と、モジュール内部の任意の箇所にFF挿入した場合とで、タイミング、機能が同じになる箇所を解析する。
【００５７】
まず、FF挿入箇所候補選定部27は、テーブル4から後段モジュールと前段モジュールのスケジューリング結果を読み出し、スケジューリング結果を統合する。
【００５８】
図２６は、本発明の実施の形態２に係る、図１３に示す解析最小単位における統合スケジューリング結果である。また、図２７は、本発明の実施の形態２に係る、図１４に示す解析最小単位における統合スケジューリング結果である。
【００５９】
また、図２８は、本発明の実施の形態２に係る、図２６に示す統合スケジューリング結果と、図２７に示す統合スケジューリング結果とを、更に統合した統合スケジューリング結果である。図２８に示すような、各解析最小単位の統合したスケジューリング結果を更に統合した統合スケジューリング結果から、FF挿入箇所の候補を判定する。ここで、従来のモジュール間の挿入される箇所をモジュール間FF挿入クロック境界と呼ぶ。
【００６０】
まず、統合スケジューリング結果の後ろ、つまり、図２６のＣＫＬ４に示すような、クロック境界が最も大きい番号から解析する。
【００６１】
ここで、レイテンシ調整ピン以外の信号線を対象外ピンとする。レイテンシ調整ピンが論理を挟んで、生成される信号線を派生信号線とする。派生信号線のみの信号で、論理を実行し、その出力の信号も派生信号線となる。また派生信号線と派生信号線やレイテンシ調整ピン以外の信号線から生成される信号線は、対象外信号線とする。
【００６２】
対象外信号線または対象外ピンとレイテンシ調整ピンまたは派生信号線が生成する論理以降のスケジューリング結果は、FF挿入候補範囲以外となる。
【００６３】
例では、図２６中の信号ａは対象外信号線、ｃ１は派生信号線となり、それら信号線で生成される加算処理以降は、FF挿入候補範囲以外となる。また、ｅ１は派生信号線、ｉｅ２は対象外ピンであり、それら信号線で生成される加算論理以降は、FF挿入候補範囲以外となる。この点をFF挿入候補範囲の終点とする。
【００６４】
また、レイテンシ調整ピンを生成する論理の入力信号線を親信号線とする（図２６中のｂ５）。親信号線は、モジュールの前に現れるので、前段モジュールに限定される。親信号線を生成する論理の入力信号も親信号線とし、モジュールの入力信号まで親信号線を定義する（図２６中のｔｃ４、ｂ４、ｂ３、ｉｂ１、ｉｂ２）。親信号線から見た場合、親信号線を入力した論理の出力信号は、子信号線となる（図２６中のｔｃ４が親信号線で、ｔｃ４から見れば、ｂ５は子信号線）。このようにツリー状に親子関係を抽出する。
【００６５】
レイテンシ調整ピン以外の出力ピンを子供に持つツリーの最上位親信号線を外部出力信号線と定義する（図２６中のｂ４）。
【００６６】
各解析対象単位で、外部出力信号線を抽出する（例では、ｂ４となる）。外部出力信号線が出現するまで（ただし、外部出力信号が出現しない場合は前段モジュールの入力信号ピンまで）を、FF挿入候補範囲の始点として定義する。
【００６７】
ここで、各解析対象単位で外部出力信号線が同一の場合、かつ、レイテンシ調整ピンが存在する、つまりレイテンシ調整のFF挿入箇所が１つ以上ある場合は、外部出力信号線を削除し、さらに前段まで外部出力信号線を再定義しにいく。つまり、例の場合は、ｂ４が同一、かつレイテンシ調整ピンがそれぞれ存在するため、ｂ４の外部出力信号線を削除し、さらに前処理へ解析を進めることになる。この結果、ｉｂ１、ｉｂ２が始点となる。
【００６８】
上記より、スケジューリング結果から終点と始点が判断できる。この範囲の中で、追加するクロック境界の候補を抽出する。
【００６９】
図２９は、本発明の実施の形態２に係るFF挿入箇所候補選定部27が算出する最適化後挿入FFの挿入箇所の候補を示すスケジューリング結果である。図１３の解析最小単位のFF挿入箇所候補は、図２９においてａ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇで、図１４の解析最小単位のFF挿入箇所候補は、図２９においてａ、ｂ、ｃ、ｈとなる。
【００７０】
FF挿入箇所候補選定部27は、上記解析後のスケジューリング結果を、FF挿入箇所範囲とそれ以外に分割してテーブル4に書き込む。つまり、候補対象外のスケジューリング結果を、テーブル4に書き込み、さらに候補対象外となったスケジューリング結果を除外した後の候補対象となった箇所のみのスケジューリング結果を、テーブル4に書き込む。
【００７１】
ステップ８：FF挿入箇所判定ステップ
FF挿入箇所判定部28は、挿入箇所候補範囲の中で、以下の３つのモードのうち、いずれかのモードを設計者が選択することで、FF挿入箇所を判定する。
（１）  回路規模削減モード：回路規模が最も小さくなる箇所に挿入
（２）  クリティカルパス改善モード：クリティカルパスが最も大きい箇所に挿入
（３）  重みづけ判定モード：上記２つの重みづけ関数で判定
【００７２】
図３０は、本発明の実施の形態２に係る、最適化後挿入FFの各挿入箇所候補におけるFF数と遅延情報である。FF挿入箇所判定部28は、まず、図３０に示すように、統合スケジューリング結果から、FF数と各FF間の遅延情報をスケジューリング結果から抽出する。
【００７３】
回路規模削減モードの場合、全ての解析最小単位におけるFF挿入箇所候補の中で、最も回路規模が小さくなる、つまり必要なFF挿入総ビット数が最も小さくなる箇所を算出する。この算出方法は、各解析最小単位の候補となる挿入箇所を全て組み合わせて評価する。例では、ａ、ｂ、ｃ、ｄ、ｅ、ｆ、ｇで１つのFF挿入、かつ、ａ、ｂ、ｃ、ｈで１つのFF挿入を満たす組み合わせで、挿入されるFF総ビット数を算出し、最も挿入されるビット数が小さくなる箇所を特定する。この場合は、ｂに挿入すれば最もFFの総ビット数は小さい。
【００７４】
クリティカルパス改善モードでは、遅延情報を取得し、最も遅延が大きい箇所にFFを挿入する。
【００７５】
また、重みづけ判定では、上記２つを組み合わせた判定であり、挿入される総ビット数重みづけ係数ｃａと、遅延情報の重みづけ係数ｃｂとした場合、回路規模削減モードで判定された挿入される総ビット数をｄｂ、クリティカルパス改善モードで判定された最も遅延が大きい値をｄｄとした場合、（ｃａ＊ｄｂ）と（ｃｂ＊ｄｄ）を計算し、大きい値を持つモードを優先するとしてもよい。
【００７６】
また、複数のFF挿入箇所があった場合、１つのFF挿入箇所を上記いずれかの判定で判定後、再度高位合成手段3にて、高位合成を実施し、遅延情報を得てから、２つ目のFF挿入箇所を判定してもよい。
【００７７】
上記判定モードは、半導体集積回路設計支援手段1の外部より指定される。
【００７８】
本実施例では、回路規模削減モードで、ｂの箇所にFF挿入が決定したとする。スケジューリング結果から、ｂの箇所にクロック境界を追加し、テーブル4に書き込む。
【００７９】
ステップ９：再高位合成ステップ
再高位合成部29は、ロックしたスケジューリング結果と、レイテンシ再調整部26またはFF挿入箇所判定部28が生成したスケジューリング結果を、テーブル4から読み出し、スケジューリング結果を統合する。さらに、統合したスケジューリング結果から、モジュール単位のスケジューリング結果に分割を行い、テーブル4に書き込む。そして、再高位合成部29は、最適化後のスケジューリング結果を、再度、高位合成手段3と連携することにより、高位合成（動作合成）を実施し、RTLを得る。
【００８０】
このように、高位合成されたRTL（HDL）または合成ログより取得した各モジュールのレイテンシ値より取得したモジュール間に挿入が必要な必要遅延と、高位合成されたRTL（HDL）または合成ログより入力がFF受けのピンを抽出し、FF受けの段数即ち入力遅延を取得している。そして、レイテンシ再調整部26で必要遅延と入力遅延から最適遅延を求め、高位合成されたRTL（HDL）または合成ログよりFF挿入対象となるピンを持つモジュールを対象として、各状態において保持しているFF数の総和を求め、FF数が最小の状態を検出し、上記で得たFFの挿入箇所を元に高位合成手段3により、回路全体を再度高位合成している。この結果、回路規模が小さなRTLの記述言語であるHDLを得ることが出来、設計者の能力に依存することなく小回路規模なハードウェア構成を短時間で得るという効果がある。さらにFF段数を削減することができれば、回路のレイテンシ（処理サイクル数）も削減でき、処理を高速に行えるという効果を得ることができる。また、挿入されるFF箇所を遅延が厳しい箇所に挿入することで、速度改善を行うことができる効果がある。
【００８１】
以上のように、実施の形態２によれば、高級言語で記述された集積回路の動作記述を解析してRTLを生成する高位合成を実施する高位合成手段と連携し、高位合成手段が高位合成を行う際に中間結果として出力するスケジューリング結果を利用することにより、高位合成の結果としてRTLに挿入されるFFの挿入箇所および挿入段数を最適化している。この結果、集積回路全体の回路規模を縮小して集積回路全体の処理効率を向上させることができる半導体集積回路設計支援装置、方法及びプログラムを得ることができる。
【００８２】
なお、図９に示す半導体集積回路設計支援手段1に含まれている入力ラッチFF判定部25、レイテンシ再調整部26、FF挿入箇所候補選定部27、FF挿入箇所判定部28は、必ずしも全てを備えている必要はない。具体的には、入力ラッチFF判定部25およびレイテンシ再調整部26だけを備え、FF挿入箇所候補選定部27、FF挿入箇所判定部28がない構成であっても、モジュール間に挿入されるFFと入力ラッチFFとを相殺し、回路規模を縮小させることが可能となる。また、FF挿入箇所候補選定部27、FF挿入箇所判定部28だけを備え、入力ラッチFF判定部25およびレイテンシ再調整部26がない構成であっても、回路規模の削減あるいはクリティカルパスの改善を行うことが可能となる。
【産業上の利用可能性】
【００８３】
この発明は半導体集積回路において回路規模が小さな、また処理速度が高いRTLの記述言語であるHDLを得ることが出来、半導体集積回路の設計に利用可能である。
【符号の説明】
【００８４】
1  半導体集積回路設計支援手段、2  高位合成向け動作記述保管手段、3  高位合成手段、4  テーブル、5  RTL記憶手段、11  レイテンシ調整手段、12  入力FF数取得手段、13  レイテンシ再調整手段、14  前段モジュール解析手段、15  FF挿入最適化合成手段、21  モジュール接続関係抽出部、22  前段／後段モジュール判定部、23  仮高位合成部、24  レイテンシ仮調整部、25  入力ラッチFF判定部、26  レイテンシ再調整部、27  FF挿入箇所候補選定部、28  FF挿入箇所判定部、29  再高位合成部。
【図１】
2014142918.tif 000003
【図２】
2014142918.tif 000004
【図３】
2014142918.tif 000005
【図４】
2014142918.tif 000006
【図５】
2014142918.tif 000007
【図６】
2014142918.tif 000008
【図７】
2014142918.tif 000009
【図８】
2014142918.tif 000010
【図９】
2014142918.tif 000011
【図１０Ａ】
2014142918.tif 000012
【図１０Ｂ】
2014142918.tif 000013
【図１０Ｃ】
2014142918.tif 000014
【図１０Ｄ】
2014142918.tif 000015
【図１１】
2014142918.tif 000016
【図１２】
2014142918.tif 000017
【図１３】
2014142918.tif 000018
【図１４】
2014142918.tif 000019
【図１５】
2014142918.tif 000020
【図１６】
2014142918.tif 000021
【図１７】
2014142918.tif 000022
【図１８】
2014142918.tif 000023
【図１９】
2014142918.tif 000024
【図２０】
2014142918.tif 000025
【図２１】
2014142918.tif 000026
【図２２】
2014142918.tif 000027
【図２３】
2014142918.tif 000028
【図２４】
2014142918.tif 000029
【図２５】
2014142918.tif 000030
【図２６】
2014142918.tif 000031
【図２７】
2014142918.tif 000032
【図２８】
2014142918.tif 000033
【図２９】
2014142918.tif 000034
【図３０】
2014142918.tif 000035
【図３１】
2014142918.tif 000036
【図３２】
2014142918.tif 000037
【図３３】
2014142918.tif 000038
【図３４】
2014142918.tif 000039
【図３５】
2014142918.tif 000040
【図３６】
2014142918.tif 000041
【図３７】
2014142918.tif 000042