(57)【要約】方法（７００、８００、９００）およびシステム（図１）は、対話または再設計を伴うことなく、回路設計を同期表現（図４Ａ）から非同期表現（図４Ｂ）へ変換するためのアプローチを自動化する。同期回路設計（１０１）の表現から非同期回路設計（１０４）の表現へのおよび非同期回路設計（１０４）の表現から同期回路設計（１０１）の表現への変換は、従来の電子設計自動化ツールが非同期設計を処理するのを可能にし、それと同時に、非同期ハードウェアソリューションを用いて同期設計を実装するのを可能にする。同期表現における同期設計ツール（１０５）へのフィードバックは、最適化を可能にし、それと同時に、基礎をなす非同期アーキテクチャーおよび基礎をなすハードウェアに関する知識の必要性を最小限に抑制する。
2009535718.tif 000002
【特許請求の範囲】
【請求項１】
非同期回路設計と同期回路設計との間の変換を実行する方法であって、
同期設計を識別するステップと、
前記同期設計の同期ネットリストを生成するステップと、
前記同期ネットリストを非同期設計に変換するステップと、
を備えた方法。
【請求項２】
前記同期ネットリストが、発生源の電子設計インタフェースフォーマットからのモジュールを含む標準化された同期ネットリストである請求項１に記載の方法。
【請求項３】
前記変換するステップが、人が介在することなく自動的に実行される請求項１に記載の方法。
【請求項４】
前記非同期設計表現が、データフローグラフ、データフローグラフの実装の詳細な記述、および、高級言語を含むグループの中から選択される請求項１に記載の方法。
【請求項５】
前記変換するステップが、前記非同期設計の動作特性を前記同期領域へ逆変換するアノテーションを生成するステップを含み、それによって、前記非同期設計のタイミング特性を検証する請求項１に記載の方法。
【請求項６】
前記非同期設計が、トークンとして表現されたデータを含むデータフローグラフである請求項１に記載の方法。
【請求項７】
前記ネットリストが、同期クロック、同期クロック周波数、マルチサイクルパス、入力制約、および、出力制約からなるグループの中の少なくとも１つを含む請求項６に記載の方法。
【請求項８】
前記同期ネットリストが、組み合わせ論理ゲートおよび状態保持論理ゲートを含む請求項７に記載の方法。
【請求項９】
前記データフローグラフが、関数ブロック、ソースブロック、シンクブロック、コピーブロック、マージブロック、および、イニシャルブロックを含むグループの中の少なくとも１つを含む請求項８に記載の方法。
【請求項１０】
前記同期設計が、単一クロック領域を備え、かつ、前記変換するステップが、
クロックおよびクロックイネーブル入力を無視するステップと、
組み合わせ論理を演算ごとのグループに分けるステップと、
前記組み合わせ論理の論理計算を指示するステップと、
を含む請求項９に記載の方法。
【請求項１１】
理想的な論理遅延および理想的な状態保持エレメントを仮定するステップをさらに含む請求項１０に記載の方法。
【請求項１２】
前記同期設計が、複数のクロック領域を備え、
前記変換するステップが、
すべてのクロックサイクルタイムの最小公倍数に対応する反復周期を決定するステップを含み、
前記状態保持エレメントをそれぞれの前記クロック領域から分離した状態に維持するステップをさらに含む、
請求項９に記載の方法。
【請求項１３】
前記同期設計が、ゲーテッドクロックを備えた状態保持エレメントを含み、前記変換するステップが、ＭＵＸ変換の置換によって前記ゲーティングを除去するステップ、および前記状態保持エレメントの出力を条件付き信号にするためのゲーティング情報を使用するステップを含むグループの中の少なくとも１つを含む請求項９に記載の方法。
【請求項１４】
非同期設計における選択された非同期組み合わせ論理関数のために、
前記非同期組み合わせ論理関数のための条件トークンおよびデータトークンを識別するステップと、
前記条件トークンおよび前記データトークンをバッファリングするステップと、
前記非同期組み合わせ論理関数のクロック信号ごとに、前記非同期組み合わせ論理関数の出力の値に一致する無条件データトークンを生成するステップと、
をさらに含み、
それによって、前記非同期組み合わせ論理関数を同期組み合わせ論理関数に逆変換する、
請求項９に記載の方法。
【請求項１５】
前記非同期設計表現が、同期入力信号および同期出力信号を含む請求項１に記載の方法。
【請求項１６】
非同期ネットリストを前記非同期設計に基づいて生成するステップをさらに含み、前記非同期ネットリストは、フィールドプログラマブルゲートアレイ上に前記非同期設計を実装するためのものである請求項１に記載の方法。
【請求項１７】
前記データフローグラフが、同期論理を用いて実装される請求項６に記載の方法。
【請求項１８】
非同期回路設計と同期回路設計との間の変換を実行するためのシステムであって、
同期設計ファイルと、
前記同期設計ファイルを受信し、かつ前記同期設計の同期ネットリストを生成するように接続された合成ツールと、
前記同期ネットリストを受信し、かつ前記同期ネットリストを前記非同期設計に変換するように接続された変換器と、
を備えたシステム。
【請求項１９】
前記同期ネットリストが、発生源の電子設計インタフェースフォーマットからのモジュールを含む標準化された同期ネットリストである請求項１８に記載のシステム。
【請求項２０】
前記非同期設計表現が、データフローグラフ、データフローグラフの実装の詳細な記述、および、高級言語を含むグループの中から選択される請求項１８に記載のシステム。
【請求項２１】
前記非同期設計を受信し、かつ前記非同期設計の動作特性を前記同期領域に逆変換するアノテーションを生成するように接続されたアノテーション生成器をさらに含み、それによって、前記非同期設計のタイミング特性を検証する請求項１８に記載のシステム。
【請求項２２】
前記非同期設計が、トークンとして表現されたデータを含むデータフローグラフである請求項１８に記載のシステム。
【請求項２３】
非同期回路設計と同期回路設計との間の変換を実行するためのシステムであって、
同期設計を識別するための手段と、
前記同期設計の同期ネットリストを生成するための手段と、
前記同期ネットリストを非同期設計に変換するための手段と、
を備えたシステム。
【請求項２４】
非同期回路設計と同期回路設計との間の変換を実行するためのプログラムプロダクトであって、
前記プログラムプロダクトは、コンピュータによって動作させることができ、かつ、
同期設計を識別するステップと、
前記同期設計の同期ネットリストを生成するステップと、
前記同期ネットリストを非同期設計に変換するステップと、
を実行するためにコンピュータ上で動作することのできる制御命令を記憶する、
プログラムプロダクト。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般的には、電子回路設計に関し、より詳細には、同期回路設計と非同期回路設計との間の変換を実行するための方法およびシステムに関する。
【背景技術】
【０００２】
従来の同期回路設計は、様々なハードウェア記述言語、高級記述言語、ネットリスト、および、回路図を用いて、表現される。これらの同期表現のすべては、クロック信号の存在下で、あるいは、動作を同期させるのに使用されるマスタータイミング信号によって、回路の機能を定義する。同一同期回路を実装するため非同期アーキテクチャーを利用するためには、その同期表現は、非同期表現に変換されなければならない。この目的を達成するために、以下の２つの基本的なアプローチが存在することが一般的に知られている。
１）非同期表現を用いて回路を設計し直す。
２）既存の同期表現を非同期表現に変換する。
【０００３】
上述したアプローチ（１）は、時間のかかるものであり、かつ、非同期アーキテクチャーとして実行するために、設計全体を実装し直す必要がある。これは、設計者には一般的には受け入れることのできないアプローチである。これは、時間の観点からコストのかかるものであり、かつ、設計者が回路設計を非同期アーキテクチャー形式で表現するためのまったく新しい方法を学習することを必要とする。非同期設計の分野は、かなり古い技術を含む時代遅れの分野である。
【０００４】
既存の同期表現を非同期表現に変換するアプローチ（２）は、設計者が非同期回路を熟知していることをそのようなアプローチが必要としなければ、回路設計者には有益なものでありかつ回路設計者によって推奨されるものであると本発明人が確信するアプローチである。
【０００５】
同期回路設計を非同期表現に自動変換することが、論議されてきたが、本発明人が知る限りでは、効果的にかつ商業的に実行可能なソリューションとして実施されていない。既存の技術は、複数クロック領域、ラッチおよびフリップフロップ（立ち下がりエッジトリガーおよび立ち上がりエッジトリガーされる）、および、クロックゲーティング（ｃｌｏｃｋ  ｇａｔｉｎｇ）の存在下で同期回路設計を変換することに関する問題に取り組んでいない。同期設計から非同期条件付きブロック設計を生成することのできる既存の技術は、本発明人が知る限りでは、存在しない。また、一次入力および一次出力において同期がとられているという錯覚を維持しながら同期システムを非同期設計に変換するための本発明人が知る過去の研究は、存在しない。
【発明の開示】
【０００６】
本発明は、設計者またはユーザが対話することなく、あるいは、同期回路を再設計することなく、同期表現から非同期表現への回路設計の変換を自動化するための方法およびシステムを含むが、典型的には、ソフトウェアの形で必ずしも実施されるとは限らない。
【０００７】
本発明の一実施形態においては、非同期回路設計と同期回路設計との間の変換を実行するための方法およびシステムが提供され、一方法は、
同期設計を識別するステップと、
同期設計の同期ネットリストを生成するステップと、
同期ネットリストを非同期設計に変換するステップと、
を備える。
【０００８】
同期回路設計の表現から非同期回路設計の表現への、および、非同期回路設計の表現から同期回路設計の表現への最適化され、自動化され、そして、非対話型である変換を提供することによって、本発明は、従来の電子設計自動化（ＥＤＡ）ツールが非同期設計を処理および操作するのを可能にし、それと同時に、非同期ハードウェアソリューションを用いて、同期設計を実装するのを可能にする。また、本発明は、技術者による設計処理の最適化および反復のために、同期表現における同期設計ツールへのフィードバックを助ける。また、本発明による方法は、変換される回路の一次入力および一次出力において同期がとられているという錯覚を維持することができる。
【０００９】
同期設計表現から非同期設計表現へ変換されたとき、その非同期設計表現は、例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）の形で、一般的な技術を用いてハードウェア回路内へ直接に組み立てられてもよいことが理解できるはずである。
【発明を実施するための最良の形態】
【００１０】
本発明は、同期設計を同じ機能を備えた非同期設計に変換するための方法である。この方法は、それぞれのクロック領域の周波数が予め既知でありさえすれば任意の数のクロック領域を備えた回路をこの方法が変換できるという点において、汎用的なものである。また、この方法は、クロックゲーティング、立ち上がりエッジトリガーフリップフロップおよび立ち下がりエッジトリガーフリップフロップを組み合わせたもの、さらには、ラッチのような共通機能を取り扱うことができる。さらに、この方法は、非同期信号を完全に同期したものとして動作させることを提供することを含む。このことは、回路のコア実装の非同期性を隠すために、回路の一次入力および一次出力に適用されてもよく、あるいは、設計の同期スキャンテストまたは同期デバッグを可能にするために、何らかの中間信号に適用されてもよい。
【００１１】
アルゴリズムへ入力されるものは、合成に通常必要とされる付加的補助情報を備えた同期ネットリストの記述である。この情報は、いくつかのクロックおよびそれらの周波数のセット（１つのクロック信号の場合、周波数は必要とされない）、マルチサイクルパス（必要であれば）のセット、および、適切なクロックに関する入力信号および出力信号に対する制約を含む。さらにまた、同期した状態に維持されなければならない信号が、指示される。デフォルト設定によって、アルゴリズムは、すべての一次入力および一次出力は同期した状態にあると仮定する。具体的に説明するために、同期ネットリストが、Ｓｙｎｐｌｉｃｉｔｙ社のＳｙｎｐｌｉｆｙ  ＰｒｏＴＭまたはＭｅｎｔｏｒ  Ｇｒａｐｈｉｃｓ社のＰｒｅｃｉｓｉｏｎ  ＳｙｎｔｈｅｓｉｓＴＭソフトウェアパッケージのような既存の合成ツールによって生成される場合について論議する。
【００１２】
この分野においてよく知られているように、Ｓｙｎｐｌｉｆｙ  ＰｒｏＴＭ、および、Ｐｒｅｃｉｓｉｏｎ  ＳｙｎｔｈｅｓｉｓＴＭは、それぞれ、典型的なフィールドプログラマブルゲートアレイ合成ツールを備え、この合成ツールの機能は、レジスタ転送レベル回路動作をＦＰＧＡ設計実装に変換することである。そのようなツールによって生成されたネットリストは、電子回路の実際の接続性を記述するのに使用される。
【００１３】
同期ネットリストは、組み合わせ論理であるゲートのセット、および、状態を保持しているゲートのさらなるセットを含む。４つの種類の状態保持ゲート、すなわち、立ち上がりエッジトリガーフリップフロップ（ＰＦＬＯＰ）、立ち下がりエッジトリガーフリップフロップ（ＮＦＬＯＰ）、それらのクロック入力がＨレベルであるときに透過であるラッチ（ＰＬＡＴＣＨ）、および、それらのクロック入力がＬレベルであるときに透過であるラッチ（ＮＬＡＴＣＨ）を考える。合成ツールは、生成されたクロックを除去し、そして
、それらのクロックをクロックの組み合わせおよびクロックイネーブルに置き換えてもよいので、単純化のために、状態保持エレメントによって使用されるすべてのクロック信号は回路への一次クロック入力であると仮定する。この実装は、同期ネットリストを表現するための言語としてＥＤＩＦ２００規格を使用するが、その他の何らかの言語、例えば、ＶｅｒｉｌｏｇＴＭが、同じように使用されてもよい。
【００１４】
この分野においてよく知られているように、ＥＤＩＦは、電子設計相互変換フォーマットを表現しており、電子ネットリストおよび回路図を記憶するための中立フォーマットとして圧倒的に使用されてきた。ＥＤＩＦフォーマットは、メーカー独自のフォーマットを中立フォーマットに標準化する。ＥＤＩＦ２００は、初期にリリースされたフォーマットを表現し、その後に、ＥＤＩＦ３００およびＥＤＩＦ４００によって補完されてきた。
【００１５】
本発明の変換方法の上位フローが、図１に示される。ここで、図１（ブロック図を示す）および図７（処理７００を示す）を参照すると、ツールフロー全体への入力が、ＶｅｒｉｌｏｇＴＭ１１２、ＶＨＤＬＴＭ１１４、Ｃ−Ｌｉｋｅ入力１１６、ＭＡＴＬＡＢ／ＬＡＢＶＩＥＷ１１８、または、同期合成ツール（７０２）によってサポートされる何らかのその他の言語のような既存のハードウェア記述言語（ＨＤＬ）１１０として記述される。既存のツール１００は、高級記述をシミュレーションし、さらには、その高級記述を、ＥＤＩＦ２００を含む様々なフォーマットとして、同期ネットリスト内に合成するのに使用されてもよい。
【００１６】
説明される本発明の実施形態においては、ＥＤＩＦを入力とするツール１０２、さらには、ＥＤＩＦ内の“ブラックボックス”モジュール（例えば、ＥＤＩＦセル名“ＡＮＤ２”は２入力ＡＮＤゲートであるという事実、など）、および、それぞれの合成ツールごとに変化するＥＤＩＦフォーマットに関するいくつかの細部を指示するテーブルが、実装される。ＥＤＩＦフォーマットから標準化されたネットリストフォーマットへの変換（ステップ７０４）は、上述した合成ツール１００Ａの中の１つを用いて、標準的な処理１０２Ａにおいて実行される。ＥＤＩＦ読み出し器１０２の最終的な出力は、標準化された同期ネットリスト１０１である。同期ネットリスト１０１は、上で簡単に説明された必要なすべての情報を含む。また、クロック、クロックイネーブル、ＰＦＬＯＰ、ＮＦＬＯＰ、ＰＬＡＴＣＨ、および、ＮＬＡＴＣＨを含めて、設計の異なる部分を識別することは、きわめて容易なことである。なぜなら、既存の合成ツール１００によって生成されたＥＤＩＦは、明確に標識されたこれらのエンティティーを有するからである。
【００１７】
この分野において知られているように、ツール１０２内に存在する．ｃｏｎｆファイルは、合成ツールの出力フォーマットを指示する環境設定ファイルであり、．ｘｌファイルは、合成ツールによって使用されるライブラリーエレメントの記述を含むライブラリーファイルである。．ａｎｆファイルは、結果として得られた同期ネットリストを含む。この情報を指示するためには、どのようなファイルフォーマットが使用されてもよく、あるいは、必要な情報は、変換ツール１０２Ａ自身に組み込まれてもよい。
【００１８】
継続して図１を参照すると、同期ネットリスト１０１は、その後、同期非同期変換メソッド１０３を用いて、非同期フォーマット１０４に変換され、その非同期フォーマットは、例えば、データフローグラフの形態を有する（ステップ７０６）。この非同期実装は、実行される計算の点から見れば、同期実装に等価である。説明される変換メソッドは、以下で説明されるように、元々の同期表現の要件と比較してデータフローグラフのタイミング設計を検証する（ステップ７１０）ためのアノテーション生成器１０５を用いて（ステップ７０８）、非同期実装の動作特性を同期領域に逆変換するアノテーションを生成するためのメソッドを含む。これは、例えば、入力および出力の同期図を生成するために非同期データフローグラフの境界を画定することによって、実行されてもよい。したがって、本発明は、同期ネットリストを非同期実装に変換することを可能にし、さらには、アノテーション生成器が非同期領域から同期領域内へ動作特性をマッピングするのを可能にする。例えば、同期ネットリストがその中に変換されてもよいデータフローグラフとは異なるその他のフォーマットは、例えば、ＶｅｒｉｌｏｇまたはＶＨＤＬ、あるいは、それどころか、ＳｙｓｔｅｍＣ、Ｈａｎｄｅｌ  Ｃ、または、メッセージ転送動作（ｍｅｓｓａｇｅ−ｐａｓｓｉｎｇ  ｏｐｅｒａｔｉｏｎ）によって補強されたＣのようなその他の高級言語を使用するデータフローグラフの実装の詳細な記述を含む。当然ながら、当業者には明らかなように、言語の細部は制限されることはない。
【００１９】
ターゲット非同期ネットリストは、細粒度化非同期パイプラインまたは同期データフローパイプラインとして効率的に実装されてもよい回路を表現する。ターゲットネットリストは、データフローグラフとして表現される。データフローグラフ内に存在するノードは、トークンと呼ばれるデータ値に基づいて動作する。トークンは、パイプラインを流れることのできるデータアイテムである。トークンは、１ビット値または複数ビット値であってもよい。データフローグラフ内に存在する演算子は、それらの入力においてトークンを受信し、それらの出力においてトークンを生成する。トークンの値の変化は、結果を計算するのに使用される。演算子間の接続性は、トークンが送信および受信されてもよい通信チャンネルに対応する矢印によって指示される。通信チャンネルは、バッファリングすることはなく、ランデブー同期に対応するチャンネルにおいてトークンを送信および受信する。
【００２０】
この分野において知られているように、細粒度化非同期パイプラインは、非同期チャンネルを介して通信する論理回路の小さなセルを備え、束データ方式パイプラインと比較すれば、ロバストネスおよび高いスループットという利点を提供する。
【００２１】
データフローグラフの基本的なビルディングブロックが、図２に示され、かつ、ここで、図２を参照して説明される。計算するための基本ユニットは、関数ブロック２０１であり、これは、任意の数の入力と１つの出力とを有する。関数ブロックは、それのすべての入力からトークンを受信し、指示された関数を計算し、そして、関数の結果をそれの出力における出力トークンとして生成する。それらの関数ブロックが有する入力の数およびそれらの関数ブロックが実行する演算が様々に異なる、多くの異なる種類の関数ブロックが、存在してもよい。ソース２０４は、それの出力においてトークンの無限のストリームを生成する演算子であり、そのトークンは、常に、同じ値を有する。シンク２０５は、入力トークンをただ単に消費する演算子である。コピー２０６は、それの入力において受信されたトークンをそれのすべての出力に複製するブロックである。イニシャルブロック２０７は、トークンをそれの出力に送信することによって開始し、その後に、入力トークンをそれの出力にコピーする。これらのブロック２０１、２０４、２０５、２０６、および、２０７は、繰り返して、それらの入力（もしあれば）のそれぞれにおいて１つのトークンを受信し、そして、１つのトークンをそれらの出力（もしあれば）のそれぞれに送信する。
【００２２】
マージブロック２０２は、２つの種類の入力、すなわち、データ入力（他のすべてのブロックと同じような）と特別な制御入力２０８とを有する。制御入力の値は、トークンが受信されるデータ入力を指示する。そして、このトークンは、マージの出力に送信される。スプリットブロック２０３は、２つの関数を有する。スプリットブロック２０３は、それの制御入力２０９において制御値を受信し、また、それのデータ入力においてデータ値を受信する。これは、制御入力の値によって指示される出力チャンネルにそのデータ値を送信する。
【００２３】
この分野において知られているように、データフローグラフは、情報システム、ここで
は非同期回路またはゲートアレイを流れるデータフロー、のグラフ表現である。上述したように、図２に示される様々なエレメントは、データフローグラフを組み立てるための基本的なビルディングブロックであり、それらのいくつかは、以下で詳細に説明される。
【００２４】
図３Ａは、ｘの値が（ｘ＋ａｂ）に置換され、かつこの更新された値が出力に提供される算術演算に対応する例としてのデータフローグラフを示す。入力トークンが、入力ａおよびｂに到達し、そして、それらは、ＭＵＬＴによってお互いに乗算され、そして、関数ＡＤＤを用いて、ｘの現在値に加算される。この更新された値は、出力に提供され、さらには、加算器ＡＤＤの入力にフィードバックされる。さらなる入力ｃを入力とするこの演算の変更されたバージョンが、図３Ｂに示される。図３Ｂにおいて、スプリットおよびマージが、値ｃを出力に転送するかどうかの選択肢を提供するための制御信号と組み合わせて使用される。ｃが、ゼロであれば、ｘの現在値は、０に置換され、そうではなく、ｃが、１であれば、データフローグラフは、図３（ａ）に示されるものと同じように動作する。
【００２５】
同期非同期変換アルゴリズムは、同期ネットリストを、同じ計算を実行するデータフローグラフ内にマッピングする。それぞれの信号は、データフローグラフのエッジ（edge）（図３に示される標識されたエッジのような）にマッピングされ、同期ネットリストとは異なるゲートは、データフロー演算子に変換される。
【００２６】
・  複数クロック領域またはクロックゲーティングの存在しない変換
ここで、図８を参照すると、基本的な変換処理（図８に符号８００として示され、同期ＨＤＬ設計を非同期ネットリストに変換するための上述した処理を拡張したものである）が、１クロック領域に存在し、かつ状態保持エレメントのどれもがクロックゲーティングされない同期回路にどのように作用するかがわかるはずである。アルゴリズムは、同期回路によって実行される計算を決定することによって、その後に、データフローグラフを用いて、同じ計算を実装することによって、作用する。まず最初に、同期論理関数を識別する（８０２）。ＳＰＦ、ＳＮＦ、ＳＰＬ、および、ＳＮＬは、それぞれ、すべてのＰＦＬＯＰ、ＮＦＬＯＰ、ＰＬＡＴＣＨ、および、ＮＬＡＴＣＨであるとする。それぞれのゲートｇごとに、入力信号ｉｎ（ｇ）および出力信号ｏｕｔ（ｇ）を有する。基本的なアルゴリズムは、１クロック領域およびクロックゲーティングが存在しないことに対応しているので（８０４）、クロックおよびクロックイネーブル入力を無視し、したがって、使用されるクロックイネーブル入力は、存在しない。ｏｕｔ（ＳＰＦ）におけるそれぞれの信号は、クロックの立ち上がりエッジによって更新され、ｏｕｔ（ＳＮＦ）におけるそれぞれの信号は、クロックの立ち下がりエッジによって更新される。ｏｕｔ（ＳＰＬ）におけるあらゆる信号は、クロックがＨレベルにあるときに更新され、その安定状態は、クロックがＨレベルからＬレベルへトランジションするときにラッチされる。ｏｕｔ（ＳＮＬ）におけるあらゆる信号は、クロックがＬレベルにあるときに更新され、その安定状態は、クロックがＬレベルからＨレベルへトランジションするときにラッチされる。以下で説明される変換方法は、理想的な状態保持エレメントの動作を仮定する。
【００２７】
ラッチとフリップフロップとを混合することは、結果がタイミングに依存するかもしれないことから、誤りを発生しやすいので、組み合わせ論理は、例えば、きわめて高速であると仮定するポリシーを採用し、これは、たとえＰＬＡＴＣＨの出力が組み合わせ論理を介して別のＰＬＡＴＣＨに接続されていても、この基本変換方法は、組み合わせ論理による遅延はレーススルー（ｒａｃｅ−ｔｈｒｏｕｇｈ）が発生するほど十分に小さいと仮定すること（８０６）を意味し、すなわち、信号値は、考察される同期論理関数の種類に依存して、１クロックサイクルまたは１／２クロックサイクル以内に論理エレメントを介して伝搬すると仮定することを意味する。“理想的”な組み合わせ論理遅延（すなわち、ほぼゼロ）を仮定するこのモデルは、良く知られており、同期回路の関数動作をシミュレー
ションするときに一般的に使用される。レーススルーが発生しない場合も網羅するようにアルゴリズムを拡張することはきわめて簡単なことであり、そのことも論議するつもりである。さらに、レーススルーサイクルは存在しないと仮定する。言い換えれば、あらゆるサイクルは、フリップフロップか、またはＰＬＡＴＣＨおよびＮＬＡＴＣＨの両方のうちいずれかを含むと仮定する。
【００２８】
組み合わせ論理の接続されたゲートを、実行される演算に対応する関数のグループに分ける（８０８）。状態保持エレメントへの入力信号ｓごとに、関数ｆｓ（ｘ）を有し、ここで、ｘは、ｓを決定する信号であり、ｆｓは、ｓを生成する組み合わせ論理に対応する関数である（ｆｓは恒等関数であってもよいことに注意されたい）。変数ｘは、状態保持エレメントの出力である。組み合わせ論理は、常に、演算“ｓ：＝ｆｓ（ｘ）”を実行しており、以下においては、この種の組み合わせ論理代入は変数をｘに代入した直後に実行されると仮定する。この実行は、論理の発火（ファイヤリング；ｆｉｒｉｎｇ）である。次に、計算がすべての状態保持エレメントの入力および出力を更新するときのその計算について説明する（８１０）。
【００２９】
クロックがＬレベルであるサイクルの開始時点において、クロックによってなされた最後のアクションは、ＨレベルからＬレベルへのトランジションであった。したがって、最初に発生することは、ＮＦＬＯＰのすべての出力が入力の現在値によって更新されることである。言い換えれば、それぞれのＮＦＬＯＰごとに代入“ｙ：＝ｙｉｎ”を実行し、ここで、ｙｉｎは、フロップへの入力であり、ｙは、フロップからの出力である。すべての従属する組み合わせ論理が、発火する。最後に、代入“ｙ：＝ｙｉｎ”が、すべてのＮＬＡＴＣＨに対して実行される。なぜなら、ラッチはオープンの状態にあるからである。再度、すべての従属する論理が、発火する。もう一方の１／２サイクルは、対称であり、ＰＦＬＯＰおよびＰＬＡＴＣＨを検査する。この一連の演算は、同期回路の演算を忠実に模倣するものである。
【００３０】
すべての状態保持エレメントの初期値は、同期回路のグローバルリセット信号がアサートされたときのその同期回路の状態によって指示される。初期値が、不特定なものであれば、任意の値を選択してもよい。念のために、あらゆる状態保持エレメントの出力に初期値を代入することによって計算を開始する。
【００３１】
上述した形態で書かれた計算の仕様が得られると、これを非同期データフローグラフに変換すること（ステップ８１２）は簡単なことであり、その非同期データフローグラフから、非同期回路ネットリストが、生成される（ステップ８１４）。例としての変換アルゴリズムは、静的トークン形式表現を使用し、そして、上述した計算からデータフローグラフを生成することである。これらのアルゴリズムは、この変換を実行するために開発された公開されている方法である。例えば、“Ｓｔａｔｉｃ  Ｔｏｋｅｎｓ：  Ｕｓｉｎｇ  Ｄａｔａｆｌｏｗ  ｔｏ  Ａｕｔｏｍａｔｅ  Ｃｏｎｃｕｒｒｅｎｔ  Ｐｉｐｅｌｉｎｅ
Ｓｙｎｔｈｅｓｉｓ，Ｔｅｉｆｅｌ，Ｊｏｈｎ  ａｎｄ  Ｍａｎｏｈａｒ，Ｒａｊｉｔ，Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｌａｂｏｒａｔｏｒｙ，Ｃｏｒｎｅｌｌ  Ｕｎｉｖｅｒｓｉｔｙ，Ｉｔｈａｃａ，ＮＹ  １４８５３”を参照されたい。
【００３２】
必要であれば、非同期データフローグラフは、その後、例えば、“Ａｕｔｏｍａｔｅｄ
Ｓｙｎｔｈｅｓｉｓ  ｆｏｒ  Ａｓｙｎｃｈｒｏｎｏｕｓ  ＦＰＧＡｓ、Ｐｅｎｇ，Ｓｏｎｇ，Ｆａｎｇ，Ｄａｖｉｄ，Ｔｅｉｆｅｌ，Ｊｏｈｎ，ａｎｄ  Ｍａｎｏｈａｒ，Ｒａｊｉｔ，Ｃｏｍｐｕｔｅｒ  Ｓｙｓｔｅｍｓ  Ｌａｂｏｒａｔｏｒｙ，Ｃｏｒｎｅｌｌ
Ｕｎｉｖｅｒｓｉｔｙ，Ｉｔｈａｃａ  ＮＹ  １４８５３”に簡単に説明される方法を用いて、ＦＰＧＡネットリストに変換されてもよい。
【００３３】
設計が、立ち上がりエッジトリガーフリップフロップおよび組み合わせ論理を含む特別な場合においては、この変換の結果は、以下のように簡単に説明することができる。（ｉ）あらゆる組み合わせ論理ゲートをデータフロー関数ブロックに置換し、ここで、その関数は論理ゲートの真理値表を実施する。（ｉｉ）あらゆるフリップフロップを、フリップフロップの初期値に対応する初期トークンに置換する。結果として得られる非同期データフローグラフは、同期回路の妥当な実装であり、これまでに簡単に説明された詳細な記述は、このグラフを提供する。
【００３４】
・  複数クロック領域変換
複数クロック領域の存在は、問題をそれほど複雑にするものではない。異なるクロック領域からの２つの状態保持エレメント間の接続点において問題が発生するだけである。クロックサイクルタイムはお互いの有理倍数（ｒａｔｉｏｎａｌ  ｍｕｌｔｉｐｌｅｓ）であると仮定する。実際にそうであれば、計算内に存在するすべてのサイクルタイムの最小公倍数に対応する反復周期を見つけ出すために、計算を静的に展開することができる。この時、状態保持エレメントをそれぞれのクロック領域から分離した状態に維持しなければならないことを除けば、上で簡単に説明したアルゴリズムと同じものを使用してもよい。計算におけるそれぞれの“ステップ”は、次のクロック信号における変化に対応する。しかるべきラッチ変数およびフロップ変数は、これまでに述べたように更新されるが、変化したクロック領域に対してだけである。
【００３５】
・  クロックゲーティングおよび暗黙のゲーティング
ゲーテッドクロック（ｇａｔｅｄ  ｃｌｏｃｋ）を備えた状態保持エレメントは、２つのやり方で変換されてもよい。すなわち、（ｉ）ＭＵＸ変換（ＰＦＬＯＰのための例が図４に示される）を使用し、それによって、ゲーテッドクロックを完全に除去することにより、ゲーティングを除去することによる方法。（ｉｉ）ＰＦＬＯＰの出力を条件付き信号にするために、ゲーティング情報を使用することによる方法。第１の選択肢は、その結果として、上述した方法を用いて変換されることの可能な回路を提供する。第２の選択肢は、次により詳細に説明される別法である。選択肢２において検査している合成が簡単なクロックゲーティングよりも汎用的であることを示すために、ＭＵＸ変換された回路によって開始する。
【００３６】
図４は、ＰＦＬＯＰのためのＭＵＸ変換を示す。元々のＰＦＬＯＰが、図４Ａに示され、そのデータ入力４０１およびクロックイネーブル４０３を備える。クロックイネーブルを備えない同一機能を実装するために、ＭＵＸ４０５が、提供される。ＰＦＬＯＰの元々の出力Ｑは、ＭＵＸの“０”入力に供給され、元々の入力４０２は、ＭＵＸの“１”入力に接続される。最後に、元々のクロックイネーブル信号ＣＥは、ＭＵＸの制御入力４０４に接続される。これは、元々のクロックゲーテッドフリップフロップと同じ計算を実装する。
【００３７】
ＭＵＸ４０５は、次の状況の特別な場合である。組み合わせ論理がいくつかの入力信号の値に依存しない場合が存在する。ＭＵＸ４０５の場合においては、ＣＥ信号４０４が、Ｌレベルであるとき、ＭＵＸの出力は、信号４０２に依存することはなく、同様に、ＣＥが、Ｈレベルであるとき、出力は、信号Ｑに依存しない。信号４０４は、制御述語（ｃｏｎｔｒｏｌ  ｐｒｅｄｉｃａｔｅ）と言われる。
【００３８】
制御述語は、以下のように条件付きブロックを生成するのに使用されてもよい。関数ｆ（ｃ；ｘ）によって記述される組み合わせ論理ブロックを考え、ここで、信号ｃは、制御述語であり、ｘは、組み合わせ論理の出力を計算するのに必要な信号の残りに対応するベクトルである。ｆに対するシャノン展開は、ｃｆ（１；ｘ）＋（〜ｃ）ｆ（０；ｘ）と書くことができ、ここで、〜ｃは、ｃの補集合であり、＋は、ＯＲを意味し、乗算は、ＡＮ
Ｄを意味する。組み合わせ論理の出力が、信号ｙであれば、基本変換方法は、“ｙ：＝ｆ（ｃ；ｘ）”の形式の代入を含む。これらは、以下の条件付き代入に置換することができる。
ＩＦ  ｃ  ＴＨＥＮ  ｙ：＝ｆ（１；ｘ）
ＥＬＳＥ  ｙ：＝ｆ（０；ｘ）  ＥＮＤＩＦ
ｃは、制御述語であるので、この文の中に存在するｆの２つのバージョンは、両方とも、ベクトルｘとして指示されるすべての入力を必要とするわけではないことに注意されたい。そのような文は、上で簡単に説明された静的トークン形式アルゴリズムを用いて変換される場合、結果として、データフロー変換中に生成された条件付きブロックを提供する。ベクトルの一部は、条件付きであるかもしれないが、信号ｃは、条件付きではないことに注意されたい。
【００３９】
この分野においてよく知られているように、シャノン展開は、恒等式、
Ｆ＝ｘ＊Ｆｘ＋ｘ’＊Ｆｘ’
によってブール関数を減少させることができるという概念を発展させたものである。
【００４０】
この処理は、さらに、ネスティングされてもよいが、常に、無条件の初期制御述語が、存在し、それに続いて、ネスティングされた一連の条件付き制御述語が、存在する。ネスティングされた制御述語の無条件バージョンは、最も外側のＩＦ文の外側に存在する条件付き述語のレプリカをただ単に生成することによって、容易に生成することができる。
【００４１】
上述した条件を備えた計算を与え、さらに、最適化が適用されてもよい。これらの最適化は、コンパイラー業界において、とりわけ、述語コンパイルするときおよびプログラムを逆ＩＦ変換するときに実行される作業において、知られている。元々の代入“ｙ：＝ｆ（ｃ；ｘ）”とＩＦ文を備えたバージョンのどちらかを実装することを選択する。両方を実装することは、妥当なことであり、また、どちらか一方を選択してもよい。
【００４２】
上述したすべての場合において、変換は、同期ネットリストからデータフローグラフへの直接変換（一対一のマッピング）を提供するので、変換は、可逆的なものであることに注意されたい。
【００４３】
・  同期信号への変換および同期信号からの変換
同期設計からデータフローへおよびデータフローから同期設計へ変換する方法およびシステムが、これまでに説明された。ここで、図９を参照して、データフローと同期設計との間の変換を実行するためのより詳細な処理について説明する。データフローグラフは、マークグラフ（ｍａｒｋｅｄ  ｇｒａｐｈ）およびイベントルールシステムを含めた様々な技術を用いて、タイミング解析を容易に施すことができる。両方の技術は、その結果として、計算のサイクル周期に対する解析表現を提供する。この周期は、計算が進行してもよい（および、計算が進行するはずである）最小サイクルタイムを決定する。データフロー設計から同期領域への信号の逆変換は、同期結果がデータフロー計算の速度よりも低い周波数で必要とされる場合にのみ発生することができる。
【００４４】
この分野において知られているように、マークグラフは、ペトリネット（Ｐｅｔｒｉ  ｎｅｔ）の特別な状態であり、あらゆるプレース（ｐｌａｃｅ）は、１つの入力アーク（ａｒｃ）および１つの出力アークを有し、そのために、競合は存在することはないが、同時並列性が存在することがある。ペトリネット自身は、プレース、トランジション、および、プレースとトランジションとの間に存在する有向アークからなるネットである。マークグラフが、計算時間を決定するために、非同期論理回路および／またはデータフローグラフを表現するのに使用されてもよい。イベントルールシステムは、イベントタイミングすなわち非同期回路タイミングを決定するために、ペトリネット解析に基づいた類似する確率論的技術を使用する。例えば、“Ｓｔｏｃｈａｓｔｉｃ  Ｃｙｃｌｅ  Ｐｅｒｉｏｄ  Ａｎａｌｙｓｉｓ  ｉｎ  Ｔｉｍｅｄ  Ｃｉｒｃｕｉｔｓ，Ｍｅｒｃｅｒ，Ｅｒｉｃ  Ｇ  ａｎｄ  Ｍｙｅｒｓ，Ｃｈｒｉｓ  Ｊ．，  Ｅｌｅｃｔｒｉｃａｌ  Ｅｎｇｉｎｅｅｒｉｎｇ  Ｄｅｐａｒｔｍｅｎｔ，Ｕｎｉｖｅｒｓｉｔｙ  ｏｆ  Ｕｔａｈ”を参照されたい。
【００４５】
データフロー値を同期値に変換するために、２つのアイテムが、必要とされる。すなわち、（ｉ）トークンが生成されるときの条件（条件トークンと呼ばれる）を指示するデータフロー述語。（ｉｉ）トークンが生成されるデータフローチャンネル（データトークン）（ステップ９０２）。これらのアイテムの両方は、上述した変換方法を介して保存される。同期出力を生成するのにこれらの２つのトークンを使用してもよい多くの方法が、存在する。
【００４６】
この分野において知られているように、条件トークンは、データ値がデータ入力によって生成されようとしているかどうかを指示するブール値を有するデータトークンである。同様に、データトークンは、計算によって生成された値であるが、条件付きでしか生成されない。そのために、例えば、条件トークン値が、０であれば、データトークンは、計算からは期待できない。しかしながら、条件トークン値が、１であれば、正しいデータ値を保持する計算から妥当なデータトークンを期待することができる。
【００４７】
条件トークンは、データが同期させられるクロック信号を超える平均周波数で生成されることがわかるはずである。しかしながら、パイプラインダイナミクスのために、条件トークンのタイミングにおける短期間変動が、存在するかもしれない。これらの変動を考慮に入れるために、条件トークンを保持するｋ−プレースＦＩＦＯ（ｋ−ｐｌａｃｅ  ＦＩＦＯ）を含み、かつ、データトークンを保持する別のＦＩＦＯを含む（９０４）。ｋの値は、データフローグラフのダイナミクスの解析によって決定される。ＦＩＦＯを使用することは、周波数における変動を除去する。
【００４８】
条件付きデータを無条件データに変換するために（１クロックエッジあたり１データアイテムに対応する）、データの初期値を知らなければならない。この値は、計算の初期状態によって容易に決定される（ステップ９０６）。最後に、あらゆるクロックエッジにおける出力信号の値に一致する無条件データトークンを生成するために、非対称ＭＥＲＧＥエレメントを使用する（ステップ９０８）。図５は、同期設計を記述する無条件データトークンを生成するために、非同期設計からの変換を実行するのに必要な回路を説明する図である。
【００４９】
図５を参照すると、データＦＩＦＯの出力は、非同期データフローデータ信号５０１であり、このデータ信号５０１は、非対称ＭＵＸ５０４の“１”で標識された入力に接続される。条件ＦＩＦＯの出力は、データフロー信号５０２である。データの初期値は、初期トークン５０３に記憶される。非対称ＭＵＸ５０４の出力は、逆戻りして、それの非対称入力５０５に接続される。非対称ＭＵＸは、以下のように動作する。すなわち、非対称ＭＵＸは、常に、条件入力５０２および非対称データ入力５０５においてトークンを受信する。条件トークンが、“１”であれば、ＭＵＸは、データ入力５０１において別のトークンを受信し、そして、その値をＭＵＸの出力に提供し、条件トークンが、“１”でなければ、ＭＵＸは、自身がその非対称入力５０５において受信した値をその出力に送信する。これは、条件付きデータトークンストリームを無条件トークンストリームに変換し、その
無条件トークンストリームは、ＣＬＫ−ＷＡＩＴブロック５０６に送信される。クロック５０７の立ち上がりエッジまたは立ち下がりエッジの直後に出力が生成されるかどうかに依存して、ＣＬＫ−ＷＡＩＴブロックは、しかるべきクロックエッジが到達するのを待ち、そして、ＣＬＫ−ＷＡＩＴブロックの入力において受信されたデータフロートークン値と同じ値を有する単一データ信号出力５０８を提供する。これは、データフロートークンをクロックエッジに効果的に整列させる。クロック入力の主たる機能は、ただ単に、出力信号の生成を遅延させ、同期出力領域において、１クロックサイクルあたりの複数信号変化を防止することである。最初のトークンがＣＬＫ−ＷＡＩＴブロックへの入力に到達していることを保証するために、クロック５０７を所定の数のサイクルだけ遅延させなくてはならないかもしれないこと（初期化に関して）に注意されたい。遅延量の上限は、決定論的なものであり、データフローグラフから決定されてもよい。最後に、出力信号が、特定のクロックエッジから所定のオフセットだけずれて生成されなければならない場合、遅延ロックループ（または、何らかのその他の遅延メカニズム）が、しかるべく遅延したバージョンのクロックを生成するのに使用されてもよく、そのクロックは、５０７に接続されるべきクロックの遅延したバージョンである。
【００５０】
非対称ＭＵＸ５０４の設計における異なるいくつかの変形が、存在する。例えば、フィードバックを備えてはいないが局所的状態保持エレメントを備えている同じブロックを実装してもよく、その局所的状態保持エレメントは、出力に提供された最後の値を保持する。このレジスタは、データ信号の初期値によって初期化される。制御入力が、“０”であれば、レジスタの値は、出力に提供され、制御入力が、“１”であれば、レジスタの値は、入力５０１において受信されたデータによって上書きされ、この新しい値が、出力に送信される。
【００５１】
回路への一次入力が、同期して提供される場合、逆処理が必要とされる。さらに、図６を参照すると、データ信号とそのクロックとが、ともに、データトークン出力を提供するのに使用される。このトークンは、上の説明と同じようにして、指示されたクロックから所定のオフセットだけずれて（再度）生成される（すなわち、遅延ロックループまたはその他の技術を用いて、遅延したバージョンのクロックエッジを提供することによる）。回路は、一次入力からトークンを受信するデータフローグラフがその出力におけるトークンが決して阻止されることがないほど十分に高速に動作すると仮定する。このことは、入力が非同期データフロー計算の周波数よりも低い速度で到達する場合にも言えるものとする。この構造は、１クロックエッジあたり１データトークンをデータフローグラフに送り込む。
【００５２】
クロックからトークンへの変換６０３、非対称ＭＵＸ５０４、および、ＣＬＫ−ＷＡＩＴブロック５０６のための具体的な回路実装は、データフロートークンの表現の特定の細部に依存する。
【００５３】
読者は、これまでに説明された変換の原理を実現するのに使用することのできる多くの技術が存在することを理解できるはずである。これらの技術は、同期計算をデータフロー実装に変換するのに使用されてもよいプログラム変換および／または書き換えシステム、および、グラフ型表現のプログラムを使用し、また最適化およびグラフ再構成のためにコンパイラー解析を使用するコンパイラーアプローチを含むが、これらに限定されない。
【００５４】
データフローグラフは、この分野においてよく知られている様々な技術を用いて実装されてもよい。これらの技術の例には、それぞれのデータアイテムに取り付けられたフロー制御のための有効なビットによって高度にパイプライン化（ｄｅｅｐｌｙ  ｐｉｐｅｌｉｎｅｄ）された、非同期論理および同期回路が含まれる。また、回路およびデータトークン表現の細部は、変更されてもよく、それによって、面積、性能、および、消費電力間に
おける様々なトレードオフが提供されてもよい。また、回路技術の混合が使用されてもよく、グラフの様々な部分は、インタフェースをとるための表現変換器を提供することによって、異なる回路技術によって実装される。そのような技術もまた、この分野においてよく知られている。
【００５５】
本発明は、同期回路表現を非同期回路表現に変換するための新しい改善された方法およびシステムを提供した。同期回路設計の表現から非同期回路設計の表現への、および、非同期回路設計の表現から同期回路設計の表現への、最適化され、自動化され、そして、非対話型である変換を提供することによって、本発明は、従来の電子設計自動化（ＥＤＡ）ツールが非同期設計を処理および操作するのを可能にし、それと同時に、非同期ハードウェアソリューションを用いて、同期設計を実装するのを可能にする。また、本発明は、技術者による設計処理の最適化および反復のために、同期表現における同期設計ツールへのフィードバックを助け、技術者が、基礎をなすハードウェア実装の基礎をなす非同期アーキテクチャーを意識する必要性を除去する。
【００５６】
本発明が、特定の実施形態に関して、図示および説明されたが、図示および説明されたものに限定されない。ここで、読者は、本発明の範囲内において、多くの変形、変更、および、改良を考えることができるはずである。
【図面の簡単な説明】
【００５７】
本発明のこれらのおよびその他の目的、特徴、および、利点が、添付の図面を参照して以下の発明の詳細な説明を考察することによって明らかとなるはずである。
【図１】本発明による処理を説明するフローチャートである。
【図２】回路エレメントを示す図であり、そのエレメントの機能は、以下で説明される。
【図３Ａ】回路を示す図であり、これらの回路の機能は、以下で説明される。
【図３Ｂ】回路を示す図であり、これらの回路の機能は、以下で説明される。
【図４Ａ】回路エレメントを示す図であり、その回路エレメントの機能は、以下で説明される。
【図４Ｂ】回路内に組み込まれた図４Ａに示される回路エレメントを示す図であり、その回路エレメントの機能は、以下で説明される。
【図５】回路を示す図であり、その回路の機能は、以下で説明される。
【図６】回路ブロック図であり、その回路の機能は、以下で説明される。
【図７】同期回路設計の表現と非同期回路設計の表現との間の変換を実行するための処理の概要を示すフローチャートである。
【図８】非同期ネットリストを非同期データフローグラフに変換するための処理のフローチャートである。
【図９】非同期設計表現を同期設計表現へ変換するための処理のフローチャートである。
【図１】
2009535718.tif 000003
【図２】
2009535718.tif 000004
【図４Ａ】
2009535718.tif 000005
【図４Ｂ】
2009535718.tif 000006
【図６】
2009535718.tif 000007
【図７】
2009535718.tif 000008
【図８】
2009535718.tif 000009
【図９】
2009535718.tif 000010
【図３Ａ】
2009535718.tif 000011
【図３Ｂ】
2009535718.tif 000012
【図５】
2009535718.tif 000013
【国際調査報告】
2009535718.tif 000014