(57)【要約】【課題】高位合成を用いる半導体集積回路の設計において、ＦＰＧＡに最適なセル遅延を持つＲＴＬ回路が迅速かつ容易に得られるようにする。【解決手段】  高位合成（Ｓ１）、論理合成（Ｓ２）、ＦＰＧＡへのインプリメンテーション（Ｓ３）の後、インプリメンテーション出来たか否かを判定する（Ｓ４）。インプリメンテーション出来なかった場合（Ｓ４：NO）、高位合成制約２で指示されている処理性能に合わない部分に対して、インプリメンテーションで得られた配線遅延情報など６をフィードバックして高位合成制約２を更新し、新しい高位合成制約を作成する（Ｓ５）。更新された高位合成制約を用いて、二回目のＳ１〜Ｓ４を行う。更新された高位合成制約２の改善された処理性能によりＦＰＧＡへのインプリメンテーションが容易となっているため、二回目のインプリメンテーションでは確実にインプリメンテーション出来る。【選択図】図２
2014095955.tif 000002
【特許請求の範囲】
【請求項１】
動作記述をＲＴＬ記述に変換する高位合成手段と、
該高位合成手段により変換されたＲＴＬ記述をネットリスト記述に変換する論理合成手段と、
該論理合成手段により変換されたネットリスト記述をＦＰＧＡにインプリメンテーションするインプリメンテーション手段と、
該インプリメンテーション手段によりインプリメンテーション出来たか否かを判定する判定手段と、
該判定手段によりインプリメンテーション出来なかったと判定されたとき、前記高位合成手段における高位合成制約を更新する制約更新手段と、
を有する半導体集積回路の設計装置。
【請求項２】
請求項１に記載された半導体集積回路の設計装置において、
前記判定手段は、インプリメンテーション出来なかったとき、該インプリメンテーションが一回目であるか否かを併せて判定し、一回目であるときのみインプリメンテーション出来なかったとの判定を出力する半導体集積回路の設計装置。
【請求項３】
請求項１に記載された半導体集積回路の設計装置において、
前記制約更新手段は、スケジューリングに必要なクロックサイクルを更新する半導体集積回路の設計装置。
【請求項４】
請求項１に記載された半導体集積回路の設計装置において、
前記制約更新手段は、どのように合成するか指示をするオプションを更新する半導体集積回路の設計装置。
【請求項５】
請求項１に記載された半導体集積回路の設計装置において、
前記制約更新手段は、最適化の必要な部分の範囲を指示する情報を追加する半導体集積回路の設計装置。
【請求項６】
動作記述をＲＴＬ記述に変換する高位合成ステップと、
該高位合成ステップにより変換されたＲＴＬ記述をネットリスト記述に変換する論理合成ステップと、
該論理合成ステップにより変換されたネットリスト記述をＦＰＧＡにインプリメンテーションするインプリメンテーションステップと、
該インプリメンテーションステップによりインプリメンテーション出来たか否かを判定する判定ステップと、
該判定ステップによりインプリメンテーション出来なかったと判定されたとき、前記高位合成ステップにおける高位合成制約を更新する制約更新ステップと、
を有する半導体集積回路の設計方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＦＰＧＡ（Field Programmable Gate Array）の設計に用いて好適な半導体集積回路の設計装置及び設計方法に関する。
【背景技術】
【０００２】
ＬＳＩ（Large Scale Integration）の集積度は年々指数関数的に増加しているが、設計者一人一人の能力には限界があるため、設計規模の増大に設計能力が追いつかないという状況が生じる。この設計生産性の危機を打開するための有効なアプローチの一つに、設計の抽象度を上げるという方法があり、また、そのためのＥＤＡ（Electronic Design Automation）ツールが知られている。
【０００３】
例えば、ある処理を実行するハードウェアを設計する際に、対象となる処理のアルゴリズムを動作レベルで記述した「動作記述」から、レジスタやクロックによる同期などハードウェアに特有の概念を意識した「レジスタ転送レベル記述」（以下、「ＲＴＬ記述」と言う）を自動的に合成する「高位合成」（「動作合成」、「機能合成」とも言われている）機能を備えた高位合成ツールがある。
【０００４】
ここで、「動作記述」はＣ言語のようなプログラミング言語を用いて、回路の動作を逐次処理として記述したものであり、「ＲＴＬ記述」はVerilog-ＨＤＬのようなハードウェア記述言語（Hardware Description Language：ＨＤＬ）により記述したものである。
【０００５】
高位合成では、レジスタ−レジスタ間や入出力端子−レジスタ間などの遅延を決める動作周波数や、演算器やレジスタなどのハードウェア資源の種類や数などの高位合成制約を満たすように、トランスフォーメーション、スケジューリング、アロケーション、及びバインディングを実行して、動作レベル記述をＲＴＬ記述に変換する。
【０００６】
ここで、トランスフォーメーションでは、動作記述を解析して、演算数や段数の削減、ループの展開などのハードウェア化に向けた適合化処理を行い、その結果得られるデータの流れとそのデータに対する処理とをデータの流れの方向を示す矢印と各処理部分で表すＣＤＦＧ（コントロール・データ・フロー・グラフ）に変換する。
【０００７】
スケジューリングでは、ＣＤＦＧ中の各処理部分を時間軸上の各クロックサイクルに割り当てて、各処理の実行タイミングを決定する。アロケーションでは、ハードウェア資源（演算器）を格納しているライブラリから、それぞれの処理の種類に応じた種類のハードウェア資源を各処理部分に割り当てる。
【０００８】
バインディングでは、ハードウェア資源の最終的な接続関係を決定する。このとき、アロケーションで割り当てたハードウェア資源をそのまま接続したのでは、回路面積が膨大になるので、共有出来るハードウェア資源は共有し、出来るだけシステムを簡素にする。
【０００９】
このようにして合成されたＲＴＬ記述は論理合成ツールにより、レジスタ−レジスタ間や入出力端子−レジスタ間などの遅延情報を有する「ネットリスト記述」（「ゲートレベル記述」とも言われている）に変換される。
【００１０】
この論理合成の段階で、タイミング解析を行い、ネットリスト記述の回路の遅延情報を見て、ネットリスト記述の回路が、遅延時間に関する設計条件を満たしているか否かを確認する。そして、満たしていない場合、ＲＴＬ回路を修正して論理合成をやり直す。このとき、ＲＴＬ回路を直接修正せず、例えば高位合成制約を変えることで、結果的に論理合成されたネットリスト記述の回路におけるタイミングが収束するＲＴＬ回路が得られるまで高位合成を繰り返す。
【００１１】
このような半導体集積回路の設計の効率を高めた技術として、特許文献１に記載された半導体集積回路装置の設計方法がある。この方法は、ＡＳＩＣ（Application Specific Integrated Circuit）開発のフローとして、論理合成後の配置配線情報を高位合成にフィードバックすることで、最適なＲＴＬ回路を得る事が出来るようにしたものである。
【００１２】
しかしながら、特許文献１に記載された半導体集積回路装置の設計方法は、ＦＰＧＡ特有の構成であるロジックセルを考慮していないため、ＦＰＧＡへのマッピングがスムーズにできないという問題がある。以下、この点について説明する。
【００１３】
ＦＰＧＡは、ルックアップテーブル（ＬＵＴ）とフリップフロップ（ＦＦ）で構成されたロジックセルの集合体であり、ＦＰＧＡの設計の場合、論理合成の後に、ネットリスト記述の回路をＦＰＧＡ内のロジックセルにマッピングするインプリメンテーションを行う。
【００１４】
このとき、高位合成で論理合成できる(タイミングに問題のない)ＲＴＬ回路を得る事が出来ても、論理合成されたネットリスト記述の回路をロジックセルにマッピングする事でタイミングに問題が出てしまうことがある。
【００１５】
即ち、ＡＳＩＣではＡＮＤ回路やＯＲ回路等を自由に使用してロジックを構成し、ファンクションを実現するのに対し、ＦＰＧＡでは多数のロジックセルを使用してファンクションを実現するため、ロジックセル間を信号が行き交う事となり、配線の遅延の積み上げが階段状に大きくなる。
【００１６】
特許文献１に記載された半導体集積回路装置の設計方法は、このような階段状に増える遅延を考慮していないため、ＦＰＧＡへのマッピングがスムーズにできない。このため、以下の作業を繰り返して遅延の調整を行うことが必要となる。
【００１７】
即ち、マッピングなどをマニュアルで行い、配線遅延の厳しいデータパスを近い場所に配置するなど作業を行いマッピングで対応する。それでも出来ない場合は、入力するＲＴＬ回路にあたるＲＴＬ記述を生成し直すために、論理合成制約を厳しくして論理合成をやり直す。それでもインプリメンテーションができない場合は、高位合成制約を厳しくし、さらに論理合成制約を厳しくして、ネットリスト記述のレジスタ(フリップフロップ)間に収められているロジック回路の段数を減らすことでレジスタ間の遅延を抑え、インプリメンテーションがし易くなるように合成を繰り返すこととなる。
【００１８】
各作業は、基本的に出来るまで行うが、どうしても解決しない場合は上流の作業に移る事となり、各作業で解決するか否かのタイミングを見誤ると、無駄な工数を積み上げていく事となる。
【発明の概要】
【発明が解決しようとする課題】
【００１９】
本発明は、このような問題を解決するためになされたものであり、その目的は、高位合成を用いる半導体集積回路の設計において、ＦＰＧＡに最適なセル遅延を持つＲＴＬ回路が迅速かつ容易に得られるようにすることである。
【課題を解決するための手段】
【００２０】
本発明に係る半導体集積回路の設計装置は、動作記述をＲＴＬ記述に変換する高位合成手段と、該高位合成手段により変換されたＲＴＬ記述をネットリスト記述に変換する論理合成手段と、該論理合成手段により変換されたネットリスト記述をＦＰＧＡにインプリメンテーションするインプリメンテーション手段と、該インプリメンテーション手段によりインプリメンテーション出来たか否かを判定する判定手段と、該判定手段によりインプリメンテーション出来なかったと判定されたとき、前記高位合成手段における高位合成制約を更新する制約更新手段と、を有する半導体集積回路の設計装置である。
【発明の効果】
【００２１】
本発明によれば、高位合成を用いる半導体集積回路の設計において、ＦＰＧＡに最適なセル遅延を持つＲＴＬ回路が迅速かつ容易に得られる。
【図面の簡単な説明】
【００２２】
【図１】本発明の実施形態に係る半導体集積回路の設計装置のハードウェア構成を示すブロック図である。
【図２】本発明の実施形態に係る半導体集積回路の設計装置の動作を示すフローチャートである。
【図３】図２における動作記述を説明するための図である。
【図４】図２における高位合成制約を説明するための図である。
【発明を実施するための形態】
【００２３】
〈半導体集積回路の設計装置の構成〉
図１は本発明の実施形態に係る半導体集積回路の設計装置のハードウェア構成を示すブロック図である。
【００２４】
この半導体集積回路の設計装置はコンピュータシステムにより構成されている。コンピュータシステム１１０は、ＣＰＵ(Central Processing Unit)１１１、ＲＯＭ(Read Only Memory)１１２、ＲＡＭ(Random Access Memory)１１３、ＨＤＤ（ハードディスク）１１４、ディスプレイ装置１１５、キーボード１１６、マウス１１７、及びＣＤ−ＲＯＭ装置１１８を備えている。
【００２５】
ＣＰＵ１１１は、ディスプレイ装置１１５、キーボード１１６、マウス１１７、ＣＤ−ＲＯＭ装置１１８、ネットワーク装置（図示せず）、ＲＯＭ１１２、ＲＡＭ１１３又はＨＤＤ１１４との間でデータを入出力しながら処理を行う。
【００２６】
ＣＤ−ＲＯＭに記録された半導体集積回路の設計プログラムは、ＣＰＵ１１１によりＣＤ−ＲＯＭ装置１１８を介して一旦ＨＤＤ１１４に格納される。ＣＰＵ１１１は、ＨＤＤ１１４から適宜半導体集積回路の設計プログラムをＲＡＭ１１３にロードして実行することによってＦＰＧＡの設計を行う。
【００２７】
ここで、半導体集積回路の設計プログラムは、高位合成ツール、論理合成ツール、インプリメンテーションツール、制約更新ツールなどからなる。これらのツールの機能により実現される手段が本発明における高位合成手段、論理合成手段、インプリメンテーション手段、制約更新手段などに対応する。
【００２８】
〈半導体集積回路の設計装置の動作〉
図２は本発明の実施形態に係る半導体集積回路の設計装置の動作を示すフローチャートである。この図において、実線の矢印は、作業の遷移を示しており、破線の矢印は処理に必要なインプット情報及び処理によって生成されるアウトプット情報を示している。設計装置による処理の内、抽象度の一番高い高位合成を実施するところからフローがスタートする。
【００２９】
ステップＳ１では、動作記述１及び高位合成制約２を高位合成ツールにインプットすると事で高位合成を行い、ＲＴＬ記述４を生成する。動作記述１とは高位合成の回路生成の元となる動作記述で書かれた記述であり、高位合成制約２とは高位合成でどのような処理性能で回路を生成するかを指示する記述である。生成されたＲＴＬ記述４は高位合成でスケジューリングされたもので、高位合成制約通りの処理性能を満たしている。
【００３０】
ステップＳ２では、ＲＴＬ記述４及び論理合成制約３を論理合成ツールにインプットする事で論理合成を行い、ネットリスト記述５を生成する。論理合成制約３とは高位合成制約２と同じ処理性能にする為に論理合成ツールへＲＴＬ回路の処理性能を指示する記述である。ＦＰＧＡ向けの論理合成ツールを使うことで、ＦＰＧＡの特性に合った論理合成を行うことができる。
【００３１】
論理合成が完了すると、アウトプット情報のネットリスト記述５をインプリメンテーションツールにインプットして、インプリメンテーション（変換、マップ、配置配線）する（ステップＳ３）。次いで、インプリメンテーション出来たか否かを判定する（ステップＳ４）。
【００３２】
インプリメンテーション出来たと判定したときは（ステップＳ４：YES）、この図のフローが終了する。インプリメンテーション出来なかったと判定したときは（ステップＳ４：NO）、ステップＳ５へ進んで制約更新を行う。
【００３３】
ここで、インプリメンテーション出来なかったと判定したときは、一回目のインプリメンテーションか否か、即ち高位合成制約２がインプリメンテーションの結果のフィードバック情報により更新されていないかどうかを併せて判定する。判定の結果、一回目のインプリメンテーションであった場合にステップＳ５へ進む。
【００３４】
ステップＳ５では、インプリメンテーション（ステップＳ３）で得られる配線遅延情報など６を参照して、高位合成制約２で指示されている処理性能に合わない部分に対してフィードバックして高位合成制約２を更新し、新しい高位合成制約を作成する。
【００３５】
ここで、ステップＳ５で高位合成制約２を更新するときに参照される情報は、レジスタ対応情報（ＲＴＬ記述のレジスタとネットリスト記述のレジスタとの対応関係を示す情報）と、配線遅延情報（ＦＰＧＡ内のＦＦ間の遅延を示す情報）である。このレジスタ対応情報は、高位合成の結果と論理合成の結果で得られる。また、配線遅延情報は、インプリメンテーションの結果で得られる。
【００３６】
なお、この図における動作記述１、高位合成制約２、論理合成制約３、ＲＴＬ記述４、ネットリスト記述５、及び配線遅延情報など６は、図１におけるＨＤＤ１１４に格納されている。
【００３７】
次いで、更新された高位合成制約を用いて、一回目と同じように高位合成（ステップＳ１）を行い、さらに論理合成（ステップＳ２）、ＦＰＧＡへのインプリメンテーション（ステップＳ３）を行い、インプリメンテーションできたか否かを判定する（ステップＳ４）。
【００３８】
更新された高位合成制約は、更新される前の高位合成制約に比べて、論理合成（ステップＳ２）でネックとなる処理性能が改善されている。この改善された処理性能によりＦＰＧＡへのインプリメンテーションが容易となっている。このため、二回目のインプリメンテーションでは確実にインプリメンテーションされ、インプリメンテーションできたと判定され（ステップＳ４：YES）、この図のフローが終了する。
【００３９】
このように、本実施形態によれば、高位合成の結果と論理合成の結果で得られるレジスタ対応情報と、インプリメンテーションの結果で得られる配線遅延情報とを、高位合成時にインプットとして追加する。そして、高位合成のアウトプットに対して、レジスタ間の遅延を基にタイミングの厳しいデータパスを特定しスケジューリングをし直す。これにより、何度もＦＰＧＡにインプリメンテーションしなくても、ＦＰＧＡに最適なセル遅延を持つＲＴＬ記述をスムーズに得る事が出来る。
【００４０】
〈動作記述の例〉
図３は図２における動作記述１を説明するための図である。この図は処理の動作のみを記述した動作記述であり、動作記述を記述出来る言語なら何でもよい。ここで、図３Ａ、図３Ｂにおけるmod1.h、mod1.ccは、SystemＣ言語で記述された回路のサンプルコードである。
【００４１】
mod1.ccの7行目と8行目(ブランク行を含まない)にてin1とin2からデータが入力され、それぞれtmp_in1とtmp_in2に代入される。８ビットのtmp_in1とtmp_in2はデータを処理する関数のcalc()の引数となる。
【００４２】
tmp_in1とtmp_in2をcalc()関数で処理を行い、処理した結果をtmp_outへ格納する。格納されたtmp_outの８ビットのデータをoutに出力する。各ステートの遷移はmod1へ入力されるclk（クロック）信号の立ち上がりによる。mod1.ccの５行目にwhile(1)とあるように、clk信号でデータの入力、処理、データの出力が繰り返される。
【００４３】
〈高位合成制約の例〉
図４は図２における高位合成制約２を説明するための図である。ここで、図４Ａは一番初め（一回目）に高位合成を行う際に用意する高位合成制約の一例であり、図４Ｂ、Ｃ、Ｄは制約変換（ステップＳ５）に従って更新された高位合成制約の例である。
【００４４】
高位合成制約の中にはクロック信号の信号名、リセット信号の信号名、クロックサイクル、合成時のオプションが書かれている。オプションでは合成時にどのように振舞えばよいかを指示しており、図４Ａでは合成を行う際に最低限の努力（minimum effort）で実施する事を指示している。
【００４５】
図４Ｂでは動作クロックの制約を図４Ａより厳しくしている（５０００ｐｓ→４５００ｐｓ）。クロックサイクルの制約は回路全体に効いてくるため、問題になりそうな箇所が多い場合などに向いている。
【００４６】
図４Ｃでは動作合成オプションを最大限の努力（maximum effort）で実施するように指示しており、図４Ｂと同様、回路全体に対して効果を得る事を目的とする。図４Ｄでは動作合成オプションで図３の回路の動作記述で使用されている関数に対して高位合成範囲を指定する（inline module=calc）事により、高位合成の最適化を行う。
【００４７】
上記のように、場合により様々な高位合成制約条件を付加して二回目の高位合成及び論理合成を実施することで、ＦＰＧＡへのインプリメンテーションを容易にし、確実にインプリメンテーションを行うことができる。
【符号の説明】
【００４８】
１…動作記述、２…高位合成制約、３…論理合成制約、４…ＲＴＬ記述、５…ネットリスト記述、６…配線遅延情報など、１１０…コンピュータシステム、１１１…ＣＰＵ、１１２…ＲＯＭ、１１３…ＲＡＭ、Ｓ１…高位合成ステップ、Ｓ２…論理合成ステップ、Ｓ３…インプリメンテーションステップ、Ｓ４…判定ステップ、Ｓ５…制約更新ステップ。
【先行技術文献】
【特許文献】
【００４９】
【特許文献１】特開２００１−１４２９２２号公報
【図１】
2014095955.tif 000003
【図２】
2014095955.tif 000004
【図３】
2014095955.tif 000005
【図４】
2014095955.tif 000006