JP6266183B2 - 回路設計支援装置および回路設計支援プログラム - Google Patents
回路設計支援装置および回路設計支援プログラム Download PDFInfo
- Publication number
- JP6266183B2 JP6266183B2 JP2017536155A JP2017536155A JP6266183B2 JP 6266183 B2 JP6266183 B2 JP 6266183B2 JP 2017536155 A JP2017536155 A JP 2017536155A JP 2017536155 A JP2017536155 A JP 2017536155A JP 6266183 B2 JP6266183 B2 JP 6266183B2
- Authority
- JP
- Japan
- Prior art keywords
- target
- assigned
- processing
- unit
- input
- 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
Links
- 238000013461 design Methods 0.000 title claims description 53
- 238000000034 method Methods 0.000 claims description 401
- 238000012545 processing Methods 0.000 claims description 117
- 230000015654 memory Effects 0.000 claims description 77
- 238000004364 calculation method Methods 0.000 claims description 13
- 230000006870 function Effects 0.000 description 24
- 230000015572 biosynthetic process Effects 0.000 description 15
- 238000003786 synthesis reaction Methods 0.000 description 15
- 238000010586 diagram Methods 0.000 description 7
- 239000004065 semiconductor Substances 0.000 description 3
- 210000000707 wrist Anatomy 0.000 description 3
- 238000012546 transfer Methods 0.000 description 2
- 101100403145 Danio rerio mul1a gene Proteins 0.000 description 1
- 239000002131 composite material Substances 0.000 description 1
- 238000007796 conventional method Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/343—Logical level
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic 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
本発明は、回路設計を支援する技術に関するものである。
半導体集積回路は、RTL(Register Transfer Level)で設計されている。
RTLによる回路設計では、組み合わせ回路の動作が記述される。組み合わせ回路は、レジスタとして機能するフリップフロップの出力を入力として、入力の状態に応じた出力を行う回路である。
近年、集積回路の回路規模が増大しており、RTLによる回路設計に多大な時間を要している。
そこで、RTLよりも抽象度が高い高級言語を用いてRTLを自動的に生成する高位合成という技術が提唱されており、高位合成を実現する高位合成ツールが市販されている。高級言語の一例は、C言語とC++言語とSystemCである。
RTLによる回路設計では、組み合わせ回路の動作が記述される。組み合わせ回路は、レジスタとして機能するフリップフロップの出力を入力として、入力の状態に応じた出力を行う回路である。
近年、集積回路の回路規模が増大しており、RTLによる回路設計に多大な時間を要している。
そこで、RTLよりも抽象度が高い高級言語を用いてRTLを自動的に生成する高位合成という技術が提唱されており、高位合成を実現する高位合成ツールが市販されている。高級言語の一例は、C言語とC++言語とSystemCである。
また、高位合成によってRTLを生成した場合、人手によってRTLを生成した場合に比べて、半導体集積回路の回路規模を削減できる可能性がある。高位合成において、回路共有を自動的に行うことができるためである。
このような高位合成は、ASIC(Application Specific Integrated Circuit)の設計に利用されていたが、近年、FPGA(Field Programmable Gate Array)に適用されるケースも増加している。
ASICは、使用するメモリと使用する乗算器の数が増えるほど、回路規模が増加する。
一方、FPGAにはメモリと乗算器が予め内蔵されているため、使用するメモリと使用する乗算器の数が内蔵されている数を超えなければ、FPGAの回路規模は増加しない。
しかし、フィルタリングのような複雑な処理が多い場合、使用する乗算器の数がFPGAに内蔵されている数を超えてしまう。
その場合、使用する乗算器の数を削減するため、乗算のビット幅を削減したり、乗算を用いないアルゴリズムに変更したりするケースがある。そして、乗算のビット幅を削減するケースでは演算精度が低くなってしまい、アルゴリズムを変更するケースでは演算数が増えてしまう。
また、内蔵する乗算器の数が多いFPGAを選択すると、費用が高くなってしまう。
ASICは、使用するメモリと使用する乗算器の数が増えるほど、回路規模が増加する。
一方、FPGAにはメモリと乗算器が予め内蔵されているため、使用するメモリと使用する乗算器の数が内蔵されている数を超えなければ、FPGAの回路規模は増加しない。
しかし、フィルタリングのような複雑な処理が多い場合、使用する乗算器の数がFPGAに内蔵されている数を超えてしまう。
その場合、使用する乗算器の数を削減するため、乗算のビット幅を削減したり、乗算を用いないアルゴリズムに変更したりするケースがある。そして、乗算のビット幅を削減するケースでは演算精度が低くなってしまい、アルゴリズムを変更するケースでは演算数が増えてしまう。
また、内蔵する乗算器の数が多いFPGAを選択すると、費用が高くなってしまう。
乗算器は、複数の論理素子を用いて構成される演算器の一例であり、FPGAに内蔵される複数の論理素子を用いて構成される。
そのため、乗算器以外の演算器の数についても、FPGAに内蔵される論理素子を用いて構成することが可能な数を超えないように設計する必要がある。
そのため、乗算器以外の演算器の数についても、FPGAに内蔵される論理素子を用いて構成することが可能な数を超えないように設計する必要がある。
前述の通り、高位合成は回路共有を自動的に行う。そのため、高位合成によって演算器が共有されて、使用する演算器の数が減り、使用する演算器の数が、FPGAに実装できる範囲に収まる可能性がある。
特許文献1には、並列記述間でハードウェア資源を共有した回路を生成することが開示されている。
特許文献2には、データフローグラフから、共通の回路で実行することによって削減される回路面積が大きいサブグラフを検出して、回路規模を削減することが開示されている。
しかし、特許文献1および特許文献2には、使用するメモリを増やすことによって、使用する演算器の数を減らすことについては開示されていない。つまり、FPGA内のメモリのうち、未使用のメモリを有効活用することによって、使用する演算器の数を減らし、使用する演算器の数を、FPGAに実装できる範囲に収めることついては、特許文献1および特許文献2には開示されていない。
特許文献2には、データフローグラフから、共通の回路で実行することによって削減される回路面積が大きいサブグラフを検出して、回路規模を削減することが開示されている。
しかし、特許文献1および特許文献2には、使用するメモリを増やすことによって、使用する演算器の数を減らすことについては開示されていない。つまり、FPGA内のメモリのうち、未使用のメモリを有効活用することによって、使用する演算器の数を減らし、使用する演算器の数を、FPGAに実装できる範囲に収めることついては、特許文献1および特許文献2には開示されていない。
従来の高位合成ツールは、設計者の指定に従って、配列をレジスタ化またはメモリ化するため、使用する演算器の数を減らすことを目的として、使用するメモリを増やすことはない。つまり、設計者が意図した数以上のメモリが使用されることはない。
ASICが設計対象となる場合、メモリの増加はコストの増加を招くため、メモリの数を少なくする設計が基本である。
一方、FPGAが設計対象となる場合、未使用のメモリを有効活用する方が効率的である。
しかし、未使用のメモリを有効活用する設計は、従来の高位合成では行われていない。
ASICが設計対象となる場合、メモリの増加はコストの増加を招くため、メモリの数を少なくする設計が基本である。
一方、FPGAが設計対象となる場合、未使用のメモリを有効活用する方が効率的である。
しかし、未使用のメモリを有効活用する設計は、従来の高位合成では行われていない。
本発明は、同じ種類の演算を行う複数の処理で演算器を共用する回路の設計を支援することを目的とする。
本発明の回路設計支援装置は、
順番に実行される複数の処理ステップそれぞれに1つ以上の処理が割り当てられたことを示すスケジューリング結果ファイルに示される処理のうち、演算を行う処理である対象処理と、前記対象処理が割り当てられた処理ステップの後に実行される処理ステップに割り当てられて前記対象処理と同じ種類の演算を行う処理である同種処理と、を特定する対象特定部と、
前記対象処理が割り当てられると前記対象処理と前記同種処理とで演算器を共用することが可能になる処理ステップを、移動先ステップとして特定する移動先特定部と、
前記スケジューリング結果ファイルの内容を、前記対象処理が前記移動先ステップに割り当てられた状態の内容に変更するスケジューリング変更部とを備える。
順番に実行される複数の処理ステップそれぞれに1つ以上の処理が割り当てられたことを示すスケジューリング結果ファイルに示される処理のうち、演算を行う処理である対象処理と、前記対象処理が割り当てられた処理ステップの後に実行される処理ステップに割り当てられて前記対象処理と同じ種類の演算を行う処理である同種処理と、を特定する対象特定部と、
前記対象処理が割り当てられると前記対象処理と前記同種処理とで演算器を共用することが可能になる処理ステップを、移動先ステップとして特定する移動先特定部と、
前記スケジューリング結果ファイルの内容を、前記対象処理が前記移動先ステップに割り当てられた状態の内容に変更するスケジューリング変更部とを備える。
本発明によれば、同じ種類の演算を行う複数の処理で演算器を共用する回路の設計を支援することができる。
実施の形態1.
回路の設計を支援する回路設計支援装置100について、図1から図19に基づいて説明する。具体的には、設計対象となる回路は半導体集積回路である。
回路の設計を支援する回路設計支援装置100について、図1から図19に基づいて説明する。具体的には、設計対象となる回路は半導体集積回路である。
***構成の説明***
図1に基づいて、回路設計支援装置100の概要について説明する。
回路設計支援装置100は、ソースコード101を基にしてRTLファイル109を生成する装置である。
ソースコード101は、回路の動作内容が高級言語を用いて記述されたファイルである。具体的には、高級言語は、C言語、C++言語またはSystemC言語である。
RTLファイル109は、回路の動作内容がHDL(Hardware Description Language)を用いて記述されたファイルである。RTLはRegister Transfer Levelの略称である。
図1に基づいて、回路設計支援装置100の概要について説明する。
回路設計支援装置100は、ソースコード101を基にしてRTLファイル109を生成する装置である。
ソースコード101は、回路の動作内容が高級言語を用いて記述されたファイルである。具体的には、高級言語は、C言語、C++言語またはSystemC言語である。
RTLファイル109は、回路の動作内容がHDL(Hardware Description Language)を用いて記述されたファイルである。RTLはRegister Transfer Levelの略称である。
図2に基づいて、回路設計支援装置100の構成について説明する。
回路設計支援装置100は、プロセッサ901とメモリ903とを備えるコンピュータである。プロセッサ901は信号線910を介してメモリ903に接続されている。
回路設計支援装置100は、プロセッサ901とメモリ903とを備えるコンピュータである。プロセッサ901は信号線910を介してメモリ903に接続されている。
プロセッサ901は、プロセッシングを行うIC(Integrated Circuit)である。具体的には、プロセッサ901は、CPU、DSPまたはGPUである。CPUはCentral Processing Unitの略称であり、DSPはDigital Signal Processorの略称であり、GPUはGraphics Processing Unitの略称である。
メモリ903はデータを記憶する記憶装置である。具体的には、メモリ903はRAM(Random Access Memory)である。
メモリ903はデータを記憶する記憶装置である。具体的には、メモリ903はRAM(Random Access Memory)である。
メモリ903には、回路設計支援装置100で使用、生成または入出力されるデータが記憶される。
具体的には、メモリ903には、ソースコード101と、CDFGファイル102と、スケジューリング結果ファイル103と、ステップ結果ファイル104と、RTLファイル109とが記憶される。さらに、メモリ903には、同種演算器リスト191と、対象処理リスト192と、スケジューリング変更ファイル193、ステップ変更ファイル194とが記憶される。これらのデータの内容については後述する。
具体的には、メモリ903には、ソースコード101と、CDFGファイル102と、スケジューリング結果ファイル103と、ステップ結果ファイル104と、RTLファイル109とが記憶される。さらに、メモリ903には、同種演算器リスト191と、対象処理リスト192と、スケジューリング変更ファイル193、ステップ変更ファイル194とが記憶される。これらのデータの内容については後述する。
その他に、メモリ903には、OS(Operating System)と、「部」の機能を実現するプログラムとが記憶されている。具体的には、「部」は、CDFG生成部110、スケジューリング部111、対象特定部120、移動先特定部130、ライフサイクル特定部140、スケジューリング変更部150およびRTL生成部112である。なお、「部」の機能を実現するプログラムは記憶媒体に記憶することができる。「部」の機能については後述する。
プロセッサ901は、OSを実行しながら「部」の機能を実現するプログラムを実行する。つまり、「部」の機能を実現するプログラムは、メモリ903にロードされ、プロセッサ901によって実行される。
なお、回路設計支援装置100が複数のプロセッサ901を備えて、複数のプロセッサ901が「部」の機能を実現するプログラムを連携して実行してもよい。
プロセッサ901は、OSを実行しながら「部」の機能を実現するプログラムを実行する。つまり、「部」の機能を実現するプログラムは、メモリ903にロードされ、プロセッサ901によって実行される。
なお、回路設計支援装置100が複数のプロセッサ901を備えて、複数のプロセッサ901が「部」の機能を実現するプログラムを連携して実行してもよい。
プロセッサ901とメモリ903とをまとめたハードウェアを「プロセッシングサーキットリ」という。
「部」は「工程」、「手順」または「処理」に読み替えてもよい。「部」の機能はファームウェアで実現してもよい。
「部」は「工程」、「手順」または「処理」に読み替えてもよい。「部」の機能はファームウェアで実現してもよい。
***動作の説明***
回路設計支援装置100の動作は回路設計支援方法に相当する。また、回路設計支援方法は回路設計支援プログラムの処理手順に相当する。
回路設計支援装置100の動作は回路設計支援方法に相当する。また、回路設計支援方法は回路設計支援プログラムの処理手順に相当する。
図3に基づいて、回路設計支援方法について説明する。
S110はCDFG生成処理である。CDFGは、Control Data Flow. Graphの略称である。
S110において、CDFG生成部110は、ソースコード101を用いて、CDFGファイル102を生成する。
CDFG生成処理(S110)は、高位合成において一般的に行われている処理であるため、処理の詳細についての説明は省略する。
S110はCDFG生成処理である。CDFGは、Control Data Flow. Graphの略称である。
S110において、CDFG生成部110は、ソースコード101を用いて、CDFGファイル102を生成する。
CDFG生成処理(S110)は、高位合成において一般的に行われている処理であるため、処理の詳細についての説明は省略する。
図4に、C言語で記述されたソースコード101の具体的な内容を示す。
このソースコード101には、3つの処理ブロックが記述されている。処理ブロックは、1つ以上の処理の纏まりである。
第1の処理ブロックは、a[i]*b[i]を演算する処理と、func0という関数を演算する処理とを含んでいる。
第2の処理ブロックは、func0という関数を演算する処理を含んでいる。
第3の処理ブロックは、c[i]*pを演算する処理を含んでいる。
第1の処理ブロックと第3の処理ブロックとのそれぞれの処理は、for文によって1024回繰り返し実行される。
このソースコード101には、3つの処理ブロックが記述されている。処理ブロックは、1つ以上の処理の纏まりである。
第1の処理ブロックは、a[i]*b[i]を演算する処理と、func0という関数を演算する処理とを含んでいる。
第2の処理ブロックは、func0という関数を演算する処理を含んでいる。
第3の処理ブロックは、c[i]*pを演算する処理を含んでいる。
第1の処理ブロックと第3の処理ブロックとのそれぞれの処理は、for文によって1024回繰り返し実行される。
図3に戻り、S111から説明を続ける。
S111はスケジューリング処理である。
S111において、スケジューリング部111は、CDFGファイル102を用いて、スケジューリング結果ファイル103とステップ結果ファイル104とを生成する。
スケジューリング処理(S111)は、高位合成において一般的に行われている処理であるため、処理の詳細についての説明は省略する。
なお、スケジューリング処理(S111)は、広義のスケジューリング処理に相当し、高位合成におけるアロケーション処理を含んだ処理である。アロケーション処理は、バインディング処理とも呼ばれる。
S111はスケジューリング処理である。
S111において、スケジューリング部111は、CDFGファイル102を用いて、スケジューリング結果ファイル103とステップ結果ファイル104とを生成する。
スケジューリング処理(S111)は、高位合成において一般的に行われている処理であるため、処理の詳細についての説明は省略する。
なお、スケジューリング処理(S111)は、広義のスケジューリング処理に相当し、高位合成におけるアロケーション処理を含んだ処理である。アロケーション処理は、バインディング処理とも呼ばれる。
スケジューリング結果ファイル103は、順番に実行される複数の処理ブロックそれぞれが1つ以上の処理ステップを有すること、および、順番に実行される複数の処理ステップそれぞれに1つ以上の処理が割り当てられたことを示す。
図5に、図4のソースコード101を基に生成されたCDFGファイル102を用いて生成されるスケジューリング結果ファイル103の内容を示す。
この図において、LOOP1、NonLOOPおよびLOOP2はブロック名である。LOOP1_ST1、LOOP1_ST2、Non_LOOP_ST1、LOOP2_ST1およびLOOP2_ST2はステップ名である。mulは乗算処理の処理名であり、Wは書込み処理の処理名であり、Rは読出し処理の処理名である。また、func0およびfunc1は関数名である。
スケジューリング結果ファイル103は、処理ブロックLOOP1が処理ステップLOOP1_ST1と処理ステップLOOP2_ST2とを有することを示している。そして、スケジューリング結果ファイル103は、処理ステップLOOP1_ST1にc=a*bを演算する処理とfunc0を演算する処理とが割り当てられて、処理ステップLOOP1_ST2にcをメモリに書き込む処理が割り当てられたことを示している。
スケジューリング結果ファイル103は、処理ブロックNonLOOPが処理ステップNonLOOP_ST1を有することを示している。そして、スケジューリング結果ファイル103は、処理ステップNonLOOP_ST1にfunc1を演算する処理が割り当てられたことを示している。
さらに、スケジューリング結果ファイル103は、処理ブロックLOOP2が処理ステップLOOP2_ST1と処理ステップLOOP2_ST2とを有することを示している。そして、スケジューリング結果ファイル103は、処理ステップLOOP2_ST1にcをメモリから読み出す処理が割り当てられて、処理ステップLOOP2_ST2にp*cを演算する処理が割り当てられたことを示している。
この図において、LOOP1、NonLOOPおよびLOOP2はブロック名である。LOOP1_ST1、LOOP1_ST2、Non_LOOP_ST1、LOOP2_ST1およびLOOP2_ST2はステップ名である。mulは乗算処理の処理名であり、Wは書込み処理の処理名であり、Rは読出し処理の処理名である。また、func0およびfunc1は関数名である。
スケジューリング結果ファイル103は、処理ブロックLOOP1が処理ステップLOOP1_ST1と処理ステップLOOP2_ST2とを有することを示している。そして、スケジューリング結果ファイル103は、処理ステップLOOP1_ST1にc=a*bを演算する処理とfunc0を演算する処理とが割り当てられて、処理ステップLOOP1_ST2にcをメモリに書き込む処理が割り当てられたことを示している。
スケジューリング結果ファイル103は、処理ブロックNonLOOPが処理ステップNonLOOP_ST1を有することを示している。そして、スケジューリング結果ファイル103は、処理ステップNonLOOP_ST1にfunc1を演算する処理が割り当てられたことを示している。
さらに、スケジューリング結果ファイル103は、処理ブロックLOOP2が処理ステップLOOP2_ST1と処理ステップLOOP2_ST2とを有することを示している。そして、スケジューリング結果ファイル103は、処理ステップLOOP2_ST1にcをメモリから読み出す処理が割り当てられて、処理ステップLOOP2_ST2にp*cを演算する処理が割り当てられたことを示している。
図6は、図5のスケジューリング結果ファイル103を用いてRTLファイル109が生成された場合において、RTLファイル109を用いて生成される回路の構成を示す図である。この回路は、1つのメモリと、mul1とmul2という2つの乗算器とを備えている。
ステップ結果ファイル104は、演算器およびメモリが使用される処理ステップを特定する情報を示す。
演算器は、加算、減算、乗算または除算などの演算を行う素子である。具体的には、演算器は、加算器、減算器、乗算器、除算器、または、これらの組み合わせである。
演算器は、加算、減算、乗算または除算などの演算を行う素子である。具体的には、演算器は、加算器、減算器、乗算器、除算器、または、これらの組み合わせである。
図7に、図4のソースコード101を基に生成されたCDFGファイル102を用いて生成されるステップ結果ファイル104の内容を示す。
この図において、mulは乗算器名であり、MEM_0はメモリ名であり、func0およびfunc1は関数を演算する演算器を識別する演算器名である。USEは演算器が使用されることを意味し、Wは書込み処理でメモリが使用されることを意味し、Rは読出し処理でメモリが使用されることを意味する。LOOP1、NonLOOPおよびLoop2はブロック名であり、ST1およびST2はステップ名の一部である。
ステップ結果ファイル104は、乗算器mulが処理ステップLOOP1_ST1および処理ステップLOOP2_ST2で使用されることを示している。ステップ結果ファイル104は、演算器func0が処理ステップLOOP1_ST1で使用され、演算器func1が処理ステップNonLOOPで使用されることを示している。さらに、ステップ結果ファイル104は、メモリMEM_0が処理ステップLOOP1_ST2および処理ステップLOOP2_ST1で使用されることを示している。
また、ステップ結果ファイル104は、処理ブロックLOOP1と処理ブロックLOOP2とのそれぞれの繰り返し回数が1024回であることを示している。さらに、ステップ結果ファイル104は、NonLOOPが繰り返し実行されないこと、つまり、NonLOOPの繰り返し回数が1回であることを示している。繰り返し回数は、繰り返して実行される回数である。
この図において、mulは乗算器名であり、MEM_0はメモリ名であり、func0およびfunc1は関数を演算する演算器を識別する演算器名である。USEは演算器が使用されることを意味し、Wは書込み処理でメモリが使用されることを意味し、Rは読出し処理でメモリが使用されることを意味する。LOOP1、NonLOOPおよびLoop2はブロック名であり、ST1およびST2はステップ名の一部である。
ステップ結果ファイル104は、乗算器mulが処理ステップLOOP1_ST1および処理ステップLOOP2_ST2で使用されることを示している。ステップ結果ファイル104は、演算器func0が処理ステップLOOP1_ST1で使用され、演算器func1が処理ステップNonLOOPで使用されることを示している。さらに、ステップ結果ファイル104は、メモリMEM_0が処理ステップLOOP1_ST2および処理ステップLOOP2_ST1で使用されることを示している。
また、ステップ結果ファイル104は、処理ブロックLOOP1と処理ブロックLOOP2とのそれぞれの繰り返し回数が1024回であることを示している。さらに、ステップ結果ファイル104は、NonLOOPが繰り返し実行されないこと、つまり、NonLOOPの繰り返し回数が1回であることを示している。繰り返し回数は、繰り返して実行される回数である。
図3に戻り、S120から説明を続ける。
S120は対象特定処理である。
S120において、対象特定部120は、スケジューリング結果ファイル103に示される処理のうち、対象処理と同種処理とを特定する。対象処理は、演算を行う処理である。同種処理は、対象処理が割り当てられた処理ステップの後に実行される処理ステップに割り当てられて、対象処理と同じ種類の演算を行う処理である。
但し、演算を行う処理である演算処理と演算処理とは別の処理である他の処理とが同じ処理ステップに割り当てられている場合、対象特定部120は、演算処理の出力が他の処理の入力になっていないことを条件に、演算処理を対象処理として特定する。
S120は対象特定処理である。
S120において、対象特定部120は、スケジューリング結果ファイル103に示される処理のうち、対象処理と同種処理とを特定する。対象処理は、演算を行う処理である。同種処理は、対象処理が割り当てられた処理ステップの後に実行される処理ステップに割り当てられて、対象処理と同じ種類の演算を行う処理である。
但し、演算を行う処理である演算処理と演算処理とは別の処理である他の処理とが同じ処理ステップに割り当てられている場合、対象特定部120は、演算処理の出力が他の処理の入力になっていないことを条件に、演算処理を対象処理として特定する。
図8に基づいて、対象特定処理(S120)の詳細について説明する。
S121において、対象特定部120は、ステップ結果ファイル104から、同種演算器名を取得する。同種演算器は複数の処理ステップで使用される演算器であり、同種演算器名は同種演算器を識別する演算器名である。図7のステップ結果ファイル104は、乗算器mulが処理ステップLOOP1_ST1および処理ステップLOOP2_ST2で使用されることを示している。したがって、図7のステップ結果ファイル104において、同種演算器名はmulである。
そして、対象特定部120は、同種演算器リスト191を生成し、生成した同種演算器リスト191に、同種演算器名と、第1の同種ステップ名と、第2の同種ステップ名とを登録する。第1の同種ステップは、同種演算器が使用される2つの処理ステップのうち、先に実行される方の処理ステップである。第1の同種ステップ名は、第1の同種ステップを識別するステップ名である。第2の同種ステップは、同種演算器が使用される2つの処理ステップのうち、後に実行される方の処理ステップである。第2の同種ステップ名は、第2の同種ステップを識別するステップ名である。
S121において、対象特定部120は、ステップ結果ファイル104から、同種演算器名を取得する。同種演算器は複数の処理ステップで使用される演算器であり、同種演算器名は同種演算器を識別する演算器名である。図7のステップ結果ファイル104は、乗算器mulが処理ステップLOOP1_ST1および処理ステップLOOP2_ST2で使用されることを示している。したがって、図7のステップ結果ファイル104において、同種演算器名はmulである。
そして、対象特定部120は、同種演算器リスト191を生成し、生成した同種演算器リスト191に、同種演算器名と、第1の同種ステップ名と、第2の同種ステップ名とを登録する。第1の同種ステップは、同種演算器が使用される2つの処理ステップのうち、先に実行される方の処理ステップである。第1の同種ステップ名は、第1の同種ステップを識別するステップ名である。第2の同種ステップは、同種演算器が使用される2つの処理ステップのうち、後に実行される方の処理ステップである。第2の同種ステップ名は、第2の同種ステップを識別するステップ名である。
図9に、図7のステップ結果ファイル104を用いて生成される同種演算器リスト191を示す。
同種演算器リスト191は、同種演算器である乗算器mulが第1の同種ステップLOOP1_ST1および第2の同種ステップLOOP2_ST2で使用されることを示している。
同種演算器リスト191は、同種演算器である乗算器mulが第1の同種ステップLOOP1_ST1および第2の同種ステップLOOP2_ST2で使用されることを示している。
図8に戻り、S122から説明を続ける。
S122において、対象特定部120は、同種演算器リスト191から選択されていない未選択の同種演算器名があるか判定する。
未選択の同種演算器名がある場合、処理はS123に進む。
未選択の同種演算器名がない場合、対象特定処理(S120)は終了する。
S122において、対象特定部120は、同種演算器リスト191から選択されていない未選択の同種演算器名があるか判定する。
未選択の同種演算器名がある場合、処理はS123に進む。
未選択の同種演算器名がない場合、対象特定処理(S120)は終了する。
S123において、対象特定部120は、未選択の同種演算器名を同種演算器リスト191から1つ選択する。
S124において、対象特定部120は、選択した同種演算器名に対応付いた第1の同種ステップ名を同種演算器リスト191から取得する。
そして、対象特定部120は、取得した第1の同種ステップ名で識別される第1の同種ステップの情報をスケジューリング結果ファイル103から取得する。
そして、対象特定部120は、取得した第1の同種ステップ名で識別される第1の同種ステップの情報をスケジューリング結果ファイル103から取得する。
S125において、対象特定部120は、取得した情報を用いて、第1の同種ステップに他の処理が割り当てられているか判定する。他の処理は同種演算処理とは別の処理であり、同種演算処理は同種演算器名に対応する名称の処理である。
他の処理が割り当てられている場合、処理はS126に進む。
他の処理が割り当てられていない場合、処理はS127に進む。
他の処理が割り当てられている場合、処理はS126に進む。
他の処理が割り当てられていない場合、処理はS127に進む。
図9の同種演算器リスト191において、同種演算器名はmulであり、第1の同種ステップ名はLOOP1_ST1である。
図5のスケジューリング結果ファイル103において、第1の同種ステップLOOP1_ST1には、同種演算処理mulとは別に、関数func0を演算する処理が割り当てられている。つまり、他の処理func0が第1の同種ステップLOOP1_ST1に割り当てられている。したがって、処理はS126に進む。
図5のスケジューリング結果ファイル103において、第1の同種ステップLOOP1_ST1には、同種演算処理mulとは別に、関数func0を演算する処理が割り当てられている。つまり、他の処理func0が第1の同種ステップLOOP1_ST1に割り当てられている。したがって、処理はS126に進む。
S126において、対象特定部120は、同種演算処理の出力が他の処理の入力になっているか判定する。
同種演算処理の出力が他の処理の入力になっている場合、処理はS122に戻る。
同種演算処理の出力が他の処理の入力になっていない場合、処理はS127に進む。
同種演算処理の出力が他の処理の入力になっている場合、処理はS122に戻る。
同種演算処理の出力が他の処理の入力になっていない場合、処理はS127に進む。
図5のスケジューリング結果ファイル103において、他の処理func0の入力は入力値aおよび入力値bである。つまり、同種演算処理mulから出力される出力値cは他の処理func0の入力になっていない。したがって、処理はS127に進む。
S127において、対象特定部120は、対象処理情報と同種処理情報とを対象処理リスト192に登録する。対象処理情報は対象処理を特定する情報であり、対象処理は第1の同種ステップに割り当てられた同種演算処理である。同種処理情報は同種処理を特定する情報であり、同種処理は第2の同種ステップに割り当てられた同種演算処理である。
S127の後、処理はS122に戻る。
S127の後、処理はS122に戻る。
図10に、図9の同種演算器リスト191と図5のスケジューリング結果ファイル103とを用いて生成される対象処理リスト192を示す。
対象処理リスト192には、対象処理情報として、処理名であるmulと、処理ステップ名であるLOOP1_ST1と、が登録されている。また、対象処理リスト192には、同種処理情報として、処理名であるmulと、処理ステップ名であるLOOP2_ST2と、が登録されている。
対象処理リスト192には、対象処理情報として、処理名であるmulと、処理ステップ名であるLOOP1_ST1と、が登録されている。また、対象処理リスト192には、同種処理情報として、処理名であるmulと、処理ステップ名であるLOOP2_ST2と、が登録されている。
図3に戻り、S130から説明を続ける。
S130は移動先特定処理である。
S130において、移動先特定部130は、対象処理の移動先となる移動先ステップを特定する。移動先ステップは、対象処理が割り当てられると対象処理と同種処理とで演算器を共用することが可能になる処理ステップである。
移動先特定部130は、対象処理が割り当てられた処理ステップが実行されてから同種処理が割り当てられた処理ステップが実行されるまでの間に実行される処理ステップから、移動先ステップを特定する。
S130は移動先特定処理である。
S130において、移動先特定部130は、対象処理の移動先となる移動先ステップを特定する。移動先ステップは、対象処理が割り当てられると対象処理と同種処理とで演算器を共用することが可能になる処理ステップである。
移動先特定部130は、対象処理が割り当てられた処理ステップが実行されてから同種処理が割り当てられた処理ステップが実行されるまでの間に実行される処理ステップから、移動先ステップを特定する。
移動先特定部130は、移動先ステップを以下の手順で特定する。
移動先特定部130は、演算を行う処理であって対象処理から出力される値が入力される処理である影響処理が割り当てられていない処理ステップを候補ステップとして特定し、特定した候補ステップから移動先ステップを特定する。
移動先特定部130は、演算を行う処理であって対象処理から出力される値が入力される処理である影響処理が割り当てられていない処理ステップを候補ステップとして特定し、特定した候補ステップから移動先ステップを特定する。
移動先特定部130は、移動先ステップを以下のように特定する。
移動先特定部130は、特定した候補ステップのうち、同種処理が割り当てられた処理ステップを有する処理ブロックが有する候補ステップを、移動先ステップとして特定する。
移動先特定部130は、特定した候補ステップのうち、同種処理が割り当てられた処理ステップを有する処理ブロックが有する候補ステップを、移動先ステップとして特定する。
図11に基づいて、移動先特定処理(S130)の詳細について説明する。
S131において、移動先特定部130は、対象処理リスト192から、対象処理情報と同種処理情報との組のうち、未選択の組を1つ選択する。
S131において、移動先特定部130は、対象処理リスト192から、対象処理情報と同種処理情報との組のうち、未選択の組を1つ選択する。
S132において、移動先特定部130は、対象処理情報から、対象処理が割り当てられた処理ステップである対象ステップのステップ名を、対象ステップ名として取得する。また、移動先特定部130は、同種処理情報から、同種処理が割り当てられた処理ステップである同種ステップのステップ名を、同種ステップ名として取得する。
そして、移動先特定部130は、スケジューリング結果ファイル103から、対象ステップ名で識別される対象ステップと同種ステップ名で識別される同種ステップとの間にある処理ステップの情報を、中間ステップの情報として取得する。中間ステップは、対象ステップが実行されてから同種ステップが実行されるまでの間に実行される処理ステップである。
そして、移動先特定部130は、スケジューリング結果ファイル103から、対象ステップ名で識別される対象ステップと同種ステップ名で識別される同種ステップとの間にある処理ステップの情報を、中間ステップの情報として取得する。中間ステップは、対象ステップが実行されてから同種ステップが実行されるまでの間に実行される処理ステップである。
図5のスケジューリング結果ファイル103において、対象処理が処理ステップLOOP1_ST1の処理mulであり、同種処理が処理ステップLOOP2_ST2の処理mulであるものとする。この場合、中間ステップは、LOOP1_ST2、NonLOOP_ST1およびLOOP2_ST1である。
S133において、移動先特定部130は、各中間ステップの情報に基づいて、対象処理が割り当てられると論理的に影響を受ける処理ステップである影響ステップを特定する。
具体的には、移動先特定部130は、影響ステップを以下のように特定する。
まず、移動先特定部130は、演算処理が割り当てられた中間ステップを特定する。
次に、移動先特定部130は、特定した中間ステップに割り当てられた演算処理に、対象処理から出力される値が入力されるか判定する。
そして、移動先特定部130は、対象処理から出力される値が入力される演算処理が割り当てられた中間ステップを、影響ステップとして特定する。
まず、移動先特定部130は、演算処理が割り当てられた中間ステップを特定する。
次に、移動先特定部130は、特定した中間ステップに割り当てられた演算処理に、対象処理から出力される値が入力されるか判定する。
そして、移動先特定部130は、対象処理から出力される値が入力される演算処理が割り当てられた中間ステップを、影響ステップとして特定する。
図5のスケジューリング結果ファイル103において、対象処理が処理ステップLOOP1_ST1の処理mulであり、中間ステップがLOOP1_ST2、NonLOOP_ST1およびLOOP2_ST1であるものとする。この場合、中間ステップLOOP1_ST2および中間ステップLOOP2_ST1には演算処理が割り当てられておらず、中間ステップNonLOOP_ST1に割り当てられた演算処理func1には対象処理mulの出力値cが入力されていない。したがって、いずれの中間ステップも影響ステップではない。
S134において、移動先特定部130は、取得した中間ステップの情報から、影響ステップではない中間ステップの情報を、候補ステップの情報として抽出する。
S135において、移動先特定部130は、同種処理情報から、同種ステップを有する処理ブロックである同種ブロックのブロック名を、同種ブロック名として取得する。
そして、移動先特定部130は、各候補ステップの情報から、同種ブロック名で識別される同種ブロックが有する候補ステップの情報を特定する。
そして、移動先特定部130は、各候補ステップの情報から、同種ブロック名で識別される同種ブロックが有する候補ステップの情報を特定する。
図5のスケジューリング結果ファイル103において、同種処理が処理ステップLOOP2_ST2の処理mulである場合、同種ブロックは処理ブロックLOOP2である。そして、候補ステップがLOOP1_ST2、NonLOOP_ST1およびLOOP2_ST1である場合、同種ブロックが有する候補ステップはLOOP2_ST1である。
S136において、移動先特定部130は、特定した候補ステップの情報から、候補ステップ名を、移動先ステップ名として取得する。
そして、移動先特定部130は、移動先ステップ名を対象処理リスト192に登録する。
そして、移動先特定部130は、移動先ステップ名を対象処理リスト192に登録する。
図12に、移動先ステップ名が登録された対象処理リスト192を示す。
対象処理リスト192には、対象処理mulの移動先ステップを識別する移動先ステップ名として、LOOP2_ST1が登録されている。
対象処理リスト192には、対象処理mulの移動先ステップを識別する移動先ステップ名として、LOOP2_ST1が登録されている。
S137において、移動先特定部130は、対象処理情報と同種処理情報との未選択の組が対象処理リスト192にあるか判定する。
未選択の組がある場合、処理はS131に戻る。
未選択の組がない場合、移動先特定処理(S130)は終了する。
未選択の組がある場合、処理はS131に戻る。
未選択の組がない場合、移動先特定処理(S130)は終了する。
図3に戻り、S140から説明を続ける。
S140はライフサイクル特定処理である。
S140において、ライフサイクル特定部140は、スケジューリング結果ファイル103が変更される前の状態において、対象処理から出力される出力値のライフサイクルを特定する。このライフサイクルは、対象処理から出力された出力値がメモリに書き込まれてから、出力値が書き込まれたメモリから出力値が読み出されるまでの時間を表す。
S140はライフサイクル特定処理である。
S140において、ライフサイクル特定部140は、スケジューリング結果ファイル103が変更される前の状態において、対象処理から出力される出力値のライフサイクルを特定する。このライフサイクルは、対象処理から出力された出力値がメモリに書き込まれてから、出力値が書き込まれたメモリから出力値が読み出されるまでの時間を表す。
図13に基づいて、ライフサイクル特定処理(S140)の詳細について説明する。
S141において、ライフサイクル特定部140は、対象処理リスト192から、未選択の対象処理情報を1つ選択する。
S141において、ライフサイクル特定部140は、対象処理リスト192から、未選択の対象処理情報を1つ選択する。
S142において、ライフサイクル特定部140は、選択した対象処理情報から対象ステップ名を取得し、取得した対象ステップ名で識別される対象ステップの情報をスケジューリング結果ファイル103から取得する。
S143において、ライフサイクル特定部140は、取得した対象ステップの情報から、対象処理の入力ノードを識別する入力ノード名を取得する。入力ノードは、入力値が設定される変数である。
そして、ライフサイクル特定部140は、入力ノード名で識別される入力ノードの情報をスケジューリング結果ファイル103およびステップ結果ファイル104から取得する。
そして、ライフサイクル特定部140は、入力ノード名で識別される入力ノードの情報をスケジューリング結果ファイル103およびステップ結果ファイル104から取得する。
S144において、ライフサイクル特定部140は、対象処理の入力ノードの情報に基づいて、対象処理の入力値のライフサイクルを特定する。
ライフサイクルは、値が変数に設定されてから、変数に設定された値が消失するまでの時間、を表すサイクル数である。
ライフサイクルは、値が変数に設定されてから、変数に設定された値が消失するまでの時間、を表すサイクル数である。
図5のスケジューリング結果ファイル103において、処理ステップLOOP1_ST1の処理mulが対象処理である場合、対象処理の入力ノードはaおよびbである。
入力ノードaおよびbには1サイクル毎に入力値が設定されるため、対象処理の入力値のライフサイクルは1サイクルである。
入力ノードaおよびbには1サイクル毎に入力値が設定されるため、対象処理の入力値のライフサイクルは1サイクルである。
S145において、ライフサイクル特定部140は、取得した対象ステップの情報から、対象処理の出力ノードを識別する出力ノード名を取得する。出力ノードは、出力値が設定される変数である。
そして、ライフサイクル特定部140は、出力ノード名で識別される出力ノードの情報をスケジューリング結果ファイル103およびステップ結果ファイル104から取得する。
そして、ライフサイクル特定部140は、出力ノード名で識別される出力ノードの情報をスケジューリング結果ファイル103およびステップ結果ファイル104から取得する。
S146において、ライフサイクル特定部140は、対象処理の出力ノードの情報に基づいて、対象処理の出力値のライフサイクルを特定する。
図5のスケジューリング結果ファイル103において、処理ステップLOOP1_ST1の処理mulが対象処理である場合、対象処理の出力ノードはcである。この出力ノードcに設定された出力値は、書込み処理Wでメモリに書き込まれて、読出し処理Rでメモリから読み出されるまで、メモリに保持される。言い換えると、対象処理mulから出力された出力値は、対象処理mulが属する処理ブロックLOOP1_ST1が完了するまで、メモリに保持される
図7のステップ結果ファイル104において、対象処理mulが属する処理ブロックLOOP1の繰り返し回数は1024である。つまり、対象処理mulの出力値は、最大で1024サイクルの間、メモリMEM_0に保持される。したがって、対象処理の出力値のライフサイクルは1024サイクルである。
図7のステップ結果ファイル104において、対象処理mulが属する処理ブロックLOOP1の繰り返し回数は1024である。つまり、対象処理mulの出力値は、最大で1024サイクルの間、メモリMEM_0に保持される。したがって、対象処理の出力値のライフサイクルは1024サイクルである。
S147において、ライフサイクル特定部140は、対象処理の入力値のライフサイクルと対象処理の出力値のライフサイクルとを対象処理リスト192に登録する。
図14に、ライフサイクルが登録された対象処理リスト192を示す。
対象処理リスト192には、対象処理mulの入力値のライフサイクルである1サイクルと、対象処理mulの出力値のライフサイクルである1024サイクルとが登録されている。
対象処理リスト192には、対象処理mulの入力値のライフサイクルである1サイクルと、対象処理mulの出力値のライフサイクルである1024サイクルとが登録されている。
S148において、ライフサイクル特定部140は、未選択の対象処理情報が対象処理リスト192にあるか判定する。
未選択の対象処理情報がある場合、処理はS141に戻る。
未選択の対象処理情報がない場合、ライフサイクル特定処理(S140)は終了する。
未選択の対象処理情報がある場合、処理はS141に戻る。
未選択の対象処理情報がない場合、ライフサイクル特定処理(S140)は終了する。
図3に戻り、S150から説明を続ける。
S150において、スケジューリング変更部150は、スケジューリング結果ファイル103の内容を、対象処理が移動先ステップに割り当てられた状態の内容に変更する。
S150において、スケジューリング変更部150は、スケジューリング結果ファイル103の内容を、対象処理が移動先ステップに割り当てられた状態の内容に変更する。
具体的に、スケジューリング変更部150は、スケジューリング結果ファイル103の内容を以下のように変更する。
但し、対象処理、同種処理および複数の処理ステップは、次の条件を満たすものとする。
対象処理は、入力される値である入力値を用いて演算を行って、演算によって得られた値を出力値として出力する処理である。
同種処理は、対象処理から出力された出力値が入力されて、入力された出力値を用いて演算を行う処理である。
複数の処理ステップは、書込み処理が割り当てられた処理ステップである書込みステップと、読出し処理が割り当てられた処理ステップである読出しステップとを含む。書込み処理は、対象処理から出力された出力値をメモリに書き込む処理である。読出し処理は、同種処理に出力値を入力するために、出力値が書き込まれたメモリから出力値を読み出す処理である。
スケジューリング変更部150は、書込みステップに割り当てられた書込み処理を、入力値をメモリに書き込む処理に変更する。
さらに、スケジューリング変更部150は、読出しステップに割り当てられた読出し処理を、対象処理に入力値を入力するために、入力値が書き込まれたメモリから入力値を読み出す処理に変更する。
そして、スケジューリング変更部150は、対象処理から出力された出力値が同種処理に入力されるように、対象処理を移動先ステップに割り当てる。
また、スケジューリング変更部150は、書込み処理と読出し処理で使用されるメモリの記憶容量を、特定されたライフサイクルに応じた記憶容量にする。
但し、対象処理、同種処理および複数の処理ステップは、次の条件を満たすものとする。
対象処理は、入力される値である入力値を用いて演算を行って、演算によって得られた値を出力値として出力する処理である。
同種処理は、対象処理から出力された出力値が入力されて、入力された出力値を用いて演算を行う処理である。
複数の処理ステップは、書込み処理が割り当てられた処理ステップである書込みステップと、読出し処理が割り当てられた処理ステップである読出しステップとを含む。書込み処理は、対象処理から出力された出力値をメモリに書き込む処理である。読出し処理は、同種処理に出力値を入力するために、出力値が書き込まれたメモリから出力値を読み出す処理である。
スケジューリング変更部150は、書込みステップに割り当てられた書込み処理を、入力値をメモリに書き込む処理に変更する。
さらに、スケジューリング変更部150は、読出しステップに割り当てられた読出し処理を、対象処理に入力値を入力するために、入力値が書き込まれたメモリから入力値を読み出す処理に変更する。
そして、スケジューリング変更部150は、対象処理から出力された出力値が同種処理に入力されるように、対象処理を移動先ステップに割り当てる。
また、スケジューリング変更部150は、書込み処理と読出し処理で使用されるメモリの記憶容量を、特定されたライフサイクルに応じた記憶容量にする。
図15に基づいて、スケジューリング変更処理(S150)の詳細について説明する。
S151において、スケジューリング変更部150は、スケジューリング結果ファイル103を複製する。
以下、複製したスケジューリング結果ファイル103をスケジューリング変更ファイル193と呼ぶ。
S151において、スケジューリング変更部150は、スケジューリング結果ファイル103を複製する。
以下、複製したスケジューリング結果ファイル103をスケジューリング変更ファイル193と呼ぶ。
S152において、スケジューリング変更部150は、対象処理リスト192から、未選択の対象処理情報を1つ選択する。
S153において、スケジューリング変更部150は、選択した対象処理情報から対象処理名と対象ステップ名とを取得する。
次に、スケジューリング変更部150は、取得した対象ステップ名で識別される対象ステップの情報をスケジューリング変更ファイル193から取得する。
そして、スケジューリング変更部150は、取得した対象ステップの情報から、対象処理の入力ノードを識別する入力ノード名と、対象処理の出力ノードを識別する出力ノード名とを取得する。
次に、スケジューリング変更部150は、取得した対象ステップ名で識別される対象ステップの情報をスケジューリング変更ファイル193から取得する。
そして、スケジューリング変更部150は、取得した対象ステップの情報から、対象処理の入力ノードを識別する入力ノード名と、対象処理の出力ノードを識別する出力ノード名とを取得する。
図5のスケジューリング結果ファイル103において、処理ステップLOOP1_ST1の処理mulが対象処理である場合、入力ノードはaおよびbであり、出力ノードはcである。
S154において、スケジューリング変更部150は、S153で取得した出力ノード名を用いて、スケジューリング変更ファイル193から、書込み処理名と書込みステップ名と読出し処理名と読出しステップ名とを取得する。
書込み処理名は書込み処理の処理名であり、書込み処理は出力ノード名で識別される出力ノードに設定された出力値をメモリに書き込む処理である。
書込みステップ名は書込みステップのステップ名であり、書込みステップは書込み処理が割り当てられた処理ステップである。
読出し処理名は読出し処理の処理名であり、読出し処理は書込み処理でメモリに書き込まれた出力値を読み出す処理である。
読出しステップ名は読出しステップのステップ名であり、読出しステップは読出し処理が割り当てられた処理ステップである。
書込み処理名は書込み処理の処理名であり、書込み処理は出力ノード名で識別される出力ノードに設定された出力値をメモリに書き込む処理である。
書込みステップ名は書込みステップのステップ名であり、書込みステップは書込み処理が割り当てられた処理ステップである。
読出し処理名は読出し処理の処理名であり、読出し処理は書込み処理でメモリに書き込まれた出力値を読み出す処理である。
読出しステップ名は読出しステップのステップ名であり、読出しステップは読出し処理が割り当てられた処理ステップである。
図5のスケジューリング結果ファイル103において、出力ノードがcである場合、書込み処理はWであり、書込みステップはLOOP1_ST2であり、読出し処理はRであり、読出しステップはLOOP2_ST1である。
S155において、スケジューリング変更部150は、対象処理を移動先ステップに割り当てるために、書込み処理と読出し処理とを変更する。
スケジューリング変更部150は、書込み処理を以下のように変更する。
スケジューリング変更部150は、書込みステップ名で識別される書込みステップから、書込み処理名で識別される書込み処理を削除する。
そして、スケジューリング変更部150は、S153で取得した入力ノード名で識別される入力ノードに設定された入力値をメモリに書き込む書込み処理を、書込みステップに追加する。
スケジューリング変更部150は、書込みステップ名で識別される書込みステップから、書込み処理名で識別される書込み処理を削除する。
そして、スケジューリング変更部150は、S153で取得した入力ノード名で識別される入力ノードに設定された入力値をメモリに書き込む書込み処理を、書込みステップに追加する。
スケジューリング変更部150は、読出し処理を以下のように変更する。
スケジューリング変更部150は、読出しステップ名で識別される読出しステップから、読出し処理名で識別される読出し処理を削除する。
そして、スケジューリング変更部150は、入力値が書き込まれたメモリから入力値を読み出す読出し処理を、読出しステップに追加する。
スケジューリング変更部150は、読出しステップ名で識別される読出しステップから、読出し処理名で識別される読出し処理を削除する。
そして、スケジューリング変更部150は、入力値が書き込まれたメモリから入力値を読み出す読出し処理を、読出しステップに追加する。
図16に、図5のスケジューリング結果ファイル103を変更することによって得られるスケジューリング変更ファイル193を示す。
このスケジューリング変更ファイル193において、書込みステップLOOP1_ST2には、2つの書込み処理Wが割り当てられている。第1の書込み処理は入力ノードaに設定された入力値を第1のメモリに書き込む処理であり、第2の書込み処理は入力ノードbに設定された入力値を第2のメモリに書き込む処理である。
また、読出しステップLOOP2_ST1には、2つの読出し処理Rが割り当てられている。第1の読出し処理は入力ノードaに設定された入力値を第1のメモリから読み出す処理であり、第2の読出し処理は入力ノードbに設定された入力値を第2のメモリから読み出す処理である。
このスケジューリング変更ファイル193において、書込みステップLOOP1_ST2には、2つの書込み処理Wが割り当てられている。第1の書込み処理は入力ノードaに設定された入力値を第1のメモリに書き込む処理であり、第2の書込み処理は入力ノードbに設定された入力値を第2のメモリに書き込む処理である。
また、読出しステップLOOP2_ST1には、2つの読出し処理Rが割り当てられている。第1の読出し処理は入力ノードaに設定された入力値を第1のメモリから読み出す処理であり、第2の読出し処理は入力ノードbに設定された入力値を第2のメモリから読み出す処理である。
S156において、スケジューリング変更部150は、S152で取得した対象処理名と対象ステップ名とを用いて、対象処理の割り当てを変更する。
スケジューリング変更部150は、対象処理の割り当てを以下のように変更する。
スケジューリング変更部150は、対象ステップ名で識別される対象ステップから、対象処理名で識別される対象処理を削除する。
次に、スケジューリング変更部150は、移動先ステップ名を対象処理リスト192から取得する。
そして、スケジューリング変更部150は、移動先ステップ名で識別される移動先ステップに対象処理を追加する。このとき、スケジューリング変更部150は、読出し処理でメモリから読み出された入力値が対象処理の入力値になることを示す情報を、対象処理の情報の一部として、スケジューリング変更ファイル193に登録する。
スケジューリング変更部150は、対象ステップ名で識別される対象ステップから、対象処理名で識別される対象処理を削除する。
次に、スケジューリング変更部150は、移動先ステップ名を対象処理リスト192から取得する。
そして、スケジューリング変更部150は、移動先ステップ名で識別される移動先ステップに対象処理を追加する。このとき、スケジューリング変更部150は、読出し処理でメモリから読み出された入力値が対象処理の入力値になることを示す情報を、対象処理の情報の一部として、スケジューリング変更ファイル193に登録する。
図16のスケジューリング変更ファイル193において、対象処理mulは移動先ステップLOOP2_ST1に割り当てられている。
また、2つの読出し処理Rで読み出された入力値が対象処理mulの入力値になっている。第1の読出し処理で読み出される入力値は入力ノードaに設定された入力値であり、第2の読出し処理で読み出される入力値は入力ノードbに設定された入力値である。
また、2つの読出し処理Rで読み出された入力値が対象処理mulの入力値になっている。第1の読出し処理で読み出される入力値は入力ノードaに設定された入力値であり、第2の読出し処理で読み出される入力値は入力ノードbに設定された入力値である。
S157において、スケジューリング変更部150は、書込みステップに追加した書込み処理および読出しステップに追加した読出し処理で使用するメモリの記憶容量を算出する。
そして、スケジューリング変更部150は、算出した記憶容量を、メモリの情報の一部として、スケジューリング変更ファイル193に登録する。
そして、スケジューリング変更部150は、算出した記憶容量を、メモリの情報の一部として、スケジューリング変更ファイル193に登録する。
スケジューリング変更部150は、メモリの記憶容量を以下のように算出する。
スケジューリング変更部150は、選択した対象処理情報に対応付いたライフサイクルを対象処理リスト192から取得する。ここで取得されるライフサイクルは、入力値のライフサイクルと出力値のライフサイクルである。
次に、スケジューリング変更部150は、出力値のライフサイクルを入力値のライフサイクルで割って得られるサイクル数を算出する。このサイクル数は、スケジューリング結果ファイル103において、出力値のライフサイクルの間に、入力値が対象処理に入力される入力回数に相当する。
そして、スケジューリング変更部150は、算出したサイクル数と同じ個数の入力値を記憶するために必要な記憶容量を、メモリの記憶容量として算出する。つまり、メモリの記憶容量の大きさは、算出したサイクル数と同じ個数の入力値の合計サイズ以上である。
スケジューリング変更部150は、選択した対象処理情報に対応付いたライフサイクルを対象処理リスト192から取得する。ここで取得されるライフサイクルは、入力値のライフサイクルと出力値のライフサイクルである。
次に、スケジューリング変更部150は、出力値のライフサイクルを入力値のライフサイクルで割って得られるサイクル数を算出する。このサイクル数は、スケジューリング結果ファイル103において、出力値のライフサイクルの間に、入力値が対象処理に入力される入力回数に相当する。
そして、スケジューリング変更部150は、算出したサイクル数と同じ個数の入力値を記憶するために必要な記憶容量を、メモリの記憶容量として算出する。つまり、メモリの記憶容量の大きさは、算出したサイクル数と同じ個数の入力値の合計サイズ以上である。
図14の対象処理リスト192において、対象処理mulの入力値のライフサイクルは1サイクルであり、対象処理mulの出力値のライフサイクルは1024サイクルである。この場合、1024個(=1024/1)の入力値を記憶するために必要な記憶容量がメモリの記憶容量となる。
図16のスケジューリング変更ファイル193において、入力ノードaおよびbに設定される入力値の大きさが1バイトである場合、1024個の入力値を記憶するために必要な記憶容量は1024バイトである。つまり、2つのメモリのそれぞれの記憶容量は1024バイトである。第1のメモリは入力ノードaに設定された入力値の書込みおよび読出しに使用されるメモリであり、第2の入力メモリは入力ノードbに設定された入力値の書込みおよび読出しに使用されるメモリである。
図16のスケジューリング変更ファイル193において、入力ノードaおよびbに設定される入力値の大きさが1バイトである場合、1024個の入力値を記憶するために必要な記憶容量は1024バイトである。つまり、2つのメモリのそれぞれの記憶容量は1024バイトである。第1のメモリは入力ノードaに設定された入力値の書込みおよび読出しに使用されるメモリであり、第2の入力メモリは入力ノードbに設定された入力値の書込みおよび読出しに使用されるメモリである。
S158において、スケジューリング変更部150は、未選択の対象処理情報が対象処理リスト192にあるか判定する。
未選択の対象処理情報がある場合、処理はS151に戻る。
未選択の対象処理情報がない場合、処理はS159に進む。
未選択の対象処理情報がある場合、処理はS151に戻る。
未選択の対象処理情報がない場合、処理はS159に進む。
S159において、スケジューリング変更部150は、スケジューリング変更ファイル193を用いて、ステップ変更ファイル194を生成する。ステップ変更ファイル194は、スケジューリング変更ファイル193に対応するステップ結果ファイル104である。
図17に、図16のスケジューリング変更ファイル193に対応するステップ変更ファイル194を示す。
ステップ結果ファイル104を生成する処理は、高位合成においてスケジューリング処理の一部として一般的に行われている処理であるため、S159の処理の詳細についての説明は省略する。
S159の後、スケジューリング変更処理(S150)は終了する。
図17に、図16のスケジューリング変更ファイル193に対応するステップ変更ファイル194を示す。
ステップ結果ファイル104を生成する処理は、高位合成においてスケジューリング処理の一部として一般的に行われている処理であるため、S159の処理の詳細についての説明は省略する。
S159の後、スケジューリング変更処理(S150)は終了する。
図3に戻り、S112から説明を続ける。
S112はRTL生成処理である。
S112において、RTL生成部112は、スケジューリング変更ファイル193を用いて、RTLファイル109を生成する。
RTL生成処理(S112)は、高位合成において一般的に行われている処理であるため、処理の詳細についての説明を省略する。
S112の後、回路設計支援方法の処理は終了する。
S112はRTL生成処理である。
S112において、RTL生成部112は、スケジューリング変更ファイル193を用いて、RTLファイル109を生成する。
RTL生成処理(S112)は、高位合成において一般的に行われている処理であるため、処理の詳細についての説明を省略する。
S112の後、回路設計支援方法の処理は終了する。
図18は、図16のステップ変更ファイル194を用いてRTLファイル109が生成された場合において、RTLファイル109を用いて生成される回路の構成を示す図である。
この回路は、2つのメモリと、mulという1つの乗算器とを備えている。図6に示した回路と比較すると、メモリの数は増えているが、乗算器の数は減っている。
この回路は、2つのメモリと、mulという1つの乗算器とを備えている。図6に示した回路と比較すると、メモリの数は増えているが、乗算器の数は減っている。
***実施の形態の効果の説明***
回路設計支援装置100は、同じ種類の演算を行う複数の処理で演算器を共用する回路の設計を支援することができる。具体的には、回路設計支援装置100は、未使用のメモリを活用することによって、複数の処理で演算器を共用することを可能にする。
これにより、回路で使用する演算器の数を減らすことができる。つまり、FPGA(Field−Programmable Gate Array)のように演算器の数が限られた回路を設計する際に、回路で使用する演算器の数を限られた範囲内に収めることが可能になる。
回路設計支援装置100は、同じ種類の演算を行う複数の処理で演算器を共用する回路の設計を支援することができる。具体的には、回路設計支援装置100は、未使用のメモリを活用することによって、複数の処理で演算器を共用することを可能にする。
これにより、回路で使用する演算器の数を減らすことができる。つまり、FPGA(Field−Programmable Gate Array)のように演算器の数が限られた回路を設計する際に、回路で使用する演算器の数を限られた範囲内に収めることが可能になる。
***他の構成***
上記の説明では複数の乗算処理で乗算器を共用する例について説明したが、関数を演算する複数の処理で演算器を共用してもよい。さらに、スケジューリング結果ファイル103またはステップ結果ファイル104が関数を演算する演算器の個数を示す場合、演算器の個数が閾値を超える関数を演算する複数の処理で演算器を共用してもよい。この閾値は、利用者が回路設計支援装置100に設定することができる。
スケジューリング変更部150は、対象処理の割り当てを変更した場合に使用されるメモリの数を数えて、使用されるメモリの数が閾値を超えないことを条件に、対象処理の割り当てを変更してもよい。この閾値は、設計対象の回路で使用することができるメモリの数の上限である。
上記の説明では複数の乗算処理で乗算器を共用する例について説明したが、関数を演算する複数の処理で演算器を共用してもよい。さらに、スケジューリング結果ファイル103またはステップ結果ファイル104が関数を演算する演算器の個数を示す場合、演算器の個数が閾値を超える関数を演算する複数の処理で演算器を共用してもよい。この閾値は、利用者が回路設計支援装置100に設定することができる。
スケジューリング変更部150は、対象処理の割り当てを変更した場合に使用されるメモリの数を数えて、使用されるメモリの数が閾値を超えないことを条件に、対象処理の割り当てを変更してもよい。この閾値は、設計対象の回路で使用することができるメモリの数の上限である。
回路設計支援装置100の機能は、ハードウェアで実現してもよい。
図19に、回路設計支援装置100の機能がハードウェアで実現される場合の構成を示す。
回路設計支援装置100は、処理回路920を備える。処理回路920はプロセッシングサーキットリともいう。
処理回路920は、CDFG生成部110、スケジューリング部111、対象特定部120、移動先特定部130、ライフサイクル特定部140、スケジューリング変更部150、RTL生成部112および記憶部190といった「部」の機能を実現する専用の電子回路である。
具体的には、処理回路920は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、FPGAまたはこれらの組み合わせである。GAはGate Arrayの略称であり、ASICはApplication Specific Integrated Circuitの略称である。
なお、回路設計支援装置100が複数の処理回路920を備えて、複数の処理回路920が「部」の機能を連携して実現してもよい。
図19に、回路設計支援装置100の機能がハードウェアで実現される場合の構成を示す。
回路設計支援装置100は、処理回路920を備える。処理回路920はプロセッシングサーキットリともいう。
処理回路920は、CDFG生成部110、スケジューリング部111、対象特定部120、移動先特定部130、ライフサイクル特定部140、スケジューリング変更部150、RTL生成部112および記憶部190といった「部」の機能を実現する専用の電子回路である。
具体的には、処理回路920は、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ロジックIC、GA、ASIC、FPGAまたはこれらの組み合わせである。GAはGate Arrayの略称であり、ASICはApplication Specific Integrated Circuitの略称である。
なお、回路設計支援装置100が複数の処理回路920を備えて、複数の処理回路920が「部」の機能を連携して実現してもよい。
回路設計支援装置100の機能は、ソフトウェアとハードウェアとの組み合わせで実現してもよい。つまり、一部の「部」の機能をソフトウェアで実現し、残りの「部」の機能をハードウェアで実現してもよい。
具体的には、CDFG生成部110とスケジューリング部111とRTL生成部112との機能をプロセッサ901によって実行されるプログラムで実現し、対象特定部120と移動先特定部130とライフサイクル特定部140とスケジューリング変更部150との機能を処理回路920によって実現してもよい。
具体的には、CDFG生成部110とスケジューリング部111とRTL生成部112との機能をプロセッサ901によって実行されるプログラムで実現し、対象特定部120と移動先特定部130とライフサイクル特定部140とスケジューリング変更部150との機能を処理回路920によって実現してもよい。
実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。
フローチャート等を用いて説明した処理手順は、回路設計支援装置、回路設計支援方法および回路設計支援プログラムの処理手順の一例である。
フローチャート等を用いて説明した処理手順は、回路設計支援装置、回路設計支援方法および回路設計支援プログラムの処理手順の一例である。
回路設計支援装置100、101 ソースコード、102 CDFGファイル、103 スケジューリング結果ファイル、104 ステップ結果ファイル、109 RTLファイル、110 CDFG生成部、111 スケジューリング部、112 RTL生成部、120 対象特定部、130 移動先特定部、140 ライフサイクル特定部、150 スケジューリング変更部、190 記憶部、191 同種演算器リスト、192 対象処理リスト、193 スケジューリング変更ファイル、194 ステップ変更ファイル、901 プロセッサ、903 メモリ、910 信号線、920 処理回路。
Claims (8)
- 順番に実行される複数の処理ステップそれぞれに1つ以上の処理が割り当てられたことを示すスケジューリング結果ファイルに示される処理のうち、演算を行う処理である対象処理と、前記対象処理が割り当てられた処理ステップの後に実行される処理ステップに割り当てられて前記対象処理と同じ種類の演算を行う処理である同種処理と、を特定する対象特定部と、
前記対象処理が割り当てられると前記対象処理と前記同種処理とで演算器を共用することが可能になる処理ステップを、移動先ステップとして特定する移動先特定部と、
前記スケジューリング結果ファイルの内容を、前記対象処理が前記移動先ステップに割り当てられた状態の内容に変更するスケジューリング変更部と
を備える回路設計支援装置。 - 前記対象特定部は、演算を行う処理である演算処理と前記演算処理とは別の処理である他の処理とが同じ処理ステップに割り当てられている場合、前記演算処理の出力が前記他の処理の入力になっていないことを条件に、前記演算処理を前記対象処理として特定する
請求項1に記載の回路設計支援装置。 - 前記移動先特定部は、前記対象処理が割り当てられた処理ステップが実行されてから前記同種処理が割り当てられた処理ステップが実行されるまでの間に実行される処理ステップから、前記移動先ステップを特定する
請求項1に記載の回路設計支援装置。 - 前記移動先特定部は、演算を行う処理であって前記対象処理から出力される値が入力される処理である影響処理が割り当てられていない処理ステップを、候補ステップとして特定し、特定した候補ステップから前記移動先ステップを特定する
請求項3に記載の回路設計支援装置。 - 前記スケジューリング結果ファイルは、順番に実行される複数の処理ブロックそれぞれが1つ以上の処理ステップを有することを示し、
前記移動先特定部は、特定した候補ステップのうち、前記同種処理が割り当てられた処理ステップを有する処理ブロックが有する候補ステップを、前記移動先ステップとして特定する
請求項4に記載の回路設計支援装置。 - 前記対象処理は、入力される値である入力値を用いて演算を行って、演算によって得られた値を出力値として出力する処理であり、
前記同種処理は、前記対象処理から出力された出力値が入力されて、入力された出力値を用いて演算を行う処理であり、
前記複数の処理ステップは、前記対象処理から出力された出力値をメモリに書き込む書込み処理が割り当てられた処理ステップである書込みステップと、前記同種処理に前記出力値を入力するために、前記出力値が書き込まれたメモリから前記出力値を読み出す読出し処理が割り当てられた処理ステップである読出しステップとを含み、
前記スケジューリング変更部は、前記書込みステップに割り当てられた書込み処理を、前記入力値をメモリに書き込む処理に変更し、前記読出しステップに割り当てられた読出し処理を、前記対象処理に前記入力値を入力するために、前記入力値が書き込まれたメモリから前記入力値を読み出す処理に変更し、前記対象処理から出力された出力値が前記同種処理に入力されるように前記対象処理を前記移動先ステップに割り当てる
請求項1に記載の回路設計支援装置。 - 前記スケジューリング結果ファイルが変更される前の状態において、前記対象処理から出力された出力値がメモリに書き込まれてから、前記出力値が書き込まれたメモリから前記出力値が読み出されるまでの時間を表すライフサイクルを特定するライフサイクル特定部と、
前記スケジューリング変更部は、前記書込み処理と前記読出し処理で使用されるメモリの記憶容量を、特定されたライフサイクルに応じた記憶容量にする
請求項6に記載の回路設計支援装置。 - 順番に実行される複数の処理ステップそれぞれに1つ以上の処理が割り当てられたことを示すスケジューリング結果ファイルに示される処理のうち、演算を行う処理である対象処理と、前記対象処理が割り当てられた処理ステップの後に実行される処理ステップに割り当てられて前記対象処理と同じ種類の演算を行う処理である同種処理と、を特定する対象特定処理と、
前記対象処理が割り当てられると前記対象処理と前記同種処理とで演算器を共用することが可能になる処理ステップを、移動先ステップとして特定する移動先特定処理と、
前記スケジューリング結果ファイルの内容を、前記対象処理が前記移動先ステップに割り当てられた状態の内容に変更するスケジューリング変更処理と
をコンピュータに実行させるための回路設計支援プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2015/074262 WO2017033336A1 (ja) | 2015-08-27 | 2015-08-27 | 回路設計支援装置および回路設計支援プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2017033336A1 JPWO2017033336A1 (ja) | 2017-10-12 |
JP6266183B2 true JP6266183B2 (ja) | 2018-01-24 |
Family
ID=58101209
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2017536155A Expired - Fee Related JP6266183B2 (ja) | 2015-08-27 | 2015-08-27 | 回路設計支援装置および回路設計支援プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US10192014B2 (ja) |
JP (1) | JP6266183B2 (ja) |
WO (1) | WO2017033336A1 (ja) |
Family Cites Families (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2938170B2 (ja) * | 1990-09-07 | 1999-08-23 | 株式会社東芝 | 機能設計支援装置 |
US5550749A (en) * | 1994-06-03 | 1996-08-27 | Nec Usa, Inc. | High level circuit design synthesis using transformations |
JPH10256383A (ja) | 1997-03-12 | 1998-09-25 | Toshiba Corp | 半導体装置及びその回路構成方法 |
JP3850531B2 (ja) | 1997-10-21 | 2006-11-29 | 株式会社東芝 | 再構成可能な回路の設計装置、及び再構成可能な回路装置 |
EP0974898A3 (en) * | 1998-07-24 | 2008-12-24 | Interuniversitair Microelektronica Centrum Vzw | A method for determining a storage-bandwidth optimized memory organization of an essentially digital device |
JP3942061B2 (ja) * | 1998-12-24 | 2007-07-11 | シャープ株式会社 | 高位合成方法、高位合成装置および記憶媒体 |
JP3722351B2 (ja) | 2000-02-18 | 2005-11-30 | シャープ株式会社 | 高位合成方法およびその実施に使用される記録媒体 |
JP4175953B2 (ja) * | 2003-05-23 | 2008-11-05 | シャープ株式会社 | 高位合成装置、ハードウェア検証用モデル生成方法、ハードウェア検証方法、制御プログラムおよび可読記録媒体 |
JP4397744B2 (ja) * | 2004-06-25 | 2010-01-13 | パナソニック株式会社 | 半導体集積回路の高位合成方法 |
JP4165712B2 (ja) * | 2004-11-10 | 2008-10-15 | シャープ株式会社 | データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体 |
JP2006285865A (ja) | 2005-04-04 | 2006-10-19 | Nec Electronics Corp | レジスタ転送レベル記述と動作記述間の対応関係特定方法、装置及びプログラム |
JP4396987B2 (ja) | 2006-02-08 | 2010-01-13 | シャープ株式会社 | 動作合成装置および動作合成方法、ディジタル回路の製造方法、動作合成制御プログラム、可読記録媒体 |
JP2009025973A (ja) | 2007-07-18 | 2009-02-05 | Sharp Corp | 動作合成装置、半導体集積回路の製造方法、動作合成方法、動作合成制御プログラムおよび可読記録媒体 |
JP5157534B2 (ja) * | 2008-03-06 | 2013-03-06 | 日本電気株式会社 | 動作合成装置、および、プログラム |
JP2010033540A (ja) * | 2008-06-25 | 2010-02-12 | Toshiba Corp | レジスタ転送レベル構造の変更量見積もり装置及び方法 |
JP5605435B2 (ja) * | 2010-04-09 | 2014-10-15 | 日本電気株式会社 | 設計空間探索を加速する方法及び装置 |
JP2011237989A (ja) * | 2010-05-10 | 2011-11-24 | Toshiba Corp | 半導体集積回路の設計装置、その設計方法、及びその設計プログラム |
JP2013109438A (ja) * | 2011-11-18 | 2013-06-06 | Renesas Electronics Corp | 動作合成方法、動作合成プログラム及び動作合成装置 |
JP5985900B2 (ja) * | 2012-06-22 | 2016-09-06 | ルネサスエレクトロニクス株式会社 | 動作合成装置、動作合成装置を備えたデータ処理システム、及び、動作合成プログラム |
JP2014016894A (ja) * | 2012-07-10 | 2014-01-30 | Renesas Electronics Corp | 並列演算装置、並列演算装置を備えたデータ処理システム、及び、データ処理プログラム |
US8887111B2 (en) * | 2012-08-16 | 2014-11-11 | C2 Design Automation | Extraction and sharing in high level synthesis |
US8966416B2 (en) * | 2013-03-07 | 2015-02-24 | Cadence Design Systems, Inc. | Finite-state machine encoding during design synthesis |
JP6255880B2 (ja) * | 2013-10-10 | 2018-01-10 | 株式会社ソシオネクスト | 高位合成用データ生成装置、高位合成装置、高位合成用データ生成方法及びプログラム |
JP5842255B2 (ja) * | 2013-12-12 | 2016-01-13 | 国立大学法人東京工業大学 | プログラミング言語による論理回路記述から論理回路を生成するための装置及び方法 |
WO2016162970A1 (ja) * | 2015-04-08 | 2016-10-13 | 三菱電機株式会社 | 回路設計支援装置及び回路設計支援方法及び回路設計支援プログラム |
US9858373B2 (en) * | 2015-07-15 | 2018-01-02 | International Business Machines Corporation | In-cycle resource sharing for high-level synthesis of microprocessors |
-
2015
- 2015-08-27 JP JP2017536155A patent/JP6266183B2/ja not_active Expired - Fee Related
- 2015-08-27 WO PCT/JP2015/074262 patent/WO2017033336A1/ja active Application Filing
- 2015-08-27 US US15/568,360 patent/US10192014B2/en not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
US10192014B2 (en) | 2019-01-29 |
WO2017033336A1 (ja) | 2017-03-02 |
US20180082006A1 (en) | 2018-03-22 |
JPWO2017033336A1 (ja) | 2017-10-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112035397B (zh) | 包括fpga的电子系统及其操作方法 | |
GB2532847A (en) | Variable length execution pipeline | |
JP2009048367A (ja) | 回路設計方法、ならびにその方法により製造される集積回路 | |
US8127259B2 (en) | Synthesis constraint creating device, behavioral synthesis device, synthesis constraint creating method and recording medium | |
JP5979966B2 (ja) | 回路設計支援装置及び回路設計支援方法及びプログラム | |
US10909021B2 (en) | Assistance device, design assistance method, and recording medium storing design assistance program | |
US9448909B2 (en) | Randomly branching using performance counters | |
JP6246445B1 (ja) | 高位合成装置、高位合成方法及び高位合成プログラム | |
JP6266183B2 (ja) | 回路設計支援装置および回路設計支援プログラム | |
WO2019171464A1 (ja) | 設計支援装置および設計支援プログラム | |
JP6776069B2 (ja) | Rtl最適化システム及びrtl最適化プログラム | |
JP5979965B2 (ja) | 回路設計支援装置及び回路設計支援方法及びプログラム | |
JP6548848B2 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
US10635845B2 (en) | Method and apparatus for improving Boolean satisfiability solver generated based on input design with data qualifier signals | |
US20200004503A1 (en) | Information processing device, information processing method, and computer readable medium | |
JP6305644B2 (ja) | アーキテクチャ生成装置およびアーキテクチャ生成プログラム | |
US10311188B2 (en) | Circuit design support apparatus, circuit design support method, and computer readable medium | |
US9552302B2 (en) | Data processing apparatus, data processing method and program recording medium | |
JP6257421B2 (ja) | 回路設計支援装置および回路設計支援プログラム | |
US20240256749A1 (en) | Retiming sequential elements having initital states | |
Yonemitsu et al. | Power Saving Effect of Dynamic Partial Reconfiguration on FPGA | |
JP2006351047A (ja) | データ処理装置および方法、コンピュータプログラム、情報記憶媒体、並列演算装置、データ処理システム | |
US9767247B1 (en) | Look-up table restructuring for timing closure in circuit designs | |
JP6317603B2 (ja) | 情報処理装置、情報処理装置の制御方法及びプログラム | |
KR20230145944A (ko) | 전자 시스템에서 파이프라인 모듈의 자동 구성 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20170330 |
|
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: 20171121 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6266183 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
LAPS | Cancellation because of no payment of annual fees |