JP2006139427A - データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体 - Google Patents

データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体 Download PDF

Info

Publication number
JP2006139427A
JP2006139427A JP2004327110A JP2004327110A JP2006139427A JP 2006139427 A JP2006139427 A JP 2006139427A JP 2004327110 A JP2004327110 A JP 2004327110A JP 2004327110 A JP2004327110 A JP 2004327110A JP 2006139427 A JP2006139427 A JP 2006139427A
Authority
JP
Japan
Prior art keywords
node
subgraph
data flow
same
output
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.)
Granted
Application number
JP2004327110A
Other languages
English (en)
Other versions
JP4165712B2 (ja
Inventor
Kazuhisa Okada
和久 岡田
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.)
Sharp Corp
Original Assignee
Sharp 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 Sharp Corp filed Critical Sharp Corp
Priority to JP2004327110A priority Critical patent/JP4165712B2/ja
Priority to PCT/JP2005/020387 priority patent/WO2006051760A1/ja
Priority to US11/666,859 priority patent/US7886252B2/en
Publication of JP2006139427A publication Critical patent/JP2006139427A/ja
Application granted granted Critical
Publication of JP4165712B2 publication Critical patent/JP4165712B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design

Abstract

【課題】 面積削減効果が大きいサブグラフを高速に検出する。
【解決手段】 ディジタル回路動作についてデータフローグラフ中、一または複数の条件分岐から一つの条件分岐を選択する条件分岐選択手段41と、選択された条件分岐に含まれる節点集合を選択する節点集合選択手段42と、選ばれた節点集合をいくつかのグループに分ける節点グループ化手段43と、分けられたグループのそれぞれをサブグラフとして、条件分岐選択手段41、節点集合選択手段42および節点グループ化手段43による各処理を一または複数の条件分岐に対して行って得られる複数のサブグラフを比較して同一サブグラフを検出するサブグラフ比較手段45とを有し、データフローグラフ中の各条件分岐に含まれる節点を一定法則でグループに分けてそれぞれをサブグラフとし、それらサブグラフを比較することにより同一サブグラフを検出する。
【選択図】 図3

Description

本発明は、例えばシステムLSIなどの大規模論理回路の自動設計に用いられ、動作記述から論理回路をコンピュータ自動合成する動作合成(高位合成)を行う際に、回路共有により回路占有面積を削減するために、データフローグラフの同一サブグラフを検出するデータフローグラフの同一サブグラフ検出装置、これを用いた高位合成装置、同一サブグラフ検出装置を用いたデータフローグラフの同一サブグラフ検出方法、この方法の各処理手順をコンピュータに実行させるためのデータフローグラフの同一サブグラフ検出制御プログラムおよびこの制御プログラムが記録されたコンピュータ読み取り可能な可読記録媒体に関する。
従来、システムLSIなどの大規模回路の設計では、回路の動作記述から、RTL(Register Transfer Level)の記述を生成する動作合成が行なわれている。この動作合成は高位合成とも呼ばれる。
この動作合成では、ハードウェアの構造に関する情報が含まれず、処理のアルゴリズムのみが記述された動作記述から、ハードウェアの回路図が自動的に合成される。
例えば、非特許文献1に記載されている動作合成システムによれば、C言語をハードウェア設計用に拡張した言語を動作記述言語として、ハードウェアの回路図を合成することが可能である。
以下に、この動作合成の手順を簡単に説明する。
この動作合成では、まず、動作記述言語で記述されたアルゴリズムにおけるデータの流れが解析され、データフローグラフと呼ばれるモデルが作成される。
ディジタル回路では、複数のデータに対して様々な演算を繰り返すことにより、そのディジタル回路の目的とする処理が行われる。このときの演算およびデータの流れをグラフを用いて表したものがデータフローグラフである。
このデータフローグラフは、複数の節点と、各節点間を接続する枝とから構成されている。節点はディジタル回路中で実行されるある一つの演算を表しており、枝は演算から演算へのデータの流れを表している。演算を表す節点を枝で適切に接続することにより、ディジタル回路の動作をデータフローグラフとして表すことが可能となる。
このデータフローグラフ中の各節点は、入力枝と出力枝とによって接続され、入力枝が演算に与えられるデータを表し、出力枝が演算結果のデータを表す。また、各節点には、演算の種類の情報なども含まれている。
例えば図13に示すC言語で記述された動作記述は、図14に示すようなデータフローグラフによって表すことができる。
図14は、二つの乗算を表す節点101,102と一つの加算を表す節点103とを含み、入力aおよびbを乗算した結果と、入力bおよびcを乗算した結果とを加算して、その結果をxに出力することを表している。
図14のデータフローグラフは、計算機上では、例えば図15に示すようなデータ構造で表される。
図15において、節点はNode構造体(struct Node)で表され、各節点固有の節点番号node_idを有している。in_edge配列およびout_edge配列には、入力枝および出力枝の枝番号が複数記憶される。図15の事例では、節点は2入力1出力の演算であり、in_edgeは二つの要素、out_edgeは一つの要素を有している。また、op_typeには加算・減算・乗算などの演算の種類を表す番号が記憶される。
枝はEdge構造体(struct Edge)で表され、各枝固有の枝番号edge_idを有している。from_nodeおよびto_nodeには、その枝が接続された節点の節点番号が格納される。
これらのデータ構造により、計算機のメモリ上(データベース)にデータフローグラフの各節点間の接続が記憶される。
データフローグラフ上で、節点を接続する場合や、ある節点の入出力につながる別の節点を見つける場合には、上記データベースの各要素に節点や枝の番号を登録したり、上記データベースの各要素を参照したりする。以下では、説明を分かりやすくするために、節点を枝で接続したり、節点の上下につながる節点を見つけたりする場合に、図14に示すようなデータフローグラフを視覚的に表した図を用いて説明する。
次に、このデータフローグラフに対して、スケジューリング処理とアロケーション処理を行う。スケジューリングは、データフローグラフ中の各節点をいつ実行するかを決定する処理である。また、アロケーションは、バインディングとも呼ばれ、データフローグラフ中の枝が表すデータを格納するレジスタを決定する処理と、データフローグラフの節点が表す演算をどの演算器を用いて行うかを決定する処理とからなっている。動作合成方法によっては、アロケーションがスケジューリングの前に行なわれる場合もある。
次に、スケジューリング結果およびアロケーション結果を元に、データパスおよびコントローラを生成してハードウェアを得る。データフローグラフから回路を得る処理の事例は例えば特許文献1に開示されている。
ところで、動作合成においては、複数の演算処理を行うために、一つの演算器を複数回使うことが重要である。これにより、チップ中の演算器の個数が減少してチップ面積が小さくなり、チップ製造コストを下げることができるからである。
したがって、動作合成においては、可能な限り多くの演算が演算器を共有するようにする工夫が必要である。
同じ種類の演算が異なるステップで実行される場合には、それらの演算を一つの演算器を用いて処理することが可能である。よって、スケジューリング処理では、同じ種類の演算が異なるステップで実行されるようなスケジューリングが得られるように、工夫する必要がある。このようなスケジューリング方法は、例えば特許文献2に開示されている。
また、アロケーション処理では、演算器を共有する方法が複数ある場合に、回路面積が可能な限り小さくなるような共有方法を選ぶ必要がある。このようなアロケーション方法は、例えば特許文献3に開示されている。
以上のように、同じ種類の演算毎に演算器を共有する方法は、回路面積の削減に有効である。しかしながら、全体の処理中に一連の演算の組合せが複数回出現する場合には、データフローグラフ中の一連の演算の組合せを表すサブグラフ(部分グラフ)に対して回路を作成し、その回路全体を共有する方が、より面積削減のために有効である。
これは、共有する回路全体の入力に対してのみセレクタが必要となり、回路中の個々の演算についてはセレクタが不要となるためである。
例えば図16(a)の事例では、2個の加算と1個の乗算を含むサブグラフ111,112は同じである。よって、これらを異なるクロックサイクルで実行するようにスケジューリングを行えば、図16(b)のように、一つの回路113を共有することが可能となる。この回路113は、処理を繰り返すことによりサブグラフ111,112を実行する回路である。
第1クロックステップでは、加算器114の結果がセレクタ115によって選択されて回路113に入力され、回路113の演算結果がレジスタ116に記憶される。
第2クロックステップでは、セレクタ115によってレジスタ116の出力が選択されて回路113に入力されて、回路113の演算結果が外部に出力される。
なお、図16(b)では、セレクタ115とレジスタ116の制御信号は省略している。
回路を共有しない場合には、回路113に相当する回路がさらにもう一つ必要になるため、回路を共有するときに必要となるセレクタ115やレジスタ116の面積に対して回路113の面積が大きい場合には、回路共有によって面積を削減することができる。
このように、回路の共有を行うためには、データフローグラフの中から複数の同一サブグラフを探す必要がある。
しかしながら、一般に、データフローグラフから同一の部分グラフを探す問題は、データフローグラフ中の節点数の増加に対して指数関数的に探索処理が増加することが知られている。よって、データフローグラフが大きくなると、必要な処理時間が非常に長くなり、実用的でない。このため、データフローグラフの中から同一サブグラフを簡単に探し出すための工夫が必要である。
例えば非特許文献2には、データフローグラフから類似サブグラフを探し出す方法が開示されている。ここで、「類似」サブグラフとは、「0」の加算や「1」の乗算など、値が変化しない演算を挿入することにより同一サブグラフになるものを指している。即ち、この非特許文献2に記載されているグラフ探索方法では、同一サブグラフを探索するときにグラフが同一か否かを判断する代わりに、グラフが類似しているか否かを判断しており、同一サブグラフの探索と本質的には同じである。
この類似サブグラフ探索方法では、高速に類似サブグラフを発見するために、以下のような工夫が為されている。即ち、図17(a)および図17(b)に示すように、サブグラフに枝別れが無いn段のグラフに限られている。
このデータフローグラフ中の各演算の入力数が「2」であるとすると、図18に示すように、ある一つの節点Fを出力に有する3段のサブグラフは、A−D−Fと、B−D−Fと、B−E−Fと、C−E−Fの4通りである。一般に、入力が1個のみである演算もあり、また、3個以上の入力を有する演算は稀であるため、サブグラフは4通りよりも少ないことが多い。よって、データフローグラフ中の全節点数をNとすると、データフローグラフ中にサブグラフはせいぜい4N個しかなく、計算機で全てを求めることができるようになり、これらのサブグラフを比較して類似サブグラフを探すことができる。
一般には、n段のサブグラフの個数はN×2^(n−1)であり、大規模回路ではデータフローグラフの節点数Nは1万程度になる場合があるが、nを小さくすれば、計算機で取り扱える個数にすることができる。
特開2001−229217号公報 特開2000−348069号公報 特開2003−76728号公報 "A C−based Synthesis System, Bach, and its Application" Proceedings of the ASP−DAC 2001, 2001(IEEE Catalog Number: 01EX455, ISBN: 0−7803−6633−6) "Improved Interconnect Sharing by Identity Operation Insertion" Proceedings of the ICCAD 1999, 1999 IEEE (ISBN: 0−7803−5832)
しかしながら、非特許文献2に開示されている従来の手法では、探索されるサブグラフの形状が枝別れのないn段のグラフに限られているため、そのサブグラフを実行する回路において、多数のセレクタが必要になる場合がある。
例えばサブグラフが図19(a)に示すような4段のグラフである場合、そのサブグラフを2箇所で使用するためには、図19(b)に示すような回路が必要となり、最大5個のセレクタが必要になる場合がある。したがって、この従来の手法では、回路を共有する場合に必要なセレクタが少なく、共有による面積削減効果が大きいサブグラフを探すことができない。
例えば図20(a)に示すような枝分かれを有するサブグラフは、多くの演算を含むにも関わらず、2箇所で共有するときに必要なセレクタは、図20(b)に示すように一つである。
このように、途中の処理は多いが、入力と出力が少ないサブグラフが見つかれば、そのサブグラフを実行する回路を共有するためのセレクタが少なくて済むため、面積削減効果が大きい。
しかしながら、このようなサブグラフは、上記従来の手法によって探索されるサブグラフの条件を満たしておらず、上記従来の手法では探すことができない。
一方、上記従来の手法では、図20(a)に示すような枝別れを有する演算を探索可能なように、上記従来の手法で規定したサブグラフの条件を外してしまうと、非常に処理時間がかかり、実用的でなくなる。
即ち、図21(a)〜図21(d)に各事例を示すように、サブグラフの形状のパターンが無数にあり、データフローグラフに含まれるサブグラフの個数が非常に多数になるため、実用的な処理時間では同一サブグラフが見つからないことになる。
本発明は、上記従来の問題を解決するもので、データフローグラフ中の同一のサブグラフを検出する際に、それらのサブグラフの動作を共通の回路で実行することによる面積削減効果が大きいサブグラフを高速に検出できるデータフローグラフの同一サブグラフ検出装置、これを用いた高位合成装置、この同一サブグラフ検出装置を用いたデータフローグラフの同一サブグラフ検出方法、この方法の各処理手順をコンピュータに実行させるためのデータフローグラフの同一サブグラフ検出制御プログラムおよびその制御プログラムが記録されたコンピュータ読み取り可能な可読記録媒体を提供することを目的とする。
本発明のデータフローグラフの同一サブグラフ検出装置は、ディジタル回路動作について、演算を示す複数の節点と、該節点に入出力するデータの流れを示す枝とで表されたデータフローグラフ中、一または複数の条件分岐から一つの条件分岐を選択する条件分岐選択手段と、選択された条件分岐に含まれる節点集合を選択する節点集合選択手段と、選ばれた節点集合をいくつかのグループに分ける節点グループ化手段と、分けられたグループのそれぞれを各サブグラフとして、該条件分岐選択手段、該節点集合選択手段および該節点グループ化手段による各処理を該一または複数の条件分岐に対して行って得られる複数のサブグラフを比較して同一サブグラフを検出するサブグラフ比較手段とを有し、そのことにより上記目的が達成される。
また、好ましくは、本発明のデータフローグラフの同一サブグラフ検出装置における節点グループ化手段により分けられたグループの入力部および出力部の少なくともいずれかを、回路占有面積に関してコンパクト化したサブグラフを出力するグラフコンパクト化手段を更に有する。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出装置における条件分岐選択手段は、前記条件分岐を所定または任意の順序で選択する。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出装置における節点集合選択手段は、前記条件分岐の条件が「真」のときに実行される真ブロックに含まれる節点と、「偽」のときに実行される偽ブロックに含まれる節点とを前記節点集合として選択する。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出装置における節点集合選択手段は、前記条件分岐の条件が「真」のときに実行される真ブロックからの出力と、「偽」のときに実行される偽ブロックからの出力とを選択するセレクタ節点を前記節点集合に加える。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出装置における節点グループ化手段は、前記条件分岐の条件が「真」または「偽」のときに実行される真ブロックまたは偽ブロックの出力を生成する各出力節点に対して、該真ブロックまたは該偽ブロックに含まれる各節点について、その出力が影響を及ぼす該各出力節点の組合せを求めて、該各出力節点の組合わせ中で共通する節点グループとそれ以外の該各出力節点毎の節点グループとにグループ分けする。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出装置における節点グループ化手段は、前記セレクタ節点を、前記条件分岐の条件が「真」または「偽」のときに実行される真ブロックまたは偽ブロックの出力を生成する各出力節点として、該真ブロックまたは該偽ブロックに含まれる各節点について、その出力が影響を及ぼす該各出力節点の組合せを求めて、該各出力節点の組合わせ中で共通する節点グループとそれ以外の該各出力節点毎の節点グループとにグループ分けする。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出装置におけるグラフコンパクト化手段は、前記節点グループ化手段により分けられたグループの入力部にある各節点に着目して、前記サブグラフを実行する回路の占有面積および、該回路を複数箇所で共有する場合に必要なセレクタの占有面積の合計と、着目節点を該サブグラフから取り除いたサブグラフを実行する回路の占有面積、当該回路を複数箇所で共有する場合に必要なセレクタの占有面積および、取り除いた該着目節点を実行するために必要な演算器の占有面積の合計とを比較して、後者の合計が前者の合計よりも小さい場合に該サブグラフから該着目節点を取り除いて該入力部をコンパクト化する。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出装置におけるグラフコンパクト化手段は、前記節点グループ化手段により分けられたグループの前記各出力節点が前記セレクタ節点で、かつ、該セレクタ節点の入力側に繋がっている複数の節点が全て同一演算種類である場合に、該セレクタ節点の各入力側に同一演算種類の節点がそれぞれ接続されているサブグラフを実行する回路の占有面積と、該同一演算種類の一つの節点の入力側に該セレクタ節点の出力が接続されている別のサブグラフを実行する回路の占有面積とを比較して、前者の占有面積が後者の占有面積よりも大きい場合に該同一電算種類の一つの節点の入力側に該セレクタ節点の出力が接続するようにサブグラフを変更する。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出装置におけるサブグラフ比較手段は、前記各サブグラフの形状に一対一対応させた文字列を作成してそれらの文字列を比較し、同一の文字列を検出することにより同一のサブグラフを検出する。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出装置におけるサブグラフ比較手段は、前記文字列をハッシュ関数に入力して得られるハッシュ値を比較し、同一ハッシュ値を検出することにより同一文字列を検出して同一のサブグラフを検出する。
本発明の高位合成装置は、請求項1〜11のいずれかに記載の上記データフローグラフの同一サブグラフ検出装置を用いて生成したデータフローグラフに対して、スケジューリング処理およびアロケーション処理を行い、スケジューリング結果およびアロケーション結果に基づいてデータパスおよびコントローラを生成して回路図を自動設計し、そのことにより上記目的が達成される。
本発明のデータフローグラフの同一サブグラフ検出方法は、ディジタル回路動作について、演算を示す複数の節点と、該節点に入出力するデータの流れを示す枝とで表されたデータフローグラフ中、一または複数の条件分岐から一つの条件分岐を選択する条件分岐選択ステップと、選択された条件分岐に含まれる節点集合を選択する節点集合選択ステップと、選択された節点集合をいくつかのグループに分ける節点グループ化ステップと、分けられたグループのそれぞれを各サブグラフとして、該条件分岐選択ステップ、該節点集合選択ステップおよび該節点グループ化ステップを該一または複数の条件分岐に対して行って得られる複数のサブグラフを比較して同一サブグラフを検出するサブグラフ比較ステップとを有し、そのことにより上記目的が達成される。
また、好ましくは、本発明のデータフローグラフの同一サブグラフ検出方法における節点グループ化ステップにより分けられたグループの入力部および出力部の少なくともいずれかを、回路占有面積に関してコンパクト化したサブグラフを出力するグラフコンパクト化ステップを更に有する。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出方法における条件分岐選択ステップは、前記条件分岐を所定または任意の順序で選択する。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出方法における節点集合選択ステップは、前記条件分岐の条件が「真」のときに実行される真ブロックに含まれる節点と、「偽」のときに実行される偽ブロックに含まれる節点とを前記節点集合として選択する。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出方法における節点集合選択ステップは、前記条件分岐の条件が「真」のときに実行される真ブロックからの出力と、「偽」のときに実行される偽ブロックからの出力とを選択するセレクタ節点を前記節点集合に加える。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出方法における節点グループ化ステップは、前記条件分岐の条件が「真」または「偽」のときに実行される真ブロックまたは偽ブロックの出力を生成する各出力節点に対して、該真ブロックまたは該偽ブロックに含まれる各節点について、その出力が影響を及ぼす該各出力節点の組合せを求めて、該各出力節点の組合わせ中で共通する節点グループとそれ以外の該各出力節点毎の節点グループとにグループ分けする。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出方法における節点グループ化ステップは、前記セレクタ節点を、前記条件分岐の条件が「真」または「偽」のときに実行される真ブロックまたは偽ブロックの出力を生成する各出力節点として、該真ブロックまたは該偽ブロックに含まれる各節点について、その出力が影響を及ぼす該各出力節点の組合せを求めて、該各出力節点の組合わせ中で共通する節点グループとそれ以外の該各出力節点毎の節点グループとにグループ分けする。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出方法におけるグラフコンパクト化ステップは、前記節点グループ化ステップにより分けられたグループの入力部にある各節点に着目して、前記サブグラフを実行する回路の占有面積および、該回路を複数箇所で共有する場合に必要なセレクタの占有面積の合計と、着目節点を該サブグラフから取り除いたサブグラフを実行する回路の占有面積、当該回路を複数箇所で共有する場合に必要なセレクタの占有面積および、取り除いた該着目節点を実行するために必要な演算器の占有面積の合計とを比較して、後者の合計が前者の合計よりも小さい場合に該サブグラフから着目節点を取り除いて該入力部をコンパクト化する。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出方法におけるグラフコンパクト化ステップは、前記節点グループ化ステップにより分けられたグループの前記出力節点が前記セレクタ節点で、かつ、該セレクタ節点の入力側に繋がっている複数の節点が全て同一演算種類である場合に、該セレクタ節点の各入力側に同一演算種類の節点がそれぞれ接続されているサブグラフを実行する回路の占有面積と、該同一演算種類の一つの節点の入力側に該セレクタ節点の出力が接続されている別のサブグラフを実行する回路の占有面積とを比較して、前者の占有面積が後者の占有面積よりも大きい場合に該同一演算種類の一つの節点の入力側に該セレクタ節点の出力が接続するようにサブグラフを変更する。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出方法におけるサブグラフ比較ステップは、前記各サブグラフの形状に一対一対応させた文字列を作成してそれらの文字列を比較し、同一の文字列を検出することにより同一のサブグラフを検出する。
さらに、好ましくは、本発明のデータフローグラフの同一サブグラフ検出方法におけるサブグラフ比較ステップは、前記文字列をハッシュ関数に入力して得られるハッシュ値を比較し、同一ハッシュ値を検出することにより同一文字列を検出して同一のサブグラフを検出する。
本発明のデータフローグラフの同一サブグラフ検出制御プログラムは、請求項13〜23のいずれかに記載の上記データフローグラフの同一サブグラフ検出方法をコンピュータに実行させるための各処理ステップが記述されており、そのことにより上記目的が達成される。
本発明の可読記録媒体は、請求項24に記載の上記データフローグラフの同一サブグラフ検出制御プログラムが記録されたコンピュータ読み取り可能な記録媒体であって、そのことにより上記目的が達成される。
上記構成により、以下に、本発明の作用を説明する。
本発明にあっては、効率良く同一のサブグラフを探すために、条件分岐に着目する。条件分岐内には、似たような処理が記述される場合が頻繁にあり、条件分岐の周辺を探索することにより、効率的に同一のサブグラフを見つけることが可能となる。
まず、データフローグラフ中、ある一つの条件分岐を選び、選ばれた条件分岐に含まれる節点集合を選んで、選ばれた節点集合をいくつかのグループに分ける。これらの処理を各条件分岐に対して行い、分けられたグループのそれぞれをサブグラフとして、複数のサブグラフを比較して同一サブグラフを検出する。
例えば、節点集合を選択する際には、真ブロックおよび偽ブロックに含まれる節点が選択される。また、真ブロックおよび偽ブロックの出力を選択するセレクタ節点を加えてもよい。
節点グループ化の際には、真ブロックまたは偽ブロックに含まれる各演算節点について、その出力が影響を及ぼす出力節点の組合せが求められ、出力節点の組合わせが同じである節点が同じグループとされる。このように決まった法則でグループ化することにより、別の箇所に同一のデータフローグラフがある場合に、全く同一のグループ分けが為され、別の箇所に類似したデータフローグラフがある場合には、共通部分をグループとして取り出すことができる可能性が高まる。
また、サブグラフの入力部と出力部をコンパクト化することにより、共有時に必要となるセレクタ数を削減することが可能となる。
例えば、サブグラフの入力部にある各演算節点に着目して、そのサブグラフを実行する回路の占有面積およびその回路を複数箇所で共有する場合に必要なセレクタの占有面積の合計と、着目演算節点をサブグラフから取り除いたサブグラフを実行する回路の占有面積、その回路を複数箇所で共有する場合に必要なセレクタの占有面積、および取り除いた着目演算節点を実行するために必要な演算器の占有面積の合計とを比較して、後者が小さい場合にサブグラフから着目演算節点を取り除くように制御することが可能となる。
また、サブグラフの出力節点がセレクタで、かつ、そのセレクタの入力に継っている複数の節点が全て同一の演算種類Aである場合に、セレクタの各入力に種類Aの演算がそれぞれ接続されているサブグラフを実行する回路の占有面積と、種類Aの一つの演算の入力にセレクタ出力が接続されている別のサブグラフを実行する回路の占有面積とを比較して、前者が大きい場合に種類Aの一つの演算の入力にセレクタ出力が接続するようにサブグラフを変更することが可能となる。
サブグラフを比較する際には、文字列やハッシュ値を比較することにより、効率的に同一サブグラフを検出することが可能となる。
以上のように、本発明によれば、データフローグラフ内の同一サブグラフを高速に検出することができて、それら複数の同一サブグラフを、共通の回路を用いて処理することにより、ハードウェアの面積増大とコスト増加を防ぐことができる。
また、検出されるサブグラフとしては、それらサブグラフを処理する回路を共有するときに必要となるセレクタが少なく、共有による面積削減効果が高いものを得ることができる。
以下に、本発明のデータフローグラフの同一サブグラフ検出装置およびこれを用いた同一サブグラフ検出方法の実施形態1,2について、図面を参照しながら説明する前に、まず、効率良く同一サブグラフを探すために着目する条件分岐を含むデータフローグラフについて説明する。
なお、本発明では、データフローグラフから効率良く同一サブグラフを探すために、ループや条件分岐など、データフローグラフ中の階層構造に着目する。ループのデータフローグラフには、処理の継続を判定するための条件分岐が含まれているため、以下では、条件分岐に着目して説明する。
図1(a)は、本発明で着目する条件分岐を含むC言語による動作記述の一例であり、図1(b)は、図1(a)のデータフローグラフの一例を示す図である。
図1(b)に示すように、比較器11は、条件分岐の条件(i>0)を判定するための比較器であり、その比較結果が分岐節点12に入力される。
分岐節点12では、入力が例えば「1」の場合にブロック13が実行され、入力が例えば「0」の場合にブロック14が実行されるように、コントロール信号を発生する。このコントロール信号は、破線のコントロール枝15および16でデータの流れとして表されている。
破線で表されたブロック13は、条件が「真」のときに内部のデータフローグラフが実行されるブロックであり、以下、これを真ブロックと呼ぶ。また、ブロック14は、条件が「偽」のときに実行されるブロックであり、以下、これを偽ブロックと呼ぶ。
ブロック13,14からの各出力は、セレクタ節点17に入力されており、条件に応じて真ブロック13の処理結果と偽ブロック14からの処理結果とのいずれかが選択される。節点18は、条件分岐が収束する結合節点である。
このデータフローグラフでは、i>0の場合に真ブロック13内のデータフローグラフが実行されて、j+iの値が新たなjとして出力される。また、i<または=0の場合に偽ブロック14内のデータフローグラフが実行されて、j−iの値が新たなjとして出力される。
このようなコントロール信号を含んだデータフローグラフは、コントロールデータフローグラフ(CDFG)とも呼ばれるが、ここでは単にデータフローグラフと呼ぶ。
このような条件分岐は、動作記述中に多数用いられ、各条件分岐内に似たような処理が記述される場合が頻繁にある。よって、条件分岐の周辺を探索することにより、効率的に同一のサブグラフを検出することが可能になる。ループについても、前述したように処理の継続を判定するための条件分岐が含まれているため、上記条件分岐の場合と同様である。
例えば、図2に示すC言語による動作記述は、二つの条件分岐を含んでいる。一つ目の条件分岐では条件にしたがって変数xの値が変更され、二つ目の条件分岐では条件にしたがって変数yの値が変更される。この事例では、一つ目の条件分岐でi<5の場合にx+10の値が新たなxの値として出力され、i>または=5の場合にx−5の値が新たなxの値として出力される。また、二つ目の条件分岐でj<5の場合にy+10の値が新たなyの値として出力され、j>または=5の場合にy−5の値が新たなyの値として出力される。
しかしながら、このデータフローグラフにおいては、変数の名前は関係せず、データの演算のみがグラフとして表される。よって、両条件分岐には同一のサブグラフが現れることになる。したがって、条件分岐やループの周辺を探索することにより、効率的に同一のサブグラフを検出することが可能になる。
(実施形態1)
図3は、本発明のデータフローグラフの同一サブグラフ検出装置の実施形態1を含む高位合成装置の構成例を示すブロック図である。
図3において、本実施形態1の高位合成装置10は、デジタル回路の動作記述を格納する動作記述格納部1と、所定の動作記述からデータフローグラフを生成するデータフローグラフ生成手段2と、生成されたデータフローグラフを格納するデータベース3と、データベース3にアクセス可能とするデータフローグラフの同一サブグラフ検出装置4と、検出した同一サブグラフを格納する同一サブグラフ検出結果格納部5とを有している。なお、高位合成装置10は、このデータフローグラフに対して、スケジューリング処理とアロケーション処理を行い、スケジューリング結果およびアロケーション結果を元に、データパスおよびコントローラを生成してハードウェア(回路図)を得るが、ここでは本発明に直接関係しないので省略する。
データフローグラフ生成手段2は、ハードウェア構造に関する情報が含まれず、処理のアルゴリズムのみが記述された動作記述から、データの流れが解析されて、データフローグラフと呼ばれるモデルが作成される。このデータフローグラフは、各処理を示す複数の節点と、各節点間を接続する枝とから構成されている。節点はディジタル回路中で実行されるある一つの演算を表しており、枝は演算(節点)から演算(節点)へのデータの流れを表している。演算を表す節点を枝で適切に接続することにより、ディジタル回路の動作をデータフローグラフとして表すことが可能となる。データフローグラフ中の各節点は、入力枝と出力枝とによって接続され、入力枝が演算に与えられるデータを表し、出力枝が演算結果のデータを表す。また、各節点にはそれぞれ、演算の種類の情報なども含まれている。
データベース3は、データフローグラフ生成手段2によって生成されたデータフローグラフを格納する。
データフローグラフの同一サブグラフ検出装置4は、条件分岐選択手段41と、節点集合選択手段42と、節点グループ化手段43と、グラフコンパクト化手段44と、サブグラフ比較手段45とを有して、データベース3内のデータフローグラフが参照されて、そのデータフローグラフ内の同一サブフラクが検出される。
条件分岐選択手段41では、データベース3内のデータフローグラフ中、一または複数の条件分岐から任意の順序で一つの条件分岐が選択される。
節点集合選択手段42では、条件分岐選択手段41によって選ばれた条件分岐に含まれる節点集合が選択される。
節点グループ化手段43では、節点集合選択手段42によって選ばれた節点集合がいくつかのグループに分けられる。
グラフコンパクト化手段44では、節点グループ化手段43により分けられたグループの入力部および出力部がコンパクト化されてサブグラフとして出力される。
サブグラフ比較手段45では、条件分岐選択手段41、節点集合選択手段42、節点グループ化手段43およびグラフコンパクト化手段44による各処理が各条件分岐に対して行われて得られる複数のサブグラフが比較されて、同一サブグラフが検出される。
以下に、本実施形態1のデータフローグラフの同一サブグラフ検出装置4を用いたデータフローグラフの同一サブグラフ検出方法について具体的に説明する。
図4は、図1のデータフローグラフの同一サブグラフ検出装置4を用いたデータフローグラフの同一サブグラフ検出方法の処理手順を説明するためのフローチャートである。以下では、図4のフローチャートに従って本実施形態1のデータフローグラフの同一サブグラフ検出方法の各処理手順について説明する。
図4に示すように、まず、ステップS1で、図3の条件分岐選択手段41によって、データフローグラフ中、ある一つの条件分岐が選択される。全ての条件分岐に対してステップS1〜S4の処理が繰り返し実効される。このため、複数の条件分岐からある一つの条件分岐を選択する順序は任意でよい。
次に、ステップS2では、節点集合選択手段42によって、ステップS1で選択された条件分岐に含まれる節点集合が選択される。この条件分岐に含まれる節点集合としては、その条件分岐の条件が「真」のときに実行される真ブロックに含まれる節点と、「偽」のときに実行される偽ブロックに含まれる節点とが選択される。
例えば図5に示す条件分岐を含むデータフローグラフの場合、真ブロック21に含まれる節点A,B,C,D,E,F,Gと、偽ブロック22に含まれる節点H,I,J,Kとが選ばれる。ここで、節点LとMとはセレクタ節点であり、本実施形態1では節点集合として選択されていない。なお、図5では、セレクタのコントロール信号は省略している。
ステップS3では、節点グループ化手段43によって、ステップS2で選択された節点集合がいくつかのグループに分けられる。
ここでは、条件分岐の条件が「真」または「偽」のときに実行される真ブロックまたは偽ブロックの出力を生成する出力節点(最終の出力節点)に対して、その真ブロックまたは偽ブロックに含まれる各演算節点について、その出力が影響を及ぼす各最終の出力節点に繋がった節点の組合せが求められて、この各最終の出力節点の組合わせ中で共通する節点グループを別の節点グループ(節点の組合せ)とする。ここでは、データフローグラフやサブグラフ中で最も下流にあり、そのグラフ全体の出力の値を生成する節点を、出力節点と呼ぶ。
このグループ分けは、例えば以下のような処理手順(1)〜(4)により行われる。
(1)条件分岐の条件が「真」または「偽」のときに実行される真ブロックまたは偽ブロックの最終の出力側に位置する出力節点(最終の出力節点)を選択する。例えば図5の事例では、節点E,G,I,Kが選ばれる。
(2)それぞれの各最終の出力節点について、その節点の入力枝に繋がっている節点を、データフローグラフを上方向(上流側)に探索することにより求める。このとき、他の節点を経由してもよい。例えば図5の事例では、出力節点Eに繋がっている節点はA,B,C,Dである。また、出力節点Gに繋がっている節点はA,B,C,Fである。さらに、出力節点Iに繋がっている節点はHである。さらに、出力節点Kに繋がっている節点はJである。
(3)各節点について、その節点が共通に繋がっているかどうかで出力節点の集合を求める。節点が出力節点である場合には、自分自身に継っているものとする。例えば図5の事例では、節点A,B,Cは出力節点EとGに共通に繋がっている。また、節点D,Eは出力節点Eに継っている。さらに、節点F,Gは出力節点Gに継っている。さらに、節点H,Iは出力節点Iに継っている。さらに、節点J,Kは出力節点Kに継っている。
(4)繋がっている出力節点の集合が同じ節点を一つのグループとする。即ち、各最終の出力節点の組合わせ中で共通する節点グループを別の節点グループ(節点の組合せ)とする。例えば図5の事例では、節点A,B,Cのグループ、節点D,Eのグループ、節点F,Gのグループ、節点H,Iのグループ、節点J,Kのグループに分かれる。
このように、決まった法則で節点をグループ分け(グループ化)することにより、別の箇所に同一のデータフローグラフがある場合には、全く同一のグループ分けが為される。また、別の箇所に類似したデータフローグラフがある場合には、共通部分をグループとして取り出すことができる可能性が高まる。
例えば、図6は、図5に類似したデータフローグラフである。全体のデータフローグラフ中に、図5に示すような条件分岐のデータフローグラフと、図6に示すデータフローグラフが真ブロックまたは偽ブロックに含まれる条件分岐のデータフローグラフの両方がある場合に、図6に示す各節点は、節点A,B,Cのグループ、節点D,Eのグループ、節点Gのみのグループに分けられることになり、節点A,B,Cのグループと節点D,Eのグループを図5と図6の間での同一サブグラフとして取り出すことが可能となる。さらに、図5または図6の節点A,B,Cのグループのように、枝別れのあるサブグラフを取り出すことも可能になる。
ここでまた、図4のフローチャートに戻って説明する。
ステップS3で得られた節点グループをそのままサブグラフとしてデータベース3に記憶させてもよいが、ここでは、ステップS3で得られた節点グループは、図19(b)の場合と同様に、入力数が多くなり、回路共有時に多くのセレクタを必要とする可能性がある。そこで、ステップS4では、グラフコンパクト化手段44によって、グループの入力部がコンパクト化されて、共有時に必要となるセレクタ数が削減される。
例えばステップS3で図7(a)に示す節点グループA,B,Cが得られ、それをそのままサブグラフとして取り出した場合には、図7(a)に示す回路を共有して2箇所で用いるためには、図7(b)に示すように、4つの2入力セレクタ31〜34を含む回路が必要になる。
図7(a)の節点グループA,B,Cから節点Bを取り除いて、図8(a)に示す節点グループA,Cとすると、図8(a)に示す回路を共有して2箇所で用いるためには、図8(b)に示すような三つの2入力セレクタ31,32,35を含む回路となる。さらに、図8(b)には示していないが、節点Bの演算を行うための演算器が別に2個必要になる。
よって、図7(b)の回路と図8(b)の回路とを比較してみると、図8(b)では図7(b)に比べて演算器Bが1個多く、セレクタは1個少なくなる。
即ち、演算器Bの占有面積がセレクタの占有面積よりも大きい場合には図7の方が好ましく、演算器Bの占有面積がセレクタの占有面積よりも小さい場合には図8の方が好ましい。
したがって、グループの入力部にある各演算節点に着目して、そのサブグラフを実行する回路の面積およびその回路を複数箇所で共有する場合に必要なセレクタの面積の合計(例えば図7の回路)と、着目演算節点をサブグラフから取り除いたサブグラフを実行する回路の面積、その回路を複数箇所で共有する場合に必要なセレクタの面積、および取り除いた着目演算節点を実行するために必要な演算器の面積の合計(例えば図8の回路)とを比較して、後者が小さい場合には、サブグラフから着目演算節点を取り除いて(図8の回路をサブグラフとする)、グループの入力部をコンパクト化する。
さらに、演算の入力と出力のビット数が異なる演算の場合には、セレクタについては個数だけでなく、面積も考慮する必要がある。例えば、図7(b)のセレクタ31,32と、図8(b)のセレクタ35とは、ビット幅が異なり、それぞれ面積が異なる可能性がある。
一般的には、ある着目演算Fに対して、
(演算器Fの入力ビット数のセレクタの面積)×(入力数)
>(演算器Fの面積)+(演算器Fの出力ビット数のセレクタの面積)×(出力数)
の場合には、その演算は演算グループから外す方が好ましい。
図4のステップS4では、上記処理手順を、サブグループの入力部にある各節点に対して繰り返し適用すればよい。
即ち、
(1)全入力が節点グループに属さない節点に繋がっている節点を集合Sとする。
(2)集合S中の一つの演算Fを表す節点について、
(演算器Fの入力ビット数のセレクタの面積)×(入力数)
>(演算器Fの面積)+(演算器Fの出力ビット数のセレクタの面積)×(出力数)
であれば、その節点を節点グループから外し、新たに全入力が節点グループに属さない節点に繋がっている節点が発生すれば集合Sに加える。
(3)集合Sから演算Fを削除する。
(4)集合Sが空になるまで上記(2)から(3)を繰り返す。
このようにして、ステップS4で得られた節点グループは、データベース3のサブグラフとして記憶される。これにより、回路を共有する時に必要なセレクタが少なく、共有する効果が大きいサブグラフが得られる。
次に、図4のステップS5では、ステップS2〜S4の処理が、全ての条件分岐について行なわれるように、繰り返される。
さらに、ステップS6では、サブグラフ比較手段45によって、ステップS1〜S5までの処理によってデータベース3に記憶された複数のサブグラフが比較されて、同一サブグラフが検出される。
ここで、同一サブグラフを検出するためには、各サブグラフの形状を比較してもよいが、節点と枝の接続や、節点の演算種類情報などの全てを比較する必要があり、一回毎の比較が繁雑で、処理に時間がかかってしまう。
そこで、サブグラフを比較して同一サブグラフを検出するためには、以下に示すように、文字列を用いる方法が、より効率的である。これを手順(1)〜(3)に示す。
(1)各サブグラフを文字列で表す。
(2)各サブグラフを文字列をキーとしてソ−トする。
(3)隣合う文字列を比較して、等しい場合には同一サブグラフとして出力する。
まず、サブグラフを文字列で表す。サブグラフを文字列で表す方法は、サブグラフの形状と文字列とを一対一で対応させることができるものであれば、どのような方法でもよく、また、サブグラフを数字列(数字列はここで言う文字列に含む)で表してもよい。
図9に、サブグラフを文字列で表す方法の一例を示す。
図9(a)はデータフローグラフの一例であり、図9(b)は図9(a)を文字列で表した一例である。
図9(b)の文字列は、A(B,C)、B(I1,I2)、C(B,I3)の三つの部分に分解することが可能であり、それぞれが各節点の種類と入力の接続先とを示している。即ち、文字列A(B,C)は、節点Aの1番目の入力が節点Bにつながり、2番目の入力が節点Cに継っていることを示す。また、文字列B(I1,I2)は、節点Bの1番目の入力がサブグラフの1番目の入力であり、2番目の入力がサブグラフの2番目の入力であることを示す。さらに、文字列C(B,I3)は、節点Cの1番目の入力が節点Bにつながり、2番目の入力はサブグラフの3番目の入力であることを示す。
文字列A(B,C)、文字列B(I1,I2)、文字列C(B,I3)の各部分を、図9(a)に示すサブグラフの出力から出発して、深さ優先および左側優先の順序で並べたものが、図9(b)である。
このようにサブグラフを文字列で表すと、各節点の出現順序が一意的に決定されるため、サブグラフの形状と文字列とを一対一対応させることができる。実際には、各節点の演算の種類に関する情報や、ビット幅に関する情報についても、文字列に埋め込まれるようにする。
次に、文字列を文字コード順にソートする。文字列をソートするためには、クイックソートなどのような一般的なアルゴリズムを用いることができる。
次に、ソート結果で隣合う文字列を比較して、同じ文字列であれば、それらの文字列に対応する二つのサブグラフは同一であると判定される。各文字列はソートされているため、同一の文字列は必ず隣合うことになるため、隣合わせの文字列のみを比較すればよい。
ここで、サブグラフに含まれる節点数が多くなると、文字列が長くなり、文字列のソートや比較のために時間がかかるようになる可能性がある。そのような場合には、MD5のような、認証やディジタル署名などに用いられるハッシュ関数を用いて、各文字列から生成されたハッシュ値を文字列の代わりに用いることができる。MD5は、IETF(Internet Engineering Task Force)において、RFC1321として標準化されている。
ハッシュ値は、元の文字列よりもはるかに短いため、ソートや比較を行なう時間を短縮化することができる。
MD5のような手法では、初期値敏感性が不可逆な一方向関数によって、疑似的な乱数のようなハッシュ値が生成される。よって、同じハッシュ値が生成されるような別の元文字列を作成することは極めて困難であり、異なる元文字列から同一のハッシュ値が得られる可能性は無視できるほど小さい。
このため、ハッシュ値が等しい場合には元の文字列も等しくなり、短時間で同一文字列を検出して、同一サブグラフを検出することが可能となる。
以上のように、本実施形態1によれば、データフローグラフ中、ある一つの条件分岐を選び、選ばれた条件分岐に含まれる節点集合を選んで、選ばれた節点集合をいくつかのグループに分ける。これらの処理を各条件分岐に対して行い、分けられたグループのそれぞれをサブグラフとして、複数のサブグラフを比較して同一サブグラフを検出することにより、条件分岐の周辺を探索することにより、より効率的に同一のサブグラフを容易かつ正確に見つけることができる。
また、決まった法則で節点をグループ化することにより、別の箇所に同一のデータフローグラフがある場合に全く同一のグループ分けを行い、別の箇所に類似したデータフローグラフがある場合に共通部分をグループとして取り出して、同一のサブグラフを容易かつ正確に検出することができる。
さらに、サブグラフの入力部をコンパクト化することにより、占有回路面積を削減するべく、共有時に必要となるセレクタ数を削減することができる。
さらに、サブグラフを比較する際に、文字列やハッシュ値を比較することにより、より効率的に同一サブグラフを検出することができる。
したがって、本実施形態1によれば、データフローグラフ内の同一サブグラフを高速かつ正確に検出して、それら複数の同一サブグラフを、共通の回路を用いて処理することにより、ハードウェアの面積増大とコスト増加を防ぐことができる。
さらに、検出されるサブグラフとしては、それらサブグラフを処理する回路を共有するときに必要となるセレクタが少なく、共有による面積削減効果が高いものを得ることができる。
(実施形態2)
上記実施形態1で説明した図4のフローチャートでは、ステップS2において、条件分岐に含まれる節点集合として、真ブロックおよび偽ブロック内の節点を選択したが、本実施形態2では、条件分岐の条件が「真」のときに実行される真ブロックからの出力と「偽」のときに実行される偽ブロックからの出力とを選択するセレクタ節点も節点集合に加える場合である。
図3に示すように、本実施形態2の高位合成装置10Aは、データフローグラフの同一サブグラフ検出装置4Aを有している。データフローグラフの同一サブグラフ検出装置4Aは、条件分岐選択手段41と、節点集合選択手段42Aと、節点グループ化手段43Aと、グラフコンパクト化手段44Aと、サブグラフ比較手段45とを有して、データベース3内のデータフローグラフが参照されて、そのデータフローグラフ内の同一サブフラクが検出される。
節点集合選択手段42Aは、条件分岐の条件が「真」のときに実行される真ブロックに含まれる節点と、「偽」のときに実行される偽ブロックに含まれる節点とを節点集合として選択する。この場合に、条件分岐の条件が「真」のときに実行される真ブロックからの出力と、「偽」のときに実行される偽ブロックからの出力とを選択するセレクタ節点を節点集合に加えている。
節点グループ化手段43Aは、このセレクタ節点を各出力節点として、真ブロックまたは偽ブロックに含まれる各演算節点について、その出力が影響を及ぼす各出力節点の組合せを求めて、出力節点の組合わせ中で共通する演算節点グループとそれ以外の演算節点グループとにグループ分けする。
グラフコンパクト化手段44Aは、節点グループ化手段43Aにより分けられたグループの出力節点がセレクタ節点で、かつ、このセレクタ節点の入力側に繋がっている複数の演算節点が全て同一の演算種類である場合に、セレクタ節点の各入力側に同一種類の演算節点がそれぞれ接続されているサブグラフを実行する回路の占有面積と、同一種類の一つの演算節点の入力側に該セレクタ節点の出力が接続されている別のサブグラフを実行する回路の占有面積とを比較して、前者の占有面積が大きい場合に同一種類の一つの演算節点の入力側にセレクタ節点の出力が接続するようにサブグラフを変更する。
図10は、本実施形態2のデータフローグラフの同一サブグラフ検出方法の処理手順を説明するためのフローチャートである。以下では、図10のフローチャートに従って本実施形態2のデータフローグラフの同一サブグラフ検出方法の各手順について説明する。
図10に示すように、まず、ステップS11では、図4のステップS1の場合と同様に、条件分岐選択手段41によって、データフローグラフ中、所定または任意の順序で一つの条件分岐が選択される。
次に、ステップS12では、図4のステップS2の場合と同様に、節点集合選択手段42Aによって、ステップS11で選択された条件分岐に含まれる節点集合が選択された後、ステップS13で、条件分岐からの出力を選択するセレクタ節点が節点集合に加えられる。
例えば図5に示すデータフローグラフの場合には、条件分岐に含まれる節点集合として、演算AからKの節点集合に、セレクタLおよびMが加えられる。
ステップS14では、節点グループ化手段43Aによって、ステップS13で選択された節点集合がいくつかのグループに分けられる。
ここでは、条件分岐の条件が「真」のときに実行される真ブロック21からの出力と、「偽」のときに実行される偽ブロック22からの出力とを選択するセレクタ節点を出力節点として、その真ブロック21または偽ブロック22に含まれる各演算節点について、その出力が影響を及ぼす出力節点に繋がる各節点の組合せが求められて、その各節点の組合わせ中で共通する節点グループを別の節点グループとする。
例えば図5の事例では、出力位置にある出力節点はE,G,I,Kではなく、LおよびMであり、A,B,Cのグループ、D,E,H,I,Lのグループ、F,G,J,K,Mの三つのグループに分けられる。
ステップS15では、図4のステップS4の場合と同様に、グラフコンパクト化手段44Aによって、グループの入力部がコンパクト化されて、共有時に必要となるセレクタ数が削減される。
ステップS16では、グラフコンパクト化手段44Aによって、グループの出力部もコンパクト化されて、共有時に必要となるセレクタ数が削減される。
ここでは、グループの出力節点がセレクタで、かつ、そのセレクタの入力に繋がっている複数の節点が全て同一の演算種類Aである場合に、セレクタの各入力に種類Aの演算がそれぞれ接続されているサブグラフを実行する回路の占有面積と、種類Aの一つの演算の入力にセレクタ出力が接続されている別のサブグラフを実行する回路の占有面積とを比較して、前者が大きい場合に種類Aの一つの演算の入力にセレクタ出力が接続されるように、サブグラフが変更される。
例えば図11(a)に示す節点グループのように、セレクタ51の入力側に同一種類の演算(演算種類C)52,53が接続されている場合、演算52は条件分岐の条件が「真」の場合にのみ実行され、演算53は条件分岐の条件が「偽」の場合にのみ実行されるため、同時には実行されない。よって、図11(b)に示すように、一つの演算(演算種類C)54によって処理することができる。
図11(a)と図11(b)とを比較すると、図11(b)では、演算種類Cは演算54のみで一つ少なくなっており、このサブグラフを実行する回路の占有面積は図11(a)の場合に比べて小さくなる。
さらに、新たに作られたセレクタ55の入力に対しても同様の処理を繰り返す。図11(b)の場合には、セレクタ55の入力には異なる種類の演算(演算種類A)55および演算(演算種類B)56が繋がっているため、処理は終了する。
しかしながら、図12(a)に示すように、セレクタ61の入力側に2入力の演算(演算種類A)62,63が接続されている場合には、同様の処理を行うと、図12(b)に示すように、一つの演算(演算種類A)64によって処理することができるが、二つのセレクタ65,66が必要になる。
よって、(セレクタの面積)<(演算器の面積)の場合には、図12(b)の方が好ましいが、そうでない場合には、図12(a)のままの方が好ましい。
一般には、
(演算器の面積)>(セレクタの面積)×((演算器の入力数)−1)
の場合には面積が減少するので、図11および図12に示すようにサブグラフをコンパクト化するための変換が行われる。
次に、図10のステップS17では、図4のステップS5の場合と同様に、ステップS11〜S16の各処理が、全ての条件分岐について行われるように、繰り返される。
ステップS18では、図4のステップS6の場合と同様に、サブグラフ比較手段45によって、ステップS11〜S17までの各処理によってデータベース3に記憶した複数のサブグラフが比較されて、同一サブグラフが検出される。
以上のように、本実施形態2によれば、条件分岐の出力部にあるセレクタまで含まれた同一サブグラフを検出することができる。また、条件分岐の性質を利用して出力部のコンパクト化を図ることができ、回路を共有した場合に、より面積削減効果を高めることができる。
なお、上記実施形態1,2では、本発明のデータフローグラフの同一サブグラフ検出装置10およびそれを用いたデータフローグラフの同一サブグラフ検出方法について説明したが、本発明のデータフローグラフの同一サブグラフ検出方法は、その処理手順(アルゴリズム)を制御プログラムとして記述して、磁気ディスク、光ディスクなどのコンピューター読み取り可能な可読記録媒体に格納しておくことにより、コンピュータシステムのCPU(中央演算処理装置;制御手段)によって実行させることができる。
また、上記実施形態1,2では、図3に示すようにグラフコンパクト化手段44または44Aを含むように構成したが、これに限らず、グラフコンパクト化手段44または44Aを含まない場合にも、条件分岐に着目することにより、条件分岐内に、似たような処理が記述される場合が頻繁にあり、条件分岐の周辺を探索することによって、効率的に同一のサブグラフを見つけることができる。このように、データフローグラフ中の同一のサブグラフを検出する際に、それらのサブグラフの動作を共通の回路で実行することによる面積削減効果が大きいサブグラフを高速に検出することができる。
以上のように、本発明の好ましい実施形態1,2を用いて本発明を例示してきたが、本発明は、この実施形態1,2に限定して解釈されるべきものではない。本発明は、特許請求の範囲によってのみその範囲が解釈されるべきであることが理解される。当業者は、本発明の具体的な好ましい実施形態1,2の記載から、本発明の記載および技術常識に基づいて等価な範囲を実施することができることが理解される。本明細書において引用した特許、特許出願および文献は、その内容自体が具体的に本明細書に記載されているのと同様にその内容が本明細書に対する参考として援用されるべきであることが理解される。
本発明は、例えばシステムLSIなどの大規模論理回路の自動設計に用いられ、動作記述から論理回路をコンピュータ自動合成する動作合成(高位合成)を行う際に、回路共有により回路占有面積を削減するために、データフローグラフの同一サブグラフを検出するデータフローグラフの同一サブグラフ検出装置、これを用いた高位合成装置、この同一サブグラフ検出装置を用いたデータフローグラフの同一サブグラフ検出方法、この方法の各処理手順をコンピュータに実行させるためのデータフローグラフの同一サブグラフ検出制御プログラムおよびこの制御プログラムが記録されたコンピュータ読み取り可能な可読記録媒体の分野において、システムLSIなどの大規模論理回路の設計などにおいて、動作記述から論理回路を自動合成する動作合成(高位合成)を行う際に、データフローグラフ内の同一サブグラフを高速に検出することが可能になり、それら複数の同一サブグラフを、共通の回路を用いて処理することにより、ハードウェアの回路面積増大とコスト増加を防ぐことができる。また、検出されるサブグラフとしては、それらサブグラフを処理する回路を共有するときに必要となるセレクタが少なく、回路共有による面積削減効果が高いものが得られる。
(a)は本発明が着目する条件分岐を含む動作記述の一例を示す図、(b)は(a)のデータフローグラフの一例を示す図である。 本発明が着目する条件分岐を含む動作記述の他の例を示す図である。 本発明のデータフローグラフの同一サブグラフ検出装置の実施形態1を含む高位合成装置の構成例を示すブロック図である。 本実施形態1に係るデータフローグラフの同一サブグラフ検出方法の処理手順を説明するためのフローチャートである。 本発明が着目する条件分岐を含むデータフローグラフの一例を示す図である。 図5のデータフローグラフとは別に存在するデータフローグラフ例を示す図である。 (a)はデータフローグラフの一例を示す図、(b)は(a)の動作を実現するための一例を示す回路図である。 (a)は入力部がコンパクト化されたデータフローグラフの一例を示す図、(b)は(a)の動作を実現するための一例を示す回路図である。 データフローグラフの文字列表記例について説明するための図であって、(a)はデータフローグラフの一例を示す図、(b)は(a)の文字列表記例を示す図である。 本実施形態2に係るデータフローグラフの同一サブグラフ検出方法の処理手順を説明するためのフローチャートである。 (a)および(b)は出力部のコンパクト化について説明するための図である。 (a)および(b)は出力部のコンパクト化について説明するための図である。 動作記述の一例を示す図である。 データフローグラフの一例を示す図である。 データフローグラフを表すデータ構造の一例を示す図である。 (a)および(b)は、サブグラフ共有化の一例を説明するための図である。 従来の類似サブグラフ探索方法によって扱われるサブグラフの一例を示す図である。 従来の類似サブグラフ探索方法を説明するための図である。 (a)および(b)は、従来の類似サブグラフ探索方法の問題点を説明するための図である。 (a)および(b)は、回路共有による面積削減効果が高いサブグラフの一例を示す図である。 (a)〜(d)は、種々のサブグラフの形状例をそれぞれ示す図である。
符号の説明
1 動作記述格納部
2 データフローグラフ生成手段
3 データベース
4,4A データフローグラフの同一サブグラフ検出装置
41,41A 条件分岐選択手段
42,42A 節点集合選択手段
43,43A 節点グループ化手段
44,44A グラフコンパクト化手段
45 サブグラフ比較手段
5 同一サブグラフ検出結果格納部
10,10A 高位合成装置

