JP6752393B1 - 設計支援システムおよび設計支援プログラム - Google Patents
設計支援システムおよび設計支援プログラム Download PDFInfo
- Publication number
- JP6752393B1 JP6752393B1 JP2020516772A JP2020516772A JP6752393B1 JP 6752393 B1 JP6752393 B1 JP 6752393B1 JP 2020516772 A JP2020516772 A JP 2020516772A JP 2020516772 A JP2020516772 A JP 2020516772A JP 6752393 B1 JP6752393 B1 JP 6752393B1
- Authority
- JP
- Japan
- Prior art keywords
- function
- hardware
- functions
- implementation
- processing time
- 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.)
- Active
Links
- 238000013461 design Methods 0.000 title claims description 60
- 230000006870 function Effects 0.000 claims abstract description 251
- 238000012545 processing Methods 0.000 claims abstract description 91
- 230000015572 biosynthetic process Effects 0.000 claims abstract description 20
- 238000003786 synthesis reaction Methods 0.000 claims abstract description 20
- 238000000034 method Methods 0.000 claims description 75
- 238000012546 transfer Methods 0.000 claims description 32
- 238000004364 calculation method Methods 0.000 claims description 6
- 238000010801 machine learning Methods 0.000 claims description 4
- 238000012552 review Methods 0.000 claims 2
- 230000010354 integration Effects 0.000 description 14
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 4
- 230000000694 effects Effects 0.000 description 2
- 239000002131 composite material Substances 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 239000013589 supplement Substances 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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/27—Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2117/00—Details relating to the type or aim of the circuit design
- G06F2117/08—HW-SW co-design, e.g. HW-SW partitioning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/12—Timing analysis or timing optimisation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Evolutionary Computation (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Geometry (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Stored Programmes (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
Description
このような検討は「S/W−H/W分割」と呼ばれる。
ソフトウェアに割り当てる処理とハードウェアに割り当てる処理との組み合わせは膨大であり、適切な組み合わせを人手で判断することは困難である。また、選ばれた組み合わせが要求性能を満たさないことが分かった場合、S/W−H/W分割をやり直す必要がある。
そこで、S/W−H/W分割を定量的に自動で行う方法が求められている。
そのため、利用者は、提示された情報に基づいて、適切な組み合わせを判断しなければならない。
対象ソースプログラムの中の複数の関数のそれぞれがソフトウェアで実装される場合について各関数の実行に要するソフトウェア処理時間を算出するソフトウェア検討部と、
前記対象ソースプログラムに基づいて、前記複数の関数における関数間のデータフローを示す関数間データフローグラフを生成するデータフローグラフ生成部と、
前記対象ソースプログラムに対する高位合成によって、各関数の実行に要するハードウェア処理時間と、各関数の実装に要する回路規模と、を算出するハードウェア検討部と、
各関数のソフトウェア処理時間と、各関数のハードウェア処理時間と、各関数の回路規模と、前記関数間データフローグラフと、に基づいて、ソフトウェアで実装される1つ以上の関数とハードウェアで実装される1つ以上の関数との実装組み合わせを選択する実装組み合わせ選択部と、を備える。
したがって、関数間の依存関係に基づく適切な実装組み合わせを提示することが可能となる。
システム設計を支援する設計支援システム100Sについて、図1から図13に基づいて説明する。
図1に基づいて、設計支援システム100Sの構成を説明する。
設計支援システム100Sは、設計支援装置100によって実現される。
但し、設計支援システム100Sは、複数の装置によって実現されてもよい。つまり、設計支援装置100の機能は、複数の装置によって実現されてもよい。
ICは、Integrated Circuitの略称である。
CPUは、Central Processing Unitの略称である。
DSPは、Digital Signal Processorの略称である。
GPUは、Graphics Processing Unitの略称である。
RAMは、Random Access Memoryの略称である。
ROMは、Read Only Memoryの略称である。
HDDは、Hard Disk Driveの略称である。
NICは、Network Interface Cardの略称である。
USBは、Universal Serial Busの略称である。
解析部120は、データフローグラフ生成部121とソフトウェア検討部122と転送時間算出部123といった要素を備える。
ハードウェア検討部130は、パターン生成部131と高位合成部132といった要素を備える。
これらの要素はソフトウェアで実現される。
補助記憶装置103には、さらに、OSが記憶されている。OSの少なくとも一部は、メモリ102にロードされて、プロセッサ101によって実行される。
プロセッサ101は、OSを実行しながら、設計支援プログラムを実行する。
OSは、Operating Systemの略称である。
メモリ102は記憶部190として機能する。但し、補助記憶装置103、プロセッサ101内のレジスタおよびプロセッサ101内のキャッシュメモリなどの記憶装置が、メモリ102の代わりに、又は、メモリ102と共に、記憶部190として機能してもよい。
設計支援装置100の動作の手順は設計支援方法に相当する。また、設計支援装置100の動作の手順は設計支援プログラムによる処理の手順に相当する。
設計の対象となるシステムを「対象システム」と称する。
対象システムの具体例は各種の組込みシステムである。
対象システム200は、プロセッサ201と集積回路202とバス209とを備える。
プロセッサ201は、対象システム200の機能の一部をソフトウェアで実装するための要素である。プロセッサ201の具体例はCPUである。
集積回路202は、対象システム200の機能の一部をハードウェアで実装するための要素である。集積回路202の具体例はFPGAである。FPGAはField Programmable Gate Arrayの略称である。
プロセッサ201と集積回路202は、バス209を介してデータを通信する。
ステップS110において、利用者は、対象ソースプログラムを設計支援装置100に入力する。
受付部110は、入力された対象ソースプログラムを受け付け、受け付けた対象ソースプログラムを記憶部190に記憶する。
対象ソースプログラムは、対象システムの動作が記述されたソースプログラムである。例えば、対象ソースプログラムはC言語で記述される。
対象ソースプログラムは、複数の関数を含む。各関数は、対象ソースプログラムの機能の一部を実現する。
受付部110は、入力された要件データを受け付け、受け付けた要件データを記憶部190に記憶する。
要件データは、対象システムに対する要件を指定するデータであり、所要時間要件と回路規模要件とを含む。
所要時間要件は、対象システムによる一連の処理の実行に要する時間(所要時間)についての要件である。
回路規模要件は、集積回路の規模(回路規模)についての要件である。
具体的には、データフローグラフ生成部121、ソフトウェア検討部122および転送時間算出部123が、対象ソースプログラムに基づいて、以下のように動作する。
具体的には、データフローグラフ生成部121は、関数間データフローグラフと関数内データフローグラフとを生成する。
関数間データフローグラフは、関数間のデータフローを示す。例えば、関数間データフローグラフは、各関数の引数によって特定される関数間の依存関係(データ入出力の関係)に基づいて生成される。関数間データフローグラフを参照することにより、関数間の依存関係が分かるため、各関数の実行順序が特定される。そして、順次に実行される2つ以上の関数、および、並列に実行される2つ以上の関数、が特定される。
関数内データフローグラフは、関数内のデータフローを示す。例えば、関数内データフローグラフは、関数内の各処理の変数によって特定される処理間の依存関係に基づいて生成される。関数内データフローグラフを参照することにより、処理間の依存関係が分かるため、各処理の実行順序が特定される。そして、順次に実行される2つ以上の処理、および、並列に実行される2つ以上の処理、が特定される。
例えば、ソフトウェア処理時間は、プロファイリングと呼ばれるツールを利用することによって算出される。ツールの具体例はgprofである。
そして、転送時間算出部123は、各関数の入出力データ量に対する転送時間を算出する。転送時間は、データの転送に要する時間である。
例えば、転送時間は、「転送時間=ビット量÷バス幅÷動作周波数」という式を計算することによって算出される。
ハードウェア処理時間は、各関数がハードウェアで実装される場合に各関数の実行に要する時間である。
回路規模は、各関数がハードウェア(回路)で実装される場合に各関数の実装に要する規模である。
パターン生成部131は、データフローグラフに基づいて、複数のハードウェア実装パターンを生成する。
ハードウェア実装パターンは、対象ソースプログラムの中の各関数がハードウェアで実装されるパターンである。
各ハードウェア実装パターンは、高位合成のためのパラメータとして使用される。例えば、各ハードウェア実装パターンは、高位合成ツールのオプションを利用して指定される。
パターン生成部131は、統合されることによってハードウェア処理時間が短縮される2つ以上の関数を関数間データフローグラフに基づいて探す。そして、パターン生成部131は、見つかった2つ以上の関数が統合されるハードウェア実装パターンを生成する。「関数統合」について後述する。
パターン生成部131は、各関数の中の複数の処理のうちパイプライン化されることによってハードウェア処理時間が短縮される2つ以上の処理を各関数の関数内データフローグラフに基づいて探す。そして、パターン生成部131は、見つかった2つ以上の処理がパイプライン化されるハードウェア実装パターンを生成する。「パイプライン化」について後述する。
パターン生成部131は、各関数の中の複数の処理のうち並列化されることによってハードウェア処理時間が短縮される2つ以上の処理を各関数の関数内データフローグラフに基づいて探す。そして、パターン生成部131は、見つかった2つ以上の関数が並列化されるハードウェア実装パターンを生成する。「並列化」について後述する。
これにより、各ハードウェア実装パターンにおける各関数のハードウェア処理時間と、各ハードウェア実装パターンにおける各関数の回路規模と、が算出される。
各種データは、各関数のソフトウェア処理時間、各ハードウェア実装パターンにおける各関数のハードウェア処理時間、各ハードウェア実装パターンにおける各関数の回路規模、および、データフローグラフである。
実装組み合わせは、ソフトウェアで実装される1つ以上の関数とハードウェアで実装される1つ以上の関数との組み合わせである。
適合組み合わせは、例えば、線形計画法を利用することによって選択することができる。
まず、実装組み合わせ選択部140は、順次に実行される2つ以上の関数と並列に実行される2つ以上の関数とを関数間データフローグラフに基づいて実装組み合わせ毎に特定する。
ソフトウェアによる実装の場合、対象システムに備わるプロセッサ(コア)の数以下の数の関数を並列に実装することが可能である。しかし、対象システムに備わるプロセッサ(コア)の数を超える数の関数を並列に実装することは可能でない。例えば、対象システムに備わるプロセッサがシングルコアプロセッサである場合、ソフトウェアで実装される2つ以上の関数を並列に実装することは可能でない。
ハードウェアによる実装の場合、2つ以上の関数を並列に実装することが可能である。
実行時間帯データは、各関数が実行される時間帯を示す。順次に実行される2つ以上の関数は、異なる時間帯に実行される。並列に実行される2つ以上の関数は、同じ時間帯に実行される。
各関数が実行される時間帯は、連続して実行される2つの関数の間でのデータ転送に要する時間(データ転送時間)を考慮して算出される。つまり、先の関数の実行が完了してデータ転送時間が経過したタイミングで、後の関数の実行が開始される。
例えば、実装組み合わせ選択部140は、関数間データフローグラフに基づいて、複数の関数の実行順を特定する。そして、実装組み合わせ選択部140は、連続して実行される2つの関数から成る関数組毎に、関数間のデータ転送時間を特定する。
2つの関数の両方がソフトウェアで実装される場合、データ転送時間はゼロとみなすことができる。但し、この場合のデータ転送時間として、ゼロ以外の時間が設定されてもよい。
2つの関数の両方がハードウェアで実装される場合、データ転送時間はゼロとみなすことができる。但し、この場合のデータ転送時間として、ゼロ以外の時間が設定されてもよい。
2つの関数の一方がソフトウェアで実装されて2つの関数の他方がハードウェアで実装される場合、データ転送時間は、2つの関数のそれぞれの転送時間に基づいて特定される。例えば、先の関数の出力データ量に対する転送時間、または、後の関数の入力データ量に対する転送時間をデータ転送時間とみなすことができる。
例えば、実装組み合わせ選択部140は、各実装組み合わせの実行時間帯データに基づいて各実装組み合わせにおける所要時間を算出する。各実装組み合わせの実行時間帯データが示す全体の時間帯の長さが、各実装組み合わせにおける所要時間となる。そして、実装組み合わせ選択部140は、実装組み合わせ毎に、実装組み合わせにおける所要時間が所要時間要件を満たすか判定する。実装組み合わせにおける所要時間が所要時間要件を満たす場合、実装組み合わせは所要時間要件を満たす。
まず、実装組み合わせ選択部140は、実装組み合わせにおける回路規模を算出する。
例えば、実装組み合わせ選択部140は、ハードウェアで実装される1つ以上の関数に対応する1つ以上の回路規模の合計を算出する。算出される合計が実装組み合わせにおける回路規模である。
そして、実装組み合わせ選択部140は、実装組み合わせにおける回路規模が回路規模要件を満たすか判定する。
実装組み合わせにおける回路規模が回路規模要件を満たす場合、実装組み合わせは回路規模要件を満たす。
例えば、実装組み合わせ選択部140は、所要時間が最短である適合組み合わせ、または、回路規模が最小である適合組み合わせ、を選択する。
例えば、出力部150は、適合組み合わせをディスプレイに表示する。
並列化は、関数内のアーキテクチャである。並列化により、処理が高速化され、処理時間が短縮される。
逐次的に実行される複数の処理が並列に実行されることにより、並列に実行される処理の数に応じて処理時間が短縮される。
式(1)は、100回繰り返し実行される。各回の式(1)は独立している。例えば、「i=0」のときの式(1)である「A[0]=B[0]+C[0]」と「i=1」のときの式(1)である「A[1]=B[1]+C[1]」との間に依存関係はない。
高位合成ツールに対して、ループ展開の数(ループ数)を指定してオプション(unroll times)を設定することができる。そして、高位合成ツールが実行されることにより、指定されたループ数に応じたRTLが生成される。RTLはレジスタ転送レベルの略称である。
ループ数が多いほど並列処理数が増え、処理時間が短縮される。
パイプライン化は、関数内のアーキテクチャである。パイプライン化により、処理が高速化され、処理時間が短縮される。
一連の処理が完了する前に次回の一連の処理が開始されることにより、スループットが向上する。具体的には、一連の処理において、各処理が完了したときに次回の各処理が開始される。
一連の処理において、第1処理、第2処理、第3処理、第4処理の順に各処理が実行される。一連の処理によって、第1データ、第2データ、第3データ、第4データの順に各データが処理される。
一連の処理がパイプライン化されない場合(図示省略)、第1データに対する一連の処理が完了した後に、第2データに対する一連の処理が実行される。
一連の処理がパイプライン化された場合(図5参照)、第1データに対する第4処理が実行される間に、第2データに対する第3処理が実行され、第3データに対する第2処理が実行され、第4データに対する第1処理が実行される。これにより、スループットが向上する。
回路共有は、関数内のアーキテクチャである。回路共有により、種類が同じである複数の演算で演算回路が共有され、回路規模が縮小される。
ソースプログラム(1)は、変更前のソースプログラムである。
ソースプログラム(1)には、2つのループ処理が含まれる。変数iに基づくループ処理をループ処理(i)と称し、変数jに基づくループ処理をループ処理(j)と称する。
ループ処理(i)では、演算Aと演算Xが繰り返し実行される。
ループ処理(j)では、演算Aと演算Yが繰り返し実行される。
ソースプログラム(1)において、演算Aは2箇所に記述されている。
ソースプログラム(2)には、1つのループ処理が含まれる。このループ処理は、ループ処理(i)とループ処理(j)とを統合したものである。各回のループ処理において、演算Aが実行された後、演算Xと演算Yとのうち変数xの値に基づいて選択される演算が実行される。
ソースプログラム(2)において、演算Aは1箇所に記述されている。
ソースプログラム(1)をソースプログラム(2)へ変換することにより、ループ処理(i)の演算Aとループ処理(j)の演算Aとのために演算回路を共有することが可能となる。
高位合成ツールに対して、各演算器の共有の要否と各レジスタの共有の要否とを指定してオプションを設定することができる。演算器およびレジスタは演算回路を構成する要素である。
関数統合は、複数の関数に跨るアーキテクチャ、つまり、関数間のアーキテクチャである。関数統合により、処理が高速化され、処理時間が短縮される。
具体的には、複数の関数が1つの関数に統合された後、複数の関数における複数の処理がパイプライン化されることにより、処理時間が短縮される。
関数統合前において、関数(1)の後に関数(2)が実行され、関数(2)の後に関数(3)が実行される。
関数(2)と関数(3)が関数(2,3)に統合された場合、関数(1)の後に関数(2,3)が実行される。
S/W時間(1)は、関数(1)がソフトウェアで実装された場合の関数(1)の処理時間である。
H/W時間(2)は、関数(2)がハードウェアで実装された場合の関数(2)の処理時間である。
H/W時間(3)は、関数(3)がハードウェアで実装された場合の関数(3)の処理時間である。
処理時間の間隔は、関数間のデータ転送時間を表している。
関数(2)の処理が完了する前に関数(3)の処理を開始することができる場合、関数(2)と関数(3)を統合することによって、関数(2)および関数(3)の処理時間が短縮される。
H/W時間(2,3)は、関数(2)と関数(3)が統合された場合の関数(2,3)の処理時間である。
関数(2)と関数(3)が統合されることにより、関数(1)、関数(2)および関数(3)の所要時間が短縮される。破線の四角は短縮される時間を表している。
関数(1)から関数(5)の5つの関数によって一連の処理が実行される。
時間(1−5)は、1つのフレームに対する一連の処理に要する時間(所要時間)である。
あるフレームに対する一連の処理が完了した後に次のフレームに対する一連の処理が開始される場合(図11参照)、3つのフレームに対する一連の処理の所要時間は、時間(1−5)の3倍以上の時間となる。
あるフレームに対する一連の処理が完了する前に次のフレームに対する一連の処理が開始される場合(図12参照)、3つのフレームに対する一連の処理の所要時間は、時間(1−5)の3倍未満の時間となる。
図12では、関数(4)によってフレーム(X)に対する処理が開始されると、関数(1)によってフレーム(X+1)に対する処理が開始される。
関数(1)から関数(5)のそれぞれのスループットが30fpsであると仮定する。fpsは1秒当たりに処理されるフレームの数を意味する。
関数(3)と関数(4)が関数(3,4)に統合されたと仮定する。また、関数(3,4)のスループットが30fpsであると仮定する。この場合、パイプラインの段数が削減され、関数(1)から関数(5)の全体のスループットが改善される。改善されるスループットは、30fpsに相当する時間である。
実施の形態1によって、最適なS/W−H/W分割を自動で行うことができる。つまり、対象システムの要件を満たす実装組み合わせを自動で選択することができる。
そのため、H/W設計およびS/W設計の経験がない者であっても、適切な実装組み合わせを得ることができる。
したがって、関数間(または処理間)の依存関係に基づく適切な実装組み合わせを提示することが可能となる。
実装組み合わせの選択結果を学習する形態について、主に実施の形態1と異なる点を図14および図15に基づいて説明する。
図14に基づいて、設計支援装置100の構成を説明する。
設計支援装置100は、さらに、学習部160を備える。
設計支援プログラムは、さらに、学習部160としてコンピュータを機能させる。
図15に基づいて、設計支援方法の手順を説明する。
ステップS210からステップS230は、実施の形態1におけるステップS110からステップS130と同じである。
ステップS240は、実施の形態1におけるステップS140に相当する。但し、ステップS240の一部は、実施の形態1におけるステップS140と異なる。
学習モデルは、選択される実装組み合わせの候補となる1つ以上の実装組み合わせを特定する機能を有する。学習モデルは、ソフトウェア、ハードウェアまたはこれらの組み合わせで実現される。学習モデルは、学習器または学習モジュールとも呼ばれる。
例えば、実装組み合わせ選択部140は、対象ソースプログラムの中の複数の関数のそれぞれの情報(ソースプログラムまたはデータフローグラフなど)を入力として、学習モデルを実行する。これにより、1つ以上の実装組み合わせが学習モデルから出力される。出力される1つ以上の実装組み合わせが、対象ソースプログラムの中の複数の関数のための実装組み合わせの候補として特定された1つ以上の実装組み合わせである。
そして、実装組み合わせ選択部140は、特定された1つ以上の実装組み合わせの中から、対象ソースプログラムの中の複数の関数のための実装組み合わせ(適合組み合わせ)を選択する。選択方法は、実施の形態1のステップS140における方法と同じである。
例えば、実装組み合わせ選択部140は、対象ソースプログラムの中の複数の関数のそれぞれの情報(ソースプログラムまたはデータフローグラフなど)と選択された実装組み合わせの情報とを入力として、機械学習を行う。これにより、学習モデルが更新される。
そして、新たな対象ソースプログラムに対して、ステップS210からステップS260が実行される。新たな対象ソースプログラムの中の複数の関数を新たな複数の関数と称する。
これにより、新たな複数の関数のための実装組み合わせ(適合組み合わせ)が選択される。
実施の形態2により、実装組み合わせの選択結果について機械学習を行って学習モデルを得ることができる。そして、学習モデルによって実装組み合わせの候補を限定することができる。
適合組み合わせは、限定された候補の中から選択される。そのため、設計支援システム100Sの負荷が軽減される。また、対象ソースプログラムの入力から適合組み合わせの出力までの時間が短縮される。
図16に基づいて、設計支援装置100のハードウェア構成を説明する。
設計支援装置100は処理回路109を備える。
処理回路109は、受付部110と解析部120とハードウェア検討部130と実装組み合わせ選択部140と出力部150と学習部160とを実現するハードウェアである。
処理回路109は、専用のハードウェアであってもよいし、メモリ102に格納されるプログラムを実行するプロセッサ101であってもよい。
ASICは、Application Specific Integrated Circuitの略称である。
FPGAは、Field Programmable Gate Arrayの略称である。
Claims (7)
- 対象ソースプログラムの中の複数の関数のそれぞれがソフトウェアで実装される場合について各関数の実行に要するソフトウェア処理時間を算出するソフトウェア検討部と、
前記対象ソースプログラムに基づいて、前記複数の関数における関数間のデータフローを示す関数間データフローグラフを生成するデータフローグラフ生成部と、
各関数がハードウェアで実装される複数のハードウェア実装パターンに対して、前記対象ソースプログラムに対する高位合成によって、各ハードウェア実装パターンの実行に要するハードウェア処理時間と、各ハードウェア実装パターンの実装に要する回路規模と、を算出するハードウェア検討部と、
各関数のソフトウェア処理時間と、各関数のハードウェア処理時間と、各関数の回路規模と、前記関数間データフローグラフと、に基づいて、ソフトウェアで実装される1つ以上の関数とハードウェアで実装される1つ以上の関数との実装組み合わせを選択する実装組み合わせ選択部と、
を備え、
前記ハードウェア検討部は、統合されることによってハードウェア処理時間が短縮される2つ以上の関数を前記関数間データフローグラフに基づいて探し、見つかった2つ以上の関数が統合されるハードウェア実装パターンを生成し、各ハードウェア実装パターンにしたがって前記対象ソースプログラムに対する高位合成を行うことによって各ハードウェア実装パターンにおける各関数のハードウェア処理時間と各ハードウェア実装パターンにおける各関数の回路規模とを算出する
設計支援システム。 - 対象ソースプログラムの中の複数の関数のそれぞれがソフトウェアで実装される場合について各関数の実行に要するソフトウェア処理時間を算出するソフトウェア検討部と、
前記対象ソースプログラムに基づいて、前記複数の関数における関数間のデータフローを示す関数間データフローグラフを生成するデータフローグラフ生成部と、
各関数がハードウェアで実装される複数のハードウェア実装パターンに対して、前記対象ソースプログラムに対する高位合成によって、各ハードウェア実装パターンの実行に要するハードウェア処理時間と、各ハードウェア実装パターンの実装に要する回路規模と、を算出するハードウェア検討部と、
各関数のソフトウェア処理時間と、各関数のハードウェア処理時間と、各関数の回路規模と、前記関数間データフローグラフと、に基づいて、ソフトウェアで実装される1つ以上の関数とハードウェアで実装される1つ以上の関数との実装組み合わせを選択する実装組み合わせ選択部と、
を備え、
前記実装組み合わせ選択部は、順次に実行される2つ以上の関数と並列に実行される2つ以上の関数とを前記関数間データフローグラフに基づいて実装組み合わせ毎に特定し、特定結果と各関数のソフトウェア処理時間と各ハードウェア実装パターンにおける各関数のハードウェア処理時間とに基づいて各関数が実行される時間帯を示す実行時間帯データを実装組み合わせ毎に生成し、各実装組み合わせの実行時間帯データに基づいて所要時間についての要件である所要時間要件を満たす実装組み合わせを選択し、回路規模についての要件である回路規模要件を満たす実装組み合わせを選択する
設計支援システム。 - 前記実装組み合わせ選択部は、前記関数間データフローグラフに基づいて前記複数の関数の実行順を特定し、連続して実行される2つの関数の間でのデータ転送に要する時間であるデータ転送時間を考慮して、前記所要時間要件を満たす実装組み合わせを選択する
請求項2に記載の設計支援システム。 - 前記設計支援システムは、
前記対象ソースプログラムに基づいて各関数の入出力データ量を特定し、各関数の入出力データ量に対する転送時間を算出する転送時間算出部を備え、
前記実装組み合わせ選択部は、前記2つの関数のそれぞれの転送時間に基づいて前記データ転送時間を特定する
請求項3に記載の設計支援システム。 - 前記設計支援システムは、
前記対象ソースプログラムの中の前記複数の関数のために選択された実装組み合わせに対して機械学習を行うことによって、選択される実装組み合わせの候補となる1つ以上の実装組み合わせを特定する学習モデルを更新する学習部を備え、
前記実装組み合わせ選択部は、新たな対象ソースプログラムの中の新たな複数の関数のための実装組み合わせの候補となる1つ以上の実装組み合わせを前記学習モデルを実行することによって特定し、特定された1つ以上の実装組み合わせの中から前記新たな複数の関数のための実装組み合わせを選択する
請求項1から請求項4のいずれか1項に記載の設計支援システム。 - 対象ソースプログラムの中の複数の関数のそれぞれがソフトウェアで実装される場合について各関数の実行に要するソフトウェア処理時間を算出するソフトウェア検討処理と、
前記対象ソースプログラムに基づいて、前記複数の関数における関数間のデータフローを示す関数間データフローグラフを生成するデータフローグラフ生成処理と、
各関数がハードウェアで実装される複数のハードウェア実装パターンに対して、前記対象ソースプログラムに対する高位合成によって、各ハードウェア実装パターンの実行に要するハードウェア処理時間と、各ハードウェア実装パターンの実装に要する回路規模と、を算出するハードウェア検討処理と、
各関数のソフトウェア処理時間と、各関数のハードウェア処理時間と、各関数の回路規模と、前記関数間データフローグラフと、に基づいて、ソフトウェアで実装される1つ以上の関数とハードウェアで実装される1つ以上の関数との実装組み合わせを選択する実装組み合わせ選択処理と、
をコンピュータに実行させるための設計支援プログラムであって、
前記ハードウェア検討処理は、統合されることによってハードウェア処理時間が短縮される2つ以上の関数を前記関数間データフローグラフに基づいて探し、見つかった2つ以上の関数が統合されるハードウェア実装パターンを生成し、各ハードウェア実装パターンにしたがって前記対象ソースプログラムに対する高位合成を行うことによって各ハードウェア実装パターンにおける各関数のハードウェア処理時間と各ハードウェア実装パターンにおける各関数の回路規模とを算出する
設計支援プログラム。 - 対象ソースプログラムの中の複数の関数のそれぞれがソフトウェアで実装される場合について各関数の実行に要するソフトウェア処理時間を算出するソフトウェア検討処理と、
前記対象ソースプログラムに基づいて、前記複数の関数における関数間のデータフローを示す関数間データフローグラフを生成するデータフローグラフ生成処理と、
各関数がハードウェアで実装される複数のハードウェア実装パターンに対して、前記対象ソースプログラムに対する高位合成によって、各ハードウェア実装パターンの実行に要するハードウェア処理時間と、各ハードウェア実装パターンの実装に要する回路規模と、を算出するハードウェア検討処理と、
各関数のソフトウェア処理時間と、各関数のハードウェア処理時間と、各関数の回路規模と、前記関数間データフローグラフと、に基づいて、ソフトウェアで実装される1つ以上の関数とハードウェアで実装される1つ以上の関数との実装組み合わせを選択する実装組み合わせ選択処理と、
をコンピュータに実行させるための設計支援プログラムであって、
前記実装組み合わせ選択処理は、順次に実行される2つ以上の関数と並列に実行される2つ以上の関数とを前記関数間データフローグラフに基づいて実装組み合わせ毎に特定し、特定結果と各関数のソフトウェア処理時間と各ハードウェア実装パターンにおける各関数のハードウェア処理時間とに基づいて各関数が実行される時間帯を示す実行時間帯データを実装組み合わせ毎に生成し、各実装組み合わせの実行時間帯データに基づいて所要時間についての要件である所要時間要件を満たす実装組み合わせを選択し、回路規模についての要件である回路規模要件を満たす実装組み合わせを選択する
設計支援プログラム。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2019/045283 WO2021100122A1 (ja) | 2019-11-19 | 2019-11-19 | 設計支援システムおよび設計支援プログラム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP6752393B1 true JP6752393B1 (ja) | 2020-09-09 |
JPWO2021100122A1 JPWO2021100122A1 (ja) | 2021-11-25 |
Family
ID=72333536
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2020516772A Active JP6752393B1 (ja) | 2019-11-19 | 2019-11-19 | 設計支援システムおよび設計支援プログラム |
Country Status (3)
Country | Link |
---|---|
US (1) | US11657197B2 (ja) |
JP (1) | JP6752393B1 (ja) |
WO (1) | WO2021100122A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115221772A (zh) * | 2022-01-06 | 2022-10-21 | 中冶长天国际工程有限责任公司 | 危废焚烧配伍优化方法、装置、终端设备及存储介质 |
Family Cites Families (32)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3486014B2 (ja) | 1995-09-08 | 2004-01-13 | 株式会社東芝 | ソフトウェア/ハードウェア協調設計システム及びその設計方法 |
JPH11259553A (ja) | 1998-03-13 | 1999-09-24 | Omron Corp | ハードウエアとソフトウエアの混在するシステムの設計支援方法 |
JP2001142927A (ja) | 1999-11-16 | 2001-05-25 | Matsushita Electric Ind Co Ltd | 半導体集積回路装置の設計方法,回路の消費電力解析方法及び消費電力解析装置 |
JP3907398B2 (ja) | 2000-11-16 | 2007-04-18 | 松下電器産業株式会社 | 半導体集積回路装置の設計方法 |
WO2002069174A1 (fr) * | 2001-02-28 | 2002-09-06 | Fujitsu Limited | Procede d'execution en parallele de processus et ordinateur a processeurs multiples |
JP4467823B2 (ja) | 2001-03-12 | 2010-05-26 | 株式会社東芝 | 設計支援装置および設計支援方法ならびに設計支援プログラム |
JP2005242569A (ja) | 2004-02-25 | 2005-09-08 | Fujitsu Ltd | データ処理装置設計方法、データ処理装置設計装置及びプログラム |
US8146071B2 (en) * | 2007-09-18 | 2012-03-27 | International Business Machines Corporation | Pipelined parallelization of multi-dimensional loops with multiple data dependencies |
JP5034955B2 (ja) | 2008-01-08 | 2012-09-26 | 富士通株式会社 | 性能評価シミュレーション装置、性能評価シミュレーション方法および性能評価シミュレーションプログラム |
JP5245722B2 (ja) | 2008-10-29 | 2013-07-24 | 富士通株式会社 | スケジューラ、プロセッサシステム、プログラム生成装置およびプログラム生成用プログラム |
US20100274972A1 (en) * | 2008-11-24 | 2010-10-28 | Boris Babayan | Systems, methods, and apparatuses for parallel computing |
EP2438545A2 (en) * | 2009-06-02 | 2012-04-11 | Vector Fabrics B.V. | Improvements in embedded system development |
US8949809B2 (en) * | 2012-03-01 | 2015-02-03 | International Business Machines Corporation | Automatic pipeline parallelization of sequential code |
US8893080B2 (en) * | 2012-08-15 | 2014-11-18 | Telefonaktiebolaget L M Ericsson (Publ) | Parallelization of dataflow actors with local state |
US9262305B1 (en) * | 2013-05-31 | 2016-02-16 | Cadence Design Systems, Inc. | Simulation observability and control of all hardware and software components of a virtual platform model of an electronics system |
US9075624B2 (en) * | 2013-06-24 | 2015-07-07 | Xilinx, Inc. | Compilation of system designs |
US9268597B2 (en) * | 2014-04-01 | 2016-02-23 | Google Inc. | Incremental parallel processing of data |
US9529587B2 (en) * | 2014-12-19 | 2016-12-27 | Intel Corporation | Refactoring data flow applications without source code changes or recompilation |
US9996637B2 (en) * | 2015-07-30 | 2018-06-12 | International Business Machines Corporation | Method for verifying hardware/software co-designs |
WO2017088665A1 (zh) * | 2015-11-25 | 2017-06-01 | 华为技术有限公司 | 用于加速器的程序生成方法和系统 |
WO2017135219A1 (ja) | 2016-02-01 | 2017-08-10 | 日本電気株式会社 | 設計支援装置、設計支援方法、および設計支援プログラムを格納した記録媒体 |
WO2018066073A1 (ja) * | 2016-10-04 | 2018-04-12 | 三菱電機株式会社 | 情報処理装置、情報処理方法及び情報処理プログラム |
US20200034502A1 (en) | 2017-03-07 | 2020-01-30 | Mitsubishi Electric Corporation | Architecture selection device, architecture selection method, and computer readable medium |
US10255400B1 (en) * | 2017-03-30 | 2019-04-09 | Xilinx, Inc. | Debugging system and method |
US10970449B2 (en) * | 2017-09-20 | 2021-04-06 | International Business Machines Corporation | Learning framework for software-hardware model generation and verification |
US10331836B1 (en) * | 2017-10-11 | 2019-06-25 | Xilinx, Inc. | Loop optimization for implementing circuit designs in hardware |
JP6732153B2 (ja) * | 2018-03-06 | 2020-07-29 | 三菱電機株式会社 | 設計支援装置および設計支援プログラム |
US10628286B1 (en) * | 2018-10-18 | 2020-04-21 | Denso International America, Inc. | Systems and methods for dynamically identifying program control flow and instrumenting source code |
US11106437B2 (en) * | 2019-01-14 | 2021-08-31 | Microsoft Technology Licensing, Llc | Lookup table optimization for programming languages that target synchronous digital circuits |
US10891132B2 (en) * | 2019-05-23 | 2021-01-12 | Xilinx, Inc. | Flow convergence during hardware-software design for heterogeneous and programmable devices |
US11113030B1 (en) * | 2019-05-23 | 2021-09-07 | Xilinx, Inc. | Constraints for applications in a heterogeneous programming environment |
US11354473B1 (en) * | 2021-01-28 | 2022-06-07 | Argo AI, LLC | Method and system for designing a robotic system architecture with optimized system latency |
-
2019
- 2019-11-19 JP JP2020516772A patent/JP6752393B1/ja active Active
- 2019-11-19 WO PCT/JP2019/045283 patent/WO2021100122A1/ja active Application Filing
-
2022
- 2022-03-28 US US17/705,710 patent/US11657197B2/en active Active
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115221772A (zh) * | 2022-01-06 | 2022-10-21 | 中冶长天国际工程有限责任公司 | 危废焚烧配伍优化方法、装置、终端设备及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
US11657197B2 (en) | 2023-05-23 |
WO2021100122A1 (ja) | 2021-05-27 |
JPWO2021100122A1 (ja) | 2021-11-25 |
US20220222405A1 (en) | 2022-07-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4339907B2 (ja) | マルチプロセッサ向け最適コード生成方法及びコンパイル装置 | |
US10684776B2 (en) | Memory configuration for inter-processor communication in an MPSoC | |
CN110073329A (zh) | 访存设备、计算设备和应用于卷积神经网络运算的设备 | |
JP2016177454A (ja) | 動作合成方法、動作合成プログラムおよび動作合成装置 | |
US20100095091A1 (en) | Processor, Method and Computer Program | |
US20190205487A1 (en) | Information processing apparatus, computer-readable recording medium, and information processing method | |
JP5014920B2 (ja) | 回路設計方法、ならびにその方法により製造される集積回路 | |
CN112559053A (zh) | 可重构处理器数据同步处理方法及装置 | |
JP6752393B1 (ja) | 設計支援システムおよび設計支援プログラム | |
US8127259B2 (en) | Synthesis constraint creating device, behavioral synthesis device, synthesis constraint creating method and recording medium | |
JP6763411B2 (ja) | 設計支援装置、設計支援方法、および設計支援プログラム | |
JP6824053B2 (ja) | 関係分析装置および関係分析プログラム | |
US20190034562A1 (en) | High-level synthesis device, high-level synthesis method, and computer readable medium | |
JPWO2018066073A1 (ja) | 情報処理装置、情報処理方法及び情報処理プログラム | |
JP4870956B2 (ja) | 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部 | |
US20190303513A1 (en) | High level synthesis apparatus, high level synthesis method, and computer readable medium | |
JP6242170B2 (ja) | 回路設計支援装置及びプログラム | |
JP6761182B2 (ja) | 情報処理装置、情報処理方法及びプログラム | |
Fricke et al. | Automatic tool-flow for mapping applications to an application-specific cgra architecture | |
JP2021022370A (ja) | コンピューティングデバイスによって実行される方法、装置、機器及びコンピュータ読み取り可能な記憶媒体 | |
JP2007018313A (ja) | 回路設計プログラム、回路設計装置、回路設計方法 | |
JP5739759B2 (ja) | ソフトウェアのハードウェア化の性能見積り方法、装置、プログラムおよびその記録媒体 | |
JP5267376B2 (ja) | 動作合成装置、動作合成方法、ならびに、プログラム | |
JP2000057199A (ja) | システムの設計支援装置及び設計支援プログラムを記録したコンピュータ読み取り可能な記録媒体 | |
US10192014B2 (en) | Circuit design support apparatus and computer readable medium |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200319 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20200319 |
|
A871 | Explanation of circumstances concerning accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A871 Effective date: 20200319 |
|
A975 | Report on accelerated examination |
Free format text: JAPANESE INTERMEDIATE CODE: A971005 Effective date: 20200403 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20200623 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20200709 |
|
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: 20200721 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20200818 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6752393 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |