JP5157534B2 - 動作合成装置、および、プログラム - Google Patents

動作合成装置、および、プログラム Download PDF

Info

Publication number
JP5157534B2
JP5157534B2 JP2008056173A JP2008056173A JP5157534B2 JP 5157534 B2 JP5157534 B2 JP 5157534B2 JP 2008056173 A JP2008056173 A JP 2008056173A JP 2008056173 A JP2008056173 A JP 2008056173A JP 5157534 B2 JP5157534 B2 JP 5157534B2
Authority
JP
Japan
Prior art keywords
synthesis
information
level description
processing
behavior
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.)
Expired - Fee Related
Application number
JP2008056173A
Other languages
English (en)
Other versions
JP2009211614A (ja
Inventor
哲也 青山
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
NEC Corp
Original Assignee
NEC Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by NEC Corp filed Critical NEC Corp
Priority to JP2008056173A priority Critical patent/JP5157534B2/ja
Priority to US12/399,326 priority patent/US8127259B2/en
Publication of JP2009211614A publication Critical patent/JP2009211614A/ja
Application granted granted Critical
Publication of JP5157534B2 publication Critical patent/JP5157534B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Description

本発明は、動作レベル記述からレジスタ転送レベル記述を作成する、動作合成装置、および、プログラムに関する。
現在、LSIやVLSI等の半導体集積回路の設計を支援するために、動作レベルの回路記述(動作レベル記述)からレジスタ転送レベルの記述(RTL記述)を合成する、動作合成処理が行われている(例えば、特許文献1を参照)。
特開2006−285865号公報
特許文献1に記載の技術では、この動作合成処理を行うにあたって、回路構成要素の制約を示した情報(合成制約情報)を、回路の設計者等が事前に用意しておく必要がある。
しかしながら、この合成制約情報を事前に用意しておくことは、非常に困難である。その理由としては、用意しておく合成制約情報は、対象となる回路の多種多様な回路情報を含んだライブラリに対応した情報でなければならないからである。
また、他の理由としては、動作レベル記述に適用する動作合成方法の違いによっても、必要となる合成制約情報は異なるため、動作合成の方法に基づいて最適な合成制約を用意しておく必要があるからである。
本発明は上記実情に鑑みてなされたものであり、事前に合成制約を用意しておく必要のない、動作合成装置、および、プログラムを提供することを目的とする。
上記目的を達成するため、この発明の第1の観点に係る動作合成装置は、
動作レベル記述から合成制約情報が示す制約を満たすようにレジスタ転送レベル記述を動作合成する動作合成装置であって、
前記レジスタ転送レベル記述に記載可能な回路構成要素を特定する情報をライブラリ情報として記憶するライブラリ情報記憶手段と、
前記動作レベル記述を言語レベルで最適化する言語レベル最適化手段と、
前記言語レベル最適化手段で最適化した際の最適化の実現方法を示す情報を、当該実現方法を適用した動作レベル記述内の処理を識別する情報と対応付けて記憶する、言語レベル最適化実現方法記憶手段と、
前記言語レベル最適化手段で最適化した動作レベル記述を解析して、該動作レベル記述に含まれる処理の所属属性を判別する所属属性判別手段と、
前記言語レベル最適化手段で最適化した動作レベル記述を解析して、該動作レベル記述に含まれる処理を処理の属性および前記所属属性判別手段で判別した所属属性毎に分類し、各処理の分類毎に、当該動作レベル記述内での出現数を取得する処理出現数取得手段と、
動作合成の合成内容を指示する合成指示情報を取得する合成指示情報取得手段と、
前記処理出現数取得手段で取得した処理の分類毎の出現数と、ライブラリ情報記憶手段に記憶したライブラリ情報と、前記言語レベル最適化実現方法記憶手段に記憶した情報とに基づいて、前記動作レベル記述が示す処理をレジスタ転送レベル記述で表現するために必要な前記合成指示情報が示す合成内容に合致する回路構成要素の種類と数とを示した情報を合成制約情報として生成する、合成制約情報生成手段と、
を備えることを特徴とする。
上記目的を達成するため、この発明の第の観点に係るプログラムは、
コンピュータを、
レジスタ転送レベル記述に記載可能な回路構成要素を特定する情報をライブラリ情報として記憶するライブラリ情報記憶手段、
作レベル記述を言語レベルで最適化する言語レベル最適化手段、
前記言語レベル最適化手段で最適化した際の最適化の実現方法を示す情報を、当該実現方法を適用した動作レベル記述内の処理を識別する情報と対応付けて記憶する、言語レベル最適化実現方法記憶手段、
前記言語レベル最適化手段で最適化した動作レベル記述を解析して、該動作レベル記述に含まれる処理の所属属性を判別する所属属性判別手段、
前記言語レベル最適化手段で最適化した動作レベル記述を解析して、該動作レベル記述に含まれる処理を処理の属性および前記所属属性判別手段で判別した所属属性毎に分類し、各処理の分類毎に、当該動作レベル記述内での出現数を取得する処理出現数取得手段、
動作合成の合成内容を指示する合成指示情報を取得する合成指示情報取得手段、
前記処理出現数取得手段で取得した処理の分類毎の出現数と、ライブラリ情報記憶手段に記憶したライブラリ情報と、前記言語レベル最適化実現方法記憶手段に記憶した情報とに基づいて、前記動作レベル記述が示す処理をレジスタ転送レベル記述で表現するために必要な前記合成指示情報が示す合成内容に合致する回路構成要素の種類と数とを示した情報を合成制約情報として生成する、合成制約情報生成手段、
して機能させる。
上記構成によれば、動作レベル記述を言語レベル最適化した記述と、ライブラリ情報とを照合することで、最適な合成制約を生成するので、事前に合成制約を用意しておく必要がない。
以下、本発明の実施形態に係る動作合成装置100について図面を参照して説明する。動作合成装置100は、半導体集積回路等の回路の動作レベル記述に基づいて動作合成処理を行い、レジスタ転送レベル記述を出力するものである。
なお、当該実施形態は本発明の原理の理解を容易にするためのものであり、本発明の範囲は、下記の実施形態に限られるものではなく、当業者が以下の実施形態の構成を適宜置換した他の実施形態も、本発明の範囲に含まれる。
(第1の実施の形態)
第1の実施形態に係る動作合成装置100は、図1に示すように、入力部10と、記憶部20と、処理部30と、出力部40とを備える。
入力部10は、キーボード等を備え、ユーザによって入力された動作合成を行うことを指示する指示情報や作成した動作レベル記述などを、処理部30に供給する。
記憶部20は、例えば、ハードディスクなどの記憶装置から構成され、処理部30が実行する動作プログラムを格納する他、本発明を実現するために必要な種々のデータを記憶する。本実施形態では、動作レベル記述記憶領域21、ライブラリ記憶領域22、合成指示記憶領域23、合成制約記憶領域24、中間レベル記述記憶領域25、処理出現数記憶領域26、RTレベル記述記憶領域27、などといった記憶領域が記憶部20内に設けられ、各記憶領域に所定のデータが格納される。
動作レベル記述記憶領域21は、動作レベル記述を記憶する領域である。図2(A)に、SystemCで記述されている動作レベル記述の例を示す。
図1に戻り、ライブラリ記憶領域22には、演算器、メモリ、入出力端子、マルチプレクサ、レジスタ、デコーダ、論理演算、定数テーブル等の回路構成要素に関する情報がライブラリ情報として登録されている。半導体集積回路のRTL記述は、ライブラリ記憶領域22に登録されている回路構成要素で構成する必要がある。
一例として、ライブラリ記憶領域22に格納されている、回路構成要素の演算器に関するライブラリ情報を図3(A)に示す。この例では、ビット幅が4、6、8、16ビットで符号がunsignedである4種類の加算器がライブラリ情報として、ライブラリ記憶領域23に登録されている。即ち、このライブラリ情報に基づくRTL記述内に加算器を配置する場合には、この4種類の加算器以外の加算器を配置することはできない。
図1に戻り、合成指示記憶領域23は、動作合成処理に対して設計者等が与える各種の指示情報を記憶する領域である。例えば、面積優先や遅延優先に合成することを指示するような合成回路全体に与える指示情報や、動作レベル記述内の特定の制御文や変数などに与える指示情報等が、合成指示記憶領域23に記憶される。
なお、上述した、動作レベル記述、ライブラリ情報、および、合成指示情報は、動作合成処理を行う前に回路設計者等によって事前に作成されて各領域に格納されている必要がある。
合成制約記憶領域24は、動作合成処理でRTレベル記述を生成する際に必要となる、演算器やレジスタなどの回路構成要素の種類や数などの制約を示す、合成制約情報を記憶する領域である。なお、この合成制約情報は、ユーザが事前に準備したものではなく、後述する合成制約生成処理によって、作成されるものである。
中間レベル記述記憶領域25は、動作合成の各工程で生成される記述(中間レベル記述)を記憶する領域である。また、中間レベル記述領域には、後述する合成生成処理において言語レベル最適化した動作レベル記述も格納される。
処理出現数記憶領域26は、動作レベル記述内の処理をその処理の属性(処理属性)で分類した分類毎にその動作レベル記述内での出現数を記憶する領域である。図3(B)に、処理出現数記憶領域26に記憶されている情報の例を示す。
図1に戻り、RTレベル記述記憶領域27は、動作合成処理によって、動作レベル記述から最終的に生成されるレジスタ転送レベル記述(RTレベル記述)を記憶する領域である。
処理部30は、CPU(Central Processing Unit)やROM(Read Only Memory)やRAM(Random Access Memory)等を備え、ROMをワークエリアとして、RAMや記憶部20に格納されている動作プログラムを実行することで、動作合成装置100の動作を制御する。
処理部30は、機能的には、動作合成部31と、合成制約生成部32とを備える。
動作合成部31は、ライブラリ記憶領域22に格納されたライブラリ情報、および、合成指示記憶領域23に格納された合成指示情報に基づいて、動作レベル記述からRTレベル記述を合成する動作合成処理を行う。なお、この動作合成処理は、言語レベル最適化工程、スケジューリング工程、リソースアロケーション工程、バインディング工程、その他の最適化工程等の工程が含まれる。
言語レベル最適化工程は、動作レベル記述に対して、関数呼び出しの解消(インライン展開)や、ループのアンロールや、不要コードの削除などの言語レベルでの最適化を行う工程である。
スケジューリング工程は、最適化された動作レベル記述から、制御とデータの流れを抽出し、どの工程(または状態)で、どのような処理や演算等を実行すべきかを決定する工程である。
リソースアロケーション工程は、回路構成要素の選択を行う工程である。
バインディング工程は、動作レベル記述で表現された各処理に対して、必要なハードウェアリソース(演算器などの回路素子、および、レジスタ等)を割り付ける工程である。
その他の最適化工程は、データパスの最適化等の処理を行う工程である。
なお、動作合成部31は、上述した各工程で作成される記述(中間レベル記述)を中間レベル記述記憶領域25に記憶する。また、動作合成部31は、上述した各工程を経て、最終的に、RTレベル記述を作成して、RTレベル記述記憶部20に記憶する。
合成制約生成部32は、言語レベル最適化された動作レベル記述を中間レベル記述記憶領域25から読み出して解析することにより、該動作レベル記述に含まれる演算、入力、出力等の処理をその処理の属性で分類して、分類毎に、動作レベル記述内での当該処理の出現数を取得し、処理出現数記憶領域26に格納する。
また、合成制約生成部32は、処理出現数記憶領域26に記憶した分類毎の出現数、ライブラリ記憶領域22に記憶されているライブラリ情報、および/又は合成指示記憶領域23に格納されている合成指示情報とを照合することで、合成制約情報を生成し、合成制約記憶領域24へ格納する。
続いて、上記構成の動作合成装置100による、合成制約生成処理について説明する。なお、予め、動作レベル記述、ライブラリ情報、合成指示情報が、動作レベル記述記憶領域21、ライブラリ記憶領域22、合成指示記憶領域23にそれぞれ格納されているものとする。
ユーザが、動作合成装置100の入力部10から合成制約生成処理を行う旨の指示を入力すると、その入力に応答して、処理部30は、図4に示す合成制約生成処理を開始する。
合成制約生成処理が開始されると、まず、処理部30の動作合成部31は、動作レベル記述記憶領域21と合成指示記憶領域23とにそれぞれ格納されている動作レベル記述と合成指示情報とを読み出す。そして、動作合成部31は、読み出した情報に基づいて、動作レベル記述の言語レベルの最適化を行い、最適化した動作レベル記述を、中間レベル記述記憶領域25に記憶する(ステップS101)。
例えば、図2(A)に示す動作レベル記述をこのステップS101の処理対象とした場合には、図2(B)に示すように、言語レベルの最適化がなされる。この例では、動作レベル記述内のループ制御文A1が、ループの繰り返し回数分だけ展開(アンロール)された、演算処理文B1〜B4に置換される。
図4に戻り、続いて、合成制約成部32は、言語レベルの最適化がなされた動作レベル記述を中間レベル記述記憶領域25から読み出して解析し、動作レベル記述に含まれる処理をその処理の属性で分類して、分類毎に動作レベル記述内での出現数を取得し、処理出現数記憶領域26に記憶する(ステップS102)。
例えば、図2(B)に示す最適化済の動作レベル記述を、ステップS102の処理の対象とした場合を考える。この場合、演算処理文B1〜B4に対応する処理は、処理種類「加算」、ビット幅「8」、および、符号「unsigned」の処理属性を有するものとして1つに分類され、動作レベル記述内での出現数4が特定される。また、演算処理文B5〜B8に対応する処理は、ビット幅「4」〜「7」の処理属性を有する処理としてそれぞれ別個に分類され、各分類毎に出現数1が特定される。そして、全体としては、図3(B)に示すような情報が、処理出現数記憶領域26に格納される。
図4に戻り、続いて、合成制約生成部32は、ステップS102の処理で処理出現数記憶領域26に記憶した情報とライブラリ記憶領域22に記憶されているライブラリ情報とに基づいて、動作レベル記述の処理をライブラリ情報に登録されている回路構成要素を用いて実現するうえで必要最低限となる回路構成要素の種類と数を合成制約情報として求め、合成制約記憶領域24に格納する(ステップS103)。
なお、合成制約生成部32は、ステップS103で、合成指示情報もさらに加えて、合成制約情報を求めてもよい。このようにすることで、合成指示情報に含まれる、合成回路全体に与えるような指示も、作成される合成制約情報に反映されるので、より合成制約情報の精度が増す。
以上で、合成制約生成処理は終了する。
ここで、上述した合成制約情報を求める処理(ステップS103)の具体例を、図3に示す。
図3(A)は、ライブラリ記憶領域22に記憶されているライブラリ情報を示した図であり、ビット幅の異なる4種類の加算器が登録されている。
図3(B)は、処理出現数記憶領域26に記憶されている情報を示した図であり、ビット幅「4」、「5」、「6」、「7」の加算処理が1つずつ、ビット幅「8」の加算処理が4つの、合計8つの加算処理が、動作レベル回路記述に含まれていることを示している。
この場合、合成制約情報は、以下のようにして求められる。即ち、図3(B)に示す、出現数が1でビット幅「4」の加算処理を実現するために最低限必要な(即ち、最もビット幅が小さい)、ライブラリに登録されている加算器として、ビット幅「4」の加算器が1個選択される。また、同様に、出現数がそれぞれ1であるビット幅「5」、「6」の加算処理を実現するために最低限必要なライブラリに登録されている加算器として、ビット幅「6」の加算器が2個選択される。また、同様に、出現数が1でビット幅「7」の加算処理、および、出現数が4でビット幅「8」の加算処理を実現するために最低限必要なライブラリに登録されている加算器として、ビット幅「8」の加算器が5個選択される。即ち、図3(C)に示すような合成制約情報が作成され、合成制約記憶領域24に記憶されることとなる。
次に、合成指示情報の作成(ステップS103)において、合成指示情報も用いる場合の具体例を図5に示す。
図5(A)は、ライブラリ記憶領域22に記憶されているライブラリ情報を示した図であり、ビット幅と符号の異なる6種類の演算器(加算器、減算器、加減算器)が登録されている。
図5(C)は、図5(B)に示す言語レベル最適化済動作レベル記述を解析して得られた、処理出現数記憶領域26に記憶されている情報を示した図である。この図より、ビット幅「8」、「16」で符号が「unsigned」の加算処理が1つずつ、ビット幅「8」で符号が「unsigned」の減算処理が1つ、ビット幅「16」で符号が「signed」の加算処理が1つの、合計4つの演算処理が、図5(B)の動作レベル記述に含まれていることがわかる。
なお、一般的に、加算処理と減算処理とを専用の演算器を使用して実現する場合(即ち、加算処理は加算器、減算処理は減算器を使用して実現する場合)と、加減算両方に対応できる演算器(加減算器)を使用して実現させる場合とでは、図6(A)に示すような、面積と遅延性の違いがあることが知られている。即ち、加算処理と減算処理とを実現する際に、加減算器を使用した方が、専用の演算器を使用した場合に比べて小さい回路面積を実現できるが、遅延性については、加減算器を使用した方が、専用の演算器を使用した場合に比べて、遅延が大きい回路となる。
また、一般的に、符号がsigned、unsignedである演算処理を専用の演算器を使用して実現する場合(即ち、符号signedの演算は符号signedのみに対応する演算器、符号unsignedの演算は符号unsignedのみに対応する演算器を使用して実現する場合)と、符号がsigned、unsignedの両方の演算に対応できる演算器(符号混在演算器)を使用して実現させる場合とでは、図6(B)に示すような、面積と遅延性の違いがあることが知られている。即ち、符号がsigned、unsignedである演算処理を実現する際に、符号混在演算器を使用した方が、専用の演算器を使用した場合に比べて小さい回路面積を実現できるが、遅延性については、符号混在演算器を使用した方が、専用の演算器を使用した場合に比べて、遅延が大きい回路となる。
このような場合において、合成制約指示情報に、動作合成を「面積優先」で行うことを指示する情報が含まれている場合には、動作合成部は、図5(D)に示すような、合成制約情報を作成する。即ち、図5(C)に示す、ビット幅「8」の加算処理を実現するために、最低限必要な(即ち、最もビット幅が小さい)、ライブラリに登録されている演算器は、ビット幅「8」の加算器と加減算器との2種類があるが、「面積優先」であるため、ビット幅「8」の加減算器が選択される。同様に、ビット幅「8」の減算処理を実現するために、最低限必要であり、且つ、「面積優先」に対応した演算器として、ライブラリからビット幅「8」の加減算器が選択される。同様に、ビット幅「16」で符号「unsigned」の加算処理を実現するために、最低限必要であり、且つ、「面積優先」に対応した演算器として、ビット幅「16」で符号が「signed,unsigned」である加算器が選択される。同様に、ビット幅「16」で符号「signed」の加算処理を実現するために、最低限必要であり、且つ、「面積優先」に対応した演算器として、ビット幅「16」で符号が「signed,unsigned」である加算器が選択される。
また、このような場合において、合成制約指示情報に、動作合成を「遅延優先」で行うことを指示する情報が含まれている場合には、動作合成部は、図5(E)に示すような、合成制約情報を作成する。即ち、図5(C)に示す、ビット幅「8」の加算処理を実現するために、最低限必要な(即ち、最もビット幅が小さい)、ライブラリに登録されている演算器は、ビット幅「8」の加算器と加減算器との2種類があるが、「遅延優先」であるため、ビット幅「8」の加算器が選択される。同様に、ビット幅「8」の減算処理を実現するために、最低限必要であり、且つ、「遅延優先」に対応した演算器として、ライブラリからビット幅「8」の減算器が選択される。同様に、ビット幅「16」で符号「unsigned」の加算処理を実現するために、最低限必要であり、且つ、「遅延優先」に対応した演算器として、ビット幅「16」で符号が「unsigned」である加算器が選択される。同様に、ビット幅「16」で符号「signed」の加算処理を実現するために、最低限必要であり、且つ、「面積優先」に対応した演算器として、ビット幅「16」で符号が「signed」である加算器が選択される。
このように、第1の実施形態に係る動作合成装置100は、言語レベル最適化した動作レベル記述とライブラリ情報に基づいて合成制約を生成する。また、合成指示情報も合成制約の作成に利用することで、より精度の高い作成を行うことも可能である。
そして、このようにして作成した合成制約情報に基づいて、動作合成装置100の合成制約生成部32は、以下、回路設計者等からの指示を受けて、RTLレベルを作成する。そのため、本実施形態では、事前に合成制約を準備すること無しに、動作合成を行うことができる。
(第2の実施形態)
上記第1の実施形態では、合成制約情報の作成にあたっては、処理の所属属性と言語レベル最適化実現方法とは考慮されない。第2の実施形態では、処理の所属属性と言語レベル最適化実現方法とを考慮に入れて合成制約情報を作成するため、より回路設計者の要求に合致した合成制約情報を生成できる。
第2の実施形態に係る動作合成装置200を、図7に示す。第2の実施形態に係る動作合成装置200は、図1に示した動作合成装置100の記憶部20から、処理出現数記憶領域26を削除し、所属別処理出現数記憶領域28と言語レベル最適化実現方法記憶領域29とを新たに追加した構成となる。
所属別処理出現数記憶領域28は、動作レベル記述内の処理をその処理の属性(処理属性)と所属属性とで分類した分類毎の出現数を記憶する領域である。
なお、ここでいう所属属性とは、当該処理が動作レベル記述内でどのような制御ブロックに属しているかを示す情報であり、例えば、当該処理がループ制御文のボディに属しているか、関数内に属しているか等を示す情報である。
言語レベル最適化実現方法記憶領域29は、動作合成部31が動作レベル記述を言語レベル最適化した際の最適化の実現方法を示す情報を格納する領域である。一般的な言語レベル最適化の実現方法としては、ループ制御文の展開(アンロール)や、関数呼び出しの解消(インライン展開)等である。
続いて、上記構成の動作合成装置200による、合成制約生成処理について、図9のフローチャートを参照して説明する。
合成制約生成処理が開始されると、動作合成装置200の処理部30の動作合成部31は、動作レベル記述の言語レベルの最適化を行い、最適化した動作レベル記述を、中間レベル記述記憶領域25に記憶する(ステップS201)。なお、この処理は、第1の実施形態の動作合成装置100の処理(図4;ステップS101)と実質的に同一な処理である。
例えば、図8(A)に示す動作レベル記述をこのステップS101の処理対象とした場合には、図8(B)に示すように、言語レベルの最適化がなされる。この例では、動作レベル記述内のループ制御文C4が、ループの繰り返し回数分だけ展開(アンロール)された、演算処理文D4〜D7に置換される。また、C2、C5の関数の呼び出し処理は、呼び出される関数のコードを展開(インライン展開)された、演算処理文D2、D8に展開される。
図10に戻り、続いて、動作合成部31は、最適化の実現方法の種類毎に、当該実現方法を適用した箇所にIDを発行して、該IDと、当該適用した最適化の実現方法の種類を特定する情報(最適化実現方法特定情報)とを対応づけて、言語レベル最適化実現方法記憶領域29に格納する(ステップS202)。
この処理ステップS202を具体例を以下に説明する。
例えば、図8(A)に示す動作レベル記述を、図8(B)に示すように言語レベル最適化した場合には、合成制約生成部32は、ループ制御文をアンロールした演算処理文D4〜D7に、共通のID「01」を発行し、このID「01」と最適化実現方法特定情報「ループのアンロール(繰り返し回数4)」とを対応付けて、言語レベル最適化実現方法記憶領域29に記憶する。また、合成制約生成部32は、関数をインライン展開した処理D2、D8には、共通のID「02」を発行し、このID「02」と最適化実現方法特定情報「関数のインライン展開(呼び出し回数2)」とを対応付けて、言語レベル最適化実現方法記憶領域29に記憶する。そして、全体としては、図9(C)に示すような情報が、言語レベル最適化実現方法記憶領域29に記憶される。
なお、このステップS202の処理は、動作レベル記述の言語レベル最適化の処理(ステップS201)の際に、動作合成部31が行ってもよい。
図9に戻り、続いて、合成制約生成部32は、言語レベルの最適化がなされた動作レベル記述を中間レベル記述記憶領域25から読み出して解析し、言語レベル最適化済動作レベル記述に含まれる処理を処理属性で分類する。さらに、合成制約生成部32は、言語レベルの最適化がなされる前の動作レベル記述も動作レベル記述記憶領域21から読み出して解析し、言語レベル最適化済の動作レベル記述内の各処理の、最適化前の動作レベル記述内での所属属性を判別する。そして、合成制約生成部32は、さきほどの処理属性で分類した処理を所属属性でさらに分類する。そして、合成制約生成部32は、このようにして処理属性と所属属性とで分類した分類毎に、各処理の言語レベル最適化済の動作レベル記述内での出現数を取得し、所属別処理出現数記憶領域28に格納する(ステップS203)。
なお、このステップS203の処理は、動作レベル記述の言語レベル最適化の処理(ステップS201)の際に、動作合成部31が行ってもよい。
また、ステップS202の処理とステップS203の処理を順序を逆に行ってもよい。
例えば、図8(B)に示す最適化済の動作レベル記述を、ステップS203の処理の対象とした場合を考える。この場合、演算処理文D1、D3に対応する処理は、処理種類「加算」、ビット幅「4」、および、符号「unsigned」の処理属性、および、所属属性は図8(A)に示す最適化前の動作レベル記述でループなどの処理ブロックには属していないので「無」に分類され、出現数2が特定される。また、演算処理文D2、D8は、処理種類「減算」、ビット幅「4」、および、符号「unsigned」の処理属性、および、所属属性は図8(A)に示す最適化前の動作レベル記述では関数呼出文C2、C5に対応するため「関数」に分類され、その出現数2が特定される。また、演算処理文D4〜D7は、処理種類「加算」、ビット幅「8」、および、符号「unsigned」の処理属性、および、所属属性は図8(A)に示す最適化前の動作レベル記述ではループ制御文C4に対応するため「ループ」に分類され、その出現数4が特定される。そして、全体としては、図10(B)に示すような情報が、所属別処理出現数記憶領域28に格納される。
図9に戻り、続いて、合成制約生成部32は、ステップS202で言語レベル最適化実現方法記憶領域29に記憶した最適化実現方法特定情報と、ステップS203の処理で所属別処理出現数記憶領域28に記憶した情報と、ライブラリ記憶領域22に記憶されているライブラリ情報と、合成指示記憶領域23に記憶されている合成指示情報とに基づいて、動作レベル記述の処理をライブラリ情報に登録されている回路構成要素を用いて実現するうえで、必要最低限となり、且つ、指示情報が示す最適化の種類を反映した、回路構成要素の種類と数とを合成制約情報として求め、合成制約記憶領域24に格納する(ステップS204)。
以上で、合成制約生成処理は終了する。
ここで、上述した合成制約情報を求める処理(ステップS204)の具体例を、図10に示す。
図10(A)は、ライブラリ記憶領域22に記憶されているライブラリ情報を示した図であり、3種類の加算器、減算器が登録されている。
図10(B)は、所属別処理出現数記憶領域28に記憶されている情報を示した図であり、所属属性が「無」の加算処理が2個、所属属性「ループ」の加算処理が4個、所属属性「関数」の減算処理が2個の合計8つの演算処理が、図8(B)に示す動作レベル記述に含まれていることを示している。
図10(C)は、言語レベル最適化実現方法記憶領域29に記憶されている情報を示した図であり、言語レベル最適化により、ID「01」で特定できる処理(図8(B)の動作記述のD4〜D7の処理)に繰り返し回数4回のループ展開(アンロール)がなされ、また、ID「02」で特定できる処理(図8(B)の動作記述のD2、D8の処理)に呼び出し回数2回の関数のインライン展開がなされたことが示されている。
また、合成指示記憶領域23には、動作合成処理に対する面積優先合成と遅延優先合成の優先割合を示す情報が記憶可能であり、この例では、「面積優先と遅延優先との優先度の割合を1:1になるように動作合成を行う」ことが合成指示情報記憶領域23に記憶されている。
この場合、合成制約情報は、以下のようにして求められる。まず、ID「01」の処理について着目すると、この処理は、図10(B)、図10(C)より繰り返し回数は4回で、ループアンロールにより展開された処理は4つであることが分かる。従って、この4つの処理全てに演算器(加算器)を割り当てる、即ち、演算器4個の制約を生成すると、4つの処理全てが同時に各演算器で実行できるため、最大の並列度が達成できるが、面積は演算器4個分の大きいものとなってしまう。一方、この4つの処理に対して、処理を実現可能な最小の構成である演算器1個を制約として生成すると、面積は演算器1個分の最小の面積となるが、4つの処理を1つの演算器で順次実行していく必要があるため、先ほどの4つの演算器を制約とした場合と比べて、4倍の遅延時間となる。ここで、合成指示情報は、「面積優先と遅延優先との優先度の割合を1:1になるように動作合成を行う」ことを指示しているので、この場合、上述した遅延が最小になる状況と、面積が最小になる状況との中間をとり、この4つの処理を実現するのに、演算器(加算器)2個が、合成制約として求まる。
同様に、ID「02」の処理について着目すると、この処理は、図10(B)、図10(C)より呼び出し回数は2回で、インライン展開された処理は2つであることが分かるため、合成指示情報が示す「面積優先と遅延優先との優先度の割合を1:1になるように動作合成を行う」ことを達成するために、この処理を実現するのに、演算器(減算器)1個が、合成制約として求まる。
また、所属属性「無」の処理に対しても、該当の出現数は、図10(B)より2個であるため、合成指示情報が示す「面積優先と遅延優先との優先度の割合を1:1になるように動作合成を行う」ことを達成するために、この処理を実現するのに、演算器(加算器)1個が、合成制約として求まる。
以上、まとめると、図10(D)に示すような合成制約情報が最終的に作成され、合成制約記憶領域24に記憶されることとなる。
このように、第2の実施形態に係る動作合成装置100は、処理の所属属性と言語レベル最適化実現方法とを考慮に入れて、合成制約を生成する。従って、この合成制約を利用して動作合成を行うことにより、回路の設計効率のよりよいRTL記述を作成することができる。
なお、本発明は、上記実施の形態で示したものに限定されず、様々な変形および応用が可能である。
例えば、本実施形態では、回路構成要素の演算器の処理属性として、「処理種類」、「ビット幅」、「符号」の3つを示したが、これに限ることはなく、RTL記述の作成に影響を与える他の属性(例えば、演算器の面積、遅延等)がある場合には、その属性も用いて演算器を分類して、出現数を取得してもよい。
また、本実施形態では、回路構成要素の演算器を例にして、合成制約の生成を説明したが、これに限らず、回路構成要素としては、レジスタ等の記憶要素や入出力端子等にも、本発明を同様に適用可能である。また、その場合には、その回路構成要素に対応した処理属性(例えばレジスタであれば構成ビット数などの処理属性)で、回路構成要素を分類して、その出現数を取得する必要がある。
また、本実施形態では、動作レベル記述の具体例として、図2、図8等に、SystemCで記述された動作レベル記述を示したが、これに限らず、C言語等のプログラミング言語や、他のHDL(Hardware Description Language)等を用いた動作レベル記述にも、本発明は適用可能である。
また、本発明の動作合成装置は、専用のハードウェアに限られるものではなく、通常のコンピュータによっても実現することができる。
具体的には、上記実施の形態では、動作合成装置のプログラムが、メモリ等に予め記憶されているものとして説明した。しかし、上述の処理動作を実行させるためのプログラムを、フレキシブルディスク、CD−ROM(Compact Disk Read-Only Memory)、DVD(Digital Versatile Disk)、MO(Magneto-Optical disk)等のコンピュータ読み取り可能な記録媒体に格納して配布し、そのプログラムをコンピュータにインストールすることにより、上述の処理を実行するプログラムプロファイリング装置を構成してもよい。
また、プログラムをインターネット等の通信ネットワーク上のサーバ装置が有するディスク装置等に格納しておき、例えば、搬送波に重畳させて、コンピュータにダウンロード等するようにしてもよい。さらに、通信ネットワークを介してプログラムを転送しながら起動実行することによっても、上述の処理を達成することができる。
また、上述の機能を、OS(Operating System)が分担又はOSとアプリケーションの協働により実現する場合等には、OS以外の部分のみを媒体に格納して配布してもよく、また、コンピュータにダウンロード等してもよい。
第1の実施形態に係る動作合成装置の構成を示すブロック図である。 第1の実施形態において、動作レベル記述を言語最適化する例を示し図である。 第1の実施形態における、合成制約情報の作成の処理を具体的に説明するための図である。 第1の実施形態における、合成制約生成処理を説明するためのフローチャートである。 第1の実施形態における、合成指示情報も用いる場合の、合成制約情報の作成の処理を具体的に説明するための図である。 演算器の種類によって、面積と遅延性に違いがあることを説明するための図である。 第2の実施形態に係る動作合成装置の構成を示すブロック図である。 第2の実施形態において、動作レベル記述を言語最適化する例を示し図である。 第2の実施形態における、合成制約生成処理を説明するためのフローチャートである。 第2の実施形態における、合成制約情報の作成の処理を具体的に説明するための図である。
符号の説明
10 入力部
20 記憶部
21 動作レベル記述記憶領域
22 ライブラリ記憶領域
23 合成指示記憶領域
24 合成制約記憶領域
25 中間レベル記述記憶領域
26 処理出現数記憶領域
27 RTレベル記述記憶領域
30 処理部
31 動作合成部
32 合成制約生成部
40 出力部
100 動作合成装置

Claims (6)

  1. 動作レベル記述から合成制約情報が示す制約を満たすようにレジスタ転送レベル記述を動作合成する動作合成装置であって、
    前記レジスタ転送レベル記述に記載可能な回路構成要素を特定する情報をライブラリ情報として記憶するライブラリ情報記憶手段と、
    前記動作レベル記述を言語レベルで最適化する言語レベル最適化手段と、
    前記言語レベル最適化手段で最適化した際の最適化の実現方法を示す情報を、当該実現方法を適用した動作レベル記述内の処理を識別する情報と対応付けて記憶する、言語レベル最適化実現方法記憶手段と、
    前記言語レベル最適化手段で最適化した動作レベル記述を解析して、該動作レベル記述に含まれる処理の所属属性を判別する所属属性判別手段と、
    前記言語レベル最適化手段で最適化した動作レベル記述を解析して、該動作レベル記述に含まれる処理を処理の属性および前記所属属性判別手段で判別した所属属性毎に分類し、各処理の分類毎に、当該動作レベル記述内での出現数を取得する処理出現数取得手段と、
    動作合成の合成内容を指示する合成指示情報を取得する合成指示情報取得手段と、
    前記処理出現数取得手段で取得した処理の分類毎の出現数と、ライブラリ情報記憶手段に記憶したライブラリ情報と、前記言語レベル最適化実現方法記憶手段に記憶した情報とに基づいて、前記動作レベル記述が示す処理をレジスタ転送レベル記述で表現するために必要な前記合成指示情報が示す合成内容に合致する回路構成要素の種類と数とを示した情報を合成制約情報として生成する、合成制約情報生成手段と、
    を備えることを特徴とする、動作合成装置。
  2. 前記処理の所属属性は、当該処理の動作レベル記述内での位置が、ループ内であること、所定の関数内であること、関数外であることの少なくとも1つを含む、
    ことを特徴とする、請求項に記載の動作合成装置。
  3. 前記回路構成要素は、演算要素、記憶要素、入力要素、出力要素の少なくとも1つを含む、
    ことを特徴とする、請求項1又は2に記載の動作合成装置。
  4. 前記合成指示情報は、動作合成を、回路面積優先で行うことを示した情報か遅延優先で行うことを示した情報かの何れか一方の情報を含む、
    ことを特徴とする、請求項乃至の何れか1つに記載の動作合成装置。
  5. 前記合成指示情報は、動作合成を回路面積優先で行うことと遅延優先で行うこととの優先度の割合を示した情報である、
    ことを特徴とする、請求項乃至の何れか1つに記載の動作合成装置。
  6. コンピュータを、
    レジスタ転送レベル記述に記載可能な回路構成要素を特定する情報をライブラリ情報として記憶するライブラリ情報記憶手段、
    作レベル記述を言語レベルで最適化する言語レベル最適化手段、
    前記言語レベル最適化手段で最適化した際の最適化の実現方法を示す情報を、当該実現方法を適用した動作レベル記述内の処理を識別する情報と対応付けて記憶する、言語レベル最適化実現方法記憶手段、
    前記言語レベル最適化手段で最適化した動作レベル記述を解析して、該動作レベル記述に含まれる処理の所属属性を判別する所属属性判別手段、
    前記言語レベル最適化手段で最適化した動作レベル記述を解析して、該動作レベル記述に含まれる処理を処理の属性および前記所属属性判別手段で判別した所属属性毎に分類し、各処理の分類毎に、当該動作レベル記述内での出現数を取得する処理出現数取得手段、
    動作合成の合成内容を指示する合成指示情報を取得する合成指示情報取得手段、
    前記処理出現数取得手段で取得した処理の分類毎の出現数と、ライブラリ情報記憶手段に記憶したライブラリ情報と、前記言語レベル最適化実現方法記憶手段に記憶した情報とに基づいて、前記動作レベル記述が示す処理をレジスタ転送レベル記述で表現するために必要な前記合成指示情報が示す合成内容に合致する回路構成要素の種類と数とを示した情報を合成制約情報として生成する、合成制約情報生成手段、
    して機能させるプログラム。
JP2008056173A 2008-03-06 2008-03-06 動作合成装置、および、プログラム Expired - Fee Related JP5157534B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008056173A JP5157534B2 (ja) 2008-03-06 2008-03-06 動作合成装置、および、プログラム
US12/399,326 US8127259B2 (en) 2008-03-06 2009-03-06 Synthesis constraint creating device, behavioral synthesis device, synthesis constraint creating method and recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008056173A JP5157534B2 (ja) 2008-03-06 2008-03-06 動作合成装置、および、プログラム

Publications (2)

Publication Number Publication Date
JP2009211614A JP2009211614A (ja) 2009-09-17
JP5157534B2 true JP5157534B2 (ja) 2013-03-06

Family

ID=41054928

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008056173A Expired - Fee Related JP5157534B2 (ja) 2008-03-06 2008-03-06 動作合成装置、および、プログラム

Country Status (2)

Country Link
US (1) US8127259B2 (ja)
JP (1) JP5157534B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5157534B2 (ja) * 2008-03-06 2013-03-06 日本電気株式会社 動作合成装置、および、プログラム
JP5228546B2 (ja) * 2008-03-13 2013-07-03 日本電気株式会社 動作合成装置、および、プログラム
JP5622257B2 (ja) * 2009-11-20 2014-11-12 日本電気株式会社 動作合成システム及び動作合成プログラム
JP5842255B2 (ja) * 2013-12-12 2016-01-13 国立大学法人東京工業大学 プログラミング言語による論理回路記述から論理回路を生成するための装置及び方法
JP6266183B2 (ja) * 2015-08-27 2018-01-24 三菱電機株式会社 回路設計支援装置および回路設計支援プログラム

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2938170B2 (ja) * 1990-09-07 1999-08-23 株式会社東芝 機能設計支援装置
JPH05334465A (ja) * 1992-06-02 1993-12-17 Nec Corp 演算器・記憶装置・データ転送装置必要数計数装置
JPH09160949A (ja) * 1995-12-07 1997-06-20 Hitachi Ltd ハードウエアとソフトウエアの混在システムの設計支援方法
JP3527146B2 (ja) * 1999-09-13 2004-05-17 Necエレクトロニクス株式会社 システム合成装置、システム合成方法およびシステム合成プログラムを記録した記録媒体
US7353491B2 (en) * 2004-05-28 2008-04-01 Peter Pius Gutberlet Optimization of memory accesses in a circuit design
JP2006285865A (ja) 2005-04-04 2006-10-19 Nec Electronics Corp レジスタ転送レベル記述と動作記述間の対応関係特定方法、装置及びプログラム
JP4580827B2 (ja) * 2005-06-17 2010-11-17 株式会社東芝 動作合成装置及び自動動作合成方法
JP2007102631A (ja) * 2005-10-06 2007-04-19 Matsushita Electric Ind Co Ltd 論理回路設計支援装置およびこれを用いた論理回路設計支援方法
JP2007287044A (ja) * 2006-04-19 2007-11-01 Toshiba Corp 設計支援装置
US7882483B2 (en) * 2007-05-31 2011-02-01 Atrenta, Inc. Method for checking constraints equivalence of an integrated circuit design
JP5157534B2 (ja) * 2008-03-06 2013-03-06 日本電気株式会社 動作合成装置、および、プログラム

Also Published As

Publication number Publication date
US20090228859A1 (en) 2009-09-10
US8127259B2 (en) 2012-02-28
JP2009211614A (ja) 2009-09-17

Similar Documents

Publication Publication Date Title
JP4580827B2 (ja) 動作合成装置及び自動動作合成方法
JP2009520268A5 (ja)
JP5157534B2 (ja) 動作合成装置、および、プログラム
JP2007034887A (ja) ハイレベル合成コンパイラ用のシフトレジスタファイルを自動生成するための方法および装置
JP2001202397A (ja) システム・オン・チップのアーキテクチャ設計支援システム及びアーキテクチャ生成方法
JP5228546B2 (ja) 動作合成装置、および、プログラム
US7735042B2 (en) Context aware sub-circuit layout modification
JPWO2020188658A1 (ja) アーキテクチャ推定装置、アーキテクチャ推定方法、およびアーキテクチャ推定プログラム
JP7025104B2 (ja) 情報処理装置、方法およびプログラム
JP2007080049A (ja) 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部
JP2018041301A (ja) Rtl最適化システム及びrtl最適化プログラム
JP6735951B2 (ja) 高位合成装置、高位合成方法および高位合成プログラム
JP2008204341A (ja) インタフェース合成装置
JP2007018313A (ja) 回路設計プログラム、回路設計装置、回路設計方法
JP2001209664A (ja) 高位合成方法並びに高位合成方法の実施に使用される記録媒体
JP5267376B2 (ja) 動作合成装置、動作合成方法、ならびに、プログラム
US10157164B2 (en) Hierarchical synthesis of computer machine instructions
JP6257421B2 (ja) 回路設計支援装置および回路設計支援プログラム
JP6545406B2 (ja) 高位合成装置、高位合成方法および高位合成プログラム
JP2007323606A (ja) 動作合成装置
JP5692063B2 (ja) 動作合成装置、動作合成方法、及びプログラム
JP6266183B2 (ja) 回路設計支援装置および回路設計支援プログラム
JP2005258767A (ja) 情報処理システムの構成方法および半導体集積回路
JPH10326297A (ja) 高位合成装置及びその記録媒体
JP2009301505A (ja) 半導体集積回路の消費電力見積り装置、消費電力見積り方法及びプログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110209

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120417

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120508

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120709

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20121113

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20121126

R150 Certificate of patent or registration of utility model

Ref document number: 5157534

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20151221

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees