【誤訳訂正書】
【提出日】平成20年2月27日(2008.2.27)
【誤訳訂正１】
【訂正対象書類名】明細書
【訂正対象項目名】全文
【訂正方法】変更
【訂正の内容】
【発明の詳細な説明】
【発明の名称】ヴィーバ
【技術分野】
【０００１】
【発明を実施するための最良の形態】
【０００２】
（合成プロセス及びハイ・レベルダイアグラム動作記述言語の概要）
本発明は、新規なコンピューターソフトに基づいた合成プロセスを実行する新規なハイ・レベルダイアグラム動作記述言語を提供する。本発明の好ましい実施例に係る動作合成プロセスは、動作を実行する設計データベース中で一般化された動作設計を、設計オブジェクトの詳細な相互連結に変形する。詳述すると、新しい合成プロセスは、動作のハイ・レベル図表における記述から、動作を実行するために詳細な設計を合成する。発明の１つの態様では、動作の合成プロセスは、ハイ・レベルブロック、或いは概要の設計トポロジーを、同様な設計トポロジーを実施する設計対象の相互連結を含む詳細な設計に変形する。本実施例において、詳細設計は、ハードウェアをターゲットとするネットリストを含む。ハードウェアへの適応は、本発明の一部を形成しない環境及びルーティングソフトウェアー・ツールによって実現できる。
【０００３】
オペレーションにおいて、ユーザーは、コンピュータ・ユーザ・インターフェース上の設計における所要の動作図表表現を生成する。設計動作図表表現は、グラフィックの対象のライブラリーから取得されたグラフィックオブジェクトを使用して生成される。設計中のグラフィックオブジェクトは、所要の動作を表すブロック又は概要図を生成するために接続される。グラフィックオブジェクトは互いに、移送オブジェクトとして参照された特別のグラフィックオブジェクトと関連付けられる。グラフィックオブジェクト・ライブラリーは、原子初期グラフィックオブジェクトを含んでいる。また、それは合成グラフィックオブジェクトを含んでいる。原子初期オブジェクトは他のグラフィックオブジェクトへ分解することができないグラフィックオブジェクトである。合成グラフィックオブジェクトは、他のグラフィックオブジェクトから構成されるオブジェクトである。このように、設計の描写は、合成グラフィックオブジェクトを含んでいてもよく、それ自身に、移送オブジェクトによって互いに接続された他のグラフィックオブジェクトを含んでもよい。さらに、ライブラリーのグラフィックオブジェクトは、関係クラスのようなオブジェクトの中で階層的に関連づけられるものであってもよい。例えば、加算動作クラスにおいて、トップレベルのグラフィックオブジェクトは、加算動作クラスでのより低いレベルのグラフィックオブジェクトを参照する。トップレベルのグラフィックオブジェクトが設計に挿入されるに従って、より低いレベルの加算オブジェクト・クラス内のグラフィックオブジェクトを参照する。
【０００４】
本発明の別の態様では、ユーザーがコンピュータ・ユーザ・インターフェース上における所要の動作図表の描写を生成したときに、設計オブジェクトで構成された設計データベースが自動的に生成される。すなわち、ユーザーがコンピュータ・ユーザ・インターフェース上において、所要の動作図表の描写を生成したとき、対応する設計データベースはコンピュータ読み取り可能な記憶媒体の中に生成される。設計データベースは、所要の設計動作図表の描写に個々のグラフィックオブジェクトのために少なくとも１つの設計オブジェクトを含んでいる。概念的に、多数が設計し、グラフィックス・オブジェクトが階層的であるので、設計オブジェクト及びグラフィックス・オブジェクトの関係は単純な１対１の関係ではない。また、１つのハイ・レベルのオブジェクトは、自分自身を、或いはその階層中の１つ以上の他のオブジェクトを参照するようにしてもよい。このように、コンピュータ・ユーザ・インターフェース上で生成された設計動作図表の描写トポロジーは、設計データベースの中で設計トポロジーと一致する。個々の初期のグラフィックオブジェクトについては、対応する初期の設計オブジェクトがある。個々の合成グラフィックオブジェクトについては、対応する合成設計オブジェクトがある。図表の描写での他のグラフィックオブジェクトを相互に連結させるグラフィック移送オブジェクトのネットワークは、設計データベース中の他の設計オブジェクトを相互に連結させる設計移送オブジェクトのネットワークとマッチングを行う。
【０００５】
合成プロセスは、所要の動作を達成するために所要の設計動作図表における描写トポロジーを原子的オブジェクトの相互連結に変形する。この実施例では、合成プロセスは実際のネットリストを生産する。合成プロセスは、ユーザ・インターフェース上の動作図表の図表描画及び設計データベース中の対応設計トポロジーの両方を変形する。したがって、ユーザ・インターフェース上の設計動作の図表描画は設計データベース中における設計トポロジー上の合成プロセスの結果及び効果を評価するために使用することができる。
【０００６】
ハイ・レベルのブロックまたは概要の設計トポロジーを、システムの所要の動作を表すために生成するに際し、新しい言語は提供される。所要のシステム動作におけるハイ・レベル図表記述から合成することができ、所要の設計を実施するために相互に連結した設計オブジェクトを含む詳細な設計データベースにおいて、新しい合成プロセスが提供される。このように、システムの詳細な動作のデザインは、システムにおける所要の動作図表記述から直接合成することができる。
【０００７】
（多重スレッド動作合成プロセス）
発明の好ましい実施例に従う合成プロセスは、実行の多重動作合成プロセスを含む。これらのスレッドまたはプロセスは以下のように要約される、
データセットを伝達させる
情報率を伝達させる
定数を生成する
定数を伝達させる
階層的オブジェクトを平坦化する
等価な機能（平坦化とともに作動する）を選択する。
【０００８】
抽出とコレクタのオブジェクト
削除ソースレス及びシンクレス・オブジェクト
圧縮移送
実行のスレッドは同時に行われる。各スレッドについては、基礎的な実行プロセスが、中間コード中に、一般的に以下のように記述される。
【０００９】
while (cando)
{for each object in the database,
DO (Thread)
}
if anything was done by any Thread to any object in the database, then cando is true;
基本的に、実行のスレッドの各々は設計オブジェクトで作動する。スレッドは並列に作動する。それは、それらが同時に作動するということである。しかし、それらは必ずしも同様な設計オブジェクト上で同時に作動しない。例えば、スレッドの各々は、同時に異なる設計オブジェクト上で作動するかもしれない。
【００１０】
スレッドの各々は、種々の方式で作動するオブジェクトを変形することができる。例えば、平坦化スレッドは、オブジェクト・クラス階層中のより高いレベル・オブジェクトの代わりのオブジェクト・クラス階層中のより低いレベル・オブジェクトを代用してもよい。そのような変形は有効に漸増的に設計を変形する。例えば、単に少数の多くの可能なインクリメントの設計変更に言及するために、新しいオブジェクトを設計に加えてもよく、或いは、オブジェクトを設計から取り除いてもよく、また、設計中のオブジェクトの関係を変更してもよい。実行の多数のスレッドが、全面的に設計の異なるオブジェクトを同時に処理するとき、これらのインクリメントの変更は徐々に設計を変形する。スレッドの各々は、全面的な合成プロセスにおいて異なる様相を達成する。例えば、伝達データセットスレッドは、設計によってデータセット・タイプを伝達させる。単一層オブジェクトプロセスはハイ・レベルのオブジェクトを等価なより低いレベル・オブジェクトに取り替える。削除ソースレスとシンクレスプロセスは、設計ソースノード及びシンクノード、及びそのようなノードに接続されたあるオブジェクトから移動する。スレッドは、互いから独立して作動する。しかしながら、様々なスレッド実行として、設計データベースは変形され、あらかじめ与えられたスレッドによって処理される準備ができていなかったオブジェクトが、その結果としてその与えられたスレッドによって処理することの準備ができているようになる。
【００１１】
その後、そのスレッドはそのような新しく準備されたオブジェクトを処理することができる。さらに、その与えられたスレッドによる処理は、他のオブジェクトが、他の未処理のスレッドによる処理ができるように、設計データベースを変形する。例えば、明示的なタイプ・データセットが、その対象物のデータ入力ノードに伝達するまで、平坦化プロセスはバリアント型データセットタイプオブジェクト上で遂行することができない。さらに、そのオブジェクトに対する平坦化プロセスのオペレーションは１つ以上のソース或いはシンクノードを無関係にし、無関係なノード上で作動する削除ソースレスとシンクレスノードスレッドの契機を生成する。このように、設計データベースは、実行の様々なスレッドの相互作用によって合成プロセスの全体にわたって連続的に修正される。
【００１２】
（多次元の再帰的な「波面」動作合成プロセス）
グラフィック移送オブジェクトは所要の動作図表の記述で設計オブジェクトの関係を示すために使用される。設計ダイアグラム中の各グラフィック移送オブジェクトは、対応する設計データベース中の少なくとも１つの設計移送オブジェクトに相当する。設計ダイアグラム中のグラフィック移送オブジェクトは、１つのグラフィックオブジェクトから次まで設計ダイアグラムにおいて情報の流れを表す。同様に、設計移送オブジェクトは、設計データベース中の相互に連結した設計オブジェクトを含み、対応する設計中における情報の流れを表す。このように、移送オブジェクトによって直覚的なメカニズムを提供する。ユーザーは、グラフィック・デザイン・ダイアグラム、及び設計データベース中の対応する設計を通して情報の流れを理解することができる。
【００１３】
移送オブジェクトは、合成プロセスの間に別の重要な役割にも供される。特に、移送オブジェクトは、実行の１つ以上のスレッドによって処理される次のトークン（オブジェクト）を定義する。例えば、設計では、与えられた移送オブジェクトが別のバリアント型データセットタイプオブジェクトに第１の上流オブジェクトを接続すると仮定する。その場合では、データセット伝達プロセスは、第１のオブジェクトの出力ノードから与えられた移送オブジェクトの入力ノードまでデータセット・タイプを伝達させる（或いはコピー）。その後、それは、与えられたオブジェクトの入力ノードから与えられたオブジェクトの出力ノードまでデータセット・タイプを伝達させる。次に、それは、移送オブジェクトの出力ノードから第２のオブジェクトの入力ノードまでデータセット・タイプを伝達させる。
【００１４】
データセット伝達プロセスは、移送オブジェクトによって仕切られた設計を通して経路パスに従う。同様に、実行の他のスレッドは、設計中の移送オブジェクトによって仕切られたパスに従う。根本的に、移送オブジェクトは、処理される次のトークンを識別する合成（コンパイラー）プロセスの間、辞書的な要素として供される。ここに記述された実行の複合スレッドは次のトークン識別子として移送オブジェクトを使用する。
【００１５】
発明の本実施例に従う図表の動作設計は、グラフィックオブジェクトを相互に連結させるグラフィック移送オブジェクトに、２つ次元のネットワークを含む。
【００１６】
本実施例に係る動作図表の記述が複合の入力ノード及び複合の出力ノードでグラフィックオブジェクトの相互連結を含んでいると考慮する。さらに、複雑な設計の図表描画がグラフィックオブジェクト中の異なるパスを生成する多数の支流分岐を持っていると考慮する。分岐はグラフィック移送オブジェクトで生成される。そのようなダイアグラム中の個々のグラフィックオブジェクトについては、少なくとも１つの対応する設計オブジェクトが対応する設計データベースに存在すると記憶する。このように、設計データベースに他の設計オブジェクトを相互に連結させる設計移送オブジェクトにおいて、２つ次元のネットワークが存在する。
【００１７】
合成プロセス中に、複合のスレッド実行での対応関係は、本来、移送のネットワーク、及び次のトークン識別子として供されるネットワーク中における移送オブジェクトの２次元の性質のコンビネーションから進展する。さらに、実行処理における所定のスレッドによる処理が設計中のオブジェクトからオブジェクトまで一度に実行処理の単に１つのパスに従わないこととなる。もっと正確に言えば、設計中の移送オブジェクトにおいて、ネットワーク中の多くの移送オブジェクトが、どの時間にも実行処理の複合のパスを仕切ることができる。このように、例えば、第１スレッドは、１つの分岐或いは設計を通してパス上の移送オブジェクトによって識別されたオブジェクトの第１プロセスを実行する。次に、同様な第１スレッドは、設計を通して異なるパス上の、異なる移送によって識別された別のオブジェクトを処理するようにしてもよい。その後に、その同一の第１スレッドは、これら同一の２つのパスの一方における、或いは設計を通して異なるパス上の他の未処理トランスポートオブジェクトによって識別された別のオブジェクトをさらに処理する。設計中の移送オブジェクトによって識別されるように同様のやり方（次のものの後の処理１オブジェクト）で各々の複合のプロセスが同時に進んでいると考える。全体的影響は、設計を通って移動する波面のような合成プロセスフローである。複合スレッドは、交替処理を、設計中の移送オブジェクトの２次元のネットワーク中の異なる移送オブジェクトによって仕切られた様々なパスの間で実行する。
【００１８】
合成プロセスの位置は、合成プロセスの間に何度も繰り返して変化する。
【００１９】
それにより、あたかもそれらが波面かのように、実行処理の複合のスレッドは総体として設計データベースを通して移動する。設計中のオブジェクトがそのスレッドによって処理することの準備ができる場合、各スレッドは実行される。現実に実行し始めることができる前に、利用可能な処理資源（例えば、コンピュータ・サイクル・タイム）をスレッドが待たなければならないかもしれないことはもちろん評価されるだろう。与えられたスレッドが１つのオブジェクトの処理を完成する場合、それは、別のオブジェクトはそれによって処理される準備ができる場合、別のオブジェクトの処理を続行する。例えば、平坦化スレッドに対して、バリアント型オブジェクトは、データ入力ノードがすべてそれらにデータセットを伝達させる場合、処理の準備をする。他のオブジェクトが与えられたスレッドによって処理の準備ができない場合、１つ以上の他のスレッドによる処理が別のオブジェクトを、その与えられたスレッドによる処理の準備ができるまで、スレッドは使用されていないままとなる。例えば、伝達データセットスレッドは、バリアント型オブジェクトの入力ノードへのデータセット・タイプを伝達させるかもしれない。平坦化プロセスは、設計のこの変化に注意し、停止状態から出現し、バリアント型オブジェクトを平坦化する。
【００２０】
合成のこの形式に固有の利点がある。特に、設計中の１つのオブジェクト合成は、より本来設計において別のオブジェクトの合成に依存させることができる。この依存性の利点は、この開示の他のセクションに記述された多態オブジェクトの生成として明示される。
【００２１】
従来のコンパイラー処理フローと対比すると、トークンが次元の１つの方法において処理される。基本的に、Ｃ、Ｖｅｒｉｌｏｇ及びＶＨＤＬのような言語では、処理される次のトークンは関数記述子に次のトークンとして定義される。
【００２２】
これらの言語は、Ｖｅｒｉｌｏｇにおける「同時的」、ＶＨＤＬにおける「並列」のように、並行処理を達成するための特別な構成を備えている。比較すると、合成プロセスの間における、オブジェクト中の並列の依存性が、この発明の本実施例に従って並列の合成プロセスを通じてより本来的に実現される。
【００２３】
（ハイ・レベルダイアグラム動作記述言語の公理システム及び基礎的なオペレーター）
合成プロセス、及び発明の本実施例にかかるハイ・レベルのダイアグラム動作記述言語は、我々がここに公理システムと指称される基本原則の新しいセットに基づいて作られる。公理は、自明か或いは普遍的に認識された事実である。この開示に記述された公理システムは新しく、したがって、普遍的に認識されたものではない。しかしながら、それは自明であると考えられる。著しく、公理システムは、異なる設計オブジェクトの動作について、同等に関連する重要な新しい仮定の根拠として供される。
【００２４】
このセクションは、ハイ・レベルのダイアグラム動作記述言語を有する使用のために開発されていた公理システム及びいくつかの特別なオペレーターを含むオペレーターを紹介する。このセクションは、さらに同等に関する新しい仮定を取り入れる。最後に、このセクションは、システムの動作の設計を生成するより重要な過程を対比させることにより、公理システム及び仮定を展望に入れる。
【００２５】
（公理システム）
図Ｈ１−Ｈ８は、公理システムのオペレーターの図示を提供する。公理システムは、２つのカテゴリーのオペレーターによって作動する基礎的な情報ユニットを含んでいる。基礎的な情報ユニットは情報原子（以下に「原子」）と呼ばれる、２つのカテゴリーの公理システム・オペレータは所在地オペレーター及び公用オペレーターである。所在地オペレーター・カテゴリーは、ソースオブジェクト、シンクオブジェクト、移送オブジェクト及び譲渡オブジェクトを含んでいる。公用オペレーターはＡＮＤ、ＯＲ及びＩＮＶＥＲＴの論理的な機能を含む。
【００２６】
公理システムに応じて、所在地と状態のプロパティによって定義される図Ｈ１において図示された情報原子６００が存在する。可能な所在地は、公理システムに応じるように作成された設計動作にノードを含んでいる。可能な状態は論理的な０及び論理的な１を含んでいる。
【００２７】
図Ｈ２において図示されたソース・オブジェクト６０２は出力ノード６０４を含んでいる。公理システムに応じて、ソース・オブジェクト６０２は情報原子６００のソースとして供されることができる。情報原子６００は、その所在地としてソース・オブジェクト６０２のソース・ノード６０４を有することができる。
【００２８】
図Ｈ３において図示されたシンクオブジェクト６０６は入力ノード６０８を含んでいる。公理システムに応じて、シンクオブジェクト６０６は情報原子６００用のシンクとして供されることができる。情報原子６００は、その所在地としてシンクオブジェクト６０６のシンク・ノード６０８を持つことができる。
【００２９】
図Ｈ４において図示された移送オブジェクト６１０は入力ノード６１２及び出力ノード６１４を含んでいる。公理システムに応じて、移送オブジェクト６１０は、情報原子６００の所在地特性を変更することができる。原子は、入力ノード６１２或いは移送オブジェクト６１０の出力ノード６１４としてその所在地を持つことができる。移送オブジェクト６１０の動作は、入力ノード６１２から出力ノード６１４まで情報原子６００を輸送することである。図Ｈ４における移送オブジェクト６１０は単に１つの出力ノード６１４で示されているが、移送オブジェクトは公理システムと一致する複合の出力ノードを持つことができる。多重出力ノード移送オブジェクトの動作は、入力ノードからの情報原子の所在地プロパティを、すべての各出力ノードに変更することである。このように、多重ノード移送オブジェクトは分岐動作を提供する。
【００３０】
譲渡オブジェクト６１６は図Ｈ５において図示される。公理システムに応じて、譲渡オブジェクト６１６は情報原子６００に所在地を割り当てることができる。（譲渡オペレーター６１６はコンピュータ・システムでの記憶媒体と類似している。）
図Ｈ６において図示された論理的なＡＮＤオペレーターは、一定の値上で論理的なＡＮＤ動作を実行する。特に、それは情報原子の公用プロパティ上で作動する。例えば、ＡＮＤオペレーターの２つの入力に２つの原子に論理的な状態１及び０をそれぞれ供給することは、その出力中の論理的な０状態との原子に帰着する。
【００３１】
図Ｈ７において図示された論理的なＯＲオペレーターは、一定の値上で論理的なＯＲ動作を実行する。特に、それは情報原子の公用プロパティ上で作動する。例えば、ＯＲオペレーターの２つの入力に２つの原子に論理的な状態１及び０をそれぞれ供給することは、その出力中の論理的な１状態との原子に帰着するだろう。
【００３２】
図Ｈ８において図示された論理的なＩＮＶＥＲＴオペレーターは、一定の値上で論理的なＩＮＶＥＲＴ動作を実行する。特に、それは情報原子の共用プロパティ上で作動する。例えば、ＩＮＶＥＲＴオペレーターの入力に原子に論理的な１状態を供給することは、その出力中の論理的な０状態との原子に帰着するだろう。
【００３３】
このように、図Ｈ６−Ｈ８は、公理システムに選ばれた基礎的な共用動作を図示する。ＮＯＲまたはＮＡＮＤの論理的機能のコンビネーションのような、異なる共用オペレーターが、例えば、選択され、本発明と一致することは、認識されるであろう。
【００３４】
（言語オペレーター）
図１１−１５は、言語のいくつかの特別な基礎的オペレーターの図示を提供する。これらは、データセット・タイプ・オペレーター、コンパイラーの管理オペレーター、合成オブジェクト及び接合オペレーターを含む。より明確に、図１１において図示されたデータセットタイプ表出、及び図１２において図示されたデータセット・タイプ・コレクタは、データセット・タイプ・オペレーターである。図１３において図示されたバリアント型セレクターはコンパイラーの管理オペレーターである。図１４において図示された合成オブジェクトは論理上等価な動作の階層を表すために作動する。図１５の移送接合オブジェクトは、移送オブジェクトからの複合出力ノードを表示するために作動するグラフィックオブジェクトである。図１１−１５におけるオブジェクトの各々は、この開示の他のセクションにおいて明示的に或いは例によって説明される。
【００３５】
公理システムは、システムでの動作の同等に関する次の仮定をサポートする。
【００３６】
（仮定）動作Ａに交換するべきシステムへ、動作Ｂを代用することができるように、動作Ａは動作Ｂと等価である、
・動作Ａは、動作Ｂと論理上等価である；
・動作Ａのデータセットは動作Ｂのデータセットと等しい；
・動作Ａの情報率は、動作Ｂの情報率以下である；
・動作Ａのアクション潜在期は、動作Ｂのアクション潜在期以上である。
【００３７】
論理的な同等は、入力情報原子の所定のセットまたはパターンに対して、２つの動作が出力情報原子の同一のセットまたはパターンを生成することを意味する。発明の好ましい実施例では、動作オブジェクトの論理的な等価は、ネーミングを通じて示される。このように、本実施例では、論理上等価なものとして、同一の名前を含んでいるオブジェクトは考慮される。例えば名前「加算」を有するオブジェクトは、名前「加算」を含んでいる別のオブジェクトと論理上等価であると考えられる。システムが利用可能なオブジェクト・ライブラリーに、複合のタイプの論理上等価な加算オブジェクトがあるかもしれない。例えば、オブジェクト・ライブラリーは、次の論理上等価な加算オブジェクト、並列加算オブジェクト、直列加算オブジェクト、飽和加算オブジェクト、浮動小数点加算オブジェクト、複素数加算オブジェクトオブジェクト及びベクトルデータセット加算オブジェクトの実例を含んでいるかもしれない。
【００３８】
データセットは、情報原子のフォーマットを示す。本発明の実施では、データセットは、単一の原子（１ビット）であるデフォルト・データセットを持った他のデータセットの再帰的な階層として体系づけられた情報原子のコレクションを示す。データセットは、オブジェクトのノードに関連させることができる。オブジェクトの入力ノードに関連したデータセットは、ノードへ流入されるデータセットのタイプを表す。
【００３９】
情報率は、回（例えば、毎秒原子）の１ユニット当たりの原子において測定される。オブジェクトの入力ノードに関連した情報率は、原子が生じる（移送オブジェクトのために）、或いは処理される（変形処理オブジェクト、加算オブジェクト、減算オブジェクト、乗算オブジェクト等のために）率を示す。オブジェクトの出力ノードに関連した情報率は、ノードによって出力ノードに接続された別のオブジェクト（例えば、移送オブジェクト）に原子を供給することができる率を表す。
【００４０】
アクション潜在期は、オブジェクトの入力ノードに対する原子の到着時と、オブジェクトの出力ノードにおける結果原子の到着時との間の時間である。それは、移送オブジェクトによる移送時間及び変換オブジェクト中の変換時間である。発明の本実施例では、オブジェクトのアクション潜在期は次の関係に由来する。
【００４１】
ＡＬ＝ＣＬ＋ＲＬ
ＡＬはアクション潜在期を表す。ＣＬは、計算潜在期を表す。ＲＬは応答潜在期を表す。計算潜在期は、移送（移送オブジェクト）或いは変換（変換オブジェクト）を実行するのに必要な時間である。アクション潜在期はオブジェクト用の準備時間である。例えば、ＡＬまたは準備時間はアプリケーションを多重化する時間分割において重要となる。
【００４２】
（公理システムによる動作合成中の新規展望）
公理システムは、時間と無関係のシステム動作の記述を許可する。すなわち、時間はシステム動作の記述の要因または要素である必要がない。下に説明されるように、時間と無関係にシステム動作について記述する性能の結果は、動作記述（例えば、所要のシステム動作図表描画）から設計（例えば、ネットリスト）を合成するためにシンボル代用を使用することができるということである。すなわち、シンボルは動作を表すために設計に挿入されるかもしれない。合成中に、１つ以上の他の等価なオブジェクトが、シンボルの代わりの設計へ代用される。このように、シンボル代用は合成のためのメカニズムとして使用することができる。
【００４３】
その仮定は、シンボル代用による合成のパラメータ化を許可する。例えば、情報率及びアクション潜在期を、設計中のシンボルの代わりに代用するべき等価なオブジェクトの決定に使用されたパラメータとして用いることができる。すなわち、シンボル代用による合成は、情報率及びアクション潜在期のような、１つ以上のパラメーターに基づいて、設計中の象徴的な動作のために複合可能な代用候補の中から選択することができる。情報率及びアクション潜在期が時間に換算して定義されるので、選択的なシンボル合成は時間に依存させてパラメータ化することができる。このように、パラメータ化された選択的なシンボル代用は、合成メカニズムとして使用することができる。
【００４４】
選択的なシンボル代用によって合成を行う性能が意味するところは、多態オブジェクトに換算して動作を定義する性能である。多態オブジェクトは、合成プロセスの間に複合のオブジェクトのうちのどれへも分解することができるものである。パラメータ化された選択的なシンボル代用による性能行為合成の意味は、オブジェクトの動作に外部のパラメータを多態オブジェクト分解の条件とする性能である。合成の間にその分解に課された条件に関連している多態オブジェクトは、ここでは、パラメータ化された多態オブジェクトと呼ぶ。パラメータ化された多態オブジェクトを有する設計を生成する性能は、動作記述（例えば、形式的な設計動作図表記述）で多態オブジェクトに関連したパラメータ合成の間に割り当てられたか、又は伝達した特別の値に依存する合成の間に別々に分割することができる所要の設計動作合成をする記述を生成する性能を意味する。
【００４５】
（方式設計の基本変化）
公理システムが方式設計技術の基本変化の契機を示すと考えられている。方式設計技術の初期の基本シフトはアラン・チューリングによって、彼が個別時間状態の導入を通じてインバーター問題を解決した時に始められた。インバーター問題は、電気的な導体（移送オブジェクトではない）によって、相互に接続された入力及び出力を有するインバーターを示す図ｋｌの概要図への言及を通じて最適に理解される。その入力がその出力に接続されているので、インバーターの論理的な状態は不確定である。特に、ブール論理の規則に応じて、インバーターは、同時に、論理的な０の状態及び論理的な１の状態にはなりえない。このように、インバーター問題は、ブール論理公理システムの規則が回路動作について記述しなかった事例を示した。
【００４６】
チューリングのインバーター問題の解決策は、電気的な導体によって状態要素への入力に接続された出力と、電気的導体による状態要素の出力に接続した入力とからなるインバータを示す図Ｋ２の概要において最良に図示される。チューリングは、個別時間状態についての概念を導入した。時間の１つの瞬間では、論理的な状態要素の状態は論理的な１である。また、それは、論理的な０の値を出力するインバーターの入力に論理的な１を出力する。時間の次の瞬間に、インバーターによる論理的な０の出力は、より重要な時間瞬間に、論理的な０へと状態要素の状態を変更した。この次の瞬間に、状態要素は、論理的な１を出力するインバーターの入力に論理的な０を出力する。チューリングの解法は個別時間における状態を使用して、システムを表すことである。
【００４７】
動作の設計展望から、離散的な時間における状態に換算した設計動作記述の欠点は、選択的なシンボル代用が実現可能な合成メカニズムでないということである。基本的に、離散的な時間における状態の動作記述中の存在は、そのような記述からの設計を合成するためにシンボル代用を使用することを実行不可能にする。公理システムは、記述するシステム動作の新規プロセスを可能にする。この新規のプロセスは、システム動作の描写における離散的な時間において状態の代わりに位置を使用することにより、前節に記述された問題を克服する。図Ｋ３の図面は、入力ノード７０４及び出力ノード７０６を有するインバーター・オブジェクト７０２を含んでいる、動作のオブジェクト７００を示す。オブジェクト７００は、入力ノード７１０及び出力ノード７１２を有する移送オブジェクト７０８を含んでいる。図Ｋ３の図面は、図式でオブジェクト７００の動作を表す。次のテーブルは、オブジェクト７００を通して伝達する原子の状態の交換を含むオブジェクト７００の動作を表す。テーブルを検討する際に、トリガーのイベントがオブジェクト７００の内部の１つのノードから次のものまで原子のインクリメントのフローをもたらすと仮定する。テーブルは、Ｔ１からＴ７までトリガー・イベントのシーケンスのためのオブジェクト７００内の原子の位置及び状態のシーケンスを示す。
【００４８】
状態と位置とのインバーター問題解法
【表１】
2004533028.tif 000001
【００４９】
図Ｋ３に図式で記述され、上記のテーブル・フォーマットに記述された動作でのポイントでは、不確定の原子の状態または位置がない。このように、公理システムは、離散的な時間における状態から独立した系統の方式の動作について記述する新規の過程を提供する。
【００５０】
しかしながら、仮定から、公理システムが設計のパラメータ化された動作記述の生成を可能にすることは認識できる。パラメータはそれ自体時間に依存させることができる。例えば発明の本実施例では、パラメータ情報率及び情報率パターンとして使用して、パラメータ化された多態オブジェクトを使用する。このように、発明に係る合成プロセスでは、時間依存のパラメータによって実行される選択的なシンボル代用を使用することができる。したがって、本発明は、システムの動作記述からの方式設計の合成に基本的に新規のメカニズムを供給する。
【００５１】
（”バリアント型（Ｖａｒｉａｎｔ）”）
用語「バリアント型」は、この開示において、データセット・タイプを参照して使用される。ノード上のバリアント型データセット・タイプを有するオブジェクトはデータセットの多態オブジェクトである。異形データセットは抽象的である。オブジェクトは、ノードを入力するために伝達させられたデータセットのタイプに依存するオブジェクトの２以上の形式へ分割することができる、多態データセットである。異形データセット見本のオブジェクトは連続的に分解可能である必要がない。オブジェクトは、複合可能で離散的な分解ができる。所定の事例での特別分解は、合成プロセスの間に、オブジェクトの入力ノードに伝達させられた明示的なデータセットの性質に依存する。ここで使用された用語としての「変形」は、パスカル言語における「変形クラス」とは同義ではない。
【００５２】
（ノード構造及びオブジェクト階層）
このセクションでは、この発明に係る本実施における動作オブジェクトを構築するために使用されるオブジェクトの階層構造について記述する。我々は開示するこのセクションにおいてオブジェクト指向プログラミング用語を用いて表すが、このセクションにおける用語オブジェクトの使用が他のセクションにおける用語オブジェクトの使用、多態動作オブジェクトをパラメータ化した、動作オブジェクトをオブジェクト指向プログラミング実施に制限するように解釈すべきでないことを読者は理解すべきである。用語オブジェクトの解釈に関してこの断り書きにより、このセクションは実際のオブジェクト指向プログラミングアプローチは発明の好ましい実施例において動作オブジェクトを実施するために使用されるべきであることを読者に通知する。
【００５３】
クラスＩ２ＡＤＬオブジェクト（Ｉ２ＡＤＬは実施独立したアルゴリズム記述言語を表す）
｛
名前
入力（入力ノードのリスト）
出力（出力ノードのリスト）
属性（文字列のリスト）
動作（Ｉ２ ＡＤＬオブジェクトのリスト）｝
クラス・ノード・オブジェクト
｛
情報率＊（情報率オブジェクトを分類するポインター）
データセット＊（データセット・オブジェクトを分類するポインター）
（他のノードへのポインター）への接続
所有者（Ｉ２ ＡＤＬｏｂｊｅｃｔへのポインター）
属性
｝
クラス・データセット・オブジェクト
｛
要素（先行の順序でのデータセットにおけるデータセットリスト）
｝
クラス情報率
｛
Ｆｌｏａｔ ＩＲ
Ｆｌｏａｔ ＲＬ
Ｆｌｏａｔ ＣＬ
ＩＮＴ ＩＲＰ（情報率パターン）
文字列のＩＲＰ機能（ＦＦＴまたはＤＣＴのような複雑なパターン用）
｝
各Ｉ２ＡＤＬオブジェクトが、「接続された」情報とともにノードを含むことに注意されたい。このオブジェクト階層構造形式は、低レベルのオブジェクトのネットワークを含むネットリストへ所要の動作図表描画の分解を許可する。好ましい実施例では、低レベルのオブジェクトは原子的オブジェクトである。図表描画の合成オブジェクトは、「接続された」ノード構造と相互に連結された原子的オブジェクトへ合成される。このオブジェクト階層構造の結果として、より高いレベルにおける合成オブジェクトにおける変化は、基礎的な根本的なオブジェクト階層構造を完全なものとし、トップレベルの動作記述から低レベルのオブジェクトのネットワークに合成プロセスの間に分解を保証する。
【００５４】
（選択オブジェクト）
選択オブジェクトは、選択的な合成プロセスの最中に、動作の実行候補を選択するために使用される。選択オブジェクトは、選択的な合成プロセスを指図するためにそれが使用されるという点で動作それ自身ではない。しかし、それは、設計において実行することができる原子の動作へ分解されない。基本的に、それは分岐メカニズムである。選択オブジェクトは、通常、選択的な合成プロセスの実行中に作用する制御プロセスとともに作動する。制御プロセスは、１つ以上のパラメータ値に動作する合成オブジェクトである制御オブジェクトを通して実行される。合成オブジェクトは、動作の複合可能な実行の中から選択オブジェクトを選択させる。根本的には、制御オブジェクトは、選択オブジェクトが動作の複合可能な実行の中で選択する条件を分割するために１つ以上のパラメータを使用する。もちろん、性質及び構造、及び制御オブジェクトの実行は、選択オブジェクトによる選択をコントロールする条件の性質に依存して変化する。このように、ある意味では、選択オブジェクト及び関連する制御オブジェクトは合成プロセスの間に条件付きの分岐を実施することができる。
【００５５】
本質的に、選択オブジェクトはコンパイラー命令として作動する。それは、動作の複合可能な実行の中から選択する役目をする。しかしながら、発明の本実施例では、それはそれ自体合成された結果内に現実に含まれている参照動作ではない。さらに、発明の本実施例において、選択オブジェクトによる選択または分岐をコントロールする制御オブジェクトは、本質的に、条件付きの分岐が生じる条件を分割するための１つ以上の命令として作動する。そのため、制御オブジェクトは、通常、合成された結果の一部として含まれていない。もっと正確に言えば、合成プロセスの間に選択オブジェクトによる選択をコントロールする機能を果たした後、そのような制御オブジェクトは設計データベースから典型的に取り除かれる。
【００５６】
選択オブジェクトは条件付きのプロセス（或いはアルゴリズム）に関連している。選択的な合成プロセス中に、与えられた選択オブジェクトに関連した条件付きのプロセスは起動され、また、その与えられた選択オブジェクトに関連した制御オブジェクトは、条件付きのプロセスの条件を分割する。関連するプロセスは、条件の分解に基づいた動作選択を達成する。動作の選択の結果、選択オブジェクトを含んでいる設計データベースは選択オブジェクトの入力ノードと選択オブジェクトの出力ノードの関係を達成するために修正される。下に説明されるように、そのような接続の達成によって、選択オブジェクトは動作の複合の実行間に選択することができる。
【００５７】
図Ａ１の実例図面を参照して、選択オブジェクトの例を表すダイアグラムを示す。データ入力ノード１０２、選択した入力ノード１０４及び出力ノード１０６を含んでいるブロック１００は、選択オブジェクトを表す。ブロック１００は合成プロセスの間に分岐を実施するために設計ダイアグラムに挿入することができる。合成プロセス中に、ブロック１００は、合成プロセス（コンパイラー）に、合成プロセスに分岐動作を処理させるブロックに関連した条件付きのプロセスを起動させる。
【００５８】
図Ａ１の選択オブジェクト１００に関連した条件付きプロセスによって実施される分岐について、２つの可能な結果がある。１番目は、データ入力ノード１０２が出力ノード１０６が相互連結されるようになるであろうということである。第２は、データ入力ノード１０２が出力ノード１０６に無関係になるであろうということである。１つの結果或いは他方は、選択した入力ノード１０４上で提供される信号の値に依存する。例えば、第１の値（或いは値の第１の範囲）が、入力ノード１０４、次にデータ入力ノード１０２上で提供される場合、図Ａ２の参照はデータ出力ノード１０６と関係づけられるであろう。
【００５９】
発明の本実施例において、データ入力ノード及びデータ出力ノードは、移送オブジェクト１０８と関係付けられる。図Ａ３に示すように、別の値（或いは値の別の範囲）がそのとき選択した入力ノード１０４上で提供される場合、データ入力ノード１０２はデータ出力ノード１０６と無関係になるだろう。発明の本実施例において、与えられた選択オブジェクトは原子のオブジェクトである。このように、それは、他の低いレベル・オブジェクトを参照しない。しかしながら、上に説明されるように、それはプロセス（或いはアルゴリズム）に関連している。図Ａ１−Ａ３の例において、分岐アルゴリズムは、簡単な用語で以下のように表すことができる。入力中の値が「ノード＝１」を選択する場合は、データ出力ノードにデータ入力ノードを接続する入力中の値が「ノード＝０」を選択する場合は、データ出力ノードにデータ入力ノードを接続しない。
【００６０】
設計データベースにおいて合成オブジェクト（図示せず）によって実行された制御プロセスは、例えば、選択した入力ノード１０４上の値を導き出すために合成プロセスの処理中に実行することができる。制御プロセスを達成する合成オブジェクトが選択オブジェクト自体の一部でないことが認識されるだろう。
【００６１】
図Ｂ１を参照して、選択オブジェクトの別の実行例を示す。データ入力ノード１２２（データ入力ノード１２４）を含んでいるブロック１２０は、入力ノード１２６及び出力ノード１２８を選択する、選択オブジェクトを表す。ブロック１２０は合成プロセスの間に分岐を実施するために、設計ダイアグラム及び対応する設計データベースに挿入することができる。合成プロセス中に、ブロック１００は、合成プロセス（コンパイラー）に、合成プロセスに分岐動作を処理させるブロックに関連した条件付きのプロセスを起動させる。
【００６２】
図Ｂ１の選択オブジェクト１２０に関連した条件付きのプロセスによって実施された分岐の２つの可能な結果がある。１番目は、データ入力ノード１２２が出力ノード１２８と関係付けられ、また、データ入力ノード１２４は関連させられないだろう。第２は、データ入力ノード１２４が出力ノード１２８に関連付けられず、また、データ入力ノード１２２は関連させられないだろう。１つの結果或いは他方は、選択した入力ノード１２６上で提供される信号の値に依存する。例えば、第１の値（或いは値の第１の範囲）が、選択した入力ノード１２６、次にデータ入力ノード１２２上で提供される場合、図Ｂ２に示すように、データ出力ノード１２８と関係付けられ、また、データ入力ノード１２４は関連させられないだろう。発明の本実施例において、データ入力ノード１２２及びデータ出力ノード１２８は、移送オブジェクト１３０と関連付けられるようになる。別の値（或いは値の別の範囲）がそのとき選択した入力ノード１２６上で提供される場合に、ＦｉｇｕｒｅＢ３に示すように、データ入力ノード１２４は、データ出力ノード１２８と関連付けられ、また、データ入力ノード１２２は関係させられないだろう。発明の本実施例において、データ入力ノード１２４及びデータ出力ノード１２８は、移送オブジェクト１３２と関連付けられるようになる。
【００６３】
図Ｂ１−Ｂ３の例において、選択オブジェクト１２０に関連した分岐アルゴリズムは、以下のように簡単な用語で表すことができる。入力中の値が「ノード＝１」を選択する場合は、データ出力ノード１２８にデータ入力ノード１２２を関係させて、データ入力ノード１２４を関係させない入力中の値が「ノード＝０」を選択する場合は、データ出力ノード１２８にデータ入力ノード１２４を関係させて、データ入力ノード１２２を関係させない。設計データベースにおいて別のオブジェクトは、制御プロセスを入力選択ノード１２６上の値を導き出すために実行することができる。
【００６４】
図Ｃ１を参照して、選択オブジェクトの別の実行例を示す。図Ｃ１の選択オブジェクトは４つのデータ入力ノード１４２，１４４，１４６及び１４８、データ選択ノード１５０及びデータ出力ノード１５２を含んでいる。図Ｃ１の選択オブジェクト１４０は、図Ｂ１−Ｂ３において示される一般タイプの３つの原子の選択オブジェクト１５４，１５６及び１５８を含む合成オブジェクトである図Ｃ２において図示されたライブラリー・オブジェクトを参照する。
【００６５】
図Ｃ２に示すように、第１の構成要素である選択オブジェクト１５４のデータ入力は、移送部１６０，１６２によってデータ入力ノード１４２にそれぞれ接続される。第２の構成要素である選択オブジェクト１５６のデータ入力は、移送部１６４，１６６によってデータ入力ノード１４６及び１４８にそれぞれ接続される。第３の構成要素である選択オブジェクトのデータ入力は、移送部１６８，１７０によって、１番目及び第２の構成要素である選択オブジェクト１５４の各データ出力ノード及び１５６にそれぞれ接続される。第３の構成要素である選択オブジェクトのデータ出力ノードは、移送部１７２によってデータ出力ノード１５２に接続される。
【００６６】
データセット抽出１７４はデータ入力ノード１７６と、データ出力ノード１７８，１８０とを含んでいる。（発明の本実施例においてデータセット抽出の構造及び動作は、下に記述される。）データセット抽出の入力ノードは入力ノード１５０を選択するために移送部１８２によって接続される。データセット抽出１７４の１つの出力ノードは、移送部１８４を介して、第１及び第２の構成要素である選択オブジェクト１５４及び１５６の入力選択ノードに接続される。データセット抽出１７４の別の出力ノードは、移送部１８６によって、第３の構成要素である選択オブジェクト１５８の選択ノードに接続される。
【００６７】
選択オブジェクト１４０は合成プロセスの処理中に分岐処理を実行するために、設計ダイアグラム及び対応する設計データベースに挿入することができる。合成プロセス中において、ブロック１４０は、合成プロセス（コンパイラー）に、合成プロセスに分岐動作を処理させるブロック１４０に関連した条件付きのプロセスを起動させる。詳述すると、選択オブジェクト１４０に関連した条件付きのプロセスは、３つの構成要素である選択オブジェクト１５４，１５６及び１５８（図Ｂ１−Ｂ３を参照して記述された一般タイプの条件付きのプロセス）の各々のために起動する。結果は、データ４入力ノードデータ出力ノード１５２への１４２，１４４，１４６及び１４８のうちの１つのみの接続を含めるために、選択オブジェクト１４０が接続される設計データベースは修正されることになるであろう。他の３つのデータ入力ノードは接続されない。例えば、図Ｃ３に示すように、設計データベースへの移送部１８８，１９０の加算によるデータ出力ノード１５２とデータ入力ノード１４６との接続を示す。詳述すると、この例において、データ入力ノード１４６は、移送１６４，１８８，１７０，１９０及び１７２の連結によってノード１５２に接続される。さらに、全面的な合成プロセスの最終結果が単一の移送オブジェクト（図示せず）による、データ入力ノード１４６とデータ出力ノード１５２の間の移送パスにおいて、複合移送オブジェクト及びノード置換になるであろうことはこの開示の他のセクションから理解されるであろう。この最終結果に到達するように協動するプロセスは選択オブジェクトそれ自身の一部でなく、この開示の他の部分において説明される。さらに、図Ｃ３が選択オブジェクト１４０に関連した条件付きのプロセスの４つの起こりうる結果の１つを示すことは認識されるだろう。熟練者は、選択入力ノード１５０に適用された値に依存し、設計データベースへの移送の適切な加算によって同様の方式におけるデータ出力ノード１５２にデータ入力ノード１４２，１４４，１４６及び１４８のうちの１つを接続することができることを認識するであろう。
【００６８】
選択入力値が関連付けられた選択入力ノード １５０は、３つの構成要素である選択オブジェクト１５４，１５６及び１５８の各々のために条件プロセスがどのように分割されるか決める。設計データベースにおいて別の合成オブジェクト（図示せず）を使用して、合成プロセスの一部として実行された制御プロセスは、入力ノード１５０を選択するために関連付けられた値を導き出すために使用することができる。図Ｃ１−Ｃ３の例において、選択オブジェクト１４０に関連した分岐アルゴリズムは、簡単な用語で以下のように表すことができる。
【００６９】
入力中の値が「ノード＝００」を選択する場合は、データ出力ノード１５２にデータ入力ノード１４２を接続し、データ入力ノード１４４，１４６或いは１４８を接続しない；
入力中の値が「ノード＝０１」を選択する場合は、データ出力ノード１５２にデータ入力ノード１４４を接続し、データ入力ノード１４２，１４６或いは１４８を接続しない；
入力中の値が「ノード＝１０」を選択する場合は、データ出力ノード１５２にデータ入力ノード１４６を接続し、データ入力ノード１４２，１４４、或いは１４８を接続しない；
入力中の値が「ノード＝１１」を選択する場合は、データ出力ノード１５２にデータ入力ノード１４８を接続し、データ入力ノード１４２，１４４或いは１４６を接続しない。
【００７０】
上記の分岐アルゴリズムにおいて、選択入力１５０の上の最下位ビットは第１と第２構成要素である選択オブジェクト１５４及び１５６をコントロールする。選択入力ノード１５０の上の最上桁のビットは第３の構成要素である選択オブジェクト１５８をコントロールする。設計データベースにおいて別のオブジェクトは、制御プロセスを入力選択ノード１５０上の値を導き出すために実行することができる。この開示の他のセクションにおいて説明されるように、図Ａ１−Ａ３の選択ノード１０４、図Ｂ１−Ｂ３の選択ノード１２６或いは図Ｃ１−Ｃ３の選択ノード１５０に適用された選択値はパラメータの任意の数に基づいて、提供又は導き出すことができる。これらのパラメータは、下記の１つ以上を組み合わせて或いは別々に含むことができ、データセット・タイプ、情報率、データセット・パターン、アクション潜在期、潜在期などを計算する。設計ダイアグラムにおいて、及び制御プロセスを駆動させる設計データベースにおいてオブジェクトは、選択した入力値に到達するために適切なパラメータを使用する。
【００７１】
発明の本実施例において、データ入力ノード及び選択オブジェクトの出力ノードは、異種である。すなわち、データ入力及びデータ出力ノードは任意のタイプの他のノードと関連付けられることができた。データ入力及び出力ノードをバリアント型タイプとすることは、選択オブジェクトの用途を広くする。２つ以上のデータ入力ノードを有する選択オブジェクトは、その複合のデータ入力ノードの異なるものに接続された異なるデータセット・タイプを有する移送を行うことができる。選択オブジェクトは、設計ダイアグラム及び対応する設計データベースへ接続することができ、異なるタイプのデータのプロセスが設定する様々な動作の中の条件付きの分岐を達成するために使用することができる。しかしながら、通常、選択した入力ノードは一定のタイプ値を持つだろう。ただし、選択した入力ノード上で提供される定数の正確な値は、上に説明されるような別の制御オブジェクトによって導き出すこともできる。
【００７２】
設計において動作の選択的な合成のための合成制御構造を生成するために、上に記述された基礎的な選択オブジェクトは、基礎として供されることができる。その点では、ＦｉｇｕｒｅｓＡ１Ａ３、Ｂ１−Ｂ３及びＣ１−Ｃ３のような選択オブジェクトが、単に代表的であることは認識されるだろう。選択オブジェクトはより複雑な条件付きの分岐を実行するために様々なコンビネーションにおいて連結することができる。設計合成プロセスの一部として条件付きの分岐を達成する性能の１つの意味は、設計で含まれた動作が合成プロセスの間に条件付きの分岐の結果に依存する選択的な合成を実行する性能である。
【００７３】
（データセット抽出とデータセットのコレクタ・オブジェクト）
発明の本実施例において、バリアント型オブジェクトは、設計トポロジーからのデータセットを分離する。すなわち、設計トポロジーはトポロジーが所定のデータセットのためにどのように実行されるか明示せずに、バリアント型オブジェクトで構築することができる。このように、バリアント型オブジェクトで構築された設計は独立したタイプである。特に、そのような設計は、独立したデータセット・タイプである。
【００７４】
データセット抽出オブジェクトは、象徴的に、データセットを構成要素に分解するための参照アルゴリズム或いはプロセスのオブジェクトである。データセット・コレクタ・オブジェクトは、象徴的に、その構成要素からデータセットを構築するための参照アルゴリズム或いはプロセスのオブジェクトである。図Ｇ１に示すように、発明の好ましい実施例によっていくつかのタイプのデータセット抽出及び対応するデータセット・コレクタを表す。発明の現在の実施では、任意のことを有する設計を実行することができる。データセットはビット（１ビット）、Ｄｂｉｔ（２ビット）、ニブル（４ビット）、バイト（８ビット）、単語（１６ビット）、Ｄｗｏｒｄ（３２ビット）及びＱｗｏｒｄ（６４ビット）を含んでいる。それぞれの明示的なデータセット抽出オブジェクト及び対応するそれぞれの明示的なデータセット・コレクタ・オブジェクトは、それぞれの対応するタイプのデータセットに供給される。図Ｇ１は、データセット及び対応する明示的なデータセット抽出及び明示的なデータセット・コレクタを図示する。
【００７５】
少数の異なるタイプのみのデータセットはここに記述されるが、任意のタイプのデータセットを定義することができること（例えば、浮動小数点タイプ或いは整数型）が認識されるだろう。データセッ公表及びデータセット・コレクタは任意のそのような定義されたデータセットのために構築することができる。すなわち、それぞれの抽出及びコレクタ・オブジェクト用のそれぞれのアルゴリズムは、それぞれ任意のそのような定義されたデータセットのために生成することができる。
【００７６】
それらが作動するデータセットが明示的に定義されるので、明示的なデータセット・タイプを持っているように、図Ｇ１のデータセット抽出及びデータセット・コレクタは参照される。Ｄｂｉｔタイプ抽出オブジェクトは２ビットのタイプ・データセットへＤｂｉｔタイプ・データセットを分解する。対応するＤｂｉｔタイプ・コレクタ・オブジェクトは２ビットのタイプ・データセットからＤｂｉｔタイプ・データセットを構築する。ニブル・タイプ抽出オブジェクトは２つのＤｂｉｔタイプ・データセットへニブル・タイプ・データセットを分解する。対応するニブル・タイプ・コレクタ・オブジェクトは２つのＤｂｉｔタイプ・データセットからニブル・タイプ・データセットを構築する。バイト・タイプ抽出オブジェクトは２ニブルのタイプ・データセットへバイト・タイプ・データセットを分解する。対応するバイト・タイプ・コレクタ・オブジェクトは２ニブルのタイプ・データセットからバイト・タイプ・データセットを構築する。単語タイプ公表者オブジェクトは２バイトのタイプ・データセットへ単語タイプ・データセットを分解する。対応する単語タイプ・コレクタ・オブジェクトは２バイトのタイプ・データセットから単語タイプ・データセットを構築する。Ｄｗｏｒｄタイプ抽出オブジェクトは２つの単語タイプ・データセットへＤｗｏｒｄタイプ・データセットを分解する。対応するＤｗｏｒｄタイプ・コレクタ・オブジェクトは２つの単語タイプ・データセットからＤｗｏｒｄタイプ・データセットを構築する。Ｑｗｏｒｄタイプ抽出オブジェクトは、２つのＤｗｏｒｄタイプ・データセットへＱｗｏｒｄタイプ・データセットを分解する。対応するＱｗｏｒｄタイプ・コレクタ・オブジェクトは２つのＤｗｏｒｄタイプ・データセットからＱｗｏｒｄタイプ・データセットを構築する。
【００７７】
発明の好ましい実施例はさらに変種データセット抽出オブジェクト及び変種データセット・コレクタ・オブジェクトを含んでいる。任意の特別のデータセット上で作動しないので、それらは変種と指称される。もっと正確に言えば、本実施例において、変種データセット抽出オブジェクトは上記の明示的なデータセットタイプ表出オブジェクトに参照を付ける。同様に、１つの変種データセット・コレクタ・オブジェクトは、上記の明示的なデータセット・タイプ・コレクタ・オブジェクトを参照する。図Ｇ２にしめすように、変種データセット抽出オブジェクトは、明示的な各データセットタイプ表出オブジェクトにおけるオブジェクト・ライブラリーの一部を参照する。同様に、図Ｇ３に示すように、変種データセット・コレクタ・オブジェクト参照を各々し、明示的なデータセット・タイプ・コレクタ・オブジェクトのオブジェクト・ライブラリーの一部を参照する。
【００７８】
データセットが、そのような異形データセットタイプ抽出の入力ノードに伝達させられる場合、設計に組み込まれた異形データセット抽出は、調整として合成プロセスの間に分割される。基本的に、変種データセット抽出オブジェクトの入力ノードがそれにデータセットを伝達させる場合、平坦化アルゴリズムは、図Ｇ２において図示されたオブジェクト・ライブラリーの一部を参照する。データと一致するその入力ノード上の明示的なデータセット・タイプを有する明示的なデータセットタイプ表出オブジェクトの平坦化アルゴリズム検索は、伝達データセットプロセスの間に変種データセット抽出に伝達させられたタイプを設定する。それが一致を見つける場合、それは、異形データセットタイプ抽出オブジェクトの代わりの設計に一致する明示的なデータセットタイプ表出オブジェクトを挿入する。
【００７９】
反対に、データセットが、そのような異形データセットタイプ・コレクタの２つの入力ノードに伝達させられる場合、設計に組み込まれた異形データセットコレクタは、一致において合成プロセスの間に分割される。基本的に、変種データセット・コレクタ・オブジェクトの入力ノードが、データセットを伝達させるとき、平坦化アルゴリズムは、図Ｇ３において図示されたオブジェクト・ライブラリーの一部を参照する。変種データに伝達させられたデータセット・タイプと一致する、その２つの入力ノード上の明示的なデータセット・タイプを有する明示的なデータセット・タイプ・コレクタ・オブジェクトの平坦化アルゴリズム検索は、伝達データセットプロセスの間にコレクタを設定する。一致が見つかった場合、それは、異形データセットタイプ・コレクタ・オブジェクトの代わりの設計に一致する明示的なデータセット・タイプ・コレクタ・オブジェクトを挿入する。
【００８０】
設計に挿入された明示的なデータセット抽出オブジェクトの役割は、その構成要素であるデータセットへデータセットを分解するために合成プロセスの間に使用されるプロセスまたはアルゴリズムを参照する。例えば、Ｄｂｉｔタイプ・データセット抽出オブジェクトが設計に挿入される場合、それは、合成プロセスに、２つの別個のビット・タイプ・データセットへＤｂｉｔデータセットを分解するアルゴリズムを参照する。２ビットのタイプ・データセットのうちの１つは、Ｄｂｉｔタイプ・データセット抽出の２つの出力ノードのうちの１つの出力として提供される。２ビットのタイプ・データセットの他方は、Ｄｂｉｔタイプ・データセット抽出の２つの出力ノードの他方上の出力として提供される。その後、Ｄｂｉｔデータセット抽出オブジェクトの出力ノード上で定義されたビット・タイプ・データセットとともにこの例を継続すると、伝達データセットプロセスは、それらのノードに接続されたオブジェクトを輸送するために２つの出力ノード上で提供される２ビットのタイプ・データセットを伝達させることができる。
【００８１】
設計に挿入された明示的なタイプ・データセット・コレクタ・オブジェクトの役割は、明示的なタイプ・データセット抽出オブジェクトのそれと類似している。明示的なタイプ・データセット・コレクタ・オブジェクトは、その構成要素であるデータセットから、データセットを構築する合成プロセスの間に使用されるプロセスまたはアルゴリズムを参照する。例えば、Ｄｂｉｔタイプ・データセット・コレクタ・オブジェクトが設計に挿入される場合、それは、合成プロセスに、２つの別個のビット・タイプ・データセットからその２つの入力ノードに伝達させられたＤｂｉｔデータセットを構築するアルゴリズムを参照する。Ｄｂｉｔタイプ・データセットは、Ｄｂｉｔタイプ・データセット・コレクタの出力ノード上の出力として提供される。この例についてさらに説明すると、Ｄｂｉｔデータセット・コレクタ・オブジェクトの出力ノード上で定義されたＤｂｉｔタイプ・データセットで、伝達データセットプロセスは、そのノードに接続されたオブジェクトを移送するために出力ノード上で提供されるＤｂｉｔタイプ・データセットを伝達させることができる。
【００８２】
発明が、種々のオブジェクトを交換するために設計に明示的な抽出オブジェクト或いは明示的なコレクタ・オブジェクトを実際に挿入せずに実行できることが認識されるだろう。もっと正確に言えば、異形データセット抽出オブジェクトの分解は、データセット伝達プロセスを指図するために使用することができるデータセット廃棄プロセス或いはアルゴリズムの選択を含んでいるかもしれない。同様に、異形データセットコレクタ・オブジェクトの分解は、データセット強化プロセスの選択、或いはデータセット伝達プロセスを指令するために使用することができるアルゴリズムを含んでいるかもしれない。それぞれの内訳と強化アルゴリズムによる本質において、それぞれの変種データセット抽出オブジェクト及びそれぞれの変種データセット・コレクタ・オブジェクトは、データセットの伝達に依存するデータセット・タイプにおいて実行中の合成プロセスに指示する。
【００８３】
（タイプ依存する命令−異形データセットタイプ抽出オブジェクト及び異形データセットタイプ・コレクタ・オブジェクト）
１つの展望から、異形データセット抽出オブジェクト及び異形データセットコレクタ・オブジェクトは、合成プロセスに、発明の本実施例に従って、データセットの内訳及び強化を指示する１つ以上のアルゴリズムを参照するために設計に挿入される。通常、それらは圧縮オブジェクトの構成要素オブジェクトとして設計に挿入される。例えば、異形データセット抽出オブジェクト５１０、及び図Ｆ３の異形反転オブジェクト５０２の異形データセットコレクタ５１２オブジェクトを参照する。
【００８４】
別の展望から、異形データセット抽出オブジェクト及び異形データセットコレクタ・オブジェクトは、抽象的なタイプの分解において合成プロセスを指示する役目をすることができる。異形データセットタイプ動作オブジェクトは抽象的なデータセット・タイプを持っている。データがタイプに多態動作オブジェクトを設定したとき、そのようなオブジェクトは特徴づけることができる。その正確な動作はデータセット・タイプによって変化する。例えば、トップレベルの反転オブジェクト５００及び図Ｆ１−Ｆ３の異形反転オブジェクト５０２の各々は、抽象的なデータセット・タイプを持っており、多態データセット・タイプである。発明の好ましい実施例では、合成プロセスの間に、設計における異形データセットタイプ動作オブジェクトは、１つ以上の明示的なデータセット・タイプ動作オブジェクトへの分解がリコールされる。この例としては、図Ｆ１−Ｆ８を参照されたい。根本的には、異形データセットタイプ抽出オブジェクトは、異形データセットタイプ動作オブジェクトの分解中に、１つ以上の明示的なデータセット・タイプ動作オブジェクトに合成プロセスを指令する。実際は、異形データセットタイプ抽出オブジェクトは、明示的なデータセットタイプオブジェクトへ抽象的なデータセット・タイプの分解において合成プロセスをガイドする合成（コンパイラー）命令として供される。
【００８５】
これらの展望両方を考えれば、異形データセットタイプ抽出オブジェクトは、１つ以上の明示的なデータセット・タイプ動作オブジェクトに異形データセットタイプ動作オブジェクトの分解における平坦化と伝達データセットのプロセスを指令するために変種データセット動作オブジェクト（図Ｆ３の反転動作オブジェクト５０２）に（少なくとも提携された）組み込まれる合成（コンパイラー）命令として見ることができる。さらに、異形データセットタイプ抽出オブジェクトは、データセットタイプ依存する合成（コンパイラー）命令として見ることができる。その点では、それは適応性のある命令である。特に、命令の性質は、それに伝達させられたデータセットの性質に依存する。このように、本質における異形データセットタイプ抽出オブジェクトは、データセットタイプに基づいた異形データセットタイプ動作オブジェクトを分割するためのタイプ依存する（コンパイラー）命令である。簡潔に述べると、そのような異形公表オブジェクトは、異形公表オブジェクトへ伝達させられたデータセットタイプに従った異形動作オブジェクトの分割データセットタイプに使用した命令である。
【００８６】
この展望を認識するために、その構成要素であるデータセットへ、そのようなオブジェクトに対して伝達させられたデータセットを漸増的に分解することにより、平坦化と伝達データセットのプロセスが異形データセットタイプ動作オブジェクトを反復して分割すると考える。１つ或いはそのような異形データセットタイプ動作オブジェクトのより多くの新規の場合が、解決されている動作オブジェクトの場合の代わりの設計に挿入される。１以上の構成要素であるデータセットが、分割されている動作オブジェクトの新しく挿入された場合まで伝達させられる。それらの入力ノードへ各々伝達させられた構成要素であるデータセットとともに解決されている、動作オブジェクトの挿入された段階が、オブジェクト・ライブラリーにおける動作オブジェクトと一致するまで、この反復するプロセスは継続する。それがそうであるこの反復する分解プロセス中に、有効に解決されている異形データセットタイプ動作動作オブジェクトに組み込まれた異形データセットタイプ抽出オブジェクトは、データセットのインクリメントで反復する停止を構成要素に実行させる。例えば図Ｆ５−Ｆ８を参照されたい。このように、異形データセットタイプ抽出オブジェクトは、異形データセットタイプ動作オブジェクトへ構築される命令として供される。
【００８７】
さらに、個々の連続の反復中に、変種データセット抽出オブジェクトは、伝達データセットプロセスに解決されているバリアント型動作オブジェクトの各新しく実証された段階への異なる構成要素であるデータセットを伝達する。例えば、１つの反復中に、ニブル・データセット（４ビット）は、２つのＤｂｉｔタイプ・データセット（２ビット各々）へ分解される。次の反復中に、２つのＤｂｉｔタイプ・データセットは４ビットのタイプ・データセット（１ビット毎）へ分解される。例えば図Ｆ５−Ｆ８を参照されたい。このように、異形データセットタイプ抽出オブジェクトはデータセットタイプ依存する命令として供される。
【００８８】
異形データセットタイプ・コレクタ・オブジェクトの重要な１つの役割は、それを保証することである。設計における、ある異形データセットタイプ動作オブジェクトを解決するプロセスは、他のオブジェクトの展望からの伝達データセットが設計において下流に接続した、移送オブジェクトのパターンを変化させない。詳述すると、異形データセットタイプ・データセット抽出オブジェクトを使用する多態動作オブジェクト（図Ｆ３の異形反転オブジェクト５０２のような）を解決するプロセスは、オリジナルの設計の中にはない新しく実証された移送オブジェクトのネットワークを生成するかもしれない。これらの新規の移送が設計における下流オブジェクトへの接続を変更しないことを保証するために、その（或いは別の）動作オブジェクトの段階が、分解プロセスの間に設計にいくつ挿入されたかに関係なく、出力ノードの数が、異形データセットタイプ動作オブジェクトの分解の後に分解の前にノードの数と同じであるように、１つ以上の異形データセットタイプ・コレクタ・オブジェクトが設計に挿入される。
【００８９】
異形データセットタイプ抽出オブジェクト及び異形データセットタイプ・コレクタ・オブジェクトをテンプレートと見なすことができると考える。それらは依存するオブジェクトをタイプするのに同種である。さらに、それらは合成（コンパイラー）命令として供される。すなわち、それらはタイプ依存する命令である。与えられた異形公表オブジェクト或いは与えられたバリアント型コレクタ・オブジェクトに関連しているタイプが、合成時にそれへ伝達させられたデータセットタイプに依存するので、それらは両方とも適応性のある命令である。
【００９０】
このように、本質的には、異形データセットタイプ・コレクタ・オブジェクトは、さらにデータセットタイプ依存する命令として供される。特に、それは、異形データセットタイプ動作オブジェクトからの出力ノード接続の数が、伝達させられたデータセットタイプに基づいたオブジェクトの分解により変化しないように、互いに関連している移送オブジェクトのネットワークを実証するように合成プロセスに命令するために異形データセット見本のオブジェクトへ構築された命令である。異形データセットタイプ・コレクタ・オブジェクトを通して実行された命令は、異形データセットタイプ抽出オブジェクトを通して実行された命令の補足となる。これらの補足命令の動作結果は、抽出オブジェクトの上層及びコレクタ・オブジェクトが補足する下層設計への挿入である。例えば図Ｆ８を参照されたい。これらの２つの命令の補足アクションの結果、ある異形データセットタイプ動作オブジェクトのデータセットタイプ分解が挿入され移送のネットワークは、上流の設計における他のオブジェクトへの、或いは下流に解決されたオブジェクトからの接続に影響しない。
【００９１】
（移送オブジェクト）
移送オブジェクトは、移送オブジェクトの入力ノードの位置から移送オブジェクトの各出力ノードの位置への情報原子の位置プロパティを交換する公理システムでのオペレーターとして供される。実際上、発明に係る合成プロセスにおいて、移送オブジェクトオペレーターは、移送オブジェクトの入力ノードの位置から移送オブジェクトの各出力ノードの位置へのデータセットの位置プロパティを交換する。本発明の合成過程における、図表の設計に挿入される場合、移送オブジェクトは最初に要約または異形データセットタイプを持っている。すなわち、それは任意の特別のデータセットに関連していない。しかしながら、伝達データセットプロセスは、合成プロセス中において、そのような抽象的なデータセットタイプ移送オブジェクトの入力ノードへの明示的なタイプ・データセットを伝達させる。そのような伝達に応じて、移送オブジェクトの入力ノードはデータセットをコピーし、そのために、データセットタイプ（それはそれへ伝達させられた）へ変形されるだろう。その後、移送オブジェクトは、移送オブジェクトの出力ノードにデータセットタイプに従って、データセットをコピーするだろう。
【００９２】
位置プロパティにおける上記の変化を達成するために、移送オブジェクトは、移送オブジェクトのその段階の出力ノードに移送オブジェクトの段階の入力ノード上のデータセットタイプをコピーするプロセスに関連している。合成スレッドが移送オブジェクトの段階の入力ノードに到達する場合、それはそのようなプロセスを参照し、その出力ノードの各々へ移送オブジェクト段階の入力ノードからのデータセットタイプの複写または普及をその結果としてもたらす。移送オブジェクトの段階は複合の出力ノードを持っているかもしれない。データセット及びその対応するデータセットタイプの位置プロパティの交換によって、移送オブジェクトは、合成プロセスのフローを定義する役目をする。上に説明されるように、合成プロセスの間に同時に走る、実行処理のいくつかのスレッドがある。与えられたノードまたはオブジェクトに対する１つのスレッドの動作の結果は、他の未処理スレッドによってそのノードまたはオブジェクトを処理の対象とすることができる。例えば移送オブジェクトは、その入力ノードからその出力ノードの各々までデータセットを伝達させることによって、効果において、移送オブジェクトに接続されたオブジェクトの入力ノードへのデータセットを伝達させるように伝達データセットプロセスに促すか、或いはトリガーを発生させる。そのノードへのデータセットの伝達は、順次、平坦化プロセスの動作を誘発するかきっかけとなり、他のノード上の実行処理の他のスレッドを誘発する。
【００９３】
このように、図表の動作の設計は、どのバリアント型動作オブジェクトが抽象的な移送オブジェクトによって接続されるかに組み立てることができる。抽象的な移送オブジェクトの使用は、独立したデータセットである設計図表の動作記述の生成を許可する。抽象的な移送オブジェクトがどんなデータセットタイプも伝達させることができるので、動作記述でダイアグラムによるそのフローのフォーマットまたはデータセットタイプを定義する必要はない。しかしながら、合成プロセスの最中に、個々の抽象的な移送オブジェクトは、それへ伝達させられたデータセットのデータセットタイプを採用するかコピーするだろう。このように、合成プロセスの最初は、抽象的な移送オブジェクトは、合成プロセスの実行処理のスレッドのフローを指示するのを支援する役目をする。しかしながら、個々の抽象的な移送オブジェクトがそれへ伝達させられたデータセットの位置プロパティを交換するとき、それは明示的なデータセットタイプがある移送オブジェクトに変形される。明示的なデータセットタイプがある移送は、本質において、最終において要求される接続が設計を合成したことを説明する。言いかえれば、明示的な移送オブジェクトは、最終に合成された設計において要求される接続の実際のネットワークを定義する役目をする。
【００９４】
（キャスト動作オブジェクト）
発明の好ましい実施例において、キャスト動作オブジェクトは別のタイプのデータセットに１つのタイプの与えられたデータセットを振り当てるために使用される。前提として、他のコンピュータ・プログラミング言語における変数にタイプを振り当てるためにタイプ・オペレーターを使用することは従来と同様である。Ｃプログラミング言語のように、典型的なタイプキャストの使用方式である。さらに前提として、より重要な論理或いは動作の合成ツールは、ベクトルとバスに換算して設計中で設計におけるあるオブジェクトから別のオブジェクトまでのデータ或いは制御情報の移送についての概念を通常表す。より重要な論理或いは動作の合成ツールは、発明の本実施例でのような抽象的な移送オブジェクトに換算して典型的にはデータの移送及び制御についての概念を表さない。このように、変数にタイプを振り当てることは周知であるが、抽象的な移送オブジェクトへのキャスティング・タイプはより重要な論理または動作の合成ツールにおいては知られていない。
【００９５】
キャスト動作オブジェクトの役割は、発明の本実施例に係る動作合成についてのさらに理解によって、一層顕著に認識することができる。合成プロセスの本実施例は要約移送オブジェクトを使用する。すなわち、本合成プロセスを使用して、設計は、任意の特別のデータセットに関連していない移送オブジェクトを含んでいるライブラリー・オブジェクトから構築されるかもしれない。言いかえれば、そのような移送オブジェクトは抽象的なタイプを持っている。このように、設計は、ベクトルとバスに換算してではなく抽象的な移送オブジェクトに換算して表される１つのオブジェクトから次のものまでのデータ及び制御の移送についての概念において、創成される。
【００９６】
抽象的な移送オブジェクトの利点はデータセットタイプと無関係に設計を構築することができるということである。しかしながら、あるポイントでは、現実に有用なシステムを生成するか指定するために設計を使用するために、設計における抽象的な移送オブジェクト（また他の抽象的な動作オブジェクト）は、データセットタイプをそれらへ投げさせなければならない。このように、本発明に従う合成プロセスでの抽象的な移送オブジェクトの使用は、メカニズムが抽象的な移送オブジェクトにデータセットタイプを振り当てる必要を生成する。抽象的な移送オブジェクト（及び他の抽象的な動作オブジェクトへ）にデータセットタイプを振り当てるための１つのメカニズムは、この開示に別記されたデータセット伝達プロセスである。抽象的な移送オブジェクトにデータセットタイプを振り当てるための別のメカニズムは、このセクションの次の段落で記述されたキャスト動作オブジェクトである。
【００９７】
抽象的な移送オブジェクトにデータセットタイプを振り当てるためにデータセット普及に依存する設計における抽象的な移送オブジェクトで生じることができる潜在的な問題は、抽象的な移送の生じるキャスティングが無効な設計で帰着するかもしれないということである。例えば、２つの異なる抽象的な移送オブジェクトに２つのデータ入力ノードを接続する設計における仮説の加算動作オブジェクトを考慮する。データセット普及中に、入力ノードのうちの１つに接続された移送オブジェクトにバイト・タイプ・データセット（広さ８ビット）が振り当てられ（例えば）、単語タイプ・データセット（広さ１６ビット）が別の入力ノードに接続された移送オブジェクトに振り当てられた、と仮定する。加算オブジェクトは、どのようにして、単語データセットによって表される別の値へバイト・データセットによって表される値を加えることにより、合計値で発生するために加算動作を実行するか。これらがデータセットと一致していないので、問題が生じるだろう。
【００９８】
この特有の問題を回避するために、キャスト動作オブジェクトを、別の移送オブジェクトのと一致するタイプに１つの抽象的な移送オブジェクトのタイプを振り当てるために設計に挿入することができる。ある意味では、キャスト動作オブジェクトは「対称化手段」として機能するだろう。それは、２つの（或いはさらに）移送オブジェクトが同一のデータセットタイプに振り当てられたことを保証するだろう。より全般的に、下に説明されるように、キャスト動作オブジェクトは任意の所要のタイプに抽象的な移送動作オブジェクトを振り当てるために設計に挿入することができる。上記の仮説の例において、単語データセットにバイト・データセットを振り当てることができるかもしれないし、単語データセットタイプにバイト・データセットタイプにそうでなければ振り当てられていたであろう移送オブジェクトを振り当てることができるかもしれない。このように、加算オブジェクトの両方の入力ノード上の移送は単語タイプになり一致するだろう。入力ノードは対称入力を持つだろう。キャスト動作オブジェクトは入力ノード上のデータセットタイプを「対称にする」ために使用されていただろう。このように、キャスト動作オブジェクトはデータセット伝達を通して、合成の間に、動作オブジェクトに、タイプのそのキャスティングを保証するために使用することができる、無効な設計で帰着しない。
【００９９】
（キャスト動作オブジェクトの分解の例）
図Ｅ１Ａを参照して、トップレベルのキャスト動作オブジェクト４９０を示す。キャスト・オブジェクトはデータセットタイプ入力ノード４９２、データセット入力ノード４９４及びデータセットタイプ出力ノード４９６を含んでいる。キャスト動作オブジェクト４９０の全面的な動作は、ノード４９２上で示されたデータセットのタイプのためのノード４９４へ伝達させられたデータセットを振り当てることである。全面的な動作はさらに、出力（ノード４９２上のタイプのためのノード４９４キャスト上のデータセット）としてノード４９６上で提供することを含んでいる。ノード４９２上のタイプは固定値、または合成プロセスの間に設計の中で伝達させられたデータセットタイプに基づいて決定された値から得られる。すなわち、それは、それに供給されるデータセットタイプの性質に依存して変化するかもしれない。
【０１００】
図Ｅ１Ｂの実例となる図面を参照して、動作を振り当てるために関係するオブジェクト・ライブラリーの一部が示される。トップレベルのキャストオブジェクト４９０は、次のレベルのキャストオブジェクト４００を参照する。両方のキャストオブジェクト４９０，４００は変種である。トップレベルのキャストオブジェクト４９０は親オブジェクトと見なすことができ、また、次のレベル・オブジェクト４００は子供オブジェクトと見なすことができる。
【０１０１】
キャストオブジェクト４９０，４００の動作を、実例となる仮説の例を使用して説明する。キャストオブジェクト４９０が設計で挿入されると仮定する。ユーザーは、前のセクションにおいて述べられた理由のうちのどれもの設計にトップレベルのキャストオブジェクト４９０を挿入してもよい。さらに、１６ビットのデータセットタイプがノード４９２上で示され、４ビットのデータセットがノード４９４へ伝達させられる、と仮定する。合成プロセス中に、トップレベルのキャストオブジェクト４９０の入力ノードがすべて、それらへデータセット情報を伝達させる時、平坦化アルゴリズムは、次のレベルをトップレベルのキャストオブジェクト４９０によって参照されたバリアント型キャストオブジェクト４００と呼ぶ。
【０１０２】
平坦化アルゴリズムは、トップレベルのキャストオブジェクト４９０の代わりの設計でオブジェクト４００を挿入する。オブジェクト４００のノード４０８はオブジェクト４９０のノード４９２へ伝達させられたデータセットタイプ情報を得るために接続される。オブジェクト４００のノード４１２はオブジェクト４９０のノード４９４へ伝達させられたデータセットを受信するために接続される。オブジェクト４００のノード４１６は設計における他のオブジェクト（示されない）がオブジェクト４９０のノード４９６に接続したデータセット情報を提供するために接続される。このように、ノード４０８上のデータセットタイプはノード４１２上のデータセットに振り当てられることになっている。
【０１０３】
図Ｅ１に、バリアント型キャストオブジェクトの詳細を示す。すなわち、この発明の好ましい実施例のキャスト動作オブジェクト４００は、先ず、既知のデータセットへ割り当てた後、所要のデータセットタイプへ割り当てる。図Ｅ１を参照して、キャスト動作オブジェクト４００の構成要素である動作オブジェクトを示す。キャストアップ動作オブジェクト４０２の出力ノードは、移送オブジェクト４０６によって、キャストダウン動作オブジェクト４０４のデータセット入力ノードに接続される。ノード４０８は移送オブジェクト４１０によって、キャストダウンオブジェクト４０４のタイプ入力ノードに接続される。ノード４１２は、移送オブジェクト４１４によって、キャストアップオブジェクト４０２のデータセット入力ノードに接続される。キャストダウンオブジェクト４０４の出力ノードは移送オブジェクト４１８によってノード４１６に接続される。
【０１０４】
キャスト動作オブジェクト４００のバリアント型形式は合成プロセスの間に再帰的に解決される、トップレベルのオブジェクトである。データセット入力ノード及びキャストアップ動作オブジェクト４０２のデータセット出力ノードは、変種である。タイプ入力ノード、データセット入力ノード及びキャストダウン動作オブジェクト４０４のデータセット出力ノードは、変種である。所定の設計におけるキャスト動作オブジェクトの動作は、データセット伝達プロセスを通して決定される。すなわち、キャスティングの特性は、ノード４０８上のタイプ値及びノード４１４上のデータセットに依存する。
【０１０５】
詳述すると、キャスト動作オブジェクト４００の異なる形式は２つの他のバリアント型オブジェクト、すなわちキャストアップ動作オブジェクト４０２と、各々がバリアント型入力ノードを含んでいるキャストダウン動作オブジェクト４０４と、を含む。トークンとして供されるキャストアップ及びキャストダウンオブジェクト４０２，４０４は、合成（コンパイラー）プロセス中に、オブジェクト・ライブラリーにおけるこれらの動作の詳解を参照する合成プロセス（コンパイラー）を導出する。図Ｅ２は、図Ｅ１のキャストアップオブジェクト４０２オブジェクトを使用して参照されたバリアント型キャストアップオブジェクト４１８を示す。図Ｅ３は、キャストアップオブジェクト４０２を使用して参照された端末リーフキャストアップオブジェクト４２０を示す。図Ｅ４は、図Ｅ１のトップレベルのキャストダウンオブジェクト４０４を使用して参照されたバリアント型キャストダウンオブジェクト４２２を示す。図Ｅ６は、キャストダウンオブジェクト４０４によって参照された明示的なキャストダウンオブジェクトを示す。
【０１０６】
図Ｅ２は、バリアント型キャストアップ詳解４１８の詳細を示す。ノード４０８−１は、データセットタイプを入力として受信する。データセットタイプを２倍或いは充当する動作オブジェクト４２４の入力ノードは、合成移送オブジェクト４２６の分岐によってノード４０８−１と関連付けられる。バリアント型コレクタ・オブジェクト４２８の１つの入力ノードは、移送オブジェクト４３０によって接続されたデータセットタイプを２倍或いは充当する動作オブジェクト４２４の出力ノードに接続されている。バリアント型コレクタ・オブジェクト４２８の別の入力ノードは移送オブジェクト４３０によってノード４０８−１に接続される。キャストアップ動作オブジェクト４０２（キャストアップオブジェクト４０２は自己参照である）のバリアント型入力ノードは、移送オブジェクト４３２によって、バリアント型コレクタ・オブジェクト４２８の出力ノードに接続される。ノード４３４は移送オブジェクト４３６によって、キャストアップオブジェクト４０２の出力ノードに接続される。
【０１０７】
合成プロセスの間のキャストアップ動作オブジェクト４０２の動作は、設計におけるノード４０８上のデータセットタイプが１ニブル（４ビット長）である仮想の例を通して解釈されるものとする。本実施例の概要において、キャストアップ動作オブジェクト４０２は、規定された、より高いレベル・データセットタイプのためのデータセットタイプのキャスティングで帰着する。この例において、より高いレベルのデータセットタイプがクォード単語（Ｑ単語）（６４ビット長）であると仮定する。
【０１０８】
図Ｅ５の例証ダイアグラムは、設計における合成プロセス中のノード４１２，４１２−１上のデータセットタイプがニブル・タイプ（４ビット長）であるキャストアップ動作オブジェクトの発展を一般用語で図示する。合成プロセスの最中において、バリアント型キャストアップ動作オブジェクト４０２は、図Ｅ３に図示された端末リーブ４２０に到達する前に、４回実証される。データセット伝達プロセスは、この開示における他の箇所で詳述されたように、この例示化プロセスを動作させる。この発明の本実施例において、データセットは、その端末リーブ（原子の形式）に対する未解決オブジェクトを越えて伝達させることができない。従って、それは図Ｅ１からも判るように、キャストダウンオブジェクト４０４がデータセット伝達プロセスによって解決される前に、キャストアップオブジェクト４０２は図Ｅ３におけるその端末リーブにおいて解決される。
【０１０９】
図Ｅ５を参照すると、その第１の例示化４０２−１におけるキャストアップ動作オブジェクトは４ビットのニブル・データセットを８ビットバイトデータセットに変換する。バリアント型コレクタオブジェクト４２８−１の第１の例示化は、２つの４ビットのデータセットタイプ入力及び８ビットのデータセットタイプ出力で示される。その２番めの例示化４０２−２は８ビットバイトデータセットタイプを１６ビットの単語データセットタイプに変換する。バリアント型コレクタオブジェクト４２８−２の別の例示化は、２つの８ビットのデータセットタイプ入力及び１６ビットのデータセットタイプ出力で示される。その３番めの例示化４０２−３は１６ビットの単語データセットタイプを３２ビットのＤｗｏｒｄ（ダブルの単語）データセットタイプに変換する。バリアント型コレクタオブジェクト４２８−３の３番めの例示化は、２つの１６ビットのデータセットタイプ入力及び３２ビットのデータセットタイプ出力で示される。その４番めの例示化４０２−４は３２ビットのＤｗｏｒｄデータセットタイプを６４ビットのＱｗｏｒｄ（クォード単語）データセットタイプに変換する。バリアント型コレクタオブジェクト４２８−４の４番めの例示化は、２つの３２ビットのデータセットタイプ入力及び６４ビットのデータセットタイプ出力で示される。このように、キャストアップオブジェクト４０２，４１８は、ノード４１２，４１２−１上の４ビットのデータセット入力を受信する例示化から入力ノード４１２，４１２−１上の３２ビットの入力を受信する例示化まで発展する。最終例示化において、端末リーフ４２０は、ノード４１２−２上の６４ビットのデータセットタイプを受信する。
【０１１０】
キャストアップオブジェクト４０２の５番めの例示化は図Ｅ３において示される端末リーフ４２０である。端末リーフオブジェクト４２０は、移送オブジェクト４４２によって出力ノード４４０に接続された入力ノード４３８を含んでいる。入力と出力のノード及び移送オブジェクトの各々はＱｗｏｒｄデータセットタイプである。端末リーフキャストアップオブジェクト４２０はこの例におけるキャストアップ動作の原子のバージョンである。
【０１１１】
下記は、もっと、図Ｅ２のキャストアップオブジェクト詳解４１８の動作の詳細な記述である。図Ｅ５において図式で表された例示化の各々がキャストアップ詳解オブジェクト４１８を含んでいる。キャストアップオブジェクト（例えば ４ｂｉｔ，８ｂｉｔ，１６ｂｉｔ，３２ｂｉｔ）の発展における、各例示化の入力ノード４０８−１上にバリアント型データセットタイプがある。逆に、キャストアップオブジェクト（例えば ４ｂｉｔ，８ｂｉｔ，１６ｂｉｔ，３２ｂｉｔ）の発展における各例示化中に、バリアント型コレクタオブジェクト４２８の出力ノード上にバリアント型データセットタイプがある。コレクタオブジェクト４２８は、キャストアップオブジェクト４１８の連続の例示化中に、４２８−１から４２８−２、４２８−３、４２８−４まで発展させる。
【０１１２】
上記の例では、図Ｅ１におけるノード４１２へ（或いは一定の値データセットタイプとして提供される）４ビット（ニブル）のデータセットタイプが伝達されると仮定する。移送オブジェクト４１４は、キャストアップオブジェクト４０２の入力ノードへ４ビットのデータセットタイプを移送（伝達）する。キャストアップオブジェクト４０２のただ一つの入力ノードが変種で、それ（或いは定義した）に対して定義されたデータセットを伝達させるので、合成プロセスは、キャストアップオブジェクト４０２を解決するために平坦化プロセスを呼び出す。
【０１１３】
合成プロセスは、図Ｅ１におけるキャストアップオブジェクト４０２をオブジェクト・ライブラリーの等価な機能を参照するトークンと見なすことができる。図Ｅ９では、論理的な機能に関係するオブジェクト・ライブラリーの一部が示されている。トップレベルのキャストアップ動作オブジェクト４０２は、２つの低レベル動作オブジェクト４１８及び４２０を参照する。オブジェクト４１８はバリアント型。オブジェクト４２０は明示的であり、６４ビットのデータセットタイプ入力ノードを持っている。この例において、合成プロセスのこの結合では、キャストアップオブジェクトの入力ノード上のデータセットタイプは、４ビットのタイプである。明示的なオブジェクト４２０に対してマッチングはしない。このように、平坦化アルゴリズムはバリアント型キャストアップオブジェクト４１８を呼び出し、トップレベルのキャストアップオブジェクト４０２に代わる設計にそれを挿入する。
【０１１４】
一旦キャストアップオブジェクト４１８が設計に挿入されたならば、図Ｅ１に示すノード４１２上の４ビットのデータセットタイプは、図Ｅ２に示すノード４１２−１に対して伝達される。４ビットのデータセットタイプは合成移送オブジェクト４２６に対して伝達される。４ビットのデータセットタイプはデータセットタイプを２倍或いは充当する動作オブジェクト４２４に対して伝達される。４ビットのデータセットタイプは、さらに、データセット・コレクタオブジェクト４２８の最下位ビット入力ノードに対して伝達される。
【０１１５】
データセットタイプを２倍或いは充当する動作オブジェクト４２４のただ一つの入力ノードが、変種であり、それに対して定義されたデータセットを伝達させるため、合成プロセスは、データセットタイプを２倍或いは充当する動作オブジェクト４２４を解決するために平坦化プロセスを呼び出す。オブジェクト４２４の動作は、同一のタイプ（データセット伝達プロセスのこの結合における４ビット）の新規のデータセットを生成することである。オブジェクト４２４は、新しく生成されたデータセットにおける各ビットに一定の値（本実施例における論理的な０値）を割り当てる。オブジェクト４２４は、コレクタオブジェクト４２８の最上桁のビット入力ノードに対して新しく生成されたデータセットを出力する。
【０１１６】
伝播及び平坦化プロセスのこの結合では、ビット値ＸＸＸＸを有する４ビットのデータセットタイプは、コレクタオブジェクト４２８の最下位ビットノード上で提供される。さらに、伝播及び平坦化プロセスのこの結合では、一定のビット値００００を有する４ビットのデータセットタイプは、コレクタオブジェクト４２８の最上桁のビットノード上で提供される。伝達データセットプロセスは、コレクタオブジェクト４２８（実際には図Ｅ５における４２８−１）にその出力ノード上の８ビットのデータセットタイプを出力させる。より明確には、データセットタイプは形式００００ＸＸＸＸである。４つの最上桁のビットは一定の値であり、好ましい実施例では０となる。４つの最下位ビットは変数であり、論理的な１つの或いは論理的な０のいずれかである。
【０１１７】
次に、移送オブジェクト４３２は、キャストアップオブジェクト４０２の入力ノードのための８ビットのデータセットを伝達させる。キャストアップオブジェクト４０２のただ一つの入力ノードが変種であり、それ（プロセスにおける結合の８ビット）に対して定義されたデータセットを伝達させる、合成プロセスは、キャストアップオブジェクト４０２を解決するために再び平坦化プロセスを呼び出す。同一の処理パターンは、入力ノード４１２−１上で提供される形式００００ＸＸＸＸの８ビットのデータセットで今回繰り返す。処理パターンにおける次の反復結果は、コレクタオブジェクト４２８（図Ｅ５に示す４２８−２）の出力ノードから伝達させられた形式００００００００００００ＸＸＸＸの１６ビットのパターンである。１６ビットのデータセットタイプは、キャストアップオブジェクト４０２の入力ノードのための移送オブジェクト４３２によって伝達させられる。合成プロセスは、キャストアップオブジェクト４０２を解決するために再び平坦化プロセスを呼び出す。同一の処理パターンは、１６ビットのデータセットで繰り返す。
【０１１８】
図Ｅ５において最良に示すように、トップレベルのキャストアップオブジェクト４０２と図Ｅ３の端末リーフオブジェクト４２０の間に明示的なマッチがあるまで、この再帰的な処理のパターンは繰り返される。端末リーフ４２０は、再帰的なキャストアップ処理パターンの次の４つの反復に到達する。キャスト処理におけるその結合の結果は、図Ｅ１のバリアント型キャストアップオブジェクト４０２に代わる図Ｅ３の端末リーフオブジェクト４２０の設計への挿入である。さらに、端末リーフオブジェクト４２０のノード４１６−２上のデータセットタイプは、主要な（最上位）（６０）ビット位置で一定の値（好ましい実施例における論理的な０）を有しており、４つの最下位ビット位置で４つ（４）変数値ＸＸＸＸビットを有している。このように、結果は、６４ビットのデータセットのための４ビットのタイプ・データセットのキャスティングとなる。さらに、一定の値（好ましい実施例では０）における６４ビットのデータセットは、最桁６０のビット位置にパックに生成され、４つの最下位ビット位置は可変ままとなる。
【０１１９】
図Ｅ１を再び参照すると、合成プロセスでのこの結合は、その移送オブジェクト４０６が、キャストダウン動作オブジェクト４０４のデータセット入力ノードのための上記６４ビットのデータセットを伝達させたものと仮定する。さらに、この例において、ノード４０８上のデータセットタイプが１６ビット（ワード）のタイプで、その１６ビットのタイプが、キャストダウンオブジェクト４０４のタイプ入力ノードのための移送オブジェクト４１０によって伝達させられた、と仮定する。したがって、タイプのキャストは、１６ビットのタイプ・データセット（ノード４０８）へ入力するべき４ビットのタイプ・データセット（ノード４１２）のキャストである。
【０１２０】
よって、合成プロセスでの結合では、平坦化アルゴリズムが呼び出される。合成プロセスがキャストダウンオブジェクト４０４をより低いレベル（掘り下げて詳解する）動作を参照するトークンと見なすと記憶されたい。データセット伝達プロセスのこの結合で、この例において仮定される、平坦化アルゴリズムは、図Ｅ１に示すキャストダウンオブジェクト４０４の入力ノードの各々に対してデータセットタイプが伝達したのを監視する。その後、平坦化プロセスは、より低いレベルのキャストダウンオブジェクトの明示的なマッチを求めてオブジェクト・ライブラリーを検索する。図Ｅ７には、キャストダウン動作に対して関係のあるオブジェクト・ライブラリーの一部が示されている。オブジェクト・ライブラリーは階層的である。トップレベルのキャストダウンオブジェクト４０４は、バリアント型キャストダウンオブジェクト４２２及び明示的なキャストダウンオブジェクト４５８の両方を参照する。変種キャストダウンオブジェクトはそのノードの各々の上に変種データセットを有している。変種キャストダウンオブジェクト４２２の詳細は図Ｅ４において示される。明示的なキャストダウンオブジェクト４５８の詳細は図Ｅ６において示される。明示的なキャストダウンオブジェクト４５８は各ノード上に６４ビットのデータセットタイプを有している。
【０１２１】
その検索は、合成プロセスの現在の結合におけるキャストダウンオブジェクト４０４の入力ノードに対して伝達させられたその入力ノード上に同一の明示的なデータセットタイプを有しているより低いレベルのキャストダウンの論理的な動作オブジェクトである。合成プロセスでの彼の結合では、キャストダウンオブジェクト４０４のタイプ入力ノードはそれに対して１６ビットのデータセットタイプを伝達させる。さらに、合成プロセスでの彼の結合では、キャストダウンオブジェクト４０４のデータセット入力ノードはそれに対して６４ビットのデータセットタイプを伝達させる。図Ｅ７のオブジェクト・ライブラリーの一部を参照すると、明示的なマッチを有するキャストダウンライブラリー・オブジェクトはない。すなわち、明示的な１６ビットのタイプ入力ノード及び明示的な６４ビットのデータセット入力ノードを有するキャストダウンライブラリー・オブジェクトはない。したがって、合成エンジンは、図Ｅ１におけるトップのレベル・キャストダウンオブジェクトのパレスにおける設計に挿入される、図Ｅ４に示される変種キャストダウンオブジェクト４２２を選択する。
【０１２２】
概要的には、この例におけるキャストダウンオブジェクト４０４の解決は、図Ｅ８において示されるオブジェクト４７８の収集を有する図Ｅ１のオブジェクト４０４の設計例における置換に帰着するだろう。解決プロセス中に、第１のデータセット抽出４８０が、設計に対して加えられる。次に、データセット抽出４８２が設計に対して加えられる。最後に、移送オブジェクト４８４が設計に対して加えられる。
【０１２３】
この例において、キャスト動作の全面的な目的は、１６ビットのタイプ・データセットに４ビットのタイプ・データセットを割り当てることである。この例において、図Ｅ１のノード４１２に対して伝達させられた４ビットのデータセットは、６４ビットのタイプまで、図Ｅ１のキャストアップオブジェクト４０２によって割り当てられることに留意されたい。さらに、図Ｅ１のノード４０８上の入力が１６ビットのデータセットタイプであることに留意されたい。したがって、この例の設計におけるキャストダウンオブジェクトの役割は、１６ビットのタイプ・データセットに６４ビットのデータを割り当てることである。
【０１２４】
概要的には、図Ｅ８のオブジェクト４７８の収集に関して生じるデータセット伝達プロセスの一部が説明されるものとする。キャストダウンオブジェクトの後に、図Ｅ１の４０４が解決されるまで、そのようなデータセット伝播が生じることがないことが認識されるだろう。しかしながら、次の説明は、解決プロセスに対する見識を示すだろう。データセット伝播中に、キャストアップオブジェクトによって伝達させられた６４ビットのデータセット（図Ｅ３の端末リーフオブジェクト４２０に対して解決された）は、移送オブジェクト４８４に対して伝達させられる。最終設計における伝達させられたものの上の主要な６０ビット、これら下位４ビットは、図Ｅ１のノード４１２上で提供されるデータセットの情報を伝えることができる。データセット抽出４８２の入力ノードは４８４を移送するために接続される。データセット抽出４８２の最下位ビット出力ノードは、移送オブジェクト４８６によって、データセット抽出４８０の入力ノードに接続される。データセット抽出４８２の最上桁のビット出力は接続されていない。データセット抽出４８０の最下位ビット出力ノードは、移送オブジェクト４８８に接続される。データセット抽出４８０の最上桁のビット出力は接続されていない。
【０１２５】
したがって６４ビットのデータセットが、図Ｅ８のオブジェクト４７８の収集を通して伝達させられるとして、より下位４ビット位置において図Ｅ１の入力ノード４１２からの４ビットを保持している間、それは、１６ビットのデータセットタイプまで降下される。特に、データセット抽出４８２は、移送オブジェクト４８６のためのより低い３２ビットを伝達させる。データセット抽出は、移送オブジェクト４８８のためのより低い１６ビットを伝達させる。図Ｅ８のオブジェクト４７８のコレクションは、上位４８ビット（移送４８４上において）を伝達させない。
【０１２６】
図Ｅ４には、バリアント型キャストダウンオブジェクト４２２の構成要素オブジェクトが示される。それは、別のデータセット（ノード４５４１上）タイプが振り当てられることになっているデータセットタイプを識別する情報を得る設計において接続されることになっているタイプ入力ノード４０８−１を含んでいる。ノード４０８−１は、合成移送オブジェクト４６６によって、データセットタイプを２倍或いは充当する動作オブジェクト４６２の入力ノード及びデータセット公表オブジェクト４６４の１つの入力ノードに接続される。データセットタイプを２倍或いは充当する動作オブジェクト４６２の出力ノードは、移送オブジェクト４６８によって、データセット公表オブジェクト４６４の別の入力ノードに接続される。入力ノード４５４−２は移送オブジェクト４６８によって、キャストダウンオブジェクト４０４のデータセット入力に接続される。キャストアップオブジェクト４０２によるキャストアップで、現ノード４０８−１上で示された所要のデータセットタイプ下に振り当てられることになっているデータセットを受信するために、入力ノード４５４−１は、設計において接続されることになっている。データセットタイプのためのデータセット抽出４６４の出力ノードは、移送オブジェクト４７０によってキャストダウンオブジェクト４０４のノードを入力する。図Ｅ４のキャストダウンオブジェクトの出力ノードは移送オブジェクト４７４によって、データセット抽出４７２の入力ノードに接続される。データセット抽出４７２の最下位ビット出力ノードは、移送オブジェクト４７６によってノード４５６−１に接続される。データセット抽出４７２の最上桁のビット出力ノードは接続されない。
【０１２７】
図Ｅ６には、明示的なキャストダウンオブジェクト４５８の構成要素オブジェクトが示される。それは３つのノード４０８−２、４５４−２及び４５６−２を含んでいる。ノード４０８−２は、データセットが振り当てられるデータセットタイプを受信するために接続される、入力ノードである。ノード４５４−２は、ノード４０８−２上で指定されたタイプに振り当てられるデータセットを受信するために、接続された入力ノードである。ノード４５６−２は、結果データセットを伝達させるために接続されたアウトプットノードである。図Ｅ６の各ノードは６４ビットのデータセットタイプを有していることとして定義される。６４ビットのデータセットタイプ移送オブジェクト４６０はノード４０８−２及び４５６−２を接続される。タイプ入力ノード４５２ぶら下がったままとなっている。このぶら下がったままとなったノード４０８−２は、拠り所がなくシンクレス（トリミング）アルゴリズムによってそれに接続されたすべてのオブジェクトの除去によるものであることが認識されるだろう。
【０１２８】
ここで、我々は、図Ｅ８のオブジェクト４７８のコレクションに図Ｅ１のキャストダウンオブジェクト４０４がどのように発展するかを説明するキャストダウンオブジェクト４０４の解決について、言及する。合成プロセスの彼の結合では、キャストダウンオブジェクト４０４のタイプ入力ノードのための１６ビットのデータセットタイプが伝達させられたと仮定する。
【０１２９】
キャストダウンオブジェクト４０４のデータセット入力ノードのための６４ビットのデータセット（それはキャストアップオブジェクト４０２によって計算された）が伝達させられたとさらに仮定する。平坦化アルゴリズムは、合成プロセスのこの結合におけるキャストダウンオブジェクトの入力ノード上のデータセットタイプと一致するキャストダウンオブジェクトを検出するオブジェクト・ライブラリーを参照する。最も一致度の高いものは、バリアント型キャストダウンオブジェクト４２２であり、それは、トップレベルのキャストダウンオブジェクト４０４に代わる設計に挿入される。特に、オブジェクト４２２のノード４０８−１はオブジェクト４０４のタイプ・ノードにに対して伝達させられたデータセットタイプを受信するために接続される。オブジェクト４２２のノード４５４−２は、オブジェクト４０４のデータセット・ノードに対して伝達させられたデータセットを受信するために接続される。オブジェクト４２２のノード４５６−１は移送オブジェクト４１８に出力データセットを供給するために接続される。
【０１３０】
合成プロセスでのこの結合では、第１のバリアント型選択オブジェクト４８０が設計に、オブジェクト４２２の挿入の一部として挿入されることが認識されるだろう。
【０１３１】
次に、データセット情報はキャストダウンオブジェクト４２２に対して伝達させられる。ノード上の１６ビットのデータセットタイプ４０８−１は、データセットタイプを２倍或いは充当する動作オブジェクト４６２の入力ノードのための移送オブジェクト４６６によって伝達させられる。オブジェクト４６２の動作は、同一のタイプ（データセット伝達プロセスのこの結合の１６ビット）の新規のデータセットを生成することである。オブジェクト４６２は、新しく生成されたデータセットにおける各ビットに一定の値（本実施例における論理的な０値）を割り当てる。オブジェクト４６２は、コレクタオブジェクト４６４の最上桁のビット入力ノードに対して新しく生成されたデータセットを出力する。その間に、ノード４０８−１上の１６ビットのデータセットタイプは、さらに、データセット・コレクタオブジェクト４２８の最下位ビット入力ノードのための移送オブジェクト４６６によって伝達させられる。データセット・コレクタオブジェクト４６４は、移送オブジェクト４７０のための３２ビットのデータセットを伝達させる。
【０１３２】
合成プロセスのこの結合では、３２ビットのタイプ・データセットは、キャストダウンオブジェクト４０４のタイプ入力ノードに対して伝達させられた。さらに、６４ビットのデータセットは、キャストダウンオブジェクト４０４のデータセット入力ノードに対して伝達させられた。したがって、平坦化アルゴリズムは、再び最も一致するものについてオブジェクト・ライブラリーを検索する。図Ｅ７に示すように、明示的な３２ビットのタイプ入力及び明示的な６４ビットのデータセット入力を行っているキャストダウン動作のためのオブジェクト・ライブラリーにはオブジェクトはない。したがって、平坦化アルゴリズムは再びバリアント型キャストダウンオブジェクト４２２を選択し、図Ｅ４のトップレベルのキャストダウンオブジェクト４０４の代わりにそれを挿入する。
【０１３３】
合成プロセスでのこの結合では、設計に、キャストダウンオブジェクト４２２の挿入の一部として設計に第１のバリアント型選択オブジェクト４８２が挿入されることが認識されるだろう。
【０１３４】
再び、データセット情報はキャストダウンオブジェクト４２２を通して伝達させられる。この時、データセットタイプを２倍或いは充当する動作オブジェクト４６２の入力ノードのための移送オブジェクト４６６によって伝達させられるノード４０８−１上に３２ビットのデータセットタイプがある。オブジェクト４６２の動作は、同一のタイプ（データセット伝達プロセスにおける結合３２ビット）の新規のデータセットを生成することである。オブジェクト４６２は、新しく生成されたデータセットにおける各ビットに一定の値（本実施例における論理的な０値）を割り当てる。その間に、ノード４０８−１上の３２ビットのデータセットタイプは、さらに、データセット・コレクタオブジェクト４６４の最下位ビット入力ノードのための移送オブジェクト４６６によって伝達させられる。オブジェクト４６２は、コレクタオブジェクト４６４の最上桁のビット入力ノードに対して新しく生成されたデータセットを出力する。データセット・コレクタオブジェクト４６４は、移送オブジェクト４７０のための６４ビットのデータセットを伝達させる。
【０１３５】
合成プロセスのこの結合では、６４ビットのタイプ・データセットは、キャストダウンオブジェクト４０４のタイプ入力ノードに対して伝達させられた。さらに、６４ビットのデータセットは、キャストダウンオブジェクト４０４のデータセット入力ノードに対して伝達させられた。したがって、平坦化アルゴリズムは、再び最も合致したものについてオブジェクト・ライブラリーを検索する。この時、図Ｅ７のオブジェクト・ライブラリー一部の中にキャストダウンオブジェクト４５８に対して明示的な一致がある。オブジェクト・ライブラリーにおいてキャストダウンオブジェクト４５８は、特に、６４ビットのタイプ入力及び明示的な６４ビットのデータセット入力に対して明示的なマッチを有している。したがって、この時、平坦化アルゴリズムは明示的なキャストダウンオブジェクト４５８を選択し、図Ｅ４のトップレベルのキャストダウンオブジェクト４０４の代わりにそれを挿入する。
【０１３６】
合成プロセスでのこの結合では、設計に、キャストダウンオブジェクト４２２の挿入の一部として設計に移送オブジェクト４８４が挿入されることが認識されるだろう。
【０１３７】
したがってこの例では、合成プロセスの最中に図Ｅ１のキャストアップオブジェクト４０２は、図Ｅ３の端末リーフオブジェクトに対して解決される。図Ｅ１Ａのノード４９４上のデータセットは、規定されたデータセットタイプまで最初に振り当てられる。この場合、規定されたデータセットタイプは６４ビットのタイプである。ノード４９４に対して伝達させられたデータセットの４ビットは、６４ビットのデータセットのより下位の４ビット位置にある。さらに、図Ｅ１のキャストダウンオブジェクト４０４は、図Ｅ８のオブジェクト４７８のコレクションに分解される。キャストアップに対して伝達させられた６４ビットのデータセットは、移送オブジェクトから抽出オブジェクト４８２まで伝達させられる。より下位の３２ビットは、抽出オブジェクト４８２から抽出オブジェクト４８０まで伝達させられる。より下位の１６ビットは、抽出オブジェクト移送オブジェクト４８８のための４８０によって伝達させられる。したがって、図Ｅ１Ａのトップレベルのオブジェクト４９０のノード４９４上の４ビットのデータセットは、オブジェクト４９２のノード４９２上の１６ビットのデータセットタイプに振り当てられる。生じるデータセットは、トップレベルのキャストオブジェクト４９０の解決の一部として生成された図Ｅ８の移送オブジェクト４８８上で伝達させられる。
【０１３８】
バリアント型オブジェクト４２４、及び４６２、異形データセット抽出４８０、及び４８２、このセクションにおける議論されたタイプの明示的なタイプオブジェクトの中へのバリアント型コレクタ４２８、バリアント型抽出４６４及び４７２の解決は、この開示の他の記述により認識されるだろう。特に、平坦化及びデータ伝播アルゴリズムは、キャストオブジェクト４９０の解決の最中にこれらのバリアント型オブジェクトを解決するように協動する。同一の一般的なプロセスは、これらのオブジェクトを特に解決するために一般にキャストオブジェクト４９０を使用して解決した。
【０１３９】
発明の好ましい実施例に係るキャスト・プロセスでは、所要のデータセットタイプを包含するために、所要のデータセットタイプまで最初に振り当てられるデータセットは、十分に大きなデータセットの既知のデータセットタイプまで振り当てられる。その後、データセットは既知のデータセットタイプから下降して所要のデータセットタイプに振り当てられる。
【０１４０】
（定数伝達プロセス）
定数伝達プロセスは、定数が接続される原子的オブジェクトを解決する。本実施例において、一定の値は、論理的な１或いは論理的な０などのバイナリフォーマットで表される。定数伝達プロセスは、原子的オブジェクトに一定の伝達プロセス中に一定の値入力を行っている原子のオブジェクト解決規則を適用することにより作動する。基本的に、オブジェクト解決規則は、それらに適用された一定の値による原子のオブジェクトによって指定された実際の原子の動作を実行する。図Ｌ５−Ｌ１０の概要図は、発明の本実施例の定数伝達プロセスによって実行された原子のオブジェクト解決規則を図示する。
【０１４１】
図Ｌ１−Ｌ２は、原子のＩＮＶＥＲＴＥＲオペレーターのための原子のオブジェクト解決規則を示す。図Ｌ１において、論理的０定数がその入力ノードに供給される場合、移送オブジェクトはインバーターを、その入力ノードに接続された論理的１定数に置換する。図Ｌ２において、論理的１定数がその入力ノードに供給される場合、送オブジェクトはＩＮＶＥＲＴオペレーターを、その入力ノードに接続された論理的０定数に置換する。
【０１４２】
図Ｌ３−Ｌ４は、原子のＡＮＤオペレーターのための原子のオブジェクト解決規則を示す。図Ｌ３において、論理的０定数がその入力ノードの１つに供給される場合、その入力ノードに接続された論理的０定数を有する移送オブジェクトは、ＡＮＤオペレーターに置換する。移送オブジェクト或いは一定の値の出力ノードは、いずれかにおいて、ＡＮＤオペレーターの別の入力ノードに対して接続されて、ダングル状態となる。図Ｌ４において、論理的１定数がＡＮＤオペレーターの入力ノードの１つに供給される場合、その他の入力ノードに接続されて、いずれにおいても、その後、ＡＮＤオペレーターは移送オブジェクトまたは一定の値と置換される。論理的１定数はダングル状態となる。
【０１４３】
図Ｌ５−Ｌ６は、原子のＯＲオペレーターのための原子のオブジェクト解決規則を示す。図Ｌ５において、論理的１定数がその入力ノードの１つに供給される場合、その後、その入力ノードに接続された論理的１定数を有する移送オブジェクトは、ＯＲオペレーターを置換する。移送オブジェクトまたは一定の値、いずれにおいても、別の入力ノードにおいては、ダングル状態となる。図Ｌ６において、論理的０定数がＯＲオブジェクトの入力ノードの１つに供給される場合、その他の入力ノードに接続されて、ケースが（どちら）でも、その後、ＯＲオペレーターは、移送オブジェクトまたは一定の値の出力ノードと置換される。論理的０定数値はダングル状態となる。
【０１４４】
図Ｌ７−Ｌ１０は、譲渡オペレーターのための原子のオブジェクト解決規則を示す。図Ｌ７において、論理的０定数が譲渡オペレーターの入力ノードに供給される場合、その後、譲渡オペレーターは、その入力ノードに接続された論理的０定数を有する移送オブジェクトと置換される。図Ｌ８において、論理的１定数が譲渡オペレーターの入力ノードに供給される場合、その後、譲渡オペレーターは、その入力ノードに接続された論理的１定数を有する移送オブジェクトと置換される。図Ｌ９−１０において、計測された譲渡オペレーターのクロック入力がそれに論理的１或いは論理的０定数値のいずれかを適用する場合、その後、その計測された譲渡オペレーターは、２つのダングリングノードと置換される。
【０１４５】
図Ｄ３への言及及び図Ｌ１０−Ｌ１３のブロック図は、発明の好ましい実施例に係るパラメータ化された選択的なシンボル代用を動作させるために、どのように伝達移送プロセスを使用できるかを説明するために使用されるものである。言いかえれば、この説明は、明示的なオブジェクトに、パラメータ化された多態オブジェクトの解決のための定数伝達プロセスによって貢献する。図Ｌ１０−Ｌ１３に、その原子の要素にバリアント型多態動作オブジェクトを減じる際に伝達データセットプロセス及び平坦化プロセスの結合した動作を図示する。一旦オブジェクトがその原子の要素に減じられたならば、その後、原子のオブジェクト解決が規定する伝達定数に応じて、原子的オブジェクトは、図Ｌ１−Ｌ１２において説明されるように、それらの原子の動作に従って解決されるだろう。
【０１４６】
定数伝達プロセスは、原子のオブジェクト解決規則に従ってパラメータ化されたオブジェクトの制御一部に関連した原子的オブジェクトをさらに変形することにより、パラメータ化されたバリアント型動作オブジェクトの解決に寄与する。定数伝達プロセスによるこれらの規則のアプリケーションは、合成プロセス自体の情況において、そのような動作のオブジェクトの制御一部に関連した等価な機能に対して効果を示す。ネットリストにおける制御一部におけるバリアント型動作オブジェクトの解決に由来した原子的オブジェクトを含んでいる代わりに、制御部分における原子的オブジェクトは、合成プロセス自体の情況における値を生むために使用される。これらの値はパラメータ化された多態動作オブジェクトの他の一部の解決をコントロールするために使用される。
【０１４７】
すなわち、発明の本実施例において、パラメータ化された多態動作オブジェクトをパラメータ化するために使用されるパラメータは定数伝達プロセスを使用して、設計において伝達させることができる。動作オブジェクトの制御一部の原子的オブジェクトを解決するために伝達させられた定数は、そのようなパラメータに対して効果を示す１つのつ以上の値を生成することができる。それは原子のオブジェクト解決規則によって生成された値であり、合成プロセス自体の情況において多態オブジェクトの様々な可能な分解の中の選択を行なうために使用される。図Ｄ１−１０において説明されるように、原子の解決規則によって生成された値は選択オブジェクトを運転することができる。
【０１４８】
図Ｌ１０を参照して、図Ｄ３の異形比較オブジェクトが示される。この開示の別の記述で説明されるように、異形比較オブジェクト２５０は、パラメータ化された多態ＡＤＤ動作オブジェクト２３０の制御部２８０の一部である。情報率は、ＡＤＤ動作オブジェクト２３０の選択的な合成をコントロールするパラメータである。図Ｄ３及びＬ１０の比較オブジェクト２５０は、変種入力ノードＡ及びＢを有しており、図示したような、３つのビット−タイプ出力ノード「Ａ＝Ｂ２」、「Ａ＞Ｂ」「Ａ＜Ｂ」を有する。図Ｌ１０の変種比較オブジェクトはトップレベルの比較オブジェクトである。それは、図Ｌ１１に示すように、次のレベルの変種動作比較オブジェクト２５０’を参照する。バリアント型比較動作オブジェクト’２５０は、図示のように接続された、トップレベルの比較オブジェクト２５０の２つのインスタンス、２つの変種データセット公表オブジェクト７２０、３つのマルチプレクサー動作オブジェクト７２２，７２４及び７２６を含んでいる。トップレベルの比較オブジェクト２５０は、図Ｌ１３に示すように、原子レベル加算オブジェクト’２５０と、４つのインスタンスとを参照する。バリアント型比較オブジェクトの比較動作は、この記述及びこの開示の他のセクションの記述からの技術に熟練している人々によって理解され、さらに自明でないものとする。
【０１４９】
図Ｄ３に示すように、この例では、４ビットのデータセットタイプを要求する、４ビットの値によって情報率が表されると仮定する。図Ｄ３のソース・ノード２６４及び２６６上で２つの情報率を表す２つの定数が提供されると仮定する。４ビットのデータセットタイプが各々のノード２６４及び２６６上で提供されるとさらに仮定する。この開示の他のセクションにおいて説明されているように、合成プロセス中において、ソース・ノード２６４及び２６６上の情報率及びデータセットタイプは、設計データベースにおける他のノードから取得されるか、コピーすることができる。特に、合成プロセス中に、ノード２６４及び２６６上で指定された特性規則はこれらのノードにそのような情報を得るか、或いはコピーするために使用することができる。それが認識されるだろう。パラメータの獲得は、オブジェクトを解決するために使用された合成プロセスの情況におけるパラメータ化された多態動作オブジェクトを解決するために使用され、本発明の選択的なシンボル代用プロセスの有力な特徴である。
【０１５０】
図Ｌ１０−Ｌ１３、伝達データセット及び平坦化プロセスを最初に参照することは、図Ｌ１１に示されるオブジェクト’２５０へと、図Ｌ１０に示されるオブジェクト２５０を分解する。次に、伝達データセット及び平坦化プロセスは、図Ｌ１２に示されるオブジェクト２５０−１へと、図Ｌ１１に示されるオブジェクト’２５０を分解する。最後に、伝達データセット及び平坦化プロセスは、図Ｌ１３に示されるオブジェクト２５０−２へと、図Ｌ１２に示されるオブジェクト２５０−１を分解する。オブジェクト２５０−２は、原子のレベル比較オブジェクト２５０”の４つのインスタンスを含んでいる。
【０１５１】
原子のレベル・オペレーターの入力ノードにノード２６４及び２６６上で情報率を表す４ビットの一定値（論理的１と論理的０を使用）が供給されると仮定する。それは２つの論理値（Ａ０、Ｂ０）であり、原子レベル比較オブジェクト２５０”の１つのインスタンスに対する入力として提供される。２つの論理値（Ａ１、Ｂ１）は、原子レベルの比較オブジェクト２５０”の別のインスタンスに対する入力として提供される。２つの論理値（Ａ２、Ｂ２）は、原子レベルの比較オブジェクト２５０”の別のインスタンスに対する入力として供給される。２つの論理値（Ａ３、Ｂ３）は、原子レベルの比較オブジェクト２５０”の別のインスタンスに対する入力として供給される。
【０１５２】
この例において、これらの論理値は、原子のレベル・オブジェクトに直接供給され、定数伝達プロセスは、原子のオブジェクトの各々を分解する原子のオブジェクト解決規則を適用し、合成プロセス自体の情況におけるそれらの動作に対して効果を示す。結果値は、図Ｄ３の制御一部２８０において他の動作オブジェクトを動作させるために使用され、順次、パラメータ化された多態ＡＤＤ動作オブジェクト２３０の選択的な合成をコントロールする。
【０１５３】
（情報率伝達プロセス）
情報率伝達プロセスは、１つのオブジェクトの出力ノードから別のオブジェクトの入力ノードまで情報率情報を伝達させる。与えられた出力ノードのために、情報率伝達プロセスは、情報率値が、与えられた出力ノードの「設定」と連携しているか否か、それがそのデフォルト値以外に値を有しているか否かを判断する。情報率伝達プロセスは、さらに情報率値が与えられた出力ノードに接続された入力ノードの準備ができているかどうかを判断する。情報率値は、与えられた出力ノードの準備ができているが、入力ノードに対する接続が準備ができていない場合、情報率伝達プロセスは入力ノードに対して、接続のための与えられた出力ノードに関連した情報率をコピーする。
【０１５４】
情報率値が与えられた出力ノードの準備ができていない場合、情報率伝達プロセスは、与えられた出力ノードの属性情報からの情報率を生成することを試みる。与えられた出力ノードの属性は、情報率を計算するために使用されるパラメータ及び動作を指定する属性計算機情報を含んでいてもよい。属性計算機は、さらに設計データベースにそのようなパラメータの位置に関する情報を含んでいてもよい。さらに、その位置情報は、与えられた出力ノード、及び両方のノードがメンバーである合成オブジェクトの別のノードの相対的な位置に換算してパラメータ情報の位置について記述してもよい。それが任意の特別の設計の詳細から情報率情報の生成を分離する役目をすることができるので、相対的な用語において位置情報の記述は重要である。むしろ、与えられた出力ノードのために生成された情報率は情報率、或いは、属性計算機に記述された相対的な位置において別のノードに対して伝達させられた他のパラメータに依存する。したがって、生成された情報率は状況依存となる。すなわち、生成された情報率は、生成、或いは他の方法により伝達されるべき情報率（或いは、適切であると認められた他のパラメータ）に依存させることができ、合成プロセスの情況における相対的な位置においてその他のノードを所有している。
【０１５５】
すなわち、発明の本実施例における属性計算機は以下のように組み立てられる。
【０１５６】
トークン、トークン２（オペレーター）
トークンの例は以下のとおりである。
【０１５７】
＃＃Ｎ２． Ｃ
発明の本実施例のシンタックスにおいて、シンボル＃は、与えられた出力ノードがメンバーである合成オブジェクトの中に次のオブジェクトの相対的な位置を表す。シンボル＃＃は、与えられた出力ノードがメンバーである合成オブジェクトにおいて２つのオブジェクトをより強調して表す。Ｎ２は、表示されたより高いレベル・オブジェクトの第２のノードを表す。シンボルＣはデータセットタイプを表す。例属性計算機情報は以下のとおりである。
【０１５８】
＃＃Ｎ２． Ｃ，＃＃＃Ｎ３． Ｃ，＋
発明の本実施例のシンタックスにおいて、上記の属性計算機情報は、ノード２におけるノード３の情報率に対して情報率を加算する。ノード２は、合成オブジェクトにオブジェクトに２レベル位置し、また、ノード３は、合成オブジェクトに３レベル位置する。
【０１５９】
多数のバリアント型オペレーターは、より大きなものを選択するために、或いはより小さなものを選択するために、分割するか増加させるかするために使用することができる。さらに、情報率を生成する属性計算機が情報率以外のバリアント型パラメータを使用することができることが認識される。例えば、情報率はその代りに、規定された関係位置において別のノードに対して伝達させられたデータセットタイプに基づいて計算してもよい。
【０１６０】
代わりに、属性計算機は、目標ハードウェア環境のための特効薬に適合した情報率の使用に帰着させてもよい。例えば、特別のＦＰＧＡアーキテクチャーに対してターゲットとされた設計へ動作記述が合成されることになっていることは周知かもしれない。その場合において、属性計算機は、そのハードウェアのために、目標ＦＰＧＡハードウェア及び特別の情報率を示す、規定された関係位置において別のノードから情報を得るかもしれない。その場合において、情報率を計算することができるか、或いは特別の目標ハードウェアに基づいて割り当てることができる。
【０１６１】
生成された情報率プロセスをさらに説明すると、情報率が与えられた出力ノードに対して適切に生成される場合、情報率伝達プロセスは、上に記述されるような情報率を伝達させることを試みる。他方では、情報率がそのとき生成されない場合、情報率は与えられた出力ノードによって伝達させられない。例えば、規定された関係位置において１つ以上の他のノードに対して必要な情報率或いは他のパラメータをまだ伝達されていない可能性があり、情報率は生成されない可能性もある。
【０１６２】
図Ｄ３を参照すると、各々のソース・オブジェクト２６４及び２６６の出力ノードが、そのそれぞれの属性の一部として、それぞれの属性計算機を含むことが認識される。ソース・オブジェクト２６４の属性計算機は、必要とされる情報率情報を有しているとしてソース・オブジェクト２５６の出力ノードを識別する。ソース・オブジェクト２６６の属性計算機は、必要とされる情報率情報を有しているとしてソース・オブジェクト２５８の出力ノードを識別する。
【０１６３】
平坦化プロセス及び選択した等価な関数プロセス平坦化プロセスは以下のように開始される。与えられた合成オブジェクトのために、すべての接続しているノードのための入力がすべて知られている（データセットタイプ及び一定値）場合オブジェクトを平坦化する。すなわち、バリアント型動作オブジェクトに代わる平坦化プロセスによって設計へ代用される適切な等価オブジェクトを選択する選択等価関数プロセスを呼び出す。次に、与えられたオブジェクトに代わる設計へ選択されたオブジェクトを代用する。
【０１６４】
選択した等価な関数プロセスは、選択した等価な関数プロセスのための呼び出しを促した与えられた合成オブジェクトによって参照された、１つのつ以上のより下位レベルのオブジェクトの中で選択を行なう。代用に対する各候補は、この開示の別のセクションにおいて記述された公理システムを使用して決定されるような等価動作を有していなければならない。一旦候補オブジェクトが識別されたならば、選択した等価な関数プロセスは候補オブジェクトと与えられた合成オブジェクトの間の最良のマッチを識別することを試みる。計算システムは、置換される最適な合成オブジェクトとともに、オブジェクトを決定するために使用される。データセットタイプの接近、情報率の接近及びアクション潜在期の接近の要因は、計算システムにおいて熟慮された要因の例である。これらの要因における方式は、設計目的に依存して調節されるであろう計算システムにおいて相互に重み付けされる。
【０１６５】
図Ｍ１−Ｍ３は、平坦化プロセスが与えられた合成オブジェクトの代わりに設計へより下位レベルオブジェクトを代用するプロセスを示す。図Ｍ１は仮想のより高レベルの合成オブジェクト７４０の例を示す。図Ｍ２は、より高いレベル・オブジェクト７４０に対して適切なものとして選択された等価関数プロセスによって選択された仮想の下位レベル・オブジェクト７４２の例を示す。図Ｍ３は、上位レベル・オブジェクト７４０に代わる設計へ代用され下位レベル・オブジェクト７２４を示す。移送オブジェクト７４４及び７４６は図Ｍ１のオブジェクト７４０に接続され、移送オブジェクト７４４及び７４６は図Ｍ３のオブジェクト２４２に接続されることに留意すべきである。
【０１６６】
図Ｍ１−Ｍ３の例に関して以下のように、規則代用プロセスが要約される。設計からハイ・レベルの合成オブジェクト７４０を除去する。設計の他の移送オブジェクト７４４及び７４６に接続される下位レベル・オブジェクト７４２上の移送オブジェクト７４８，７５０を識別する。識別された移送オブジェクトからソースとシンクノードの７５２，７５４を取り除く。設計において識別された移送オブジェクトを接続する。設計データベースに対してより下位のレベル・オブジェクトの残りの動作を加え、移送オブジェクト７６０，７６２のためのダングリングソース及びシンク７５６，７５８は、設計に対して接続されない。これらのダングリングソース及びシンク７６０，７６２は、削除ソースレスとシンクレスプロセスによってその後削除される。
【０１６７】
（データセット伝達プロセス）
データセット伝達プロセスは以下のように動作する。例えば、バリアントではないなど、すべてのオブジェクトのために、与えられた出力ノードのデータセットタイプが知られており、また、与えられた出力ノードは、別のオブジェクトの入力ノードに接続され、別のオブジェクトの入力ノードのデータセットタイプは、バリアント型である場合、入力ノードに接続している与えられた出力ノードのデータセットタイプをコピーする。移送オブジェクトについて、下記を付け加える。移送オブジェクトの入力ノードが異ならない場合は、移送オブジェクトのすべての出力ノードに入力ノードのデータセットタイプをコピーする。
【０１６８】
（削除ソースレス及びシンクレスオブジェクトプロセス）
削除ソースレス及びシンクレス・オブジェクト・プロセスは以下のように作動する。設計階層のトップのレベルにない未接続の各シンクオブジェクトを削除する。トップレベルのシンクは、実際には、ユーザ・インターフェースにおいて終了してもよく、削除されるべきでない。例えば、それは、メーター（グラフまたはディスプレイ）のようなユーザ・インターフェースのグラフ式の制御要素に情報を供給するために接続される。発明の本実施において、トップレベルのオブジェクトにラベルが付けられる。さらに、未接続の各ソース・オブジェクトを削除する。シンクオブジェクトについて、移送が設計における他のオブジェクト上の出力効果を有しているかどうかを判断するために、未接続の各シンクオブジェクト（ノードは、相互に二重にリンクされる）に接続された各移送を追跡する。しない場合は、移送オブジェクトを削除する。未接続ソース・オブジェクトに対して、それに接続している移送オブジェクト、及びその出力ノードのすべてを削除する。設計における移送オブジェクトの削除が、未接続（未接続ソース・オブジェクト以外）別のオブジェクトを放置する場合、同様に別のオブジェクトを削除する。
【０１６９】
（圧縮移送プロセス）
圧縮移送プロセスは以下のように作動する。１つの移送オブジェクトの出力ノードが、別の移送オブジェクトの入力ノードに接続される場合、２つの移送オブジェクトを圧縮して単一の移送オブジェクトを圧縮する。２つの移送オブジェクトを圧縮して単一の移送オブジェクトとする。移送オブジェクトが複数の出力ノードを有することができると記憶されたい。圧縮移送プロセスは設計データベースから余分の移送オブジェクトを削除する補助である。例えば、そのような余分の移送オブジェクトが平坦化プロセスに起因することができることが認識されるだろう。
【０１７０】
図１５の移送接合が複合の移送オブジェクトの存在を示さないことに留意されたい。正しくは、それは、より明白に単一の移送オブジェクト内の分岐を表現するために、発明の本実施例のＧＵＩ環境において使用されるメカニズムである。
【０１７１】
（定数生成プロセス）
定数生成プロセスは以下のように作動する。ソース・ノードは元来一定の値を伝達させる。図Ｎ１のソース・ノードが値９を得たと仮定する。例えば、値９は情報率を表す。値９は属性計算機の作用を通じて、情報率伝達プロセスの一部として得られたかもしれない。いずれにせよ、この例において、定数生成プロセスは、図Ｎ２において示されるコレクタオブジェクトの階層を構築する。基本的に、この例において、個々の論理は、明示的なデータセットタイプがある移送オブジェクトにおける終了するコレクタオブジェクトの有限階層及び４ビットのタイプに供給される値９（１００１はベース２の９である）の代表を評価する。
【０１７２】
図Ｌ１０−Ｌ１３を参照し、オブジェクト２５０の各入力Ａ及びＢノードにそれぞれの出力移送オブジェクトが接続されると仮定する。さらに、個々の移送オブジェクトが図Ｎ２の移送オブジェクト７８２に相当し、図Ｎ２と同様なコレクタオブジェクトのそれぞれの有限階層の一部であり、コレクタオブジェクトの入力ノードに適用された異なる一定値であると仮定する。（本質におけるソース・オブジェクトが図Ｄ３に示すソース・ノード２６４或いは２６６のいずれか同位置であると仮定する。）この例についてさらに説明すると、図Ｌ１０のオブジェクト２５０の入力ノードＡ及びＢに対して４ビットタイプのデータセットが伝達させられ、上記処理に応じた図Ｌ１３に示すオブジェクト２５０−２へ、図Ｌ１０のオブジェクト２５０の解決における帰着する。
【０１７３】
図Ｌ１０−Ｌ１３の処理を終了する際に、図Ｎ２に示すように、各有限階層は、図Ｌ１２の２つの抽出オブジェクト７２０の各々に接続される。図Ｎ２のコレクタオブジェクトの有限階層と、図Ｌ１２の抽出オブジェクトの上位階層の間の対称性に留意する。それらは対称なデータ構造である。
【０１７４】
（削除抽出及びコレクタオブジェクト）
削除抽出及びコレクタ・プロセスは以下のように作動する。移送オブジェクトが、コレクタオブジェクト及び抽出オブジェクトの両方に対して直接接続され、コレクタオブジェクト及び抽出オブジェクトは対称である（例えば同一のデータセットタイプ）場合、それぞれの削除されたコレクタ及び抽出オブジェクトのそれぞれの入力移送オブジェクト及び出力移送オブジェクトを接続するコレクタオブジェクト及び抽出オブジェクトを移送オブジェクトに置換する。このプロセスを繰り返す。
【０１７５】
コレクタオブジェクトの入力ノードが一定値に関連付けられる場合、そのプロセスは、すべてのコレクタ、及び移送オブジェクトに一定値にのみ関連付ける抽出オブジェクトの削除の結果とすることができる。図Ｌ１３の原子的オブジェクト２５０”の入力ノードに図Ｄ３のノード２６４及び２６６上の一定値を関連付けるためにこのプロセスを使用することができることが、認識されるだろう。削除抽出とコレクタ・プロセスとが一致し、図Ｌ１２に示される抽出は、図Ｌ１３において削除され、また、一定の値Ａ０Ａ１Ａ２Ａ３及びＢ０Ｂ１Ｂ２Ｂ３は、原子のオペレーターの入力ノードに直接適用されることに留意されたい。
【０１７６】
図Ｏ１−Ｏ３は、削除コレクタ及び抽出オブジェクト・プロセスの動作を図示する。図Ｏ１は、コレクタオブジェクトＣ１、Ｃ２及びＣ３、抽出オブジェクトＥ１、Ｅ２とＥ３を含んでいるオリジナルのオブジェクト構造を示す。図Ｏ２は、コレクタオブジェクトＣ３の削除、抽出オブジェクトＥ１及び抽出オブジェクトＥ２のためのコレクタオブジェクトＣ１の接続を示す。図Ｏ２は、さらに抽出オブジェクトＥ３へコレクタオブジェクトＣ２の接続を示す。図Ｏ３は、すべての回帰コレクタ及び抽出オブジェクトの削除、４つの回帰移送オブジェクトへの一定値の直接接続を示す。
【０１７７】
削除コレクタ及び抽出オブジェクト・プロセスは、一定値を伝達しない設計の一部を単純化するために使用することができる。例えば、図Ｆ８を参照するように、削除コレクタ及び抽出オブジェクト・プロセスによって設計のこの一部における抽出及びコレクタを削除してもよい。結果は非常に単純化されたネットリストになるだろう。
【０１７８】
（多態オブジェクト）
本発明の特徴に従って、多数の実施のいずれにおいても、動作合成のために選択オブジェクトを使用して、条件的な分岐に依存する多態オブジェクトが構築される。さらに、多態オブジェクトは、条件的な分岐の結果は、構成要素である制御オブジェクトによって実行された制御プロセスを通じて１つ以上のパラメータ処理に依存するように構築される。特に、多態オブジェクトは、包含するか或いは参照する構成要素であるオブジェクトが、１つのつ以上のパラメータに依存する多数の異なる方法における同一の動作を実行するために使用するために構築される。さらに、多態オブジェクトは、オブジェクトはそれ自身、条件的な分岐を達成するために選択オブジェクトを含んでいるか或いは参照するように構築される。そのような多態オブジェクトは、分岐の結果をコントロールする１つのつ以上の選択した値を生成するために１つのつ以上のパラメータを処理する構成要素である制御オブジェクトや選択的な合成コントロールをふくんでいるか、或いは参照するように構築される。
【０１７９】
発明の本実施例に従う多態オブジェクトは、ユーザーに対して抽象化のハイ・レベルにおける動作を指定し、かつ選択的にその動作が実行される実際の方法を合成する合成プロセスに依存する性能を提示する。基本的に、合成プロセスは１つのつ以上の選択オブジェクト及び１つのつ以上の制御オブジェクトは、選択するべき動作の実施として、決定すべき多態オブジェクトに（或いは参照された）組み込まれる。コンパイラー命令が多態オブジェクトへ（或いは参照された）中へ構築したとき、そのような選択オブジェクト及び制御オブジェクトは、本質において、作動する。より明確に、合成プロセスの間に１つのつ以上の構成要素である制御オブジェクトに供給されるパラメータは、どの実施を選択するか決めるために合成プロセスの一部として処理される。したがって、設計に多態オブジェクトを組み入れることによって、ユーザーは、選択的にオブジェクトを合成する方法を決定するために使用される合成（或いはコンパイラー）命令を本質的に自動的に組込む。
【０１８０】
（多態ＡＤＤ（加算）例）
発明の本実施例は多態ＡＤＤオブジェクトを含んでいる。多態ＡＤＤは、ＡＤＤ機能などの機能を実行する等価な動作トポロジー間に選択するために使用される。多態ＡＤＤの本実施例は、後述するように、直列加算動作トポロジーと並列加算動作トポロジーのいずれかを選択するために使用することができる。設計データベースの中で連続する加算オブジェクト或いは、選択的な合成プロセスの最中にテストされたパラメータに依存する並列の加算オブジェクトのいずれかを含めるために、多態ＡＤＤオブジェクトは、本発明に従って選択的な合成プロセスを駆り立てることができる。これらの異なる２つの加算オブジェクト（直列とパラレル）の各々は同一の機能を表す：それらは、それらに供給される値をともに加える。したがって、多態ＡＤＤは、異なるトポロジー動作を使用して、同一の機能の実行を許可する。
【０１８１】
オブジェクト指向プログラミング用語において、多態ＡＤＤオブジェクト２００はＡＤＤクラスとして見ることができる。連続する加算オブジェクト及び並列の加算オブジェクトは、ＡＤＤクラスの２つのインスタンスとして見ることができる。ＡＤＤオブジェクト２００は、ＡＤＤ動作オブジェクト階層の頂上にある。連続する加算オブジェクト及び並列の加算オブジェクトはトップレベルのオブジェクト２００の子オブジェクトである。それによってトップレベルのＡＤＤ動作オブジェクトが連続する加算オブジェクト或いは並列の加算オブジェクトがそうであるどちらかに変形されるプロセスは、選択的な合成を呼び出した。ＡＤＤクラス及びそのインスタンスは、コンピュータ・ユーザ・インターフェースを通してアクセス可能なライブラリー・オブジェクトとして存在する。ライブラリー・オブジェクトは設計ダイアグラムを生成し、かつ対応する設計データベースを構築するために移送とともに関連付けられる。本実施例おいて、「ＡＤＤ」は、動作のＡＤＤクラスを表示する。
【０１８２】
選択的に１つ或いは別の動作トポロジーを合成する性能は速度を処理する取引における有利になりえ、プロセス資源が消費される。例えば、並列加算トポロジーは、直列加算トポロジーより速く処理する。しかしながら、並列加算トポロジーは直列加算トポロジーよりはるかに多くの処理資源を消費する。多態ＡＤＤオブジェクトは、速度対資源トレードオフを最適化するために規定されたパラメータに基づいた、並列と直列加算動作トポロジーの間に選択的な合成プロセスを選ばせる構成要素である制御オブジェクトで構築することができる。
【０１８３】
図Ｄ１には、発明の好ましい実施例に従って設計ダイアグラムの中で含むことができるトップレベルの多態ＡＤＤオブジェクト２００が示される。多態ＡＤＤオブジェクト２００が設計ダイアグラムの中で含まれている場合、対応するトップレベルの多態ＡＤＤオブジェクトは設計データベースの中で含まれている。設計ダイアグラムは設計データベースにおける対応する動作オブジェクトの代表である。多態ＡＤＤオブジェクト２００は５つの入力ノード及び２つの出力ノードを含んでいる。５つの入力ノード（トップから底まで）は、情報を得て、かつ次のテーブルにおいてデータセットタイプについて記述するために関連付けることができる。
【表２】
2004533028.tif 000002
【０１８４】
２つの出力ノード（トップから底部まで）は、情報を提供し、次のテーブルにおいてデータセットタイプについて記述するために関連付けることができる。
【０１８５】
多態ＡＤＤ出力ノード
【表３】
2004533028.tif 000003
【０１８６】
設計データベースにおいて挿入された時トップレベルの多態ＡＤＤオブジェクトは、多態ＡＤＤオブジェクトがオブジェクト・ライブラリーにおける次のレベルを参照するために合成プロセスによって使用されるトークンとして供される。多態ＡＤＤオブジェクトは、構成要素オブジェクトは実際の設計データベースにおいて多態ＡＤＤオブジェクトを実行する結合を含むか、或いは参照する。合成プロセス中に、次レベル多態ＡＤＤは選択的に直列または並列加算動作トポロジーのいずれかを合成するために参照される。次の段落は、例として多態ＡＤＤを使用して、選択的な合成について記述する。
【０１８７】
選択的な合成は合成プロセス自体の間に起こる。発明の本実施例において、合成プロセスの実際の性能のための先駆者は、ＧＵＩ環境における設計ダイアグラムの構造である。設計ダイアグラムの構造は、設計ダイアグラムにおける動作オブジェクトに対応する動作オブジェクトは、対応する設計ダイアグラム・オブジェクトに設計ダイアグラムにおいて互いが相互連結されるのと同一の方法におけるともに関連付けられる設計データベースの生成が行われる。さらに、発明の本実施例の合成プロセスは設計におけるオブジェクトからオブジェクトへ情報の伝播を通して進行する。この伝播は、その役割がオブジェクト間の情報を伝達させる移送オブジェクトの使用を通じて達成される。したがって、選択的な合成において多態ＡＤＤオブジェクト２００を使用する前に、移送によって、設計データベースにおける１つ以上の他のオブジェクトへ関連付けられる。適切な情報が設計（データベースとダイアグラム）内の直列加算トポロジー或いは並列加算トポロジーのいずれかの選択のきっかけとなるために多態ＡＤＤオブジェクトへ伝達させられる場合、選択的な合成が生じる。
【０１８８】
図Ｄ２を参照すると、合成プロセスの間に多態ＡＤＤオブジェクト間の情報の伝播できる移送との多態ＡＤＤオブジェクト関連付けが示される。移送が設計における他の動作オブジェクトへ関連付けが認識されるが、これらの他のオブジェクトは多態ＡＤＤ及び選択的な合成の記述を単純化するとは示されない。ポイントは、合成プロセス中に、多態ＡＤＤオブジェクト２００が相互連結された移送がオブジェクト２００間の情報を伝達させることができるということである。多態ＡＤＤオブジェクト２００へ伝達させられた情報は、直列加算トポロジーまたは並列加算トポロジーの選択において帰着する選択的な合成のきっかけとなる。
【０１８９】
図Ｄ２において示されたように、移送２０２はノード２０４を、オブジェクト２００のキャリーインノードに結び付ける。オブジェクト２００の値Ａノードで２０６の相互接続ノード２０８を輸送する。オブジェクト２００の値Ａノードで２０６の相互接続ノード２０８を輸送する。オブジェクト２００の値Ｂノードで２１０の相互接続ノード２１２を輸送する。オブジェクト２００のロード・ノードで２１４の相互接続ノード２１６を輸送する。オブジェクト２００のロード・ノードで２１８の相互接続ノード２２０を輸送する。オブジェクト２００の合計値ノードで２２２の相互接続ノード２２４を輸送する。オブジェクト２００のキャリーアウトノードで２２６の相互接続ノード２２８を輸送する。
【０１９０】
さて、そのためのオブジェクト２００及び移送関連付けるが他のオブジェクト（図示せず）へ関連付けられ、合成プロセスが進行中である、とこの例のために仮定する。さらに、他のオブジェクト（図示せず）からノード２０４，２０８，２１２，２１６及び２２０まで情報が伝達させられたと仮定する。特に、それらへこれらのノードが次のデータセットタイプを伝達させると仮定する。ノード２０４はそれへビット・タイプ・データセットタイプを伝達させる。ノード２０８はそれへバイト・タイプ・データセットタイプを伝達させる。ノード２１２はそれへバイト・タイプ・データセットタイプを伝達させる。ノード２１６はそれへビット・タイプ・データセットタイプを伝達させる。ノード２２０はそれへビット・タイプ・データセットタイプを伝達させる。
【０１９１】
伝達プロセスにおけるこのポイントでは、変種入力ノード（Ａ及び値Ｂを評価する）とともに、それがオブジェクト（オブジェクト２００）に到達したことを合成プロセスが分かると仮定する。もしそれらの２つのノードが同一のデータセットタイプを所有しなければ、合成プロセスはあるノードから別のノードまでデータセット情報を伝達させることができない。従って、データセット伝播は、ノード２０８から値Ａノードまで、及びノード２１２から値Ｂノードまで継続することができない。データセット伝播が継続することができる前に、値Ａのデータセットタイプ及び値Ｂノードは、ノード２０８及び２１２のものを有するアラインメントへもたらされる。合成プロセスがノードをアラインメントへもたらす方式は、図Ｄ３において示される次レベル多態ＡＤＤオブジェクトを参照し、トップレベルのＡＤＤオブジェクト２００に代わる設計データベースにそのオブジェクトを挿入することである。我々はこの平滑化を階級と呼ぶ。
【０１９２】
図Ｄ３は次レベル多態ＡＤＤ動作オブジェクト２３０を示す。オブジェクト２３０は多態データセット及び多態「他のパラメータ」である。この例において、別のパラメータは情報率である。しかしながら、別のパラメータがデータベース、例えば、情報率、情報率パターン、データセットなどにおけるノードと関係があるすべてのパラメータであることは認識されるだろう。バリアント型入力ノードを有するので、それは多態データセットである。オブジェクト２３０に関連した合成制御オブジェクトによって情報率情報の処理に基づいた、連続する加算動作オブジェクトトポロジー或いは並列の加算動作オブジェクトトポロジーのいずれかへ分解可能なので、それは多態情報率である。データセット多形は別のセクションの主題で、このセクションにおける議論されないものとする。情報率多形は、このセクションの次の段落において詳細に議論されるものとする。
【０１９３】
次レベル多態ＡＤＤ動作オブジェクト２３０は連続する加算動作オブジェクト２３２及び並列の加算動作オブジェクト２３４を含んでいる。多態ＡＤＤオブジェクト２３０、連続する加算動作オブジェクト２３２及び並列の加算動作オブジェクト２３４がすべて論理的に等価であることが認識されるだろう。すなわち、各々は同一の機能を達成する。しかしながら、図Ｄ９及びＤ１０に示すように、連続する加算オブジェクト及び並列の加算オブジェクトのトポロジーは全く異なる。詳細に下に説明するように、合成プロセスは、１つのつ以上の規定されたパラメータに基づいた直列加算トポロジー２３２と並列加算トポロジー２３４とを選択するために多態ＡＤＤオブジェクト２３０を使用することができる。この例において、パラメータは情報率である。
【０１９４】
図Ｄ３を参照すると、少なくとも１つのノードの上に変種を有するので、直列及び並列の動作オブジェクトの各々は変種である。オブジェクト２３０は７つの選択オブジェクト２３６、２３８，２４０，２４２，２４４，２４６及び２４８を含んでいる。少なくとも１つのノードの上にバリアント型変数タイプを有するので、選択オブジェクトの各々は異なる選択オブジェクトである。オブジェクト２３０はコンパレーター・オブジェクト２５０及び２５２を含んでいる。オブジェクト２３０はソース・ノード２５４，２５６，２５８，２６０，２６２，２６４，２６６及び２６８を含んでいる。オブジェクト２３０はシンクノード２７０及び２７２を含んでいる。オブジェクト２３０は、さらに示されるような他の構成要素オブジェクトを関連付ける多数の移送オブジェクトを含んでいる。例えば、移送２７４は、ソース・ノード２５４を、連続する加算動作オブジェクトのキャリーイン入力ノード及び並列の加算オブジェクト２３４のキャリーイン入力ノードに結び付ける。同様に、例えば、合成移送オブジェクト２７６は、コンパレーター２５２のＡ＞ Ｂ出力ノードを、各々の（バリアント型）選択オブジェクト２３６，２３８，２４０，２４２，２４４及び２４６の選択した入力ノードに結び付ける。合成移送オブジェクト２７８は、例えば、ソース・ノード２５６を、選択オブジェクト２３６のＡ値入力ノード及び選択オブジェクト２４０のＢ値入力ノードに結び付ける。移送オブジェクト２７５は、値へ選択オブジェクト２３６の出力ノードを関連付ける。連続する加算オブジェクト２３２の入力ノード。移送オブジェクト２７７は、連続する加算オブジェクト２３２の値Ｂ入力ノードへ選択オブジェクト２３８の出力ノードを関連付ける。移送オブジェクト２７９は、ソース・ノード２５８を、選択オブジェクト２３８の値Ａ入力ノード及び選択オブジェクト２４２の値Ｂ入力ノードに結び付ける。移送オブジェクト２８１は、並列の加算オブジェクト２３４の値Ａ入力ノードへ選択オブジェクト２４０の出力ノードを関連付ける。移送オブジェクト２８３は、並列の加算オブジェクト２３４の値Ｂ入力ノードへ選択オブジェクト２４２の出力ノードを関連付ける。別の構成要素である移送オブジェクトによってなされた接続は、図面から収集することができる。
【０１９５】
合成プロセスは、トップレベルの多態ＡＤＤ動作オブジェクト２００に代わる設計に多態ＡＤＤの動作のオブジェクト２３０を挿入する。図Ｄ２及びＤ３から、ソース・ノード２５４が移送オブジェクト２０２へ関連付けられることは認識されるだろう。ソース・ノード２５６は移送オブジェクト２０６へ関連付けられる。ソース・ノード２５８は移送オブジェクト２１０へ関連付けられる。ソース・ノード２６０は移送オブジェクト２１４へ関連付けられる。ソース・ノード２６２は移送オブジェクト２１８へ関連付けられる。シンク・ノード２７０は移送オブジェクト２２２へ関連付けられる。シンク・ノード２７２は移送オブジェクト２２８へ関連付けられる。
【０１９６】
次レベル多態ＡＤＤ動作オブジェクトはそれが他のオブジェクトを含むという点で合成オブジェクトである。これらの構成要素オブジェクトは、並列の加算オブジェクト２３４の選択により連続する加算オブジェクト２３２の選択による直列加算トポロジー或いは並列加算トポロジーのいずれかを選択的に合成するように協動する。（バリアント型）選択オブジェクト２３６，２３８，２４０、２４２，２４４及び２４６は、選択的な合成を通じて、候補のデータ・パスを提供することができるように、それらは移送へ関連付けられる。選択的な合成を通じて実現された１つの代案は、連続する加算オブジェクト２３２をソース・ノード２５４、２５６，２５８，２６０及び２６２に、及びシンクノード２７０及び２７２に結び付ける移送オブジェクトにおいて帰着する。選択的な合成を通じて実現された別の代案は、並列の加算オブジェクト２３４をソース・ノード２５４，２５６，２５８２６０及び２６２に、及びシンクノード２７０及び２７２に結び付ける移送オブジェクトにおいて帰着する。木曜、選択オブジェクト２３６，２３８，２４０，２４２，２４４及び２４６は選択的な合成プロセスの間に分岐機能を実行するために使用される。
【０１９７】
破線２８０は、並列で連続する加算オブジェクト２３２と２３４の間の選択をコントロールするために選択的な合成の間に使用される次レベル多態ＡＤＤ動作オブジェクトの一部を示す。この例において、一定のタイプ・パラメータはソース・ノード２６４及び２６６上で提供される。コンパレーター２５０、選択オブジェクト２４８、ソース・ノード２６８及びコンパレーター２５２（バリアント型）は、パラメータを処理する。ビット・タイプ出力は、コンパレーター２５２のＡ＞ Ｂノード上で提供される。ビット・タイプ出力は、選択オブジェクト２３６，２３８，２４０，２４２，２４４の（バリアント型）選択した入力のための合成移送オブジェクト２７６及び２４６によって伝達させられる。
【０１９８】
選択的な合成の間の多態ＡＤＤ動作オブジェクト２３０の発展は今記述されるだろう。後にあるポイントにより、次レベル多態ＡＤＤオブジェクト２３０は合成プロセスによって設計に挿入された、データセット伝播が生じるだろう。図Ｄ２を参照して、ノード２０４，２１６及び２２０上のデータセットタイプがビット・タイプであると仮定する。ノード２０８及び２１２上のデータセットタイプがバイト・タイプであると仮定する。その場合において、データセット伝達プロセスデータセット伝播のある中間結合は、ソース・ノード２５４，２６０及び２６２上の、及びビット・タイプである直列及び並列の加算オブジェクト２３２及び２３４のクロックとロードの入力ノード上のデータセットタイプにおいて帰着するだろう。その結合では、データセット伝播は、バイト・タイプになるソース・ノード２５６及び２５８上のデータセットタイプにおいて帰着するだろう。その結合では、データセット伝播は、一定のタイプであるソース・ノード２６４及び２６６上のタイプにおいて帰着するだろう。その結合では、データセット伝播は、バイト・タイプになる（バリアント型）選択オブジェクトの各々の値Ａ及び値Ｂノードの上のデータセットタイプにおいて帰着するだろう。（バリアント型）選択オブジェクトの各々の選択した入力ノードの各々上のデータセットタイプは、ビット・タイプである。ソース・ノード２６８上のデータセットタイプはあり、一定のタイプのままである。その結合における、データセット伝播は、直列加算の値Ａ及び値Ｂ入力ノードの上のデータセットタイプにおいて帰着し、並列加算オブジェクト２３２と２３４は当分の間バリアント型のままである。その結合では、データセット伝播は、直列のＤｏｕｔ（合計値）及びＳ（合計値）出力ノードの上のデータセットにおいて帰着し、並列加算オブジェクト２３２及び２３４は、バリアント型のままである。その結合では、データセット伝播はデータセットにおいて帰着し、キャリアウト直列と並列加算のノードオブジェクト２３２及び２３４は、ビット・タイプである。コンパレーター２５２の出力ノード上のデータセットタイプは、ビット・タイプのままである。その結合における、データセット伝播は、シンクノード２７０及び２７２上のデータセットタイプに帰着し、バリアント型のままである。
【０１９９】
上に記述された伝達データ・プロセスの結合では、その結合に関して、合成プロセスは、データ伝播パスにおける、（バリアント型）選択オブジェクト２３６，２３８，２４０及び２４２を識別するだろう。選択オブジェクトは、オブジェクト・ライブラリーにおいてより下位レベル・オブジェクトを呼び出しにより上位レベル・オブジェクトに代わる設計により下位レベル・オブジェクトを挿入することによるデータ伝播パスにおける他のオブジェクトのような「平坦化しない」ではない。正しくは、選択オブジェクトは、選択オブジェクトの選択した入力ノードへ供給される、選択した値において帰着する制御プロセスを通じて分解される。この例において、制御プロセスは破線２８０内のオブジェクトを使用して、合成プロセスによって実行される。基本的に破線２８０内のオブジェクトは、接続するための加算オブジェクト２３２或いは２３４を、未接続とするための加算オブジェクト２３２或いは２３４の選択を制御する機能を制御オブジェクトとして有している。根本的には、集合的な制御オブジェクト２８０は、上に記述された候補の可能な移送オブジェクト接続を分解する方法を合成プロセス（或いはコンパイラー）に指示する。
【０２００】
この例において、選択した値は移送オブジェクト２７６によって選択オブジェクトの各々へ伝達させられる。選択した値は、候補の接続のどれが選択オブジェクトに関連したプロセス（或いはアルゴリズム）を使用して生成されるか決める。選択した値が導き出されるに違いない。この例において、選択した値は、ソース・ノード２５６及び２５８の情報率がパラメータである制御プロセスを通じて導き出される。すなわち述べた、この例における制御プロセスは、最初にソース・ノード２５６及び２５８上で情報率のより大きなものを識別する。その後、制御プロセスはより大きな情報率を、ソース・ノード２６８上の前もって定義した情報率と比較する。その比較は、移送オブジェクト２７６へ伝達させられ、（バリアント型）選択オブジェクトの各々の選択した入力ノードへ伝達させられる一定の値において帰着する。一旦、この値が提供されると、上述された一般タイプのアルゴリズムを、合成プロセスは、１つ或いは直列、並列の加算オブジェクト２３２或いは２３４のいずれかを選択するために上述された候補の接続の他方を達成するために使用することができる。
【０２０１】
この例において、合成プロセスは、計算するか或いは、ソース・ノード２６４及び２６６上の情報率に基づいた移送オブジェクト２７６上で伝達させられるために他の方法で選択した入力値を決定するために定数伝達プロセスを使用する。定数伝達プロセス中に、オブジェクトへ伝達させられた一定の値は生じる値を計算するために、オブジェクトの動作に従って処理される。その後、生じる値は、その動作などに従って処理される別のオブジェクトへ伝達させることができる。
【０２０２】
より明確に、この例において、選択的な合成は、ソース・ノード２５６及び２５８上のデータの情報率に依存する。ソース・ノード２６４はその入力として一定の値（すなわちソース・ノード２５６上の情報率値）を見なす。ソース・ノード２６６はその入力として一定の値（すなわちソース・ノード２５８上の情報率）を見なす。定数伝達プロセスへ応じたので、これらの２つの値は、コンパレーター２５０の入力ノードのための移送オブジェクト２８４及び２８６によって伝達させられる。コンパレーター・オブジェクト２５０の動作に従って、ソース・ノード２５６，２６４上の情報率がソース・ノード２５８、２６６上の情報率未満である場合、移送オブジェクト２８２へ伝達させられた値は論理的な１つのである。他の方法で、移送オブジェクト２８２へ伝達させられた値は論理的な０つである。定数伝達プロセスへ応じたので、ソース・ノード２６４及び２６６上の情報率値は、さらに、データＡ入力ノードのための、及び（バリアント型）選択オブジェクト２４８のデータＢ入力ノードのための移送オブジェクト２８８及び２９０によって伝達させられる。移送オブジェクト２８２へ伝達させられた一定の値は、選択オブジェクト２４８の選択した入力ノードへ伝達させられる。選択した入力ノードへ伝達させられた値が論理的な１つのである場合、それでは、選択オブジェクト２４８に関連した選択オブジェクトアルゴリズムに従って、移送オブジェクト（示されない）は移送オブジェクト２９２によって、コンパレーター２５２のデータＡ入力ノードへソース・ノード２６６を関連付けるために設計に挿入される。他方では、選択した入力ノードへ伝達させられた値がそのとき論理的な０つである場合、移送オブジェクト（図示しない）は移送オブジェクト２９２によって、コンパレーター２５２のデータＡ入力ノードへソース・ノード２６４を関連付けるために設計に挿入される。このように、情報率のより大きなものは、ソース・ノード２５６及びソース・ノード２５８上で、コンパレーター２５２の値Ａ入力ノードへ伝達させられる。一定の値はソース・ノード２６８上で提供される。この例において、ソース・ノード２６８上の一定の値はさらに情報率を表す。定数伝達プロセスへ応じたので、ノード２６８上の一定の値は移送オブジェクト２９４によってデータＢ入力ノードへ伝達させられる。定数伝達プロセスへ応じたので、コンパレーター２５２は、データＡ入力ノード上の率値を、そのデータＢ入力ノード上の情報率値と比較する。データＡノード上の情報率がそのときデータＢ入力ノード上の情報率より大きな場合、Ａ ＞Ｂノード上の出力は論理的な１つのである。他の方法で、Ａ ＞ Ｂの上の出力は論理的な０つである。
【０２０３】
図Ｄ４を参照すると、多態ＡＤＤオブジェクト２３０を通して選択的な合成プロセス進行として設計の一層の発展を示される。合成プロセスがパラレルにおいて、互いと無関係に概略的に作動する多数の再帰的なアルゴリズムを現実に含んでいることが認識されるだろう。データセット伝播アルゴリズム、平坦化アルゴリズム及び伝達定数アルゴリズムに加えて、関連付けられないソース或いはシンクノードを行っている設計（整備）オブジェクトから移動するソースレス及びシンクレス削除アルゴリズムがある。
【０２０４】
コンパレーター２５０が一定の伝達プロセス中にその比較を終了した後、及び選択オブジェクト２４８の解決が移送オブジェクト２９３の付加物をもたらした後、図Ｄ４は、合成プロセスの最中にオブジェクト２３０の中間の状態を示す。加算の移送オブジェクト２９３は、ソース・ノード２６４を、コンパレーター２５２のデータＡノードに結び付ける。さらに、選択オブジェクト２４８の解決は移送オブジェクト２９０を未接続にしておき、したがって、ソース・ノード２６６をさらに未接続にしておく。図Ｄ４において、ソースレスと、シンクレス（トリミング）アルゴリズムは、選択オブジェクト２４８の解決がソース・ノード２６６を未接続であるため、オブジェクト２３０、ソース・ノード２６６、コンパレーター２５０、バリアント型選択２４８、移送オブジェクト２８６，２９０及び２８２から削除される。
【０２０５】
コンパレーター２５２が、一定の伝達プロセス中に、及びシンクレスの後にその比較を終了し、ソースレス（トリミング）アルゴリズムが処理した後、図Ｄ５は、合成プロセスの最中にオブジェクト２３０の別の中間の状態を示す。この例において、ソース・ノード２６４上の情報率がソース・ノード２６６（２５０までに比較）上の情報率より大きいと仮定する。さらに、ソース・ノード２６４上の情報率が、ソース・ノード２６８（コンパレーター２５２による比較）上で一定の値によって表される情報率より大きいと仮定する。一定の伝達プロセスへ応じて、これらの仮定で、コンパレーター２５２は、そのＡ＞ Ｂノード上の論理的な１つの値を生成する。図Ｄ５において、ソース・ノード２６４及び２６８が未接続なので、ソースレス及びシンクレス（トリミング）アルゴリズムは、オブジェクト２３０ソース・ノード２６４及び２６８、移送オブジェクト２８８，２９３，２９４及び２９２、ならびにコンパレーター２５２から削除される。コンパレーター２５２によって生成された値が論理的な１であるため、論理的な１の値はソースレス及びシンクレス（トリミング）アルゴリズムによってコンパレーター２５２の削除の後に移送２７６のソース・ノード上で提供される。
【０２０６】
一定の伝達プロセスがさらにいくらか処理した後、及びシンクレス及びソースレス（トリミング）アルゴリズムが処理した後、図Ｄ６は、合成プロセスの最中にオブジェクト２３０の別の中間の状態を示す。定数伝達アルゴリズムは、（バリアント型）選択オブジェクト２３６，２３８，２４０，２４２，２４４及び２４６が各々選択した入力ノードへ、移送オブジェクト２７６（図Ｄ６において削除された）によって論理的な値１を伝達させる。選択オブジェクトの選択した入力ノードの論理的な１つの値の伝播で、選択オブジェクトは、合成プロセスが選択オブジェクトの解決を続けるために今各入力で必要な情報を有している。特に、選択オブジェクトの各々はその選択した入力ノードに対して値を伝達させる。
【０２０７】
したがって、図Ｄ６において、合成プロセスは、制御プロセス（この例における図Ｄ３の破線２８０におけるオブジェクトとともに実行）によって生成された（選択する）値（この例における論理的な１）に対して動作する分岐アルゴリズムを実行する。この例において使用された分岐アルゴリズムに従って、選択オブジェクトの選択した入力ノードに対して伝達させられた論理的な１の選択値は、値Ｂ入力ノードと出力ノードの間の移送オブジェクトの生成をもたらす。選択オブジェクトの値Ａ入力ノードは未接続とする。図Ｄ６を参照して、移送オブジェクト２７８及び２８１を関連付けるために、分岐アルゴリズムは、設計のための新規の移送オブジェクト２９６の加算において帰着した。さらに、移送オブジェクト２７９及び２８３を関連付けるために、分岐アルゴリズムは、設計のための新規の移送オブジェクト２９８の加算において帰着した。分岐アルゴリズムは移送オブジェクト２７５に対して未接続な移送オブジェクト２７８を残す。さらに、分岐アルゴリズムは、移送オブジェクト２７７に対して未接続な移送オブジェクト２７９を残す。
【０２０８】
発明の本実施例において、合成プロセスは、合成プロセス自体の分岐を実行するために、選択オブジェクトが使用されることを認識する。本実施例において、それに関連したどんな次のレベル動作オブジェクトも識別するために、合成プロセスは「平坦化」に対して選択オブジェクトを試みない。選択オブジェクトの役割は、動作トポロジーを参照するのではなく合成プロセスに分岐機能を供給することである。一旦、選択オブジェクトはその分岐機能を実行すると、選択オブジェクトは、もはや設計の一部として要求されず削除することができる。
【０２０９】
図Ｄ６を再び参照して、分岐アルゴリズムは、選択オブジェクト２３６，２３８，２４０，２４２，２４４及び２４６の各々のために実行された。選択オブジェクト２３６のための分岐アルゴリズム結果は、値Ａ入力ノードに関連付けられる移送オブジェクト２７８が、選択オブジェクト２３６の出力ノードに関連付けられる移送オブジェクト２７５に対して未接続とされる。選択オブジェクト２３８のための分岐アルゴリズム結果は、値Ａ入力ノードに関連付けられる移送オブジェクト２７９が、選択オブジェクト２３８の出力ノードに関連付けられる移送オブジェクト２７７に対して未接続とされる。選択オブジェクト２４０（図Ｄ３において示される）のための分岐アルゴリズム結果は、移送オブジェクト２７８及び移送オブジェクト２８１を関連付ける設計に対して新規の移送オブジェクト２９６が加えられるということである。選択オブジェクト２４２（図Ｄ３において示される）のための分岐アルゴリズム結果は、移送オブジェクト２７９及び移送オブジェクト２８３を関連付ける設計に対して新規の移送オブジェクト２９８が加えられるということである。選択オブジェクト２４４（図Ｄ３において示される）のための分岐アルゴリズム結果は、移送オブジェクト２９１及び移送オブジェクト２９３を関連付ける設計に対して新規の移送オブジェクト３００が加えられるということである。選択オブジェクト２４４のための一層の分岐アルゴリズム結果は、値Ａ入力ノードに関連付けられる移送オブジェクト２８５が、選択オブジェクト２４４の出力ノードに関連付けられる移送オブジェクト２９３に対して未接続とする。選択オブジェクト２４６（図Ｄ３において示される）のための分岐アルゴリズム結果は、移送オブジェクト２８９及び移送オブジェクト２９５を関連付ける設計に対して新規の移送オブジェクト３０２が加えられるということである。選択オブジェクト２４６のための一層の分岐アルゴリズム結果は、値Ａ入力ノードに関連付けられる移送オブジェクト２８７が、選択オブジェクト２４６の出力ノードに関連付けられる移送オブジェクト２９５に対して未接続とする。
【０２１０】
図Ｄ６において、それらが設計から削除されたことから、選択オブジェクト２４０，２４２，２４４及び２４６は示されない。合成プロセスは、設計（ダイアグラムとデータベース）において、分岐アルゴリズムに起因する移送オブジェクト（この場合移送を合成する）を置換させた。選択オブジェクト２３６及び２３８は図Ｄ６において示される。選択オブジェクト２３６及び２３８における出力ノードに入力ノードを関連付ける移送オブジェクトの欠如に留意されたい。合成プロセスは、未接続なソース及び未接続なシンクとして移送接続の欠如を解釈する。シンクレス及びソースレス（トリミング）プロセスは、下に記述されるようなダングルオブジェクトを削除をもたらす。図Ｄ６において、選択した値（この例における論理的な１）が、選択オブジェクトの選択した入力ノードに対して既に伝達させられたので、ソースレス及びシンクレス（トリミング）アルゴリズムは、既に移送オブジェクト２７６の削除を行う。
【０２１１】
シンクレス及びソースレス（トリミング）アルゴリズムがさらにいくらか処理した後、図Ｄ７は、合成プロセスの最中にオブジェクト２３０の別の中間の状態を示す。すなわち、シンクレス及びソースレス・アルゴリズムのシンクレスの一部は、設計を通して後方に作動する。設計における情報の流れの方向の反対に方角へ設計を処理する。基本的に、それは、関連付けられないシンク・ノードを捜し出し、シンクノードに対する関連付けを有していないオブジェクトを削除する。言いかえれば、オブジェクトが、設計においてシンク・ノードが関連付けられた他の下流オブジェクト（設計による正常な伝播方向における）有していない場合、オブジェクトは削除される。このシンクレス削除プロセスの後ろの理論は、オブジェクトがそのとき下流の処理に寄与するシンク・ノードを有していない場合、ｏｂｊｅｔが余分で削除することができるということである。シンクレス削除プロセスに応じて、直列加算オブジェクト２３２は、ダングルシンク（移送オブジェクト２８５及び２８７）を有するので、削除された。さらに、シンクレス削除プロセスに応じて、削除された直列加算オブジェクトに関連付けられた移送オブジェクト２８５，２８７，２７５，２７７，２９９及び３０１は、２３２も削除される。移送オブジェクト２９９及び３０１の削除により、ソース・ノード２６０及び２６２が残されると留意されたい。
【０２１２】
図Ｄ８は合成プロセスの最中にオブジェクト２３０の発展における別の中間の状態を示す。シンクレス及びソースレス（トリミング）アルゴリズムはさらに処理する。圧縮機移送アルゴリズムは、図Ｄ７の移送オブジェクトにおける不必要な接合を削除する。
【０２１３】
特に、シンクレス・アルゴリズムの一部が任意の下流オブジェクトに接続しないため、ソース２６０及び２６２を削除した。さらに、それらがダングルシンクに託されているため、選択オブジェクト２３６及び２３８のための関連付けられた、合成移送２７８及び２７９の移送オブジェクト分岐は削除された（図Ｄ７を参照）。シンクレス・アルゴリズムの一部は、設計における情報（データセット等）伝播の方向に対して上流或いは反対の方向へ進行したかについて留意する。第１に、直列加算オブジェクト２３２が任意の下流オブジェクトに関連付けられなかったので、直列加算オブジェクト２３２及びそのためのすべての（移送）オブジェクトの関連付けは削除される（図Ｄ６及びＤ７を参照）。次に、シンクレス・アルゴリズム一部は、直列加算オブジェクト及びその移送の削除によりシンクレスを残された２つのソース・ノード２６０及び２６２に対して設計において上流に移った。それらが、シンクレス・アルゴリズム自体の進行によりシンクレスになったので、これらのソース・ノード２６０及び２６２は設計から削除される。さらにシンクレス・アルゴリズム一部の再帰的な性質に注意する。それはシンクレス・オブジェクト（例えば、直列加算オブジェクト２３２）を探索し、それらを削除する。その後、他のシンクレス・オブジェクトの初期の削除によりシンクレスになったオブジェクト（例えば、ソース・ノード２６０及び２６２）を要求する。
【０２１４】
さらに、図Ｄ８において、以前に存在した様々な合成移送オブジェクトを置換するために、移送オブジェクト３０４，３０６，３０８，３１０及び３１２は設計で生成された。例えば、移送オブジェクト３０６は、移送オブジェクト２７８，２９６及び２８１を含む合成移送オブジェクトを置換する（図Ｄ７を参照）。設計から圧縮移送プロセスによる１つの（或いはより多くの）より単純なオブジェクトの中への合成移送オブジェクトの統合が、不必要で、冗長な移送オブジェクトを削除することが認識されるだろう。
【０２１５】
ソース・ノード２５６及び２５８がバイト・タイプ・データセットを有している。ソース・ノード２５４はビット・タイプ・データセットを有している。発明の好ましい実施例では、並列加算動作オブジェクト２３４はバリアント型値Ａ及び値Ｂ入力ノード、及びビット・タイプ・キャリーイン・ノードを有している。図Ｄ８で図示された合成プロセスのステージでは、合成プロセスは、ソース・ノード２５６及び２５８から直列加算オブジェクト２３４の値Ａ及び値Ｂノードまでバイト・タイプ・データセットを伝達させるデータセット伝達プロセスを呼び出す。それに対してバリアント型ノードが他のタイプのデータセットを伝達させることができることが認識されるだろう。ソース・ノード２５６及び２５８からのバイト・タイプ・データセットの伝播の後に、直列加算オブジェクト２３４の値Ａ及び値Ｂノードは、さらにそれらの上にバイト・タイプ・データセットを有している。
【０２１６】
図Ｄ８の並列の加算オブジェクト２３４はトップレベルの並列加算オブジェクトである。そのため、トークンが、図Ｄ９で示される次レベル並列加算オブジェクト３１０を参照したとき、合成プロセスはそれを評価する。特に、並列加算オブジェクト２３４の入力ノードのためのデータセットの伝播の完成に際して、合成プロセスは平坦化プロセスを呼び出す。（真実？）図Ｄ９で図示された次レベル並列加算オブジェクト３１０は、トップレベル並列加算オブジェクト２３４に代わる設計に挿入される。次レベル並列加算オブジェクト３１０は次のものを含んでいる自己参照のオブジェクトであるり、ソース・ノード３１８，３２０、また３２２、シンクノード３２４及び３２６、バリアント型抽出３１２及び３１４、異形データセットコレクタ３１６、並列加算オブジェクト３２８及び３３０（自己言及）、ならびに様々な移送オブジェクトである。合成プロセスは、並列の加算オブジェクト３１０を分解するためにこの開示において別記された再帰的な平坦化プロセスを使用する。
【０２１７】
さらに、図Ｄ１０は、次のレベル直列加算オブジェクト３３０の実例を提供する。図Ｄ３の直列加算オブジェクト２３２はトップレベルの直列加算オブジェクトである。そのため、トークンがかつては図Ｄ１０で示される次のレベル直列加算オブジェクト３３０を参照したとき、合成プロセスはそれを評価する。定数伝達プロセスが、コンパレーター２５２による論理的な０の値の生産において帰着した場合、合成プロセスはトップレベルの直列加算まで多態ＡＤＤオブジェクト２３０を分解する。オブジェクト２３２は移送オブジェクト、ソース、シンクに関連する。トップレベルの直列加算オブジェクト２３２は、図Ｄ１０の次レベルオブジェクト３３０を参照する。我々は、次のレベル直列加算オブジェクト３１０に関する詳述はしない。しかしながら、我々は注意する、それはバリアント型シフト・インオブジェクト３３２及び３３４、トップレベル並列加算オブジェクト３３６、バリアント型マルチプレクサー３３８、指定オブジェクト３４０（メモリ）、バリアント型シフトアウトオブジェクト３４２及びバリアント型オブジェクト３４４を含んでいる。上に説明されるように、合成は、直列加算オブジェクト３３０を分解するためにこの開示において別記された再帰的な平坦化プロセスを使用する。
【０２１８】
一般において動作オブジェクトの１つの利点は、それが、トレードオフが異なるパラメータ間で作られる最適化された合成を促進するということである。例えば、方式設計では、ハードウェア資源と速度の間のトレードオフは多くの場合所要の動作を実現するためにどのトポロジーを使用するか決定する要因である。多態動作オブジェクトは、ハードウェア資源のような異なるパラメータと速度の間のトレードオフに基づいた合成プロセスを最適化するために使用することができる。例えば、単に１つの例として多態ＡＤＤオブジェクト動作を再び使用して、加算動作が実行することができる１つの実例となるハードウェア基板或いはプラットフォームは、サンホセ（カリフォルニア）のザイリンクスによって作られて、頂点フィールドプログラム可能なゲート・アレイ（ＦＰＧＡ）である。比較経由で、１２８ビット長加算は直列加算或いは並列加算として実行することができる。１２８ビット長直列加算トポロジーがＦＰＧＡのおよそ５つの組合せ論理ブロック（ＣＬＢ）を要求するだろうと考えられている。また、それは、加算（例えば、１２８クロック・サイクル）を実行するために、１ビット当たり１クロックサイクルが必要となる。対照的に、１２８ビット長の並列加算トポロジーがおよそ１２８のＣＬＢを必要とし、すべての１２８ビットのみ１クロック・サイクルを必要とすると考えられている。直列加算トポロジーはより少数のハードウェア資源を要求するがより遅い。並列加算トポロジーはより多くのハードウェア資源を要求するがより速い。したがって、明白なハードウェア資源対速度トレードオフがある。発明の本実施例に係る合成プロセスは、多態オブジェクト動作（加算動作は単に１つの例である。）を使用することができ、また例えば、情報率、データセットタイプ或いは情報率パターンのようなパラメータに基づいたオブジェクト動作トポロジーを選択的に合成する。
【０２１９】
コード再使用は多態動作オブジェクトの別の利点である。例えば、与えられた多態動作オブジェクトは異なる設計で同一の論理的な機能（例えば、加える、増加する、変わる、分割する、キャストなど）を達成するために使用することができる。本発明に係る合成プロセスは、所要の機能を達成するために各設計における論理上等価なオブジェクトを選択的に合成することができる。しかしながら、論理上等価なオブジェクトのトポロジーは１つの設計から次のものまで意見を異にするかもしれない相違する。与えられた多態オブジェクトは、その設計のために指定されたパラメータと一致する等価な機能を達成するために所定の設計で選択的にどのトポロジーを合成するかを決めるために合成プロセスによって使用される制御を含んでいる（或いは参照している）。
【０２２０】
（多態データセットバリアント型オブジェクトの解決に用いられる伝達及び平坦化プロセス）
このセクションはデータセットに多態バリアント型動作オブジェクトを提供する。多態データセットによって意味される合成プロセス間のオブジェクトの解決は、データセットに依存する解決は異なるデータセットとは異なる。異なる反転動作オブジェクトはこの例の焦点であるが、このセクションで説明された原理は他のデータセットに同様に多態バリアント型動作オブジェクトを適用する。この例は、別のオブジェクトを参照する動作のパターンを達成する動作オブジェクトを示すだろう。反転動作オブジェクトの異なる形式は、別のオブジェクトを参照する動作のパターンを特に達成する。より明確に、反転動作オブジェクトの異なる形式は、自己参照の動作のパターンを達成する。すなわち、異形反転オブジェクトのために定義された動作は異形反転オブジェクトを自体参照する。
【０２２１】
このセクションは、さらに伝達データ・プロセス及び平坦化アルゴリズムが相互に依存することを例証するだろう。異形反転オブジェクトが平坦化プロセスにより順次実証されるとき、データセット伝達プロセスは、あらかじめ実証された異形反転オブジェクトからより最近実証された異形反転オブジェクトまでデータセットを伝達させることにより応答する。逆に、別のものの後の一つに実証された異形反転オブジェクトがデータ伝達プロセスによりそれに対してデータセットを伝達させるように、平坦化アルゴリズムは、データセットが、あらかじめ実証された異形反転オブジェクトで参照された反転オブジェクトのすべての入力ノードに対する伝達ごとに、別の反転オブジェクトを実証することにより応答する。
【０２２２】
このセクションは、さらにデータセット伝達、及び与えられたデータセットのための論理的な問題を解決するために必要とされるハードウェアを「解決する」平坦化機能の使用を実証する。インバーター機能は基本の論理関係である。それは論理的な１を論理的な０に変換する。逆に、それは論理的な０を論理的な１に変換する。このセクションは、再帰的な平坦化及びデータ伝達プロセスが与えられたデータセットのためのインバーター機能を実行する合成構造を構築するように協動する方式を実証する。データ伝達及び平坦化プロセスの終わりに、生じる構造は、与えられたデータセットのためのインバーター機能を実行するために使用することができる基礎的なオブジェクトを含む。
【０２２３】
図Ｆ１は、反転等価機能に関係するオブジェクト・ライブラリーの一部の実例となる図面である。オブジェクト・ライブラリーのこの一部はトップレベルの反転オブジェクト５００、異形反転オブジェクト５０２及び原子の反転オブジェクト５０４を含んでいる。トップレベルの反転オブジェクト５００は異形反転オブジェクト５０２及び原子の反転オブジェクト５０４の両方を参照する。
【０２２４】
図Ｆ２は、トップレベルのインバーター機能５００の描写を示す。それはデータセット入力ノード５０６及びデータセット出力ノード５０８を含んでいる。トップレベルの反転オブジェクト５００はバリアント型である。それはインバーター機能を達成するために設計に挿入することができる。
【０２２５】
図Ｆ３は、異形反転オブジェクト５０２を表す例証ダイアグラムを示す。それはデータセット公表オブジェクト５１０及びデータセット・コレクタオブジェクト５１２を含んでいる。さらに、それは２つの異形反転オブジェクト５００を含んでいる。抽出５１０の入力ノードはバリアント型である。抽象的な移送オブジェクト５１４は、１つのバリアントインバータオブジェクト５００の入力ノードに公表オブジェクト５１０の１つの出力ノードを関連付ける。抽象的な移送オブジェクト５１６は、別のバリアント型インバーター・オブジェクト５００の入力ノードに抽出オブジェクト５１０の別の出力ノードを関連付ける。抽象的な移送オブジェクト５２０は、コレクタオブジェクト５１２の別の入力ノードに１つの反転オブジェクト５００の別の出力ノードを関連付ける。バリアント型オブジェクト５０２のノードはすべてバリアント型である。
【０２２６】
図Ｆ４は、原子の反転オブジェクトの例証ダイアグラムを示す。それは原子の反転オブジェクトを含んでいる。移送５２４は、原子の反転オブジェクトの入力にソース・オブジェクト５２６のアノードを相互連結させる。移送５２８は、原子の反転オブジェクト５２２の出力にシンクオブジェクト５３０のノードを相互連結させる。原子のオブジェクト５２２のノードはすべてビット・タイプである。
【０２２７】
その入力ノードのためのニブル（４ビット）データセットの伝播に応じて設計における反転オブジェクトの発展のＦ５−Ｆ８ショー例証ダイアグラムを図に表す。図５は、トップレベルか、親レベル反転オブジェクト５００が挿入された設計の一部を示す。反転オブジェクト５００は入力ノード５０６及び出力ノード５０８を含んでいる。この例において、単純性のために、全面的な設計における他のほんの少数のオブジェクトが示される。特に、移送オブジェクト５３２は入力ノード５０６にソース５３４を関連付ける。また、移送オブジェクト５３６はシンクオブジェクト５３８に出力ノード５０８を関連付ける。移送オブジェクト５３２は、トップレベルの反転オブジェクト５００からの設計において上流に配置される。移送オブジェクト５３６は、トップレベルの反転オブジェクト５００からの設計において下流に配置される。完全に対して、移送オブジェクト５３２のノード５４０及び５４２は示され、移送オブジェクト５３６のノード５４４及び５４６が示される。さらに、ソースのノード５４８は、５３４が示されることに反対する。また、シンクオブジェクト５３８のノード５５０が示される。
【０２２８】
この例において仮定する、それは合成の最中に伝達データセットプロセスを処理し、図Ｆ５の反転オブジェクト５００の入力ノード５０６に対してニブル・タイプ・データセット（ｉ。ｅ、４ビット）を伝達させる。合成プロセスのこの結合では、合成プロセスは、反転オブジェクト５００のノードがすべてそれらのために（伝達された）データセットを定義することを決めるだろう。さらに、それは、反転オブジェクト５００がバリアント型オブジェクトであることを決めるだろう。平坦化アルゴリズムは、が、オブジェクト５００に代わる設計に挿入される候補である等価な機能と（ｏｔｈｅｒｓ）分かるために反転オブジェクト５００を使用する。
【０２２９】
より特に、発明の本実施例では、名称は反転オブジェクト５００に関連している。特に、名称「インバート」とされる、平坦化アルゴリズムがこの名称を使用するところ、オブジェクト・ライブラリーの一部が図Ｆ１で示されていたのが分かる。反転オブジェクト５００は異形反転オブジェクト５０２及び原子の反転オブジェクト５０４を参照する。本実施例では、機能の同等を表示するためにオブジェクト命名が使用されると留意する。これらのオブジェクトの各々は他方の等価な機能である。したがって、各々はインバート名を共有する。
【０２３０】
平坦化アルゴリズムは、明示的なマッチが図Ｆ５の中に図Ｆ１のライブラリー一部及び反転オブジェクト５００のデータセット伝播ステータスの中に反転オブジェクト間にあるかどうか決める。すなわち、平坦化アルゴリズムは、反転オブジェクトがその入力ノード上に明示的なニブル・タイプ・データセットを備えたオブジェクト・ライブラリーにおいてあるかどうか決める。そこにはない。したがって、平坦化アルゴリズムは、オブジェクト５００に代わる設計へ挿入にライブラリーから異形反転オブジェクト５０２を選ぶ。
【０２３１】
図Ｆ６は、設計へ異形反転オブジェクト５０２の生じる挿入を示す。異形公表オブジェクト５１０の入力ノードは移送５３２のノード５４２に関連付けられる。コレクタオブジェクト５１２の出力ノードは、移送オブジェクト５３６のノード５４４に関連付けられる。設計における他のオブジェクトの展望から、データセット伝播パターンが図Ｆ６へ異形反転オブジェクトの不変の次の挿入であると留意する。すなわち図Ｆ５及びＦ６では、挿入の前に、及びその挿入の後に、移送オブジェクト５３２は、そのためのオブジェクト関連付けるの単一の入力ノードのための４ビットのタイプ・データセットを伝達させた。挿入の前に、及びその挿入の後に、図Ｆ５及びＦ６で、さらに、移送オブジェクト５３８は別のオブジェクトからそれに対して伝達させられたデータセットを受信するために関連付けられた。したがって、図Ｆ５のトップレベルの反転オブジェクト５００及び図Ｆ６の異形反転オブジェクトによって達成された処理のパターンは、設計における他のオブジェクトの観点から不変である。
【０２３２】
合成プロセスのこの結合では、異形反転オブジェクト５０２は反転オブジェクト５００の代わりに挿入された。また、ニブル・データセットは、異形反転オブジェクト５０２のデータセット公表オブジェクト５１０の入力ノードに対して伝達させられる。平坦化アルゴリズムは、再び今回、図Ｆ６のデータセット公表オブジェクト５１０のための明示的なマッチに対してオブジェクト・ライブラリーを検索する。この例において、ニブル（４ビット）入力ノード及び２つのＤｂｉｔ（２ビット）出力ノードとともにデータセット公表オブジェクト（示されない）のためのオブジェクト・ライブラリーが明示的なマッチを有していると仮定する。平坦化アルゴリズムは、異形公表オブジェクト５１０に代わる設計にその明示的に一致する公表オブジェクトを挿入する。簡単のため、このデータセット抽出挿入は図Ｆ６には示されていない。別のデータセット公表オブジェクトの挿入は、５１０’参照の挿入された公表オブジェクトにラベルを付けることにより、図Ｆ６ Ｆ７で示される。
【０２３３】
合成プロセスのこの結合では、データ伝達プロセスは、その２つの出力ノードの各々上の２ビットのタイプ・データセットタイプを出力するデータセット公表オブジェクト’５１０を通して４ビットのデータセットタイプを伝達させる。２つのそれぞれの２ビットのデータセットタイプは、２つのトップレベルのオブジェクト５００のそれぞれの入力ノードに対してそれぞれの移送オブジェクト５１４’ａｎｄ ５１６’ａｎｄに対してそのとき伝達させられる。５１４’及び５１６’で示すそれぞれの移送オブジェクトは、伝達データセットプロセスを通じて、２ビットのデータセットタイプ移送オブジェクトへと、異形反転オブジェクト５０２の抽象的な移送オブジェクト５１４及び５１６が分解される。合成プロセスのこのステージにおける、まだ図Ｆ６を参照して、伝達データセットプロセスは、図Ｆ６の２つの反転オブジェクト５００の入力ノードのための２ビットのデータセットを伝達させる。
【０２３４】
埋め込むオブジェクトを含んでいる設計を合成する過程における別のオブジェクトの内部のバリアント型オブジェクトを埋め込むことが条件的な分岐を生成することは次の議論から認識されるだろう。特に、異形反転オブジェクト５０２の参照に留意する。より全般的に、別のバリアント型オブジェクト（自己参照であるか否か）のための１つのオブジェクト内の参照の関係に注意する。項目で、図Ｆ３及びＦ６の異形反転オブジェクト５０２は、図Ｆ２のトップレベルの異形反転オブジェクト５００を参照する。図Ｆ１で示されるように、トップレベルのオブジェクト５００は次には異形反転オブジェクト５０２を参照する。さらに、図Ｆ７の議論から認識されるように、この自己言及は、平坦化プロセスが、多数の反転オブジェクト５０２及び５０４の中で図Ｆ１のオブジェクト・ライブラリー一部を選択する契機を生成する。したがって、別のバリアント型オブジェクト（この場合でのトップレベルの反転オブジェクト５００）に対する１つのオブジェクト（この場合は異形反転オブジェクト５０２）は、様々な合成代案（この場合での設計の中へのオブジェクト５０２或いは５０４の挿入間の）の中で合成プロセスが分岐する契機を生成する。
【０２３５】
実際は、これは条件的な分岐契機である。分岐の１つの条件は、別のオブジェクト（この場合オブジェクト５０２）において埋め込まれていた、参照されたバリアント型オブジェクト（この場合オブジェクト５００）の１つのつ以上（この場合は１つ）の入力ノードに対して伝達させられたデータセットのタイプである。分岐の別の条件は、参照されたオブジェクト（この場合、オブジェクト５００）によって参照されたオブジェクト・ライブラリーにおいて等価な関数オブジェクトの性質である。
【０２３６】
合成プロセスのこのステージにおいて、２ビットのタイプ・データセットは、２つの異形反転オブジェクト５００のそれぞれの入力ノードに対して伝達させられ、平坦化アルゴリズムは、再び図Ｆ１で図示されたオブジェクト・ライブラリー一部を参照する。この時、それは、反転等価機能動作を有するオブジェクトとその入力ノード上の明示的な２ビットのタイプ・データセットの間の明示的なマッチを探索する。マッチはない。したがって、図Ｆ７に示すように、異形反転オブジェクト５０２のそれぞれのインスタンスは図Ｆ６のトップレベルの反転オブジェクト５００のスタンスにおいて平坦化アルゴリズムによって各々に代わる設計に挿入される。したがって、合成プロセスのこの結合では、異形反転オブジェクト５０２の２つのインスタンスが、移送オブジェクト５３２と５３６の間の設計において位置する。
【０２３７】
設計における他のオブジェクトの展望から、データセット伝播パターンが図Ｆ６の設計へ異形反転オブジェクト５０２の２つのインスタンスの不変の次の挿入であることは図Ｆ７から認識されるだろう。すなわち図Ｆ６及びＦ７では、挿入の前に、及びその挿入の後に、移送オブジェクト５３２はそのためのオブジェクト関連付けるの単一の入力ノードのための４ビットのタイプ・データセットを伝達させるために関連付けられる。挿入の前に、及びその挿入の後に、図Ｆ６及びＦ７で、さらに、移送オブジェクト５３８は別のオブジェクトからそれに対して伝達させられたデータセットを受信するために関連付けられる。挿入の前に、及びその挿入の後に、図Ｆ６及びＦ７で、さらに、各々の移送オブジェクト５１４’ａｎｄ ５１６’は、それらのためのそれぞれのオブジェクト関連付けるのための２ビットのタイプ・データセットを伝達させる。したがって、図Ｆ５のトップのレベル反転オブジェクト５００、図Ｆ６の異形反転オブジェクト及び図Ｆ７の２つの異形反転オブジェクトによって達成された処理のパターンは、設計における他のオブジェクトの観点から不変である。
【０２３８】
平坦化プロセスは、図Ｆ３の異形反転オブジェクトの異形データセット公表オブジェクト５１０の２つのインスタンスに代わる図Ｆ７で示されて、明示的なデータセット公表オブジェクトの２つのインスタンスを５１０”挿入するについて上に記述された方式における開始する。次に、伝達プロセスがそれぞれ作動するデータセットは、２つのデータセット抽出のそれぞれの出力ノードの各々上の２ビットのタイプ・データセットを５１０”伝達させる。データセット抽出５１０”の２つのインスタンスはそれぞれの出力ノードにそれぞれの１つのビットのタイプ・データセットを上に提供する。伝達データセットプロセスは、それぞれの移送オブジェクトのための４つのそれぞれの１つのビットのタイプ・データセットを５１４”及び５１６”を伝達させる。異形反転オブジェクト５０２のそれぞれのインスタンスの抽象的な移送５１４及び５１６が、１つのビットのタイプ・データセットを伝達させるために適して、移送オブジェクト５１４”及び５１６”に変形されたことが認識されるだろう。この変換は、伝達データセット及び平坦化プロセスの協力によって達成される。
【０２３９】
合成プロセスのこの結合では、設計が抽象的な移送オブジェクト５２０の抽象的な移送オブジェクト５１８と３インスタンスの３つのインスタンスを含むと留意する。さらに、それは、バリアント型コレクタオブジェクト５１２の３つのインスタンスを含んでいる。トップレベルの反転オブジェクト５００のインスタンスが分解された後まで、これらのオブジェクトは明示的なタイプ・オブジェクトへ分解されないだろう。
【０２４０】
次に、伝達データセットプロセスは、図Ｆ７で示されるトップレベルの反転オブジェクト５００の４つのそれぞれのインスタンスのための４つのそれぞれの１つのビットのタイプ・データセットを伝達させる。１つのバイトのタイプ・データセットがトップレベルの反転オブジェクト５００（その入力ノード上の明示的な１つのビットのタイプ・データセットを有する等価な関数オブジェクトの平坦化アルゴリズム検索）の４つのインスタンスの各々の入力ノードに対して伝達させられたので。特に、平坦化アルゴリズムは、マッチのための図Ｆ１で図示されたオブジェクト・ライブラリー一部を検索する。この時、明示的なマッチがある。原子の反転オブジェクトマッチ。それはその入力ノードの上に１つのビットのタイプ・データセットを有している。また、それは等価な機能を有している。したがって、図Ｆ８で示されるように、原子の反転オブジェクト５０４は、トップレベルのインバーター機能５００に代わる設計に挿入される。
【０２４１】
この時、バリアント型オブジェクト（例えば異形反転オブジェクト５０２）ではなく明示的なデータセットタイプオブジェクト（例えば、原子の反転オブジェクト５０４）を選択するために、合成プロセスが分岐したことが、認識されるだろう。選択された明示的な１つのビットタイプ・データは原子の反転オブジェクトシェアに等価な機能を結合によって示されるようなトップレベルの反転オブジェクト、図Ｆ１で示されたトップレベルの反転オブジェクト５００とともに設定される。さらに、それは、合成プロセスのこのステージにおける設計で参照されたトップレベルの反転オブジェクトに対して伝達させられたデータセットタイプと一致する明示的なタイプ・データセット（１ビットタイプ）を有している。
【０２４２】
合成プロセスのこの結合では、図Ｆ５のトップレベルの反転オブジェクト５００は、図Ｆ８の４つの原子の反転オブジェクトへ分解された。図Ｆ７及びＦ８を参照して、伝達データセットプロセスは、それぞれ、４つのそれぞれの原子の反転オブジェクト５０４を通して１つのビットのタイプ・データセットを伝達させる。伝達データセット及び平坦化プロセスは、４つのそれぞれの抽象的な移送５１８（それらの２つ）及び５２０（それらの２つ）をそれぞれ変形するように協動し、図Ｆ７に示すように、図Ｆ８（４つのそれぞれの原子の反転オブジェクト５０４の出力ノードのための関連付ける）で示される４それぞれの移送オブジェクト５１８”（それらの２）及び５２０”（それらの２）の中への、４つのそれぞれのトップレベルの反転オブジェクト５００の出力ノードのための関連付ける。各々の移送オブジェクト５１８”及び５２０”が１つのビットのタイプ・データセットを輸送するために適した。同様に、データ伝達プロセス及び平坦化プロセスは、その２つの入力ノードの各々上の１つのビットのタイプ・データセットを受信するために適した図Ｆ８で図Ｆ７のそれぞれの２つの異形データセットコレクタオブジェクト５１２を２つのそれぞれの明示的なデータセット・コレクタオブジェクトにそれぞれ５１２”変形するように協動する。同様に、図Ｆ７の異形データセットコレクタオブジェクト間のそれぞれの移送オブジェクト５１８と５２０関連付け、２ビットのタイプ・データセットを輸送するために適した図Ｆ８でそれぞれの移送オブジェクト’５１８及び５２０’に変形される。最後に、図Ｆ７の移送オブジェクト５３６のための異形データセットコレクタオブジェクト５１２関連付けるは、その２つの入力ノードの各々上の２ビットのタイプ・データセットを受信するために適した明示的なデータセット・コレクタオブジェクト５１２’ｉｎ図Ｆ８へ分解される。
【０２４３】
したがって、図Ｆ５に示すバリアント型トップレベルの反転オブジェクト５００は図Ｆ８の４つの原子の反転オブジェクト５０４へ分解された。
【０２４４】
設計（この例における、移送オブジェクト５３２及び５３６）における他のオブジェクトの観点から処理するパターンが変わらないように留意する。たとえ図Ｆ８の個々の原子の反転オブジェクト５０４が単に１つの１つのビットのタイプ・データセットを受信し伝達させることができる、そして、４ビットのタイプ・データセットが図Ｆ５のトップレベルのバリアント型オブジェクトに対して伝達させられても、これはそうである。すなわち、移送オブジェクト５３２は、図Ｆ５の、及び図Ｆ８の単一のノードのための４ビットのタイプ・データセットを伝達させる。移送オブジェクト５３６は、まだ、図Ｆ５の、及び図Ｆ８の単一のノードに関連付けられる。さらにデータセット伝播及び平坦化プロセスの異なるステージにおける解決プロセスが数レベルの条件的な分岐を含んでいたと留意する。条件的な分岐は、これらのステージにおける参照されたバリアント型オブジェクトに対して伝達させられたデータセットの性質に依存した。データセット伝達の性質は、１ステージから次へと変化（発展）した。したがって異形反転オブジェクト５０２及びトップレベルの反転オブジェクト５００はそれ（順次参照）を参照する多態データセットである。合成プロセスの異なるステージ中のそれらの解決は、そのような異なるステージにおける伝達させられたデータセットの性質に依存する。
【０２４５】
さらに図Ｆ８の明示的な移送オブジェクトのネットワークが、移送オブジェクト図Ｆ５のトップレベルの異形反転オブジェクト５００の入力ノード５０６のための５３２によって伝達させられたデータセットと一致するために存在へ自動的に生成されたか発展したと留意する。より明確に、合成プロセスは、設計が構築された後指定することができる（或いは交換された）データセット必要条件と一致するために移送オブジェクトを生成する。すなわち、設計はバリアント型オブジェクトを使用して構築される。その後、１つのつ以上のデータセットが異なるオブジェクトを分解するために設計を通して伝達させられる。解決プロセス中に、移送オブジェクトは分解されたバリアント型オブジェクトと一致するために生成される（或いは発展した）。
【０２４６】
（計算上の多態オブジェクト）
１つの様相では、本発明は計算上の多態オブジェクトを提供する。計算上の多態オブジェクトは１つの以上の計算に従って合成することができるものである。より特に、計算上の多態オブジェクトは、多態オブジェクトの合成を指示する制御情報を生成するために１つのつ以上のパラメータ（それは合成プロセスの間にそれに対して生成されたかもしれないし伝達させられたかもしれない）を使用して、計算を実行する制御一部を含んでいる。
【０２４７】
図Ｐ１−Ｐ７はそのような計算上の多態オブジェクトの仮想の例を提供するために使用されるものとする。仮想の多態オブジェクトは加算動作を実行する。加算動作は、Ｂを入力するために伝達させられたデータセットへＡを入力するために伝達させられたデータセットを加える．．この加算オブジェクトの多形は、ノードＡ及びＢを入力するために伝達させられたデータセットタイプに依存する対応関係の変化する程度、ノードＡ及びＢを入力するために伝達させられた情報率、及び合成プロセスの目標ハードウェア・システムの情報率容量を達成するために、オブジェクトが別々に合成されることを可能にする。
【０２４８】
図Ｐｌ及びＰ２を参照すると、１ビット直列加算及び２ビットの直列加算の例が示される。図Ｐ１及びＰ２の図面の目的は直列加算機能における対応関係の異なる程度を図示することである。
【０２４９】
図Ｐ３は仮想の計算上の多態加算オブジェクト８００を示す。オブジェクト８００は異形データセットタイプ並列加算オブジェクト８０２、シフトインオブジェクト８０４及び８０６、シフトアウトオブジェクト８０８を含んでいる。データセットタイプに依存するシフトインオブジェクト８０４及び８０６、ならびにシフトアウトオブジェクト８０８は、それぞれ中へ変わり、一度にデータの多くのビットを変える。オブジェクト８００は、さらに破線の中で示された制御一部８１０を含んでいる。制御部８１０のオブジェクト８１２及び８１４の機能は、図Ｄ３で示される、対応するオブジェクトのものと同じである。ディバイダ・オブジェクト８１６は、一定の値において帰着する計算上の機能を実行する。特に、それは、オブジェクト８１４によって提供される、選択された情報率を、システム（ソース・ノード８１９によって提供される一定の値）の最大の情報率に分割する。セレクターオブジェクト８１８は、分割計算の結果に基づいたデータセットタイプ信号を生成する。多数のデータセット信号が可能なデータセットタイプ選択としてソース・ノード８２２上で提供されると留意する。選択されたデータセットタイプは、決定するために、シフトインオブジェクト８０４及び８０６のタイプ入力ノードに供給され、加算オブジェクト８０２に対して変化される。選択されたデータセットタイプは、どの程度のビットがシフトアウトするかを決定すべきシフトアウトオブジェクト８０８のタイプ入力ノードに供給される。
【０２５０】
それぞれのシフトインオブジェクト８０４及び８０６の各々の内部で、及びシフトアウトオブジェクト８０８の内部で、図Ｐ４−Ｐ７で図示されたオブジェクト階級の一部である、タイプによるシフトのオブジェクトがある。図Ｐ４は、バリアント型データセット・タイプによるシフト・オブジェクトのトポロジーを図示する。図Ｐ５は、バリアント型タイプによるシフト・オブジェクトの端末リーフのトポロジーを示す。それは、ａｒｉｔｈｍａｔｉｃなシフト権として知られているＲＣＲ（キャリ権による回転）のオブジェクトを含んでいる。図Ｐ６は、バリアント型データセットＲＣＲのオブジェクトのトポロジーを図示する。図Ｐ７は、端末リーフＲＣＲのオブジェクトのトポロジーを図示する。
【０２５１】
もちろん、オブジェクト８００の全面的な合成は、さらに、この開示の他のセクションにおける説明からの技術において熟練している人々によって理解されるべきものも含んでいる。しかしながら、発明に従う合成プロセス中に、タイプによるシフトのオブジェクトがセレクター８１８によって選択に従って合成されるであろうことは認識されるだろう。もちろん、セレクター８１８はオブジェクト８１６によって計算に基づいて選択する。したがって、加算オブジェクト８００の解決は、加算オブジェクト自体の制御部８１０によって実行された計算に依存する。入力及び出力タイプによるシフト・オブジェクトの解決は、多態加算オブジェクトの全面的な合成に影響を及ぼす。
【０２５２】
（情報率パターン多形）
バッファーする（システムの２つの構成要素間で必要とされる）量は情報率パターン及び２つの構成要素が異なる情報率における作動するという相対的な性能に依存するかもしれない。情報率ぱらぱらの分類への多数のアプローチがある。ここに、少数の例がある。連続的、連続的なブロック、ブロック位取り、変数、変数位取り、複合体（ＦＦＴまたはＤＣＴ）そして不定となる。したがって、情報率パラメータは合成プロセスで使用される重要なパラメータでありえる。例えば、それは、ＦＩＦＯ回路の深さ及び幅の決定において重要になりえる。情報率パターンが、発明の本実施例における合成パラメータのように利用可能であることが認識されるだろう。
【０２５３】
（アンダーローディング）
既に複雑なクラス・オブジェクト階級を修正する性能を密着させるオブジェクト指向プログラミング技術において欠点があった。特に、オブジェクト・クラス階級がより複雑になるとき、階級に対して加算のレベルの抽象化を加えることはより困難になる。基本的に、あらかじめ階級に組み込まれたオブジェクトを有する一貫性を維持する必要は、階級におけるより高いレベルに抽象化を変更する性能を制限する。
【０２５４】
本発明に従うバリアント型オブジェクトは、より容易に最も複雑なオブジェクト階級さえに対して新規の抽象化を加える性能を生成する。基本的に、新規のバリアント型オブジェクトは容易に加えることができる」の下で」より高いレベル・オブジェクト。合成時に、合成プロセスは新規のバリアント型オブジェクト或いは伝達させられたパラメータに依存しないことを選択するかもしれないか、或いは合成プロセスの間に生成したか、他の方法で課した。より重要な階級との一貫性を保証する多くの努力として消費するべき必要はない。合成プロセスは、新規のバリアント型オブジェクトを選択する。或いは、それは選択しない。他のオブジェクトは著しく密着させられない。この方式における階級を「満載しない」性能は、様々な異なる動作記述及び方式設計におけるコード再使用の容易さの促進により、もっとプログラムすることを効率的にすると考えられる。
【０２５５】
（コンピュータ読取り可能なメディアでコード化されたコンピュータ・プログラム及びデータ構造実行）
コンピュータ・プログラム・プロセスが、アトリビュート計算機情報を使用して実行された計算を含むこのドキュメントの全体にわたって記述された様々な合成スレッド及び他の合成プロセスを実行することが認識されるだろう。さらに、様々なスレッド及びプロセスが、コンピュータ読取り可能なメディアにおいて格納されたコンピュータ・プログラムとともに実行されることは認識されるだろう。さらに、基礎的なオブジェクト・クラス階級、及びそれらの関連する方法、情報及びデータ構造を含む様々な合成動作オブジェクト及び原子的オブジェクトは、コンピュータ読取り可能なメディアにおいて格納される。
【０２５６】
したがって、発明の本実施例に従う動作記述が、コンピュータ読取り可能な媒体においてエンコードされることは認識されるだろう。例えば、各バリアント型動作オブジェクトは、コンピュータ読取り可能なコードにおいて実行された動作コード・ユニットは、入力ノードと出力が実行される入力ノード及び出力ノードに関連しているコンピュータ読取り可能なコードである。入力ノードはデータセットタイプに関連していることができる。そのようなバリアント型動作オブジェクトは、データセットの処理に対する手本を達成する動作コードに関連し、それは別の動作オブジェクトを参照する。別の動作オブジェクトへの言及は自己言及でありえる。抽象的な移送オブジェクトは、入力ノードから別の動作コード・ユニットまでデータセットの移送を達成することができる。
【０２５７】
付属する５８ページの付属書は参照することにより、この特許の出願の一部として明確に組込まれる。
【数１】
2004533028.tif 000004
【数２】
2004533028.tif 000005
【数３】
2004533028.tif 000006
【数４】
2004533028.tif 000007
【数５】
2004533028.tif 000008
【数６】
2004533028.tif 000009
【数７】
2004533028.tif 000010
【数８】
2004533028.tif 000011
【数９】
2004533028.tif 000012
【数１０】
2004533028.tif 000013
【数１１】
2004533028.tif 000014
【数１２】
2004533028.tif 000015
【数１３】
2004533028.tif 000016
【数１４】
2004533028.tif 000017
【数１５】
2004533028.tif 000018
【数１６】
2004533028.tif 000019
【数１７】
2004533028.tif 000020
【数１８】
2004533028.tif 000021
【数１９】
2004533028.tif 000022
【数２０】
2004533028.tif 000023
【数２１】
2004533028.tif 000024
【数２２】
2004533028.tif 000025
【数２３】
2004533028.tif 000026
【数２４】
2004533028.tif 000027
【数２５】
2004533028.tif 000028
【数２６】
2004533028.tif 000029
【数２７】
2004533028.tif 000030
【数２８】
2004533028.tif 000031
【数２９】
2004533028.tif 000032
【数３０】
2004533028.tif 000033
【数３１】
2004533028.tif 000034
【数３２】
2004533028.tif 000035
【数３３】
2004533028.tif 000036
【数３４】
2004533028.tif 000037
【数３５】
2004533028.tif 000038
【数３６】
2004533028.tif 000039
【数３７】
2004533028.tif 000040
【数３８】
2004533028.tif 000041
【数３９】
2004533028.tif 000042
【数４０】
2004533028.tif 000043
【数４１】
2004533028.tif 000044
【数４２】
2004533028.tif 000045
【数４３】
2004533028.tif 000046
【０２５８】
多態オブジェクトの構築
多形は、同一の動作の定義が種々様々のデータセットに関係することを許可する特徴である。多態は、再読込、回帰およびランタイム解決のコンビネーションを通して達成される。
【０２５９】
再読込は、2つの種々のモジュールが同一の名称を備えるが別々に作用すること、種々のデータセット上で作動することを許可する。例えば、整数に(信号化された)自然数(符号なしの整数)を変換する変換モジュールを定義することができる。固定小数点式の計算から署名された整数までの変換は、異なるタイプの再読込となる。特に、ビットは廃棄され、異なる動作が使用される。
【０２６０】
これらのモジュールを生成する場合、それらは、オブジェクト・ツリーにおいて1つの合成オブジェクトへ一まとめにされる。VIVAはコンパイル時に適切なモジュールを分解する。この方法で、動作ページを変換する必要なしに、種々のアプリケーションにおいて作動するようにソフトウェアーをプログラムすることができる。
【０２６１】
「1つの単一動作定義は、どのように様々な8ビットの整数、16ビットの整数、信号化された符号なしの整数および固定小数点式の計算する加算を行う方法を定義することができるか。」と尋ねるかもしれない。回答は再帰にある。
【０２６２】
入力と出力のノードで表現されたグラフィカルなオブジェクトは、各々同一の名称とともに、一連の過負荷の機能に関連している、種々のタイプの入力のための特別の機能の種々の実施を処理する。参照されたモジュールがオリジナルのタイプより単純なタイプ上で作動する限り、バリアント型合成オブジェクトの定義は自己参照を行う。機能が、より多くの基本のデータ型に対する動作へ分解されるまで、この規則は再帰的な定義を許可する。
【０２６３】
多態は、VIVAモジュールが同一のオブジェクトまたは機能を使用して、任意の精度を有するデータ型をサポートするという性能である。データセット多形は、バリアント型オブジェクトの入力のデータ型に依存する適切なゲートウェア実施を合成するVIVAの性能を参照する。情報率の多態化で、VIVAは、速度の必要に依存する特別の実施を選択する。
【０２６４】
再読込は、それによって種々のアプリケーション・ケースを処理するために同一の名称を有する多数のオブジェクトを使用することができるプロセスである。この多態プロパティは、バリアント型状況を処理するためにオブジェクトを定義するのに、特に役立つ。さらに、2つの種々の定義は同一のオブジェクトのために指定することができる。
【数４４】
2004533028.tif 000047
【数４５】
2004533028.tif 000048
【数４６】
2004533028.tif 000049
【数４７】
2004533028.tif 000050
【０２６５】
VIVAデータセット
基本のデータセットはビットである。ビットは、単一の情報(ONまたはOFF、0あるいは1、TRUEあるいはFALSE)である。他のデータセットは、ビットあるいはより多くの単純なデータセットのいずれかの総計として形成され、結果的にビットから構成される。データセット・エディターの使用により新規のデータセットを定義することができる。ビットに加えて、VIVAはさらに次の基本のデータセットをサポートする。
【０２６６】
データセット…定義
Bit… 2状態(TRUEまたはFALSE、0または1など)との1個の情報から成る最小単位のデータセット
DBit…ダブルのビット。2ビットの基本的なデータセット。ペアのビット。0.5ニブル。より高いレベルの集合のデータセットを作るのに必要とされる。
【０２６７】
Nibble（ニブル）…4ビットの基本的なデータセット。0.5バイト。より高いレベルの集合データセットを作るのに必要とされる。
【０２６８】
Byte…8ビットの基本的なデータセット。2ニブル。
【０２６９】
Word… 16ビットの基本的なデータセット。2バイト。
【０２７０】
DWord …２Word。32ビットの基本的なデータセット。2単語。
【０２７１】
QWord …４Word。64ビットの基本的なデータセット。4単語。
【０２７２】
Int…16ビットの信号化された整数。
【０２７３】
DInt …32ビットの信号化された整数。
【０２７４】
QInt…64ビットの信号化された整数。
【０２７５】
Variant（バリアント）…データ型は、実行処理(その時に既知のデータセットへ解決される)まで合成されない。
【０２７６】
VIVAの内蔵の機能はデータセット公表部とコレクタの自動公式化である。公表部モジュールはその構成する部分へデータセットを分解する;例えば、単語は2バイトの連結である。コレクタは、例えばより大きなデータセットを作るために2部品を組み合わせる。単語コレクタは、単語を構成するために2バイトを組み合わせる。
【０２７７】
異形データセットは実際のデータセットが未知の場合に、データを表わすために使用される。VIVAは、この重要な機能によって入力データ型と無関係に作動する一般化された多態モジュールを公式化することができる。バリアント出力はより大きなデータセットに2つの任意のデータセットを整理するだろう。入力データセットが知られるようになる場合、適切なデータセット公表部の中への異なるデータセット公表部の解決が実行されるだろう。
【数４８】
2004533028.tif 000051
【数４９】
2004533028.tif 000052
【数５０】
2004533028.tif 000053
【０２７８】
ASIC
特定用途向けIC
Behavior
VIVAモジュールの機能的な特徴。例:加算オブジェクトの動作は、2つの入力をとり、それらをともに加えて、出力に結果を送出することである。
【０２７９】
Byte
8ビットから成る集合のデータ型。バイト計算は符号なしの整数であると考えられる。
【０２８０】
Cardinal（基数）
一連のビットがある場合、数値の解釈は符号なしの整数として判断される。
【０２８１】
Byte, Word, DWord, 及びHugeは、すべて基数タイプである。
【０２８２】
Clock
通常規則的に時間が計られた間隔で、駆動されたクロックであるVIVAのイベント。
【０２８３】
Collector
モジュール(合成データセットへデータセットのコレクションを組み立てる)。
【０２８４】
Composite Object（合成オブジェクト）
VIVAオブジェクトは、入力、出力、および移送によって接続している、より初期のオブジェクトから構成される。
【０２８５】
CPU
直列コンピューター用中央処理装置、通常のマイクロプロセッサ。
【０２８６】
Data-flow machine
そのデータで駆動されるアーキテクチャーが命令を連続する実行処理ではなく同時実行処理に利用可能にしておくコンピュータ。
【０２８７】
DBit
ダブルビット。2ビットの基本的なデータセット。1ペアのビット。0.5ニブル。
【０２８８】
DBitin
DBitのデータセット公表部モジュール。
【０２８９】
DBitOut
DBitのデータセット・コレクタ・モジュール。
【０２９０】
Done
モジュールが実行されたことを示すVIVAのイベント。
【０２９１】
Drill（ドリル）
モジュールに関する補足情報を強調表示するおよび抽出すること。
【０２９２】
Event
VIVAにおいて、発生する状態の変換
Exposer（抽出部）
その構成部品に合成オブジェクトを分けるVIVAモジュール。
【０２９３】
FPGA
フィールドプログラム可能なゲート・アレイ。
【０２９４】
GateWare
VIVAを通して作成されたVIVA実行。GateWare（登録商標）はスター・ブリッジ、システムズ社の商標である。
【０２９５】
Go
別のモジュールに実行処理を始めるように指示するVIVAのイベント。
【０２９６】
GUI
グラフィカル・ユーザー・インターフェース
Integer（整数）
最も高いビットが符号ビットとして解釈される一連のビットの数値。否定の値は2の補数として表わされる。
【０２９７】
Library（ライブラリー）
ユーザーによってアクセスすることができ、プロジェクトに組み入れることができるソフトウェアー・オブジェクトあるいはモジュールのコレクション。VIVAはオブジェクトのシートとしてライブラリーを実行する。
【０２９８】
Module（モジュール）
入力および(または)出力に接続された時関連する動作を備えたグラフィカルな手段。呼び出されたオブジェクト
Object（オブジェクト）
入力および(または)出力に接続され、関連する動作を備えたグラフィカルな手段。正確のため、我々は、VIVAの中で用語モジュールを使用する。
【０２９９】
Overloading（再読込）
種々のアプリケーション・ケースを処理するために同一の名称を有する多数のオブジェクトを使用することができるプロセス。この多態プロパティは、バリアント型状況を処理するためにオブジェクトを定義するのに、特に役立つ。さらに、2つの種々の定義は同一のオブジェクトのために指定することができる。
【０３００】
Parallel（並列）
単一のパスではなく多数の回路の同時の実行処理。
【０３０１】
Persistence（持続）
ハードディスクのような記憶メディア上にVIVAオブジェクト・コード(ゲートウェア)を保存する機能。
【０３０２】
Polymorphism（多態）
VIVAモジュールが同一のオブジェクトまたは機能を使用して、任意の精度を有するデータ型をサポートするという性能。データセット多形は、バリアント型オブジェクトの入力のデータ型に依存する適切なゲートウェアを実証するVIVAの性能を参照する。情報率多態は、速度の必要に依存する適切なゲートウェアを実証するVIVAの性能を参照する。
【０３０３】
Ready
それはデータを受信する準備ができていると別のモジュールに通知するVIVAのイベント。
【０３０４】
Recursion（再帰、回帰）
機能がそれ自体を呼び出すという性能。
【０３０５】
Reset
リセットするべきモジュールを示すVIVAのイベント。
【０３０６】
Resolution（解決）
特別のアプリケーションのための抽象的な概念の意味を決定するプロセス。
【０３０７】
Sync（同期化）
2つ以上のプロセスの実行処理のスタートを同期させるVIVAのイベント。
【０３０８】
Variant（バリアント）
アプリケーションに依存して、多数の意味を備えることができるアトリビュート。
【０３０９】
VIVA
オペレーティング・システム、言mm語、およびKent L.Gilsonによって生成されたユーザ・インターフェース。VIVA（登録商標）はスター・ブリッジ、システムズ社の商標である。
【０３１０】
Wait（待機）
データを受信することが準備ができていない別のモジュールを示すVIVAのイベント。
【０３１１】
Wire list
手段とそれらの接続を示す回路のトポロジー。FPGAにおいては、それが、各ゲートの状態およびそれらの接続を示す。
【図面の簡単な説明】
【０３１２】