Claims (25)

  1. ディジタル回路動作について、演算を示す複数の節点と、該節点に入出力するデータの流れを示す枝とで表されたデータフローグラフ中、一または複数の条件分岐から一つの条件分岐を選択する条件分岐選択手段と、
    選択された条件分岐に含まれる節点集合を選択する節点集合選択手段と、
    選ばれた節点集合をいくつかのグループに分ける節点グループ化手段と、
    分けられたグループのそれぞれを各サブグラフとして、該条件分岐選択手段、該節点集合選択手段および該節点グループ化手段による各処理を該一または複数の条件分岐に対して行って得られる複数のサブグラフを比較して同一サブグラフを検出するサブグラフ比較手段とを有するデータフローグラフの同一サブグラフ検出装置。
  2. 前記節点グループ化手段により分けられたグループの入力部および出力部の少なくともいずれかを、回路占有面積に関してコンパクト化したサブグラフを出力するグラフコンパクト化手段を更に有する請求項1に記載のデータフローグラフの同一サブグラフ検出装置。
  3. 前記条件分岐選択手段は、前記条件分岐を所定または任意の順序で選択する請求項1に記載のデータフローグラフの同一サブグラフ検出装置。
  4. 前記節点集合選択手段は、前記条件分岐の条件が「真」のときに実行される真ブロックに含まれる節点と、「偽」のときに実行される偽ブロックに含まれる節点とを前記節点集合として選択する請求項1または2に記載のデータフローグラフの同一サブグラフ検出装置。
  5. 前記節点集合選択手段は、前記条件分岐の条件が「真」のときに実行される真ブロックからの出力と、「偽」のときに実行される偽ブロックからの出力とを選択するセレクタ節点を前記節点集合に加える請求項1または4に記載のデータフローグラフの同一サブグラフ検出装置。
  6. 前記節点グループ化手段は、前記条件分岐の条件が「真」または「偽」のときに実行される真ブロックまたは偽ブロックの出力を生成する各出力節点に対して、該真ブロックまたは該偽ブロックに含まれる各節点について、その出力が影響を及ぼす該各出力節点の組合せを求めて、該各出力節点の組合わせ中で共通する節点グループとそれ以外の該各出力節点毎の節点グループとにグループ分けする請求項1に記載のデータフローグラフの同一サブグラフ検出装置。
  7. 前記節点グループ化手段は、前記セレクタ節点を、前記条件分岐の条件が「真」または「偽」のときに実行される真ブロックまたは偽ブロックの出力を生成する各出力節点として、該真ブロックまたは該偽ブロックに含まれる各節点について、その出力が影響を及ぼす該各出力節点の組合せを求めて、該各出力節点の組合わせ中で共通する節点グループとそれ以外の該各出力節点毎の節点グループとにグループ分けする請求項5に記載のデータフローグラフの同一サブグラフ検出装置。
  8. 前記グラフコンパクト化手段は、
    前記節点グループ化手段により分けられたグループの入力部にある各節点に着目して、
    前記サブグラフを実行する回路の占有面積および、該回路を複数箇所で共有する場合に必要なセレクタの占有面積の合計と、
    着目節点を該サブグラフから取り除いたサブグラフを実行する回路の占有面積、当該回路を複数箇所で共有する場合に必要なセレクタの占有面積および、取り除いた該着目節点を実行するために必要な演算器の占有面積の合計とを比較して、後者の合計が前者の合計よりも小さい場合に該サブグラフから該着目節点を取り除いて該入力部をコンパクト化する請求項2または6に記載のデータフローグラフの同一サブグラフ検出装置。
  9. 前記グラフコンパクト化手段は、
    前記節点グループ化手段により分けられたグループの前記各出力節点が前記セレクタ節点で、かつ、該セレクタ節点の入力側に繋がっている複数の節点が全て同一演算種類である場合に、
    該セレクタ節点の各入力側に同一演算種類の節点がそれぞれ接続されているサブグラフを実行する回路の占有面積と、
    該同一演算種類の一つの節点の入力側に該セレクタ節点の出力が接続されている別のサブグラフを実行する回路の占有面積とを比較して、前者の占有面積が後者の占有面積よりも大きい場合に該同一電算種類の一つの節点の入力側に該セレクタ節点の出力が接続するようにサブグラフを変更する請求項7に記載のデータフローグラフの同一サブグラフ検出装置。
  10. 前記サブグラフ比較手段は、前記各サブグラフの形状に一対一対応させた文字列を作成してそれらの文字列を比較し、同一の文字列を検出することにより同一のサブグラフを検出する請求項1に記載のデータフローグラフの同一サブグラフ検出装置。
  11. 前記サブグラフ比較手段は、前記文字列をハッシュ関数に入力して得られるハッシュ値を比較し、同一ハッシュ値を検出することにより同一文字列を検出して同一のサブグラフを検出する請求項10に記載のデータフローグラフの同一サブグラフ検出装置。
  12. 請求項1〜11のいずれかに記載のデータフローグラフの同一サブグラフ検出装置を用いて生成したデータフローグラフに対して、スケジューリング処理およびアロケーション処理を行い、スケジューリング結果およびアロケーション結果に基づいてデータパスおよびコントローラを生成して回路図を自動設計する高位合成装置。
  13. ディジタル回路動作について、演算を示す複数の節点と、該節点に入出力するデータの流れを示す枝とで表されたデータフローグラフ中、一または複数の条件分岐から一つの条件分岐を選択する条件分岐選択ステップと、
    選択された条件分岐に含まれる節点集合を選択する節点集合選択ステップと、
    選択された節点集合をいくつかのグループに分ける節点グループ化ステップと、
    分けられたグループのそれぞれを各サブグラフとして、該条件分岐選択ステップ、該節点集合選択ステップおよび該節点グループ化ステップを該一または複数の条件分岐に対して行って得られる複数のサブグラフを比較して同一サブグラフを検出するサブグラフ比較ステップとを有するデータフローグラフの同一サブグラフ検出方法。
  14. 前記節点グループ化ステップにより分けられたグループの入力部および出力部の少なくともいずれかを、回路占有面積に関してコンパクト化したサブグラフを出力するグラフコンパクト化ステップを更に有する請求項13に記載のデータフローグラフの同一サブグラフ検出方法。
  15. 前記条件分岐選択ステップは、前記条件分岐を所定または任意の順序で選択する請求項13に記載のデータフローグラフの同一サブグラフ検出方法。
  16. 前記節点集合選択ステップは、前記条件分岐の条件が「真」のときに実行される真ブロックに含まれる節点と、「偽」のときに実行される偽ブロックに含まれる節点とを前記節点集合として選択する請求項13または14に記載のデータフローグラフの同一サブグラフ検出方法。
  17. 前記節点集合選択ステップは、前記条件分岐の条件が「真」のときに実行される真ブロックからの出力と、「偽」のときに実行される偽ブロックからの出力とを選択するセレクタ節点を前記節点集合に加える請求項13または16に記載のデータフローグラフの同一サブグラフ検出方法。
  18. 前記節点グループ化ステップは、前記条件分岐の条件が「真」または「偽」のときに実行される真ブロックまたは偽ブロックの出力を生成する各出力節点に対して、該真ブロックまたは該偽ブロックに含まれる各節点について、その出力が影響を及ぼす該各出力節点の組合せを求めて、該各出力節点の組合わせ中で共通する節点グループとそれ以外の該各出力節点毎の節点グループとにグループ分けする請求項13に記載のデータフローグラフの同一サブグラフ検出方法。
  19. 前記節点グループ化ステップは、前記セレクタ節点を、前記条件分岐の条件が「真」または「偽」のときに実行される真ブロックまたは偽ブロックの出力を生成する各出力節点として、該真ブロックまたは該偽ブロックに含まれる各節点について、その出力が影響を及ぼす該各出力節点の組合せを求めて、該各出力節点の組合わせ中で共通する節点グループとそれ以外の該各出力節点毎の節点グループとにグループ分けする請求項17に記載のデータフローグラフの同一サブグラフ検出方法。
  20. 前記グラフコンパクト化ステップは、
    前記節点グループ化ステップにより分けられたグループの入力部にある各節点に着目して、
    前記サブグラフを実行する回路の占有面積および、該回路を複数箇所で共有する場合に必要なセレクタの占有面積の合計と、
    着目節点を該サブグラフから取り除いたサブグラフを実行する回路の占有面積、当該回路を複数箇所で共有する場合に必要なセレクタの占有面積および、取り除いた該着目節点を実行するために必要な演算器の占有面積の合計とを比較して、後者の合計が前者の合計よりも小さい場合に該サブグラフから着目節点を取り除いて該入力部をコンパクト化する請求項14または18に記載のデータフローグラフの同一サブグラフ検出方法。
  21. 前記グラフコンパクト化ステップは、
    前記節点グループ化ステップにより分けられたグループの前記出力節点が前記セレクタ節点で、かつ、該セレクタ節点の入力側に繋がっている複数の節点が全て同一演算種類である場合に、
    該セレクタ節点の各入力側に同一演算種類の節点がそれぞれ接続されているサブグラフを実行する回路の占有面積と、
    該同一演算種類の一つの節点の入力側に該セレクタ節点の出力が接続されている別のサブグラフを実行する回路の占有面積とを比較して、前者の占有面積が後者の占有面積よりも大きい場合に該同一演算種類の一つの節点の入力側に該セレクタ節点の出力が接続するようにサブグラフを変更する請求項19に記載のデータフローグラフの同一サブグラフ検出方法。
  22. 前記サブグラフ比較ステップは、前記各サブグラフの形状に一対一対応させた文字列を作成してそれらの文字列を比較し、同一の文字列を検出することにより同一のサブグラフを検出する請求項13に記載のデータフローグラフの同一サブグラフ検出方法。
  23. 前記サブグラフ比較ステップは、前記文字列をハッシュ関数に入力して得られるハッシュ値を比較し、同一ハッシュ値を検出することにより同一文字列を検出して同一のサブグラフを検出する請求項22に記載のデータフローグラフの同一サブグラフ検出方法。
  24. 請求項13〜23のいずれかに記載のデータフローグラフの同一サブグラフ検出方法をコンピュータに実行させるための各処理ステップが記述されたデータフローグラフの同一サブグラフ検出制御プログラム。
  25. 請求項24に記載のデータフローグラフの同一サブグラフ検出制御プログラムが記録されたコンピュータ読み取り可能な可読記録媒体。
