JP2014095955A - 半導体集積回路の設計装置及び設計方法 - Google Patents
半導体集積回路の設計装置及び設計方法 Download PDFInfo
- Publication number
- JP2014095955A JP2014095955A JP2012245772A JP2012245772A JP2014095955A JP 2014095955 A JP2014095955 A JP 2014095955A JP 2012245772 A JP2012245772 A JP 2012245772A JP 2012245772 A JP2012245772 A JP 2012245772A JP 2014095955 A JP2014095955 A JP 2014095955A
- Authority
- JP
- Japan
- Prior art keywords
- implementation
- level synthesis
- integrated circuit
- semiconductor integrated
- description
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Landscapes
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
【課題】高位合成を用いる半導体集積回路の設計において、FPGAに最適なセル遅延を持つRTL回路が迅速かつ容易に得られるようにする。
【解決手段】
高位合成(S1)、論理合成(S2)、FPGAへのインプリメンテーション(S3)の後、インプリメンテーション出来たか否かを判定する(S4)。インプリメンテーション出来なかった場合(S4:NO)、高位合成制約2で指示されている処理性能に合わない部分に対して、インプリメンテーションで得られた配線遅延情報など6をフィードバックして高位合成制約2を更新し、新しい高位合成制約を作成する(S5)。更新された高位合成制約を用いて、二回目のS1〜S4を行う。更新された高位合成制約2の改善された処理性能によりFPGAへのインプリメンテーションが容易となっているため、二回目のインプリメンテーションでは確実にインプリメンテーション出来る。
【選択図】図2
【解決手段】
高位合成(S1)、論理合成(S2)、FPGAへのインプリメンテーション(S3)の後、インプリメンテーション出来たか否かを判定する(S4)。インプリメンテーション出来なかった場合(S4:NO)、高位合成制約2で指示されている処理性能に合わない部分に対して、インプリメンテーションで得られた配線遅延情報など6をフィードバックして高位合成制約2を更新し、新しい高位合成制約を作成する(S5)。更新された高位合成制約を用いて、二回目のS1〜S4を行う。更新された高位合成制約2の改善された処理性能によりFPGAへのインプリメンテーションが容易となっているため、二回目のインプリメンテーションでは確実にインプリメンテーション出来る。
【選択図】図2
Description
本発明は、FPGA(Field Programmable Gate Array)の設計に用いて好適な半導体集積回路の設計装置及び設計方法に関する。
LSI(Large Scale Integration)の集積度は年々指数関数的に増加しているが、設計者一人一人の能力には限界があるため、設計規模の増大に設計能力が追いつかないという状況が生じる。この設計生産性の危機を打開するための有効なアプローチの一つに、設計の抽象度を上げるという方法があり、また、そのためのEDA(Electronic Design Automation)ツールが知られている。
例えば、ある処理を実行するハードウェアを設計する際に、対象となる処理のアルゴリズムを動作レベルで記述した「動作記述」から、レジスタやクロックによる同期などハードウェアに特有の概念を意識した「レジスタ転送レベル記述」(以下、「RTL記述」と言う)を自動的に合成する「高位合成」(「動作合成」、「機能合成」とも言われている)機能を備えた高位合成ツールがある。
ここで、「動作記述」はC言語のようなプログラミング言語を用いて、回路の動作を逐次処理として記述したものであり、「RTL記述」はVerilog-HDLのようなハードウェア記述言語(Hardware Description Language:HDL)により記述したものである。
高位合成では、レジスタ−レジスタ間や入出力端子−レジスタ間などの遅延を決める動作周波数や、演算器やレジスタなどのハードウェア資源の種類や数などの高位合成制約を満たすように、トランスフォーメーション、スケジューリング、アロケーション、及びバインディングを実行して、動作レベル記述をRTL記述に変換する。
ここで、トランスフォーメーションでは、動作記述を解析して、演算数や段数の削減、ループの展開などのハードウェア化に向けた適合化処理を行い、その結果得られるデータの流れとそのデータに対する処理とをデータの流れの方向を示す矢印と各処理部分で表すCDFG(コントロール・データ・フロー・グラフ)に変換する。
スケジューリングでは、CDFG中の各処理部分を時間軸上の各クロックサイクルに割り当てて、各処理の実行タイミングを決定する。アロケーションでは、ハードウェア資源(演算器)を格納しているライブラリから、それぞれの処理の種類に応じた種類のハードウェア資源を各処理部分に割り当てる。
バインディングでは、ハードウェア資源の最終的な接続関係を決定する。このとき、アロケーションで割り当てたハードウェア資源をそのまま接続したのでは、回路面積が膨大になるので、共有出来るハードウェア資源は共有し、出来るだけシステムを簡素にする。
このようにして合成されたRTL記述は論理合成ツールにより、レジスタ−レジスタ間や入出力端子−レジスタ間などの遅延情報を有する「ネットリスト記述」(「ゲートレベル記述」とも言われている)に変換される。
この論理合成の段階で、タイミング解析を行い、ネットリスト記述の回路の遅延情報を見て、ネットリスト記述の回路が、遅延時間に関する設計条件を満たしているか否かを確認する。そして、満たしていない場合、RTL回路を修正して論理合成をやり直す。このとき、RTL回路を直接修正せず、例えば高位合成制約を変えることで、結果的に論理合成されたネットリスト記述の回路におけるタイミングが収束するRTL回路が得られるまで高位合成を繰り返す。
このような半導体集積回路の設計の効率を高めた技術として、特許文献1に記載された半導体集積回路装置の設計方法がある。この方法は、ASIC(Application Specific Integrated Circuit)開発のフローとして、論理合成後の配置配線情報を高位合成にフィードバックすることで、最適なRTL回路を得る事が出来るようにしたものである。
しかしながら、特許文献1に記載された半導体集積回路装置の設計方法は、FPGA特有の構成であるロジックセルを考慮していないため、FPGAへのマッピングがスムーズにできないという問題がある。以下、この点について説明する。
FPGAは、ルックアップテーブル(LUT)とフリップフロップ(FF)で構成されたロジックセルの集合体であり、FPGAの設計の場合、論理合成の後に、ネットリスト記述の回路をFPGA内のロジックセルにマッピングするインプリメンテーションを行う。
このとき、高位合成で論理合成できる(タイミングに問題のない)RTL回路を得る事が出来ても、論理合成されたネットリスト記述の回路をロジックセルにマッピングする事でタイミングに問題が出てしまうことがある。
即ち、ASICではAND回路やOR回路等を自由に使用してロジックを構成し、ファンクションを実現するのに対し、FPGAでは多数のロジックセルを使用してファンクションを実現するため、ロジックセル間を信号が行き交う事となり、配線の遅延の積み上げが階段状に大きくなる。
特許文献1に記載された半導体集積回路装置の設計方法は、このような階段状に増える遅延を考慮していないため、FPGAへのマッピングがスムーズにできない。このため、以下の作業を繰り返して遅延の調整を行うことが必要となる。
即ち、マッピングなどをマニュアルで行い、配線遅延の厳しいデータパスを近い場所に配置するなど作業を行いマッピングで対応する。それでも出来ない場合は、入力するRTL回路にあたるRTL記述を生成し直すために、論理合成制約を厳しくして論理合成をやり直す。それでもインプリメンテーションができない場合は、高位合成制約を厳しくし、さらに論理合成制約を厳しくして、ネットリスト記述のレジスタ(フリップフロップ)間に収められているロジック回路の段数を減らすことでレジスタ間の遅延を抑え、インプリメンテーションがし易くなるように合成を繰り返すこととなる。
各作業は、基本的に出来るまで行うが、どうしても解決しない場合は上流の作業に移る事となり、各作業で解決するか否かのタイミングを見誤ると、無駄な工数を積み上げていく事となる。
本発明は、このような問題を解決するためになされたものであり、その目的は、高位合成を用いる半導体集積回路の設計において、FPGAに最適なセル遅延を持つRTL回路が迅速かつ容易に得られるようにすることである。
本発明に係る半導体集積回路の設計装置は、動作記述をRTL記述に変換する高位合成手段と、該高位合成手段により変換されたRTL記述をネットリスト記述に変換する論理合成手段と、該論理合成手段により変換されたネットリスト記述をFPGAにインプリメンテーションするインプリメンテーション手段と、該インプリメンテーション手段によりインプリメンテーション出来たか否かを判定する判定手段と、該判定手段によりインプリメンテーション出来なかったと判定されたとき、前記高位合成手段における高位合成制約を更新する制約更新手段と、を有する半導体集積回路の設計装置である。
本発明によれば、高位合成を用いる半導体集積回路の設計において、FPGAに最適なセル遅延を持つRTL回路が迅速かつ容易に得られる。
〈半導体集積回路の設計装置の構成〉
図1は本発明の実施形態に係る半導体集積回路の設計装置のハードウェア構成を示すブロック図である。
図1は本発明の実施形態に係る半導体集積回路の設計装置のハードウェア構成を示すブロック図である。
この半導体集積回路の設計装置はコンピュータシステムにより構成されている。コンピュータシステム110は、CPU(Central Processing Unit)111、ROM(Read Only Memory)112、RAM(Random Access Memory)113、HDD(ハードディスク)114、ディスプレイ装置115、キーボード116、マウス117、及びCD−ROM装置118を備えている。
CPU111は、ディスプレイ装置115、キーボード116、マウス117、CD−ROM装置118、ネットワーク装置(図示せず)、ROM112、RAM113又はHDD114との間でデータを入出力しながら処理を行う。
CD−ROMに記録された半導体集積回路の設計プログラムは、CPU111によりCD−ROM装置118を介して一旦HDD114に格納される。CPU111は、HDD114から適宜半導体集積回路の設計プログラムをRAM113にロードして実行することによってFPGAの設計を行う。
ここで、半導体集積回路の設計プログラムは、高位合成ツール、論理合成ツール、インプリメンテーションツール、制約更新ツールなどからなる。これらのツールの機能により実現される手段が本発明における高位合成手段、論理合成手段、インプリメンテーション手段、制約更新手段などに対応する。
〈半導体集積回路の設計装置の動作〉
図2は本発明の実施形態に係る半導体集積回路の設計装置の動作を示すフローチャートである。この図において、実線の矢印は、作業の遷移を示しており、破線の矢印は処理に必要なインプット情報及び処理によって生成されるアウトプット情報を示している。設計装置による処理の内、抽象度の一番高い高位合成を実施するところからフローがスタートする。
図2は本発明の実施形態に係る半導体集積回路の設計装置の動作を示すフローチャートである。この図において、実線の矢印は、作業の遷移を示しており、破線の矢印は処理に必要なインプット情報及び処理によって生成されるアウトプット情報を示している。設計装置による処理の内、抽象度の一番高い高位合成を実施するところからフローがスタートする。
ステップS1では、動作記述1及び高位合成制約2を高位合成ツールにインプットすると事で高位合成を行い、RTL記述4を生成する。動作記述1とは高位合成の回路生成の元となる動作記述で書かれた記述であり、高位合成制約2とは高位合成でどのような処理性能で回路を生成するかを指示する記述である。生成されたRTL記述4は高位合成でスケジューリングされたもので、高位合成制約通りの処理性能を満たしている。
ステップS2では、RTL記述4及び論理合成制約3を論理合成ツールにインプットする事で論理合成を行い、ネットリスト記述5を生成する。論理合成制約3とは高位合成制約2と同じ処理性能にする為に論理合成ツールへRTL回路の処理性能を指示する記述である。FPGA向けの論理合成ツールを使うことで、FPGAの特性に合った論理合成を行うことができる。
論理合成が完了すると、アウトプット情報のネットリスト記述5をインプリメンテーションツールにインプットして、インプリメンテーション(変換、マップ、配置配線)する(ステップS3)。次いで、インプリメンテーション出来たか否かを判定する(ステップS4)。
インプリメンテーション出来たと判定したときは(ステップS4:YES)、この図のフローが終了する。インプリメンテーション出来なかったと判定したときは(ステップS4:NO)、ステップS5へ進んで制約更新を行う。
ここで、インプリメンテーション出来なかったと判定したときは、一回目のインプリメンテーションか否か、即ち高位合成制約2がインプリメンテーションの結果のフィードバック情報により更新されていないかどうかを併せて判定する。判定の結果、一回目のインプリメンテーションであった場合にステップS5へ進む。
ステップS5では、インプリメンテーション(ステップS3)で得られる配線遅延情報など6を参照して、高位合成制約2で指示されている処理性能に合わない部分に対してフィードバックして高位合成制約2を更新し、新しい高位合成制約を作成する。
ここで、ステップS5で高位合成制約2を更新するときに参照される情報は、レジスタ対応情報(RTL記述のレジスタとネットリスト記述のレジスタとの対応関係を示す情報)と、配線遅延情報(FPGA内のFF間の遅延を示す情報)である。このレジスタ対応情報は、高位合成の結果と論理合成の結果で得られる。また、配線遅延情報は、インプリメンテーションの結果で得られる。
なお、この図における動作記述1、高位合成制約2、論理合成制約3、RTL記述4、ネットリスト記述5、及び配線遅延情報など6は、図1におけるHDD114に格納されている。
次いで、更新された高位合成制約を用いて、一回目と同じように高位合成(ステップS1)を行い、さらに論理合成(ステップS2)、FPGAへのインプリメンテーション(ステップS3)を行い、インプリメンテーションできたか否かを判定する(ステップS4)。
更新された高位合成制約は、更新される前の高位合成制約に比べて、論理合成(ステップS2)でネックとなる処理性能が改善されている。この改善された処理性能によりFPGAへのインプリメンテーションが容易となっている。このため、二回目のインプリメンテーションでは確実にインプリメンテーションされ、インプリメンテーションできたと判定され(ステップS4:YES)、この図のフローが終了する。
このように、本実施形態によれば、高位合成の結果と論理合成の結果で得られるレジスタ対応情報と、インプリメンテーションの結果で得られる配線遅延情報とを、高位合成時にインプットとして追加する。そして、高位合成のアウトプットに対して、レジスタ間の遅延を基にタイミングの厳しいデータパスを特定しスケジューリングをし直す。これにより、何度もFPGAにインプリメンテーションしなくても、FPGAに最適なセル遅延を持つRTL記述をスムーズに得る事が出来る。
〈動作記述の例〉
図3は図2における動作記述1を説明するための図である。この図は処理の動作のみを記述した動作記述であり、動作記述を記述出来る言語なら何でもよい。ここで、図3A、図3Bにおけるmod1.h、mod1.ccは、SystemC言語で記述された回路のサンプルコードである。
図3は図2における動作記述1を説明するための図である。この図は処理の動作のみを記述した動作記述であり、動作記述を記述出来る言語なら何でもよい。ここで、図3A、図3Bにおけるmod1.h、mod1.ccは、SystemC言語で記述された回路のサンプルコードである。
mod1.ccの7行目と8行目(ブランク行を含まない)にてin1とin2からデータが入力され、それぞれtmp_in1とtmp_in2に代入される。8ビットのtmp_in1とtmp_in2はデータを処理する関数のcalc()の引数となる。
tmp_in1とtmp_in2をcalc()関数で処理を行い、処理した結果をtmp_outへ格納する。格納されたtmp_outの8ビットのデータをoutに出力する。各ステートの遷移はmod1へ入力されるclk(クロック)信号の立ち上がりによる。mod1.ccの5行目にwhile(1)とあるように、clk信号でデータの入力、処理、データの出力が繰り返される。
〈高位合成制約の例〉
図4は図2における高位合成制約2を説明するための図である。ここで、図4Aは一番初め(一回目)に高位合成を行う際に用意する高位合成制約の一例であり、図4B、C、Dは制約変換(ステップS5)に従って更新された高位合成制約の例である。
図4は図2における高位合成制約2を説明するための図である。ここで、図4Aは一番初め(一回目)に高位合成を行う際に用意する高位合成制約の一例であり、図4B、C、Dは制約変換(ステップS5)に従って更新された高位合成制約の例である。
高位合成制約の中にはクロック信号の信号名、リセット信号の信号名、クロックサイクル、合成時のオプションが書かれている。オプションでは合成時にどのように振舞えばよいかを指示しており、図4Aでは合成を行う際に最低限の努力(minimum effort)で実施する事を指示している。
図4Bでは動作クロックの制約を図4Aより厳しくしている(5000ps→4500ps)。クロックサイクルの制約は回路全体に効いてくるため、問題になりそうな箇所が多い場合などに向いている。
図4Cでは動作合成オプションを最大限の努力(maximum effort)で実施するように指示しており、図4Bと同様、回路全体に対して効果を得る事を目的とする。図4Dでは動作合成オプションで図3の回路の動作記述で使用されている関数に対して高位合成範囲を指定する(inline module=calc)事により、高位合成の最適化を行う。
上記のように、場合により様々な高位合成制約条件を付加して二回目の高位合成及び論理合成を実施することで、FPGAへのインプリメンテーションを容易にし、確実にインプリメンテーションを行うことができる。
1…動作記述、2…高位合成制約、3…論理合成制約、4…RTL記述、5…ネットリスト記述、6…配線遅延情報など、110…コンピュータシステム、111…CPU、112…ROM、113…RAM、S1…高位合成ステップ、S2…論理合成ステップ、S3…インプリメンテーションステップ、S4…判定ステップ、S5…制約更新ステップ。
Claims (6)
- 動作記述をRTL記述に変換する高位合成手段と、
該高位合成手段により変換されたRTL記述をネットリスト記述に変換する論理合成手段と、
該論理合成手段により変換されたネットリスト記述をFPGAにインプリメンテーションするインプリメンテーション手段と、
該インプリメンテーション手段によりインプリメンテーション出来たか否かを判定する判定手段と、
該判定手段によりインプリメンテーション出来なかったと判定されたとき、前記高位合成手段における高位合成制約を更新する制約更新手段と、
を有する半導体集積回路の設計装置。 - 請求項1に記載された半導体集積回路の設計装置において、
前記判定手段は、インプリメンテーション出来なかったとき、該インプリメンテーションが一回目であるか否かを併せて判定し、一回目であるときのみインプリメンテーション出来なかったとの判定を出力する半導体集積回路の設計装置。 - 請求項1に記載された半導体集積回路の設計装置において、
前記制約更新手段は、スケジューリングに必要なクロックサイクルを更新する半導体集積回路の設計装置。 - 請求項1に記載された半導体集積回路の設計装置において、
前記制約更新手段は、どのように合成するか指示をするオプションを更新する半導体集積回路の設計装置。 - 請求項1に記載された半導体集積回路の設計装置において、
前記制約更新手段は、最適化の必要な部分の範囲を指示する情報を追加する半導体集積回路の設計装置。 - 動作記述をRTL記述に変換する高位合成ステップと、
該高位合成ステップにより変換されたRTL記述をネットリスト記述に変換する論理合成ステップと、
該論理合成ステップにより変換されたネットリスト記述をFPGAにインプリメンテーションするインプリメンテーションステップと、
該インプリメンテーションステップによりインプリメンテーション出来たか否かを判定する判定ステップと、
該判定ステップによりインプリメンテーション出来なかったと判定されたとき、前記高位合成ステップにおける高位合成制約を更新する制約更新ステップと、
を有する半導体集積回路の設計方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012245772A JP2014095955A (ja) | 2012-11-07 | 2012-11-07 | 半導体集積回路の設計装置及び設計方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2012245772A JP2014095955A (ja) | 2012-11-07 | 2012-11-07 | 半導体集積回路の設計装置及び設計方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2014095955A true JP2014095955A (ja) | 2014-05-22 |
Family
ID=50938996
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2012245772A Pending JP2014095955A (ja) | 2012-11-07 | 2012-11-07 | 半導体集積回路の設計装置及び設計方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2014095955A (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022508296A (ja) * | 2018-08-09 | 2022-01-19 | イーエニエーエスセー テック インスティチュート デ エンゲンハリア デ システマス エ コンピュータドレス テクノロジア エ シエンシア | フィールド・プログラマブル・ゲート・アレイのためのコードを最適化する方法および装置 |
-
2012
- 2012-11-07 JP JP2012245772A patent/JP2014095955A/ja active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2022508296A (ja) * | 2018-08-09 | 2022-01-19 | イーエニエーエスセー テック インスティチュート デ エンゲンハリア デ システマス エ コンピュータドレス テクノロジア エ シエンシア | フィールド・プログラマブル・ゲート・アレイのためのコードを最適化する方法および装置 |
JP7407192B2 (ja) | 2018-08-09 | 2023-12-28 | イーエニエーエスセー テック インスティチュート デ エンゲンハリア デ システマス エ コンピュータドレス テクノロジア エ シエンシア | フィールド・プログラマブル・ゲート・アレイのためのコードを最適化する方法および装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2006285865A (ja) | レジスタ転送レベル記述と動作記述間の対応関係特定方法、装置及びプログラム | |
US11361133B2 (en) | Method of reporting circuit performance for high-level synthesis | |
JP4492803B2 (ja) | 動作合成装置及びプログラム | |
US8117577B1 (en) | Determining timing paths within a circuit block of a programmable integrated circuit | |
US8656337B2 (en) | Optimization method and device for netlist used in logic circuit design for semiconductor integrated circuit | |
US8667435B1 (en) | Function symmetry-based optimization for physical synthesis of programmable integrated circuits | |
US8127259B2 (en) | Synthesis constraint creating device, behavioral synthesis device, synthesis constraint creating method and recording medium | |
Takizawa et al. | A design support tool set for asynchronous circuits with bundled-data implementation on FPGAs | |
US10606972B2 (en) | Method, design program, and design apparatus of a high level synthesis process of a circuit | |
CN115204076B (zh) | 集成电路的逻辑优化方法、装置、电子设备及可读介质 | |
JP6776069B2 (ja) | Rtl最適化システム及びrtl最適化プログラム | |
JP2014095955A (ja) | 半導体集積回路の設計装置及び設計方法 | |
US10430540B1 (en) | Processing a block diagram circuit design into an efficient high-level language representation | |
JP2014041598A (ja) | 論理回路設計方法、論理回路設計プログラム、および論理回路設計システム | |
JP6242170B2 (ja) | 回路設計支援装置及びプログラム | |
Robertson et al. | Timing verification of dynamically reconfigurable logic for the Xilinx Virtex FPGA series | |
JP6468743B2 (ja) | 情報処理装置及びその制御方法 | |
Singh et al. | Register-Transfer-Level Design for Application-Specific Integrated Circuits | |
CN113408223B (zh) | 一种基于智能分析的芯片设计方法 | |
JP5262678B2 (ja) | 動作合成システム、動作合成方法、及び動作合成用プログラム | |
JP2008152329A (ja) | 回路解析方法、及び回路解析プログラム、回路シミュレーション装置 | |
JP2009129367A (ja) | 動作合成システム、動作合成方法および動作合成用プログラム | |
JP2010257003A (ja) | 論理等価性検証システム、論理等価性検証方法、半導体集積回路の製造方法、制御プログラムおよび可読記憶媒体 | |
JP2006201825A (ja) | 集積回路の遅延解析方法及び遅延解析プログラム | |
JP2009169694A (ja) | 高位合成方法、高位合成装置及びプログラム |