JP5979965B2 - 回路設計支援装置及び回路設計支援方法及びプログラム - Google Patents

回路設計支援装置及び回路設計支援方法及びプログラム Download PDF

Info

Publication number
JP5979965B2
JP5979965B2 JP2012108307A JP2012108307A JP5979965B2 JP 5979965 B2 JP5979965 B2 JP 5979965B2 JP 2012108307 A JP2012108307 A JP 2012108307A JP 2012108307 A JP2012108307 A JP 2012108307A JP 5979965 B2 JP5979965 B2 JP 5979965B2
Authority
JP
Japan
Prior art keywords
array
access array
write access
read access
read
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
JP2012108307A
Other languages
English (en)
Other versions
JP2013235474A (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
Priority to JP2012108307A priority Critical patent/JP5979965B2/ja
Publication of JP2013235474A publication Critical patent/JP2013235474A/ja
Application granted granted Critical
Publication of JP5979965B2 publication Critical patent/JP5979965B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、回路設計を支援する回路設計支援装置に関する。
より具体的には、動作記述コード(以下、単に「動作記述」ともいう)からレジスタ転送レベルを自動生成する高位合成(動作合成)を利用した半導体設計を支援する回路設計支援装置に関する。
従来の半導体集積回路設計では、回路に含まれるレジスタとレジスタ間の組み合わせ回路の動作を記述するレジスタ転送レベル(RTL)をハードウェア記述言語で設計していた。
近年では集積回路の回路規模が増大しており、RTL設計時間を多大に要することが問題となっている。
そこで、RTLよりも抽象度が高い高級言語であるC言語、C++言語、SystemC言語などを用いて自動的にRTLを生成する高位合成技術が提唱されており、これを実現する高位合成ツールが市販されている。
一方で、高位合成ツールに対して、高性能なRTLを得るためにアーキテクチャを考慮した設計技術が提案されている。
特許文献1では、演算器の前にシフトレジスタを自動で挿入することで、高性能なパイプライン処理を行うものである。
特開2007−272797号公報
高位言語で記述した動作記述コード(ループ文が2つ含まれる)を特許文献1の技術に適用すると、図20に示すとおり、ループ1(の演算器)とループ2(の演算器)の間にメモリが1つ生成される。
特許文献1では、図20に示すようにメモリが1つしか生成されないので、図21に示すように、ループ1とループ2の処理は並列化ができず、その処理性能は低い。
もし、これを図22に示すように2つのメモリを使い、ループ1(の演算器)がメモリ1に書き込んでいる間、ループ2(の演算器)がメモリ2のデータを読み出し、2つのループ(の演算器)が各々の処理を完了すれば、今度は、ループ1(の演算器)がメモリ2に書き込み、ループ2(の演算器)がメモリ1からデータを読み出すような構成をとることができれば、処理は高速になる。
図22の構成における処理動作を図23に示す。
このような2つのメモリからなる構成を本明細書ではダブルバッファと呼ぶ。
上述のように、特許文献1では、高位合成において2つのループの間に2つ以上のバッファを設けることができず、処理の効率化を図ることができないという課題がある。
この発明は、このような課題を解決することを主な目的としており、ライトアクセスアドレスとリードアクセスアドレスとの連携に用いられる連携バッファが高位合成において2個以上生成されるようにすることを主な目的とする。
本発明に係る回路設計支援装置は、
ライトアクセスされるライトアクセス配列と、前記ライトアクセス配列と配列名が共通する、リードアクセスされるリードアクセス配列とが用いられて、高位合成の対象となる回路の動作が記述されている動作記述コードを、入力するコード入力部と、
配列名が共通するライトアクセス配列とリードアクセス配列との間の連携に用いられる連携バッファを前記高位合成において2個以上生成すべきライトアクセス配列とリードアクセス配列の条件がマルチバッファ生成条件として定義されているマルチバッファ生成条件情報を、入力する条件情報入力部と、
前記動作記述コードから配列名が共通するライトアクセス配列とリードアクセス配列とを抽出し、抽出したライトアクセス配列とリードアクセス配列について前記マルチバッファ生成条件が成立するか否かを判断する条件判断部と、
前記条件判断部により、前記ライトアクセス配列と前記リードアクセス配列について前記マルチバッファ生成条件が成立すると判断された場合に、前記ライトアクセス配列と前記リードアクセス配列に対して2個以上の連携バッファを前記高位合成において生成することを指定するバッファ生成指定部とを有することを特徴とする。
本発明によれば、ライトアクセス配列とリードアクセス配列に対して2個以上の連携バッファを生成するよう指定するため、高位合成でライトアクセス配列とリードアクセス配列に対して2個以上の連携バッファを生成することができる。
実施の形態1に係る半導体設計支援装置の構成例を示す図。 実施の形態1に係る処理部の動作例を示すフローチャート図。 実施の形態1に係る高級言語で記述されたコードの例を示す図。 実施の形態1に係るアクセス情報テーブルの例を示す図。 実施の形態1に係るアクセス情報テーブル(リネーム後)の例を示す図。 実施の形態1に係る配列テーブルの例を示す図。 実施の形態1に係るアクセス情報テーブル(タイプ判定後)の例を示す図。 実施の形態1に係るアクセス情報テーブル(依存関係判定後)の例を示す図。 実施の形態1に係るバッファ指定テーブルの例を示す図。 実施の形態1に係る配列テーブル(バッファ構成判定後)の例を示す図。 実施の形態1の手法を適用した場合に生成されるハードウェアブロックの例を示す図。 実施の形態1に係るアクセス情報テーブル(サイクル数判定後)の例を示す図。 実施の形態1に係るアクセス情報テーブル(アクセス遅延判定後)の例を示す図。 実施の形態1に係る依存テーブルの例を示す図。 実施の形態1の手法を適用した場合に生成されるハードウェアブロック(遅延バッファ包含)の例を示す図。 実施の形態1の手法を適用した場合に生成されるハードウェアブロック(制御回路包含)の例を示す図。 実施の形態1の手法を適用した場合の処理シーケンスの例を示す図。 実施の形態1に係る半導体設計支援装置のハードウェア構成例を示す図。 高級言語で記述されたコードの例を示す図。 実施の形態1の手法を適用しない場合のハードウェアブロックの例を示す図。 実施の形態1の手法を適用しない場合のハードウェアの性能を説明する図。 ダブルバッファのハードウェアブロックの例を示す図。 ダブルバッファのハードウェアの性能を説明する図。 遅延バッファが必要なハードウェアブロックの例を示す図。
実施の形態1.
本実施の形態では、高位合成において、複数のループ文の間にダブルバッファが生成されるようにする半導体設計支援装置を説明する。
つまり、本実施の形態に係る半導体設計支援装置は、配列からのリードだけでなく、配列へのライトも考慮して、その依存関係を抽出し、ダブルバッファ構成を実現できるようにする。
また、本実施の形態に係る半導体設計支援装置は、配列の添え字に規則性がない場合でも高性能なRTLを得るためにダブルバッファ構成を自動で生成できるようにする。
特許文献1では、配列の添え字はループ変数の一次式に限定されており、添え字に規則性がない場合は適用できないといった課題がある。
また、配列の添え字がループ変数の一次式の場合でも、読み出すメモリへライトするモジュールにおいて、そのライトするアドレスに規則性がない場合、システム全体として処理性能が劣るといった課題がある。
添え字に規則性がない配列が含まれる動作記述コードの例を図19に示す。
図19のMEM[i+adr]はライトアクセスされる配列であり、MEM[i]とMEM[i+1]はリードアクセスされる配列である。
「添え字に規則性がない」とは、図19のコード中のループ1の「MEM[i+adr]」のような配列の添え字がループ変数以外の変数を含むアドレスの指定をいう。
本実施の形態に係る半導体設計支援装置は、このような、添え字に規則性がない配列が含まれる動作記述コードや、ライト先のアドレスに規則性がない動作記述コードでも高性能なRTLを得るためにダブルバッファ構成を自動で生成できるようにする。
更に、本実施の形態に係る半導体設計支援装置は、データの遅延量を計算し、遅延バッファとそれに伴う制御回路を自動で生成することで高性能なRTLを得ることができるようにする。
複数のメモリが配置され、1つの演算器に複数のメモリからデータを読み出す場合、それらのメモリからのリードデータの遅延を合わせるために、適宜遅延バッファと遅延バッファを制御する制御回路を別途作成する必要がある。
図24では、処理Cが処理Bと処理Aの結果を利用するが、処理Bの結果と処理Aの結果が時間的にずれるため、遅延バッファを設けて、その差を吸収している。
この遅延バッファと遅延バッファに付随する制御回路の設計は、高位合成ツールでは自動的に生成することができず、設計者が遅延バッファや制御回路の設計をする必要があるため、設計負荷が大きくなるといった課題がある。
このため、本実施の形態に係る半導体設計支援装置は、複数のメモリが配置され、1つの演算器に複数のメモリからデータを読み出す場合、そのデータの遅延を合わせるための、遅延バッファとそれを制御する制御回路を自動で生成する。
そして、本実施の形態に係る半導体設計支援装置によれば、設計者の能力に依存することなく高性能なハードウェア構成(アーキテクチャ)を短時間で得ることができる。
図1は、実施の形態1に係る半導体設計支援装置を用いた高位合成システムの構成を示すブロック図である。
図1において、半導体設計支援装置1は、処理部3とテーブル記憶部4とファイル記憶部5を備える。
半導体設計支援装置1は、回路設計支援装置に相当する。
高位合成装置2は、高級言語(C/C++/SystemC言語など)による動作記述コードを受理して、RTLを生成する装置である。
半導体設計支援装置1から高位合成装置2へ高位合成が可能な動作記述コードを与えることで目的とするRTLを得ることができる。
ここで、高位合成向け高位言語を説明する。
一般に高位言語で記述されたコードは、高位合成ツールが高位合成できるように書き直しを行う必要がある。
この書き直しは、高位合成ツールの制約で合成できない記述をコードから削除、あるいは書き直すといった作業と、アーキテクチャを考慮したコードに変更することを意味する。
本明細書は、特に後者について考慮した高位合成向け高位言語生成を意図している。
処理部3は、高位合成の対象となる回路の動作を記述した動作記述コード、例えばC言語、C++言語、SystemC言語で作成された動作記述コードを入力し、また、ダブルバッファを構成するための条件を入力し、配列のアクセス情報を解析し、高速に処理可能になるようなバッファ構成を判定し、モジュール生成する。
処理部3は、コード入力部、条件情報入力部、条件判断部及びバッファ生成指定部に相当する。
テーブル記憶部4は、処理部3の処理結果が示されるテーブルや、処理部3が参照するテーブルを記憶する。
ファイル記憶部5は、処理部3が入力した動作記述コードを記憶する。
また、ファイル記憶部5は、処理部3が変更した後の動作記述コードを記憶してもよい。
次に、実施の形態1の動作を説明する。
図2は、実施の形態1の半導体設計支援装置1の動作の流れを示すフローチャートである。
このフローチャートにある機能は処理部3で実行され、必要なときにテーブル記憶部4とファイル記憶部5とのデータのやりとりが行われる。
動作を説明するにあたり図3に例示する動作記述コードを用いる。
なお、図3のコードは本実施の形態に係る動作を説明するために必要な一部を抜き出して示したものであり、動作記述としては不完全なものである。
ステップ1:高性能化の指定
本実施の形態に係る高性能化でダブルバッファを生成する場合、メモリ容量を従来の2倍要する。
性能が高くない場合でもシステム全体として十分であるならば、図20に示すようにメモリ1つでもよい。
設計によっては処理性能よりもメモリ量を少なくすることを優先する場合があるため、この選択はユーザ設定とする。
設定する手段としては、コードにプラグマを指定する方法や対話型でオプションを設定する方法などが可能である。
本明細書では、高性能化を実施する場合を説明するため、以降、高性能化指定があったという前提で説明を進める。
ステップ2:配列アクセス情報抽出
まず、処理部3は、高位合成対象となる動作記述コード(図3)とバッファ指定テーブル(図9)を入力し、動作記述コード(図3)をファイル記憶部5に格納し、バッファ指定テーブル(図9)をテーブル記憶部4に格納する。
バッファ指定テーブル(図9)は、高位合成においてダブルバッファ構成がとられるための条件(マルチバッファ生成条件)が示される情報であり、マルチバッファ生成条件情報の例に該当する。
なお、バッファ指定テーブル(図9)の詳細は後述する。
動作記述コードのファイル記憶部5への格納、バッファ指定テーブルのテーブル記憶部4への格納の後、処理部3は、ループ処理を検索し、読み出した順にループID(Identifier)を割り当てる。
次に、処理部3は、ループ内にライト(配列記述が左辺にある)記述部分と、リード(配列記述が右辺にある)記述部分を全て抽出し、抽出結果をアクセス情報テーブルとしてテーブル記憶部4に格納する。
図4に、図3のコードを入力した場合のアクセス情報テーブルの例を示す。
ここで、
Noは、テーブルのレコード番号である。
配列IDは、配列の識別子である。
配列変数名が同じであれば、同じ配列IDとなる。
配列変数名は、参照名ではなく実体である変数名である。
ループIDは、ループ処理の識別子である。
同一ループ内にある配列変数であれば、配列変数IDが異なっていても同じループIDとなる。
R/Wは、Rが配列リードを表し、Wが配列ライトを表す。
実行数は、配列変数の記述箇所(行数)である。
図4のNo.1のdatは、図3のループ(1)のdat[i+wadr]である。
図4のNo.2のdatは、図3のループ(2)のdat[radr+i]である。
図4のNo.3のdatは、図3のループ(3)の右辺のdat[i]とdat[i+1]である。
図4のNo.4のdatは、図3のループ(3)の左辺のdat[i]である。
図4のNo.5のfooは、図3のループ(2)の左辺のfoo[i]である。
図4のNo.6のfooは、図3のループ(3)の左辺のfoo[N−i]である。
なお、ライトアクセスされる配列をライトアクセス配列といい、リードアクセスされる配列をリードアクセス配列という。
また、ライトアクセス配列の配列要素をライトアクセスアドレスといい、リードアクセス配列の配列要素をリードアクセスアドレスという。
ライトアクセスアドレスは、それぞれライトアクセスのアクセス先のアドレスであり、リードアクセスアドレスは、それぞれリードアクセスのアクセス先のアドレスである。
処理部3の処理により高位合成においてダブルバッファとして設けられる2個のバッファは、配列名が共通するライトアクセス配列とリードアクセス配列との間の連携のための連携バッファである。
また、図3のループ(1)のライトアクセス配列dat[i+wadr]では、添え字がループ変数以外の変数を含んでおり、ライトアクセスアドレスに規則性がない。
同様に、図3のループ(2)のリードアクセス配列dat[radr+i]でも、添え字がループ変数以外の変数を含んでおり、リードアクセスアドレスに規則性がない。
ステップ3:配列変数のリネーム
次に、処理部3は、配列をリネームしてアクセス情報テーブルを更新する。
配列のリネーム処理では、処理部3は、2つの処理を行う。
1つ目は同一メモリへのライトを2回以上行っている場合、2回目のライト処理以降異なる配列へ割り当てる処理を行い、テーブルのアクセス情報テーブルを更新する。
つまり、以下の場合は、2回目のmemAをmemA_1配列などといった新規配列変数に割り当てる。
for(){
memA[..] = ..;

for(){
memB[..] = memA[..];

for(){
memA[..] = memC[..];//memAに対する2回目のライト処理

ただし、2回目のライト処理では、配列を別の配列に割り当てても結果が異ならないことが保証される場合に限る。
また、処理部3の2つ目の処理としては、同一配列をリードする異なるループIDにおいて、配列名をリネームする。
ここで元の配列名にリンクをはる。
また、リネームされた配列IDに異なるIDを再割り当てする。
図3のコード例でこの処理をしたアクセス情報テーブルを図5示す。
ステップ4:配列タイプ抽出
次に、処理部3は、テーブル記憶部4からアクセス情報テーブル(図5)を読み出す。
アクセス情報テーブル(図5)の配列IDに対し、動作記述コード(図3)上のどこに宣言があるかを検索する。
例えば、配列宣言は、
//コード
int dat[1024];
あるいは、
dat = new int[1024];
である。
処理部3は、配列宣言を見つけたら、その配列のサイズ(配列の添え字定数)を取得し、配列IDごとにサイズと配列タイプが示される配列タイプテーブルを生成し、生成した配列テーブルをテーブル記憶部4に格納する。
なお、配列タイプとは、MEM(メモリ)かREG(レジスタ)のいずれかである。
配列サイズによってはレジスタ構成も可能であるため、閾値をもってそれを判断する。
例えば、配列サイズ256以上の配列であれば、自動的にMEMにするなどである。
図3のコード例において、サイズと配列タイプとを抽出をした結果である配列テーブルを図6に示す。
図6の配列IDは、図5の配列IDと同じである。
ステップ5:添え字判定
次に、処理部3は、アクセス情報テーブル(図5)から以下の2つタイプを判定し、アクセス情報テーブルを更新する。
ループID毎に前のイタレーションが次のイタレーションに影響を与えるかを調べる。
具体的には、繰り返し文中にある任意の変数が参照後、代入を行っている場合は「依存あり」とし、それ以外を「依存なし」とする。
「依存あり」は、ライトアクセスアドレス又はリードアクセスアドレスの順序を変更すると高位合成の対象となる回路の動作が変化してしまうため、ライトアクセスアドレス又はリードアクセスアドレスの順序の変更が許容されないことを意味する。
一方、「依存なし」は、ライトアクセスアドレス又はリードアクセスアドレスの順序を変更しても高位合成の対象となる回路の動作が変化しないので、ライトアクセスアドレス又はリードアクセスアドレスの順序の変更が許容されることを意味する。
また、「依存なし」と判断された場合、処理部3は、更に、以下を判定する。
配列の添え字は、1重ループ変数(1次式かつ係数が1)と定数で表現されている場合は、タイプAと判定し、配列の添え字が上記以外は、タイプBと判定する。
タイプBの配列に含まれるアドレスの間には規則性がない。
タイプAに該当する配列の添え字の例と、タイプBに該当する配列の添え字の例を以下に示す。
(タイプAの例) ArrayA[i]=ArrayB[i+1]+d;
(タイプBの例) ArrayA[i]=ArrayB[i+adr]+d;
また、「依存あり」の場合は、タイプBと判定する。
図3のコード例においてこの処理をした後のアクセス情報テーブルを図7に示す。
ステップ6:依存関係判定
次に、処理部3は、アクセス情報テーブル(図7)を参照し、ループ間の依存関係判定を行い、アクセス情報テーブルを更新する。
まず、処理部3は、依存するループIDを各Noについて解析する。
基点となる最初のメモリアクセスの依存ループIDを依存ループ0(基点)とする。
これについて、外部より基点情報を与えてもよい。
以降、基点以外のリード処理について、解析していく。
図8に図3のコードを処理したアクセス情報テーブルを示す。
図3の例の場合はNo.1を基点(依存ループID0)とする。
No.2では、dat_Aへのリードアクセスは、ループID1のdatへのライトアクセスの終了後に実行されるため、依存ループIDを1とする。
つまり、No.2のdat_Aは、図3のループ(2)のdat[radr+i]であり、ループ(1)のdat[i+wadr]のライトアクセスの後に、リードアクセスされるので、依存ループIDが1となる。
No.3においても同様に、dat_Bへのリードアクセスは、ループID1のdatへのライトアクセスの終了後に実行されるため、依存ループIDを1とする。
つまり、No.3のdat_Bは、図3のループ(3)の右辺のdat[i]とdat[i+1]であり、ループ(1)のdat[i+wadr]のライトアクセスの後に、リードアクセスされるので、依存ループIDが1となる。
No.4のdat_1は図3のループ(3)の左辺のdat[i]であり、No.5のfooは図3のループ(2)の左辺のfoo[i]であるが、これらは、他の配列の影響を受けないので、依存ループはない。
No.6については、fooへのリードアクセスは、No.5のループID2のfooへのライトアクセスの終了後に実行されるため、依存ループIDを2とする。
つまり、No.6のfooは、図3のループ(3)の左辺のfoo[N−i]であり、ループ(2)のfoo[i]のライトアクセスの後に、リードアクセスされるので、依存ループIDが2となる。
ステップ7:バッファ構成判定
次に、処理部3は、図8のアクセス情報テーブル及び図9に示すバッファ指定テーブルを参照し、ループ間のバッファ構成判定を行う。
まず、処理部3は、アクセス情報テーブル(図8)から、依存関係があるループID間にある配列IDを抽出する。
次に、処理部3は、バッファ指定テーブル(図9)を参照し、ループID間の配列のバッファ構成を決定する。
バッファ指定テーブルには、図9に示すように、高位合成においてダブルバッファとすべきライトアクセス配列及びリードアクセス配列についての条件(マルチバッファ生成条件)が定義されている。
ライトアクセス配列及びリードアクセス配列のうちの少なくとも一方のタイプがBであれば、ライトアクセス配列とリードアクセス配列との間にダブルバッファが構成される。
すなわち、ライトアクセス配列に含まれるライトアクセスアドレスの間に規則性がないこと、及びリードアクセス配列に含まれるリードアクセスアドレスの間に規則性がないことの少なくとも一方に該当すれば、ライトアクセス配列とリードアクセス配列との間にダブルバッファが構成される。
また、ライトアクセスアドレスの順序の変更が許容されないこと、及びリードアクセスアドレスの順序の変更が許容されないことの少なくとも一方に該当すれば、ライトアクセス配列とリードアクセス配列との間にダブルバッファが構成される。
図3に示すコード例の場合、ループID1の配列datはライトアクセス配列であり、配列datにリンクされているループID2のdat_Aはリードアクセス配列であり、ともにタイプがBである。
このため、バッファ指定テーブル(図9)の4行目より、バッファタイプはダブルバッファとなる。
dat_Aはdatにリンクされているため、datについてはdat_Aに含まれるとして、datのバッファタイプは指定しない。
また、ループID2の配列fooはライトアクセス配列であり、タイプはAであり、この配列fooにリンクされているループID3の配列fooはライトアクセス配列であり、タイプはBである。
このため、バッファ指定テーブル(図9)の2行目より、ダブルバッファ構成となる。
最後にループID1の配列datはライトアクセス配列であり、タイプはBであり、配列datにリンクされているループID3のdat_Bはリードアクセス配列であり、タイプはAである。
このため、バッファ指定テーブル(図9)の3行目より、ダブルバッファ+シフトレジスタ構成となる。
そして、処理部3は、配列テーブル(図8)に、決定したバッファタイプを追記する。
これにより、各ループ間にバッファメモリを構成することが可能となる。
なお、ループ間ではない、例えば配列ID3については、ここではバッファタイプを指定しない。
図10に図3のコードの場合の配列テーブルを示す。
ここでダブルバッファとは、図22に示す構成であるため、そのメモリサイズは、通常の倍となる。
つまり、図10ではサイズは1024とあるが実質はその2倍である。
アクセス情報テーブル(図8)には、ループIDとそれに属する配列IDのリード及びライトが記載されているので、接続関係がわかる。
これにより、処理部3は、ブロック図を表現することが可能となる。
図11に、図3のコード例の場合のブロック図を示す。
処理部3は、図11のブロック図を、図1に図示していない表示装置に表示することができる。
また、後述するように、処理部3は、図11の構成が反映されるように、動作記述コードを書換え、書換え後の動作記述コードを高位合成装置2に出力する。
また、処理部3は、図11のブロック図を生成せずに、図8のアクセス情報テーブルと図10の配列テーブルに基づき、図11の構成が反映されるように、動作記述コードを書換え、書換え後の動作記述コードを高位合成装置2に出力するようにしてもよい。
また、処理部3は、図8のアクセス情報テーブルと図10の配列テーブルを高位合成装置2に出力し、高位合成装置2において動作記述コードを書換えさせるようにしてもよい。
このように、本実施の形態に係る半導体設計支援装置によれば、高位合成において、ライトアクセス配列とリードアクセス配列の間にダブルバッファを生成することができる。
また、本実施の形態に係る半導体設計支援装置によれば、ライトアクセス配列に含まれるライトアクセスアドレスの間に規則性がない場合(例えば、図3のdat[i+wadr])、リードアクセス配列に含まれるリードアクセスアドレスの間に規則性がない場合(例えば、図3のdat[radr+i])でも、高位合成においてダブルバッファを生成することができる。
また、本実施の形態に係る半導体設計支援装置によれば、ライトアクセス配列においてライトアクセスアドレスの順序の変更が許容されない場合、リードアクセス配列においてリードアクセスアドレスの順序の変更が許容されない場合にも、高位合成においてダブルバッファを生成することができる。
ステップ8:遅延合わせ
図11のブロック図では、ループID3の処理が正常に動作しない。
それは、ループID3(の演算器)がfooとdat_Bのデータをリードする必要があるが、そのデータ到達タイミングがずれてしまい、正しい値をリードできないためである。
そのため、ここではデータ到達の遅延を合わせる操作を行う。
つまり、処理部3は、特定のループ文(図11の例では、ループID1)の実行結果が2つ以上の他のループ文(図11の例では、ループID2とループID3)に派生しており、派生先の2つ以上のループ文の実行タイミングを調整する必要があると判断した場合に、派生先の2つ以上のループ文の実行タイミングの調整のための遅延バッファ(タイミング調整バッファ)を高位合成において生成するよう指定する。
具体的には、まず、ループID毎に高位合成装置2において、高位合成を行う。
処理部3は、高位合成装置2の高位合成の結果から、各ループIDの処理に何サイクル要するかを得る。
まず、ループID毎に高位合成装置2へ該当する記述部分を送り、高位合成を行わせる。
次に、処理部3は、高位合成装置2から該当する処理部分が要するサイクル数をアクセス情報テーブルの該当するループIDのライト部分におけるサイクル数項目に書き込む。
サイクル数を追記したアクセス情報テーブルの例を図12に示す。
なお、処理部3は、このとき高位合成するループIDには、制御インタフェースを追加しておく。
制御インタフェースには、処理開始を受理する開始信号と、処理終了を意味する終了信号を付加する。
次に、処理部3は、アクセス情報テーブル(図12)において、各ループIDの依存IDを1つに限定する処理を行う。
例えば、図12のアクセス情報テーブルでは、ループID3がループID1とループID2の2つのループに依存している。
この依存ループIDを1つにする。
どちらの依存ループIDに統一するかを説明するにあたり、ここで追加情報としてアクセス情報テーブルに追記されるアクセス遅延数について説明する。
処理部3は、アクセス情報テーブル内の基点ループID以外のループIDにおいて、アクセス情報テーブルのサイクル数と依存関係を利用してアクセス遅延数を算出する。
基点となるループIDについてはアクセス遅延数を0とする。
次に、処理部3は、基点となるループIDを依存ループIDとしているNoを検索する。
該当するNoについて、アクセス遅延数を基点ループIDのサイクル数とする。
次に、処理部3は、先に検索したNoのループIDを依存ループIDとするNoを検索する。
該当するNoについて、依存ループIDのサイクル数とアクセス遅延数の和を上記Noのアクセス遅延数とする。
以降、処理部3は、これらの処理を繰り返す。
式で表すと、アクセス遅延数=依存ループIDのサイクル数+依存ループIDのアクセス遅延数
となる。
図3に示すコード例の場合を説明する。
図3のコード例の場合、図12を参照すると、依存ループIDの欄に、基点ループIDであるループID1が示されているレコードは、No.2とNo.3のレコードである。
No.2について、依存ループID1のサイクル数である1024をアクセス遅延数とする。
No.3についても同様に、依存ループID0のサイクル数である1024をアクセス遅延数とする。
依存ループIDの欄にNo.3のループID3が示されているレコードはないので、ループID3についてはループを検索する処理を終了する。
依存ループIDの欄にNo.2のループID2が示されているレコードは、No.6のレコードである。
No.6について、依存ループID2のサイクル数と依存ループID2のアクセス遅延数の和を自身のアクセス遅延数にする。
ここでは1023+1024=2047である。
この操作を繰り返し、アクセス遅延数をアクセス情報テーブルに追記する。
全てのアクセス遅延数を調べたら、基点以外の各ループIDについて以下を計算する。
共通のループIDに属するNoにおいて最大となるアクセス遅延数を、ループIDの最大アクセス遅延数とする。
そして、最大アクセス遅延数から各Noのアクセス遅延数を引いた値を遅延バッファ容量とする。
上記を実施したアクセス情報テーブルを図13に示す。
ここで、依存ループIDは最大アクセス遅延数の依存ループIDに統一する。
図14に図3のコード例の場合の依存テーブルを示す。
また、このステップにおいて再構築されたブロック図を図15に示す。
また、このブロック構成の性能を表す図を図17に示す。
図17では、ダブルバッファの構成を1面目、2面目と表記している。
ループID1にて処理されるdatのデータをA1〜A8と表記している。それぞれのAは1024個のデータのかたまりである。
同様にループID2にて処理されるfooのデータをB1〜B8と表記している。
ループID3にて処理されるdatのデータをC1〜C7と表記している。
メモリが2面あるため、読み出しと書き込みの順序を入れ替えることで最終出力であるCのデータが効率よく出力される様子がわかる。
ステップ9:制御回路生成
図15に示す構成を得たので、処理部3は、次にダブルバッファとループ処理を制御する制御回路を生成する。
制御回路は、各ループIDの処理開始信号と終了信号、また各ダブルバッファの面の切替タイミングを制御する。
制御回路は外部信号となる開始信号を受理すると、各ループID(の演算器)に処理開始信号を送信する。
次に、制御回路は、各ループID(の演算器)から処理が終了したことを意味する終了信号を得る。
各ループID(の演算器)は終了信号の送信後、再度処理開始信号が制御回路から送信されるまでは停止する。
制御回路は、全てのループID(の演算器)から終了信号を得たら、ダブルバッファに面切替の指示を出す。
その後、制御回路は、各ループID(の演算器)にいっせいに処理開始信号を送信する。
図16に制御回路を含めた全体のブロック図を示す。
なお、この制御回路は、ライブラリとしてもっておいて、適宜参照する形式でもかまわない。
また、ユーザが制御回路の指定を行ってもよい。
処理部3は、図16の構成が反映されるように、動作記述コードを書換える。
また、処理部3は、制御回路によるダブルバッファの切替タイミングを算出し、算出した切替タイミングが高位合成においてダブルバッファに適用されるように動作記述コードを書換える。
そして、処理部3は、書換え後の動作記述コードを高位合成装置2に出力する。
ステップ10:モジュール生成と接続
最後に、高位合成装置2が、処理部3により書換えられた動作記述コードに基づき、各ループ文の演算器、ダブルバッファ、遅延バッファ、制御回路等を高位合成し、全ての回路を接続する。
また、処理部3が動作記述コードを書換える代わりに、処理部3が図16の内容を示す情報を高位合成装置2に出力し、高位合成装置2に動作記述コードを書換えさせ、高位合成装置2が、書換え後の動作記述コードに基づき、各ループ文の演算器、ダブルバッファ、遅延バッファ、制御回路等を高位合成し、全ての回路を接続するようにしてもよい。
なお、以上では、2個のメモリからなるダブルバッファを生成する例を説明した。
しかし、生成するバッファのメモリの個数に限定はなく、複数個のメモリからなるマルチバッファであれば、本実施の形態に係る手法を適用可能である。
以上、本実施の形態では、
回路の動作を記述した動作記述を入力とし、前記入力された動作記述の中から、配列へアクセスする複数の配列変数の依存関係を抽出する手段と、
並列動作が可能となるように複数のメモリ構成を持つ動作記述に変換する手段を有する半導体設計支援装置を説明した。
また、本実施の形態では、
回路の動作を記述した動作記述を入力とし、前記入力された動作記述の中から、複数の異なる遅延量、または遅延時間でデータを受理する演算器を抽出し、遅延量または遅延時間を吸収する遅延バッファを上記演算器の前に自動で配置する手段を有する半導体設計支援装置を説明した。
また、本実施の形態に係る半導体設計支援装置は、
動作記述の中の異なるループ記述において、共通の配列名に代入をしている場合、2回目以降の配列代入において、異なる配列名で同じサイズの配列を生成し、配列の再利用をなくしたコードを生成する手段を有することを説明した。
また、ループ記述において、ループ内の任意の変数が代入後に参照している場合、あるいは配列の添え字がループ変数の一次式でない場合に、本実施の形態に係る半導体設計支援装置が、メモリを2倍にし、前後の演算器と協調して並列に動作することが可能となるコードを生成することを説明した。
また、複数の演算器がメモリを介して構成される場合に、本実施の形態に係る半導体設計支援装置が、各演算器の中から最も演算サイクルを要する演算を抽出し、上記演算サイクルをカウントする制御回路と、上記演算サイクル数に達したときにメモリの切り替え制御信号を出力とする制御回路を自動生成することを説明した。
最後に、本実施の形態に示した半導体設計支援装置1のハードウェア構成例を図18を参照して説明する。
半導体設計支援装置1はコンピュータであり、半導体設計支援装置1の各要素はプログラムにより処理を実行することができる。
半導体設計支援装置1のハードウェア構成としては、バスに、演算装置901、外部記憶装置902、主記憶装置903、通信装置904、入出力装置905が接続されている。
演算装置901は、プログラムを実行するCPU(Central Processing Unit)である。
外部記憶装置902は、例えばROM(Read Only Memory)やフラッシュメモリ、ハードディスク装置である。
主記憶装置903は、RAM(Random Access Memory)である。
通信装置904は、高位合成装置2やその他の装置と通信を行う。
入出力装置905は、例えば、マウス、キーボード、ディスプレイ装置である。
プログラムは、通常は外部記憶装置902に記憶されており、主記憶装置903にロードされた状態で、順次演算装置901に読み込まれ、実行される。
プログラムは、図1に示す「処理部3」として説明している機能を実現するプログラムである。
更に、外部記憶装置902にはオペレーティングシステム(OS)も記憶されており、OSの少なくとも一部が主記憶装置903にロードされ、演算装置901はOSを実行しながら、図1に示す「処理部3」の機能を実現するプログラムを実行する。
また、本実施の形態の説明において、「〜の判断」、「〜の判定」、「〜の抽出」、「〜の算出」、「〜の導出」、「〜の指定」、「〜の解析」、「〜の検知」、「〜の設定」、「〜の登録」、「〜の選択」、「〜の生成」、「〜の入力」、「〜の出力」等として説明している処理の結果を示す情報やデータや信号値や変数値が主記憶装置903にファイルとして記憶されている。
また、暗号鍵・復号鍵や乱数値やパラメータが、主記憶装置903にファイルとして記憶されてもよい。
なお、図18の構成は、あくまでも半導体設計支援装置1のハードウェア構成の一例を示すものであり、半導体設計支援装置1のハードウェア構成は図18に記載の構成に限らず、他の構成であってもよい。
また、本実施の形態に示した高位合成装置2も、図18のハードウェア構成をしていてもよいし、他のハードウェア構成であってもよい。
また、本実施の形態に示す手順により、本発明に係る回路設計支援方法を実現可能である。
1 半導体設計支援装置、2 高位合成装置、3 処理部、4 テーブル記憶部、5 ファイル記憶部。

Claims (18)

  1. ライトアクセスされるライトアクセス配列と、前記ライトアクセス配列と配列名が共通する、リードアクセスされるリードアクセス配列とが用いられて、高位合成の対象となる回路の動作が記述されている動作記述コードを、入力するコード入力部と、
    配列名が共通するライトアクセス配列とリードアクセス配列との間の連携に用いられる連携バッファを前記高位合成において2個以上生成するためのマルチバッファ生成条件として、ライトアクセス配列に含まれるライトアクセスアドレスに規則性がないこと、及びリードアクセス配列に含まれるリードアクセスアドレスに規則性がないことの少なくともいずれかが定義されているマルチバッファ生成条件情報を、入力する条件情報入力部と、
    前記動作記述コードから配列名が共通するライトアクセス配列とリードアクセス配列とを抽出し、抽出したライトアクセス配列に含まれるライトアクセスアドレスに規則性があるか否か、及び抽出したリードアクセス配列に含まれるリードアクセスアドレスに規則性があるか否かを判断し、前記ライトアクセス配列に含まれるライトアクセスアドレスに規則性がない場合、及び前記リードアクセス配列に含まれるリードアクセスアドレスに規則性がない場合の少なくともいずれかにおいて、前記マルチバッファ生成条件が成立すると判断する条件判断部と、
    前記条件判断部により、前記マルチバッファ生成条件が成立すると判断された場合に、前記ライトアクセス配列と前記リードアクセス配列に対して2個以上の連携バッファを前記高位合成において生成することを指定するバッファ生成指定部とを有することを特徴とする回路設計支援装置。
  2. 前記条件判断部は、
    抽出したライトアクセス配列の添え字にループ変数以外の変数が含まれる場合は、前記ライトアクセス配列に含まれるライトアクセスアドレスに規則性がないと判断し、
    抽出したリードアクセス配列の添え字にループ変数以外の変数が含まれる場合は、前記リードアクセス配列に含まれるリードアクセスアドレスに規則性がないと判断することを特徴とする請求項に記載の回路設計支援装置。
  3. 前記条件判断部は、
    抽出したライトアクセス配列の添え字が、係数が1であるループ変数の一次式と定数とで表現されている場合以外は、前記ライトアクセス配列に含まれるライトアクセスアドレスの間に規則性がないと判断し、
    抽出したリードアクセス配列の添え字が、係数が1であるループ変数の一次式と定数とで表現されている場合以外は、前記リードアクセス配列に含まれるリードアクセスアドレスに規則性がないと判断することを特徴とする請求項に記載の回路設計支援装置。
  4. 前記条件情報入力部は、ライトアクセスの順序の変更が許容されないこと、及びリードアクセスの順序の変更が許容されないことの少なくともいずれかがマルチバッファ生成条件として定義されているマルチバッファ生成条件情報を入力し、
    前記条件判断部は、
    前記動作記述コードから配列名が共通するライトアクセス配列とリードアクセス配列とを抽出し、抽出したライトアクセス配列においてライトアクセスの順序の変更が許容されるか否か、及び抽出したリードアクセス配列においてリードアクセスの順序の変更が許容されるか否かを判断し、
    前記ライトアクセス配列においてライトアクセスの順序の変更が許容されない場合、及び前記リードアクセス配列においてリードアクセスの順序の変更が許容されない場合の少なくともいずれかにおいて、前記マルチバッファ生成条件が成立すると判断することを特徴とする請求項1に記載の回路設計支援装置。
  5. ライトアクセスされるライトアクセス配列と、前記ライトアクセス配列と配列名が共通する、リードアクセスされるリードアクセス配列とが用いられて、高位合成の対象となる回路の動作が記述されている動作記述コードを、入力するコード入力部と、
    配列名が共通するライトアクセス配列とリードアクセス配列との間の連携に用いられる連携バッファを前記高位合成において2個以上生成すべきライトアクセス配列とリードアクセス配列の条件がマルチバッファ生成条件として定義されているマルチバッファ生成条件情報を、入力する条件情報入力部と、
    前記動作記述コードから配列名が共通するライトアクセス配列とリードアクセス配列とを抽出し、抽出したライトアクセス配列とリードアクセス配列について前記マルチバッファ生成条件が成立するか否かを判断する条件判断部と、
    前記条件判断部により、前記ライトアクセス配列と前記リードアクセス配列について前記マルチバッファ生成条件が成立すると判断された場合に、前記ライトアクセス配列と前記リードアクセス配列に対して2個以上の連携バッファを前記高位合成において生成することを指定するバッファ生成指定部とを有し、
    前記条件判断部は、
    前記動作記述コードから複数のループ文を抽出し、
    抽出したループ文から、配列名が共通するライトアクセス配列とリードアクセス配列を抽出し、
    抽出した配列名が共通するライトアクセス配列とリードアクセス配列のうちのいずれかの配列の配列名を変更し、
    配列名の変更後のライトアクセス配列とリードアクセス配列において、リードアクセス配列ごとに、リードアクセス配列が依存しているライトアクセス配列を特定し、
    リードアクセス配列と、リードアクセス配列が依存しているライトアクセス配列とを対にし、
    ライトアクセス配列とリードアクセス配列との対ごとに、前記マルチバッファ生成条件が成立するか否かを判断する回路設計支援装置。
  6. 前記回路設計支援装置は、
    前記条件判断部によるライトアクセス配列又はリードアクセス配列の配列名の変更が反映されるように、前記動作記述コードを書換えることを特徴とする請求項に記載の回路設計支援装置。
  7. 前記条件判断部は、
    配列名が共通するライトアクセス配列とリードアクセス配列において、リードアクセス配列ごとに、リードアクセス配列が依存している、他のループ文から抽出されたライトアクセス配列を特定することを特徴とする請求項5に記載の回路設計支援装置。
  8. 前記バッファ生成指定部は、
    いずれかのライトアクセス配列とリードアクセス配列との対に対して2個以上の連携バッファを生成するよう指定した場合に、
    前記ライトアクセス配列とリードアクセス配列との対の抽出元である2つのループ文と他のループ文との関係と、ループ文ごとの演算サイクル数とに基づき、前記2個以上の連携バッファの間でバッファの切替が行われる切替タイミングを算出し、算出した切替タイミングを前記高位合成において前記2個以上の連携バッファに対して適用するよう指定することを特徴とする請求項に記載の回路設計支援装置。
  9. ライトアクセスされるライトアクセス配列と、前記ライトアクセス配列と配列名が共通する、リードアクセスされるリードアクセス配列とが用いられて、高位合成の対象となる回路の動作が記述されている動作記述コードを、入力するコード入力部と、
    配列名が共通するライトアクセス配列とリードアクセス配列との間の連携に用いられる連携バッファを前記高位合成において2個以上生成すべきライトアクセス配列とリードアクセス配列の条件がマルチバッファ生成条件として定義されているマルチバッファ生成条件情報を、入力する条件情報入力部と、
    前記動作記述コードから配列名が共通するライトアクセス配列とリードアクセス配列とを抽出し、抽出したライトアクセス配列とリードアクセス配列について前記マルチバッファ生成条件が成立するか否かを判断する条件判断部と、
    前記条件判断部により、前記ライトアクセス配列と前記リードアクセス配列について前記マルチバッファ生成条件が成立すると判断された場合に、前記ライトアクセス配列と前記リードアクセス配列に対して2個以上の連携バッファを前記高位合成において生成することを指定するバッファ生成指定部とを有し、
    前記条件判断部は、
    前記動作記述コードから複数のループ文を抽出し、
    前記バッファ生成指定部は、
    前記条件判断部により抽出された前記複数のループ文のうちの特定のループ文の実行結果が2つ以上の他のループ文に派生しており、派生先の2つ以上のループ文の実行タイミングを調整する必要があると判断した場合に、
    派生先の2つ以上のループ文の実行タイミングの調整のためのタイミング調整バッファの生成を指定することを特徴とする回路設計支援装置。
  10. 前記バッファ生成指定部は、
    前記条件判断部により抽出された前記複数のループ文におけるループ文の間の関係を解析した結果、特定のループ文の実行結果が2つ以上の他のループ文に派生しており、派生先の2つ以上のループ文のうちのいずれかのループ文の実行結果が他のいずれかのループ文に派生している場合に、
    派生先の2つ以上のループ文の実行タイミングを調整する必要があると判断することを特徴とする請求項に記載の回路設計支援装置。
  11. 前記バッファ生成指定部は、
    派生先の2つ以上のループ文の実行タイミングを調整する必要があると判断した場合に、
    前記特定のループ文の演算サイクル数と、派生先の各ループ文の演算サイクル数とに基づき、タイミング調整バッファのバッファ容量を算出し、
    算出したバッファ容量を有するタイミング調整バッファの生成を指定することを特徴とする請求項に記載の回路設計支援装置。
  12. 前記バッファ生成指定部は、
    前記高位合成を実行する高位合成装置から、前記特定のループ文の演算サイクル数と、派生先の各ループ文の演算サイクル数とを通知され、
    前記高位合成装置から通知された、前記特定のループ文の演算サイクル数と、派生先の各ループ文の演算サイクル数とに基づき、タイミング調整バッファのバッファ容量を算出することを特徴とする請求項11に記載の回路設計支援装置。
  13. 前記回路設計支援装置は、
    前記動作記述コードに含まれるループ文を実行する演算器と、前記バッファ生成指定部により指定された2個以上の連携バッファとが接続されて示されるブロック図を生成することを特徴とする請求項1、5及び9のいずれか一項に記載の回路設計支援装置。
  14. 前記回路設計支援装置は、
    前記演算器と前記2個以上の連携バッファとの接続関係が反映されるように、前記動作記述コードを書換えることを特徴とする請求項13に記載の回路設計支援装置。
  15. 前記回路設計支援装置は、
    前記動作記述コードに含まれるループ文を実行する演算器と、前記バッファ生成指定部により指定された2個以上の連携バッファと前記タイミング調整バッファと、前記演算器と前記2個以上の連携バッファと前記タイミング調整バッファを制御する制御回路とが接続されて示されるブロック図を生成することを特徴とする請求項に記載の回路設計支援装置。
  16. 前記回路設計支援装置は、
    前記演算器と前記2個以上の連携バッファと前記タイミング調整バッファと前記制御回路との接続関係が反映されるように、前記動作記述コードを書換えることを特徴とする請求項15に記載の回路設計支援装置。
  17. ライトアクセスされるライトアクセス配列と、前記ライトアクセス配列と配列名が共通する、リードアクセスされるリードアクセス配列とが用いられて、高位合成の対象となる回路の動作が記述されている動作記述コードを、コンピュータが、入力するコード入力ステップと、
    配列名が共通するライトアクセス配列とリードアクセス配列との間の連携に用いられる連携バッファを前記高位合成において2個以上生成するためのマルチバッファ生成条件として、ライトアクセス配列に含まれるライトアクセスアドレスに規則性がないこと、及びリードアクセス配列に含まれるリードアクセスアドレスに規則性がないことの少なくともいずれかが定義されているマルチバッファ生成条件情報を、前記コンピュータが、入力する条件情報入力ステップと、
    前記コンピュータが、前記動作記述コードから配列名が共通するライトアクセス配列とリードアクセス配列とを抽出し、抽出したライトアクセス配列に含まれるライトアクセスアドレスに規則性があるか否か、及び抽出したリードアクセス配列に含まれるリードアクセスアドレスに規則性があるか否かを判断し、前記ライトアクセス配列に含まれるライトアクセスアドレスに規則性がない場合、及び前記リードアクセス配列に含まれるリードアクセスアドレスに規則性がない場合の少なくともいずれかにおいて、前記マルチバッファ生成条件が成立すると判断する条件判断ステップと、
    前記条件判断ステップにより、前記マルチバッファ生成条件が成立すると判断された場合に、前記コンピュータが、前記ライトアクセス配列と前記リードアクセス配列に対して2個以上の連携バッファを前記高位合成において生成することを指定するバッファ生成指定ステップとを有することを特徴とする回路設計支援方法。
  18. ライトアクセスされるライトアクセス配列と、前記ライトアクセス配列と配列名が共通する、リードアクセスされるリードアクセス配列とが用いられて、高位合成の対象となる回路の動作が記述されている動作記述コードを、入力するコード入力ステップと、
    配列名が共通するライトアクセス配列とリードアクセス配列との間の連携に用いられる連携バッファを前記高位合成において2個以上生成するためのマルチバッファ生成条件として、ライトアクセス配列に含まれるライトアクセスアドレスに規則性がないこと、及びリードアクセス配列に含まれるリードアクセスアドレスに規則性がないことの少なくともいずれかが定義されているマルチバッファ生成条件情報を、入力する条件情報入力ステップと、
    前記動作記述コードから配列名が共通するライトアクセス配列とリードアクセス配列とを抽出し、抽出したライトアクセス配列に含まれるライトアクセスアドレスに規則性があるか否か、及び抽出したリードアクセス配列に含まれるリードアクセスアドレスに規則性があるか否かを判断し、前記ライトアクセス配列に含まれるライトアクセスアドレスに規則性がない場合、及び前記リードアクセス配列に含まれるリードアクセスアドレスに規則性がない場合の少なくともいずれかにおいて、前記マルチバッファ生成条件が成立すると判断する条件判断ステップと、
    前記条件判断ステップにより、前記マルチバッファ生成条件が成立すると判断された場合に、前記ライトアクセス配列と前記リードアクセス配列に対して2個以上の連携バッファを前記高位合成において生成することを指定するバッファ生成指定ステップとをコンピュータに実行させることを特徴とするプログラム。
JP2012108307A 2012-05-10 2012-05-10 回路設計支援装置及び回路設計支援方法及びプログラム Active JP5979965B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2012108307A JP5979965B2 (ja) 2012-05-10 2012-05-10 回路設計支援装置及び回路設計支援方法及びプログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012108307A JP5979965B2 (ja) 2012-05-10 2012-05-10 回路設計支援装置及び回路設計支援方法及びプログラム

Publications (2)

Publication Number Publication Date
JP2013235474A JP2013235474A (ja) 2013-11-21
JP5979965B2 true JP5979965B2 (ja) 2016-08-31

Family

ID=49761541

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012108307A Active JP5979965B2 (ja) 2012-05-10 2012-05-10 回路設計支援装置及び回路設計支援方法及びプログラム

Country Status (1)

Country Link
JP (1) JP5979965B2 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10599803B2 (en) 2016-03-10 2020-03-24 Mitsubishi Electric Corporation High level synthesis apparatus, high level synthesis method, and computer readable medium
WO2018146727A1 (ja) * 2017-02-07 2018-08-16 三菱電機株式会社 高位合成装置、高位合成方法および高位合成プログラム
JP6761182B2 (ja) * 2017-03-14 2020-09-23 富士通株式会社 情報処理装置、情報処理方法及びプログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4083491B2 (ja) * 2002-07-19 2008-04-30 富士通株式会社 モジュール間インタフェースの自動合成装置、合成方法、プログラム及び可搬記憶媒体
JP2007272797A (ja) * 2006-03-31 2007-10-18 Toshiba Corp パイプライン高位合成システム及び方法

Also Published As

Publication number Publication date
JP2013235474A (ja) 2013-11-21

Similar Documents

Publication Publication Date Title
US9639371B2 (en) Solution to divergent branches in a SIMD core using hardware pointers
JP4339907B2 (ja) マルチプロセッサ向け最適コード生成方法及びコンパイル装置
US6505339B1 (en) Behavioral synthesis links to logic synthesis
US6678644B1 (en) Integrated circuit models having associated timing exception information therewith for use with electronic design automation
Miranda et al. High-level address optimization and synthesis techniques for data-transfer-intensive applications
US6438731B1 (en) Integrated circuit models having associated timing exception information therewith for use in circuit design optimizations
US8584062B2 (en) Tool suite for RTL-level reconfiguration and repartitioning
US9830164B2 (en) Hardware and software solutions to divergent branches in a parallel pipeline
JP5966509B2 (ja) プログラム、コード生成方法および情報処理装置
JP5312151B2 (ja) 半導体設計支援装置、高位合成方法及び半導体設計支援プログラム
JP7088897B2 (ja) データアクセス方法、データアクセス装置、機器及び記憶媒体
Pham‐Quoc et al. A high‐performance fpga‐based bwa‐mem dna sequence alignment
US8266416B2 (en) Dynamic reconfiguration supporting method, dynamic reconfiguration supporting apparatus, and dynamic reconfiguration system
JP5979965B2 (ja) 回路設計支援装置及び回路設計支援方法及びプログラム
US8990741B2 (en) Circuit design support device, circuit design support method and program
Park et al. Performance and area modeling of complete FPGA designs in the presence of loop transformations
US11106846B1 (en) Systems and methods for emulation data array compaction
JP6091140B2 (ja) 情報処理装置及び情報処理方法及びプログラム
CN115004150A (zh) 用于预测和调度软件流水化循环中的复制指令的方法和装置
JP6305644B2 (ja) アーキテクチャ生成装置およびアーキテクチャ生成プログラム
US11048843B1 (en) Dynamic netlist modification of compacted data arrays in an emulation system
JP6317603B2 (ja) 情報処理装置、情報処理装置の制御方法及びプログラム
US8495539B1 (en) Scheduling processes in simulation of a circuit design
JP5626724B2 (ja) アクセラレータ及びデータ処理方法
JP2011022863A (ja) 動作合成装置及び動作合成方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20141203

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20151217

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20160119

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20160222

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: 20160628

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20160726

R150 Certificate of patent or registration of utility model

Ref document number: 5979965

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

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250