JP5467512B2 - 動作合成装置、動作合成方法、及び、動作合成プログラム - Google Patents

動作合成装置、動作合成方法、及び、動作合成プログラム Download PDF

Info

Publication number
JP5467512B2
JP5467512B2 JP2010033612A JP2010033612A JP5467512B2 JP 5467512 B2 JP5467512 B2 JP 5467512B2 JP 2010033612 A JP2010033612 A JP 2010033612A JP 2010033612 A JP2010033612 A JP 2010033612A JP 5467512 B2 JP5467512 B2 JP 5467512B2
Authority
JP
Japan
Prior art keywords
register
behavioral synthesis
scheduling
state
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
JP2010033612A
Other languages
English (en)
Other versions
JP2011170602A (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.)
NEC Corp
Original Assignee
NEC 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 NEC Corp filed Critical NEC Corp
Priority to JP2010033612A priority Critical patent/JP5467512B2/ja
Publication of JP2011170602A publication Critical patent/JP2011170602A/ja
Application granted granted Critical
Publication of JP5467512B2 publication Critical patent/JP5467512B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、半導体集積回路装置の動作を記述した動作レベル回路記述に関し、より詳細には、動作レベル回路記述から具体的な機能(回路)を記述したRTL回路記述を生成する動作合成に関する。
近年、半導体回路の回路規模が増大しているため、半導体回路の設計の際の手間や時間を削減するために様々な手法が用いられている。このような手法の1つとして、動作レベルの回路記述から、RTL(Register Transfer Level)等の抽象度の低い回路記述を合成するための動作合成装置が提案されている。
例えば特許文献1に記載の技術では、動作合成手段110が、動作レベル記述記憶部210に記憶された動作レベル記述に対し、制約記憶部260に記憶された遅延、消費電力、面積等の制約を満たすように動作合成を実行する(特許文献1の明細書段落番号[0023]等参照)。
このような動作合成装置を用いることにより、ハードウェアの動作を表現しただけの動作レベルの回路記述から、ハードウェアの動作順序やデータパスの構成等を自動的に設計することが可能となる。
特開2008−176486号公報 特開2003−99409号公報
上述したような技術を用いることによりハードウェアの動作順序やデータパスの構成等を自動的に設計することが可能となる。
しかしながら上述したような一般的な技術による動作合成では、レジスタの読み出し・書き込みポート数を制約する機能を備えていない。特許文献1に記載の技術を例に取れば、制約抽出手段150が、更に、各モジュールの入力端子数制約、出力端子数制約を追加することは可能であるがレジスタの読み出し・書き込みポート数を制約することはできない。
そして、レジスタの読み出し・書き込みポート数を制約できない場合は或る問題が生じる。この問題について図1及び2を参照して詳細に説明する。
例えば、図1(b)のような四つのレジスタで構成する場合、図1(a)のように二つの演算をスケジューリングすることができる。一方、図1(d)のようなアドレス指定により複数のレジスタを選択できるレジスタファイルで構成する場合、レジスタ数は4個なので足りている。しかし、入力ポート数が足りなくなるため、図1(a)のようなスケジューリングはできず、図1(c)のようにスケジューリングしなければならないという問題が生じる。
この点、演算器数とレジスタポート数の間には相関があるため、通常の動作合成で備えている演算器数制約によりレジスタの読み出し・書き込みポート数を制約することも可能であるが、この方式では必ず制約できるか否か不正確である。
例えば、図2(a)のように入出力数がそれぞれ1の演算器の場合、レジスタの読み出し・書き込みポート数と演算器数は1対1となる。しかし、図2(b)のように入力数1、出力数2の演算器の場合、レジスタの読み出し・書き込みポート数と演算器数は1対1ではない。また、図2(c)のようにレジスタからメモリへの書き込みやレジスタ間の転送がある場合、レジスタの読み出し・書き込みポート数と演算器数は1対1ではない。このことから、演算器数制約によりレジスタの読み出し・書き込みポート数を正確に制約することはできないことは明らかである。
本発明は、上記問題に鑑みてなされたものであり、半導体集積回路装置の動作を記述した動作レベル回路記述から具体的な機能(回路)を記述したRTL回路記述を生成する際に、レジスタの読み出し・書き込みポート数を制約することが可能な、動作合成装置、動作合成方法、及び、これらをコンピュータにて実現するためのプログラムを提供することを目的とする。
本発明の第1の観点によれば、半導体集積回路装置の動作を記述した動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成装置において、レジスタの読み出し・書き込みポート数の制約を決定し当該制約を満たすように前記抽象度の低い回路記述を生成する際のスケジューリング・バインディング処理を行う時に、スケジューリング対象より前の状態のレジスタ共有を調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たすことを特徴とする動作合成装置が提供される。
本発明の第2の観点によれば、半導体集積回路装置の動作を記述した動作レベルの回路記述から、抽象度の低い回路記述を生成するための装置である動作合成装置が行う動作合成方法において、レジスタの読み出し・書き込みポート数の制約を決定し当該制約を満たすように前記抽象度の低い回路記述を生成する際のスケジューリング・バインディング処理を行う時に、スケジューリング対象より前の状態のレジスタ共有を調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たすことを特徴とする動作合成方法が提供される。
本発明の第3の観点によれば、半導体集積回路装置の動作を記述した動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成装置に組み込まれる動作合成プログラムにおいて、
レジスタの読み出し・書き込みポート数の制約を決定し当該制約を満たすように前記抽象度の低い回路記述を生成する際のスケジューリング・バインディング処理を行う時に、スケジューリング対象より前の状態のレジスタ共有を調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たす動作合成装置としてコンピュータを機能させることを特徴とする動作合成プログラムが提供される。
本発明によれば、半導体集積回路装置の動作を記述した動作レベル回路記述から具体的な機能(回路)を記述したRTL回路記述を生成する際に、レジスタの読み出し・書き込みポート数を制約することから、ハードウェアの制約を満たした合成をすることが可能となる。
本発明に関連する背景技術の問題点を説明するための図(1/2)である。 本発明に関連する背景技術の問題点を説明するための図(2/2)である。 本発明の第1の実施形態及び第2の実施形態による動作合成システムの構成を示すブロック図である。 本発明の第1の実施形態及び第2の実施形態による動作合成システムのハードウェア構成の一例を示すブロック図である。 本発明の第1の実施形態による動作合成システムにおける基本的動作を示すフローチャートである。 本発明の第2の実施形態による動作合成システムにおける基本的動作を示すフローチャートである。 スケジューリング時のレジスタ読み出し・書き込みポート数のカウントについて説明するための図である。 演算ノードがツリーを構成するような場合のスケジューリング時のレジスタ読み出し・書き込みポート数のカウントについて説明するための図である。 演算結果がメモリに格納される場合のスケジューリング時のレジスタ読み出し・書き込みポート数のカウントについて説明するための図である。 第1の実施例におけるスケジューリングを説明するための図である。 第2の実施例におけるスケジューリングを説明するための図である。 第3の実施例における合成対象の記述とCDFG(control data flow graph)を説明するための図である。 第3の実施例におけるスケジューリング・バインディング例を説明するための図である。 第3の実施例におけるスケジューリング・バインディング例を説明するための図である。
次に、発明を実施するための形態について図面を参照して詳細に説明する。
まず、本発明の第1の実施形態による動作合成システムについて図面を参照して詳細に説明する。
図3−1は、本発明の第1の実施形態による動作合成システムの構成を示すブロック図である。
図3−1を参照すると、本発明の第1の実施形態による動作合成システムは、プログラム制御により動作するデータ処理装置100と、入力情報200と、出力情報300と記憶装置400を有している。
データ処理装置100は、CPU(Central Processing Unit)等に代表される演算装置(プロセッサ)等のハードウェア資源がソフトウェア(プログラム)を読み込むことにより実現される。
すなわち、ソフトウェアがコンピュータに組み込まれることにより、ソフトウェアとハードウェア資源とが協働した具体的部によって、使用目的に応じた情報の演算または加工を実現することにより、使用目的に応じた特有の情報処理装置(機械)またはその動作方法が構築されているものといえる。
具体的なデータ処理装置100の実装例として情報処理装置500を図3−2に示す。
情報処理装置500は、CPU510、主記憶装置520、補助記憶装置530、I/Oインターフェース540、入力装置541、記憶媒体550、I/Oインターフェース560、出力装置561、I/Oインターフェース570、外部記憶装置571を有する。
情報処理装置500は、例えばパーソナルコンピュータである。また、CPU510は中央演算処理装置であり、演算処理を行う。また、主記憶装置520はRAM(Random Access Memory)に代表される記憶装置である。
また、補助記憶装置530は、HDD(Hard disk drive)やSSD(solid state drive)に代表される記憶装置であり、各種のデータや、プログラムが格納される。
入力装置541は、利用者からの入力を受け付ける部分であり、具体的には、キーボード、マウス、タッチパネル等であり、I/Oインターフェース540を介して接続されている。
記録媒体550は、例えばCD(Compact Disc)やBD(Blu-ray Disc)であり、データの読み込みや、書き込みが可能な媒体である。
また、出力装置561は、ディスプレイ等のユーザーへ情報を提示するための装置であり、I/Oインターフェース560を介して接続されている。
外部記憶装置571は、例えばUSB規格に準拠したメモリやHDDであり、I/Oインターフェース570を介して接続されている。
本実施形態であるデータ処理装置100は、例えばCPU510が補助記憶装置530に格納されているプログラムを読み込み、CPU510が主記憶装置520を利用して動作することにより実現される。
また、入力情報200は、入力装置541から入力されてもよいし、補助記憶装置530、記録媒体550及び外部記憶装置571から読み込まれてもよい。
更に、出力情報300は、補助記憶装置530、記録媒体550及び外部記憶装置571に記録されてもよいし、記録されると共に出力装置561に表示されてもよい。
なお、パーソナルコンピュータでのデータ処理装置100の実現はあくまで一例であり、例えば専用の端末装置や、他の用途を有する装置に組み込まれることによりデータ処理装置100を実現させてもよい。
データ処理装置100は、前処理部101と、検出部102と、スケジューリング部103と、バインディング部104と、後処理部105とを含む。また、記憶装置400は、システム内部表現記憶部401を有している。
前処理部101は、入力情報200により与えられた動作レベルの回路記述を解析し、動作合成用の内部表現に変換すると共に最適化を行う機能を有する。
ここで、内部表現とは、動作レベルの回路記述を解析した後に、その解析結果を内部で保持する際に使用される表現を意味している。より具体的に言うと、内部表現とは、動作レベルの回路記述を解析した結果を抽象構文木(abstract syntax tree:AST)やコントロールデータフローグラフ(control data flow graph:CDFG)と呼ばれるデータ構造で保存する際の表現を意味している。なお、ASTやCDFGはあくまで具体的な一例に過ぎず、本実施形態の要旨を変更しない範囲で任意のデータ構造により保存することが可能である。
検出部102はレジスタの読み出し・書き込みポート数を数える機能を有する。例えば検出部102はレジスタ書き込みポート数をスケジューリング途中のデータ線の数から推定する。また、レジスタ読み出しポート数をスケジューリング後の書き込みノード(レジスタノード)の数から決定する。
また、スケジューリング部103は各処理を行うサイクルを決定する機能を有する。更に、バインディング部104は各処理の演算やメモリアクセスで実際にどの演算器やメモリを使用するかを決定する機能を有する。また、後処理部105は、データパス・FSM(Finite-State-Machine)の生成や最適化を実行した後、RTL記述を出力する機能を有する。
入力情報200は、利用者により用意されている、C言語などの抽象度の高い回路仕様が記述されている動作レベルの回路記述である。
また、後処理部105により出力されたRTL記述が、出力情報300である。
また、記憶装置400はRAM等の記憶装置であり、システム内部表現記憶部401を有している。そして、前処理部101、検出部102、スケジューリング部103、バインディング部104、後処理部105の各々の処理部は、必要に応じてシステムの内部表現を、記憶装置400のシステム内部表現記憶部401に対して、書き出しおよび読み込みを行う。
次に、図4のフローチャートを参照して第1の実施形態による動作合成システムの動作について詳細に説明する。
まず、利用者により用意されている、C言語などの抽象度の高い回路仕様が記述されている動作レベルの回路記述である入力情報200を入力される(ステップA1)。
入力情報200から与えられる動作レベルの回路記述は、データ処理装置100の前処理部101に供給される。前処理部101は、動作レベルの回路記述を解析し動作合成用の内部表現に変換すると共にその最適化を行う(ステップA2)。
データ処理装置100のスケジューリング部103・バインディング部104・検出部102は、CDFGでノードとして表現された演算やメモリアクセスや遷移などを順に処理し、スケジューリングしていないノードが残っているかを調べる(ステップA3)。
残っていない場合には(ステップA3においてNO)、後処理部105による後処理に進む(ステップA12)。一方、残っている場合には(ステップA3においてYES)、状態nにスケジューリングできるノードが残っているかを調べる(ステップA4)。
残っていない場合には(ステップA4においてNO)、バインディング部104によるバインディング処理を行う(ステップA10)。そして、次状態以降を処理対象として処理を継続する(ステップA11)。一方、残っている場合には(ステップA4においてYES)、スケジューリング部103によりスケジューリングしていないノードを選択する(ステップA5)。
次に、選択したノードをスケジューリングしたとき状態nのレジスタの読み出しポート数が制約を満たすか調べる(ステップA6)。
制約を満たさない場合(ステップA6においてNO)、スケジューリング部103が、選択したノードを次の状態以降にスケジューリングするよう処理する(ステップA9)。一方、制約を満たす場合(ステップA6においてYES)、状態nのレジスタの書き込みポート数が制約を満たすか調べる(ステップA7)。
書き込みポート数が制約を満たさない場合(ステップA7においてNO)、スケジューリング部103が、選択したノードを次の状態以降にスケジューリングするよう処理する(ステップA9)。一方、制約を満たす場合(ステップA7においてYES)、制約にしたがってスケジューリングする(ステップA8)。
最後に、後処理部105が処理を行い、処理結果をもとにRTL記述が生成され出力される(ステップA13)。
次に、本実施形態の効果について説明する。
本実施形態では、検出部102、スケジューリング部103及びバインディング部104がレジスタの読み出し・書き込みポート数制約を満たすよう動作するステップA6、A7を有している。そのため、本実施形態はレジスタの読み出し・書き込みポート数を制約したスケジューリングができるという効果を奏する。
図5のフローチャートを参照して第2の実施形態による動作合成システムの動作について詳細に説明する。
本実施形態による動作合成装置の構成は図3−1及び図3−2を参照して説明した第1の実施形態での動作合成装置の構成と同一であるので説明を省略する。
まず、利用者により用意されている、C言語などの抽象度の高い回路仕様が記述されている動作レベルの回路記述である入力情報200を入力される(ステップB1)。
入力情報200から与えられた動作レベルの回路記述は、データ処理装置100の前処理部101に供給される。前処理部101は、動作レベルの回路記述を解析し動作合成用の内部表現に変換すると共にその最適化を行う(ステップB2)。
データ処理装置100のスケジューリング部103・バインディング部104・検出部102は、CDFGでノードとして表現された演算やメモリアクセスや遷移などを順に処理し、スケジューリングしていないノードが残っているかを調べる(ステップB3)。
残っていない場合には(ステップB3においてNO)、後処理部105による後処理に進み(ステップB14)、一方、残っている場合には(ステップB3においてYES)、状態nにスケジューリングできるノードが残っているかを調べる(ステップB4)。
残っていない場合には(ステップB4においてNO)、バインディング部104によるバインディング処理を行う(ステップB12)。そして、次状態以降を処理対象として処理を継続する(ステップB13)。一方、残っている場合には(ステップB4においてYES)、スケジューリング部103によりスケジューリングしていないノードを選択する(ステップB5)。
次に、選択したノードをスケジューリングしたとき状態nのレジスタの読み出しポート数が制約を満たすか調べる(ステップB6)。
制約を満たさない場合(ステップB6においてNO)、状態nより前の状態のレジスタ共有を変えると状態nのレジスタ読み出しポート数が制約を満たすかどうか調べる(ステップB9)。制約を満たす場合(ステップB9においてYES)、状態nより前の状態のレジスタ共有を変更する(ステップB10)。一方、制約を満たさない場合(ステップB9においてNO)、選択したノードを次の状態以降にスケジューリングするよう処理する(ステップB11)。
選択したノードをスケジューリングしたとき状態nのレジスタの読み出しポート数が制約を満たす場合(ステップB6おいてYES)、状態nのレジスタの書き込みポート数が制約を満たすか調べる(ステップB7)。
書き込みポート数が制約を満たさない場合(ステップB7においてNO)、選択したノードを次の状態以降にスケジューリングするよう処理する(ステップB11)。一方、制約を満たす場合(ステップB7においてYES)、スケジューリング部103が、制約にしたがってスケジューリングする(ステップB8)。
最後に、後処理部105が処理を行い、処理結果をもとにRTL記述が生成され出力される(ステップB15)。
次に、本実施形態の効果について説明する。
本実施形態では、検出部102、スケジューリング部103及びバインディング部104がレジスタの読み出し・書き込みポート数制約を満たすよう動作するステップB6、B7を有している。そのため、本実施形態はレジスタの読み出し・書き込みポート数を制約したスケジューリングができるという効果を奏する。これは、面積を小さくするためにレジスタ共有を行なう一般的な動作合成装置とは異なり、本実施形態のみの特有の特徴である。また、状態nより前の状態のレジスタ共有を変更するステップB10を有しているため、制約を満たすために状態数が増加するのを抑えることができる。
次に、具体的な実施例を用いて本発明の実施形態の動作を説明する。
まず、動作説明に先立ち、図6を参照してスケジューリング時のレジスタ読み出し・書き込みポート数のカウントについて説明する。
図6(a)に示すようなノードを順にスケジューリングする。
図6(b)に示すように一つ目のノード601をスケジューリングすると、状態nにおけるレジスタ読み出しはノードAとBなのでレジスタ読み出しポート数は2となる。また、レジスタ書き込みは確定していないが、ノード601の出力がレジスタノード603になると仮定し、レジスタ書き込みポート数を1とカウントする。
図6(c)に示すように二つ目のノード602をスケジューリングすると、状態nにおけるレジスタ読み出しはノードAとBとCとDなのでレジスタ読み出しポート数は4となる。また、レジスタ書き込みは確定していないが、ノード601、602の出力がレジスタノード603、604になると仮定し、レジスタ書き込みポート数を2とカウントする。
図7を参照し、演算ノードがツリーを構成するような場合のスケジューリング時のレジスタ読み出し・書き込みポート数のカウントについて説明する。
図7(a)に示すようなノードを順にスケジューリングする。
図7(b)に示すように一つ目のノード701をスケジューリングすると、状態nにおけるレジスタ読み出しはノードAとBなのでレジスタ読み出しポート数は2となる。また、レジスタ書き込みは確定していないが、ノード701の出力がレジスタノード704になると仮定し、レジスタ書き込みポート数を1とカウントする。
図7(c)に示すように二つ目のノード702をスケジューリングすると、状態nにおけるレジスタ読み出しはノードAとBとCとDなのでレジスタ読み出しポート数は4となる。また、レジスタ書き込みは確定していないが、ノード701、702の出力がレジスタノード704、705になると仮定し、レジスタ書き込みポート数を2とカウントする。
図7(d)に示すように三つ目のノード703をスケジューリングすると、状態nにおけるレジスタ読み出しはノードAとBとCとDなのでレジスタ読み出しポート数は4となる。また、レジスタ書き込みは確定していないが、ノード703の出力がレジスタノード706になると仮定し、レジスタ書き込みポート数を1とカウントする。
図8を参照し、演算結果がメモリに格納される場合のスケジューリング時のレジスタ読み出し・書き込みポート数のカウントについて説明する。
図8(a)に示すようなノードを順にスケジューリングする。
図8(b)に示すように一つ目のノード801をスケジューリングすると、状態nにおけるレジスタ読み出しはノードAとBなのでレジスタ読み出しポート数は2となる。また、レジスタ書き込みは確定していないが、ノード801の出力がレジスタノード805になると仮定し、レジスタ書き込みポート数を1とカウントする。
図8(c)に示すように二つ目のノード802をスケジューリングすると、状態nにおけるレジスタ読み出しはノードAとBとCとDなのでレジスタ読み出しポート数は4となる。また、レジスタ書き込みは確定していないが、ノード801、802の出力がレジスタノード805、806になると仮定し、レジスタ書き込みポート数を2とカウントする。
図8(d)に示すように三つ目のノード803をスケジューリングすると、状態nにおけるレジスタ読み出しはノードAとBとCとDなのでレジスタ読み出しポート数は4となる。また、ノード803の出力がメモリノード804に接続されるので、レジスタ書き込みポート数を0とカウントする。
次に、本発明の第1の実施例について図面を参照して説明する。この第1の実施例は、本発明の第1の実施形態に対応するものである。
図9を参照し、各状態でのレジスタ読み出し・書き込みポート数の制約がそれぞれ2の場合のスケジューリングについて説明する。
図9(a)に示すようなノードを順にスケジューリングする。
図9(b)に示すように一つ目のノード901をスケジューリングすると、状態nにおけるレジスタ読み出しポート数は2、書き込みポート数は1となる。これはレジスタ読み出し・書き込みポート数がそれぞれ2という制約を満たしている(ステップA8に相当)。
図9(c)に示すように二つ目のノード902をスケジューリングすると、状態nにおけるレジスタ読み出しポート数は4、書き込みポート数は2となる。これはレジスタ読み出し・書き込みポート数がそれぞれ2という制約を満たしておらず、ノード902を状態nにスケジューリングすることはできない(ステップA6及びステップA9に相当)。
図9(d)に示すように二つ目のノード902をスケジューリングすると、状態nにおけるレジスタ読み出しポート数は2、書き込みポート数は1、状態n+1におけるレジスタ読み出しポート数は2、書き込みポート数は1となる。これはレジスタ読み出し・書き込みポート数がそれぞれ2という制約を満たしている(ステップA8に相当)。
次に、本発明の第2の実施例について図面を参照して説明する。この第2の実施例は、本発明の第1の実施形態に対応するものである。
図10を参照し、各状態でのレジスタ読み出し・書き込みポート数がそれぞれ4に制約されている場合のスケジューリングについて説明する。
図10(a)に示すようなノードを順にスケジューリングする。
図10(b)に示すように一つ目のノード1001をスケジューリングすると、状態nにおけるレジスタ読み出しポート数は2、書き込みポート数は1となる。これはレジスタ読み出し・書き込みポート数がそれぞれ4という制約を満たしている(ステップA8に相当)。
図10(c)に示すように二つ目のノード1002をスケジューリングすると、状態nにおけるレジスタ読み出しポート数は4、書き込みポート数は2となる。これはレジスタ読み出し・書き込みポート数がそれぞれ4という制約を満たしている (ステップA8に相当)。
図10(d)に示すように三つ目のノード1003をスケジューリングすると、状態nにおけるレジスタ読み出しポート数は6、書き込みポート数は3となる。これはレジスタ読み出し・書き込みポート数がそれぞれ4という制約を満たしておらず、ノード1003を状態nにスケジューリングすることはできない(ステップA6、ステップA9に相当)。
図10(e)に示すようにノード1004をスケジューリングすると、状態nにおけるレジスタ読み出しポート数は4、書き込みポート数は1となる。これはレジスタ読み出し・書き込みポート数がそれぞれ4という制約を満たしている(ステップA8に相当)。
次に、本発明の第3の実施例について図面を参照して説明する。この第3の実施例は、本発明の第2の実施形態に対応するものである。
図11(a)に示すような条件分岐のある動作レベル回路記述を合成する場合、図11(b)に示すようなCDFGが生成され、スケジューリングされる。
図12の(a)と(b)は図11の記述を合成する際にノード1201とノード1203をそれぞれ異なるレジスタで実現した場合のCDFGと回路を示している。
図13の(a)と(b)は図11の記述を合成する際にノード1301とノード1303を同一レジスタで実現した場合のCDFGと回路を示している。
図12の状態n+1のスケジューリングにおいてレジスタ読み出しポート数の制約が4の場合、このCDFGにあらわされていない部分で既にレジスタ読み出しポートが1個使用されていると、状態n+1のレジスタ読み出しポート数が4を超えてしまうので、図12の(a)のようなスケジューリングを実現することができない。このようなとき、図5のステップB9の判定でノード1301とノード1303が共有できると判定されると、図13の(a)のようにスケジューリングできる。
なお、本発明の実施形態である動作合成装置は、ハードウェアにより実現することもできるが、コンピュータをその動作合成装置として機能させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現することができる。
また、本発明の実施形態による動作合成方法は、ハードウェアにより実現することもできるが、コンピュータにその方法を実行させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現することができる。
また、上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
以上説明した本発明の実施形態は、以下に示すような効果を奏する。
本実施形態によれば、半導体集積回路装置の動作を記述した動作レベル回路記述から具体的な機能(回路)を記述したRTL回路記述を生成する際に、レジスタの読み出し・書き込みポート数を制約することから、ハードウェアの制約を満たした合成をすることが可能となる。
また、例えば特許文献2に記載されているようなマルチコンテキスト型再構成デバイスにおいて、レジスタの読み出し・書き込みポート数制約を満たしつつレジスタファイルを使用できるため、レジスタポート数を減らせ、結果として構成情報メモリ量も減らすことができる。
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
(付記1) 半導体集積回路方法の動作を記述した動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成方法において、
レジスタの読み出し・書き込みポート数の制約を決定し当該制約を満たすように前記抽象度の低い回路記述を生成する際のスケジューリング・バインディング処理を行うことを特徴とする動作合成方法。
(付記2) 付記1に記載の動作合成方法において、
演算タイミングを調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たすことを特徴とする動作合成方法。
(付記3) 付記1又は2に記載の動作合成方法において、
前記動作レベルの回路記述を解析し、前記動作合成用の内部表現に変換する前処理ステップと、
前記内部表現に基づいてレジスタの読み出し・書き込みポート数を検出する検出ステップと、
現在スケジューリング対象としている状態である状態nにスケジューリング対象のノードである対象ノードが存在している場合に、前記制約を満たすのであれば当該対象ノードを当該状態nにスケジューリングし、前記制約を満たさないのであれば当該状態nの次の状態以降に当該対象ノードをスケジューリングするスケジューリングステップと、
前記スケジューリングステップによるスケジューリング結果に従って前記バインディング処理を実行するバインディングステップと、
前記バインディングステップの処理結果に基づいて抽象度の低い回路記述を生成する後処理ステップと、
を備えることを特徴とする動作合成方法。
(付記4) 付記1に記載の動作合成方法において、
スケジューリング対象より前の状態のレジスタ共有を調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たすことを特徴とする動作合成方法。
(付記5) 付記1又は2に記載の動作合成方法において、
前記動作レベルの回路記述を解析し、前記動作合成用の内部表現に変換する前処理ステップと、
前記内部表現に基づいてレジスタの読み出し・書き込みポート数を検出する検出ステップと、
現在スケジューリング対象としている状態である状態nにスケジューリング対象のノードである対象ノードが存在している場合であって、且つ、前記レジスタの読み出しポートについて前記制約を満たさないが当該状態n以前の状態におけるレジスタ共有を調整することにより前記レジスタの読み出しポートについて前記制約を満たす場合は、前記レジスタ共有を調整するスケジューリングステップと、
前記スケジューリングステップによるスケジューリング結果に従って前記バインディング処理を実行するバインディングステップと、
前記バインディングステップの処理結果に基づいて抽象度の低い回路記述を生成する後処理ステップと、
を備えることを特徴とする動作合成方法。
(付記6) 付記1乃至5の何れかに記載の動作合成方法において、レジスタ書き込みポート数をスケジューリング途中のデータ線の数から推定することを特徴とする動作合成方法。
(付記7) 付記1乃至6の何れかに記載の動作合成方法において、レジスタ読み出しポート数をスケジューリング後の書き込みノードの数から決定することを特徴とする動作合成方法。
(付記8)付記1乃至7の何れかに記載の動作合成方法において、レジスタがレジスタファイルで構成されていることを特徴とする動作合成方法。
(付記9) 半導体集積回路プログラムの動作を記述した動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成装置に組み込まれる動作合成プログラムにおいて、
レジスタの読み出し・書き込みポート数の制約を決定し当該制約を満たすように前記抽象度の低い回路記述を生成する際のスケジューリング・バインディング処理を行う動作合成装置としてコンピュータを機能させることを特徴とする動作合成プログラム。
(付記10) 付記9に記載の動作合成プログラムにおいて、
演算タイミングを調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たすことを特徴とする動作合成プログラム。
(付記11) 付記9又は10に記載の動作合成プログラムにおいて、
前記動作レベルの回路記述を解析し、前記動作合成用の内部表現に変換する前処理手段と、
前記内部表現に基づいてレジスタの読み出し・書き込みポート数を検出する検出手段と、
現在スケジューリング対象としている状態である状態nにスケジューリング対象のノードである対象ノードが存在している場合に、前記制約を満たすのであれば当該対象ノードを当該状態nにスケジューリングし、前記制約を満たさないのであれば当該状態nの次の状態以降に当該対象ノードをスケジューリングするスケジューリング手段と、
前記スケジューリング手段によるスケジューリング結果に従って前記バインディング処理を実行するバインディング手段と、
前記バインディング手段の処理結果に基づいて抽象度の低い回路記述を生成する後処理手段と、
を備えることを特徴とする動作合成プログラム。
(付記12) 付記9に記載の動作合成プログラムにおいて、
スケジューリング対象より前の状態のレジスタ共有を調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たすことを特徴とする動作合成プログラム。
(付記13) 付記9又は10に記載の動作合成プログラムにおいて、
前記動作レベルの回路記述を解析し、前記動作合成用の内部表現に変換する前処理手段と、
前記内部表現に基づいてレジスタの読み出し・書き込みポート数を検出する検出手段と、
現在スケジューリング対象としている状態である状態nにスケジューリング対象のノードである対象ノードが存在している場合であって、且つ、前記レジスタの読み出しポートについて前記制約を満たさないが当該状態n以前の状態におけるレジスタ共有を調整することにより前記レジスタの読み出しポートについて前記制約を満たす場合は、前記レジスタ共有を調整するスケジューリング手段と、
前記スケジューリング手段によるスケジューリング結果に従って前記バインディング処理を実行するバインディング手段と、
前記バインディング手段の処理結果に基づいて抽象度の低い回路記述を生成する後処理手段と、
を備えることを特徴とする動作合成プログラム。
(付記14) 付記9乃至13の何れかに記載の動作合成プログラムにおいて、レジスタ書き込みポート数をスケジューリング途中のデータ線の数から推定することを特徴とする動作合成プログラム。
(付記15) 付記9乃至14の何れか1項に記載の動作合成プログラムにおいて、レジスタ読み出しポート数をスケジューリング後の書き込みノードの数から決定することを特徴とする動作合成プログラム。
(付記16) 付記9乃至15の何れかに記載の動作合成プログラムにおいて、レジスタがレジスタファイルで構成されていることを特徴とする動作合成プログラム。
100 データ処理装置
101 前処理部
102 検出部
103 スケジューリング部
104 バインディング部
105 後処理部
200 入力情報
300 出力情報
400 記憶装置
401 システム内部表現記憶部
500 情報処理装置
510 CPU
520 主記憶装置
530 補助記憶装置
540、560、570 I/Oインターフェース
541 入力装置
550 記憶媒体
561 出力装置
571 外部記憶装置
601〜604、701〜706、801〜806、901〜904、1001〜1008、1201〜1204 レジスタノード

Claims (7)

  1. 半導体集積回路装置の動作を記述した動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成装置において、
    レジスタの読み出し・書き込みポート数の制約を決定し当該制約を満たすように前記抽象度の低い回路記述を生成する際のスケジューリング・バインディング処理を行う時に、スケジューリング対象より前の状態のレジスタ共有を調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たすことを特徴とする動作合成装置。
  2. 請求項1に記載の動作合成装置において、
    前記動作レベルの回路記述を解析し、前記動作合成用の内部表現に変換する前処理手段と、
    前記内部表現に基づいてレジスタの読み出し・書き込みポート数を検出する検出手段と、
    現在スケジューリング対象としている状態である状態nにスケジューリング対象のノードである対象ノードが存在している場合であって、且つ、前記レジスタの読み出しポートについて前記制約を満たさないが当該状態n以前の状態におけるレジスタ共有を調整することにより前記レジスタの読み出しポートについて前記制約を満たす場合は、前記レジスタ共有を調整するスケジューリング手段と、
    前記スケジューリング手段によるスケジューリング結果に従って前記バインディング処理を実行するバインディング手段と、
    前記バインディング手段の処理結果に基づいて抽象度の低い回路記述を生成する後処理手段と、
    を備えることを特徴とする動作合成装置。
  3. 請求項2に記載の動作合成装置において、
    前記スケジューリング手段は、現在スケジューリング対象としている状態である状態nにスケジューリング対象のノードである対象ノードが存在している場合に、前記制約を満たすのであれば当該対象ノードを当該状態nにスケジューリングし、
    更に前記スケジューリング手段は、現在スケジューリング対象としている状態である状態nにスケジューリング対象のノードである対象ノードが存在している場合に、前記レジスタの読み出しポートについて前記制約を満たさず、当該状態n以前の状態におけるレジスタ共有を調整することによっても前記レジスタの読み出しポートについて前記制約を満たさないのであれば当該状態nの次の状態以降に当該対象ノードをスケジューリングすることを特徴とする動作合成装置。
  4. 請求項1乃至3の何れか1項に記載の動作合成装置において、或る状態におけるレジスタ書き込みポート数を前記或る状態でのスケジューリング済みのデータ線の数から推定することを特徴とする動作合成装置。
  5. 請求項1乃至の何れか1項に記載の動作合成装置において、レジスタがレジスタファイルで構成されていることを特徴とする動作合成装置。
  6. 半導体集積回路装置の動作を記述した動作レベルの回路記述から、抽象度の低い回路記述を生成するための装置である動作合成装置が行う動作合成方法において、
    レジスタの読み出し・書き込みポート数の制約を決定し当該制約を満たすように前記抽象度の低い回路記述を生成する際のスケジューリング・バインディング処理を行う時に、スケジューリング対象より前の状態のレジスタ共有を調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たすことを特徴とする動作合成方法。
  7. 半導体集積回路装置の動作を記述した動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成装置に組み込まれる動作合成プログラムにおいて、
    レジスタの読み出し・書き込みポート数の制約を決定し当該制約を満たすように前記抽象度の低い回路記述を生成する際のスケジューリング・バインディング処理を行う時に、スケジューリング対象より前の状態のレジスタ共有を調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たす動作合成装置としてコンピュータを機能させることを特徴とする動作合成プログラム。
JP2010033612A 2010-02-18 2010-02-18 動作合成装置、動作合成方法、及び、動作合成プログラム Active JP5467512B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010033612A JP5467512B2 (ja) 2010-02-18 2010-02-18 動作合成装置、動作合成方法、及び、動作合成プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010033612A JP5467512B2 (ja) 2010-02-18 2010-02-18 動作合成装置、動作合成方法、及び、動作合成プログラム

Publications (2)

Publication Number Publication Date
JP2011170602A JP2011170602A (ja) 2011-09-01
JP5467512B2 true JP5467512B2 (ja) 2014-04-09

Family

ID=44684666

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010033612A Active JP5467512B2 (ja) 2010-02-18 2010-02-18 動作合成装置、動作合成方法、及び、動作合成プログラム

Country Status (1)

Country Link
JP (1) JP5467512B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6255880B2 (ja) 2013-10-10 2018-01-10 株式会社ソシオネクスト 高位合成用データ生成装置、高位合成装置、高位合成用データ生成方法及びプログラム

Also Published As

Publication number Publication date
JP2011170602A (ja) 2011-09-01

Similar Documents

Publication Publication Date Title
TWI512625B (zh) 程式化平行機及電腦實施方法、電腦可讀媒體、電腦及將原始程式碼轉換為機器碼以程式化一平行機之系統
JP5312151B2 (ja) 半導体設計支援装置、高位合成方法及び半導体設計支援プログラム
JP2013512511A (ja) 複数メモリ特定用途向けデジタル信号プロセッサ
JP5029096B2 (ja) 電源ノイズモデル生成方法及び電源ノイズモデル生成装置
JP4554509B2 (ja) タイミング解析装置及びタイミング解析手法
JP2008186252A (ja) テストベンチ生成機能を有する動作合成装置と方法及びプログラム
JP5467512B2 (ja) 動作合成装置、動作合成方法、及び、動作合成プログラム
JP2008299464A (ja) 消費電力計算方法、消費電力計算プログラムおよび消費電力計算装置
US20110283131A1 (en) Computer-readable recording medium, method, and apparatus for calculating power consumption information
JP4870956B2 (ja) 組み込み用プログラム生成方法、組み込み用プログラム開発システム、及び情報テーブル部
JP5979965B2 (ja) 回路設計支援装置及び回路設計支援方法及びプログラム
JP4730536B2 (ja) 動作合成システム、動作合成方法およびプログラム
JP2018041301A (ja) Rtl最適化システム及びrtl最適化プログラム
JP5545054B2 (ja) デバッグ回路及びデバッグシステム
JP5262678B2 (ja) 動作合成システム、動作合成方法、及び動作合成用プログラム
JP2008204341A (ja) インタフェース合成装置
JP5903814B2 (ja) 半導体回路性能見積装置、その方法及びそのプログラム
Kamal et al. Design of NBTI-resilient extensible processors
JP2007018313A (ja) 回路設計プログラム、回路設計装置、回路設計方法
JP5310312B2 (ja) 集積回路の消費電力検証方法
Casale-Brunet et al. Design space exploration and implementation of RVC-CAL applications using the TURNUS framework
CN113688587B (zh) 一种电路布图的生成方法、装置、计算机设备及存储介质
JP2011090518A (ja) 高位合成装置、高位合成方法、及び高位合成プログラム
JP7026563B2 (ja) 高位合成方法、高位合成プログラム、高位合成装置
JP2011022863A (ja) 動作合成装置及び動作合成方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130212

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20130801

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130807

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131002

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20131023

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131211

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

R150 Certificate of patent or registration of utility model

Ref document number: 5467512

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140119