(57)【要約】   【課題】  時間の概念を導入し、処理エレメントのレイテンシーや入出力の同期を考慮したシミュレーションを実現する。  【解決手段】  システム１０のトランスレータ１４は、入力および出力の間の演算および処理を定義する機能ブロックの接続に基づいて、パスを解析し、機能ブロックのスループットを算出し、各機能ブロックを、対応する１以上の、集積回路に実際に配置されるべき処理エレメントに変換し、かつ、算出されたレイテンシーにしたがって、処理エレメントの動作の有効無効を制御する制御信号の制御タイミングを決定し、機能ブロック間を相互接続することにより、ブロックを構成する１以上の処理エレメント間の接続を実現する。ブロックごとの処理エレメントの情報、制御タイミング、遅延エレメントの情報および接続の情報を含むネットリストは、記憶装置１２に記憶される。【選択図】  図１
2005258917.tif 000002
【特許請求の範囲】
【請求項１】
集積回路を構成する機能ブロックであって、ユーザにより選択され或いは記述され、入力および出力の間の演算および処理を定義する機能ブロックを記憶した機能ブロックライブラリと、
前記集積回路を構成する処理エレメントであって、集積回路に実際に配置されるエレメントにおける演算および処理を定義した処理エレメントを記憶した処理エレメントライブラリと、
前記機能ブロックライブラリから選択された機能ブロックおよびそれらの接続から定義されるデータフローダイヤグラムを、前記処理エレメントにより表わしたネットリストを生成するトランスレータとを備え、
前記トランスレータが、
前記機能ブロックの接続に基づいて、パスを解析するパス解析手段と、
ブロックのスループットを算出するスループット算出手段と、
各機能ブロックを、対応する１以上の処理エレメントに変換し、かつ、算出されたレイテンシーにしたがって、処理エレメントの動作の有効無効を制御する制御信号の制御タイミングを決定する変換手段と、
前記機能ブロック間を相互接続することにより、前記ブロックを構成する１以上の処理エレメント間の接続を実現する接続手段と、
前記ブロックごとの処理エレメントの情報、制御タイミング、遅延エレメントの情報および前記接続の情報を含むネットリストを生成し、記憶装置に記憶するネットリスト生成手段とを備えたことを特徴とする集積回路の設計支援システム。
【請求項２】
さらに、前記レイテンシーにしたがって、遅延機能を有する処理エレメントを挿入する同期手段を備え、前記ネットリストに、前記遅延機能を有する処理エレメントの情報が含まれることを特徴とする請求項１に記載の設計支援システム。
【請求項３】
ブロックごとに処理エレメントを並列的或いは直列的に配置するための選択情報にしたがって、前記スループット算出手段、変換手段および／または同期手段が、動作することを特徴とする請求項１または２に記載の設計支援システム。
【請求項４】
前記スループット算出手段が、データフローグループ中の最悪の転送期間に基づきスループットを算出することを特徴とする請求項１ないし３の何れか一項に記載の設計支援システム。
【請求項５】
集積回路を構成する機能ブロックであって、ユーザにより選択され或いは記述され、入力および出力の間の演算および処理を定義する機能ブロックを記憶した機能ブロックライブラリと、前記集積回路を構成する処理エレメントであって、集積回路に実際に配置されるエレメントにおける演算および処理を定義した処理エレメントを記憶した処理エレメントライブラリとを備えたコンピュータを、
前記機能ブロックライブラリから選択された機能ブロックおよびそれらの接続から定義されるデータフローダイヤグラムを、前記処理エレメントにより表わしたネットリストを生成するために、
前記機能ブロックの接続に基づいて、パスを解析するパス解析手段、
ブロックのスループットを算出するスループット算出手段、
各機能ブロックを、対応する１以上の処理エレメントに変換し、かつ、算出されたレイテンシーにしたがって、処理エレメントの動作の有効無効を制御する制御信号の制御タイミングを決定する変換手段、
前記機能ブロック間を相互接続することにより、前記ブロックを構成する１以上の処理エレメント間の接続を実現する接続手段、並びに、
前記ブロックごとの処理エレメントの情報、制御タイミング、および、前記接続の情報を含むネットリストを生成し、記憶装置に記憶するネットリスト生成手段として機能させることを特徴とする集積回路の設計支援プログラム。
【請求項６】
さらに、前記コンピュータを、前記レイテンシーにしたがって、遅延機能を有する処理エレメントを挿入する同期手段として機能させ、前記ネットリストに、前記遅延機能を有する処理エレメントの情報が含まれることを特徴とする請求項５に記載の設計支援プログラム。
【請求項７】
前記コンピュータが前記スループット算出手段、変換手段および／または同期手段として動作するときに、ブロックごとに処理エレメントを並列的或いは直列的に配置するための選択情報にしたがうことを特徴とする請求項５または６に記載の設計支援プログラム。
【請求項８】
前記コンピュータが、前記スループット算出手段として機能するときに、当該コンピュータにデータフローグループ中の最悪の転送期間に基づきスループットを算出させることを特徴とする請求項５ないし７の何れか一項に記載の設計支援プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路の設計支援システムおよびプログラムに関し、より詳細には、設計段階において時間の概念を考慮したシミュレーションが可能なシステムおよびプログラムに関する。
【背景技術】
【０００２】
ＬＳＩやＡＳＩＣなどの集積回路を設計するため、ハードウェア記述言語（ＨＤＬ）が利用される。たとえば、Ｃ＋＋に類似する言語を用いて、集積回路を構成する回路の要素（処理エレメント）とその接続を定義することにより、一定のデータフローダイヤグラムを構成することができる。
【０００３】
或いは、それぞれが機能や属性を定義された処理エレメントを、ライブラリから選択して配置し、一方の処理エレメントの出力と、他方の処理エレメントの入力とを接続することにより、データフローダイヤグラムが生成されるような設計支援システムも提案されている。後者を利用すれば、より視覚的な回路設計が可能となる。
【０００４】
このような設計支援システムを利用して生成された、処理エレメントとそれらの間の接続を定義した情報を利用して、入力に所望の値を与えて、信号経路（パス）の所望の位置の出力や、データフローダイヤグラムの出力を検証するシミュレータが知られている。
【０００５】
たとえば、非特許文献１には、集積回路を構成する処理エレメントを接続して作成されたデータフローダイヤグラムのシミュレーション、システム性能の評価などを実行するシミュレータが開示されている。
【非特許文献１】“Real Time Workshop For Use with Simulink” The MathWorks Inc.Version 4 (Release 12) 2000年９月
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、このようなシミュレータは、基本的に時間の概念が導入されていない。たとえば、図８（ａ）に示すような増幅器において、そのゲインが「２」であるとすると、入力信号のあるタイミングにおける値が「ｎ」であると、実際には増幅器内の遅延を考慮すべきであるが、シミュレータにおいては、そのタイミングにおける出力時間は「２ｎ」になってしまう。このような問題は、特に、図８（ｂ）に示すように、ある処理エレメントの出力をフィードバックさせて、同じ処理エレメントの入力の一方に利用する場合に顕著となる。図８（ｂ）において、ＡＬＵが信号を入力してから出力するまでに、３クロック期間を有すると考える。この場合、ＡＬＵ１００の出力信号が、他のＡＬＵ１０１を介して、ＡＬＵ１００にフィードバックするまで、６クロックを要する。したがって、ＡＬＵ１００の出力は、６クロックに一度だけ有効となる。しかしながら、従来のシミュレータにおいては、有効な出力信号を取り出すことが困難であるという問題点があった。
【０００７】
本発明は、時間の概念を導入し、処理エレメントのレイテンシーや入出力の同期を考慮した設計支援システムおよびプログラムを提供することを目的とする。
【課題を解決するための手段】
【０００８】
本発明の目的は、集積回路を構成する機能ブロックであって、ユーザにより選択され或いは記述され、入力および出力の間の演算および処理を定義する機能ブロックを記憶した機能ブロックライブラリと、前記集積回路を構成する処理エレメントであって、集積回路に実際に配置されるエレメントにおける演算および処理を定義した処理エレメントを記憶した処理エレメントライブラリと、前記機能ブロックライブラリから選択された機能ブロックおよびそれらの接続から定義されるデータフローダイヤグラムを、前記処理エレメントにより表わしたネットリストを生成するトランスレータとを備え、前記トランスレータが、前記機能ブロックの接続に基づいて、パスを解析するパス解析手段と、ブロックのスループットを算出するスループット算出手段と、各機能ブロックを、対応する１以上の処理エレメントに変換し、かつ、算出されたレイテンシーにしたがって、処理エレメントの動作の有効無効を制御する制御信号の制御タイミングを決定する変換手段と、前記機能ブロック間を相互接続することにより、前記ブロックを構成する１以上の処理エレメント間の接続を実現する接続手段と、前記ブロックごとの処理エレメントの情報、制御タイミング、遅延エレメントの情報および前記接続の情報を含むネットリストを生成し、記憶装置に記憶するネットリスト生成手段とを備えたことを特徴とする集積回路の設計支援システムにより達成される。
【０００９】
好ましい実施態様においては、さらに、前記レイテンシーにしたがって、遅延機能を有する処理エレメントを挿入する同期手段を備え、前記ネットリストに、前記遅延機能を有する処理エレメントの情報が含まれる。
【００１０】
別の好ましい実施対応においては、ブロックごとに処理エレメントを並列的或いは直列的に配置するための選択情報にしたがって、前記スループット算出手段、変換手段および／または同期手段が、動作することを特徴とする。
【００１１】
さらに好ましい実施態様においては、前記スループット算出手段が、データフローグループ中の最悪の転送期間に基づきスループットを算出する。
【００１２】
また、本発明の目的は、集積回路を構成する機能ブロックであって、ユーザにより選択され或いは記述され、入力および出力の間の演算および処理を定義する機能ブロックを記憶した機能ブロックライブラリと、前記集積回路を構成する処理エレメントであって、集積回路に実際に配置されるエレメントにおける演算および処理を定義した処理エレメントを記憶した処理エレメントライブラリとを備えたコンピュータを、前記機能ブロックライブラリから選択された機能ブロックおよびそれらの接続から定義されるデータフローダイヤグラムを、前記処理エレメントにより表わしたネットリストを生成するために、前記機能ブロックの接続に基づいて、パスを解析するパス解析手段、ブロックのスループットを算出するスループット算出手段、各機能ブロックを、対応する１以上の処理エレメントに変換し、かつ、算出されたレイテンシーにしたがって、処理エレメントの動作の有効無効を制御する制御信号の制御タイミングを決定する変換手段、前記機能ブロック間を相互接続することにより、前記ブロックを構成する１以上の処理エレメント間の接続を実現する接続手段、並びに、前記ブロックごとの処理エレメントの情報、制御タイミング、および、前記接続の情報を含むネットリストを生成し、記憶装置に記憶するネットリスト生成手段として機能させることを特徴とする集積回路の設計支援プログラムによっても達成される。
【００１３】
好ましい実施態様においては、さらに、前記コンピュータを、前記レイテンシーにしたがって、遅延機能を有する処理エレメントを挿入する同期手段として機能させ、前記ネットリストに、前記遅延機能を有する処理エレメントの情報が含まれる。
【００１４】
また、別の好ましい実施態様においては、前記コンピュータが前記スループット算出手段、変換手段および／または同期手段として動作するときに、ブロックごとに処理エレメントを並列的或いは直列的に配置するための選択情報にしたがう。
【００１５】
さらに、前記コンピュータが、前記スループット算出手段として機能するときに、当該コンピュータにデータフローグループ中の最悪の転送期間に基づきスループットを算出させるのが望ましい。
【発明の効果】
【００１６】
本発明によれば、時間の概念を導入し、処理エレメントのレイテンシーや入出力の同期を考慮した設計支援システムおよびプログラムを提供することが可能となる。
【発明を実施するための最良の形態】
【００１７】
以下、添付図面を参照して、本発明の実施の形態について説明する。図１は、本実施の形態にかかる集積回路設計支援システムの概略を示すブロックダイヤグラムである。図１に示すように、集積回路設計支援システム１０は、機能ブロックライブラリなどを格納した記憶装置１２と、記憶装置１２から、ユーザの指示にしたがって、時間概念が導入されていない機能ブロックライブラリ中の機能ブロックを選択するとともに、機能ブロック間を接続した情報を生成し、必要な処理を実行して、時間概念が導入された後の処理エレメントおよびその接続の情報を生成するトランスレータ１４と、キーボードやマウスなどの入力装置１６と、表示装置１８とを有している。
【００１８】
機能ブロックライブラリ１２は、ハードウェア装置などの記憶装置により実現することができる。また、トランスレータ１４は、パーソナルコンピュータにより実現され得る。
【００１９】
なお、本実施の形態においては、機能ブロックは、機能や属性とともに、図形によるシンボルを有している。ユーザは入力装置１６を操作して、シンボルを選択して、表示装置１８の画面上の所定の領域（編集領域）に配置し、かつ、あるシンボルの出力と、他のシンボルの入力とを指定することにより、それらの間を接続することができる。しかしながら、このような構成に限定することはない。たとえば、ユーザは、Ｃ＋＋に類似するハードウェア記述言語により、機能ブロックおよび機能ブロック間の接続を定義しても良い。
【００２０】
以下、本実施の形態における機能ブロック、処理エレメントおよび、一定のデータフローを有するデータフローダイヤグラムについて説明する。
【００２１】
［入力系］
本実施の形態にかかる設計支援システムにおける入力系は、Ｎ入力の機能ブロックからなる。つまり、データフローダイヤグラムは、Ｎ入力の機能ブロックから構成される。機能ブロックの機能は、機能ブロックライブラリに予め定義されている。図２（ａ）は、機能ブロックライブラリ１２の内容を示す図である。図２（ａ）に示すように、機能ブロックライブラリ１２には、加算（ＳＵＭ）、増幅（ＧＡＩＮ）などの機能ブロックのそれぞれに関する種々の情報が記憶されている。種々の情報には、その機能ブロックの機能を記述した定義情報、利用可能なインプリメンテーションの属性、最大スループットなどが含まれる。インプリメンテーションの属性や最大スループットは、設計支援システムの演算により、機能ブロックの情報として追加される。
【００２２】
定義情報は、その機能ブロックの機能を示す。たとえば、Ｚ＝Ａ＋Ｂ＋Ｃ＋Ｄ＋Ｅや、Ｚ（ｔ）＝Ｚ（ｔ−１）（ただし、ｔはサンプル時間）などが、定義情報に該当する。
【００２３】
本実施の形態において、機能ブロック間の接続は、スカラー、ベクトルおよびマトリクスデータのタイプを含む。また、データフローダイヤグラムは、一定のサンプル時間にて作動するように設定される。このサンプル時間は、ハードウェアの動作周波数により決定される。たとえば、ハードウェアの動作周波数が１００ＭＨｚであれば、サンプル時間は１０ｎｓとなる。また、初期的には、データ処理は、レイテンシー無しにモデル化される。
【００２４】
［出力系］
２つのデータ入力、１つのデータ出力の予め定められた処理エレメントのネットワークが、本実施の形態にかかる出力系を構成し、上述した入力系の機能を実現する。処理エレメントの間は、整数値およびブール代数によるバリッドシグナルからなるスカラー信号により接続される。処理エレメントの入力接続は、非接続のまま残すことができ、また、一定値に置き換えることができる。
【００２５】
また、各処理エレメントは、２つのブール代数による制御入力と、１つの制御出力を有する。これらは、上記接続（処理エレメント間の接続）と独立して、接続或いは非接続とすることができる。各処理エレメントは、所定の機能を処理するために、固定されたクロックレイテンシーを有するパイプライン化されたデータパスである。図２（ｂ）に示すように、記憶装置１２中には、ＡＬＵの機能を定義した処理エレメント、ＲＡＭの機能を定義したＲＡＭエレメント、その他、回路を構成するための種々の処理エレメント（たとえば、遅延素子、レジスタなど）の情報を記憶した処理エレメントライブラリが設けられている。
【００２６】
各処理ブロックは、一群の処理エレメントに転換される。グループとして、処理ブロックは、入力から出力まで、固定されたレイテンシーを有する。付加的なパイプラインディレイブロックおよび制御ブロックが、元のデータフローダイヤグラムに付加される。
【００２７】
固定された動作周波数は、予め定義された処理エレメントのために決定される。また、ブロック間のデータ転送の動作周波数は、トランスレータにより決定される。データ入力およびデータ出力の周波数は、機能ブロックごとに相違し得る。
【００２８】
［構成］
次に、本実施の形態にかかる設計支援装置の処理の概略について説明する。各機能ブロックは、予め定められパイプライン化された、２データ入力、１データ出力の、処理エレメントの組からインプリメントされる。この機能ブロックは、各入力から出力まで固定されたレイテンシーを有する。
【００２９】
機能ブロックは、それぞれの、利用可能な機能ブロックおよびそのインプリメンテーションを定義する。あるインターフェイス要求に与えられる機能をインプリメントするために、任意の方法を使用することができる。インプリメンテーションは、インターフェイス要求を満たす。
【００３０】
１ビットの制御信号は、ブロック間のデータ転送を同期させるために使用される。各データ接続に関連する制御信号は、信号バリッドデータ（バリッド信号）に使用される。データフローに依存しない制御信号は、連続的な処理ループ、バリッドデータの出力、および、連続的なパラメータリストのリセットを合図するために生成される。
【００３１】
処理ブロックの内部処理は、並列的に実行され得る。或いは、資源を削減するが、減じられたスループットで動作するように直列的にも処理され得る。
【００３２】
データ処理は、ベクター或いはマトリックのバスの信号上で実行され得る。これら信号は、並列フォーマット或いは直列フォーマットで、機能ブロック間を転送される。機能ブロックは、ベクトル処理フォーマットに割り当てられ、他の関連するブロックも、同一のフォーマットに割り当てられる。
【００３３】
データ処理システムは、パイプライン化されたデータパスを利用してインプリメントされる。データ処理ブロックは、各入力パスで、データパスレイテンシーにしたがって自動的に同期される。
【００３４】
データ処理システムは、異なるデータ転送周波数で動作するブロックを用いてインプリメントされる。各ブロックのデータ処理スループットは、各ブロックの受理データが、処理可能であることを保証するように算出される。
【００３５】
［データ処理系のデータフローダイヤグラムの例］
図３は、簡単なデータ処理系を入力系で記述した例を示す。この処理系は、入力ポート１および入力ポート２で、データ値の流れを受け入れ、出力ポート１に、値の流れを出力する。図３における増幅器(Gain)、ベクトル加算器(Vector Sum)、ユニットディレイ(Unit Delay)、離散フィルタ(Discrete
Filter)、加算器(Sum)が、それぞれ機能ブロックに相当する。
【００３６】
［処理系のパス解析の例］
図４に示すように、処理系全体は、１つのデータフローグループを構成する。単一のベクトルバスの信号は、動作することによりスカラーの結果が与えられるまで、グループをなす。定数値は、目的のブロックに送出される。図４においては、左下部の入力端子(In2)から増幅器(Gain)およびベクトル加算器(Vector Sum)までが、ベクトルグループを構成している。また、図４の例において、ベクトルグループを構成する増幅器(Gain)において、ベクトルの各要素に与えるゲインはそれぞれ２，３，４および５となっている。
【００３７】
［出力系の例］
図５は、上記図３に示す入力系で記述された処理系を、並列ベクトルインプリテーションにより、出力系の処理エレメントで記述した例を示し、図６は、同じ処理系を、直列ベクトルインプリテーションにより、出力系の処理エレメントで記述した例を示す。図５において、「＊」が付された処理エレメントは、乗算オペレータ、「＋」が付された処理エレメントは、加算オペレータである。また、「ＤＥＬ  ｙ」と記載された処理エレメントは、ｙクロックのパイプラインディレイであることを示す。図５において、「Ｌ」は、ネットのレイテンシー(Latency)を示す。また、この例では全てのブロックについてスループット期間は「１」である。
【００３８】
図６においても、「＋」、「＊」および「ＤＥＬ  ｙ」が付された処理エレメントは、図５に関して説明したものと同様である。「＋＝」が付された処理エレメントは、リセット付きの累算オペレータ、「＝＝」が付された処理エレメントは、比較オペレータを示す。「Valid Data」が付された処理エレメントは、データ有効信号(Data Valid Signal)をイネーブルにする。「CNT  A..B」が付された処理エレメントは、値「Ａ」から「Ｂ」までをカウントするカウンタを示す。また、「ＲＡＭ」が付された処理エレメントは、プログラム可能なメモリブロックである。図５の例と同様に、「Ｌ」は、ネットのレイテンシーを示す。その一方、「Ｔ」は、それぞれスループット期間を示す。
【００３９】
［変換フロー］
次に、図７のフローチャートを参照して、本実施の形態にかかる、入力系のデータフローダイヤグラムから、出力系の処理エレメントの情報（ネットリストファイル）に変換する処理について説明する。
【００４０】
［データフローダイヤグラム生成］
まず、ユーザは、入力装置を操作して、記憶装置１２の機能ブロックライブラリから所望の機能ブロックを選択して、そのシンボルを、表示装置１８の画面上の所定の領域（編集領域）に配置し、かつ、機能ブロック間を接続することにより、データフローダイヤグラムを生成する（ステップ７０１）。
【００４１】
［パス解析］
次いで、ベクトル接続およびデータフロー接続のためのパス解析が実行される（ステップ７０２）。前述したように、ダイヤグラム中の各ブロックは、機能ブロックライブラリ中のブロックに対応している。
【００４２】
パス解析は、以下の論理に従う。
（１）出力ポートの無いブロックは、それぞれ、パスの終了点とみなされる。
（２）入力ポートの無いブロックは、パスの開始点とみなされる。
（３）パスは、源のブロックへの各ブロックのベクトル入力にしたがうことにより、パスの終了点から、パスの開始点のそれぞれまで横切る。
（４）パスのリストが生成される。リストの内容は、ブロックごとの一意的な数字の識別子である。
（４）第１のパスから、第１のパスグループが生成される。
（５）各パスが調べられる。存在するパスグループで共通するブロックが存在すれば、パスのブロックが当該存在するパスグループに追加される。それ以外の場合には、パスのブロックは、新たなパスグループに追加される。
（６）上述した手法は、ベクトルおよび全てのデータフローパスグループを決定するために用いられる。
（７）データフローグループを決定するために、全てのベクトルおよびデータフローパスが解析される。
（８）ベクトルグループを決定するために、ベクトル化されたポートのみが解析され、スカラーポートは無視される。
【００４３】
また、ブロックについて以下の処理も実行される。
ａ）定数出力値を有するブロックが調査され、当該出力値が、ブロックのインプリメンテーションに依存するブロックパラメータへの可能な変換のため、行き先のブロックに送出され、付加される。
ｂ）ブロックのインスタンスが調査され、ブロックのベクトル接続性が割り当てられ、かつ、ベクトルグループとして、同じベクトルバス上の他のブロックとともにグループ化される。
ｃ）ブロックインスタンスが調査され、全ての接続性が割り当てられ、データフローグループとしてグループ化される。
【００４４】
［ブロック解析］
次いで、ブロック解析が実行され、ユーザの選択（ステップ７０３）に基づき、ブロックごとの並列インプリメンテーション或いは直列インプリメンテーションが決定される（ステップ７０４）。
【００４５】
ここでは、処理系内の各ブロックのインスタンスが調査され、ライブラリが参照されて、インスタンスの与えられたパラメータのために有用なインプリメンテーションの方法が決定される
たとえば、ユーザは、各ブロックインスタンスについて、「資源」対「データスループット」の用いるべき優位性を特定し、これに基づきインプリメンテーションが決定される。或いは、トランスレータによる処理が開始される前に、ユーザが所望のデフォルト選択を設定していてもよい。
【００４６】
各ブロックは以下の属性を有する。
ベクトル転送および算出のサポートされた手法：並列か直列か
内部インプリメンテーションのサポートされた手法：並列か直列か
そこで、各インスタンスに対するインプリメンテーションは以下のように選択される。すなわち、ユーザは、ブロックのリストを与え、各ブロック或いは一群のブロックに対して、インプリメンテーションの方法が選択され得る。ベクトルのインプリメンテーションの方法について、一つのブロックが変更された場合には、同じグループの全てのブロックに、同じ方法が割り当てられる。
【００４７】
［スループットの算出］
各ブロックインスタンスおよびそのインプリメンテーションの方法について、処理系における他のブロックとの接続性、および、各ブロックの必要性に基づき、入力データのレートおよび出力データのレートが算出される（ステップ７０５）。各ブロックの要求は、インスタンスのパラメータに基づき、機能ブロックライブラリから算出される。なお、この算出結果が満足でなければ、ユーザは、ステップ７０４に戻ることができる。
【００４８】
スループットは、以下の見地から算出される。なお、以下の説明において、スループット期間とは、１つの有効なデータワードが、データ接続上を転送されるサイクル数を示し、転送期間とは、１つのデータパケットがデータ接続上を転送されるサイクル数を示す。
【００４９】
並列ベクトル或いはスカラー信号について、データパケットは、１スループット期間で転送される。また、直列ベクトル信号について、データパケットは、スループット期間＊ベクトル幅で転送される。
【００５０】
各ブロックインスタンスの各ポートについてのスループットの算出手法は以下の通りである。
（１）データフローダイヤグラムは、可能なデータパスのそれぞれを、設計中のデータ転送ポイントのリストとして記憶するように横切られる。これらレコードは以下の通りである。
{ブロックインスタンスの一意的ＩＤ，入力ポート，出力ポート}
【００５１】
（２）各ブロックのインプリメンテーションは、ブロックインスタンスのパラメータおよびインプリメネテーションの方法に基づき、各ポートについて求められる入力データレートおよび出力データレートを算出する。
（３）Ａ３次元マトリクスが用いられ、各ブロック、パスおよびポートのスループット機関が記録される。
【００５２】
（４）各データパスは、入力から出力まで横切られ、パス上の各接続でデータを転送するのに必要な時間が決定される。
（５）ブロックの入力で必要なスループット期間が、先行する出力よりも大きければ、先行する全てのブロックのスループットを調整して、入力のスループットの要求が満たされるように保証する。ブロックの入力のスループットは、ブロックインプリミンテーションにより特定されるような、必要な入力スループットである。その一方、それ以外の場合（先行する出力以下である場合）には、ブロックについての入力のスループット期間は、先行するブロックの出力から受け継がれる。
【００５３】
（６）ブロックからの出力のスループットは、入力のスループットに基づいて、機能ブロックライブラリに基づいて算出される。
（７）各ブロックについて、入力の転送時間は、すべての入力で同一でなければならない。これは、以下のように定義される。
入力の転送時間＝入力のスループット期間＊入力のベクトルバスの幅
なお、全ての与えられたデータフローのグループについて、転送時間は、全てのブロックで同一である。
（７）各ブロックの最悪の入力の転送期間について調べられる。
（８）各データフローグループについて、ブロックごとの最悪の転送期間が決定される。
【００５４】
データフローグループ中の各ブロックに、転送期間が割り当てられる。
【００５５】
ステップ７０５により、ブロックごとのスループットが記述されたスループットリポートが生成される。このスループットリポートは、記憶装置１２の所定の領域に記憶される。
【００５６】
［ブロックインプリメンテーション］
各ブロックインスタンスについて、機能ブロックライブラリが参照されて、所定の処理エレメントおよびブロックインスタンシエーションを利用したブロックインプリメンテーションが実行される（ステップ７０６）。
【００５７】
所定の処理エレメントは、処理エレメントのライブラリ（図２（ｂ）参照）から選択される。また、ブロックインスタンシエーションは、ダイヤグラムからのオリジナルデータおよび変換パラメータからのものである。
【００５８】
このステップにおいては、
ａ）構造パラメータが使用され、特定のインプリメンテーションが生成される。
ｂ）数字パラメータは、インプリメンテーションのパラメータとして保存される。
ｃ）ブロックインスタンスへのパラメータとして、付加的な制御ポートが追加される。
【００５９】
機能ブロックのタイプごとに、独立した処理回路ジェネレータが用いられる。各機能ブロックは関連する使用およびパラメータを有する特定のオブジェクトタイプを有している。任意のブロックタイプは、この仕様に基づく、多数の回路インプリメンテーションを有し得る。各機能のタイプに対してインプリメントされる回路エレメントは、以下のインターフェイス要求を有する。
【００６０】
ブロックの入力および出力の各々は、関連するバリッドデータ制御信号を有する。バリッド入力信号が入力されたときのみ、バリッドデータ信号が出力される。入力後、決められたクロックサイクル数で出力されなければならない。このレイテンシーは、ブロックインプリメンテーションのパラメータである。
【００６１】
Ｎ個のバリッドデータ入力に対して、Ｍ個のバリッドデータが出力される。［Ｎ，Ｍ］の比は、インスタンスパラメータに基づき、ブロックインプリメンテーションにより算出される。
【００６２】
新たなデータパケット（１つの完全なベクトル或いはスカラー値）は、ブロックの転送期間に割り当てられた後にのみ、出力され得る。
【００６３】
バリッド入力データは、Ｔクロックサイクルごとに受け入れられねばならない。この入力スループット期間Ｔは、ブロック実施のパラメータである。Ｔクロックサイクルより大きいバリッド期間を持つデータは、ブロックにより正確に処理されなければならない。
【００６４】
［制御ロジックの挿入］
次いで、トランスレータ１４は、機能ブロックのインプリテーションの必要性にしたがって、制御回路を追加する（ステップ７０７）。ステップ７０７では以下の処理が実行される。
ａ）存在するブロックの新たな制御ポートパラメータが調べられる。
ｂ）ステップ７０６の処理結果を利用して、連続的な制御ブロックが、新たなブロックインスタンスとしてインプリメントされる。
ｃ）ブロックインスタンスとして実施すべき新たな制御ポートパラメータが存在しなくなるまで、上記ａ）およびｂ）のループが繰り返される。
【００６５】
なお、本実施の形態においては、Ｎクロック巡回カウンタ、カウンタ比較器、および、パラメータメモリからの繰り返し読み出し回路などが、制御ロジックブロックとしてライブラリに定義されている。
【００６６】
［パイプラインレイテンシーの同期］
さらに、トランスレータ１４は、各ブロックインスタンスのレイテンシーにしたがって、パイプライン同期のディレイエレメントを、ブロックの入力に挿入する（ステップ７０８）。
【００６７】
ステップ７０８において、各データフローダイヤグラムは、パイプラインレイテンシーが無いものとして定義され、その後に、各ブロックインスタンスがインプリメンテーションされ、そのインプリメンテーションからパイプラインレイテンシーが決定される。各ブロックは、それぞれの入力から出力まで同一のレイテンシーを維持する。
【００６８】
「遅延エレメント」、つまり、パイプラインディレイが、データパスを同期させるために使用される。これは、データを遅延させる所定のエレメント、或いは、プログラム可能なクロックサイクル数ごとの同期パイプラインを用いた制御信号である。また、入力から出力までのデータフローダイヤグラムを介したパスの各々が横断される。
【００６９】
各ブロックの入力で、先行する出力からのレイテンシーが、入力への属性として適用される。その一方、出力レイテンシーは、最悪の入力ポートのレイテンシーと、ブロックインプリメンテーションによるレイテンシーとの和である。遅延エレメントは、最悪の入力レイテンシーと調和しないポートのために挿入される。
【００７０】
［内部接続］
ベクトルインプリメンテーションモードにしたがって、各ブロック間のブロック接続がなされる（ステップ７０９）。たとえば、並列のベクトル処理ブロックは、多重接続にて接続される。その一方、直列のベクトル処理ブロックは、単一の接続として接続される。
【００７１】
ブロック間の接続により、処理系における内部接続が完了する。ブロックインプリメンテーション（ステップ７０６）による処理結果、挿入された制御ブロックの情報（ステップ７０７参照）、ブロックごとのレイテンシー（ステップ７０８参照）、および、ブロック間の接続の情報は、ネットリストファイルとして、記憶装置１２の所定の領域に記憶される（ステップ６１０）。これにより、処理系が、図５および図６に示すように、処理エレメントにより記述され、かつ、ブロックごとのレイテンシーなどが規定されたデータフローダイヤグラムのネットリストを取得することが可能となる。
【００７２】
本実施の形態によれば、機能ブロックライブラリを接続したデータフローダイヤグラムから、ブロックインプリメンテーションによって、並列或いは直列の１以上の処理エレメントに変換される。また、ブロックのスループットやレイテンシーも算出され、これにしたがって、処理エレメントの動作の有効無効を指示するための制御信号を、処理エレメントに付加するとともに、必要な制御回路を追加することができる。このようにして得られたネットリストを利用することにより、スループットおよびレイテンシーを考慮し、時間の概念が導入されたシミュレーションが実現される。
【００７３】
本発明は、以上の実施の形態に限定されることなく、特許請求の範囲に記載された発明の範囲内で、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。
【図面の簡単な説明】
【００７４】
【図１】図１は、本実施の形態にかかる集積回路設計支援システムの概略を示すブロックダイヤグラムである。
【図２】図２（ａ）は、機能ブロックライブラリの内容を示す図、図２（ｂ）は、処理エレメントライブラリの内容を示す図である。
【図３】図３は、簡単なデータ処理系を入力系で記述した例を示す。
【図４】図４は、上記データ処理系のデータフローグループを説明する図である。
【図５】図５は、図３に示す入力系で記述された処理系を、並列ベクトルインプリテーションにより、出力系の処理エレメントで記述した例を示す図である。
【図６】図６は、図３に示す入力系で記述された処理系を、直列ベクトルインプリテーションにより、出力系の処理エレメントで記述した例を示す図である。
【図７】図７は、本実施の形態にかかるトランスレータにて実行されるフローチャートを示す図である。
【図８】シミュレーションの対象となる回路例を示す図である。
【符号の説明】
【００７５】
１０    集積回路設計支援システム
１２    記憶装置
１４    トランスレータ
１６    入力装置
１８    表示装置
【図１】
2005258917.tif 000003
【図２】
2005258917.tif 000004
【図３】
2005258917.tif 000005
【図４】
2005258917.tif 000006
【図５】
2005258917.tif 000007
【図６】
2005258917.tif 000008
【図７】
2005258917.tif 000009
【図８】
2005258917.tif 000010