JP6752393B1 - 設計支援システムおよび設計支援プログラム - Google Patents

設計支援システムおよび設計支援プログラム Download PDF

Info

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
Application number
JP2020516772A
Other languages
English (en)
Other versions
JPWO2021100122A1 (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.)
Mitsubishi Electric Corp
Original Assignee
Mitsubishi Electric 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 Mitsubishi Electric Corp filed Critical Mitsubishi Electric Corp
Application granted granted Critical
Publication of JP6752393B1 publication Critical patent/JP6752393B1/ja
Publication of JPWO2021100122A1 publication Critical patent/JPWO2021100122A1/ja
Active 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/27Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2117/00Details relating to the type or aim of the circuit design
    • G06F2117/08HW-SW co-design, e.g. HW-SW partitioning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/12Timing 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

ソフトウェア検討部(122)は、対象ソースプログラムの中の複数の関数のそれぞれのソフトウェア処理時間を算出する。データフローグラフ生成部(121)は、前記対象ソースプログラムに基づいて、前記複数の関数の関数間データフローグラフを生成する。ハードウェア検討部(130)は、前記対象ソースプログラムに対する高位合成によって、各関数のハードウェア処理時間と各関数の回路規模とを算出する。実装組み合わせ選択部(140)は、各関数のソフトウェア処理時間と、各関数のハードウェア処理時間と、各関数の回路規模と、前記関数間データフローグラフと、に基づいて、ソフトウェアで実装される1つ以上の関数とハードウェアで実装される1つ以上の関数との実装組み合わせを選択する。

Description