JP2004327110A 2004-11-10 2004-11-10 データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体 Expired - Fee Related JP4165712B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2004327110A JP4165712B2 (ja) 2004-11-10 2004-11-10 データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体
PCT/JP2005/020387 WO2006051760A1 (ja) 2004-11-10 2005-11-07 データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体
US11/666,859 US7886252B2 (en) 2004-11-10 2005-11-07 Same subgraph detector for data flow graph, high-order combiner, same subgraph detecting method for data flow graph, same subgraph detection control program for data flow graph, and readable recording medium

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004327110A JP4165712B2 (ja) 2004-11-10 2004-11-10 データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体

Publications (2)

Publication Number Publication Date
JP2006139427A true JP2006139427A (ja) 2006-06-01
JP4165712B2 JP4165712B2 (ja) 2008-10-15

Family

ID=36336441

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004327110A Expired - Fee Related JP4165712B2 (ja) 2004-11-10 2004-11-10 データフローグラフの同一サブグラフ検出装置、高位合成装置、データフローグラフの同一サブグラフ検出方法、データフローグラフの同一サブグラフ検出制御プログラムおよび可読記録媒体

Country Status (3)

Country Link
US (1) US7886252B2 (ja)
JP (1) JP4165712B2 (ja)
WO (1) WO2006051760A1 (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010262359A (ja) * 2009-04-30 2010-11-18 Mitsubishi Electric Corp 共通データフロー抽出システムおよび共通データフロー抽出方法
JP2013127751A (ja) * 2011-12-19 2013-06-27 Fujitsu Semiconductor Ltd 集積回路最適化プログラム及び集積回路最適化装置
JP2015197883A (ja) * 2014-04-03 2015-11-09 三菱電機株式会社 回路設計支援装置および回路設計支援プログラム
JPWO2017033336A1 (ja) * 2015-08-27 2017-10-12 三菱電機株式会社 回路設計支援装置および回路設計支援プログラム

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070283306A1 (en) * 2006-05-30 2007-12-06 Matthias Koefferlein Layout cells, layout cell arrangement, method of generating a layout cell, method of generating a layout cell arrangement, computer program products
US8234604B2 (en) * 2008-09-02 2012-07-31 International Business Machines Corporation Co-optimization of embedded systems utilizing symbolic execution
JP5287058B2 (ja) * 2008-09-08 2013-09-11 富士通株式会社 検証支援プログラム、検証支援装置および検証支援方法
JP5458622B2 (ja) * 2009-03-24 2014-04-02 日本電気株式会社 動作合成装置、動作合成方法、及び、プログラム
US9405853B2 (en) * 2013-06-17 2016-08-02 Hewlett Packard Enterprise Development Lp Reading object queries
JP6255880B2 (ja) * 2013-10-10 2018-01-10 株式会社ソシオネクスト 高位合成用データ生成装置、高位合成装置、高位合成用データ生成方法及びプログラム
US10642867B2 (en) * 2017-09-15 2020-05-05 Adobe Inc. Clustering based on a directed graph
EP3908947A1 (en) * 2019-03-25 2021-11-17 Aurora Labs Ltd Generating and signing a line-of-code behavior and relation model
US11151301B2 (en) * 2019-06-05 2021-10-19 SiFive, Inc. Point-to-point module connection interface for integrated circuit generation
CN110347884A (zh) * 2019-07-12 2019-10-18 深圳众赢维融科技有限公司 用于处理异常用户子图的方法和装置
US11270051B1 (en) * 2020-11-09 2022-03-08 Xilinx, Inc. Model-based design and partitioning for heterogeneous integrated circuits
US11729080B2 (en) * 2021-05-12 2023-08-15 Vmware, Inc. Agentless method to automatically detect low latency groups in containerized infrastructures

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5666296A (en) * 1991-12-31 1997-09-09 Texas Instruments Incorporated Method and means for translating a data-dependent program to a data flow graph with conditional expression
JP3602697B2 (ja) 1997-09-18 2004-12-15 株式会社東芝 論理回路設計支援システム
JP3765923B2 (ja) * 1998-02-26 2006-04-12 シャープ株式会社 ハードウェア合成方法およびハードウェア合成装置並びにハードウェア合成プログラムを記録した記録媒体
JP2001229169A (ja) 2000-02-14 2001-08-24 Fujitsu Ltd 分木構造の相違点検出支援装置、方法及びその装置での処理をコンピュータに行なわせるためのプログラムを格納した記憶媒体
JP3722351B2 (ja) 2000-02-18 2005-11-30 シャープ株式会社 高位合成方法およびその実施に使用される記録媒体
US7565631B1 (en) * 2004-07-02 2009-07-21 Northwestern University Method and system for translating software binaries and assembly code onto hardware
US7472359B2 (en) * 2004-12-03 2008-12-30 University Of Massachusetts Behavioral transformations for hardware synthesis and code optimization based on Taylor Expansion Diagrams

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010262359A (ja) * 2009-04-30 2010-11-18 Mitsubishi Electric Corp 共通データフロー抽出システムおよび共通データフロー抽出方法
JP2013127751A (ja) * 2011-12-19 2013-06-27 Fujitsu Semiconductor Ltd 集積回路最適化プログラム及び集積回路最適化装置
JP2015197883A (ja) * 2014-04-03 2015-11-09 三菱電機株式会社 回路設計支援装置および回路設計支援プログラム
JPWO2017033336A1 (ja) * 2015-08-27 2017-10-12 三菱電機株式会社 回路設計支援装置および回路設計支援プログラム
US10192014B2 (en) 2015-08-27 2019-01-29 Mitsubishi Electric Corporation Circuit design support apparatus and computer readable medium

Also Published As

Publication number Publication date
WO2006051760A1 (ja) 2006-05-18
US20080040699A1 (en) 2008-02-14
US7886252B2 (en) 2011-02-08
JP4165712B2 (ja) 2008-10-15

Similar Documents

Publication Publication Date Title
US7886252B2 (en) Same subgraph detector for data flow graph, high-order combiner, same subgraph detecting method for data flow graph, same subgraph detection control program for data flow graph, and readable recording medium
Drechsler Formal verification of circuits
US20150339434A1 (en) Virtual hierarchical layer propagation
CN101751333A (zh) 用于支援程序解析的方法、及其计算机程序以及计算机系统
CN111027703A (zh) 一种量子线路查询的方法、装置、存储介质及电子装置
JP2021082165A (ja) 構造探索方法、構造探索プログラム、及び構造探索装置
Mota et al. A compact timed state space approach for the analysis of manufacturing systems: key algorithmic improvements
Jung et al. Efficient operations between mdds and constraints
JP2009025973A (ja) 動作合成装置、半導体集積回路の製造方法、動作合成方法、動作合成制御プログラムおよび可読記録媒体
JP5555238B2 (ja) ベイジアンネットワーク構造学習のための情報処理装置及びプログラム
JP7400833B2 (ja) トポロジー設計装置、トポロジー設計方法、及びプログラム
JP2001209670A (ja) 高位合成方法、および、高位合成方法の実施に使用される記録媒体
JPWO2017204139A1 (ja) データ処理装置、データ処理方法、およびプログラム記録媒体
JP7151515B2 (ja) ソート方法、ソートプログラム及びソート装置
Ma et al. Hardware-accelerated parallel genetic algorithm for fitness functions with variable execution times
JP2001209664A (ja) 高位合成方法並びに高位合成方法の実施に使用される記録媒体
JP3766119B2 (ja) 回路シミュレーション方法及びその装置
Phan A Survey on the Stability of (Extended) Linear Sand Pile Model
Conte et al. Listing acyclic subgraphs and subgraphs of bounded girth in directed graphs
Sinha et al. Machine Learning-Based Hard/Soft Logic Trade-offs in VTR
Sharma et al. PipeRoute: a pipelining-aware router for reconfigurable architectures
Murgai Technology-dependent logic optimization
Mrena et al. Experimental Survey of Algorithms for the Calculation of Node Traversal Probabilities in Multi-valued Decision Diagrams
Dahl et al. IPRec and Isoblaze: Fuzzy Subcircuit Isomorphism for IP Detection in Physical Netlists
JP4470110B2 (ja) 高位合成方法およびシステム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080422

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080620

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

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20080723

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20110808

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20110808

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20120808

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20120808

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20130808

Year of fee payment: 5

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D04

LAPS Cancellation because of no payment of annual fees