(57)【特許請求の範囲】
【請求項１】
半導体集積回路装置の動作を記述した動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成装置において、
レジスタの読み出し・書き込みポート数の制約を決定し当該制約を満たすように前記抽象度の低い回路記述を生成する際のスケジューリング・バインディング処理を行う時に、スケジューリング対象より前の状態のレジスタ共有を調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たすことを特徴とする動作合成装置。
【請求項２】
請求項１に記載の動作合成装置において、
前記動作レベルの回路記述を解析し、前記動作合成用の内部表現に変換する前処理手段と、
前記内部表現に基づいてレジスタの読み出し・書き込みポート数を検出する検出手段と、
現在スケジューリング対象としている状態である状態ｎにスケジューリング対象のノードである対象ノードが存在している場合であって、且つ、前記レジスタの読み出しポートについて前記制約を満たさないが当該状態ｎ以前の状態におけるレジスタ共有を調整することにより前記レジスタの読み出しポートについて前記制約を満たす場合は、前記レジスタ共有を調整するスケジューリング手段と、
前記スケジューリング手段によるスケジューリング結果に従って前記バインディング処理を実行するバインディング手段と、
前記バインディング手段の処理結果に基づいて抽象度の低い回路記述を生成する後処理手段と、
を備えることを特徴とする動作合成装置。
【請求項３】
請求項２に記載の動作合成装置において、
前記スケジューリング手段は、現在スケジューリング対象としている状態である状態ｎにスケジューリング対象のノードである対象ノードが存在している場合に、前記制約を満たすのであれば当該対象ノードを当該状態ｎにスケジューリングし、
更に前記スケジューリング手段は、現在スケジューリング対象としている状態である状態ｎにスケジューリング対象のノードである対象ノードが存在している場合に、前記レジスタの読み出しポートについて前記制約を満たさず、当該状態ｎ以前の状態におけるレジスタ共有を調整することによっても前記レジスタの読み出しポートについて前記制約を満たさないのであれば当該状態ｎの次の状態以降に当該対象ノードをスケジューリングすることを特徴とする動作合成装置。
【請求項４】
請求項１乃至３の何れか１項に記載の動作合成装置において、或る状態におけるレジスタ書き込みポート数を前記或る状態でのスケジューリング済みのデータ線の数から推定することを特徴とする動作合成装置。
【請求項５】
請求項１乃至４の何れか１項に記載の動作合成装置において、レジスタがレジスタファイルで構成されていることを特徴とする動作合成装置。
【請求項６】
半導体集積回路装置の動作を記述した動作レベルの回路記述から、抽象度の低い回路記述を生成するための装置である動作合成装置が行う動作合成方法において、
レジスタの読み出し・書き込みポート数の制約を決定し当該制約を満たすように前記抽象度の低い回路記述を生成する際のスケジューリング・バインディング処理を行う時に、スケジューリング対象より前の状態のレジスタ共有を調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たすことを特徴とする動作合成方法。
【請求項７】
半導体集積回路装置の動作を記述した動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成装置に組み込まれる動作合成プログラムにおいて、
レジスタの読み出し・書き込みポート数の制約を決定し当該制約を満たすように前記抽象度の低い回路記述を生成する際のスケジューリング・バインディング処理を行う時に、スケジューリング対象より前の状態のレジスタ共有を調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たす動作合成装置としてコンピュータを機能させることを特徴とする動作合成プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置の動作を記述した動作レベル回路記述に関し、より詳細には、動作レベル回路記述から具体的な機能（回路）を記述したＲＴＬ回路記述を生成する動作合成に関する。
【背景技術】
【０００２】
近年、半導体回路の回路規模が増大しているため、半導体回路の設計の際の手間や時間を削減するために様々な手法が用いられている。このような手法の１つとして、動作レベルの回路記述から、ＲＴＬ（Register Transfer Level）等の抽象度の低い回路記述を合成するための動作合成装置が提案されている。
【０００３】
例えば特許文献１に記載の技術では、動作合成手段１１０が、動作レベル記述記憶部２１０に記憶された動作レベル記述に対し、制約記憶部２６０に記憶された遅延、消費電力、面積等の制約を満たすように動作合成を実行する（特許文献１の明細書段落番号［００２３］等参照）。
【０００４】
このような動作合成装置を用いることにより、ハードウェアの動作を表現しただけの動作レベルの回路記述から、ハードウェアの動作順序やデータパスの構成等を自動的に設計することが可能となる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００８−１７６４８６号公報
【特許文献２】特開２００３−９９４０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
上述したような技術を用いることによりハードウェアの動作順序やデータパスの構成等を自動的に設計することが可能となる。
【０００７】
しかしながら上述したような一般的な技術による動作合成では、レジスタの読み出し・書き込みポート数を制約する機能を備えていない。特許文献１に記載の技術を例に取れば、制約抽出手段１５０が、更に、各モジュールの入力端子数制約、出力端子数制約を追加することは可能であるがレジスタの読み出し・書き込みポート数を制約することはできない。
【０００８】
そして、レジスタの読み出し・書き込みポート数を制約できない場合は或る問題が生じる。この問題について図１及び２を参照して詳細に説明する。
【０００９】
例えば、図１（ｂ）のような四つのレジスタで構成する場合、図１（ａ）のように二つの演算をスケジューリングすることができる。一方、図１（ｄ）のようなアドレス指定により複数のレジスタを選択できるレジスタファイルで構成する場合、レジスタ数は４個なので足りている。しかし、入力ポート数が足りなくなるため、図１（ａ）のようなスケジューリングはできず、図１（ｃ）のようにスケジューリングしなければならないという問題が生じる。
【００１０】
この点、演算器数とレジスタポート数の間には相関があるため、通常の動作合成で備えている演算器数制約によりレジスタの読み出し・書き込みポート数を制約することも可能であるが、この方式では必ず制約できるか否か不正確である。
【００１１】
例えば、図２（ａ）のように入出力数がそれぞれ１の演算器の場合、レジスタの読み出し・書き込みポート数と演算器数は１対１となる。しかし、図２（ｂ）のように入力数１、出力数２の演算器の場合、レジスタの読み出し・書き込みポート数と演算器数は１対１ではない。また、図２（ｃ）のようにレジスタからメモリへの書き込みやレジスタ間の転送がある場合、レジスタの読み出し・書き込みポート数と演算器数は１対１ではない。このことから、演算器数制約によりレジスタの読み出し・書き込みポート数を正確に制約することはできないことは明らかである。
【００１２】
本発明は、上記問題に鑑みてなされたものであり、半導体集積回路装置の動作を記述した動作レベル回路記述から具体的な機能（回路）を記述したＲＴＬ回路記述を生成する際に、レジスタの読み出し・書き込みポート数を制約することが可能な、動作合成装置、動作合成方法、及び、これらをコンピュータにて実現するためのプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１３】
本発明の第１の観点によれば、半導体集積回路装置の動作を記述した動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成装置において、レジスタの読み出し・書き込みポート数の制約を決定し当該制約を満たすように前記抽象度の低い回路記述を生成する際のスケジューリング・バインディング処理を行う時に、スケジューリング対象より前の状態のレジスタ共有を調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たすことを特徴とする動作合成装置が提供される。
【００１４】
本発明の第２の観点によれば、半導体集積回路装置の動作を記述した動作レベルの回路記述から、抽象度の低い回路記述を生成するための装置である動作合成装置が行う動作合成方法において、レジスタの読み出し・書き込みポート数の制約を決定し当該制約を満たすように前記抽象度の低い回路記述を生成する際のスケジューリング・バインディング処理を行う時に、スケジューリング対象より前の状態のレジスタ共有を調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たすことを特徴とする動作合成方法が提供される。
【００１５】
本発明の第３の観点によれば、半導体集積回路装置の動作を記述した動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成装置に組み込まれる動作合成プログラムにおいて、
レジスタの読み出し・書き込みポート数の制約を決定し当該制約を満たすように前記抽象度の低い回路記述を生成する際のスケジューリング・バインディング処理を行う時に、スケジューリング対象より前の状態のレジスタ共有を調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たす動作合成装置としてコンピュータを機能させることを特徴とする動作合成プログラムが提供される。
【発明の効果】
【００１６】
本発明によれば、半導体集積回路装置の動作を記述した動作レベル回路記述から具体的な機能（回路）を記述したＲＴＬ回路記述を生成する際に、レジスタの読み出し・書き込みポート数を制約することから、ハードウェアの制約を満たした合成をすることが可能となる。
【図面の簡単な説明】
【００１７】
【図１】本発明に関連する背景技術の問題点を説明するための図（１／２）である。
【図２】本発明に関連する背景技術の問題点を説明するための図（２／２）である。
【図３−１】本発明の第１の実施形態及び第２の実施形態による動作合成システムの構成を示すブロック図である。
【図３−２】本発明の第１の実施形態及び第２の実施形態による動作合成システムのハードウェア構成の一例を示すブロック図である。
【図４】本発明の第１の実施形態による動作合成システムにおける基本的動作を示すフローチャートである。
【図５】本発明の第２の実施形態による動作合成システムにおける基本的動作を示すフローチャートである。
【図６】スケジューリング時のレジスタ読み出し・書き込みポート数のカウントについて説明するための図である。
【図７】演算ノードがツリーを構成するような場合のスケジューリング時のレジスタ読み出し・書き込みポート数のカウントについて説明するための図である。
【図８】演算結果がメモリに格納される場合のスケジューリング時のレジスタ読み出し・書き込みポート数のカウントについて説明するための図である。
【図９】第１の実施例におけるスケジューリングを説明するための図である。
【図１０】第２の実施例におけるスケジューリングを説明するための図である。
【図１１】第３の実施例における合成対象の記述とＣＤＦＧ（control data flow graph）を説明するための図である。
【図１２】第３の実施例におけるスケジューリング・バインディング例を説明するための図である。
【図１３】第３の実施例におけるスケジューリング・バインディング例を説明するための図である。
【発明を実施するための形態】
【００１８】
次に、発明を実施するための形態について図面を参照して詳細に説明する。
【００１９】
まず、本発明の第１の実施形態による動作合成システムについて図面を参照して詳細に説明する。
【００２０】
図３−１は、本発明の第１の実施形態による動作合成システムの構成を示すブロック図である。
【００２１】
図３−１を参照すると、本発明の第１の実施形態による動作合成システムは、プログラム制御により動作するデータ処理装置１００と、入力情報２００と、出力情報３００と記憶装置４００を有している。
【００２２】
データ処理装置１００は、ＣＰＵ（Central Processing Unit）等に代表される演算装置（プロセッサ）等のハードウェア資源がソフトウェア（プログラム）を読み込むことにより実現される。
【００２３】
すなわち、ソフトウェアがコンピュータに組み込まれることにより、ソフトウェアとハードウェア資源とが協働した具体的部によって、使用目的に応じた情報の演算または加工を実現することにより、使用目的に応じた特有の情報処理装置（機械）またはその動作方法が構築されているものといえる。
【００２４】
具体的なデータ処理装置１００の実装例として情報処理装置５００を図３−２に示す。
【００２５】
情報処理装置５００は、ＣＰＵ５１０、主記憶装置５２０、補助記憶装置５３０、Ｉ／Ｏインターフェース５４０、入力装置５４１、記憶媒体５５０、Ｉ／Ｏインターフェース５６０、出力装置５６１、Ｉ／Ｏインターフェース５７０、外部記憶装置５７１を有する。
【００２６】
情報処理装置５００は、例えばパーソナルコンピュータである。また、ＣＰＵ５１０は中央演算処理装置であり、演算処理を行う。また、主記憶装置５２０はＲＡＭ（Random Access Memory）に代表される記憶装置である。
【００２７】
また、補助記憶装置５３０は、ＨＤＤ（Hard disk drive）やＳＳＤ（solid state drive）に代表される記憶装置であり、各種のデータや、プログラムが格納される。
【００２８】
入力装置５４１は、利用者からの入力を受け付ける部分であり、具体的には、キーボード、マウス、タッチパネル等であり、Ｉ／Ｏインターフェース５４０を介して接続されている。
【００２９】
記録媒体５５０は、例えばＣＤ（Compact Disc）やＢＤ（Blu-ray Disc）であり、データの読み込みや、書き込みが可能な媒体である。
【００３０】
また、出力装置５６１は、ディスプレイ等のユーザーへ情報を提示するための装置であり、Ｉ／Ｏインターフェース５６０を介して接続されている。
【００３１】
外部記憶装置５７１は、例えばＵＳＢ規格に準拠したメモリやＨＤＤであり、Ｉ／Ｏインターフェース５７０を介して接続されている。
【００３２】
本実施形態であるデータ処理装置１００は、例えばＣＰＵ５１０が補助記憶装置５３０に格納されているプログラムを読み込み、ＣＰＵ５１０が主記憶装置５２０を利用して動作することにより実現される。
【００３３】
また、入力情報２００は、入力装置５４１から入力されてもよいし、補助記憶装置５３０、記録媒体５５０及び外部記憶装置５７１から読み込まれてもよい。
【００３４】
更に、出力情報３００は、補助記憶装置５３０、記録媒体５５０及び外部記憶装置５７１に記録されてもよいし、記録されると共に出力装置５６１に表示されてもよい。
【００３５】
なお、パーソナルコンピュータでのデータ処理装置１００の実現はあくまで一例であり、例えば専用の端末装置や、他の用途を有する装置に組み込まれることによりデータ処理装置１００を実現させてもよい。
【００３６】
データ処理装置１００は、前処理部１０１と、検出部１０２と、スケジューリング部１０３と、バインディング部１０４と、後処理部１０５とを含む。また、記憶装置４００は、システム内部表現記憶部４０１を有している。
【００３７】
前処理部１０１は、入力情報２００により与えられた動作レベルの回路記述を解析し、動作合成用の内部表現に変換すると共に最適化を行う機能を有する。
【００３８】
ここで、内部表現とは、動作レベルの回路記述を解析した後に、その解析結果を内部で保持する際に使用される表現を意味している。より具体的に言うと、内部表現とは、動作レベルの回路記述を解析した結果を抽象構文木（abstract syntax tree：ＡＳＴ）やコントロールデータフローグラフ（control data flow graph：ＣＤＦＧ）と呼ばれるデータ構造で保存する際の表現を意味している。なお、ＡＳＴやＣＤＦＧはあくまで具体的な一例に過ぎず、本実施形態の要旨を変更しない範囲で任意のデータ構造により保存することが可能である。
【００３９】
検出部１０２はレジスタの読み出し・書き込みポート数を数える機能を有する。例えば検出部１０２はレジスタ書き込みポート数をスケジューリング途中のデータ線の数から推定する。また、レジスタ読み出しポート数をスケジューリング後の書き込みノード（レジスタノード）の数から決定する。
【００４０】
また、スケジューリング部１０３は各処理を行うサイクルを決定する機能を有する。更に、バインディング部１０４は各処理の演算やメモリアクセスで実際にどの演算器やメモリを使用するかを決定する機能を有する。また、後処理部１０５は、データパス・ＦＳＭ（Finite-State-Machine）の生成や最適化を実行した後、ＲＴＬ記述を出力する機能を有する。
【００４１】
入力情報２００は、利用者により用意されている、Ｃ言語などの抽象度の高い回路仕様が記述されている動作レベルの回路記述である。
【００４２】
また、後処理部１０５により出力されたＲＴＬ記述が、出力情報３００である。
【００４３】
また、記憶装置４００はＲＡＭ等の記憶装置であり、システム内部表現記憶部４０１を有している。そして、前処理部１０１、検出部１０２、スケジューリング部１０３、バインディング部１０４、後処理部１０５の各々の処理部は、必要に応じてシステムの内部表現を、記憶装置４００のシステム内部表現記憶部４０１に対して、書き出しおよび読み込みを行う。
【００４４】
次に、図４のフローチャートを参照して第１の実施形態による動作合成システムの動作について詳細に説明する。
【００４５】
まず、利用者により用意されている、Ｃ言語などの抽象度の高い回路仕様が記述されている動作レベルの回路記述である入力情報２００を入力される（ステップＡ１）。
【００４６】
入力情報２００から与えられる動作レベルの回路記述は、データ処理装置１００の前処理部１０１に供給される。前処理部１０１は、動作レベルの回路記述を解析し動作合成用の内部表現に変換すると共にその最適化を行う（ステップＡ２）。
【００４７】
データ処理装置１００のスケジューリング部１０３・バインディング部１０４・検出部１０２は、ＣＤＦＧでノードとして表現された演算やメモリアクセスや遷移などを順に処理し、スケジューリングしていないノードが残っているかを調べる（ステップＡ３）。
【００４８】
残っていない場合には（ステップＡ３においてＮＯ）、後処理部１０５による後処理に進む（ステップＡ１２）。一方、残っている場合には（ステップＡ３においてＹＥＳ）、状態ｎにスケジューリングできるノードが残っているかを調べる（ステップＡ４）。
【００４９】
残っていない場合には（ステップＡ４においてＮＯ）、バインディング部１０４によるバインディング処理を行う（ステップＡ１０）。そして、次状態以降を処理対象として処理を継続する（ステップＡ１１）。一方、残っている場合には（ステップＡ４においてＹＥＳ）、スケジューリング部１０３によりスケジューリングしていないノードを選択する（ステップＡ５）。
【００５０】
次に、選択したノードをスケジューリングしたとき状態ｎのレジスタの読み出しポート数が制約を満たすか調べる（ステップＡ６）。
【００５１】
制約を満たさない場合（ステップＡ６においてＮＯ）、スケジューリング部１０３が、選択したノードを次の状態以降にスケジューリングするよう処理する（ステップＡ９）。一方、制約を満たす場合（ステップＡ６においてＹＥＳ）、状態ｎのレジスタの書き込みポート数が制約を満たすか調べる（ステップＡ７）。
【００５２】
書き込みポート数が制約を満たさない場合（ステップＡ７においてＮＯ）、スケジューリング部１０３が、選択したノードを次の状態以降にスケジューリングするよう処理する（ステップＡ９）。一方、制約を満たす場合（ステップＡ７においてＹＥＳ）、制約にしたがってスケジューリングする（ステップＡ８）。
【００５３】
最後に、後処理部１０５が処理を行い、処理結果をもとにＲＴＬ記述が生成され出力される（ステップＡ１３）。
【００５４】
次に、本実施形態の効果について説明する。
【００５５】
本実施形態では、検出部１０２、スケジューリング部１０３及びバインディング部１０４がレジスタの読み出し・書き込みポート数制約を満たすよう動作するステップＡ６、Ａ７を有している。そのため、本実施形態はレジスタの読み出し・書き込みポート数を制約したスケジューリングができるという効果を奏する。
【００５６】
図５のフローチャートを参照して第２の実施形態による動作合成システムの動作について詳細に説明する。
【００５７】
本実施形態による動作合成装置の構成は図３−１及び図３−２を参照して説明した第１の実施形態での動作合成装置の構成と同一であるので説明を省略する。
【００５８】
まず、利用者により用意されている、Ｃ言語などの抽象度の高い回路仕様が記述されている動作レベルの回路記述である入力情報２００を入力される（ステップＢ１）。
【００５９】
入力情報２００から与えられた動作レベルの回路記述は、データ処理装置１００の前処理部１０１に供給される。前処理部１０１は、動作レベルの回路記述を解析し動作合成用の内部表現に変換すると共にその最適化を行う（ステップＢ２）。
【００６０】
データ処理装置１００のスケジューリング部１０３・バインディング部１０４・検出部１０２は、ＣＤＦＧでノードとして表現された演算やメモリアクセスや遷移などを順に処理し、スケジューリングしていないノードが残っているかを調べる（ステップＢ３）。
【００６１】
残っていない場合には（ステップＢ３においてＮＯ）、後処理部１０５による後処理に進み（ステップＢ１４）、一方、残っている場合には（ステップＢ３においてＹＥＳ）、状態ｎにスケジューリングできるノードが残っているかを調べる（ステップＢ４）。
【００６２】
残っていない場合には（ステップＢ４においてＮＯ）、バインディング部１０４によるバインディング処理を行う（ステップＢ１２）。そして、次状態以降を処理対象として処理を継続する（ステップＢ１３）。一方、残っている場合には（ステップＢ４においてＹＥＳ）、スケジューリング部１０３によりスケジューリングしていないノードを選択する（ステップＢ５）。
【００６３】
次に、選択したノードをスケジューリングしたとき状態ｎのレジスタの読み出しポート数が制約を満たすか調べる（ステップＢ６）。
【００６４】
制約を満たさない場合（ステップＢ６においてＮＯ）、状態ｎより前の状態のレジスタ共有を変えると状態ｎのレジスタ読み出しポート数が制約を満たすかどうか調べる（ステップＢ９）。制約を満たす場合（ステップＢ９においてＹＥＳ）、状態ｎより前の状態のレジスタ共有を変更する（ステップＢ１０）。一方、制約を満たさない場合（ステップＢ９においてＮＯ）、選択したノードを次の状態以降にスケジューリングするよう処理する（ステップＢ１１）。
【００６５】
選択したノードをスケジューリングしたとき状態ｎのレジスタの読み出しポート数が制約を満たす場合（ステップＢ６おいてＹＥＳ）、状態ｎのレジスタの書き込みポート数が制約を満たすか調べる（ステップＢ７）。
【００６６】
書き込みポート数が制約を満たさない場合（ステップＢ７においてＮＯ）、選択したノードを次の状態以降にスケジューリングするよう処理する（ステップＢ１１）。一方、制約を満たす場合（ステップＢ７においてＹＥＳ）、スケジューリング部１０３が、制約にしたがってスケジューリングする（ステップＢ８）。
【００６７】
最後に、後処理部１０５が処理を行い、処理結果をもとにＲＴＬ記述が生成され出力される（ステップＢ１５）。
【００６８】
次に、本実施形態の効果について説明する。
【００６９】
本実施形態では、検出部１０２、スケジューリング部１０３及びバインディング部１０４がレジスタの読み出し・書き込みポート数制約を満たすよう動作するステップＢ６、Ｂ７を有している。そのため、本実施形態はレジスタの読み出し・書き込みポート数を制約したスケジューリングができるという効果を奏する。これは、面積を小さくするためにレジスタ共有を行なう一般的な動作合成装置とは異なり、本実施形態のみの特有の特徴である。また、状態ｎより前の状態のレジスタ共有を変更するステップＢ１０を有しているため、制約を満たすために状態数が増加するのを抑えることができる。
【実施例】
【００７０】
次に、具体的な実施例を用いて本発明の実施形態の動作を説明する。
【００７１】
まず、動作説明に先立ち、図６を参照してスケジューリング時のレジスタ読み出し・書き込みポート数のカウントについて説明する。
【００７２】
図６（ａ）に示すようなノードを順にスケジューリングする。
【００７３】
図６（ｂ）に示すように一つ目のノード６０１をスケジューリングすると、状態ｎにおけるレジスタ読み出しはノードＡとＢなのでレジスタ読み出しポート数は２となる。また、レジスタ書き込みは確定していないが、ノード６０１の出力がレジスタノード６０３になると仮定し、レジスタ書き込みポート数を１とカウントする。
【００７４】
図６（ｃ）に示すように二つ目のノード６０２をスケジューリングすると、状態ｎにおけるレジスタ読み出しはノードＡとＢとＣとＤなのでレジスタ読み出しポート数は４となる。また、レジスタ書き込みは確定していないが、ノード６０１、６０２の出力がレジスタノード６０３、６０４になると仮定し、レジスタ書き込みポート数を２とカウントする。
【００７５】
図７を参照し、演算ノードがツリーを構成するような場合のスケジューリング時のレジスタ読み出し・書き込みポート数のカウントについて説明する。
【００７６】
図７（ａ）に示すようなノードを順にスケジューリングする。
【００７７】
図７（ｂ）に示すように一つ目のノード７０１をスケジューリングすると、状態ｎにおけるレジスタ読み出しはノードＡとＢなのでレジスタ読み出しポート数は２となる。また、レジスタ書き込みは確定していないが、ノード７０１の出力がレジスタノード７０４になると仮定し、レジスタ書き込みポート数を１とカウントする。
【００７８】
図７（ｃ）に示すように二つ目のノード７０２をスケジューリングすると、状態ｎにおけるレジスタ読み出しはノードＡとＢとＣとＤなのでレジスタ読み出しポート数は４となる。また、レジスタ書き込みは確定していないが、ノード７０１、７０２の出力がレジスタノード７０４、７０５になると仮定し、レジスタ書き込みポート数を２とカウントする。
【００７９】
図７（ｄ）に示すように三つ目のノード７０３をスケジューリングすると、状態ｎにおけるレジスタ読み出しはノードＡとＢとＣとＤなのでレジスタ読み出しポート数は４となる。また、レジスタ書き込みは確定していないが、ノード７０３の出力がレジスタノード７０６になると仮定し、レジスタ書き込みポート数を１とカウントする。
【００８０】
図８を参照し、演算結果がメモリに格納される場合のスケジューリング時のレジスタ読み出し・書き込みポート数のカウントについて説明する。
【００８１】
図８（ａ）に示すようなノードを順にスケジューリングする。
【００８２】
図８（ｂ）に示すように一つ目のノード８０１をスケジューリングすると、状態ｎにおけるレジスタ読み出しはノードＡとＢなのでレジスタ読み出しポート数は２となる。また、レジスタ書き込みは確定していないが、ノード８０１の出力がレジスタノード８０５になると仮定し、レジスタ書き込みポート数を１とカウントする。
【００８３】
図８（ｃ）に示すように二つ目のノード８０２をスケジューリングすると、状態ｎにおけるレジスタ読み出しはノードＡとＢとＣとＤなのでレジスタ読み出しポート数は４となる。また、レジスタ書き込みは確定していないが、ノード８０１、８０２の出力がレジスタノード８０５、８０６になると仮定し、レジスタ書き込みポート数を２とカウントする。
【００８４】
図８（ｄ）に示すように三つ目のノード８０３をスケジューリングすると、状態ｎにおけるレジスタ読み出しはノードＡとＢとＣとＤなのでレジスタ読み出しポート数は４となる。また、ノード８０３の出力がメモリノード８０４に接続されるので、レジスタ書き込みポート数を０とカウントする。
【００８５】
次に、本発明の第１の実施例について図面を参照して説明する。この第１の実施例は、本発明の第１の実施形態に対応するものである。
【００８６】
図９を参照し、各状態でのレジスタ読み出し・書き込みポート数の制約がそれぞれ２の場合のスケジューリングについて説明する。
【００８７】
図９（ａ）に示すようなノードを順にスケジューリングする。
【００８８】
図９（ｂ）に示すように一つ目のノード９０１をスケジューリングすると、状態ｎにおけるレジスタ読み出しポート数は２、書き込みポート数は１となる。これはレジスタ読み出し・書き込みポート数がそれぞれ２という制約を満たしている（ステップＡ８に相当）。
【００８９】
図９（ｃ）に示すように二つ目のノード９０２をスケジューリングすると、状態ｎにおけるレジスタ読み出しポート数は４、書き込みポート数は２となる。これはレジスタ読み出し・書き込みポート数がそれぞれ２という制約を満たしておらず、ノード９０２を状態ｎにスケジューリングすることはできない（ステップＡ６及びステップＡ９に相当）。
【００９０】
図９（ｄ）に示すように二つ目のノード９０２をスケジューリングすると、状態ｎにおけるレジスタ読み出しポート数は２、書き込みポート数は１、状態ｎ＋１におけるレジスタ読み出しポート数は２、書き込みポート数は１となる。これはレジスタ読み出し・書き込みポート数がそれぞれ２という制約を満たしている（ステップＡ８に相当）。
【００９１】
次に、本発明の第２の実施例について図面を参照して説明する。この第２の実施例は、本発明の第１の実施形態に対応するものである。
【００９２】
図１０を参照し、各状態でのレジスタ読み出し・書き込みポート数がそれぞれ４に制約されている場合のスケジューリングについて説明する。
【００９３】
図１０（ａ）に示すようなノードを順にスケジューリングする。
【００９４】
図１０（ｂ）に示すように一つ目のノード１００１をスケジューリングすると、状態ｎにおけるレジスタ読み出しポート数は２、書き込みポート数は１となる。これはレジスタ読み出し・書き込みポート数がそれぞれ４という制約を満たしている（ステップＡ８に相当）。
【００９５】
図１０（ｃ）に示すように二つ目のノード１００２をスケジューリングすると、状態ｎにおけるレジスタ読み出しポート数は４、書き込みポート数は２となる。これはレジスタ読み出し・書き込みポート数がそれぞれ４という制約を満たしている  （ステップＡ８に相当）。
【００９６】
図１０（ｄ）に示すように三つ目のノード１００３をスケジューリングすると、状態ｎにおけるレジスタ読み出しポート数は６、書き込みポート数は３となる。これはレジスタ読み出し・書き込みポート数がそれぞれ４という制約を満たしておらず、ノード１００３を状態ｎにスケジューリングすることはできない（ステップＡ６、ステップＡ９に相当）。
【００９７】
図１０（ｅ）に示すようにノード１００４をスケジューリングすると、状態ｎにおけるレジスタ読み出しポート数は４、書き込みポート数は１となる。これはレジスタ読み出し・書き込みポート数がそれぞれ４という制約を満たしている（ステップＡ８に相当）。
【００９８】
次に、本発明の第３の実施例について図面を参照して説明する。この第３の実施例は、本発明の第２の実施形態に対応するものである。
【００９９】
図１１（ａ）に示すような条件分岐のある動作レベル回路記述を合成する場合、図１１（ｂ）に示すようなＣＤＦＧが生成され、スケジューリングされる。
【０１００】
図１２の（ａ）と（ｂ）は図１１の記述を合成する際にノード１２０１とノード１２０３をそれぞれ異なるレジスタで実現した場合のＣＤＦＧと回路を示している。
【０１０１】
図１３の（ａ）と（ｂ）は図１１の記述を合成する際にノード１３０１とノード１３０３を同一レジスタで実現した場合のＣＤＦＧと回路を示している。
【０１０２】
図１２の状態ｎ＋１のスケジューリングにおいてレジスタ読み出しポート数の制約が４の場合、このＣＤＦＧにあらわされていない部分で既にレジスタ読み出しポートが１個使用されていると、状態ｎ＋１のレジスタ読み出しポート数が４を超えてしまうので、図１２の（ａ）のようなスケジューリングを実現することができない。このようなとき、図５のステップＢ９の判定でノード１３０１とノード１３０３が共有できると判定されると、図１３の（ａ）のようにスケジューリングできる。
【０１０３】
なお、本発明の実施形態である動作合成装置は、ハードウェアにより実現することもできるが、コンピュータをその動作合成装置として機能させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現することができる。
【０１０４】
また、本発明の実施形態による動作合成方法は、ハードウェアにより実現することもできるが、コンピュータにその方法を実行させるためのプログラムをコンピュータがコンピュータ読み取り可能な記録媒体から読み込んで実行することによっても実現することができる。
【０１０５】
また、上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【０１０６】
以上説明した本発明の実施形態は、以下に示すような効果を奏する。
【０１０７】
本実施形態によれば、半導体集積回路装置の動作を記述した動作レベル回路記述から具体的な機能（回路）を記述したＲＴＬ回路記述を生成する際に、レジスタの読み出し・書き込みポート数を制約することから、ハードウェアの制約を満たした合成をすることが可能となる。
【０１０８】
また、例えば特許文献２に記載されているようなマルチコンテキスト型再構成デバイスにおいて、レジスタの読み出し・書き込みポート数制約を満たしつつレジスタファイルを使用できるため、レジスタポート数を減らせ、結果として構成情報メモリ量も減らすことができる。
【０１０９】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１１０】
（付記１）  半導体集積回路方法の動作を記述した動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成方法において、
レジスタの読み出し・書き込みポート数の制約を決定し当該制約を満たすように前記抽象度の低い回路記述を生成する際のスケジューリング・バインディング処理を行うことを特徴とする動作合成方法。
【０１１１】
（付記２）  付記１に記載の動作合成方法において、
演算タイミングを調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たすことを特徴とする動作合成方法。
【０１１２】
（付記３）  付記１又は２に記載の動作合成方法において、
前記動作レベルの回路記述を解析し、前記動作合成用の内部表現に変換する前処理ステップと、
前記内部表現に基づいてレジスタの読み出し・書き込みポート数を検出する検出ステップと、
現在スケジューリング対象としている状態である状態ｎにスケジューリング対象のノードである対象ノードが存在している場合に、前記制約を満たすのであれば当該対象ノードを当該状態ｎにスケジューリングし、前記制約を満たさないのであれば当該状態ｎの次の状態以降に当該対象ノードをスケジューリングするスケジューリングステップと、
前記スケジューリングステップによるスケジューリング結果に従って前記バインディング処理を実行するバインディングステップと、
前記バインディングステップの処理結果に基づいて抽象度の低い回路記述を生成する後処理ステップと、
を備えることを特徴とする動作合成方法。
【０１１３】
（付記４）  付記１に記載の動作合成方法において、
スケジューリング対象より前の状態のレジスタ共有を調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たすことを特徴とする動作合成方法。
【０１１４】
（付記５）  付記１又は２に記載の動作合成方法において、
前記動作レベルの回路記述を解析し、前記動作合成用の内部表現に変換する前処理ステップと、
前記内部表現に基づいてレジスタの読み出し・書き込みポート数を検出する検出ステップと、
現在スケジューリング対象としている状態である状態ｎにスケジューリング対象のノードである対象ノードが存在している場合であって、且つ、前記レジスタの読み出しポートについて前記制約を満たさないが当該状態ｎ以前の状態におけるレジスタ共有を調整することにより前記レジスタの読み出しポートについて前記制約を満たす場合は、前記レジスタ共有を調整するスケジューリングステップと、
前記スケジューリングステップによるスケジューリング結果に従って前記バインディング処理を実行するバインディングステップと、
前記バインディングステップの処理結果に基づいて抽象度の低い回路記述を生成する後処理ステップと、
を備えることを特徴とする動作合成方法。
【０１１５】
（付記６）  付記１乃至５の何れかに記載の動作合成方法において、レジスタ書き込みポート数をスケジューリング途中のデータ線の数から推定することを特徴とする動作合成方法。
【０１１６】
（付記７）  付記１乃至６の何れかに記載の動作合成方法において、レジスタ読み出しポート数をスケジューリング後の書き込みノードの数から決定することを特徴とする動作合成方法。
【０１１７】
（付記８）付記１乃至７の何れかに記載の動作合成方法において、レジスタがレジスタファイルで構成されていることを特徴とする動作合成方法。
【０１１８】
（付記９）  半導体集積回路プログラムの動作を記述した動作レベルの回路記述から、抽象度の低い回路記述を生成するための動作合成装置に組み込まれる動作合成プログラムにおいて、
レジスタの読み出し・書き込みポート数の制約を決定し当該制約を満たすように前記抽象度の低い回路記述を生成する際のスケジューリング・バインディング処理を行う動作合成装置としてコンピュータを機能させることを特徴とする動作合成プログラム。
【０１１９】
（付記１０）  付記９に記載の動作合成プログラムにおいて、
演算タイミングを調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たすことを特徴とする動作合成プログラム。
【０１２０】
（付記１１）  付記９又は１０に記載の動作合成プログラムにおいて、
前記動作レベルの回路記述を解析し、前記動作合成用の内部表現に変換する前処理手段と、
前記内部表現に基づいてレジスタの読み出し・書き込みポート数を検出する検出手段と、
現在スケジューリング対象としている状態である状態ｎにスケジューリング対象のノードである対象ノードが存在している場合に、前記制約を満たすのであれば当該対象ノードを当該状態ｎにスケジューリングし、前記制約を満たさないのであれば当該状態ｎの次の状態以降に当該対象ノードをスケジューリングするスケジューリング手段と、
前記スケジューリング手段によるスケジューリング結果に従って前記バインディング処理を実行するバインディング手段と、
前記バインディング手段の処理結果に基づいて抽象度の低い回路記述を生成する後処理手段と、
を備えることを特徴とする動作合成プログラム。
【０１２１】
（付記１２）  付記９に記載の動作合成プログラムにおいて、
スケジューリング対象より前の状態のレジスタ共有を調整することにより前記レジスタの読み出し・書き込みポート数の制約を満たすことを特徴とする動作合成プログラム。
【０１２２】
（付記１３）  付記９又は１０に記載の動作合成プログラムにおいて、
前記動作レベルの回路記述を解析し、前記動作合成用の内部表現に変換する前処理手段と、
前記内部表現に基づいてレジスタの読み出し・書き込みポート数を検出する検出手段と、
現在スケジューリング対象としている状態である状態ｎにスケジューリング対象のノードである対象ノードが存在している場合であって、且つ、前記レジスタの読み出しポートについて前記制約を満たさないが当該状態ｎ以前の状態におけるレジスタ共有を調整することにより前記レジスタの読み出しポートについて前記制約を満たす場合は、前記レジスタ共有を調整するスケジューリング手段と、
前記スケジューリング手段によるスケジューリング結果に従って前記バインディング処理を実行するバインディング手段と、
前記バインディング手段の処理結果に基づいて抽象度の低い回路記述を生成する後処理手段と、
を備えることを特徴とする動作合成プログラム。
【０１２３】
（付記１４）  付記９乃至１３の何れかに記載の動作合成プログラムにおいて、レジスタ書き込みポート数をスケジューリング途中のデータ線の数から推定することを特徴とする動作合成プログラム。
【０１２４】
（付記１５）  付記９乃至１４の何れか１項に記載の動作合成プログラムにおいて、レジスタ読み出しポート数をスケジューリング後の書き込みノードの数から決定することを特徴とする動作合成プログラム。
【０１２５】
（付記１６）  付記９乃至１５の何れかに記載の動作合成プログラムにおいて、レジスタがレジスタファイルで構成されていることを特徴とする動作合成プログラム。
【符号の説明】
【０１２６】
１００  データ処理装置
１０１  前処理部
１０２  検出部
１０３  スケジューリング部
１０４  バインディング部
１０５  後処理部
２００  入力情報
３００  出力情報
４００  記憶装置
４０１  システム内部表現記憶部
５００  情報処理装置
５１０  ＣＰＵ
５２０  主記憶装置
５３０  補助記憶装置
５４０、５６０、５７０  Ｉ／Ｏインターフェース
５４１  入力装置
５５０  記憶媒体
５６１  出力装置
５７１  外部記憶装置
６０１〜６０４、７０１〜７０６、８０１〜８０６、９０１〜９０４、１００１〜１００８、１２０１〜１２０４  レジスタノード
【図１】
0005467512.tif 000002
【図２】
0005467512.tif 000003
【図３−１】
0005467512.tif 000004
【図３−２】
0005467512.tif 000005
【図４】
0005467512.tif 000006
【図５】
0005467512.tif 000007
【図６】
0005467512.tif 000008
【図７】
0005467512.tif 000009
【図８】
0005467512.tif 000010
【図９】
0005467512.tif 000011
【図１０】
0005467512.tif 000012
【図１１】
0005467512.tif 000013
【図１２】
0005467512.tif 000014
【図１３】
0005467512.tif 000015