(57)【特許請求の範囲】
【請求項１】
フィールドプログラマブルゲートアレイ（ＦＰＧＡ）の形態特定方法において、前記ＦＰＧＡは形態特定のためにホストプロセサへ接続されており、本方法が、
（ａ）ハイレベルプログラミング言語における命令で前記ホストプロセサをプログラミングし、
（ｂ）前記ハイレベルプログラミング言語と適合性を有する複数個の要素からなるライブラリから要素をインスタンス化し、該要素は前記ＦＰＧＡに対する論理及び経路付けを特定し、
（ｃ）プログラミングした命令及びインスタンス化したライブラリ要素に応答して実行可能なコードを発生させるために前記ホストプロセサへハイレベルプログラミング言語用のコンパイラを供給し、
（ｄ）前記実行可能なコードの実行に応答して前記ホストプロセサから前記ＦＰＧＡを形態特定させる、
上記各ステップを有している方法。
【請求項２】
請求項１において、前記ＦＰＧＡが動的再形態特定可能演算のために使用される方法。
【請求項３】
請求項１又は２において、前記ハイレベル言語がジャバである方法。
【請求項４】
請求項１又は２において、前記ライブラリが組合せ論理要素を有している方法。
【請求項５】
請求項１又は２において、前記ライブラリがフリップフロップ要素を有している方法。
【請求項６】
請求項１又は２において、前記ライブラリがラッチ要素を有している方法。
【請求項７】
請求項１又は２において、更に、
（ｅ）パラメータ化したオブジェクトを発生するために前記ライブラリ要素を使用する、
ステップを有している方法。
【請求項８】
請求項７において、前記オブジェクトがカウンタ内のビット数によってパラメータ化されているカウンタである方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、大略、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）の分野に関するものであって、更に詳細には、ホストプロセサ及びハイレベル言語コンパイラを使用してＦＰＧＡをコンフィギュア即ち形態特定する方法に関するものである。
【０００２】
【従来の技術】
最近において、リコンフィギャラブル（ｒｅｃｏｎｆｉｇｕｒａｂｌｅ）即ち再形態特定可能論理を基礎とした処理に対する興味が増加している。これらのシステムは、使用中に再形態特定することが可能な例えばＦＰＧＡ等の動的に再形態特定可能な論理を使用してハードウエアにおいて直接的にアルゴリズムを実現し、従って性能を向上させる。
【０００３】
一回のカウントにより、演算に対するこの新規なアプローチを調べるために少なくとも５０個の異なるハードウエアプラットフォーム（例えば、コンピュータ）が構築されている。然しながら、この分野においてソフトウエアはハードウエアに遅れをとっている。今日、殆どのシステムは従来の回路設計技術を使用しており、次いでこれらの回路をスタンダードのプログラミング言語を使用してホストコンピュータへインターフェースさせる。
【０００４】
再形態特定可能な論理を基礎とした演算に対するハイレベル言語サポートにおいて成された業績は、現在、２つの主要なアプローチに分類される。第一のアプローチは、ハードウエア記述言語の代わりに従来のプログラミング言語を使用することである。このアプローチはホストプロセサに関するソフトウエアサポートを必要とする。第二の主要なアプローチは再形態特定可能論理コプロセサに対するスタンダードのプログラミング言語のコンパイル化である。これらのアプローチは、典型的に、計算上集約的なコードの部分を検知し且つそれらをコプロセサに対してマッピングするものである。然しながら、これらのコンパイルツールは、通常、従来の配置及び経路付けバックエンドに結び付けられており且つ比較的遅いコンパイル時間を有している。それらは、又、ダイナミックリコンフィギュレーション（ｄｙｎａｍｉｃ  ｒｅｃｏｎｆｉｇｕｒａｔｉｏｎ）即ち動的再形態特定に対するランタイムサポートを殆ど又は全く提供するものではない。
【０００５】
一般的に、今日のツールは元々回路基板及び集積回路設計において使用するために開発された静的回路設計ツールに基づいている。動的論理の完全なる潜在力はこのような静的設計ツールによってサポートされていない。
【０００６】
【発明の要約】
本発明の再形態特定可能演算用設計方法（ＭＤＲＣ）は再形態特定可能論理を基礎としたコプロセサ用のハードウエア／ソフトウエアコデザインに対する新規なアプローチを提供している。ホストプロセサから直接的にＦＰＧＡを形態特定するためのシステム及び方法が提供される。コンフィギュレーション（形態特定）データをファイル内に格納することは必要ではないが、所望である場合には格納することが可能である。従って、本方法は、しばしば「オンザフライ」、即ちＦＰＧＡに再度電力を供給することなしにしばしば再形態特定され且つ時々ＦＰＧＡの一部のみを再形態特定する例えば再形態特定可能コプロセサ等のＦＰＧＡに使用するのに特に適している。ＦＰＧＡに対する所望の機能性の記述が、ＭＤＲＣライブラリ及び例えばジャバ（Ｊａｖａ）（Ｊａｖａはサンマイクロシステムズ、インコーポレイテッドの商標）等のスタンダードのハイレベル言語を使用してエンターされる。再形態特定可能コプロセサ用の形態特定、再形態特定、ホストインターフェースソフトウエアが単一のコードでサポートされている。
【０００７】
ＭＤＲＣは回路統合のために従来の配置及び経路付けアプローチを使用するものではないので、コンパイル時間は従来の方法と比較して著しく短く、数秒の程度である。この高速コンパイルは最近のソフトウエア開発のために使用されるものに極めて近い開発環境を提供する。
【０００８】
本ＭＤＲＣは従来のコンピュータ補助設計（ＣＡＤ）ツールをベースとした設計に対する簡単な代替物を提供している。好適実施例においては、ジャバライブラリを使用してＦＰＧＡ装置をプログラムする。この方法は以下の利点を有している。
【０００９】
非常に高速のコンパイル時間
スタンダードのプログラミング言語コンパイラがこのアプローチによって使用されるので、コンパイルはホストのネイティブのコンパイラと同じ程度に高速である。例えば毎秒１０，０００を超えるラインのコードをコンパイルするマイクロソフト社のＪ＋＋１．１コンパイラ等の現在のジャバコンパイラの場合には、ＭＤＲＣを使用して構築された回路のコンパイルは１秒程度で完了する。これは既存のＣＡＤツールにおいてのターンアラウンドタイムが数時間であるのと対比される。
【００１０】
回路のランタイムパラメータ化
多分、ＭＤＲＣの最も興味のある特徴は回路のランタイムパラメータ化を行うための能力である。例えば、ランタイムにおいてのみ既知である定数値を使用する定数加算器は実行期間中にＭＤＲＣによって形態特定することが可能である。与えられたコンポーネントの寸法も動的に特定することが可能である。例えば、５ビット加算器又は９ビットカウンタは、ランタイムで形態特定することが可能である。この特徴は例えば適応フィルタ等の分野において用途を有している。
【００１１】
オブジェクト指向型ハードウエア設計
ジャバはオブジェクト指向型言語（即ち、要素がオブジェクト及びオブジェクトの間の接続で記述される構造型言語）であるので、この言語で設計されたハードウエアはオブジェクト指向型サポートを利用することが可能である。ＭＤＲＣで構成されたライブラリは、オブジェクトとしてパッケージ化し且つスタンダードのソフトウエアコンポーネントのように取扱い且つ再使用することが可能である。
【００１２】
動的再形態特定用サポート
回路を動的に形態特定する能力は、それと共に、自動的に動的再形態特定を行う能力をもたらす。この能力に対する用途が表れ始めている。例えば、動的に再形態特定可能なＦＰＧＡの一部を、定数が信号処理アプリケーションにおけるスケーリングファクタ即ち倍率である定数によって入力値を乗算する乗算器として形態特定することが可能である。動的再形態特定を使用して、このスケーリングファクタは形態特定したＦＰＧＡの他の部分の機能を中断させることなしに、変更することが可能である。
【００１３】
スタンダードのソフトウエア開発環境
スタンダードのプログラミング言語（この場合は、ジャバ）を使用することは、回路開発者によってスタンダードのソフトウエア環境を使用することを可能とさせる。換言すると、例えばマイクロソフト社のＪ＋＋１．１コンパイラ等の広く入手可能な既製品のコンパイラを使用してＦＰＧＡにおいて実現すべき回路を開発することが可能である。この能力は２つの直接的な利点をもたらす。第一に、ユーザは既に精通しているツールを継続して使用することが可能である。第二に、多分最も重要なことであるが、ＦＰＧＡ設計はプログラマに対して開放されたソフトウエア開発努力となる。この能力はＦＰＧＡユーザの既存のベースを著しく拡張することを可能とする。
【００１４】
簡単化されたホストインターフェース
ＭＤＲＣはジャバコードを実行し且つコンフィギュレーション（形態特定）データをＦＰＧＡへ供給するためにホストプロセサが使用可能であることを必要とする。このプロセサ／ＰＦＧＡの組合せは現在研究者によって調査中の強力なコプロセス即ち共同処理環境である。これらのシステムを使用することに対する１つの障壁はＦＰＧＡハードウエアデザインをホストソフトウエアデザインとインターフェースさせることの必要性である。ＭＤＲＣはソフトウエア及びハードウエアのデザイン即ち設計活動を単一の活動へ合体させ、これらのインターフェース問題を取除いている。
【００１５】
柔軟性
ＭＤＲＣはスタンダードのプログラミング言語によって使用されるライブラリを有しているので、ユーザによっても拡張させることが可能である。この能力は静的デザイン（設計）ツールにおいては使用不可能なレベルの柔軟性を提供している。ユーザは新たなライブラリ及びライブラリ要素を自由に提供し、又は例えばカスタムグラフィカルインターフェース等のアクセサリも供給することが自由である。
【００１６】
スタンダード装置インターフェース
ＭＤＲＣのことを考える１つの方法は、それ程ツールそれ自身としてのものではなく、ＦＰＧＡ装置に対するスタンダードのインターフェースとしてのものである。このインターフェースはＦＰＧＡの形態特定のために使用することが可能であるか、又は他のツールを構築するために使用することが可能である。ＭＤＲＣは例えば配置及び経路付けツール等の従来のＣＡＤソフトウエア用の基礎として使用することも可能である。ＭＤＲＣのことを考える別の方法は、ＦＰＧＡの「アッセンブリ言語」としてである。
【００１７】
保証された「安全な」回路
ＭＤＲＣは競合問題を有する回路を発生させることを不可能とする抽象化（ハードウエアのしばしば簡単化された表示を与えるソフトウエア構成体）を提供する。このことは、ＭＤＲＣを使用する場合には、不良なコンフィギュレーション即ち形態特定のために偶然に装置に損傷を発生させるか又は破壊することを不可能なものとしている。このような保護はＭＤＲＣのような動的プログラミング環境において高度に望ましいものであり、その場合に、プログラミングエラーは、そうでなければ、永久的に損傷を発生したハードウエアを発生させることとなる（不正確に形態特定したＦＰＧＡは不本意に電力と接地とを互いに短絡させ、装置を破壊させる場合がある）。この特徴の副次的効果は、ＭＤＲＣはジェネテイックアルゴリズム即ち遺伝的アルゴリズムの流行りつつある分野に対する実現媒体として使用することが可能であるということである。
【００１８】
【発明の実施の態様】
再形態特定可能論理コプロセサを使用してＦＰＧＡにおいて実現される回路のデザイン即ち設計は、現在、図１の従来技術に示したように、２つの別々の設計経路の組合せを必要とする。第一の、且つ、多分、最も顕著な努力の部分は、従来のＣＡＤツールを使用する回路設計の部分である。これらのＣＡＤツール用の設計経路は、典型的に、回路エディター又はハードウエア記述言語（ＨＤＬ）を使用してデザインにエンターし１０１、ネットリスター１０２を使用して該設計に対するネットリスト１０３を発生し、このネットリストをＦＰＧＡ配置及び経路付けツール１０４内にインポートし、該ツールが最終的にＦＰＧＡ１０６の形態特定のために使用される形態特定データのビットストリームファイル１０５を発生させることを包含している。
【００１９】
コンフィギュレーションデータ即ち形態特定データが発生されると、次の作業はホストプロセサをＦＰＧＡへインターフェースさせるためのソフトウエアを供給することである。ユーザは、ユーザインターフェース命令を記述するユーザコード１０７をエンターし、それは、次いで、コンパイラ１０８を使用してコンパイルされて実行可能なコード１０９を発生する。実行可能なコード１０９における命令は、次いで、プロセサによって使用されて形態特定されたＦＰＧＡ１０６と通信を行う。ＦＰＧＡ１０６のコンフィギュレーション即ち形態特定をビットストリームファイル１０５で制御するために実行可能なコード１０９を使用することも公知である。この一連のタスクは、通常、回路を設計するタスクから完全に切り離されており、従って困難性があり且つエラーを発生する可能性がある。
【００２０】
この環境におけるハードウエアとソフトウエアとをインターフェースさせる問題に加えて、設計サイクル時間の問題もある。回路設計に対する何等かの変更はハードウエア設計ツール遅延（図１における１０１−１０６）を介しての完全なパスを必要とする。この処理は時間がかかり、遅延の配置及び経路付け部分は、典型的に、完了するのに数時間かかる。
【００２１】
最後に、このアプローチはリコンフィギュレーション即ち再形態特定に対するサポートを与えるものではない。従来のハードウエア設計ツールはほぼ専用的に静的設計に対するサポートを提供する。スキマティック（回路）又はＨＤＬ設計エントリに基づく環境においてランタイムの再形態特定に対するサポートをするための構成を創造することは困難である。
【００２２】
対照的に、ＭＤＲＣ環境は複数個の要素からなるライブラリを有しており、それは論理及び経路付けを再形態特定可能な論理装置において特定し且つ形態特定することを可能とさせる。これらのライブラリ要素に対するコールを行うことによって、回路が形態特定され且つ再度形態特定することが可能である。更に、ホストコードを書込んで再形態特定可能なハードウエアと相互作用させることが可能である。このことは全ての設計データが単一のシステム内に存在すること、しばしば単一のジャバソースコードファイル内に存在することを可能とする。
【００２３】
図２に示したように、設計の流れを著しく簡単化させることに加えて、ＭＤＲＣアプローチは、又、ハードウエアとソフトウエアの設計プロセスを緊密に結合させている。再形態特定可能なハードウエア及びホストソフトウエアの両方に対する設計パラメータは共有されている。この結合は論理回路をソフトウエアとインターフェースさせるタスクに対し良好なサポートを提供している。
【００２４】
図２に示したように、ＭＤＲＣ方法を使用してＦＰＧＡ回路をエンターし且つコンパイルすることは、図１の従来の方法におけるよりも著しく少ない数のステップを必要とするに過ぎない。ユーザコード２０１、この実施例においてはジャバコードがエンターされる。このコードはユーザインターフェース及びコンフィギュレーション（形態特定）プロセスを記述する命令のみならず、所望のＦＰＧＡ回路のハイレベル記述も包含している。この回路記述はＭＤＲＣライブラリ２０２におけるライブラリ要素に対するコール（ファンクションコール）を有している。１実施例においては、これらのコールはパラメータ化させることが可能である。ジャバコンパイル２０３はＭＤＲＣライブラリ２０２からの回路記述をユーザコード２０１からの命令と結合させて実行可能なコード２０４を発生させる。実行可能なコード２０４は、図１の実行可能なコード１０９におけるようにユーザインターフェース命令のみならず、コンフィギュレーション（形態特定）命令を包含している。ＭＤＲＣを使用する場合には、ビットストリームはファイルとして格納することは必要ではなく、所望により、コンフィギュレーション（形態特定）データは実行可能なコード２０４によって直接的にＦＰＧＡ１０６へダウンロードさせることが可能である。この技術は再形態特定可能な演算、即ち、マイクロプロセサに対する一連の異なる演算を実施するためのコプロセサとして再形態特定可能なＦＰＧＡを使用する場合に特に有用である。
【００２５】
ＭＤＲＣ抽象化
ＭＤＲＣは再形態特定可能論理を表現するためにレイヤー構造アプローチをとっている。最も低い（最も詳細な）レイヤーにおいては、レベル０と呼ばれるものであり、ＭＤＲＣは再形態特定可能論理における全てのアクセス可能なハードウエア資源をサポートしている。定数及びその他の記号データの集約的な使用が、必然的に低いレベルの抽象化にも拘わらず、レベル０を使用可能なものとさせる。
【００２６】
ＭＤＲＣ環境に対する現在のプラットフォームは本発明の譲受人であるザイリンクス、インコーポレイテッドによって製造されているＸＣ６２００ＤＳ開発システムである。ＸＣ６２００ＤＳ開発システムはザイリンクスＸＣ６２１６ＦＰＧＡを包含するＰＣＩボードを有している。ＸＣ６２００ファミリィのＦＰＧＡにおいては、レベル０サポートは再形態特定可能論理セル及びクロック経路付けを包含する全ての経路付けスイッチに対するアブストラクション即ち抽象化を有している。レベル０に対するコードは、基本的に、ジャバにコード化されたＸＣ６２００データシートにおけるビットレベル情報である（本明細書において参照する「ＸＣ６２００データシート」は、カリフォルニア州９５１２４、サンノゼ、２１００ロジックドライブ、ザイリンクス、インコーポレイテッドから入手可能な１９９６年９月に出版された「プログラム可能論理データブック（Ｔｈｅ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄａｔａ  Ｂｏｏｋ）」という題名のザイリンクス１９９６データブックの４−２５１乃至４−２８６頁を有している）。（その著作権の所有者であるザイリンクス、インコーポレイテッドは、本明細書において参照するこれら及びその他の頁をコピーすることに異議を唱えるものではないが、その他の点において、いかなる全ての著作権も保留する。）
レベル０は装置の全ての側面を形態特定するための完全なるサポートを提供するが、それは非常に低いレベルであり且つ退屈する場合があり且つ殆どのユーザにとってアーキテクチャのかなり特別な知識を必要とする場合がある。このレイヤーは常にプログラマに対して使用可能なものであるが、レベル０サポートは主により高いレイヤーの抽象化に対する基礎として機能する。この意味において、レベル０はＭＤＲＣシステムの「アッセンブリ言語」である。
【００２７】
レベル０抽象化の上にレベル１抽象化がある。このレベルの抽象化は、論理定義、クロック及びクリア経路付け、及びホストインターフェースに対するより簡単なアクセスを可能とさせる。
【００２８】
レベル１抽象化の最も顕著な部分は論理セル定義である。論理セル定義を使用して、ＸＣ６２００装置における１つの論理セルはスタンダードの論理演算子として形態特定することが可能である。１実施例においては、ＡＮＤ,ＮＡＮＤ,ＯＲ,ＮＯＲ,ＸＯＲ,ＸＮＯＲ、バッファ及びインバータ組合せ論理要素がサポートされる。これらの要素はオプションとして登録した出力をとることが可能である。更に、Ｄフリップフロップ及びレジスタ論理セルが定義される。１実施例においては、フリップフロップ要素の代わりに又はそれに加えてラッチセルが定義される。これら論理演算子の全ては専らＭＤＲＣレベル０演算を使用して定義され、従って容易に拡張される。
【００２９】
図３はレベル１論理セル抽象化の模式図である。出力Ｎｏｕｔ，Ｅｏｕｔ，Ｓｏｕｔ，ＷｏｕｔはＸＣ６２００データシートの４−２５６頁上に示されるように、ＸＣ６２００論理セルにおけるものと同一の名称の出力に対応している。ＸＣ６２００論理セルも図３Ａに示してある。図３の入力Ｓｉｎは図３Ａの論理セルの入力Ｓに対応しており、入力Ｗｉｎは入力Ｗに対応しており、ＮｉｎはＮに対応しており、且つＥｉｎはＥに対応している。図３に示したレベル１抽象化はＸＣ６２００論理ブロックの簡単化した表現である。この実施例においては、例えば、入力Ｓ４，Ｗ４，Ｎ４，Ｅ４はレベル１抽象化においてサポートされていないが、それらはレベル０抽象化においてサポートされている。図３に示した論理ブロック及びフリップフロップは１個のＸＣ６２００論理セルにおいて使用可能な回路を意味している。図３における入力Ａ,Ｂ,ＳＥＬ（図３Ａの入力Ｘ１,Ｘ２，Ｘ３に対応している）は論理ブロックへの入力であり、それらは論理セル入力Ｓｉｎ,Ｗｉｎ,Ｎｉｎ,Ｅｉｎのいずれかへマッピングすることが可能である。１個の論理セルにおいて使用可能な回路は他のＦＰＧＡ装置において異なっている。
【００３０】
論理セル抽象化に加えて、クロック経路付けが抽象化されている。種々のグローバル及びローカルなクロック信号（例えば、図３におけるＣｌｋ及びＣｌｒ）を定義し且つ与えられた分離セルと関連付けることが可能である。
【００３１】
ＭＤＲＣレベル１抽象化の第三部分はレジスタインターフェースである。ＸＣ６２００装置において、複数個のセルからなる列はバスインターフェースを介して読取られるか又は書込むことが可能であり、従って複数個のセルからなる列は読取／書込レジスタを形成している。そのレジスタインターフェースはレジスタを記号によって構成し且つアクセスすることを可能とする。
【００３２】
１例
図４はレベル１抽象化を使用してトグルフリップフロップ４０２及びキャリィ論理４０１に基づいてＸＣ６２００装置に対して設計した簡単なカウンタを示している。３０行未満のコードでこの回路を記述し且つ形態特定し、且つそのカウンタ値のクロック動作及び読取動作が実施される。更に、この回路の構成はパラメータ化したオブジェクトとして容易にパッケージさせることを可能とさせ、カウンタ内のビット数はユーザが定義したプラメータを介して設定される。このようなオブジェクトに基づいたアプローチは、任意の寸法のカウンタを特定し且つＸＣ６２００装置内の任意の位置に配置させることを可能とさせる。実現されると、図４のカウンタはパラメータ化したマクロセルのライブラリ内に配置させることも可能である。
【００３３】
その実現プロセスはかなり簡単である。最初に、その回路によって必要とされる論理要素が定義される。これらの回路要素定義は抽象化であり且つ何等特定のハードウエア具体例と関連するものではない。
【００３４】
これらの論理要素が定義されると、それらはハードウエアへ書込み、回路を形態特定することが可能である。回路が形態特定されると、通常レジスタの読取及び書込及び回路のクロック動作の形態における回路のランタイムインターフェース処理が実施される。アプリケーションがそのことを要求する場合には、その処理を繰返し行い、ハードウエアを必要に応じて再形態特定することが可能である。
【００３５】
このカウンタ例は９個の基本的な要素を包含している。５個の基本的な要素がハードウエアの読取、書込、クロック動作及びクリアを行うのに全て必要なサポート回路を提供する。残りの基本的な要素はカウンタ回路自身を定義するために使用される。これらの要素は図４と関連して図５を見ることによって最も良く理解される。図５は基本的な要素を記述するためのＭＤＲＣコードを与えている。２つのレジスタ定義の各々に対してパスされるｐｃｉ６２００オブジェクトはＸＣ６２００ＤＳ  ＰＣＩボードのハードウエアインターフェースである。
【００３６】
そのサポート回路は２つのレジスタを包含しており、それらは単に該回路をホストソフトウエアに対してインターフェースさせる。これら２つのレジスタはカウンタの値を読取るため（図５における「Ｒｅｇｉｓｔｅｒ  ｃｏｕｎｔｅｒＲｅｇ」）及び単一のフリップフロップ４０４をトグル動作させローカルクロックを発生させる（図５における「Ｒｅｇｉｓｔｅｒ  ｃｌｏｃｋＲｅｇ」）に使用される。ＸＣ６２００装置におけるフリップフロップをサポートするために、クロック及びクリア（リセット）入力も定義されねばならない。グローバルクロック（図５における「ＣｌｏｃｋＭｕｘ  ｇｌｏｂａｌＣｌｏｃｋ」）はその装置に対するシステムクロックであり且ついずれかの書込可能なレジスタに対するクロック入力として使用されねばならない。この回路においてはソフトウエア制御されるローカルクロックを提供するフリップフロップはグローバルクロックを使用せねばならない。ローカルクロック（図５における「ＣｌｏｃｋＭｕｘ  ｌｏｃａｌＣｌｏｃｋ」）はソフトウエア制御されたクロックの出力であり、且つカウンタを構成しているトグルフリップフロップへ経路付けされねばならない。最後に、ＸＣ６２００装置における全てのフリップフロップはクリア入力（図５における「ＣｌｅａｒＭｕｘ  ｃｌｅａｒ」）を必要とする。この実施例においては、全てのフリップフロップへのクリア入力は単に論理０（ＧＮＤ）に設定される。
【００３７】
カウンタ回路における第一論理要素はクロック（図５における「Ｌｏｇｉｃ  ｃｌｏｃｋ」）である。この要素は単に単一ビットレジスタ４０４（図４）であり、それはソフトウエアによって書込可能である。ソフトウエア制御を介してレジスタ４０４をトグル動作させるとカウンタ回路に対するクロックＬｏｃａｌ ｃｌｏｃｋを発生する。次のカウンタ回路要素は例えばフリップフロップ４０２等のトグルフリップフロップである（図５における「Ｌｏｇｉｃ  ｔｆｆ」）。このフリップフロップは西側から来る入力を有するものとして定義される（スタンダードのＸＣ６２００データシート表記法に従えば、Ｌｏｇｉｃ．ＥＡＳＴ及びＥｉｎなる名称は、東側に向う信号、即ち西側から来る信号のことを示す）。トグルフリップフロップ要素はカウンタに対する状態の格納を提供する。次に、カウンタに対するキャリィ論理要素４０１（図５における「Ｌｏｇｉｃ  ｃａｒｒｙ」）は前段のキャリィ論理からの入力及び現在の段のトグルフリップフロップの出力を具備するＡＮＤゲートである。該キャリィ要素はカウンタの次の段に対する「トグル」信号を発生する。図６Ａ及び６ＢはＸＣ６２００装置における、夫々、フリップフロップ及びキャリィ論理セルのグラフィック表示である。最後に、論理「１」即ちＶＣＣセル（図５における「Ｌｏｇｉｃ  ｏｎｅ」、図４におけるブロック４０３）はカウンタの第一段へのキャリィ入力に対して実現される。
【００３８】
この抽象要素の集まりが定義されると、それらはＸＣ６２００セルアレイ内の任意の箇所においてインスタンス化即ち例示化させることが可能である。このインスタンス化は各オブジェクトと関連する書込（）関数に対するコールを行うことによって達成される。この関数は形態特定されるべきＸＣ６２００装置内のセルを定義する列及び行パラメータをとる。更に、ハードウエアインターフェースオブジェクトはパラメータとしてパスされる。この場合においては、全てのコンフィギュレーション即ち形態特定はｐｃｉ６２００、即ち単一のＸＣ６２００ＤＳ  ＰＣＩボードに対して行われる。
【００３９】
このインスタンス化の１例を図７に示してあり、それは図４のカウンタに対するエレメントをインスタンス化させる。図７におけるコードは全ての必要なコンフィギュレーション即ち形態特定を実施する。ｆｏｒ（）ループにおいて、キャリィセル（図４における４０１）が１つの列内にあり、トグルフリップフロップｔｆｆ（図４における４０２）が次の列内にある。ローカルクロック及びクリアは各トグルフリップフロップｔｆｆに取付けられている。これらのセルの相対的な位置を図４に示してある。
【００４０】
ｆｏｒ（）の下側において、定数「１」がキャリィ遅延（図４における４０３）に対する入力として設定される。次いで、ソフトウエア制御されるクロック（図４におけるＬｏｃａｌ ｃｌｏｃｋ）が形態特定される。これはクロックオブジェクトであり、そのローカルクロックｌｏｃａｌＣｌｏｃｋ経路付けがカウンタのトグルフリップフロップｔｆｆへ取付けられている。最後に、グローバルクロックがソフトウエア制御されるローカルクロックをクロック動作するために使用される。幾つかの実施例においては、クロック及びクリア基本的要素は必要とはされず、この実施例においては、それらの存在はＸＣ６２００アーキテクチャをサポートするために必要である。
【００４１】
回路が形態特定されると、ｇｅｔ（）及びｓｅｔ（）関数を介して夫々レジスタオブジェクトを読取り且つ書込むことは単純なことである。図８Ａにおいて、クロックレジスタ（図４における４０４）に対して交互に「０」及び「１」を書込むことによってクロックがトグル動作される。カウンタレジスタ（不図示）はカウンタの値（出力ＣＯＵＮＴ［０］，ＣＯＵＮＴ［１］，ＣＯＵＮＴ［２］等）を読取るために使用される。図８ＢはＸＣ６２００ＤＳ開発システム上で稼動させたこのコードの実行の実際のトレースを示している。
【００４２】
結論
この例はデモ用の単純なものであるが、それはＭＤＲＣの全ての特徴を利用している。これらの特徴は、例えばソフトウエアによって駆動されるローカルクロック動作等の特徴のみならずレジスタ読取り及び書込みを包含している。他のより複雑な回路もＭＤＲＣを使用して開発した。より複雑な回路は同一の基本的な特徴を使用して構築するが、主要な差異はコードの寸法である。
【００４３】
ＭＤＲＣは再形態特定可能論理に基づいた処理に対する簡単で高速で一体化したツールを提供している。ＭＤＲＣは現在手作業のツールである。何故ならば、再形態特定可能演算用の回路の配置及び経路付けに関してプログラマが厳格なる制御を実施することが望ましいからである。然しながら、ＭＤＲＣは手作業による設計スタイルに対する見返りとして非常に高速のコンパイル時間を提供する。これらの回路及びランタイムサポートコードを発生するのに必要なコンパイル時間は数秒の程度であり、従来のＣＡＤツールの設計サイクル時間よりも何桁も高速である。この異常な速度が最近の集積化ソフトウエア開発環境に類似した環境で開発を行うことを可能とさせている。更に、ジャバのオブジェクト指向型特性がパラメータ化したセルからなるライブラリを構築することを可能としている。この特徴はＭＤＲＣユーザの生産性を著しく向上させることが可能である。
【００４４】
ＭＤＲＣは従来のグラフィカルＣＡＤツールに対する基礎として使用することが可能である。このアプローチは静的回路を発生するために有用である。
【００４５】
上の説明は、例えばザイリンクスＸＣ６２００ファミリィのＦＰＧＡ等の動的に再形態特定可能な演算用に使用されるＦＰＧＡに関連してＭＤＲＣを説明している。然しながら、本発明は動的に再形態特定可能な演算に対して使用されるものではないその他のＦＰＧＡ及びその他のソフトウエアプログラム可能なＩＣに対して適用することも可能である。
【００４６】
本発明に関連する技術分野における技術を有するものは、本明細書の開示の結果として行うことの可能な種々の修正例及び付加例を想起する。従って、このような全ての修正例及び付加例は本発明の範囲内に属するものであって、本発明の範囲は添付の特許請求の範囲及びそれらの均等物によってのみ制限されるべきである。
【図面の簡単な説明】
【図１】  再形態特定可能な論理コプロセサを使用してＦＰＧＡにおいて実現される回路の設計のための従来の設計の流れを示したブロック図。
【図２】  本発明における設計の流れを示したブロック図。
【図３】  本発明のレベル１論理セル抽象化の模式図。
【図３Ａ】  図３の抽象化によって表されるＸＣ６２００論理セルの模式図。
【図４】  本発明の１実施例に基づくマルチビットカウンタの模式図。
【図５】  図４の実施例の基本的要素に対する要素定義コードリスティング。
【図６Ａ】  図４の要素のトグルフリップフロップセルの模式図。
【図６Ｂ】  図４の実施例のキャリィ論理セルの模式図。
【図７】  図４のカウンタに対する形態特定コードリスティング。
【図８Ａ】  図４のカウンタに対するランタイムコード。
【図８Ｂ】  図４のカウンタに対する実行トレース。
【図１】
0004481487.tif 000002
【図２】
0004481487.tif 000003
【図３】
0004481487.tif 000004
【図３Ａ】
0004481487.tif 000005
【図４】
0004481487.tif 000006
【図５】
0004481487.tif 000007
【図６Ａ】
0004481487.tif 000008
【図６Ｂ】
0004481487.tif 000009
【図７】
0004481487.tif 000010
【図８Ａ】
0004481487.tif 000011
【図８Ｂ】
0004481487.tif 000012