本発明は、システム設計を支援するための技術に関するものである。
組み込みシステムの開発において、ソフトウェア(S/W)に割り当てる処理とハードウェア(H/W)に割り当てる処理とについての検討が要求仕様に基づいて行われる。
このような検討は「S/W−H/W分割」と呼ばれる。
一般的に、処理の高速化のためにハードウェアが活用され、システムの縮小化のためにソフトウェアが活用される。
ソフトウェアに割り当てる処理とハードウェアに割り当てる処理との組み合わせは膨大であり、適切な組み合わせを人手で判断することは困難である。また、選ばれた組み合わせが要求性能を満たさないことが分かった場合、S/W−H/W分割をやり直す必要がある。
そこで、S/W−H/W分割を定量的に自動で行う方法が求められている。
特許文献1は、S/W−H/W分割のための技術が開示されている。
国際公開第2017/135219号
特許文献1の技術は、全ての組み合わせを検討し、各組み合わせについて使用リソース量、通信帯域および性能を提示する。
そのため、利用者は、提示された情報に基づいて、適切な組み合わせを判断しなければならない。
本発明は、対象システムの動作が記述されたソースプログラム(対象ソースプログラム)に基づいて、ソフトウェアで実装される1つ以上の関数とハードウェアで実装される1つ以上の関数との適切な実装組み合わせを提示できるようにすることを目的とする。
本発明の設計支援システムは、
対象ソースプログラムの中の複数の関数のそれぞれがソフトウェアで実装される場合について各関数の実行に要するソフトウェア処理時間を算出するソフトウェア検討部と、
前記対象ソースプログラムに基づいて、前記複数の関数における関数間のデータフローを示す関数間データフローグラフを生成するデータフローグラフ生成部と、
前記対象ソースプログラムに対する高位合成によって、各関数の実行に要するハードウェア処理時間と、各関数の実装に要する回路規模と、を算出するハードウェア検討部と、
各関数のソフトウェア処理時間と、各関数のハードウェア処理時間と、各関数の回路規模と、前記関数間データフローグラフと、に基づいて、ソフトウェアで実装される1つ以上の関数とハードウェアで実装される1つ以上の関数との実装組み合わせを選択する実装組み合わせ選択部と、を備える。
本発明によれば、対象ソースプログラムの中の複数の関数について、各関数のソフトウェア処理時間と各関数のハードウェア処理時間と各関数の回路規模が算出される。そして、これらの情報に加えて関数間データフローグラフを利用して実装組み合わせが選択される。関数間データフローグラフは関数間の依存関係を明らかにする。
したがって、関数間の依存関係に基づく適切な実装組み合わせを提示することが可能となる。
実施の形態1における設計支援システム100Sの構成図。 実施の形態1における対象システム200の構成図。 実施の形態1における設計支援方法のフローチャート。 実施の形態1におけるループ処理の一例を示す図。 実施の形態1におけるパイプライン化された一連の処理を示す図。 実施の形態1におけるソースプログラムの一例を示す図。 実施の形態1における関数統合の一例を示す図。 実施の形態1における関数統合前のタイミングチャートを示す。 実施の形態1における関数統合後の処理時間を示す。 実施の形態1における関数統合後のタイミングチャートを示す。 実施の形態1におけるスループットの改善例(改善前)を示す図。 実施の形態1におけるスループットの改善例(改善後)を示す図。 実施の形態1におけるスループットの改善例を示す図。 実施の形態2における設計支援システム100Sの構成図。 実施の形態2における設計支援方法のフローチャート。 各実施の形態における設計支援装置100のハードウェア構成図。
実施の形態および図面において、同じ要素または対応する要素には同じ符号を付している。説明した要素と同じ符号が付された要素の説明は適宜に省略または簡略化する。図中の矢印はデータの流れ又は処理の流れを主に示している。
実施の形態1.
システム設計を支援する設計支援システム100Sについて、図1から図13に基づいて説明する。
***構成の説明***
図1に基づいて、設計支援システム100Sの構成を説明する。
設計支援システム100Sは、設計支援装置100によって実現される。
但し、設計支援システム100Sは、複数の装置によって実現されてもよい。つまり、設計支援装置100の機能は、複数の装置によって実現されてもよい。
設計支援装置100は、プロセッサ101とメモリ102と補助記憶装置103と通信装置104と入出力インタフェース105といったハードウェアを備えるコンピュータである。これらのハードウェアは、信号線を介して互いに接続されている。
プロセッサ101は、演算処理を行うICであり、他のハードウェアを制御する。例えば、プロセッサ101は、CPU、DSPまたはGPUである。
ICは、Integrated Circuitの略称である。
CPUは、Central Processing Unitの略称である。
DSPは、Digital Signal Processorの略称である。
GPUは、Graphics Processing Unitの略称である。
メモリ102は揮発性または不揮発性の記憶装置である。メモリ102は、主記憶装置またはメインメモリとも呼ばれる。例えば、メモリ102はRAMである。メモリ102に記憶されたデータは必要に応じて補助記憶装置103に保存される。
RAMは、Random Access Memoryの略称である。
補助記憶装置103は不揮発性の記憶装置である。例えば、補助記憶装置103は、ROM、HDDまたはフラッシュメモリである。補助記憶装置103に記憶されたデータは必要に応じてメモリ102にロードされる。
ROMは、Read Only Memoryの略称である。
HDDは、Hard Disk Driveの略称である。
通信装置104はレシーバ及びトランスミッタである。例えば、通信装置104は通信チップまたはNICである。
NICは、Network Interface Cardの略称である。
入出力インタフェース105は、入力装置および出力装置が接続されるポートである。例えば、入出力インタフェース105はUSB端子であり、入力装置はキーボードおよびマウスであり、出力装置はディスプレイである。
USBは、Universal Serial Busの略称である。
設計支援装置100は、受付部110と解析部120とハードウェア検討部130と実装組み合わせ選択部140と出力部150といった要素を備える。
解析部120は、データフローグラフ生成部121とソフトウェア検討部122と転送時間算出部123といった要素を備える。
ハードウェア検討部130は、パターン生成部131と高位合成部132といった要素を備える。
これらの要素はソフトウェアで実現される。
補助記憶装置103には、受付部110と解析部120とハードウェア検討部130と実装組み合わせ選択部140と出力部150としてコンピュータを機能させるための設計支援プログラムが記憶されている。設計支援プログラムは、メモリ102にロードされて、プロセッサ101によって実行される。
補助記憶装置103には、さらに、OSが記憶されている。OSの少なくとも一部は、メモリ102にロードされて、プロセッサ101によって実行される。
プロセッサ101は、OSを実行しながら、設計支援プログラムを実行する。
OSは、Operating Systemの略称である。
設計支援プログラムの入出力データは記憶部190に記憶される。
メモリ102は記憶部190として機能する。但し、補助記憶装置103、プロセッサ101内のレジスタおよびプロセッサ101内のキャッシュメモリなどの記憶装置が、メモリ102の代わりに、又は、メモリ102と共に、記憶部190として機能してもよい。
設計支援装置100は、プロセッサ101を代替する複数のプロセッサを備えてもよい。複数のプロセッサは、プロセッサ101の機能を分担する。
設計支援プログラムは、光ディスクまたはフラッシュメモリ等の不揮発性の記録媒体にコンピュータ読み取り可能に記録(格納)することができる。
***動作の説明***
設計支援装置100の動作の手順は設計支援方法に相当する。また、設計支援装置100の動作の手順は設計支援プログラムによる処理の手順に相当する。
設計支援方法は、ソフトウェアとハードウェアとによって構成されるシステムの設計を支援するための方法である。
設計の対象となるシステムを「対象システム」と称する。
対象システムの具体例は各種の組込みシステムである。
図2に基づいて、対象システム200の構成を説明する。
対象システム200は、プロセッサ201と集積回路202とバス209とを備える。
プロセッサ201は、対象システム200の機能の一部をソフトウェアで実装するための要素である。プロセッサ201の具体例はCPUである。
集積回路202は、対象システム200の機能の一部をハードウェアで実装するための要素である。集積回路202の具体例はFPGAである。FPGAはField Programmable Gate Arrayの略称である。
プロセッサ201と集積回路202は、バス209を介してデータを通信する。
図3に基づいて、設計支援方法の手順を説明する。
ステップS110において、利用者は、対象ソースプログラムを設計支援装置100に入力する。
受付部110は、入力された対象ソースプログラムを受け付け、受け付けた対象ソースプログラムを記憶部190に記憶する。
対象ソースプログラムは、対象システムの動作が記述されたソースプログラムである。例えば、対象ソースプログラムはC言語で記述される。
対象ソースプログラムは、複数の関数を含む。各関数は、対象ソースプログラムの機能の一部を実現する。
さらに、利用者は、要件データを設計支援装置100に入力する。
受付部110は、入力された要件データを受け付け、受け付けた要件データを記憶部190に記憶する。
要件データは、対象システムに対する要件を指定するデータであり、所要時間要件と回路規模要件とを含む。
所要時間要件は、対象システムによる一連の処理の実行に要する時間(所要時間)についての要件である。
回路規模要件は、集積回路の規模(回路規模)についての要件である。
ステップS120において、解析部120は、対象ソースプログラムを解析する。
具体的には、データフローグラフ生成部121、ソフトウェア検討部122および転送時間算出部123が、対象ソースプログラムに基づいて、以下のように動作する。
データフローグラフ生成部121は、対象ソースプログラムの中の複数の関数についてのデータフローを示すグラフを生成する。生成されるグラフを「データフローグラフ」と称する。
具体的には、データフローグラフ生成部121は、関数間データフローグラフと関数内データフローグラフとを生成する。
関数間データフローグラフは、関数間のデータフローを示す。例えば、関数間データフローグラフは、各関数の引数によって特定される関数間の依存関係(データ入出力の関係)に基づいて生成される。関数間データフローグラフを参照することにより、関数間の依存関係が分かるため、各関数の実行順序が特定される。そして、順次に実行される2つ以上の関数、および、並列に実行される2つ以上の関数、が特定される。
関数内データフローグラフは、関数内のデータフローを示す。例えば、関数内データフローグラフは、関数内の各処理の変数によって特定される処理間の依存関係に基づいて生成される。関数内データフローグラフを参照することにより、処理間の依存関係が分かるため、各処理の実行順序が特定される。そして、順次に実行される2つ以上の処理、および、並列に実行される2つ以上の処理、が特定される。
ソフトウェア検討部122は、対象ソースプログラムの中の複数の関数のそれぞれがソフトウェアで実装される場合について、各関数の実行に要する時間を算出する。算出される時間を「ソフトウェア処理時間」と称する。
例えば、ソフトウェア処理時間は、プロファイリングと呼ばれるツールを利用することによって算出される。ツールの具体例はgprofである。
まず、転送時間算出部123は、対象ソースプログラムの中の複数の関数のそれぞれの入出力データ量を特定する。入出力データ量は、入力または出力されるデータの量である。例えば、入出力データ量はビット数で表される。
そして、転送時間算出部123は、各関数の入出力データ量に対する転送時間を算出する。転送時間は、データの転送に要する時間である。
例えば、転送時間は、「転送時間=ビット量÷バス幅÷動作周波数」という式を計算することによって算出される。
ステップS130において、ハードウェア検討部130は、対象ソースプログラムに対する高位合成によって、各関数のハードウェア処理時間と、各関数の回路規模と、を算出する。
ハードウェア処理時間は、各関数がハードウェアで実装される場合に各関数の実行に要する時間である。
回路規模は、各関数がハードウェア(回路)で実装される場合に各関数の実装に要する規模である。
具体的には、パターン生成部131および高位合成部132が以下のように動作する。
パターン生成部131は、データフローグラフに基づいて、複数のハードウェア実装パターンを生成する。
ハードウェア実装パターンは、対象ソースプログラムの中の各関数がハードウェアで実装されるパターンである。
各ハードウェア実装パターンは、高位合成のためのパラメータとして使用される。例えば、各ハードウェア実装パターンは、高位合成ツールのオプションを利用して指定される。
例えば、パターン生成部131は、各ハードウェア実装パターンを以下のように生成する。
パターン生成部131は、統合されることによってハードウェア処理時間が短縮される2つ以上の関数を関数間データフローグラフに基づいて探す。そして、パターン生成部131は、見つかった2つ以上の関数が統合されるハードウェア実装パターンを生成する。「関数統合」について後述する。
パターン生成部131は、各関数の中の複数の処理のうちパイプライン化されることによってハードウェア処理時間が短縮される2つ以上の処理を各関数の関数内データフローグラフに基づいて探す。そして、パターン生成部131は、見つかった2つ以上の処理がパイプライン化されるハードウェア実装パターンを生成する。「パイプライン化」について後述する。
パターン生成部131は、各関数の中の複数の処理のうち並列化されることによってハードウェア処理時間が短縮される2つ以上の処理を各関数の関数内データフローグラフに基づいて探す。そして、パターン生成部131は、見つかった2つ以上の関数が並列化されるハードウェア実装パターンを生成する。「並列化」について後述する。
パターン生成部131は、各関数の中の複数の演算のうち種類が同じである2つ以上の演算を対象ソースプログラムの中の各関数のソースプログラムに基づいて探す。そして、パターン生成部131は、見つかった2つ以上の演算を1つの演算に統合するために対象ソースプログラムの中の各関数のソースプログラムを書き替える。これにより、演算回路の共有が可能になる。「回路共有」について後述する。
高位合成部132は、各ハードウェア実装パターンにしたがって対象ソースプログラムに対する高位合成を行う。
これにより、各ハードウェア実装パターンにおける各関数のハードウェア処理時間と、各ハードウェア実装パターンにおける各関数の回路規模と、が算出される。
ステップS140において、実装組み合わせ選択部140は、各種データに基づいて実装組み合わせを選択する。
各種データは、各関数のソフトウェア処理時間、各ハードウェア実装パターンにおける各関数のハードウェア処理時間、各ハードウェア実装パターンにおける各関数の回路規模、および、データフローグラフである。
実装組み合わせは、ソフトウェアで実装される1つ以上の関数とハードウェアで実装される1つ以上の関数との組み合わせである。
具体的には、実装組み合わせ選択部140は、所要時間要件と回路規模要件とを満たす実装組み合わせを選択する。選択される実装組み合わせを「適合組み合わせ」と称する。
適合組み合わせは、例えば、線形計画法を利用することによって選択することができる。
所要時間要件を満たす実装組み合わせは以下のように特定される。
まず、実装組み合わせ選択部140は、順次に実行される2つ以上の関数と並列に実行される2つ以上の関数とを関数間データフローグラフに基づいて実装組み合わせ毎に特定する。
ソフトウェアによる実装の場合、対象システムに備わるプロセッサ(コア)の数以下の数の関数を並列に実装することが可能である。しかし、対象システムに備わるプロセッサ(コア)の数を超える数の関数を並列に実装することは可能でない。例えば、対象システムに備わるプロセッサがシングルコアプロセッサである場合、ソフトウェアで実装される2つ以上の関数を並列に実装することは可能でない。
ハードウェアによる実装の場合、2つ以上の関数を並列に実装することが可能である。
次に、実装組み合わせ選択部140は、特定結果と、各関数のソフトウェア処理時間と、各ハードウェア実装パターンにおける各関数のハードウェア処理時間と、に基づいて、実行時間帯データを実装組み合わせ毎に生成する。
実行時間帯データは、各関数が実行される時間帯を示す。順次に実行される2つ以上の関数は、異なる時間帯に実行される。並列に実行される2つ以上の関数は、同じ時間帯に実行される。
各関数が実行される時間帯は、連続して実行される2つの関数の間でのデータ転送に要する時間(データ転送時間)を考慮して算出される。つまり、先の関数の実行が完了してデータ転送時間が経過したタイミングで、後の関数の実行が開始される。
例えば、実装組み合わせ選択部140は、関数間データフローグラフに基づいて、複数の関数の実行順を特定する。そして、実装組み合わせ選択部140は、連続して実行される2つの関数から成る関数組毎に、関数間のデータ転送時間を特定する。
2つの関数の両方がソフトウェアで実装される場合、データ転送時間はゼロとみなすことができる。但し、この場合のデータ転送時間として、ゼロ以外の時間が設定されてもよい。
2つの関数の両方がハードウェアで実装される場合、データ転送時間はゼロとみなすことができる。但し、この場合のデータ転送時間として、ゼロ以外の時間が設定されてもよい。
2つの関数の一方がソフトウェアで実装されて2つの関数の他方がハードウェアで実装される場合、データ転送時間は、2つの関数のそれぞれの転送時間に基づいて特定される。例えば、先の関数の出力データ量に対する転送時間、または、後の関数の入力データ量に対する転送時間をデータ転送時間とみなすことができる。
そして、実装組み合わせ選択部140は、各実装組み合わせの実行時間帯データに基づいて、所要時間要件を満たす実装組み合わせを選択する。
例えば、実装組み合わせ選択部140は、各実装組み合わせの実行時間帯データに基づいて各実装組み合わせにおける所要時間を算出する。各実装組み合わせの実行時間帯データが示す全体の時間帯の長さが、各実装組み合わせにおける所要時間となる。そして、実装組み合わせ選択部140は、実装組み合わせ毎に、実装組み合わせにおける所要時間が所要時間要件を満たすか判定する。実装組み合わせにおける所要時間が所要時間要件を満たす場合、実装組み合わせは所要時間要件を満たす。
回路規模要件を満たす実装組み合わせは以下のように特定される。
まず、実装組み合わせ選択部140は、実装組み合わせにおける回路規模を算出する。
例えば、実装組み合わせ選択部140は、ハードウェアで実装される1つ以上の関数に対応する1つ以上の回路規模の合計を算出する。算出される合計が実装組み合わせにおける回路規模である。
そして、実装組み合わせ選択部140は、実装組み合わせにおける回路規模が回路規模要件を満たすか判定する。
実装組み合わせにおける回路規模が回路規模要件を満たす場合、実装組み合わせは回路規模要件を満たす。
適合組み合わせが複数存在する場合、実装組み合わせ選択部140は、各適合組み合わせにおける所要時間と各適合組み合わせにおける回路規模との少なくともいずれかに基づいて、最適な適合組み合わせを選択する。
例えば、実装組み合わせ選択部140は、所要時間が最短である適合組み合わせ、または、回路規模が最小である適合組み合わせ、を選択する。
ステップS150において、出力部150は、選択された適合組み合わせを出力する。
例えば、出力部150は、適合組み合わせをディスプレイに表示する。
以下に、図3のステップS130に関して「並列化」、「パイプライン化」、「回路共有」および「関数統合」を説明する。
まず、「並列化」について説明する。
並列化は、関数内のアーキテクチャである。並列化により、処理が高速化され、処理時間が短縮される。
逐次的に実行される複数の処理が並列に実行されることにより、並列に実行される処理の数に応じて処理時間が短縮される。
図4に、ループ処理の一例を示す。
式(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はレジスタ転送レベルの略称である。
ループ数が多いほど並列処理数が増え、処理時間が短縮される。
次に、「パイプライン化」について説明する。
パイプライン化は、関数内のアーキテクチャである。パイプライン化により、処理が高速化され、処理時間が短縮される。
一連の処理が完了する前に次回の一連の処理が開始されることにより、スループットが向上する。具体的には、一連の処理において、各処理が完了したときに次回の各処理が開始される。
図5に、パイプライン化された一連の処理を示す。
一連の処理において、第1処理、第2処理、第3処理、第4処理の順に各処理が実行される。一連の処理によって、第1データ、第2データ、第3データ、第4データの順に各データが処理される。
一連の処理がパイプライン化されない場合(図示省略)、第1データに対する一連の処理が完了した後に、第2データに対する一連の処理が実行される。
一連の処理がパイプライン化された場合(図5参照)、第1データに対する第4処理が実行される間に、第2データに対する第3処理が実行され、第3データに対する第2処理が実行され、第4データに対する第1処理が実行される。これにより、スループットが向上する。
次に、「回路共有」について説明する。
回路共有は、関数内のアーキテクチャである。回路共有により、種類が同じである複数の演算で演算回路が共有され、回路規模が縮小される。
図6に、回路共有のための変更前後のソースプログラムの一例を示す。
ソースプログラム(1)は、変更前のソースプログラムである。
ソースプログラム(1)には、2つのループ処理が含まれる。変数iに基づくループ処理をループ処理(i)と称し、変数jに基づくループ処理をループ処理(j)と称する。
ループ処理(i)では、演算Aと演算Xが繰り返し実行される。
ループ処理(j)では、演算Aと演算Yが繰り返し実行される。
ソースプログラム(1)において、演算Aは2箇所に記述されている。
ソースプログラム(2)は、変更後のソースプログラムである。
ソースプログラム(2)には、1つのループ処理が含まれる。このループ処理は、ループ処理(i)とループ処理(j)とを統合したものである。各回のループ処理において、演算Aが実行された後、演算Xと演算Yとのうち変数xの値に基づいて選択される演算が実行される。
ソースプログラム(2)において、演算Aは1箇所に記述されている。
ソースプログラム(1)をソースプログラム(2)へ変換することにより、ループ処理(i)の演算Aとループ処理(j)の演算Aとのために演算回路を共有することが可能となる。
回路共有のために、高位合成ツールが利用される。
高位合成ツールに対して、各演算器の共有の要否と各レジスタの共有の要否とを指定してオプションを設定することができる。演算器およびレジスタは演算回路を構成する要素である。
次に、「関数統合」について説明する。
関数統合は、複数の関数に跨るアーキテクチャ、つまり、関数間のアーキテクチャである。関数統合により、処理が高速化され、処理時間が短縮される。
具体的には、複数の関数が1つの関数に統合された後、複数の関数における複数の処理がパイプライン化されることにより、処理時間が短縮される。
図7に、関数統合の一例を示す。
関数統合前において、関数(1)の後に関数(2)が実行され、関数(2)の後に関数(3)が実行される。
関数(2)と関数(3)が関数(2,3)に統合された場合、関数(1)の後に関数(2,3)が実行される。
図8に、関数統合前のタイミングチャートを示す。
S/W時間(1)は、関数(1)がソフトウェアで実装された場合の関数(1)の処理時間である。
H/W時間(2)は、関数(2)がハードウェアで実装された場合の関数(2)の処理時間である。
H/W時間(3)は、関数(3)がハードウェアで実装された場合の関数(3)の処理時間である。
処理時間の間隔は、関数間のデータ転送時間を表している。
図9に、関数(2)と関数(3)が統合された場合の処理時間を示す。
関数(2)の処理が完了する前に関数(3)の処理を開始することができる場合、関数(2)と関数(3)を統合することによって、関数(2)および関数(3)の処理時間が短縮される。
図10に、関数統合後のタイミングチャートを示す。
H/W時間(2,3)は、関数(2)と関数(3)が統合された場合の関数(2,3)の処理時間である。
関数(2)と関数(3)が統合されることにより、関数(1)、関数(2)および関数(3)の所要時間が短縮される。破線の四角は短縮される時間を表している。
図11および図12に、スループットの改善例を示す。
関数(1)から関数(5)の5つの関数によって一連の処理が実行される。
時間(1−5)は、1つのフレームに対する一連の処理に要する時間(所要時間)である。
あるフレームに対する一連の処理が完了した後に次のフレームに対する一連の処理が開始される場合(図11参照)、3つのフレームに対する一連の処理の所要時間は、時間(1−5)の3倍以上の時間となる。
あるフレームに対する一連の処理が完了する前に次のフレームに対する一連の処理が開始される場合(図12参照)、3つのフレームに対する一連の処理の所要時間は、時間(1−5)の3倍未満の時間となる。
図12では、関数(4)によってフレーム(X)に対する処理が開始されると、関数(1)によってフレーム(X+1)に対する処理が開始される。
図13に、スループットの改善例を示す。
関数(1)から関数(5)のそれぞれのスループットが30fpsであると仮定する。fpsは1秒当たりに処理されるフレームの数を意味する。
関数(3)と関数(4)が関数(3,4)に統合されたと仮定する。また、関数(3,4)のスループットが30fpsであると仮定する。この場合、パイプラインの段数が削減され、関数(1)から関数(5)の全体のスループットが改善される。改善されるスループットは、30fpsに相当する時間である。
***実施の形態1の効果***
実施の形態1によって、最適なS/W−H/W分割を自動で行うことができる。つまり、対象システムの要件を満たす実装組み合わせを自動で選択することができる。
そのため、H/W設計およびS/W設計の経験がない者であっても、適切な実装組み合わせを得ることができる。
設計支援システム100Sは、対象ソースプログラムの中の複数の関数について、各関数のソフトウェア処理時間と各関数の転送時間と各関数のハードウェア処理時間と各関数の回路規模を算出する。そして、設計支援システム100Sは、これらの情報に加えてデータフローグラフを利用して実装組み合わせを選択する。データフローグラフは関数間(または処理間)の依存関係を明らかにする。
したがって、関数間(または処理間)の依存関係に基づく適切な実装組み合わせを提示することが可能となる。
実施の形態2.
実装組み合わせの選択結果を学習する形態について、主に実施の形態1と異なる点を図14および図15に基づいて説明する。
***構成の説明***
図14に基づいて、設計支援装置100の構成を説明する。
設計支援装置100は、さらに、学習部160を備える。
設計支援プログラムは、さらに、学習部160としてコンピュータを機能させる。
***動作の説明***
図15に基づいて、設計支援方法の手順を説明する。
ステップS210からステップS230は、実施の形態1におけるステップS110からステップS130と同じである。
ステップS240において、実装組み合わせ選択部140は、所要時間要件と回路規模要件とを満たす実装組み合わせ(適合組み合わせ)を選択する。
ステップS240は、実施の形態1におけるステップS140に相当する。但し、ステップS240の一部は、実施の形態1におけるステップS140と異なる。
まず、実装組み合わせ選択部140は、学習モデルを実行することによって、対象ソースプログラムの中の複数の関数のための実装組み合わせの候補となる1つ以上の実装組み合わせを特定する。
学習モデルは、選択される実装組み合わせの候補となる1つ以上の実装組み合わせを特定する機能を有する。学習モデルは、ソフトウェア、ハードウェアまたはこれらの組み合わせで実現される。学習モデルは、学習器または学習モジュールとも呼ばれる。
例えば、実装組み合わせ選択部140は、対象ソースプログラムの中の複数の関数のそれぞれの情報(ソースプログラムまたはデータフローグラフなど)を入力として、学習モデルを実行する。これにより、1つ以上の実装組み合わせが学習モデルから出力される。出力される1つ以上の実装組み合わせが、対象ソースプログラムの中の複数の関数のための実装組み合わせの候補として特定された1つ以上の実装組み合わせである。
そして、実装組み合わせ選択部140は、特定された1つ以上の実装組み合わせの中から、対象ソースプログラムの中の複数の関数のための実装組み合わせ(適合組み合わせ)を選択する。選択方法は、実施の形態1のステップS140における方法と同じである。
ステップS250は、実施の形態1におけるステップS150と同じである。
ステップS260において、学習部160は、ステップS240で選択された実装組み合わせに対して機械学習を行う。これにより、学習モデルが更新される。
例えば、実装組み合わせ選択部140は、対象ソースプログラムの中の複数の関数のそれぞれの情報(ソースプログラムまたはデータフローグラフなど)と選択された実装組み合わせの情報とを入力として、機械学習を行う。これにより、学習モデルが更新される。
ステップS260の後、処理はステップS210に進む。
そして、新たな対象ソースプログラムに対して、ステップS210からステップS260が実行される。新たな対象ソースプログラムの中の複数の関数を新たな複数の関数と称する。
これにより、新たな複数の関数のための実装組み合わせ(適合組み合わせ)が選択される。
***実施の形態2の効果***
実施の形態2により、実装組み合わせの選択結果について機械学習を行って学習モデルを得ることができる。そして、学習モデルによって実装組み合わせの候補を限定することができる。
適合組み合わせは、限定された候補の中から選択される。そのため、設計支援システム100Sの負荷が軽減される。また、対象ソースプログラムの入力から適合組み合わせの出力までの時間が短縮される。
***実施の形態の補足***
図16に基づいて、設計支援装置100のハードウェア構成を説明する。
設計支援装置100は処理回路109を備える。
処理回路109は、受付部110と解析部120とハードウェア検討部130と実装組み合わせ選択部140と出力部150と学習部160とを実現するハードウェアである。
処理回路109は、専用のハードウェアであってもよいし、メモリ102に格納されるプログラムを実行するプロセッサ101であってもよい。
処理回路109が専用のハードウェアである場合、処理回路109は、例えば、単一回路、複合回路、プログラム化したプロセッサ、並列プログラム化したプロセッサ、ASIC、FPGAまたはこれらの組み合わせである。
ASICは、Application Specific Integrated Circuitの略称である。
FPGAは、Field Programmable Gate Arrayの略称である。
設計支援装置100は、処理回路109を代替する複数の処理回路を備えてもよい。複数の処理回路は、処理回路109の機能を分担する。
処理回路109において、一部の機能が専用のハードウェアで実現されて、残りの機能がソフトウェアまたはファームウェアで実現されてもよい。
このように、設計支援装置100の各機能はハードウェア、ソフトウェア、ファームウェアまたはこれらの組み合わせで実現することができる。
設計支援装置100の要素である「部」は、「処理」または「工程」と読み替えてもよい。
各実施の形態は、好ましい形態の例示であり、本発明の技術的範囲を制限することを意図するものではない。各実施の形態は、部分的に実施してもよいし、他の形態と組み合わせて実施してもよい。フローチャート等を用いて説明した手順は、適宜に変更してもよい。
100 設計支援装置、100S 設計支援システム、101 プロセッサ、102 メモリ、103 補助記憶装置、104 通信装置、105 入出力インタフェース、109 処理回路、110 受付部、120 解析部、121 データフローグラフ生成部、122 ソフトウェア検討部、123 転送時間算出部、130 ハードウェア検討部、131 パターン生成部、132 高位合成部、140 実装組み合わせ選択部、150 出力部、160 学習部、190 記憶部、200 対象システム、201 プロセッサ、202 集積回路、209 バス。

Claims (7)

  1. 対象ソースプログラムの中の複数の関数のそれぞれがソフトウェアで実装される場合について各関数の実行に要するソフトウェア処理時間を算出するソフトウェア検討部と、
    前記対象ソースプログラムに基づいて、前記複数の関数における関数間のデータフローを示す関数間データフローグラフを生成するデータフローグラフ生成部と、
    各関数がハードウェアで実装される複数のハードウェア実装パターンに対して、前記対象ソースプログラムに対する高位合成によって、各ハードウェア実装パターンの実行に要するハードウェア処理時間と、各ハードウェア実装パターンの実装に要する回路規模と、を算出するハードウェア検討部と、
    各関数のソフトウェア処理時間と、各関数のハードウェア処理時間と、各関数の回路規模と、前記関数間データフローグラフと、に基づいて、ソフトウェアで実装される1つ以上の関数とハードウェアで実装される1つ以上の関数との実装組み合わせを選択する実装組み合わせ選択部と、
    を備え
    前記ハードウェア検討部は、統合されることによってハードウェア処理時間が短縮される2つ以上の関数を前記関数間データフローグラフに基づいて探し、見つかった2つ以上の関数が統合されるハードウェア実装パターンを生成し、各ハードウェア実装パターンにしたがって前記対象ソースプログラムに対する高位合成を行うことによって各ハードウェア実装パターンにおける各関数のハードウェア処理時間と各ハードウェア実装パターンにおける各関数の回路規模とを算出する
    設計支援システム。
  2. 対象ソースプログラムの中の複数の関数のそれぞれがソフトウェアで実装される場合について各関数の実行に要するソフトウェア処理時間を算出するソフトウェア検討部と、
    前記対象ソースプログラムに基づいて、前記複数の関数における関数間のデータフローを示す関数間データフローグラフを生成するデータフローグラフ生成部と、
    各関数がハードウェアで実装される複数のハードウェア実装パターンに対して、前記対象ソースプログラムに対する高位合成によって、各ハードウェア実装パターンの実行に要するハードウェア処理時間と、各ハードウェア実装パターンの実装に要する回路規模と、を算出するハードウェア検討部と、
    各関数のソフトウェア処理時間と、各関数のハードウェア処理時間と、各関数の回路規模と、前記関数間データフローグラフと、に基づいて、ソフトウェアで実装される1つ以上の関数とハードウェアで実装される1つ以上の関数との実装組み合わせを選択する実装組み合わせ選択部と、
    を備え
    前記実装組み合わせ選択部は、順次に実行される2つ以上の関数と並列に実行される2つ以上の関数とを前記関数間データフローグラフに基づいて実装組み合わせ毎に特定し、特定結果と各関数のソフトウェア処理時間と各ハードウェア実装パターンにおける各関数のハードウェア処理時間とに基づいて各関数が実行される時間帯を示す実行時間帯データを実装組み合わせ毎に生成し、各実装組み合わせの実行時間帯データに基づいて所要時間についての要件である所要時間要件を満たす実装組み合わせを選択し、回路規模についての要件である回路規模要件を満たす実装組み合わせを選択する
    設計支援システム。
  3. 前記実装組み合わせ選択部は、前記関数間データフローグラフに基づいて前記複数の関数の実行順を特定し、連続して実行される2つの関数の間でのデータ転送に要する時間であるデータ転送時間を考慮して、前記所要時間要件を満たす実装組み合わせを選択する
    請求項に記載の設計支援システム。
  4. 前記設計支援システムは、
    前記対象ソースプログラムに基づいて各関数の入出力データ量を特定し、各関数の入出力データ量に対する転送時間を算出する転送時間算出部を備え、
    前記実装組み合わせ選択部は、前記2つの関数のそれぞれの転送時間に基づいて前記データ転送時間を特定する
    請求項に記載の設計支援システム。
  5. 前記設計支援システムは、
    前記対象ソースプログラムの中の前記複数の関数のために選択された実装組み合わせに対して機械学習を行うことによって、選択される実装組み合わせの候補となる1つ以上の実装組み合わせを特定する学習モデルを更新する学習部を備え、
    前記実装組み合わせ選択部は、新たな対象ソースプログラムの中の新たな複数の関数のための実装組み合わせの候補となる1つ以上の実装組み合わせを前記学習モデルを実行することによって特定し、特定された1つ以上の実装組み合わせの中から前記新たな複数の関数のための実装組み合わせを選択する
    請求項1から請求項のいずれか1項に記載の設計支援システム。
  6. 対象ソースプログラムの中の複数の関数のそれぞれがソフトウェアで実装される場合について各関数の実行に要するソフトウェア処理時間を算出するソフトウェア検討処理と、
    前記対象ソースプログラムに基づいて、前記複数の関数における関数間のデータフローを示す関数間データフローグラフを生成するデータフローグラフ生成処理と、
    各関数がハードウェアで実装される複数のハードウェア実装パターンに対して、前記対象ソースプログラムに対する高位合成によって、各ハードウェア実装パターンの実行に要するハードウェア処理時間と、各ハードウェア実装パターンの実装に要する回路規模と、を算出するハードウェア検討処理と、
    各関数のソフトウェア処理時間と、各関数のハードウェア処理時間と、各関数の回路規模と、前記関数間データフローグラフと、に基づいて、ソフトウェアで実装される1つ以上の関数とハードウェアで実装される1つ以上の関数との実装組み合わせを選択する実装組み合わせ選択処理と、
    をコンピュータに実行させるための設計支援プログラムであって、
    前記ハードウェア検討処理は、統合されることによってハードウェア処理時間が短縮される2つ以上の関数を前記関数間データフローグラフに基づいて探し、見つかった2つ以上の関数が統合されるハードウェア実装パターンを生成し、各ハードウェア実装パターンにしたがって前記対象ソースプログラムに対する高位合成を行うことによって各ハードウェア実装パターンにおける各関数のハードウェア処理時間と各ハードウェア実装パターンにおける各関数の回路規模とを算出する
    設計支援プログラム。
  7. 対象ソースプログラムの中の複数の関数のそれぞれがソフトウェアで実装される場合について各関数の実行に要するソフトウェア処理時間を算出するソフトウェア検討処理と、
    前記対象ソースプログラムに基づいて、前記複数の関数における関数間のデータフローを示す関数間データフローグラフを生成するデータフローグラフ生成処理と、
    各関数がハードウェアで実装される複数のハードウェア実装パターンに対して、前記対象ソースプログラムに対する高位合成によって、各ハードウェア実装パターンの実行に要するハードウェア処理時間と、各ハードウェア実装パターンの実装に要する回路規模と、を算出するハードウェア検討処理と、
    各関数のソフトウェア処理時間と、各関数のハードウェア処理時間と、各関数の回路規模と、前記関数間データフローグラフと、に基づいて、ソフトウェアで実装される1つ以上の関数とハードウェアで実装される1つ以上の関数との実装組み合わせを選択する実装組み合わせ選択処理と、
    をコンピュータに実行させるための設計支援プログラムであって、
    前記実装組み合わせ選択処理は、順次に実行される2つ以上の関数と並列に実行される2つ以上の関数とを前記関数間データフローグラフに基づいて実装組み合わせ毎に特定し、特定結果と各関数のソフトウェア処理時間と各ハードウェア実装パターンにおける各関数のハードウェア処理時間とに基づいて各関数が実行される時間帯を示す実行時間帯データを実装組み合わせ毎に生成し、各実装組み合わせの実行時間帯データに基づいて所要時間についての要件である所要時間要件を満たす実装組み合わせを選択し、回路規模についての要件である回路規模要件を満たす実装組み合わせを選択する
    設計支援プログラム。
JP2020516772A 2019-11-19 2019-11-19 設計支援システムおよび設計支援プログラム Active JP6752393B1 (ja)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115221772A (zh) * 2022-01-06 2022-10-21 中冶长天国际工程有限责任公司 危废焚烧配伍优化方法、装置、终端设备及存储介质

Family Cites Families (32)

* Cited by examiner, † Cited by third party
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

Cited By (1)

* Cited by examiner, † Cited by third party
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