JP2009129367A - 動作合成システム、動作合成方法および動作合成用プログラム - Google Patents

動作合成システム、動作合成方法および動作合成用プログラム Download PDF

Info

Publication number
JP2009129367A
JP2009129367A JP2007306341A JP2007306341A JP2009129367A JP 2009129367 A JP2009129367 A JP 2009129367A JP 2007306341 A JP2007306341 A JP 2007306341A JP 2007306341 A JP2007306341 A JP 2007306341A JP 2009129367 A JP2009129367 A JP 2009129367A
Authority
JP
Japan
Prior art keywords
scheduling
mode
cycle
data
resource
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
JP2007306341A
Other languages
English (en)
Other versions
JP5229716B2 (ja
Inventor
Shinichi Noda
真一 野田
Hiroshi Akashio
博 赤塩
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
NEC Informatec Systems Ltd
Original Assignee
NEC Corp
NEC Informatec Systems Ltd
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, NEC Informatec Systems Ltd filed Critical NEC Corp
Priority to JP2007306341A priority Critical patent/JP5229716B2/ja
Priority to US12/277,728 priority patent/US8056030B2/en
Publication of JP2009129367A publication Critical patent/JP2009129367A/ja
Application granted granted Critical
Publication of JP5229716B2 publication Critical patent/JP5229716B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

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

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

【課題】動作レベルで記述された一つのプロセスに対して、複数のスケジューリングモードを適用して動作合成を行うことである。
【解決手段】動作レベルで記述された回路データに含まれる一つのプロセスの記述範囲を、複数に分割した記述ブロックごとに、スケジューリングモードを指定するモード指定コードを参照すると共に、このモード指定コードによって指定されたスケジューリングモードに従ってスケジューリングが行われるように制御を行うことと、この制御に従って、入出力及びリソースをクロックサイクルにマッピングし、スケジューリングを行うこととを具備する。
【選択図】図2

Description

本発明は、回路設計支援技術に関し、特に、動作合成システム、動作合成方法および動作合成用プログラムに関する。
近年の集積回路の設計プロセスにおいては、設計者は、生産性向上のため、ソフトウェアを用いて集積回路を記述する。設計フローの上流では、集積回路が抽象度の高い動作レベルにて記述される。この動作レベルで記述された回路データ(動作レベル記述ファイルという。)は、動作合成システムによって自動的に動作合成される。動作合成により、レジスタ転送レベルで記述された回路データ(RTレベル記述ファイルという。)が生成される。RTレベル記述ファイルは、下流にて論理合成される。論理合成により、ゲートレベルで記述された回路データが生成され、論理回路の実装設計が行われる。
動作合成システムによる動作合成処理においては、オペレーションをクロックサイクルにマッピングするスケジューリングや、オペレーションを乗算器や加算器などのファンクションユニットに割り当てるバインディングなどが行われる。ここで、動作合成システムにおけるスケジューリングモードとしては、いくつかのモードが考えられる。David W. Knapp著「Behavioral Synthesis: Digital System Design Using the Synopsis Behavioral Compiler」Prentice Hall,1999年6月,pp.57−60(非特許文献1参照)では、サイクル固定モード、スーパーステート入出力モード、フリーフローティングモードの3つを挙げている。動作レベル記述ファイルには、クロックサイクルの情報が含まれており、サイクル境界を指定することが可能であるが、これらのモードは、そのサイクル境界同士の関係、および、サイクル境界と入出力との関係を表している。
動作レベル記述ファイルには、モジュールやそのモジュールに含まれるプロセスなどが記述される。このプロセスを単位として、上記のスケジューリングモードを切り替えて動作合成することはあり得るが、複数のスケジューリングモードを1つのプロセスに適用することは行われていない。その理由の一つは、動作合成システムは、スケジューリングエンジンの切替えに合わせて、サイクルを切ってしまうので、動作合成を行ってもサイクル数が必要以上に増加してしまうためである。すなわち、現在のところ、設計者は、動作レベルで記述された一つのプロセス内において、任意のブロックだけ、全体とは別のスケジューリングモードを指定するといったことができない。
David W. Knapp著「Behavioral Synthesis: Digital System Design Using the Synopsis Behavioral Compiler」Prentice Hall,1999年6月,pp.57−60
本発明の課題は、動作レベルで記述された一つのプロセスに対して、複数のスケジューリングモードを適用して動作合成を行うことである。
本発明の一つ目のアスペクトによる動作合成システムにおいては、スケジューリング部と、モードコントロール部とを具備する。スケジューリング部は、リソース制約を満たすことを確認するためのリソース数量データと、時間制約を満たすことを確認するためのリソース遅延データとを備える。リソース数量データ及びリソース遅延データを参照しながら、リソース制約及び時間制約が満たされるように、入出力及びリソースを、クロックサイクルにマッピングする。モードコントロール部は、動作レベルで記述された回路データに含まれる一つのプロセスの記述範囲を、複数に分割した記述ブロックごとに、スケジューリングモードを指定するモード指定コードを参照する。このモード指定コードによって指定されたスケジューリングモードに従ってスケジューリングが行われるように、スケジューリング部を制御する。
本発明の二つ目のアスペクトによる動作合成方法においては、動作レベルで記述された回路データに含まれる一つのプロセスの記述範囲を、複数に分割した記述ブロックごとに、スケジューリングモードを指定するモード指定コードを参照する。このモード指定コードによって指定されたスケジューリングモードに従ってスケジューリングが行われるように制御を行う。当該制御に従うと共に、リソース制約を満たすことを確認するためのリソース数量データと、時間制約を満たすことを確認するためのリソース遅延データとを参照しながら、リソース制約及び時間制約が満たされるように、入出力及びリソースをクロックサイクルにマッピングして、スケジューリングを行う。
本発明の三つ目のアスペクトによる動作合成用プログラムにおいては、スケジューリング部と、モードコントロール部とをコンピュータに実現させる。スケジューリング部は、リソース制約を満たすことを確認するためのリソース数量データと、時間制約を満たすことを確認するためのリソース遅延データとを備える。リソース数量データ及びリソース遅延データを参照しながら、リソース制約及び時間制約が満たされるように、入出力及びリソースを、クロックサイクルにマッピングする。モードコントロール部は、動作レベルで記述された回路データに含まれる一つのプロセスの記述範囲を、複数に分割した記述ブロックごとに、スケジューリングモードを指定するモード指定コードを参照する。このモード指定コードによって指定されたスケジューリングモードに従ってスケジューリングが行われるように、スケジューリング部を制御する。この動作合成用プログラムは、コンピュータ読み取り可能な記録媒体に記録することができる。
本発明によれば、動作レベルで記述された一つのプロセスに対して、複数のスケジューリングモードを適用して動作合成を行うことができる。
本発明を実施するための最良の形態について、図面を参照して詳細に説明する。図1を参照すると、本発明を実施するための最良の形態の一つとして、第1の実施の形態による動作合成システムが示されている。この動作合成システム50は、プログラム制御により動作するデータ処理装置(コンピュータ、中央処理装置、プロセッサともいう。)20と、データを記憶する記憶装置30とを有している。動作合成システム50には、利用者がテキストを入力し、動作レベル記述ファイルを作成するための入力装置10と、動作レベル記述ファイルやレジスタ転送レベル記述ファイルの内容を表示等できる出力装置40とが接続されている。
データ処理装置20は、言語解析部21と、内部構造正規化部22と、CDFG(Control Data Flow Graph)生成部23と、スケジューラ選択部24と、スケジューリング部25と、バインディング部26と、RT記述生成部27とを含む。これらの機能ブロック21〜27はそれぞれ、動作合成用プログラムの実行により実現され、つぎのように動作する。言語解析部21は、動作合成対象の動作レベル記述ファイルを解析し、内部表現データに変換する。内部構造正規化部22は、言語解析部21により与えられる内部表現データにおいて、データ構造の関数やループなどに相当する部分を適宜展開するなどして、内部表現データを正規化する。CDFG生成部23は、正規化された内部表現データを変換し、CDFGデータを生成する。
スケジューラ選択部24は、所定のスケジューリングモードで動作する複数のスケジューリングエンジンを有する。スケジューラ選択部24は、動作レベル記述ファイルにおいて、一つのプロセスの中で、利用者による記述でそのプロセスをいくつかに分割した記述範囲(記述ブロックという。)ごとに指定されているモード指定コードを参照する。そして、そのモード指定コードで指定されているスケジューリングモードで動作する適切なスケジューリングエンジンを選択する。なお、スケジューラ選択部24は、テキスト記述や外部ファイル、GUIなどの形式で与えられたスケジューリングモード指定に従って、スケジューリングエンジンを選択することができる。
スケジューリング部25は、選択されたスケジューリングエンジンを用いて、CDFG生成部23により生成されたCDFG上で、与えられた記述ブロックごとに、リソースや入出力をクロックサイクルにマッピングする。与えられた一つの記述ブロックについて、スケジューリングが終了したら、残りの記述ブロックに関しても、スケジューラ選択部24による選択と、スケジューリング部25によるスケジューリングとが実行される。
バインディング部26は、スケジューリング部25が繰り返しスケジューリングを実行することによって得られたスケジューリング結果に基づいて、演算資源やメモリ資源などのリソースをバインドする。このバインド結果に基づき、RT記述生成部27は、レジスタ転送レベル記述ファイルを生成する。各々の機能ブロック21〜27は、必要に応じて、動作合成システム50の記憶装置30に属するシステム内部表現記憶部31に対して、変換結果の書き出しおよび読み込みを行う。
次に、図2のフローチャートを参照して、動作合成システム50の動作について詳細に説明する。まず、利用者はC言語などで抽象度の高い回路仕様が記述されている動作レベル記述ファイルを用意する。この動作レベル記述ファイルには、ひとつのプロセス内でスケジューリングモードを切り替えることを指示するモード指定コードが含まれているものとする。まず、動作合成システム50は、この動作レベル記述ファイルを入力する(A1)。次に、言語解析部21が言語解析処理を行い(A2)、動作レベルで記述された回路データを、動作合成用の内部表現データに変換する。変換された内部表現データはAST(Abstract Syntax Tree:抽象構文木)などのデータ構造で表現される。続いて、内部構造正規化部22が、内部構造正規化処理を行い(A3)、CDFG生成部23が、CDFG生成処理を行い(A4)、CDFGデータに変換する。
次に、生成されたCDFGデータに対して、スケジューリングを実施する。このとき、スケジューラ選択部24は、記述ブロックごとに、モード指定コードにより指定されたスケジューリングモードに基づき、スケジューリングエンジンを選択する(A5)。スケジューリング部25は、選択されたスケジューリングエンジンを用いて、与えられた記述ブロックをスケジューリングする(A6)。動作レベル記述の全範囲をスケジューリングし終えるまで、これらのスケジューラ選択処理およびスケジューリングを繰り返す。
スケジューリング部25は、ある記述ブロックをスケジューリングするときに、あるクロックサイクルに予め別のスケジューリングエンジンによってマッピングされた入出力やリソース(両者をノードともいう。)がある場合には、これらを確定したものとして取り扱い、これらのノードは、そのクロックサイクルに固定されているものとみなす。また、スケジューリング部25は、リソースによる遅延時間を示すリソース遅延データを、予め与えられている。スケジューリング部25は、新たにマッピングするリソースに先行する一つ又は複数のリソースが、既に別エンジンによってマッピング済みの場合、先行するそれぞれのリソースについて、リソース遅延データを参照する。これにより、マッピング済みの一つ又は複数のリソースによる遅延時間を計測することができる。スケジューリング部25は、この遅延時間を、新規にマッピングするリソースの入力遅延とみなすことができ、1クロック周期からこの遅延時間を差し引いた残余時間の範囲内でのみ、新規のリソースをマッピングするようにする。
動作レベル記述の全範囲についてスケジューリングが終了すると、バインディング部26が、バインディングを行う(A7)。最後に、RT記述生成部27が、RTレベル記述生成処理を行う(A8)。動作合成システム50はRTレベル記述ファイルを出力し(A9)、利用者は、その内容を出力装置40に表示等することができる。
第1の実施の形態の効果について説明する。第1の実施の形態は、複数のスケジューリングエンジンを切り替えて、記述ブロックごとに異なるスケジューリングモードでスケジューリングを行うことが可能である。スケジューリングエンジンの切り替え時には、スケジューリング部25が、それまでスケジューリングされたノードの遅延時間を取得し、後段の記述ブロックをスケジュールするときに、その遅延時間を入力遅延制約条件として扱う。このようにすることで、スケジューリングエンジンの切り替え時に、クロックサイクルを分けることなくスケジューリングすることができる。従って、より少ないクロックサイクル数でスケジューリングが為されたスケジューリング結果を得ることができるという利点がある。さらに、スケジューリングエンジン切り替え時に、サイクルを分けなくてもよいことから、データ依存関係による制約が満たされる範囲においては、既にスケジューリングが完了しているクロックサイクルに対しても、ノードを新たに追加し、スケジューリングすることが可能となる効果がある。
次に、第2の実施の形態について図面を参照して詳細に説明する。図3を参照すると、第2の実施の形態による動作合成システムが示されている。この動作合成システム50aは、プログラム制御により動作するデータ処理装置20aと、データを記憶する記憶装置30aとを有している。データ処理装置20aは、言語解析部21と、内部構造正規化部22と、CDFG生成部23と、時間制約設定部24a、スケジューリング部25aと、バインディング部26と、RT記述生成部27とを含む。これらのうち、言語解析部21と、内部構造正規化部22と、CDFG生成部23と、バインディング部26と、RT記述生成部27とは、第1の実施の形態の場合と同様に動作し、また、動作合成用プログラムの実行によって実現される。
時間制約設定部24aは、動作レベル記述において、記述ブロックごとに指定されたモード指定コードを参照し、単一のスケジューリングエンジンで、利用者が意図したスケジューリングモードをエミュレートできるように、適切な時間制約を自動的に設定する。スケジューリング部25aは、時間制約設定部24aによって設定された時間制約を満たすように、CDFG生成部23により生成されたCDFG上で、リソースや入出力をマッピングする。時間制約設定部24aおよびスケジューリング部25aは、必要に応じて、記憶装置30aに属するシステム内部表現記憶部31aに対して、変換結果の書き出しおよび読み込みを行う。時間制約設定部24aも、スケジューリング部25aも、動作合成用プログラムを実行することによって実現される。
次に、図4のフローチャートを参照して、動作合成システム50aの動作について詳細に説明する。図4において、処理A1〜A4及び処理A7〜A9は、図2に示した第1の実施の形態における処理と同様である。CDFG生成処理A4によってCDFGデータが生成されると、第2の実施の形態における動作合成システム50aでは、このCDFGデータに対して、スケジューリングを実施する。第2の実施の形態におけるスケジューリングについて詳述する。
まず、時間制約設定部24aが、時間制約設定処理を行う(A5a)。時間制約設定部24aは、利用者が記述したモード指定コードに基づき、適切な時間制約を設定する。この時間制約は、単一のスケジューリングエンジンを用いながらも、あたかも複数のスケジューリングエンジンでスケジューリングをしたかのように、スケジューリング部25aを振る舞わせるように設定する。すなわち、記述ブロックごとのスケジューリングモードに合わせて、スケジューリングモードごとの意味を満たせるように、モード種別ごとに、時間制約の設定方法を変える。スケジュール部25aは、設定される時間制約が満たされるように、時間制約を設定できる単一のスケジューリングエンジンを用いて、スケジューリングを行う(A6a)。時間制約により、最も自由度が高いスケジューリングエンジンを採用する要請があるため、サイクル境界間に自由にサイクルを増やすことができ、かつ、入出力もリソースもサイクル境界を越えてもよい、というモードを持ったスケジューリングエンジンを採用するのが望ましい。
第2の実施の形態の効果について説明する。第2の実施の形態では、単一のスケジューリングエンジンを使用しながら、記述ブロックごとに異なるスケジューリングモードでスケジューリングすることが可能であるというものである。スケジューリングエンジンが単一であるために、スケジューリングモード切り替え時に、サイクルを分けることなく、スケジューリングを行うことができる。従って、より少ないクロックサイクル数でスケジューリングが為されたスケジューリング結果を得ることができるという利点がある。また、単一のスケジューリングエンジンを用いるので、エンジンの切り替えに掛かるオーバーヘッドが無く、実行効率が良いという利点もある。加えて、動作合成システムとしても、単一のスケジューリングエンジンで済むことから実現が容易であるという利点もある。
なお、第1又は第2の実施の形態によって、RTレベルで記述された回路データが生成されるが、このRTレベルで記述された回路データを用いてシミュレーションを行うことにより、集積回路を設計することができる。また、この設計に従って、集積回路を製造することができる。
第1及び第2の実施の形態の効果を利用者側の立場から説明する。第1の効果は、入出力プロトコルなどタイミング制約が厳密である部分と、アルゴリズム部分などタイミング制約が比較的自由な部分とを、利用者が、同一のプロセス内に混在して記述できるようになるということにある。その理由は、アルゴリズム部分はスーパーステート入出力モードやフリーフローティングモードなどスケジューリング自由度が高いモードを採用し、入出力プロトコル部分にだけサイクル固定モードなどのスケジューリング自由度が低いモードを採用することができるためである。
第2の効果は、利用者がタイミングに対する制約の指定を容易にできるようになることにある。その理由は、従来は、タイミングの概念のないC言語のような動作記述では、タイミング制約を指定しようとすると、文や演算ごとに細かくタイミングを指定することが必要であり、記述容易性、可読性に問題があったが、第1及び第2の実施の形態では、記述ブロック単位でサイクル固定スケジューリングなどを指定できるため、利用者が簡単にタイミングに関する制約を記述できるためである。
第3の効果は、利用者がスケジューリング結果を制御できるようになることにある。その理由は、自由度の高いスケジューリングモードを利用していた場合、クロックサイクル数やタイミングが、利用者が考えていた理想的な結果にならない可能性があるが、このとき、特定の部分にだけサイクル固定スケジューリングモードを適用することで、利用者が理想とするスケジューリング結果を、最小限の手間で得ることができるためである。
具体的な実施例を用いて、第1の実施の形態におけるスケジューラ選択処理A5及びスケジューリングA6について詳述する。図5−1は、SystemCによる記法に準じた動作レベルの記述例である。.read()メソッドは、入力ポートからの値の読み込みを意味し、.write()メソッドは、出力ポートへの値の書き出しを意味し、wait()はサイクル境界を意味している。SystemCの仕様は、http://www.systemc.org/ に公開されている。
図5−1は、あるプロセスを動作レベルで記述した回路データの一部分を示していて、ここには、二つの記述ブロックが含まれている。図5−1において、#pragma scheduling_blockのラインは、動作合成システム50に対してスケジューリングモードを指定するモード指定コードであり、このラインの直後から始まる記述ブロックのスケジューリングモードを指定するものである。一般に、サイクル境界については、サイクル境界の指定があったときに、そのサイクル境界でのみサイクルを切ってもよいとするモードと、それ以外にもサイクル境界を増やしてもよいとするモードとの、2つのモードが考えられる。一方、サイクル境界と、入出力やリソース(演算資源やメモリ資源)との関係については、入出力やリソースは指定されたサイクル境界を越えてはならないというモードと、リソースのみサイクル境界を越えてもよいとするモードと、入出力もリソースもサイクル境界を越えてもよいとするモードとの、3つのモードが考えられる。したがって、動作合成におけるスケジューリングの際には、これらを組み合わせた6通りのモードが考えられる。ただし、サイクル境界を増やしてもよく、かつ、入出力もリソースもサイクル境界を越えてもよい、というモードでは、サイクル数の下限を定めているだけになり、ほとんど意味がない。そのため、実用上は、この組み合わせを除いた5通りのスケジューリングモードに対応すればよい。
図5−1において、scheduling_blockプラグマは、二つの引数を有していて、この二つの引数によって上記5通りのスケジューリングモードのいずれかが指定される。第1引数には、fixedまたはsuperstateの値を指定することができる。この指定は、サイクル境界間に自動的にサイクル境界を増やせるかどうかを意味する。動作合成システム50は、第1引数がfixedの場合にはサイクル境界間にサイクル境界を増やすことを不可としてスケジューリングを行い、superstateの場合にはサイクル境界を自由に増やせるものとしてスケジューリングを行う。scheduling_blockプラグマの第2引数は、none,io,allの3値のいずれかを指定することができる。この指定は、wait()によるサイクル境界を越えられない要素は何かを意味する。第2引数がnoneの場合には、動作合成システム50は、入出力、リソース共にサイクル境界を越えることができるものとしてスケジューリングを行う。第2引数がioの場合には、入出力のみサイクル境界を越えることがでない、allの場合には、すべてサイクル境界を越えることができないものとして、動作合成システム50はスケジューリングを行う。
図5−1を参照すると、全体の記述ブロックについては、二つの引数として(superstate,io)が指定されている。これらの引数は、全体の記述ブロックをスケジューリングする動作合成システム50に対して、入出力以外は自由にサイクル境界を越えることができること、サイクル境界を増やすことも可能であることを指定している。一方、内側の記述ブロックについては、二つの引数として(fixed,all)が指定されている。これらの引数は、内側の記述ブロックをスケジューリングする動作合成システム50に対して、入出力及びリソースのいずれもサイクル境界を越えられないこと、サイクル境界は固定であることを指定している。
動作合成システム50のスケジューリング部25には、予め、リソース数量データとリソース遅延データとが与えられる。ここでは、同一サイクルで、加算器2個、乗算器1個を使用できるというリソース数量データが与えられ、また、クロック周期を1としたとき、加算器は0.4で演算可能、乗算器は0.7で演算可能というリソース遅延データが与えられているものとする。スケジューリング部25は、これらのリソース数量データとリソース遅延データとを備えている。
このとき、動作合成システム50は以下のように動作する。まず、全体の記述ブロックをスケジューリングしようとして、スケジューラ選択部24が、そのモード指定コードを参照する。スケジューラ選択部24は、実施例1においては、上記5通りのスケジューリングモードで動作する5つのスケジューリングエンジンを有しているとする。スケジューラ選択部24は、(superstate,io)の指定に基づき、(superstate,io)のスケジューリングモードで動作するスケジューリングエンジンを選択する。次に、全体の記述ブロックの中に入ると、内側の記述ブロックが現れる。スケジューリング部25は、全体の記述ブロックをスケジューリングすることを一時中断する。また、並行して、スケジューラ選択部24が内側の記述ブロックについてスケジューラ選択処理A5を行う。スケジューラ選択部24は、内側の記述ブロックに含まれるモード指定コードを参照し、(fixed,all)の指定に基づき、(fixed,all)のスケジューリングモードで動作するスケジューリングエンジンを選択する。
スケジューリング部25は、内側の記述ブロックを、選択された(fixed,all)のスケジューリングエンジンを用いて、スケジューリングする。スケジューリング部25は、演算+1が3箇所あること、これらはサイクル境界wait()で分離されていることを検出する。また、スケジューリング部25は、リソース数量データ及びリソース遅延データを参照する。リソース数量データは、同一サイクルで、加算器を2個使用できることを示しているので、リソース制約は満たされる。また、リソース遅延データは、加算器による演算時間が0.4であることを示しているので、時間制約も満たされる。従って、スケジューリング部25は、これら3つの演算+1を、連続するサイクル境界の間に順次マッピングする。図5−2は、内側の記述ブロックをスケジューリングした結果を示している。図5−2では、step1〜step5の各stepがクロックサイクルを意味している。なお、データ構造上は、演算ノードに属するようにstepの情報が記録される。
内側の記述ブロックを抜けると、全体の記述ブロックに戻り、スケジューリング部25は、中断していた全体の記述ブロックをスケジューリングすることを再開する。スケジューリング部25は、既に選択済みの(superstate,io)のスケジューリングエンジンを用いる。スケジューリング部25は、まず、t1=data1+data2をスケジューリング対象とする。演算“+”は、サイクル境界を越えてスケジューリング可能というモード中にあるため、wait()を越えてスケジューリングできる。ただし、data1とdata2の値が確定した後でなければt1を算出できないので、data1とdata2の値が確定した後というデータ依存関係がある。このデータ依存関係のため、t1=data1+data2は、step4でdata2を算出した後にスケジューリングすることが可能となる。スケジューリング部25は、step4に、t1=data1+data2を追加できるか否かを確認する。リソース数量データを参照すると、加算器を2個使用できるので、リソース制約は満たされている。また、リソース遅延データを参照すると、加算器による演算時間が0.4であり、2回目の加算を実行しても、合計の遅延時間は0.8なので、時間制約も満たされている。従って、スケジューリング部25は、step4の二つ目の演算として、t1=data1+data2をマッピングする。
次に、スケジューリング部25は、t2=data2+data3をスケジューリング対象とする。この演算は、データ依存関係により、step5でdata3を算出した後にスケジューリングすることが可能である。上記t1を求めた演算のスケジューリングと同様に、リソース制約と時間制約とが満たされることが確認されるので、t2=data2+data3は、step5にマッピングされる。続いて、スケジューリング部25は、t3=data3+data1をスケジューリング対象とする。データ依存関係では、step5以降にスケジューリングすることが可能となる。しかし、step5では、既に加算器を2個使用しており、リソース数量データが示すリソース制約の上限に達している。このため、スケジューリング部25は、新たなstep6を生成して、ここに、t3=data3+data1をマッピングする。ここまで、全体の記述ブロックをスケジューリングした途中経過を図5−3に示す。
次に、スケジューリング部25は、t1*t2をスケジューリング対象とする。データ依存関係により、t2が算出されるstep5以降にスケジューリングすることが可能である。まず、スケジューリング部25は、t1*t2をstep5にスケジューリングできるか否かを確認する。リソース遅延データを参照すると、step5では、t2を求めるまでに、2回の加算によって0.8を消費している。また、0.7かかる乗算を、step5に追加すると、遅延時間が1.5になってクロック周期を超えてしまう。よって、スケジューリング部25は、t1*t2をstep5にスケジューリングできないことを確認する。次に、スケジューリング部25は、t1*t2をstep6にスケジューリングできるか否かを確認する。リソース数量データを参照すると、同一サイクルで使用可能な乗算器の数は一つであることが判る。step6では、未だ乗算器を使用していないので、リソース制約は満たされる。また、リソース遅延データを参照すると、乗算による遅延は0.7であることが判る。ただし、step6にスケジューリング済みのt3=data3+data1と、t1*t2との間にはデータ依存関係が無いので、これらは並列して演算可能である。従って、時間制約は満たされる。そこで、スケジューリング部25は、t1*t2をstep6にマッピングする。
次に、スケジューリング部25は、t1*t2の結果に対して、*t3を行う演算をスケジューリング対象とする。*t3は、データ依存関係により、t1*t2を算出するstep6以降にスケジューリングすることが可能である。まず、スケジューリング部25は、*t3をstep6にスケジューリングできるか否かを確認する。リソース数量データを参照すると、同一サイクルで使用可能な乗算器の数は一つである。step6では、既にt1*t2によって乗算器を一つ使用しているので、二つ目の乗算を追加すると、リソース制約を満たさない。なお、遅延時間も1.4になるので時間制約も満たしていない。そこで、スケジューリング部25は、新たなstep7を生成して、ここに、*t3をスケジューリングする。以上により、全体の記述ブロックのスケジューリングが終了する。図5−4は、最終的なスケジューリング結果を示している。
図5−4のスケジューリング結果は、本発明による第1の実施の形態の利点の一面を表している。図5−1のように、(fixed,all)を指定している内側の記述ブロックにおける入力シーケンス(.read()のシーケンス)が、固定されたプロトコル(制約条件)であるとする。このとき、記述ブロックごとに別個のスケジューリングモードを指定できないとすれば、全てを(fixed,all)としてスケジューリングするか、(fixed,all)の部分とそれ以外の部分とを別々のプロセスに分割して記述するかのいずれかになると考えられる。
まず、全てを(fixed,all)のモードでスケジューリングするとした場合について説明する。図5−1の動作レベル記述では、内側の記述ブロックを抜けた後に、t1,t2,t3を求め、さらに、t1*t2の乗算と、*t3の乗算とを行っている。これらの合計演算時間は1クロック周期を越えてしまうため、(fixed,all)のモード下では、利用者はwait()の数を追記する必要がある。しかし、図5−4のようなステップ数の少ないスケジューリング結果を得ようとした場合には、利用者は、data1+data2などの演算をどのステップで行うかを決めて、その結果が反映されるように手動でwait()を挿入し、動作レベル記述を作成する必要がある。これでは、大幅な記述の書き換えをしなければならず、動作合成システムによる自動スケジューリングの利点を生かせない。
一方、(fixed,all)のモードでスケジューリングする部分と、(superstate,io)のモードでスケジューリングする部分とを、2つの別プロセスに分けて合成しようとした場合には、プロセスを分割するために動作レベルの記述を書き換えた上に、さらに、プロセス間の通信方法などを決める必要も生じる。それから、2つのプロセス間で、リソース(図5−1では、加算器が対象になる。)を共有することが困難になったり、図5−4のstep4,step5に示されているように、(fixed,all)のモードでマッピングされたリソースと、(superstate,io)のモードでマッピングされたリソースとを、同一のクロックサイクルで動作させるようなスケジューリングが困難になったりする。
図5−5は、図5−4との比較対照図であり、スケジューリングエンジンの切替えに同期させてクロックサイクルを切ることによって、図5−1に示す動作レベル記述をスケジューリングした結果を表している。図5−5においては、step5とstep6との間でクロックサイクルを切っている。図5−5に示すように、スケジューリングエンジンの切替え時にクロックサイクルを切ると合計8クロックサイクルを要してしまう。これに対して、図5−4に示すように、クロックサイクルが分かれないように工夫した第1の実施の形態では合計7クロックサイクルで済んでいる。
次に、図5−1の記述例を用いて、第2の実施の形態における時間制約設定処理A5a及びスケジューリングA6aについて詳述する。第1の実施の形態に係る実施例1はテキストにより説明したが、第2の実施の形態に係る実施例2はCDFGにより説明する。図6は、図5−1の記述をCDFGで表現したものである。図6のデータフローは、説明を簡単にするため、図5−1の記述における最初のdo−while文に相当する部分は省き、data_inから値を取り込むステップ以降の部分を表現している。図6において、入出力ノードは長方形で表現し、リソースノードは円で表現している。
動作合成システム50aにおいて、時間制約設定部24aは、データフローに沿って、時間制約設定処理A5aを行う。まず、時間制約設定部24aは、上流側の3つの演算+1に対するモード指定コードを参照する。このモード指定コードでは、引数として、(fixed,all)が指定されている。3つの演算+1は、サイクル境界wait()で分離されているので、時間制約設定部24aは、CDFGに、サイクル境界を固定するサイクル境界線データを追加する。さらに、サイクル境界線データで固定されるサイクル境界間およびサイクル境界とノードと間に、時間制約線データを追加する。それから、この時間制約線データに関連付けて、時間制約を確認するための時間制約データを自動設定する。続いて、時間制約設定部24aは、下流側の3つの演算+及び2つの演算*に対するモード指定コードを参照する。このモード指定コードでは、引数として、(superstate,io)が指定されている。時間制約設定部24aは、第1引数がsuperstateなので、サイクル境界線データの追加は行わない。また、第2引数がioなので、サイクル境界線データで固定されるサイクル境界とioノードとの間に対してのみ時間制約線データを追加し、この時間制約線データに関連付けて、時間制約データを自動設定する。第2引数がioなので、下流側の5つのリソースノードについては、時間制約線データを追加することを行わない。
このようにして、時間制約設定処理A5aが終了した状態のCDFGを、図7に示す。図7において、サイクル境界線データを表現したサイクル境界線は横方向の太線を用いて、時間制約線データを表現した時間制約線は矢印付き破線を用いて示されている。時間制約線に付加した時間制約データ[0t]の表記は、その時間制約線の矢印までの遅延時間が確定されていること、及び、その遅延時間が0クロック周期であることを意味している。また、時間制約データ[1t]の表記は、同様に、遅延時間が確定されていること、及び、その遅延時間が1クロック周期であることを意味している。また、時間制約データ[>0t]の表記は、その時間制約線の矢印までの遅延時間が可変であり、遅延時間を調整することができること、及び、その遅延時間が0サイクル以上(例えば、0サイクルでもよく、1サイクルでもよい。)であればよいことを意味している。なお、データ構造上は、各ノードがデータの塊となって表現されており、それぞれのノードが、接続関係に合わせてポインタなどで接続されているグラフとなる。各ノードは、どのサイクル境界間にあるか、というタイミングデータと、サイクル境界からの遅延時間を示す遅延時間データとを有している。なお、図7に示すように、サイクル境界間の時間制約線にも時間制約データを持たせることができる。
時間制約設定処理A5aが終了すると、スケジューリング部25aが、図7に示すようなCDFGに基づいて、スケジューリングを行う。動作合成システム50aのスケジューリング部25aには、予め、実施例1と同様のリソース数量データとリソース遅延データとが与えられている。図7を参照すれば容易に理解されるように、このCDFGには、スケジューリングモードに関する情報が含まれている。従って、スケジューリング部25aは、リソース制約及び時間制約を確認しながら、実施例1の場合と同様に、遅延時間が確定していない5つのリソースノード及び1つのioノードをスケジューリングすることができる。その結果、サイクル境界線が1本追加され、図8のCDFGを得る。図8のCDFGは、図5−4のスケジューリング結果と同じ内容を表している。このように、時間制約設定処理A5aを行うことにより、単一のスケジューリングエンジンを用いて、複数のスケジューリングエンジンを使用した第1の実施の形態の場合と同じ結果が得られている。
なお、時間制約データは、例えば、次のように設定すればよい。まず、第1引数のfixed/superstateについて説明する。サイクル境界を増やしてはいけないfixedの場合には、サイクル境界間に[1t]の時間制約データを設定し、superstateの場合には、時間制約データの設定をスキップする。次に、第2引数のall/io/noneについて説明する。全てサイクル境界を越えてはいけないallの場合、あるサイクル境界から、その次のサイクル境界に到達するまでの間にあるすべての入出力ノード、リソースノードに対して時間制約データを設定する。このときの時間制約データは、第1引数がfixedならば[0t]とし、superstateならば[>0t]とする。第2引数が、ioの場合には、入出力ノードに対してのみ時間制約データを設定する。このときの時間制約データも、第1引数がfixedならば[0t]とし、superstateならば[>0t]とすればよい。第2引数が、noneの場合には、時間制約データを設定しない。このようにすることで、複雑な記述ブロックを組み合わせることによって、あるプロセスが記述されている場合でも、単一のスケジューリングエンジンでスケジーリングすることが可能となる。
本発明の第1の発明を実施するための最良の形態の構成を示すブロック図である。 第1の発明を実施するための最良の形態の動作を示す流れ図である。 本発明の第2の発明を実施するための最良の形態の構成を示すブロック図である。 第2の発明を実施するための最良の形態の動作を示す流れ図である。 動作レベル記述の具体例である。 図5−1の動作レベル記述をスケジュ−リングした途中経過を示す第一の図である。 図5−1の動作レベル記述をスケジュ−リングした途中経過を示す第二の図である。 図5−1の動作レベル記述をスケジュ−リングした結果を示す図である。 図5−4との比較対照図である。 図5−1の動作レベル記述の一部をCDFGにより示す図である。 図6のCDFGについての時間制約設定処理結果を示す図である。 図7に基づいてスケジューリングを行った結果を示す図である。
符号の説明
10 入力装置
20、20a データ処理装置
21 言語解析部
22 内部構造正規化部
23 CDFG生成部
24 スケジューラ選択部
24a 時間制約設定部
25、25a スケジューリング部
26 バインディング部
27 RT記述生成部
30、30a 記憶装置
31、31a システム内部表現記憶部
40 出力装置
50、50a 動作合成システム

Claims (25)

  1. リソース制約を満たすことを確認するためのリソース数量データと、時間制約を満たすことを確認するためのリソース遅延データとを備え、前記リソース数量データ及び前記リソース遅延データを参照しながら、前記リソース制約及び前記時間制約が満たされるように、入出力及びリソースを、クロックサイクルにマッピングするスケジューリング部と、
    動作レベルで記述された回路データに含まれる一つのプロセスの記述範囲を、複数に分割した記述ブロックごとに、スケジューリングモードを指定するモード指定コードを参照すると共に、このモード指定コードによって指定されたスケジューリングモードに従ってスケジューリングが行われるように、前記スケジューリング部を制御するモードコントロール部とを具備する
    動作合成システム。
  2. 前記モードコントロール部は、
    サイクル境界を増やすことを許容するモードか許容しないモードかの指定と、入出力又はリソースがサイクル境界を超えられるモードか超えられないモードかの指定とを備えるモード指定コードを参照する
    請求項1記載の動作合成システム。
  3. 前記モードコントロール部は、
    ある記述ブロックについて、サイクル境界を増やすことを許容するモードの指定を備えるモード指定コードを参照したときには、サイクル境界を固定するサイクル境界線データを生成せず、
    前記記述ブロックについて、サイクル境界を増やすことを許容しないモードの指定を備えるモード指定コードを参照したときには、サイクル境界を固定するサイクル境界線データを生成し、
    前記記述ブロックについて、入出力又はリソースがサイクル境界を超えられるモードの指定を備えるモード指定コードを参照したときには、前記サイクル境界線データによって固定されるサイクル境界と、入出力又はリソースとを結合する時間制約線データを生成せず、
    前記記述ブロックについて、入出力又はリソースがサイクル境界を超えられないモードの指定を備えるモード指定コードを参照したときには、前記サイクル境界線データによって固定されるサイクル境界と、入出力又はリソースとを結合する時間制約線データを生成し、
    前記スケジューリング部は、
    前記サイクル境界線データ及び前記時間制約線データに基づいて、スケジューリングを行う
    請求項2記載の動作合成システム。
  4. 前記モードコントロール部は、
    前記時間制約線データに関連付けて、
    サイクル境界を増やすことを許容するモードの指定を備えるモード指定コードを参照していたときには、時間制約を確認するための時間制約データとして、0クロック周期以上を示す[>0t]を設定し、
    サイクル境界を増やすことを許容しないモードの指定を備えるモード指定コードを参照していたときには、前記時間制約データとして、0クロック周期を示す[0t]を設定し、
    前記スケジューリング部は、
    前記時間制約データに基づいて、スケジューリングを行う
    請求項3記載の動作合成システム。
  5. 前記スケジューリング部は、
    サイクル境界を増やすことを許容するモードであって、入出力又はリソースの全てがサイクル境界を超えられるモードで動作する単一のスケジューリングエンジンを用いてスケジューリングを行う
    請求項4記載の動作合成システム。
  6. 前記スケジューリング部は、
    前記時間制約線データによってサイクル境界に結合されていない入出力又はリソースを、前記サイクル境界線データによって固定されたサイクル境界間のクロックサイクルにマッピングするときには、
    前記リソース数量データを参照して、前記リソース制約が満たされていることを確認し、
    前記リソース遅延データと、前記時間制約データとを参照して、前記時間制約が満たされていることを確認する
    請求項5記載の動作合成システム。
  7. 前記スケジューリング部は、
    前記リソースの一つとして演算器をクロックサイクルにマッピングし、
    前記リソース数量データの一部に、一つのクロックサイクル内で使用できる前記演算器の上限個数を示すデータを含み、
    前記リソース遅延データの一部に、前記演算器の演算時間を示すデータを含む
    請求項6記載の動作合成システム。
  8. 前記モードコントロール部は、
    所定のスケジューリングモードで動作する複数のスケジューリングエンジンを備え、
    前記記述ブロックごとに前記モード指定コードを参照すると、前記複数のスケジューリングエンジンの中から、前記モード指定コードで指定されたスケジューリングモードで動作するスケジューリングエンジンを選択し、
    前記スケジューリング部は、
    前記記述ブロックごとに、前記モードコントロール部が選択したスケジューリングエンジンを用いてスケジューリングを行う
    請求項2記載の動作合成システム。
  9. 前記モードコントロール部は、
    前記複数のスケジューリングエンジンとして、
    サイクル境界を増やすことを許容するモード、かつ、入出力はサイクル境界を超えられないがリソースはサイクル境界を超えられるというモードにて動作するスケジューリングエンジンと、
    サイクル境界を増やすことを許容するモード、かつ、入出力もリソースもサイクル境界を超えられないというモードにて動作するスケジューリングエンジンと、
    サイクル境界を増やすことを許容しないモード、かつ、入出力もリソースもサイクル境界を超えられるというモードにて動作するスケジューリングエンジンと、
    サイクル境界を増やすことを許容しないモード、かつ、入出力はサイクル境界を超えられないがリソースはサイクル境界を超えられるというモードにて動作するスケジューリングエンジンと、
    サイクル境界を増やすことを許容しないモード、かつ、入出力もリソースもサイクル境界を超えられないというモードにて動作するスケジューリングエンジンとを含む
    請求項8記載の動作合成システム。
  10. 前記スケジューリング部は、
    ある記述ブロックについて、一つ目のスケジューリングエンジンを用いてスケジューリングを行った後、次の記述ブロックについて、二つ目のスケジューリングエンジンを用いてスケジューリングを行う場合には、
    前記一つ目のスケジューリングエンジンによって、あるクロックサイクルにマッピングされた入出力又はリソースがあったときには、これらを確定されたものとして扱い、前記リソース遅延データを参照して、前記クロックサイクルの開始から前記入出力又はリソースまでの遅延時間を取得し、
    新規に入出力又はリソースを前記クロックサイクルにマッピングしようとするときには、1クロック周期から前記遅延時間を差し引いた残余時間に基づく時間制約を満たすように、スケジューリングを行う
    請求項9記載の動作合成システム。
  11. 動作レベルで記述された回路データに含まれる一つのプロセスの記述範囲を、複数に分割した記述ブロックごとに、スケジューリングモードを指定するモード指定コードを参照すると共に、このモード指定コードによって指定されたスケジューリングモードに従ってスケジューリングが行われるように制御を行うことと、
    前記制御に従うと共に、リソース制約を満たすことを確認するためのリソース数量データと、時間制約を満たすことを確認するためのリソース遅延データとを参照しながら、前記リソース制約及び前記時間制約が満たされるように、入出力及びリソースをクロックサイクルにマッピングして、スケジューリングを行うこととを具備する
    動作合成方法。
  12. 前記制御を行うことは、
    サイクル境界を増やすことを許容するモードか許容しないモードかの指定と、入出力又はリソースがサイクル境界を超えられるモードか超えられないモードかの指定とを備えるモード指定コードを参照することを含む
    請求項11記載の動作合成方法。
  13. 前記制御を行うことは、
    ある記述ブロックについて、サイクル境界を増やすことを許容するモードの指定を備えるモード指定コードを参照したときには、サイクル境界を固定するサイクル境界線データを生成しないことと、
    前記記述ブロックについて、サイクル境界を増やすことを許容しないモードの指定を備えるモード指定コードを参照したときには、サイクル境界を固定するサイクル境界線データを生成することと、
    前記記述ブロックについて、入出力又はリソースがサイクル境界を超えられるモードの指定を備えるモード指定コードを参照したときには、前記サイクル境界線データによって固定されるサイクル境界と、入出力又はリソースとを結合する時間制約線データを生成しないことと、
    前記記述ブロックについて、入出力又はリソースがサイクル境界を超えられないモードの指定を備えるモード指定コードを参照したときには、前記サイクル境界線データによって固定されるサイクル境界と、入出力又はリソースとを結合する時間制約線データを生成することとを更に含み、
    前記スケジューリングを行うことは、
    前記サイクル境界線データ及び前記時間制約線データに基づいて、スケジューリングを行うことを含む
    請求項12記載の動作合成方法。
  14. 前記制御を行うことは、
    前記時間制約線データに関連付けて、
    サイクル境界を増やすことを許容するモードの指定を備えるモード指定コードを参照していたときには、時間制約を確認するための時間制約データとして、0クロック周期以上を示す[>0t]を設定することと、
    サイクル境界を増やすことを許容しないモードの指定を備えるモード指定コードを参照していたときには、前記時間制約データとして、0クロック周期を示す[0t]を設定することとを更に含み、
    前記スケジューリングを行うことは、
    前記時間制約データに基づいて、スケジューリングを行うことを更に含む
    請求項13記載の動作合成方法。
  15. 前記制御を行うことは、
    前記記述ブロックごとに前記モード指定コードを参照すると、所定のスケジューリングモードで動作する複数のスケジューリングエンジンの中から、前記モード指定コードで指定されたスケジューリングモードで動作するスケジューリングエンジンを選択することを更に含み、
    前記スケジューリングを行うことは、
    前記記述ブロックごとに、前記選択することによって選択されたスケジューリングエンジンを用いてスケジューリングを行うことを含む
    請求項12記載の動作合成方法。
  16. 請求項11〜15いずれか1項に記載の動作合成方法によって、RTレベルで記述された回路データを生成することと、
    前記RTレベルで記述された回路データを用いてシミュレーションを行うこととを具備する
    集積回路の設計方法。
  17. 請求項16記載の集積回路の設計方法によって、集積回路の設計を行うことと、
    この設計に従って、集積回路を製造することとを具備する
    集積回路の製造方法。
  18. リソース制約を満たすことを確認するためのリソース数量データと、時間制約を満たすことを確認するためのリソース遅延データとを備え、前記リソース数量データ及び前記リソース遅延データを参照しながら、前記リソース制約及び前記時間制約が満たされるように、入出力及びリソースを、クロックサイクルにマッピングするスケジューリング部と、
    動作レベルで記述された回路データに含まれる一つのプロセスの記述範囲を、複数に分割した記述ブロックごとに、スケジューリングモードを指定するモード指定コードを参照すると共に、このモード指定コードによって指定されたスケジューリングモードに従ってスケジューリングが行われるように、前記スケジューリング部を制御するモードコントロール部とをコンピュータに実現させるための
    動作合成用プログラム。
  19. 前記モードコントロール部は、
    サイクル境界を増やすことを許容するモードか許容しないモードかの指定と、入出力又はリソースがサイクル境界を超えられるモードか超えられないモードかの指定とを備えるモード指定コードを参照する
    請求項18記載の動作合成用プログラム。
  20. 前記モードコントロール部は、
    ある記述ブロックについて、サイクル境界を増やすことを許容するモードの指定を備えるモード指定コードを参照したときには、サイクル境界を固定するサイクル境界線データを生成せず、
    前記記述ブロックについて、サイクル境界を増やすことを許容しないモードの指定を備えるモード指定コードを参照したときには、サイクル境界を固定するサイクル境界線データを生成し、
    前記記述ブロックについて、入出力又はリソースがサイクル境界を超えられるモードの指定を備えるモード指定コードを参照したときには、前記サイクル境界線データによって固定されるサイクル境界と、入出力又はリソースとを結合する時間制約線データを生成せず、
    前記記述ブロックについて、入出力又はリソースがサイクル境界を超えられないモードの指定を備えるモード指定コードを参照したときには、前記サイクル境界線データによって固定されるサイクル境界と、入出力又はリソースとを結合する時間制約線データを生成し、
    前記スケジューリング部は、
    前記サイクル境界線データ及び前記時間制約線データに基づいて、スケジューリングを行う
    請求項19記載の動作合成用プログラム。
  21. 前記モードコントロール部は、
    前記時間制約線データに関連付けて、
    サイクル境界を増やすことを許容するモードの指定を備えるモード指定コードを参照していたときには、時間制約を確認するための時間制約データとして、0クロック周期以上を示す[>0t]を設定し、
    サイクル境界を増やすことを許容しないモードの指定を備えるモード指定コードを参照していたときには、前記時間制約データとして、0クロック周期を示す[0t]を設定し、
    前記スケジューリング部は、
    前記時間制約データに基づいて、スケジューリングを行う
    請求項20記載の動作合成用プログラム。
  22. 前記スケジューリング部は、
    サイクル境界を増やすことを許容するモードであって、入出力又はリソースの全てがサイクル境界を超えられるモードで動作する単一のスケジューリングエンジンを用いてスケジューリングを行う
    請求項21記載の動作合成用プログラム。
  23. 前記モードコントロール部は、
    所定のスケジューリングモードで動作する複数のスケジューリングエンジンを備え、
    前記記述ブロックごとに前記モード指定コードを参照すると、前記複数のスケジューリングエンジンの中から、前記モード指定コードで指定されたスケジューリングモードで動作するスケジューリングエンジンを選択し、
    前記スケジューリング部は、
    前記記述ブロックごとに、前記モードコントロール部が選択したスケジューリングエンジンを用いてスケジューリングを行う
    請求項19記載の動作合成用プログラム。
  24. 前記モードコントロール部は、
    前記複数のスケジューリングエンジンとして、
    サイクル境界を増やすことを許容するモード、かつ、入出力はサイクル境界を超えられないがリソースはサイクル境界を超えられるというモードにて動作するスケジューリングエンジンと、
    サイクル境界を増やすことを許容するモード、かつ、入出力もリソースもサイクル境界を超えられないというモードにて動作するスケジューリングエンジンと、
    サイクル境界を増やすことを許容しないモード、かつ、入出力もリソースもサイクル境界を超えられるというモードにて動作するスケジューリングエンジンと、
    サイクル境界を増やすことを許容しないモード、かつ、入出力はサイクル境界を超えられないがリソースはサイクル境界を超えられるというモードにて動作するスケジューリングエンジンと、
    サイクル境界を増やすことを許容しないモード、かつ、入出力もリソースもサイクル境界を超えられないというモードにて動作するスケジューリングエンジンとを含む
    請求項23記載の動作合成用プログラム。
  25. 前記スケジューリング部は、
    ある記述ブロックについて、一つ目のスケジューリングエンジンを用いてスケジューリングを行った後、次の記述ブロックについて、二つ目のスケジューリングエンジンを用いてスケジューリングを行う場合には、
    前記一つ目のスケジューリングエンジンによって、あるクロックサイクルにマッピングされた入出力又はリソースがあったときには、これらを確定されたものとして扱い、前記リソース遅延データを参照して、前記クロックサイクルの開始から前記入出力又はリソースまでの遅延時間を取得し、
    新規に入出力又はリソースを前記クロックサイクルにマッピングしようとするときには、1クロック周期から前記遅延時間を差し引いた残余時間に基づく時間制約を満たすように、スケジューリングを行う
    請求項24記載の動作合成用プログラム。
JP2007306341A 2007-11-27 2007-11-27 動作合成システム、動作合成方法および動作合成用プログラム Active JP5229716B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2007306341A JP5229716B2 (ja) 2007-11-27 2007-11-27 動作合成システム、動作合成方法および動作合成用プログラム
US12/277,728 US8056030B2 (en) 2007-11-27 2008-11-25 Behavioral synthesis system, behavioral synthesis method, and behavioral synthesis program

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007306341A JP5229716B2 (ja) 2007-11-27 2007-11-27 動作合成システム、動作合成方法および動作合成用プログラム

Publications (2)

Publication Number Publication Date
JP2009129367A true JP2009129367A (ja) 2009-06-11
JP5229716B2 JP5229716B2 (ja) 2013-07-03

Family

ID=40670827

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007306341A Active JP5229716B2 (ja) 2007-11-27 2007-11-27 動作合成システム、動作合成方法および動作合成用プログラム

Country Status (2)

Country Link
US (1) US8056030B2 (ja)
JP (1) JP5229716B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013200851A (ja) * 2012-03-26 2013-10-03 Fujitsu Ltd 設計支援プログラム、設計支援方法、および設計支援装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2011090518A (ja) * 2009-10-22 2011-05-06 Toshiba Corp 高位合成装置、高位合成方法、及び高位合成プログラム

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000057180A (ja) * 1998-06-04 2000-02-25 Sharp Corp 高位合成装置、高位合成方法および高位合成プログラムを記録した媒体
JP2003150657A (ja) * 2001-11-15 2003-05-23 Matsushita Electric Ind Co Ltd 高位合成方法および高位合成装置
JP2005346290A (ja) * 2004-06-01 2005-12-15 Toshiba Corp 自動高位合成方法及び高位合成プログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5764951A (en) * 1995-05-12 1998-06-09 Synopsys, Inc. Methods for automatically pipelining loops
JP3852741B2 (ja) * 2000-10-31 2006-12-06 シャープ株式会社 高位合成方法および高位合成装置

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000057180A (ja) * 1998-06-04 2000-02-25 Sharp Corp 高位合成装置、高位合成方法および高位合成プログラムを記録した媒体
JP2003150657A (ja) * 2001-11-15 2003-05-23 Matsushita Electric Ind Co Ltd 高位合成方法および高位合成装置
JP2005346290A (ja) * 2004-06-01 2005-12-15 Toshiba Corp 自動高位合成方法及び高位合成プログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013200851A (ja) * 2012-03-26 2013-10-03 Fujitsu Ltd 設計支援プログラム、設計支援方法、および設計支援装置

Also Published As

Publication number Publication date
US20090138842A1 (en) 2009-05-28
JP5229716B2 (ja) 2013-07-03
US8056030B2 (en) 2011-11-08

Similar Documents

Publication Publication Date Title
Ku et al. High level synthesis of ASICs under timing and synchronization constraints
Ferrandi et al. Bambu: an open-source research framework for the high-level synthesis of complex applications
Staunstrup et al. Hardware/software co-design: principles and practice
Canis et al. Modulo SDC scheduling with recurrence minimization in high-level synthesis
US9075624B2 (en) Compilation of system designs
WO2011116478A1 (en) Method of developing application for reconfigurable computing system
JP5797438B2 (ja) シミュレーション装置、シミュレーション方法、シミュレーター及び記憶媒体
US20200150931A1 (en) Systems and methods for aggregating implicit and explicit event code of executable models
JP2001202397A (ja) システム・オン・チップのアーキテクチャ設計支援システム及びアーキテクチャ生成方法
Ren A brief introduction on contemporary high-level synthesis
US7305650B1 (en) Data path synthesis apparatus and method for optimizing a behavioral design description being processed by a behavioral synthesis tool
JP5229716B2 (ja) 動作合成システム、動作合成方法および動作合成用プログラム
JP5228546B2 (ja) 動作合成装置、および、プログラム
Bednara et al. Automatic synthesis of FPGA processor arrays from loop algorithms
US9740529B1 (en) High throughput synchronous resource-constrained scheduling for model-based design
US10983947B2 (en) Method and dynamically reconfigurable processor adapted for management of persistence of information across multiple instruction cycles
Malik et al. Synchronizing distributed state machines in a coarse grain reconfigurable architecture
Matai et al. Trimmed VLIW: Moving application specific processors towards high level synthesis
Ku et al. Synthesis of asics with hercules and hebe
Jozwiak et al. Hardware synthesis for reconfigurable heterogeneous pipelined accelerators
Toi et al. Time and space-multiplexed compilation challenges for dynamically reconfigurable processors
JP5626724B2 (ja) アクセラレータ及びデータ処理方法
Andrikos et al. Optimal and heuristic scheduling algorithms for asynchronous high-level synthesis
Glunz et al. System-level synthesis
JP2006502500A (ja) 回路合成中における最小コストで正確なタイミングのハードウェアの設計方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20101015

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120322

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120410

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120611

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20121024

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130123

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20130130

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130312

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

Free format text: PAYMENT UNTIL: 20160329

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5229716

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313115

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350