(57)【要約】　　　（修正有）【課題】構成可能な半導体デバイスをプログラムするためのシステムを提供する。【解決手段】設計ツールは、プログラム可能な計算デバイスに内蔵されている第１のコンピュータ・プログラム・コードを含む。第２のコンピュータ・プログラム・コードの少なくとも一部は、第１のコンピュータ・プログラム・コード内で発生し、ａ）構成可能なハードウェア・デバイスを構成するために、構成可能なハードウェア・デバイス内の選択したメモリ位置に構成データを適用するために、ｂ）（ｉ）構成可能なハードウェア・デバイス内のプログラム可能なメモリ位置、および（ｉｉ）修正対象の構成データの少なくとも一方のサブセットの位置を決定するために、ｃ）構成可能なハードウェア・デバイス内のメモリ位置、および（ｉｉ）構成データのうちの少なくとも一方のサブセットに適用される新しいデータ値を決定するために、プログラム可能な制御デバイスで実行される。【選択図】　図１
2004110771.tif 000002
【特許請求の範囲】
【請求項１】
構成可能な半導体デバイスをプログラムするためのシステムであって、
プログラム可能な制御デバイスと、
プログラム可能な計算デバイスと、
通信リンクと、
複数のメモリ位置を含み、前記通信リンクを通して前記プログラム可能な制御デバイスに接続しているメモリを有する構成可能なハードウェア・デバイスと、
プログラム可能な計算デバイス内に位置する第１のコンピュータ・プログラム・コードを含む設計ツールと、
ａ）前記構成可能なハードウェア・デバイスを構成するために、前記構成可能なハードウェア・デバイス内の選択したメモリ位置に構成データを適用するために、
ｂ）（ｉ）前記構成可能なハードウェア・デバイス内のプログラム可能なメモリ位置、および（ｉｉ）修正対象の構成データの少なくとも一方のサブセットの位置を決定するために、
ｃ）前記構成可能なハードウェア・デバイス内の前記メモリ位置、および（ｉｉ）前記構成データの中の少なくとも一方のサブセットに適用される新しいデータ値を決定するために、
前記第１のコンピュータ・プログラム・コードにより少なくとも一部が生成され、前記プログラム可能な制御デバイスで実行される第２のコンピュータ・プログラム・コードとを備えていて、
前記設計ツールが、構成データ、アドレス・データ、およびａ）、ｂ）およびｃ）のうちの少なくとも１つを実行する際に使用することができるデータ値アルゴリズムのうちの少なくとも１つを供給するシステム。
【請求項２】
前記設計ツールが、構成データ、アドレス・データ、およびデータ値アルゴリズムのうちの少なくとも１つを自動的に供給する、請求項１に記載のシステム。
【請求項３】
前記構成データ、アドレス・データ、およびデータ値アルゴリズムのうちの少なくとも１つが、ａ）、ｂ）およびｃ）のうちの少なくとも１つを実行するために使用される、請求項１に記載のシステム。
【請求項４】
前記プログラム可能な計算デバイスおよび前記プログラム可能な制御デバイスが、共通なデバイスにより供給される、請求項１に記載のシステム。
【請求項５】
前記プログラム可能な計算デバイスが、独立コンピュータ支援設計コンピュータを備え、前記プログラム可能な制御デバイスが、アプリケーション・ボード上に常駐するマイクロコントローラを備える、請求項１に記載のシステム。
【請求項６】
前記プログラム可能な制御デバイスが、前記構成可能なハードウェア・デバイスに緊密に接続している、請求項１に記載のシステム。
【請求項７】
前記プログラム可能な制御デバイスが、マイクロプロセッサを備える、請求項１に記載のシステム。
【請求項８】
前記プログラム可能な制御デバイスが、マイクロコントローラを備える、請求項１に記載のシステム。
【請求項９】
前記プログラム可能な制御デバイスが、フィールド・プログラム可能なゲート・アレーを備える、請求項１に記載のシステム。
【請求項１０】
前記プログラム可能な制御デバイスが、デジタル信号プロセッサを備える、請求項１に記載のシステム。
【請求項１１】
前記構成可能なハードウェア・デバイスが、プログラム可能な論理デバイスを備える、請求項１に記載のシステム。
【請求項１２】
前記構成可能なハードウェア・デバイスが、フィールド・プログラム可能なアナログ・アレーを備える、請求項１に記載のシステム。
【請求項１３】
前記構成可能なハードウェア・デバイスが、フィールド・プログラム可能なゲート・アレーを備える、請求項１に記載のシステム。
【請求項１４】
前記構成可能なハードウェア・デバイスが、デジタル信号プロセッサを備える、請求項１に記載のシステム。
【請求項１５】
前記プログラム可能な制御デバイスが、修正した構成データを動的に生成するように構成されている、請求項１に記載のシステム。
【請求項１６】
前記構成可能なハードウェア・デバイスが、構成可能なハードウェアおよび前記構成可能なハードウェアを構成する構成データを受信するための構成データ・レジスタとを備える、請求項１に記載のシステム。
【請求項１７】
前記第１のコンピュータ・プログラム・コードが、前記設計ツールが受信したユーザ指定パラメータを構成要素値およびトポロジーに変換するために動作するアルゴリズムを含むコントローラ・プログラムを備える、請求項１に記載のシステム。
【請求項１８】
前記アルゴリズムが、コード・ルーチンを含む、請求項１７に記載のシステム。
【請求項１９】
前記コード・ルーチンが、「Ｃ」言語コードを含む、請求項１８に記載のシステム。
【請求項２０】
前記コード・ルーチンが、前記設計ツールにより、前記構成可能なハードウェアの設計中に、ユーザが前に生成した回路の修正を実行するために生成される、請求項１８に記載のシステム。
【請求項２１】
前記コントローラ・プログラムが、計算ルーチンを実行するように構成された一組のプログラム・コード・ルーチンを含む、請求項１７に記載のシステム。
【請求項２２】
前記コントローラ・プログラムが、構成データ・アセンブリを実行するように構成された一組のプログラム・コード・ルーチンを含む、請求項１７に記載のシステム。
【請求項２３】
前記コントローラ・プログラムが、チェックサム生成を実行するように構成された一組のプログラム・コード・ルーチンを含む、請求項１７に記載のシステム。
【請求項２４】
前記コントローラ・プログラムが、前記構成可能なデバイス内の機能の再配置を実行するように構成された一組のプログラム・コード・ルーチンを含む、請求項１７に記載のシステム。
【請求項２５】
前記コントローラ・プログラムが、位置および経路回路情報を一組のプログラム・コード・ルーチンと結合し、前記構成データにより実行した回路に特有の「Ｃ」コードを生成するコンピュータ支援設計コンピュータ・プログラム・コードを含む、請求項２４に記載のシステム。
【請求項２６】
前記「Ｃ」コードから入手した目的コードが、前記構成可能なデバイスの再構成ができるように、前記第２のコンピュータ・プログラム・コードを生成する場合に、コンパイラを通して直接輸入することができる、請求項２５に記載のシステム。
【請求項２７】
前記第１のコンピュータ・プログラム・コードが、前記制御デバイスに対する修正した構成データを動的に生成できるようにする目的で、前記構成可能なデバイスに関する情報を供給するために動作するアルゴリズムを含むデバイス構成プログラムを含む、請求項１に記載のシステム。
【請求項２８】
前記コントローラ・プログラムが、ユーザが、前記構成可能なデバイスの初期構成に対応する回路性能パラメータから回路性能パラメータを修正できるようにする、請求項１７に記載のシステム。
【請求項２９】
前記コントローラ・プログラムが、ユーザが、前記構成可能なデバイスに最初に与えた機能上に、前記構成可能なデバイスに新しい機能を付与するプログラム可能な制御デバイスを通して構成データを生成できるようにする、請求項１７に記載のシステム。
【請求項３０】
前記コントローラ・プログラムが、ユーザが、前記構成可能なデバイスの他の構成に匹敵する機能を達成する前記構成可能なデバイスの構成を実行するためにデバイス・リソースを再配置できるようにする、請求項１７に記載のシステム。
【請求項３１】
前記コントローラ・プログラムが、前記構成可能なデバイスを最初に構成するために使用した前記設計ツールから独立して、前記制御デバイスに対する修正した構成データを生成できるようにする、請求項１７に記載のシステム。
【請求項３２】
前記構成可能なハードウェア・デバイスを構成した後で、前記プログラム可能な制御デバイスが、前記構成可能なハードウェア・デバイスの性能パラメータを調整し、前記プログラム可能な制御デバイスで実行された前記コンピュータ・プログラム・コードが、前記構成可能なハードウェア・デバイスに対する性能パラメータを調整するために新しい構成データを生成する、請求項１に記載のシステム。
【請求項３３】
プログラム可能なデバイスを構成するためのシステムであって、
第１のプログラム可能なデバイスと、
構成可能なハードウェアと、構成可能なハードウェアを構成するための構成データ・レジスタを含み、前記第１の構成可能なデバイスと通信する第２のプログラム可能なデバイスと、
構成データ、アドレス・データ、およびアルゴリズムのうちの少なくとも１つを発生するための第１のコンピュータ・プログラム・コードを含む設計ツールを有するプログラム可能な計算デバイスと、
前記生成した構成データ、アドレス・データ、およびデータ値を決定するためのアルゴリズムのうちの少なくとも１つを含み、前記第１のプログラム可能なデバイスで、
ａ）前記構成可能なハードウェア・デバイス内の選択したメモリ位置に構成データを適用するために、
ｂ）（ｉ）前記構成可能なハードウェア・デバイス内の前記プログラム可能なメモリ位置、および（ｉｉ）修正対象の構成データの少なくとも一方のサブセットの位置を決定するために、
ｃ）前記メモリ位置、および（ｉｉ）前記構成データの中の少なくとも一方のサブセットに適用される新しいデータ値を決定するために、
第１のプログラム可能な制御デバイスで実行される第２のコンピュータ・プログラム・コードとを備えるシステム。
【請求項３４】
前記第１のプログラム可能なデバイスと前記第２のプログラム可能なデバイスの間に位置する両方向通信リンクをさらに備える、請求項３３に記載のシステム。
【請求項３５】
前記第１のプログラム可能なデバイスが、プログラム可能な制御デバイスを備える、請求項３３に記載のシステム。
【請求項３６】
前記第２のプログラム可能なデバイスが、構成可能なハードウェア・デバイスを備える、請求項３３に記載のシステム。
【請求項３７】
前記第１のコンピュータ・プログラム・コードが、ユーザ指定パラメータを構成要素値およびトポロジーに変換するために使用するアルゴリズムを含むコントローラ・プログラムを備える、請求項３３に記載のシステム。
【請求項３８】
前記第１のコンピュータ・プログラム・コードが、前記制御デバイスに対する修正した構成データの動的生成ができるように、前記構成可能なデバイスに関する情報を供給するアルゴリズムを含む、請求項３３に記載のシステム。
【請求項３９】
前記第１のプログラム可能なデバイスが、前記第２のプログラム可能なデバイスを構成するために、前記第２のプログラム可能なデバイス内の前記構成データ・レジスタの中の少なくとも１つに構成データを書き込むようにプログラムされる、請求項３３に記載のシステム。
【請求項４０】
前記第１のプログラム可能なデバイスが、前記第２のプログラム可能なデバイスに密接に接続していて、前記第２のプログラム可能なデバイスを構成するように形成され、配置されている、請求項３３に記載のシステム。
【請求項４１】
前記第２のプログラム可能なデバイスの構成の後で、前記第１のプログラム可能なデバイスが、前記第２のプログラム可能なデバイスの前記構成データ・レジスタ内の構成データを修正することにより、前記第２のプログラム可能なデバイスに対する少なくとも１つの性能パラメータを調整するように形成され、配置されている、請求項４０に記載のシステム。
【請求項４２】
前記第２のプログラム可能なデバイスの構成の後で、前記第１のプログラム可能なデバイスが、前記第２のプログラム可能なデバイスの前記構成データ・レジスタ内の構成データを修正することができるようにすることにより、前記第２のプログラム可能なデバイスに対して回路実行ができるように形成され、配置されている、請求項４０に記載のシステム。
【請求項４３】
構成可能なハードウェア・デバイス内に位置するアナログ素子を構成または再構成するための方法であって、
プログラム可能な制御デバイスと通信する構成可能なハードウェア・デバイスを供給するステップと、
アナログ素子を含むハードウェア設計を生成するステップと、
前記構成可能なハードウェア・デバイス内の選択したメモリ位置に構成データを適用することによるアナログ素子の構成、
（ｉ）前記プログラム可能なメモリ位置、および（ｉｉ）修正対象の構成データの少なくとも一方のサブセットの位置の決定、
前記メモリ位置、および（ｉｉ）構成データの中の少なくとも一方のサブセットに適用される新しいデータ値の決定のうちの少なくとも１つを実行する際に使用することができるデータ、およびアルゴリズムの中の少なくとも一方を供給するコンピュータ・プログラム・コードを生成するステップと、
前記構成可能なハードウェア・デバイスの構成を更新するために、前記コンピュータ・プログラム・コードをアプリケーションに内蔵させるステップと、
前記構成可能なハードウェア・デバイスを再構成するために、前記プログラム可能な制御デバイスに前記アプリケーションを供給するステップとを含む方法。
【請求項４４】
前記構成可能なハードウェア・デバイスのハードウェアを再構成するために、前記プログラム可能な制御デバイスを通して、前記構成可能なハードウェア・デバイスの前記構成データを更新するステップをさらに含む、請求項４３に記載の方法。
【請求項４５】
前記内蔵させるステップが、前記コンパイルしたプログラム・コードにより、前記構成可能なハードウェア・デバイスのハードウェアに対する前記構成データの選択的な修正を行うことができるようにするために、前記プログラム可能な制御デバイスが使用するための前記コンピュータ・プログラム・コードをコンパイルするステップを含む、請求項４３に記載の方法。
【請求項４６】
前記構成可能なハードウェア・デバイスが、構成可能なハードウェアと前記構成可能なハードウェアを構成するための構成データ・レジスタを備え、さらに、前記構成可能なハードウェアを再構成するために、前記構成データ・レジスタ内に前記生成した構成データを記憶するステップを含む、請求項４３に記載の方法。
【請求項４７】
前記構成可能なハードウェア・デバイス内の前記ハードウェアを再構成するために、前記プログラム可能な制御デバイスから前記構成可能なハードウェア・デバイスへ、前記生成したコンピュータ・プログラム・コードを転送するステップをさらに含む、請求項４３に記載の方法。
【請求項４８】
前記プログラム可能な制御デバイスが、ユーザ・インタフェースを含み、さらに、前記ユーザ・インタフェースのところで、ユーザから、前記ハードウェアに対する前記構成データを修正するパラメータの変更を受信するステップを含む、請求項４３に記載の方法。
【請求項４９】
前記ハードウェアの再構成ができるように、前記構成データ上に前記パラメータの変更をマッピングするステップをさらに含む、請求項４８に記載の方法。
【請求項５０】
コンピュータ・プログラム・コードを生成するステップが、前記ハードウェアを構成するために、前記構成データに適用される前記構成可能なハードウェア・デバイスのアナログ回路素子に、変更を表すデータ値を内蔵させるステップを含む、請求項４３に記載の方法。
【請求項５１】
前記プログラム可能な制御デバイスに、前記構成可能なハードウェア・デバイス内のハードウェア構成要素の設置に関する情報を自動的に供給するステップをさらに含む、請求項４３に記載の方法。
【請求項５２】
前記構成可能なハードウェア・デバイスが、フィールド・プログラム可能なアナログ・アレーを備え、さらに、前記フィールド・プログラム可能なアナログ・アレーの構成データ・レジスタに構成データを書き込むために、前記プログラム可能な制御デバイスから前記構成可能なハードウェア・デバイスへのアプリケーション・プログラムの移動に応じて、前記フィールド・プログラム可能なアナログ・アレーの少なくとも１つのアナログ素子を再構成するステップを含む、請求項４３に記載の方法。
【請求項５３】
前記少なくとも１つのアナログ素子を再構成するために、ユーザ入力と一緒に、前記生成したコンピュータ・プログラム・コードにより、前記フィールド・プログラム可能なアナログ・アレーに対する前記構成データを修正するステップをさらに含む、請求項５２に記載の方法。
【請求項５４】
プログラム可能な制御デバイスに接続しているフィールド・プログラム可能なアナログ・アレーを構成するための方法であって、
前記フィールド・プログラム可能なアナログ・アレー内の少なくとも１つのアナログ素子に対してハードウェア設計を供給するステップと、
前記フィールド・プログラム可能なアナログ・アレー内の選択したメモリ位置に構成データを適用することにより、前記アナログ素子を構成する際に、また（ｉ）前記メモリ位置、および（ｉｉ）修正対象の構成データの少なくとも一方のサブセットの位置を決定する際に、また前記メモリ位置および（ｉｉ）前記構成データの中の少なくとも一方のサブセットに適用される新しいデータ値の決定する際に使用することができるデータ・セットおよびプロセスのうちの少なくとも一方を含むコンピュータ・プログラム・コードを生成するステップと、
前記フィールド・プログラム可能なアナログ・アレーの構成を更新するために動作する前記コンピュータ・プログラム・コードの少なくとも一部を含むアプリケーション・プログラムを生成するステップと、
前記プログラム可能な制御デバイスのところで、前記アプリケーション・プログラムを受信するステップと、
前記アプリケーション・プログラムにより、前記フィールド・プログラム可能なアナログ・アレー内の少なくとも１つの構成データ・レジスタに構成データを書き込むための命令により前記プログラム可能な制御デバイスをプログラムするステップと、
前記フィールド・プログラム可能なアナログ・アレーの前記少なくとも１つの構成データ・レジスタに前記構成データを書き込むステップと、
前記フィールド・プログラム可能なアナログ・アレーへの前記構成データの書き込みに応じて、前記フィールド・プログラム可能なアナログ・アレー内でハードウェアを構成するステップとを含む方法。
【請求項５５】
前記プログラム可能な制御デバイスから前記フィールド・プログラム可能なアナログ・アレーに、構成データをエクスポートするステップをさらに含む、請求項５４に記載の方法。
【請求項５６】
前記アプリケーション・プログラムが、デバイス指定マッピング情報を含む、請求項５４に記載の方法。
【請求項５７】
前記フィールド・プログラム可能なアナログ・アレーを必要なデバイス構成内にマッピングするために、前記プログラム可能な制御デバイスのメモリ内に記憶しているアルゴリズムでコンピュータ・プログラム・コードを実行するステップをさらに含む、請求項５６に記載の方法。
【請求項５８】
前記アプリケーション・プログラムが、設計−デバイス・マッピング情報を含む、請求項５４に記載の方法。
【請求項５９】
前記設計−デバイス・マッピング情報が、ハードウェア構成データ、設計−デバイス・メモリ・マッピング・データ、および設計修正アルゴリズムを含む、請求項５８に記載の方法。
【請求項６０】
前記アプリケーション・プログラムが、設計特定マッピング情報を含む、請求項５４に記載の方法。
【請求項６１】
機能パラメータ計算を行うために、前記プログラム可能な制御デバイスのメモリ内に記憶しているアルゴリズムでコンピュータ・プログラム・コードを実行するステップをさらに含む、請求項６０に記載の方法。
【請求項６２】
コンピュータ・システムで構成可能なハードウェア・デバイス内のアナログ・ハードウェアを再構成するための方法であって、
アナログ・ハードウェア設計を供給するステップと、
下記の動作、すなわち、
ａ）前記構成可能なハードウェア・デバイス内の選択したメモリ位置に構成データを適用することによるアナログ素子の構成、
ｂ）（ｉ）前記プログラム可能なメモリ位置および（ｉｉ）修正対象の前記構成データの少なくとも一方のサブセットの位置の決定、
ｃ）（ｉ）前記メモリ位置および（ｉｉ）前記構成データのうちの少なくとも一方のサブセットに適用される新しいデータ値の決定、
のうちの少なくとも１つを実行する際に使用することができるアルゴリズムおよびデータのうちの少なくとも一方を自動的に内蔵するコンピュータ・プログラム・コードを供給するステップと、
前記構成可能なハードウェア・デバイスの構成を更新するために、前記コンピュータ・プログラム・コード上に少なくともその一部に基づいてアプリケーション・プログラムを供給するステップと、
前記プログラム可能な制御デバイスを通して、前記構成可能なハードウェア・デバイス内のアナログ・ハードウェアを構成するための少なくとも１つの構成データ・レジスタ内に構成データを有する構成可能なハードウェア・デバイスと通信するステップと、
前記構成可能なハードウェア・デバイス内の構成データ・レジスタに新しい構成データを書き込むために、前記アプリケーション・プログラムと協力する命令を含む前記プログラム可能な制御デバイスのところでユーザ入力を受信するステップと、
前記少なくとも１つの構成データ・レジスタへ前記新しい構成データを書き込むステップと、
前記新しい構成データにより前記構成可能なハードウェア・デバイス内のアナログ・ハードウェアを再構成するステップとを含む方法。
【請求項６３】
前記構成可能なハードウェア・デバイスが、フィールド・プログラム可能なアナログ・アレーを備える、請求項６２に記載の方法。
【請求項６４】
前記コンピュータ・プログラム・コードが、前記構成可能なハードウェア・デバイスのアナログ・ハードウェアを再構成するために、前記プログラム可能な制御デバイスが使用するためのエクスポート・デバイス情報を含む、請求項６２に記載の方法。
【請求項６５】
前記アナログ・ハードウェア、を再構成するために、前記構成データ・レジスタ内に前記新しい構成データを記憶するステップをさらに含む、請求項６２に記載の方法。
【請求項６６】
前記新しい構成データが、前記構成可能なハードウェア・デバイス内の前記ハードウェアを再構成するために、前記プログラム可能な制御デバイスから前記構成可能なハードウェア・デバイスへ、コンピュータ・データを転送するステップを含む、請求項６２に記載の方法。
【請求項６７】
ユーザ入力が、前記プログラム可能な制御デバイスのユーザ・プログラムを通して受信され、前記ユーザ入力が、アナログ回路のユーザ機能記述を含むコンピュータ支援設計ツールからの構成データと結合される、請求項６２に記載の方法。
【請求項６８】
構成可能なハードウェア・デバイスを再構成するための方法であって、
構成可能なハードウェア・デバイスと通信するプログラム可能な制御デバイスを供給するステップと、
前記構成可能なハードウェア・デバイス内の、選択したメモリ位置に構成データを適用することによるアナログ素子の構成、
（ｉ）前記プログラム可能なメモリ位置および（ｉｉ）修正対象の構成データの少なくとも一方のサブセットの位置の決定、および
前記メモリ位置および（ｉｉ）構成データの中の少なくとも一方の前記サブセットに適用される新しいデータ値の決定
のうちの少なくとも１つを実行する際に、使用することができるアルゴリズムおよびデータの中の少なくとも一方を内蔵する前記プログラム可能な制御デバイスのところでコンピュータ・プログラム・コードを受信するステップと、
前記プログラム可能な制御デバイスのところでユーザ入力を受信するステップと、
前記コンピュータ・プログラム・コードと前記ユーザ入力とを使用して、前記構成可能なハードウェア・デバイスを第１の構成から第２の構成に再構成するステップとを含む方法。
【請求項６９】
前記構成可能なハードウェア・デバイス内の少なくとも１つの構成データ・レジスタに構成データを書き込むための命令により、前記プログラム可能な制御デバイスをプログラムすステップをさらに含む、請求項６８に記載の方法。
【請求項７０】
前記プログラム可能な制御デバイスが、前記構成可能なハードウェア・デバイスを第２の構成に構成する目的で、前記構成可能なハードウェア・デバイス内のデータ・レジスタに構成データを書き込むことができるようにするために、前記プログラム可能な制御デバイスに、前記構成可能なハードウェア・デバイスに対するデバイス情報を供給するステップをさらに含む、請求項６８に記載の方法。
【請求項７１】
エクスポート・デバイス情報が、前記構成可能なハードウェア・デバイスに対して構成データをエクスポートするステップを含む、請求項７０に記載の方法。
【請求項７２】
構成データをエクスポートするステップが、回路を表すデータを含む構成ファイルをエクスポートするステップを含む、請求項７１に記載の方法。
【請求項７３】
前記構成ファイルが、他のデータ・セットと対応する関係を持つ一組のデータを含むマップ・ファイルを含む、請求項７２に記載の方法。
【請求項７４】
構成のためのホスト・プロセッサと接続している前記フィールド・プログラム可能なアナログ・アレーを構成するための方法であって、
設計ツールにより、構成データ、アドレス・データ、およびアルゴリズムの中の少なくとも１つを供給する第１のコンピュータ・プログラム・コードを生成するステップと、
前記第１のコンピュータ・プログラム・コードの少なくとも一部により、第２のコンピュータ・プログラム・コードを生成するステップと、
前記第２のコンピュータ・プログラム・コードを前記ホスト・プロセッサに転送するステップと、
前記構成可能なハードウェア・デバイス内の選択したメモリ位置に構成データを適用することにより前記フィールド・プログラム可能なアナログ・アレーを構成するステップと、
（ｉ）前記プログラム可能なメモリ位置および（ｉｉ）修正対象の前記構成データの少なくとも一方のサブセットの位置を決定するステップと、
前記メモリ位置および（ｉｉ）構成データの中の少なくとも一方の前記サブセットに適用される新しいデータ値を決定するステップと、
新しい構成データを含む前記ホスト・プロセッサのところでユーザ入力を受信するステップとを含む方法。
【請求項７５】
前記フィールド・プログラム可能なアナログ・アレー内の前記構成データ・レジスタに、前記新しい構成データを書き込むステップをさらに含む、請求項７４に記載の方法。
【請求項７６】
前記新しい構成データにより、前記フィールド・プログラム可能なアナログ・アレーを再構成するステップをさらに含む、請求項７５に記載の方法。
【請求項７７】
プログラム可能な制御デバイスをプログラムする前に、構成データの初期セットにより前記フィールド・プログラム可能なアナログ・アレーを構成する、請求項７４に記載の方法。
【請求項７８】
前記フィールド・プログラム可能なアナログ・アレーを構成した後で、構成データの前記初期セットの少なくとも一部に、前記新しい構成データを重ね書きすることにより前記フィールド・プログラム可能なアナログ・アレーを再構成する、請求項７５に記載の方法。
【請求項７９】
前記新しい構成を書き込むステップが、前記フィールド・プログラム可能なアナログ・アレーを動的に再構成するために、、前記構成データ・レジスタに前記新しい構成データを動的に更新するステップを含む、請求項７４に記載の方法。
【請求項８０】
前記第１のコンピュータ・プログラム・コードが、構成データ、アドレス・データ、およびアルゴリズムのうちの少なくとも１つを自動的に供給する、請求項７４に記載の方法。
【請求項８１】
構成可能な半導体デバイスをプログラムするための方法であって、
ａ）前記構成可能な半導体デバイス内の選択したメモリ位置に構成データを適用することにより、前記構成可能な半導体デバイスを構成するために、
ｂ）（ｉ）前記プログラム可能なメモリ位置および（ｉｉ）修正対象の前記構成データの中の少なくとも一方のサブセットの位置を決定するために、
ｃ）（ｉ）前記メモリ位置および（ｉｉ）前記構成データの中の少なくとも一方の前記サブセットに適用される新しいデータ値を決定するために、
ｄ）前記プログラム可能な半導体デバイスの少なくとも１つのアナログ構成要素を再構成するために、前記プログラム可能な半導体デバイスに接続しているプログラム可能な制御デバイスを通して、ユーザが相互に作用することができるようにするために、
構成可能な半導体デバイスを構成するプログラミング・データを受け入れるように、特に形成されたプログラム可能な半導体デバイスを備えるシステム。
【請求項８２】
前記プログラム可能な半導体デバイスが、フィールド・プログラム可能なアナログ・アレーを備える、請求項８１に記載のシステム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、構成可能なデバイスに関し、特に、第２の構成可能なデバイスにより第１の構成可能なデバイスをプログラムするための、ソフトウェアが開発される再構成可能なデバイスのようなプログラム可能な、構成可能なデバイスに関する。
【０００２】
【発明の背景】
構成可能なデバイスは、使用している間に進歩し、広く使用されるようになった。構成可能なデバイスの一例としては、プログラム可能なデバイスがある。プログラム可能なデバイスは、現在では、あるプログラム可能なデバイスを他のプログラム可能なデバイスにより構成するための、実用的で望ましいものにまで進化している。例えば、プログラム可能なロジック・デバイス（ＰＬＤ）のような、構成可能なハードウェア・デバイスをプログラムするために、マイクロコントローラを使用することができる。他の方法としては、マイクロプロセッサ・チップ、フィールド・プログラム可能なゲート・アレー（ＦＰＧＡ）チップ、またはデジタル信号プロセッサ（ＤＳＰ）チップを、フィールド・プログラム可能なアナログ・アレー（ＦＰＡＡ）チップ、ＦＰＧＡチップまたは、ＤＳＰチップをプログラムするために使用することができる。
【０００３】
一例を挙げると、構成は、第１のデバイスを、第２のデバイス内の構成データ・レジスタの一部または全部を、構成データを書き込むようにプログラムすることにより行われる。多くの場合、第２のデバイスを構成した後で、第１のデバイスが、第２のデバイスの性能パラメータの一部または全部を調整することができれば便利である。さらに、またはそうしたい場合には、第２のデバイスが内蔵している全回路を変更することが望ましい。両方の場合、（ａ）構成データの全部または一部を修正し、次に、その構成データを第２のデバイス内のレジスタに適用することにより、または（ｂ）第２のデバイスのレジスタ内に含まれている構成データの全部または一部を直接修正することにより調整または変更を行うことができる。しかし、現在の設計ツールでは、この修正を簡単に行うことはできない。
【０００４】
集積回路用の現在のコンピュータ支援設計（ＣＡＤ）ツールは、構成可能なデバイスをプログラムするために使用されてきたが、目標デバイスをプログラムすることもできるように設計されている。しかし、このようなＣＡＤツールは、他のデバイスにより、または他のデバイスからそのデバイスを構成することはできない。より詳細に説明すると、回路設計の流れは、通常、ユーザの設計、デバイスのアーキテクチャ、および潜在的に１つまたはそれ以上の予め定義した素子に関する情報を結合するために、内部アルゴリズムを使用する。そのため、この設計の流れを使用すると、目標デバイスの構成に適している構成データ・セットが得られる。デバイスが読出し専用メモリ（ＲＯＭ）からロードされる場合のように、構成可能なデバイス全体をロードする場合には、この技術は比較的うまくいく。しかし、この技術を使用すると、構成可能なデバイス（または、チップ）内に１つまたはそれ以上の完全な構成を単にロードするというタスクに、高性能のコントローラを使用することになりもったいない。何故なら、コントローラ・コードがコンパイルされる時に使用することができる元の設計情報の一部だけが、結果として得られる生の構成データになるからである。
【０００５】
図１および図２は、このような従来技術のシステムの構成可能なハードウェア、およびコントローラのフローチャートである。より詳細に説明すると、アナログ構成要素を有する構成可能なハードウェア・デバイス１０は、中央処理装置（ＣＰＵ）のような制御デバイス１２により構成することができるようになっている。構成可能なハードウェアの流れ１４は、コントローラの流れ１６と関連しているが、この場合、デバイス記述１８、機能ライブラリ２０、ユーザ機能記述２２、およびＣＡＤツール２４は、ＣＡＤツールが構成データ２６を生成するように相互に作用する。次に、このような構成データは、構成可能なデバイス１０に送られる。一例を挙げて説明すると、そのための１つの方法は、読出し専用メモリ（ＲＯＭ）内にデータを記憶するステップと、フィールド・プログラム可能なアナログ・アレー（ＦＰＡＡ）が、ＲＯＭから直接構成できるようにするステップを含む。さらに、構成データ２６は、さらにコントローラの流れ１６に送られる。
【０００６】
コントローラの流れ１６について説明すると、ユーザ・プログラム２８、ライブラリ３０、ＣＰＵデバイス記述３２、およびコンパイラ３４は、コンパイラ３４がＣＰＵプログラム３６を生成するように相互に作用する。コンパイラ３４は、構成可能なハードウェアの流れ１４から、および／またはユーザ・プログラム２８を通して間接的に構成データ２６を受信する。ＣＰＵプログラム３６は、制御デバイス１２に送られ、次に、制御デバイス１２は、ユーザの設計、デバイス・アーキテクチャおよび予め定義した素子に関する情報を結合するために内部アルゴリズムを使用する。次に、制御デバイス１２は、構成データ・セットまたはプログラムを、このようなデバイスを構成するのに適している構成可能なデバイス１０に送る。
【０００７】
デバイス記述１８は、デバイス・トポロジー３８に関する情報、およびリソース利用度４０に関する情報を含む。機能ライブラリ２０は、リソース要件４２、シミュレーション・モデル４４、および、機能タイミング４６に関する情報を含む。ユーザ機能記述２２は、機能記述に関する情報、および「概略」または、「ＶＨＤＬ）（ＶＨＳＩＣハードウェア記述言語）に関する情報を含む。ＣＡＤツール２４は、リソース割当てに関する情報５２、位置および経路情報５４、ネットリスト変換情報５６、および構成生成情報５８を含む。
【０００８】
ユーザ・プログラム２８は、「Ｃ」言語、アセンブリ言語、ＰＡＳＣＡＬを含むがこれらに限定されない、多数のプログラミング言語の中の任意の言語で供給することができる。ライブラリ３０は、浮動小数点ライブラリ６０、周辺ライブラリ６２、および、アルゴリズム・ライブラリ６４を含む。ＣＰＵデバイス記述３２は、デバイス・トポロジー６６およびリソース利用度６８に関する情報を含む。
【０００９】
現在のＣＡＤツールは、構成データしか含んでいないし、デバイス・アーキテクチャ、およびサブ回路設置に関する詳細な説明は含んでいない。それ故、制御デバイス１２のような制御デバイス上の任意の外部プログラムは、構成可能なハードウェアを構成可能なデバイス１０上に、盲目的にロードすることぐらいしかできない。ＣＰＵプログラム３６が、構成可能なデバイス１０内の回路またはパラメータを、役に立つように変更することができるようにするためには、構成要素の設置位置、このような構成要素に対する値の設定基準に関する情報が必要になる。しかし、現在知られている技術では、このような情報を供給することはできない。
【００１０】
例えば、いくつかのフィールド・プログラム可能なゲート・アレー（ＦＰＧＡ）を含む従来の方法を使用した場合、ユーザが更新できるのは、ＦＰＧＡ内のアレーの選択した一部だけである。この更新は、いくつかのもっと小さなＦＰＧＡを１つのパッケージ内に入れるのと機能的に同じことである。しかし、関連する構成ソフトウェアは、ユーザに基本的構成データに関する情報を供給しないし、データ変更の効果も供給しない。さらに、構成ソフトウェアは、ユーザが記述したパラメータの変更を構成データ上にマッピングすることができない。
【００１１】
第２の例を挙げて説明すると、マイクロコントローラおよびサンプル・ソース・コード・リストを含む製品用のマイクロコントローラ周辺機器の販売業者は、アプリケーション・ノートを発行している。しかし、これらのソース・コードのリストは、あるポートを入力ポートまたは出力ポートとして定義するような特定のデバイス内の物理的に組み込まれたオプションの構成を解決することしかできないし、または、いくつかの予め定義したボー速度の中の１つを設定するために、さらに、このようなアプリケーション・ノートは、固定ハードウェアおよび固定機能アプリケーションだけにしか適用できない。
【００１２】
【発明が解決しようとする課題】
本発明は、構成要素の設定場所およびプログラム可能なデバイス内のこのような構成要素の設定値に対する基準を供給する情報を供給するための方法および装置に関する。上記情報および基準は、プログラム可能で、構成可能なデバイスの構成可能な構成要素、またはハードウェアに対する構成データを局部的に修正できるようにするために、プログラミング・デバイスの設計プロセスの流れ内で容易に使用することができる形で供給される。
【００１３】
【課題を解決するための手段】
ある態様によれば、本発明は、構成可能な半導体デバイスをプログラムするためのシステムを提供する。このシステムは、プログラム可能な制御デバイス、プログラム可能な計算デバイス、通信リンク、構成可能なハードウェア・デバイス、第１のコンピュータ・プログラム・コードと第２のコンピュータ・プログラム・コードを含む設計ツールを含む。構成可能なハードウェア・デバイスは、複数のメモリ位置を含み、通信リンクを通してプログラム可能な制御デバイスに接続しているメモリを有する。設計ツールは、プログラム可能な計算デバイスに内蔵されている第１のコンピュータ・プログラム・コードを含む。第２のコンピュータ・プログラム・コードの少なくとも一部は、第１のコンピュータ・プログラム・コード内で発生し、ａ）構成可能なハードウェア・デバイスを構成するために、構成可能なハードウェア・デバイス内の選択したメモリ位置に構成データを適用するために、ｂ）（ｉ）構成可能なハードウェア・デバイス内のプログラム可能なメモリ位置、および（ｉｉ）修正対象の構成データの中の少なくとも一方のサブセットの位置を決定するために、ｃ）構成可能なハードウェア・デバイス内のメモリ位置、および（ｉｉ）構成データの中の少なくとも一方のサブセットに適用される新しいデータ値を決定するために、プログラム可能な制御デバイス内で実行される。設計ツールは、構成データ、アドレス・データ、およびａ）、ｂ）およびｃ）の中の少なくとも１つを実行する際に使用することができるデータ値アルゴリズムの中の少なくとも１つを供給する。
【００１４】
他の態様によれば、本発明は、プログラム可能なデバイスを構成するためのシステムを提供する。このシステムは、第１のプログラム可能なデバイス、第２のプログラム可能なデバイス、第１のコンピュータ・プログラム・コードおよび、第２のコンピュータ・プログラム・コードを含む設計ツールを持つプログラム可能な計算デバイスを含む。第２のプログラム可能なデバイスは、構成可能なハードウェアおよび構成可能なハードウェアを構成するための構成データ・レジスタを有する。第２のプログラム可能なデバイスは、第１のプログラム可能なデバイスと通信する。プログラム可能な計算デバイスは、構成データ、アドレス・データ、およびアルゴリズムの中の少なくとも１つを生成するための第１のコンピュータ・プログラム・コードを含む設計ツールを有する。第２のコンピュータ・プログラム・コードの少なくとも一部は、第１のコンピュータ・プログラム・コードにより生成する。第２のコンピュータ・プログラム・コードは、データ値を決定するための、発生した構成データ、アドレス・データ、およびアルゴリズムの中の少なくとも１つを内蔵する。第２のコンピュータ・プログラム・コードは、ａ）構成可能なハードウェア・デバイス内の選択したメモリ位置に構成データを適用するために、ｂ）（ｉ）構成可能なハードウェア・デバイス内のプログラム可能なメモリ位置、および（ｉｉ）修正対象の構成データの中の少なくとも一方のサブセットの位置を決定するために、ｃ）メモリ位置、および（ｉｉ）構成データの中の少なくとも一方のサブセットに適用される新しいデータ値を決定するために、第１のプログラム可能なデバイスで実行される。
【００１５】
さらに他の態様によれば、本発明は、構成可能なハードウェア・デバイス内に位置するアナログ素子を構成または再構成するための方法を提供する。この方法は、プログラム可能な制御デバイスと通信する、構成可能なハードウェア・デバイスを供給するステップと、アナログ素子を含むハードウェア設計を生成するステップと、構成可能なハードウェア・デバイス内の、選択したメモリ位置に構成データを適用することによりアナログ素子を構成するステップと、（ｉ）プログラム可能なメモリ位置、および（ｉｉ）修正対象の構成データのうちの少なくとも一方のサブセットの位置を決定するステップと、（ｉ）メモリ位置、および（ｉｉ）構成データの中の少なくとも一方のサブセットに適用される新しいデータ値を決定するステップのうちの少なくとも１つのステップを実行する際に使用することができるデータおよびアルゴリズムのうちの少なくとも１つを供給するコンピュータ・プログラム・コードを生成するステップと、構成可能なハードウェア・デバイスの構成を更新するために、アプリケーション内にコンピュータ・プログラム・コードを内蔵させるステップと、構成可能なハードウェア・デバイスを再構成するために、このアプリケーションをプログラム可能な制御デバイスに供給するステップとを含む。
【００１６】
さらに他の態様によれば、本発明は、フィールド・プログラム可能なアナログ・アレーを構成するための方法を提供する。フィールド・プログラム可能なアナログ・アレーは、プログラム可能な制御デバイスに接続している。この方法は、プログラム可能なアナログ・アレー内の少なくとも１つのアナログ素子に対してハードウェア設計を供給するステップと、構成可能なアナログ・アレー内の選択したプログラム可能なメモリ位置に構成データを適用することによりアナログ素子を構成するために、（ｉ）メモリ位置、および（ｉｉ）修正対象の構成データのうちの少なくとも一方のサブセットの位置を決定するために、（ｉ）メモリ位置、および（ｉｉ）構成データの中の少なくとも一方のサブセットに適用される新しいデータ値を決定するために使用することができるデータ・セットおよびプロセスのうちの少なくとも一方を含むコンピュータ・プログラム・コードを生成するステップと、フィールド・プログラム可能なアナログ・アレーの構成を更新するために動作するコンピュータ・プログラム・コードの少なくとも一部を内蔵するアプリケーション・プログラムを生成するステップと、プログラム可能な制御デバイスのところでアプリケーション・プログラムを受信するステップと、アプリケーション・プログラムによりフィールド・プログラム可能なアナログ・アレー内の少なくとも１つの構成データ・レジスタに構成データを書き込むための命令によりプログラム可能な制御デバイスをプログラムするステップと、フィールド・プログラム可能なアナログ・アレーの中の少なくとも１つの構成データ・レジスタに構成データを書き込むステップと、少なくとも１つの構成データ・レジスタへの構成データの書き込みに応じて、フィールド・プログラム可能なアナロ・アレー内でハードウェアを構成するステップとを含む。
【００１７】
本発明の１つの利点は、緊密に結合した制御を行うために必要な情報が、構成可能なハードウェア・デバイスを構成するために使用されるプログラム可能な制御デバイス用の制御プログラムを開発する際に使用できるように、設計および構成ソフトウェアに追加の機能を供給することができることである。
【００１８】
添付の図面を参照しながら、本発明の好ましい実施形態について説明する。
【００１９】
【発明の実施の形態】
（コンピュータ・プログラムのリストを示す付録への相互参照）
本明細書の一部であるＣＤ−ＲＯＭ付録Ａは、１３のファイルからなるＣＤ−ＲＯＭ付録である。ＣＤ−ＲＯＭ付録Ａは、ソフトウェア・プログラムを含む、コンピュータ・プログラムのリストが記載されている付録である。付録Ａは、引用によって本明細書の記載に援用する。コピーを含むＣＤ−ＲＯＭの枚数は全部で２枚であり、それぞれのＣＤ−ＲＯＭは、下記の１３のファイルを含む。
【００２０】
名称　　　　　　　　　　　　　長さ　　　　　　　　作成日
９１６Ｙ３．Ｈ　　　　　　　　４２，４７９　　　０３−１２−０２
ＡＮ２０Ｅ３０．Ｃ　　　　　　７，１５９　　　　０３−１２−０２
ＡＮ２０Ｅ３０．Ｈ　　　　　　２３２　　　　　　０３−１２−０２
ＡＰＩＣＯＤＥ．Ｃ　　　　　　３７，７２１　　　０３−１２−０２
ＡＰＩＣＯＤＥ．Ｈ　　　　　　３１，１７０　　　０３−１２−０２
ＧＥＤＥＭＯ．Ｃ　　　　　　　２４，０５１　　　０３−１２−０２
ＧＥＮＴＹＰＥＳ．Ｈ　　　　　３４２　　　　　　０３−１２−０２
ＩＰＭＯＤＵ〜１．Ｃ　　　　　５，６７７　　　　０３−１２−０２
ＩＰＭＯＤＵ〜１．Ｈ　　　　　５，２７２　　　　０３−１２−０２
ＬＣＤＤＩＳＰ．Ｃ　　　　　　１５，７５５　　　０３−１２−０２
ＬＣＤＤＩＳＰ．Ｈ　　　　　　３７３　　　　　　０３−１２−０２
ＱＳＰＩ．Ｃ　　　　　　　　　３，６０８　　　　０３−１２−０２
ＱＳＰＩ．Ｈ　　　　　　　　　２０２　　　　　　０３−１２−０２
（著作権通知）
本明細書の一部は、著作権により保護されている資料を含む。著作権の所有者は、特許商標庁の特許ファイルまたは記録に記載されている場合には、特許文書または特許開示のどちらでもファクシミリによりコピーを許可する。しかし、そうでない場合には、すべての著作権の権利を留保する。
【００２１】
「科学および有用な技術を促進するための」米国特許法の本質的な目的を推進するために本明細書を提出する（第１条、第８節）。
【００２２】
出願人の発明の好ましい実施形態について説明する。構成可能な半導体デバイスをプログラムするためのシステムおよび方法を示す図面を参照しながら、１つの例示としての実施形態について説明する。好ましい実施形態を参照しながら本発明を説明するが、この説明は本発明を上記実施形態に制限するものではなく、他の実施形態、ほぼ類似の実施形態、および上記実施形態より広義であるが、本出願の範囲に含まれるものを含むことを理解することができるだろう。
【００２３】
本発明の説明が曖昧になるのを防止するために、本発明を実行するのに密接な関係がある詳細な点については非常に詳細に説明するが、当業者が現在知っている周辺の詳細な知識についても必要に応じて説明する。
【００２４】
本明細書においては、「フィールド・プログラム可能なアナログ・アレー（ＦＰＡＡ）」という用語は、プログラム可能な相互接続、および構成可能なアナログ・ブロックのアレーによりアナログ回路を実行するようにプログラムでき、構成することができる集積回路を意味するものと理解されたい。より詳細に説明すると、ＦＰＡＡは、アナログ回路構成要素およびスイッチの集合体を含む。スイッチは、特定の回路設計を実現するために構成要素を一緒に接続する。スイッチは、また、個々のアナログ回路構成要素の値をセットするために使用される。ＦＰＡＡ（または、チップ）に２進ビット・ストリームをダウンロードすることによりＦＰＡＡスイッチをセットすることができ、それにより特定の回路が定義される。比較的簡単なＦＰＡＡでも、特定の回路設計を実現するために、セットしなければならない数千のスイッチを有する。それ故、本明細書に記載する改善は、回路設計およびスイッチ設定の問題を簡単にするために使用される。さらに、特定のアナログ回路設計をシミュレートするための装置も備える。
【００２５】
本明細書においては、「Ｃ」コードという用語は、プログラム・コードの特定の例を意味する。ＰＡＳＣＡＬ、ビジュアル・ベーシック、フォートランおよび他の周知のプログラム・コードを含む他の特定のプログラム・コードも使用することができることを理解されたい。
【００２６】
従来技術の場合には、全カスタム集積回路設計は、比較的時間が掛かるものであり、広範なアナログ設計の専門知識を必要とした。特に、プログラム可能なデバイスおよびＦＰＡＡを使用すれば、アレーをプログラムするために、適切なデータが与えられた場合には、回路を迅速に形成し、変更することができる。このような技術を使用すれば、回路設計者がよく知っている方法で設計を表し、ＦＰＡＡをプログラムするために、対応するデータを自動的に発生するコンピュータ支援設計ツールによりプログラミング・データの生成が非常に簡単になる。このようなコンピュータ支援設計ツールがなければ、このプログラミングの修正または生成は制限されるか、ほとんど不可能である。例えば、ＦＰＡＡが実行する回路機能の面を変更するために、ＦＰＡＡに隣接するマイクロプロセッサが必要である場合には、回路設計者は、アレー・アーキテクチャ、ＦＰＡＡの基礎になる技術を使用する回路設計、およびＦＰＡＡにこのような回路を実現させるための、特定のデータ・シーケンスの構造についての深い知識が必要になる。
【００２７】
しかし、上記技術は、非常に労力を必要とするもので、複雑で実行するのが難しい。本明細書に記載する改善は、この問題を解決する。
【００２８】
図３および図４は、基本的なシステム構成が、構成可能な半導体デバイスをプログラムするために供給され、参照番号６１により識別される、本出願人の発明の好ましい実施形態である。システム６１は、パソコン（ＰＣ）５３、もう１台のＰＣ６５、プログラム可能な制御デバイス６７、および構成可能なハードウェア・デバイス６９のようなプログラム可能な計算デバイス６３を含む。
【００２９】
図３および図４に示すように、システム６１は、プログラム可能な制御デバイス６７により、構成可能なハードウェア・デバイス６９をプログラムすることができるような方法で、ソフトウェアおよびハードウェアと一緒に実行される。より詳細に説明すると、ソフトウェアは、密接な制御のために必要な情報が、中央処理装置（ＣＰＵ）プログラム７５を通してコントローラ・プログラムを開発する際に使用できるように、構成可能なハードウェア・デバイス６９をプログラムするための、エクスポートされたデバイス情報７３の形で供給される。次に、プログラム可能な制御デバイス６７は、（ａ）構成データの全部または一部を修正し、次に、その構成データを構成可能なハードウェア・デバイス６９内のレジスタに適用することにより、または、（ｂ）構成可能なハードウェア・デバイス６９のレジスタ内に含まれる構成データの全部または一部を直接修正することにより、構成可能なハードウェア・デバイス６９が、修正した構成データ７７を使用できるようにする。構成データ７７を使用して、構成可能なハードウェア・デバイス６９は、ソフトウェアによりプログラムされる。システムのソフトウェア機能は、従来技術システムの普通構成データの他に、構成可能なハードウェア・デバイス６９の機能の全部または一部を修正するために、第２の構成可能なデバイスが使用することができるコードを発生する。
【００３０】
プログラム可能な計算デバイス６３は、マイクロコントローラ・ユニット（ＭＣＵ）５５、メモリ８１、設計ツール８３、および構成可能なアナログ・モジュール（ＣＡＭ）ライブラリ８５を含む。ＭＣＵ５５は、処理回路７６を備える中央処理装置（ＣＰＵ）７９を含む。
【００３１】
設計ツール８３は、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２を備える。Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒの初期のバージョンは、現在公開でダウンロードすることができ、英国、Ａｎａｄｉｇｍ社から、ｈｔｔｐ：／／ｗｗｗ．ａｎａｄｉｇｍ．ｃｏｍで現在公開でダウンロードして使用することができる。この設計ツールは、引用によって本明細書の記載に援用する。今後の公開バージョンは、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒの初期のバージョンに追加される本発明のいくつかの機能を含む。
【００３２】
図３および図４に示すように、設計ツール８３は、構成コンピュータ支援設計（ＣＡＤ）ツール７８を含む。構成（ＣＡＤ）ツール７８は、構成データ８２、アドレス・データ８４、および１つまたはそれ以上のデータ値アルゴリズム８６を含むコンピュータ・プログラム・コード８０を含む。
【００３３】
ＰＣ６５は、中央処理装置（ＣＰＵ）９４、メモリ９６、ユーザ・インタフェース８７、ユーザ・プログラム９８、コンパイラ１００、ライブラリ１０２、およびＣＰＵデバイス記述１０４を含む。ＣＰＵ９４は、処理回路１０６を含む。
【００３４】
プログラム可能な制御デバイス６７は、ユーザ・アプリケーション・プログラム１０８、メモリ１０１、およびユーザ・インタフェース８９を含む。ある実施形態の場合には、プログラム可能な制御デバイス６７は、中央処理装置（ＣＰＵ）５７を含む。アプリケーション・プログラム１０８は、アプリケーション・システム内でソフトウェアの監視および制御機能を行うためのコンピュータ・プログラム・コード１１０を含む。
【００３５】
図３および図４に示すように、構成可能なハードウェア・デバイス６９は、上記のある実施形態のように、フィールド・プログラム可能なアナログ・アレー（ＦＰＡＡ）５９を備える。ＦＰＡＡ５９は、メモリ１１２、および半導体デバイス上に位置するマイクロミニアチュア化した電子回路にようなハードウェア１１６を含む。メモリ１１２は、ハードウェア１１６を電気的に構成するための構成データを受信し、記憶するためのメモリ位置１１４を含む。ハードウェア１１６は、その機能が、メモリ１１２内に記憶されている構成データにより決まる電気的状態により変えることができるように、少なくとも一部を構成できるようになっている。ハードウェア１１６は、アナログ信号を処理するためのアナログ回路素子１１８を含む。
【００３６】
動作中、構成データの初期セット７１は、設計ツール８３により生成される。構成データ７１は、エクスポートされたデバイス情報７３によりコンパイラ１００に供給される。さらに、またはそうしたい場合には、構成データ７１は、ユーザ・プログラム９８を通してコンパイラ１００に供給される。引用によって本明細書の記載に援用する、「プログラム可能な半導体デバイスを構成するための方法」という米国特許第６，２７２，６６９　Ｂ１号が、構成可能な半導体デバイスの構成方法をさらに詳細に開示している。
【００３７】
あるシステム構成の場合には、構成可能なハードウェア・デバイス６９は、メモリ１１２内に複数のメモリ位置１１４を含む。構成可能なハードウェア・デバイス６９は、直列周辺インタフェース（ＳＰＩ）バス９３のような通信リンク９１を通してプログラム可能な制御デバイス６７に接続している。ある場合には、コンピュータ・プログラム・コード８０は、第１のコンピュータ・プログラム・コードを備え、コンピュータ・プログラム・コード１１０は、第２のコンピュータ・プログラム・コードを含む。第１のコンピュータ・プログラム・コードは、プログラム可能な計算デバイス６３で実行される。第２のコンピュータ・プログラム・コードの少なくとも一部は、第１のコンピュータ・プログラム・コードにより生成される。ある場合には、第２のコンピュータ・プログラム・コード全体が、第１のコンピュータ・プログラム・コードにより生成される。しかし、このような場合は非常に希である。他の場合には、第２のコンピュータ・プログラム・コードの一部は、第１のコンピュータ・プログラム・コードにより生成され、他の一部はユーザ・インタフェース８７を通してユーザ入力により生成される。例えば、（図３および図４の）任意のユーザ・インタフェース８９を生成するために追加のコードを供給することもできる。
【００３８】
動作中、第２のコンピュータ・プログラム・コードは、構成可能なハードウェア・デバイス６９内の選択したメモリ位置に構成データ７７を適用することにより構成可能なハードウェア・デバイス６９を構成するために、プログラム可能な制御デバイス６７内で実行される。第２のコンピュータ・プログラム・コードも、構成に関連する新しい情報を含むように修正されるメモリ位置１１４のようなプログラム可能なメモリ位置のサブセットの位置を決定するために、プログラム可能な制御デバイス６７で実行される。さらに、第２のコンピュータ・プログラム・コードは、メモリ位置１１４のサブセットに適用される新しいデータ値を決定するために、プログラム可能な制御デバイス６７で実行される。
【００３９】
手動プログラミングを必要とする代わりに、設計ツール８３は、構成、位置の決定、および新しいデータ値の決定の中の少なくとも１つを実行する際に使用することができる構成データ、アドレス・データ、およびデータ値アルゴリズムの中の少なくとも１つを供給する。ある場合には、設計ツール８３は、構成データ、アドレス・データ、およびデータ値アルゴリズムの中の少なくとも１つを自動的に供給する。
【００４０】
図６〜図１０を参照しながら以下に説明するように、プログラム可能な制御デバイス６７は、構成可能なハードウェア・デバイス６９の構成可能なハードウェア１１６内に予めコンパイルした構成を単にロードすることに限定されない制御デバイスを供給する。代わりに、プログラム可能な制御デバイス６７には、動的動作中に、修正した構成データを生成するために必要な情報が供給され、それにより、プログラマによる手動コーディングが必要なくなる。例えば、利得機能の特定の例の上の利得パラメータを変更するために、ユーザにその利得機能に対する利得を設定するために、単にソフトウェア・ルーチンを呼出すための機能が供給される。一方、従来は、ユーザは、（ｉ）新しい利得を得るために必要な新しい構成要素値を決定しなければならなかったし、（ｉｉ）低いレベルの分析により、デバイス自身内で、または上記構成要素値を設定するための構成データ内で、プログラミング・データの位置を推理しなければならなかったし、（ｉｉｉ）ソフトウェア内である機構を組立て、それにより、データ値の置き換えを実行しなければならなかった。さらに、この結果により、デバイス６９の所与の基本的構成に対する性能パラメータを、修正することができるばかりでなく、デバイス６９に対する全く新しい機能に対する構成データを生成することもできる。他の方法としては、同じ機能を行うためにデバイス・リソースに再割当てを、異なる方法またはレイアウトで行うこともできるようになる。上記のすべてのことは、リアルタイムで、もとの構成ＣＡＤツール７８とは独立して行うことができる。
【００４１】
ある場合には、プログラム可能な計算デバイス６３、ＰＣ６５、およびプログラム可能な制御デバイス６７は、設計ツール８３を備える１台の共通のパソコンにより供給される。他の方法としては、プログラム可能な計算デバイス６３およびＰＣ６５は、独立コンピュータ支援設計コンピュータにより供給され、またプログラム可能な制御デバイス６７は、アプリケーション・ボード上に常駐するマイクロコントローラにより供給される。さらに他の方法としては、プログラム可能な計算デバイス６３、ＰＣ６５、およびプログラム可能な制御デバイス６７は、すべて個々のデバイスとして供給される。さらに、プログラム可能な制御デバイス６７は、実行目的により、構成可能なハードウェア・デバイス６９に密接に接続している。
【００４２】
種々の実施形態の場合、プログラム可能な制御デバイス６７は、マイクロプロセッサ、マイクロコントローラ、フィールド・プログラム可能なゲート・アレー（ＦＰＧＡ）、またはデジタル信号プロセッサ（ＤＳＰ）およびその他の多くの素子を備える。また、種々の実施形態の場合、構成可能なハードウェア・デバイス６９は、プログラム可能な論理デバイス（ＰＬＤ）、フィールド・プログラム可能なアナログ・アレー（ＦＰＡＡ）、フィールド・プログラム可能なゲート・アレー（ＦＰＧＡ）、または、デジタル信号プロセッサ（ＤＳＰ）およびその他の多くの素子を備える。
【００４３】
図５は、簡単な設計式、空の構成可能なデバイス、および代表的な構成データとともに、デバイスに対する構成プログラムにより構成することができる４つの可能な構成を含む必要な回路設計を示す仮定の構成可能なハードウェア・デバイスのための例示としての回路設計を示す。より詳細に説明すると、図３のブロック（ａ）内の回路レイアウト１２２は、仮定の構成可能なハードウェア・デバイスを示す。回路レイアウト１２２は、第１の回路素子「Ｘ」１２３、第２の回路素子「Ｙ」１２４、および利得素子１２５を含む。さらに、簡単な設計式、「（Ｙ／Ｘ）＝５に設定せよ」が供給される。ブロック（ｂ）は、空の構成可能なデバイスを示す。ブロック（ｃ）〜（ｆ）は、ブロック（ａ）に示す、仮定の構成可能なハードウェア・デバイスのための構成プログラムにより構成することができるいくつかの可能な構成を示す。残りの４つのブロック（ｃ）〜（ｆ）も、代表的な構成データを示す。入手できる唯一の情報が構成データである場合であって、デバイス・アーキテクチャおよびサブ回路の設置のより詳細なデータが入手できない場合には、任意の外部プログラムは、盲目的に構成ハードウェアをロードするくらいしかできない。回路またはそのパラメータに有用な変更を行うことができる任意のプログラムは、構成要素の設置位置および上記構成要素の値の設定基準についての他の情報も必要とする。それ故、構成可能なハードウェアのための構成データの一部の変更を可能にするために、プログラミング・デバイスの設計の流れ中に容易に使用することができる形のこのようなタイプの情報を供給する方法の開発が待望されている。
【００４４】
図６および図７は、緊密な制御のために必要な情報が、コントローラ・プログラムの開発の際の使用のために供給されるように、設計および構成ソフトウェアに追加される機能を示す。より詳細に説明すると、構成可能なデバイスをプログラムするためのソフトウェアがすでに開発されている。上記ソフトウェアは、構成データの他に、第１のデバイスの機能の全部または一部を修正するために、第２の構成可能なデバイスが使用することができるコードを生成する。
【００４５】
図６および図７は、ＣＰＵプログラム開発の流れ２１６に関連して、構成可能なハードウェアの開発の流れ２１４を示す。ＣＡＤツール７８は、デバイス記述２１８、機能ライブラリ８５、およびユーザ機能記述２２２の形で、入力を受信する。ＣＡＤツール７８は、２進ビット・ストリームを含む構成データ７１を出力する。ユーザ・プログラム９８またはエクスポートされたデバイス情報７３のパケットには、構成データ７１が供給される。
【００４６】
デバイス記述２１８は、デバイス・トポロジーに関する情報３８、リソース利用度に関する情報４０、およびデバイス制御アルゴリズム１２６を含む。
【００４７】
機能ライブラリ８５は、リソース要件に関する情報４２、シミュレーション・モデル４４、機能タイミングに関する情報４６、およびパラメータ計算アルゴリズム１２８を含む。
【００４８】
ユーザ機能記述２２２は、機能記述４８、および、「簡単な」または「ＶＨＤＬ」ハードウェア表現５０を含む。
【００４９】
ＣＡＤツール７８は、リソース割当てに関する情報５２、位置および経路情報５４、ネットリスト変換情報５６、構成発生情報５８、および設計／デバイス情報エクスポートの詳細１３０を含む。構成可能なハードウェア開発の流れ２１４を実行すると、ＣＰＵプログラム開発の流れ２１６内のユーザ・プログラム９８に送られる、エクスポートされたデバイス情報７３が発生する。
【００５０】
ＣＰＵプログラム開発の流れ２１６は、ユーザ・プログラム９８、コンパイラ１００、ライブラリ１０２、ＣＰＵデバイス記述１０４、ＣＰＵプログラム７５、およびＣＰＵ５７を含む。
【００５１】
ユーザ・プログラム９８は、「Ｃ」言語、アセンブリ言語、ＰＡＳＣＡＬを含む、種々のプログラミング言語、または任意の他の類似のプログラミング言語で供給することができる。ライブラリ１０２は、浮動小数点ライブラリ６０、周辺ライブラリ６２、およびアルゴリズム・ライブラリ６４を含む。ＣＰＵデバイス記述１０４は、デバイス・トポロジーに関する情報６６、およびリソース利用度に関する情報６８を含む。
【００５２】
動作中、ユーザ・プログラム９８は、エクスポートされたデバイス情報７３を含み、コンパイラ１００は、（「Ｃ」言語のような）比較的高いレベルのプログラミング言語から機械語に、結果として得られるプログラムをコンパイル、または変換するために、ユーザ・プログラム９８、ライブラリ１０２、およびＣＰＵデバイス記述１０４を受信する。コンパイラ１００は、最初、アセンブリ言語を生成し、次に、アセンブリ言語を機械語に変換する。それ故、コンパイラ１００は、ビット・ストリーム出力を含むＣＰＵプログラム７５を生成する。
【００５３】
ＣＰＵプログラム７５は、プログラム可能な制御デバイス６７に送られる。ある形の場合には、プログラム可能な制御デバイス６７は、ＣＰＵ５７の形で供給される。この場合、プログラム可能な制御デバイス６７は、構成データ７７を発生するために、ＣＰＵプログラム７５を処理する。次に、上記構成データ７７は、構成可能なハードウェア・デバイス６９内のアナログ素子を構成または再構成するために、構成可能なハードウェア・デバイス６９に送られる。すでに図２で示したように、プログラム可能な制御デバイス６７は、ＳＰＩバス９３のような通信リンク９１を通して、構成可能なハードウェア・デバイス６９と通信する。
【００５４】
エクスポートされたデバイス情報７３は、デバイス特定マッピング情報およびアルゴリズム１３２、および設計特定マッピング情報およびアルゴリズム１４４を含む。デバイス特定マッピング情報およびアルゴリズム１３２は、デバイス特定アルゴリズム１３４、設計−デバイス・マッピング情報１３６、ハードウェア構成データ１３８、設計−デバイス・メモリ・マップ情報１４０、および設計修正アルゴリズム１４２を含む。設計特定マッピング情報およびアルゴリズム１４４は、機能パラメータ計算アルゴリズム１４６、および機能パラメータの設置と設置された構成要素１４８との間の関係マッピング情報を含む。これについては、図８および図９を参照しながら、以下にさらに詳細に説明する。
【００５５】
機能ライブラリ８５は、リソース要件に関する情報４２、シミュレーション・モデル情報４４、機能タイミング情報４６、およびパラメータ計算アルゴリズム１２８を含む。
【００５６】
ＣＡＤツール７８は、ユーザ機能記述２２２、およびデバイス記述２１８を含む。ユーザ機能記述２２２は、簡単な捕捉情報１５０を含む。デバイス記述２１８は、デバイス・トポロジーに関する情報３８、リソース利用度情報４０、およびデバイス制御アルゴリズム１２６を含む。
【００５７】
図５に示すように、機能ライブラリ８５は、ＣＡＤツール７８に、ＣＡＭライブラリ内の構成可能なアナログ・モジュール（ＣＡＭ）の形で入力を供給する。すべては、構成可能なハードウェア開発の流れ２１４内にある。ＣＡＤツール７８は、最初、構成可能なハードウェア・デバイス６９、またはＣＰＵプログラム開発の流れ２１６中に、直接コンパイラ１００に供給される構成可能なデバイス・データ・セット９７を生成する。構成可能なデバイス・データ・セット９７は、（図６および図７の）エクスポートされたデバイス情報７３のサブセットを供給する。構成可能なデバイス・データ・セット９７は、デバイス・ライブラリ１５２、設計ライブラリ１５４、および構成データ７７を含む。
【００５８】
デバイス・ライブラリ１５２は、デバイス・タイプに関する情報１５６、チェックサム計算情報１５８、データ・フォーマット情報１６０、デバイス構成ルーチン情報１６２、およびデバイス特定アルゴリズム１６４を含む。
【００５９】
設計ライブラリ１５４は、初期構成データ７１、サブ回路および構成要素設置データ１６８、およびデータ・フォーマット情報１７０を含む。
【００６０】
ユーザ・プログラム９８、コンパイラ１００、ライブラリ１０２、ＣＰＵデバイス記述１０４、およびＣＰＵプログラム７５の詳細は、図６および図７のところで説明したものとほぼ同じである。
【００６１】
図８および図９のソフトウェア強化は、機能ライブラリ８５内のＣＡＭ内、およびプログラム・コード・ルーチン、およびＣＡＤツール７８内に位置するＣＡＤソフトウェア内に位置するアルゴリズムにより行われる。より詳細に説明すると、ＣＡＭ内のアルゴリズムは、ユーザ特定パラメータを構成要素値およびトポロジーに変換するのに必要な、アルゴリズムを記述するための動作する。ある実施形態の場合には、このようなアルゴリズムは、「Ｃ」言語ルーチンとして実行される。しかし、このようなアルゴリズムは、高級言語でも同様に表示することができ、目的コードとしてコンパイルすることさえできる。これらのコード・ルーチンは、特に、回路設計の設計段階中に、ユーザが生成した回路を修正するために生成される。
【００６２】
一組のコード・ルーチンが、構成データ・アセンブリ、チェックサム再生成、デバイス内での機能の再配置、およびよく使用される計算ルーチンのような基本的機能を実行する。
【００６３】
ＣＡＤツール７８内のＣＡＤソフトウェアは、構成データにより実行される回路のための一組のコードを生成するために、位置および経路ルーチン情報を上記の一組のコード・ルーチンと結合する。発生した一組のコードは、プログラム可能な制御デバイス６７を通して構成可能なハードウェア・デバイス６９を再構成する際に使用するための、修正構成データを生成することができるＣＰＵプログラム７５を生成するために、（コンパイラ１００のような）ユーザの「Ｃ」コンパイラにより直接送ることができる。
【００６４】
上記技術は、（図８および図９の）ＣＡＤツール７８のようなＣＡＤツール内の一組のサブ・アセンブリ回路（または、サブ回路）をアセンブルすることにより、１つの回路を設計するための方法を供給する。設計すると、ＦＰＡＡのようなプログラム可能なデバイス内で回路を実行することができる。（図８および図９の）ＣＡＤツール８３は、回路設計を、デバイスをプログラムするために必要な正しくフォーマットされたデータに変換するための機構である。ＣＡＤツールにアセンブルすることができるサブアセンブリ回路は、ＣＡＤツールと互換性を持つが、ＣＡＤツールの一体部分ではない。サブアセンブリ回路は、個々にまたはグループで持ち運ぶことができる回路と定義することができる。それ故、サブアセンブリ回路の定義は、ＣＡＤツールとの互換性を維持しながら、その機能を変更するために容易に生成または修正することができるものということになる。
【００６５】
サブアセンブリ回路の定義は、いくつかのことを実行するために必要なサブアセンブリ回路に関する情報を含む。サブアセンブリ回路の定義は、サブアセンブリ回路の複数の構成、トポロジー、およびパラメータを定義するために必要な情報を含む。
【００６６】
さらに、アルゴリズムの形をしている情報は、ＣＡＤツール内に記憶しているデータ、およびＣＡＤツールにより実行したユーザ・インタフェースからのデータと結合した場合、必要な情報をＣＡＤツールに戻すような方法で実行することができる。例えば、ユーザの選択に応じて行うサブアセンブリ回路の構成の修正に関する情報は、この方法で処理することができる。
【００６７】
それ故、図８および図９のＣＡＤツール８３は、サブアセンブリ回路定義内に含まれているデータを読み出すことができ、ユーザが、サブアセンブリ回路をもっと大きな回路にアセンブルすることができるユーザ・インタフェースを供給することができ、ユーザが、そのサブアセンブリ回路の構成および／または行動を変更することができるように、各サブアセンブリ回路用のユーザ・インタフェースを供給することができ、サブアセンブリ回路定義に含まれているインタープリタ・コードを実行することができ、特定のプログラム可能なデバイス向けの機能を含むユーザ・インタフェースを供給することができ、サブアセンブリ回路定義内に含まれている回路設計および情報を使用して、シミュレーションを設定および実行することができ、シミュレーションの結果を見ることができ、プログラム可能なデバイスにデータをダウンロードするために、回路設計を適当にフォーマットしたデータに変換することができ、プログラム可能なデバイスへの適当にフォーマットしたデータのダウンロードを簡単に行うことができる。
【００６８】
上記技術を使用することにより、サブアセンブリ回路のトポロジー、サブアセンブリ回路のトポロジーと、ユーザ・インタフェースが表示するより高度なパラメータへの構成要素の値との関係、およびシミュレーションが示すサブアセンブリ回路の性能を含む有意の設計の専門知識をサブアセンブリ回路定義内に収容することができる。サブアセンブリ回路の定義は、ＣＡＤツールと協力して、プログラム可能なデバイスのアーキテクチャの特定の詳細を含むものということになる。それ故、この技術を使用する人は、回路設計の専門家である必要もなく、またはプログラム可能なデバイスの専門家である必要もなく、サブアセンブリ回路、およびＣＡＤツールのユーザ・インタフェースが表す、より高度な要約内で作業することができる。それにより、回路設計およびこれら回路のＦＰＡＡチップをプログラムするための適当なフォーマットへの変換を迅速にまた容易に行うことができる。
【００６９】
図８および図９に示すように、機能ライブラリ８５内のＣＡＭ内のアルゴリズムは、ユーザが指定したパラメータを、構成要素値およびトポロジーに変換するために必要なアルゴリズムを記述するために動作する。本質的には、各ＣＡＭ内には、アルゴリズムのコアを供給するプログラミング・コードの小さなセグメントが存在する。アプリケーション・プログラミング・インタフェース（ＡＰＩ）ソース・コードを生成する場合に、特定のＣＡＭに関連するプログラミング・コードのすべての小さなセグメントは結果として得られる設計内に一体に集められる。本質的には、ソース・コードの小さなセグメントは、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２が、回路設計の各ＣＡＭ内に存在するこれらからの、すべてのソース・コード・セグメントの集合体を含むＡＰＩソース・コード・ファイルのグルーブを生成するようにアセンブルされる。それは、また、以下に説明するように、他の有用なシステム・レベルの機能定義、およびメモリ・マップを含む。このようなプログラミング・コード・セグメントは、一緒に集められ、（図８および図９の）ＣＰＵプログラム７５が表す、結果として得られるアプリケーション・プログラムに容易にコンパイルされる形にされる一組のＡＰＩソース・コード・ファイルに集められる。
【００７０】
各プログラミング・コード・セグメンは、回路設計の際に使用される各ＣＡＭに、上記ＣＡＭに関連する全回路構造に、およびその回路を実行するＦＰＡＡのアーキテクチャに絶対的に特有なものである。ユーザが、３つの一意のサブアセンブリ回路構成要素（または、ＣＡＭ）を含む回路を組立てた場合には、上記の３つの各機能デバイスは、抽出されるそれ自身の機能特定プログラミング・コード・セグメントを持つ。次に、このような３つの機能すべては、ＣＡＭプログラミング・コード・ファイル内の機能定義となる。
【００７１】
より詳細に説明すると、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２は、ユーザが、（図１４に示す）略図の中に描く特定の回路設計を採用し、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２は、フィールド・プログラム可能なアナログ・アレー用のシリコン・レイアウト内で使用することができるリソースからユーザが供給する機能を含む。Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２は、実際に、本物のリソースを使用するトポロジーを選択し、結果として得られる回路構造を実行するために、どの物理的構成要素を使用するのかを決定する。Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２が、どの物理的構成要素を使用しようとしているのかを決定した場合には、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２は、これら物理的構成要素が、ＦＰＡＡ（または、チップ）内に物理的に常駐している場所を知る。それ故、更新する必要があるメモリ位置のアドレスは分かっている。
【００７２】
ユーザが回路を形成すると、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２は、それを実行するためにＦＰＡＡ内で既知の低いレベルのリソースを割り当てるので、これらリソースをプログラムするメモリ位置のアドレスを記述することができる。設計が終了すると、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２は、その設計に一意の構成データ、およびその設計に一意のコンパイルすることができる「Ｃ」コード・ファイルの集合体の両方を生成する。上記設計は、ＦＰＡＡ内のメモリ位置への値の再割当て方法に関するアルゴリズム情報、およびこれらの対応するメモリ位置が存在する場所に関するアドレス情報を含む機能定義の階層を含む。「Ｃ」コードは、簡単なハイレベルの機能呼出しにより、アルゴリズム、およびアドレス情報を呼び出すための非常に便利な手段を供給する。ユーザが、自分自身のコード内に、このようなハイレベルの機能呼出しを内蔵させると、（実行中）ソフトウェアは、回路設計に必要な変更を行うために、プログラミング命令を自動的に形成し、ＦＰＡＡに対して発行する。
【００７３】
それ故、「Ｃ」コードは、アルゴリズムを結合し、新しい値を計算し、更新しなければならない、またアプリケーションにより絶対に一意なメモリ・アドレスの点で規範的な他の機能呼出しを含む。
【００７４】
例えば、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２は、特定のサブアセンブリ回路に対して、例えば、低域フィルタ・ブロック内に位置する容量を割り当てる。上記容量は、デバイス内のどこかでなくなり、そのプログラミングは特定のアドレスを持つ。しかし、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２は、回路が形成されるまで、そのアドレスを知らない。アドレスが分かると、そのアドレス位置が物理的に報告され、１つの数字として「Ｃ」コードに内蔵される。「Ｃ」コードがコンパイルされて、その特定の設計のために使用されると、その一意のアドレスが分かり、ユーザは、「利得の変更」という機能を呼び出すだけでよく、コンパイルされた「Ｃ」コードを実行しているマイクロプロセッサが、（新しいデータおよびデータ自身の目標アドレスを含む）動的更新データ・セグメントを組立て、そのデータを、ＦＰＡＡに送りそれによりその行動を修正する。
１．設計例
図１０〜図１５は、付録Ａと一緒に、フィールド・プログラム可能なアナログ・アレー（ＦＰＡＡ）の部分的更新のための設計例を示す。付録Ａ内の「ＩＰモジュール」という用語は、構成可能なアナログ・モジュール（ＣＡＭ）を意味する。ＣＡＭは、（ＦＰＡＡのような）構成可能なデバイス内で実行される、利得反転機能のような、回路機能のソフトウェアの実施形態である。
【００７５】
始めに、図１０〜図１５は、下記の仕様および付録Ａと一緒に、埋設アプリケーション内のフィールド・プログラム可能なアナログ・アレーの部分的更新を行うためのプロセスを示す。この設計例の目的は、Ａｎａｄｉｇｍ　ＡＮ２２０Ｅ０４　ＦＰＡＡを構成する際に、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２から生成した「Ｃ」コードにより、比較的簡単にＣＡＭを更新することができることを示すことである。
【００７６】
この設計例により、最初に、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２によるある設計を生成するプロセスを説明する。次に、「Ｃ」コードを発生するために、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２を使用するプロセスを説明する。最後に、発生した「Ｃ」コードを例示としてのアプリケーションに内蔵させるプロセスを説明する。
【００７７】
この設計例のために、図１０に示すＡｎａｄｉｇｍ　ＡＮ２０ＰＤＳ３０開発システム９０の形の、ユーザ・アプリケーションを実行するためのアプリケーション環境が供給される。開発システム９０は、ユーザ・アプリケーション・プログラム１０８を実行するためのデジタル・ボード９２、およびアナログ回路（または、アナログ回路素子）１１８を実行するためのアナログ・ボード９５を含む。
【００７８】
図１０に示すように、プログラム可能な計算デバイス６３およびＰＣ６５は、両方とも、プログラム可能な制御デバイス６７と通信する共通のデバイス６３／６５内に位置する。プログラム可能な制御デバイス６７は、通信リンクを通して構成可能なハードウェア・デバイス６９と直接通信する。デバイス６３／６５は、ＣＡＤ設計ツールのような設計ツール８３を含む。設計ツール８３は、図４および５のところですでに説明した構成可能なハードウェア開発の流れ１４、およびＣＰＵプログラム開発の流れ１６を含む。
【００７９】
デジタル・ボード９２は、ユーザ・アプリケーション・プログラム１０８、デバイス６３／６５と通信するためのＲＳ−２３２ポート１７６、デジタル・ボード９２に電力を供給するための電力コネクタ１８４、マイクロコントローラ・ユニット（ＭＣＵ）５５、ＬＣＤディスプレイ１７２、アプリケーション・スイッチ１７８、構成スイッチ１８０、およびリセット・スイッチ１８２を含む。ＭＣＵ５５は、処理回路を含む中央処理装置（ＣＰＵ）５７を含む。
【００８０】
アナログ・ボード９５は、アナログ回路素子１１８、ドーターボード・コネクタ１８６、ＡＮ２２０Ｅ０４　ＦＰＡＡ５９、ブレッドボード領域１８８、直列ＥＥＰＲＯＭソケット１９０、デイジー・チェーン・コネクタ１９２、一連のシングルエンド入力１９４、および一連のシングルエンド出力１９６を含む。
【００８１】
ユーザ・アプリケーション・プログラム１１８が、ＭＣＵ５５上で稼動している場合には、ソフトウェアは、ＦＰＡＡ５９に構成情報を送り、それにより必要な更新を行うことができる。
【００８２】
図１１は、ＦＰＡＡ５９内に位置するアナログ・マルチプレクサ（ＭＵＸ）の使用法および利得反転ＣＡＭの使用法を説明するための抵抗ネットワークである。この機能を説明するために、抵抗ネットワーク回路１９８をセットアップし、次に、いくつかの抵抗の両端の電圧降下を測定する。図１１は、ＦＰＡＡ５９と一緒に、このようなネットワークの基本的な略図を示す。
【００８３】
図１１に示すように、抵抗ネットワーク１９８は、ＦＰＡＡ５９に対して配列されている抵抗２００−２０５を含む。
【００８４】
より詳細に説明すると、ＡＮ２２０Ｅ０４　ＦＰＡＡ５９の入力セル４は、複数の入力を備える。これらの複数の入力は、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２により、または「Ｃ」コード機能により選択することができる。より詳細に説明すると、（図１０の）設計ツール８３で示す、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２から一次構成が実行される。他の構成は、（図１０の）ユーザ・アプリケーション・プログラム１０８により、動的更新により実行することができる。複数の入力を選択することができるので、ユーザ・アプリケーション・プログラムは、任意の特定の時間に、どの抵抗を測定すべきかを決定することができる。ブレッドボード（図１０のブレッドボード領域１８８）を使用することにより、検査中の設計への結果としての影響をチェックするために、任意の時間に抵抗を変更することができる。
【００８５】
図１２は、利得反転段２０６として図示してある利得反転ＣＡＭの詳細図である。図１１のフィールド・プログラム可能なアナログ・アレー内には、各入力の両端でユーザが測定する電圧を増幅するために、利得反転段２０６が設置されている。図１２のブロック図は、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２内の利得反転ＣＡＭが供給するような上記利得反転段のレイアウトを示す。
【００８６】
図１３〜図１５は、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２内で、図１２の利得反転段２０６を実行する特定のアナログ回路のセットアップを示す。Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２のアプリケーションをスタートすることにより、ユーザに対して、設計ツール・アプリケーション・ウィンドウ２０８内の、図１３に示すスクリーン・ディスプレイ２１０が表示される。ＡＮ２２０Ｅ０４　ＦＰＡＡチップ設計２２０は、特定のチップ設計の形成ができるように、作業空間２１２内に位置する。
【００８７】
スクリーン・ディスプレイ２１０は、ヘッダ２２４、ユーザが選択できるように、複数のメニュー項目２２８が表示されているメニュー・バー２２６、複数の選択可能なツール・バー・ボタン２３２が表示されているツール・バー２３０を含む。
【００８８】
図１３に示す特定のメニュー項目２２８および２２９を除いて、メニュー・バー２２６の残りのメニュー項目は、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２の初期のバージョンであるＡｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒで現在使用することができる。さらに、本発明がわかりにくくなると困るので、このような他のメニュー項目の機能については、本明細書では詳細に説明しない。代わりに、「Ｃ」コード・メニュー項目２２８および「目標」メニュー項目２２９の追加の機能、および詳細について以下に詳細に説明する。チップ設計２２０は、特定のチップ設計がＡｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２により生成される初期テンプレートを供給する。より詳細に説明すると、チップ設計２２０は、複数の入力セル２３４、２３６、２３８および２４０、および複数の出力セル２４２および２４４を含む。
【００８９】
図１４の回路のところに行き着くために、図１３の斜視図から下記のステップが行われる。最初に、ユーザは、入力セル２３８をダブルクリックし、チョッパ・アンプおよび偽信号防止フィルタをオフにする。この動作により、入力セル２３８はバイパス・モードになり、そのため、ユーザは、結果として得られる入力を（図１２の）利得反転段２０６に対応する、必要なＣＡＭに直接接続することができる。
【００９０】
その後で、ユーザは、出力セル２４２をダブルクリックし、このセルをバイパス・モードにする。さらに、ユーザは、出力セル２４２をダブルクリックし、バイパス・モードにする。次に、ユーザは、チップ２２０上に、（図１２の）利得反転段２０６に対応する利得反転段ＣＡＭを置く。次に、ユーザは、モジュールの利得を１０に設定する。次に、ユーザは、ツール・バー２３０内の適当なツール・バー・ボタン２３２により、入力セル２３８の出力を利得反転ＣＡＭ２４６の入力に送る。（図１４参照）。その後で、ユーザは、利得反転ＣＡＭ２４６の出力を、図１４に示すように出力セル２４２および、２４４に送る。図１４に示すように、これらステップの最終結果は、チップ２２０により実行された有線利得反転ＣＡＭとなる。
【００９１】
一般に使用することができ、市販のＡｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒで現在使用することができる機能に対して、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２に行われた改善としては、図１４の利得反転ＣＡＭ２４６のようなＣＡＭ構造から「Ｃ」コードを生成する機能等がある。アナログ回路の特定のレイアウトが設計されると、ユーザは、必要なアプリケーションに対して「Ｃ」コードを生成することができる。「Ｃ」コード機能を持つすべてのＣＡＭおよびＩ／Ｏセルは、デフォールトで、対応する「Ｃ」コードを発生するように構成される。このような結果は、本明細書に記載する目的に適していて、本発明により実行される。図１０の「Ｃ」コード・メニュー項目２２８を選択することにより、種々の位置へ構成（図示せず）を書き込むための複数のオプションに対して、プルダウン・メニューが表示される。例えば、「Ｃ」コード・メニュー項目２２８を選択すると、「Ｃ」コードを「生成する」ための選択項目を含むプルダウン・メニューが表示される。さらに、プルダウン・メニューは、「生成オプション」をチェックするための選択項目を含む。さらに、構成プルダウン・メニューは、「ＣＡＭ機能」をチェックするための選択項目も含む。
【００９２】
「生成オプション」選択項目（図示せず）は、一般的な情報、再構成情報、一次構成情報、およびクロック情報を含む、生成オプションの調整を含む。例えば、名前をつける場合に起こる恐れがある現存のコードとの重複を避けるために、各タイプ、定数、変数オプション１機能名に、１つの文字列を前に付加することができる。例えば、発生する恐れがある名前の重畳を避けるために、すべての生成した「Ｃ」コードの前に、接頭語「ａｎ＿」を付加することができる。さらに、ＡＮＳＩ　Ｃ規格に適合するように、名前を内部名称の最初の３１文字に制限するように、限定された文字数に名前の頭切りを調整する機能もある。
【００９３】
「生成」選択項目を選択する場合には、図１５に示すように、ポップアップ「Ｃ」コード生成対話ウィンドウ２５２が表示される。図１５の対話ウィンドウ２５２は、「Ｃ」コード・メニュー項目２２８の対応するプルダウン・メニューから、「生成」選択項目を選択すると表示される。そうしたい場合には、「Ｃ」コード・メニュー項目２２８を、図１５の対話ボックス２５２に直接入れることもできるが、このような実行は、１つの方法で構成データを書き込む場合にしか使用できない。
【００９４】
図１３および図１４に示すように、「目標」メニュー項目２２９は、ボード情報を表示したり、および／または選択したフラッシュ・メモリ位置に、アプリケーションをダウンロードするためのものである。「目標」メニュー項目２２９を選択すると、「ボード情報を表示」するために、選択項目を表示するプルダウン・メニューが表示される。さらに、「フラッシュ１にアプリケーションをダウンロードする」ために、選択項目が表示される。さらに、「フラッシュ２にアプリケーションをダウンロードする」ために、選択項目が表示される。それ故、ユーザは、対応する結果を生成するために、プルダウン・メニューから項目の中の１つを選択することができる。
【００９５】
結果として得られる「Ｃ」コードが、デフォールトで、ユーザがすでに回路ファイルをセーブしているディレクトリ中にセーブされる。ユーザがそうしたい場合には、ユーザは、結果として得られるプルダウン・メニュー内の他の項目を選択するというように、結果として得られる「Ｃ」コードをセーブするために、他の位置を選択することができる。さらに、ユーザは、ファイル名を変更することもできるが、この例示としての説明のためには、デフォールト値を使用する。対話ウィンドウ２５２を生成した場合には、ユーザは、発生ボタン２７８をクリックする。次に、結果として得られる「Ｃ」コードが、特定のディレクトリに書き込まれると、ユーザに通知が行われる。本明細書の付録Ａは、このような動作の結果として得られるコードを示すが、これは単に例示としてのものに過ぎない。
【００９６】
図１５に示すように、ポップアップ対話ウィンドウ２５２は、ヘッダ２５４、生成ボタン２７８、ＡＰＩ「Ｃ」コード・ファイル・フィールド２５６、ＣＡＭ「Ｃ」コード・ファイル・フィールド２５８、および宛先ディレクトリ・フィールド２６０を含む。ＡＰＩ「Ｃ」コード・ファイル・フィールド２５６は、一組のＡＰＩファイル入力フィールド２６２および２６４を含む。ＣＡＭ「Ｃ」コード・ファイル・フィールド２５８は、一組のＣＡＭフィールド入力フィールド２６６および２６８を含む。宛先ディレクトリ・フィールド２６０は、一組の選択可能なラジオ・ボタン２７０および２７２を含む。ラジオ・ボタン２７０は、関連ディレクトリ・ファイル入力フィールド２７４を含み、一方、ラジオ・ボタン２７２は、関連ディレクトリ・ファイル入力フィールド２７６を含む。
【００９７】
さらに、ポップアップ対話ウィンドウ２５２は、クローズ・ボタン２８０、ヘルプ・ボタン２８２、生成オプション・ボタン２８４、およびＣＡＭ機能ボタン２８６を含む。
【００９８】
この設計例のところで説明したように、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２が生成した「Ｃ」コードは、必ずしもそれ自身有用ではない。「Ｃ」コードは、通常、必要に応じて、他の種々のコード・ルーチンを呼び出す、もっと大きなソフトウェア・プロジェクトに内蔵させなければならない。例えば、デバイス情報７３は、図３および図４に示すように、設計ツール８３からＰＣ６５にエクスポートされる。ＰＣ６５内においては、ユーザ・プログラム９８、ライブラリ１０２、およびユーザ・インタフェース８７により、他の入力を、（図３および図４の）ＣＰＵプログラム７５を生成するもっと大きなプロジェクト内に収容することができる。
【００９９】
上記例の設計アプリケーションも、付録Ａに詳細に示すように、追加のコードをもっと大きなプロジェクトに収容している。例示としての設計アプリケーションは、入力セル２３８のいくつかの入力を切り替えるために、設計のいくつかの利点を利用する（図１４参照）。例示としての設計アプリケーションは、また、各チャネル用の利得モジュールに対して独立している設定を持つ。ユーザがチャネルを切り替えると、利得モジュールは、それぞれ適当な設定に更新される。それ故、このような例示としての設計アプリケーションにより、ユーザは、どのチャネルが現在使用中なのかを制御することができる。第二に、このアプリケーションと使用すれば、ユーザは使用時に各チャネルの利得を制御することができる。第三に、このアプリケーションにより、ユーザは、（図１４の）４つのチャネルを通して絶えず回転することができる。最後に、このアプリケーションにより、ユーザは、４つのチャネルを必要な出力設定に校正することができる。付録Ａは、結果として得られる例示としての設計アプリケーションを示す。この付録Ａは、各ソース・コードを含む本明細書に含まれている。
【０１００】
ソフトウェアの動作中、この例示としての設計アプリケーションは、「Ｃ」コード・ライブラリを初期化し、ＣＡＭを必要に応じて調整し、ＡＮ２２０Ｅ０４ＦＰＡＡを更新する目的で、データ・ストリームを生成するために、いくつかの機能を呼び出す必要がある。より詳細に説明すると、この例示としての設計アプリケーションは、ＡＰＩおよびＣＡＭ「Ｃ」コード機能を呼び出さなければならない。
【０１０１】
最初に、「Ｃ」コード・ＡＰＩライブラリを初期化しなければならない。この初期化は、ＩｎｉｔｉａｌｉｚｅＲｅｃｏｒｄｉｎｇＤａｔａルーチンを呼び出すことにより行うことができる。
【０１０２】
ａｎ＿ＩｎｉｔｉａｌｉｚｅＲｅｃｏｎｆｉｇＤａｔａ（ａｎ＿ｃｈｉｐ１）；
この呼出しは、どのチップが再構成可能なＣＡＭであるかにより、チップ毎に行われる。
【０１０３】
チップが他の何らかの方法で構成されていない限りは、このアプリケーションがスタートした場合に、おそらく最初に構成を行わなければならない。ユーザは、ＧｅｔＰｒｉｍａｒｙＣｏｎｆｉｇＤａｔａルーチンを呼び出すことにより、一次構成に対するデータ・ストリームを検索することができる。
【０１０４】
ＰｒｉｍａｒｙＣｏｎｆｉｇＰｔｒ　＝　（ｕｎｓｉｇｎｅｄ　ｓｈｏｒｔ　ｉｎｔ　＊）
ａｎ＿ＧｅｔＰｒｉｍａｒｙＣｏｎｆｉｇＤａｔａ（ａｎ＿ｃｈｉｐ１，＆ＣｏｎｆｉｇＳｉｚｅ）；
これは、バッファへのポインタおよび構成のサイズを検索する。データがチップに到着する方法は、特定のアプリケーションにより異なる。この場合、データをチップにストリームの形で供給するために、ＨＣ１６のＱＳＰＩポートを使用することができる。
【０１０５】
ソフトウェアの動作中、ＣＡＭ特性を「Ｃ」コードにより変更しなければならない場合には、このアプリケーションは、そのモジュールのための「Ｃ」コード機能を呼び出さなければならない。アナログＭＵＸの場合には、ＳｅｔＰａｄＳｅｌｅｃｔ機能を呼び出すことができる。
【０１０６】
ａｎ＿ｓｅｔＰａｄＳｅｌｅｃｔ（ａｎ＿ｃｈｉｐ１＿ＩｎｐｕｔＣｅｌｌ４，　ＭｕｘＢｉｔ（ＣｈａｎｎｅｌＬｏｏｐ））；
利得モジュールの場合には、ＳｅｔＧａｉｎ機能を呼び出すことができる。
【０１０７】
ａｎ＿ｓｅｔＧａｉｎ（ａｎ＿ｃｈｉｐ１＿ＧａｉｎＩｎｖ，　ＧａｉｎＭｉｄ）；
これらの機能の詳細を知りたい場合には、ユーザは、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２のＣＡＭ特性の、「Ｃ」コード・ボタンをクリックすることができる。
【０１０８】
ＣＡＭ機能は、チップのいかなる特性も変更しないことに留意されたい。ＣＡＭ機能は、単に、構成ストリームをセットアップするだけである。このストリームがチップにダウンロードされると、特性が変化する。
【０１０９】
このアプリケーションが、ＡＮ２２０Ｅ０４　ＦＰＡＡを更新する準備ができている場合には、このアプリケーションは、ＧｅｔＲｅｃｏｎｆｉｇＤａｔａルーチンを呼び出す。
【０１１０】
ＣｏｎｆｉｇＰｔｒ　＝　（ｕｎｓｉｇｎｅｄ　ｓｈｏｒｔ　ｉｎｔ　＊）ａｎ＿ＧｅｔＲｅｃｏｎｆｉｇＤａｔａ（ａｎ＿ｃｈｉｐ１，＆ＣｏｎｆｉｇＳｉｚｅ）；
次に、この場合、ユーザは、ＱＳＰＩポートを通して、チップにデータをストリームの形で送る。データが転送済みの場合には、ユーザは、ＣｌｅａｒＲｅｃｏｎｆｉｇＤａｔａルーチンを呼び出すことにより、構成バッファをリセットすることができる。
【０１１１】
ａｎ＿ＣｌｅａｒＲｅｃｏｎｆｉｇＤａｔａ（ａｎ＿ｃｈｉｐ１）；
ある特定の例の場合には、これは適用されないが、ユーザが構成バッファをクローズしなければならない場合には、ユーザは、各チップに対してＳｈｕｔｄｏｗｎＲｅｃｏｎｆｉｇＤａｔａルーチンを呼び出すことができる。
【０１１２】
「Ｃ」コードをこのアプリケーションに内蔵させた後で、ユーザは、任意の使用中のコンパイラによりコンパイルおよびリンクすることができる。ＨＣ１６の場合には、使用することができる適当なコンパイラは、Ｃｏｓｍｉｃ　Ｃ　Ｃｏｍｐｉｌｅｒスーツである。
【０１１３】
アプリケーションがコンパイルされ、リンクされた後で、ユーザは、ＨＣ１６（フラッシュ・メモリ）にＳ１９アプリケーション・ファイルをダウンロードすることができる。このダウンロードは、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２内の「Ｔａｒｇｅｔ−＞Ｄｏｗｎｌｏａｄ　ａｐｐｌｉｃａｔｉｏｎ　ｔｏ　ｆｌａｓｈ１］」メニュー・コマンドにより行うことができる。ユーザは、使用するためにＳ１９ファイルを選択することができ、その後で、Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２は、それをＨＣ１６に送る。Ａｎａｄｉｇｍ　Ｄｅｓｉｇｎｅｒ２は、ダウンロードが終了すると、ベルの音を送り、ＨＣ１６上のＡＢＫは、ＬＣＤディスプレイ上に、「Ｄｏｗｎｌｏａｄ　Ａｐｐ」を表示する。
【０１１４】
さて、ユーザは、ＡＮ２２０Ｅ０４　ＦＰＡＡに、抵抗ネットワークを接続しなければならないし、また、出力をチェックするために装置を試験しなければならない。ユーザが、利得を校正したい場合には、ユーザは、ＡＮ２２０Ｅ０４　ＦＰＡＡに、ＨＣ１６のアナログ／デジタル・コンバータを接続しなければならない。
【０１１５】
次に、電圧計を、出力の極性に注意しながら、出力セル１のピンの両端に接続しなければならない。差動出力が使用され、差動−シングルエンド変換回路は無視される。アナログ・ボード上のＪ８およびＪ７ジャンパを取り外すことにより、入力セルから、シングルエンド−差動変換回路を取り外す。
【０１１６】
図１１に示すように、抵抗ネットワークを接続する。ネットワークのアースをＡＮ２２０Ｅ０４　ＦＰＡＡのアースに接続し、ネットワークのＶｃｃをＡＮ２２０Ｅ０４　ＦＰＡＡのＡＶＤＤに接続する。この接続により、この回路に必要な電圧が供給される。必ず、入力セル４の各入力の極性に注意し、マイナスの側（すなわち、１４ＮＡ）をアースに接続している抵抗の側に、正の側（すなわち、１４ＰＡ）をＶｃｃに接続している抵抗の側に接続してほしい。
【０１１７】
アナログ回路の利得を校正するために、出力セル２をＨＣ１６のＡ／Ｄ回路に接続してほしい。アナログ・ボード（ＡＮ２２０Ｅ０４　ＦＰＡＡのＯ２Ｐ）のＰ２〜７をデジタル・ボードのＰ５〜７（ＨＣ１６のＡＮ０）に接続してほしい。アナログ・ボード（ＡＮ２２０Ｅ０４　ＦＰＡＡのＯ２Ｎ）のピンＰ２〜８をデジタル・ボードのＰ５〜５（ＨＣ１６のＡＮ２）に接続してほしい。
【０１１８】
ユーザは、デジタル・ボード上のスイッチＳ１を押して、アプリケーションをスタートすることができる。アプリケーションが始動し、現在必要な設計のためのＡＮ２２０Ｅ０４　ＦＰＡＡの構成を始める。
【０１１９】
構成が終了した後で、回路は正常に動作し、ソフトウェアは、ユーザの入力を受け入れることができるようになる。この場合には、我々の目的のために、デジタル・ボードのキーはすでに定義されている。より詳細に説明すると、二つのアプリケーション・スイッチ１７８（図１０参照）は、第１のアプリケーション・スイッチがチャネルを校正し、第２のアプリケーション・スイッチが、チャネルを通して回転する（他のスイッチをオフにする）ように再度定義されている。さらに、構成スイッチもすでに定義されている。より詳細に説明すると、第１の構成スイッチは、利得を＋０．５だけ増大するように定義されている。第２の構成スイッチは、利得を−０．５だけ低減するように定義されている。第３の構成スイッチは、「チャネル・アップ」するように定義されている。第４の構成スイッチは、「チャネル・ダウン」するように定義されている。
【０１２０】
ＬＣＤディスプレイ１７２（図１０参照）も、ユーザ・アプリケーション・プログラム１０８の現在の状態をユーザに示すために使用される。より詳細に説明すると、ＬＣＤディスプレイは、多重化ユニット（ＦＰＡＡのＭＵＸ）が現在設定されているチャネル、およびそのチャネルに割り当てられている利得を示す。
【０１２１】
Ｃｈａｎｎｅｌ　Ｕｐ／Ｄｏｗｎボタン（スイッチＳ５およびＳ６）により、ユーザは、アナログＭＵＸチャネルを切り替えることができる。Ｇａｉｎ　Ｕｐ／Ｄｏｗｎボタン（スイッチＳ３および、Ｓ４）を押すことにより、ユーザは、モジュール内の利得のレベルを制御することができる。
【０１２２】
再びＳ１を押すと、回転アルゴリズムがスタートする。１秒または２秒毎に、アプリケーションは、自動的に、（ＦＰＡＡの）アナログＭＵＸを次のチャネルに切り替えるか、（または、始めにラップアラウンドする）。アプリケーションは、また、そのチャネル上で最後に使用された利得に利得ＣＡＭを設定する。再び、Ｓ１を押すと、回転が停止する。回転中は、（リセットを除く）他のすべてのボタンは機能しない。
【０１２３】
Ｓ２を押すと、校正シーケンスがスタートする。アプリケーションは、校正する電圧は何ボルトであるのか問い合わせる。利得反転ＣＡＭが使用中なので、出力は負の電圧である。ボタンＳ−Ｓ６は、電圧を制御する。必要な校正点に達した場合再びＳ２を押せば、校正アルゴリズムがスタートする。アルゴリズムが進行するにつれて、ユーザは、ＬＣＤディスプレイおよび電圧計上でアルゴリズムの動作を見ることができる。校正が終了した後で、ＬＣＤディスプレイは、「Ｃａｌ　ｄｏｎｅ！」メッセージを表示する。その後で、ユーザは、任意のボタンを押すことにより、正常な動作に戻ることができる。
【０１２４】
校正後、ユーザは、各チャネルの出力がかなり安定しているかどうかを、見るために個々のチャネルをチェックすることができる。そうしたい場合には、ユーザは、電圧の変化を見るために抵抗をチェックし、必要な出力に戻すために再校正することができる。
【０１２５】
本発明の「Ｃ」コード機能は、ＡＮ２２０Ｅ０４　ＦＰＡＡ内のＣＡＭを動的に制御するための強力な方法を供給する。ユーザの埋設ソフトウェアに接続しているので、これは本当に柔軟なアナログ的解決方法である。
【０１２６】
図１６は、例示としての、構成可能なハードウェア・デバイス内に位置するアナログ素子の構成または再構成を実行するための方法を示す。
【０１２７】
図１６に示すように、論理のフローチャートは、構成可能なハードウェア・デバイス内のアナログ素子のための構成または再構成の実行ステップを示す。ステップ「Ｓ１」において、構成可能なハードウェア・デバイスは、プログラム可能な制御デバイスと通信している。ステップ「Ｓ１」を実行した後で、プロセスはステップ「Ｓ２」に進む。
【０１２８】
ステップ「Ｓ２」において、システムは、アナログ素子を含むハードウェア設計を生成する。ステップ「Ｓ２」を実行した後で、プロセスは、ステップ「Ｓ３」に進む。
【０１２９】
ステップ「Ｓ３」において、システムは、構成可能なハードウェア・デバイス内の選択したメモリ位置に、構成データを適用することによるアナログ素子の構成、（ｉ）プログラム可能なメモリ位置、および（ｉｉ）修正対象の構成データの少なくとも一方のサブセットの位置の決定、（ｉ）メモリ位置、および（ｉｉ）構成データの中の少なくとも一方のサブセットに適用される新しいデータ値の決定の中の少なくとも１つを実行する際に使用することができる、データおよびアルゴリズムの中の少なくとも一方を供給するコンピュータ・プログラム・コードを生成する。ステップ「Ｓ３」を実行した後で、プロセスは、ステップ「Ｓ４」に進む。
【０１３０】
ステップ「Ｓ４」において、システムは、エクスポートされたデバイス情報を含むコンピュータ・プログラム・コードを、プログラム可能な計算デバイスから、コンパイラにエクスポートする。ステップ「Ｓ４」を実行した後で、プロセスは、ステップ「Ｓ５」に進む。
【０１３１】
ステップ「Ｓ５」において、システムは、ハードウェアの再構成ができるように、パラメータの変更を構成データ上にマッピングする。ステップ「Ｓ５」を実行した後で、プロセスは、ステップ「Ｓ６」に進む。
【０１３２】
ステップ「Ｓ６」において、システムは、コンパイルしたプログラム・コードにより、構成可能なハードウェア・デバイスのハードウェアのための、構成データの選択的な修正ができるように、プログラム可能な制御デバイスが使用できるように、コンピュータ・プログラム・コードをコンパイルする。ステップ「Ｓ６」を実行した後で、プロセスは、ステップ「Ｓ７」に進む。
【０１３３】
ステップ「Ｓ７」において、システムは、構成可能なハードウェア・デバイスの構成を更新するために、コンピュータ・プログラム・コードを、アプリケーション・プログラムに内蔵させる。ステップ「Ｓ７」を実行した後で、プロセスは、ステップ「Ｓ８」に進む。
【０１３４】
ステップ「Ｓ８」において、システムは、構成可能なハードウェア・デバイス内のハードウェアを再構成するために、生成したコンピュータ・プログラム・コードを、プログラム可能な制御デバイスから構成可能なハードウェア・デバイスに転送することにより、構成可能なハードウェア・デバイスを再構成するために、プログラム可能な制御デバイスにアプリケーション・プログラムを送る。ステップ「Ｓ８」を実行した後で、プロセスは、ステップ「Ｓ９」に進む。
【０１３５】
ステップ「Ｓ９」において、システムは、構成可能なハードウェア・デバイスのハードウェアを再構成するために、プログラム可能な制御デバイスにより、構成可能なハードウェア・デバイスの構成データを更新する。ステップ「Ｓ９」を実行した後で、プロセスは終了する。
【０１３６】
図１７および図１８は、フィールド・プログラム可能なアナログ・アレーを構成するためのもう１つの例示としての方法である。この方法を実行する場合、フィールド・プログラム可能なアナログ・アレーは、プログラム可能な制御デバイスに接続している。
【０１３７】
図１７および図１８に示すように、論理のフローチャートは、フィールド・プログラム可能なアナログ・アレーの構成ステップを示す。ステップ「Ｓ１」において、プログラム可能な制御デバイスに接続している、フィールド・プログラム可能なアナログ・アレー（ＦＰＡＡ）内で、少なくとも１つのアナログ素子に対してハードウェア設計が供給される。ステップ「Ｓ１」を実行した後で、プロセスは、ステップ「Ｓ２」に進む。
【０１３８】
ステップ「Ｓ２」において、システムは、ＦＰＡＡ内の選択したプログラム可能なメモリ位置に、構成データを適用することによりアナログ素子を構成する際に、（ｉ）メモリ位置、および（ｉｉ）修正対象の構成データの少なくとも一方のサブセットの位置を決定する際に、（ｉ）メモリ位置、および（ｉｉ）構成データのうちの少なくとも一方のサブセットに適用される新しいデータ値を決定する際に使用することができるデータ・セットおよびプロセスのうちの少なくとも一方を含むコンピュータ・プログラム・コードを生成する。ステップ「Ｓ２」を実行した後で、プロセスは、ステップ「Ｓ３」に進む。
【０１３９】
ステップ「Ｓ３」において、システムは、コンピュータ・プログラム・コードの少なくとも一部を含むアプリケーション・プログラムを生成する。アプリケーション・プログラムは、フィールド・プログラム可能なアナログ・アレーの構成を更新するために動作する。ステップ「Ｓ３」を実行した後で、プロセスは、ステップ「Ｓ４」に進む。
【０１４０】
ステップ「Ｓ４」において、システムは、プログラム可能な制御デバイスのところで、アプリケーション・プログラムを受信する。ステップ「Ｓ４」を実行した後で、プロセスは、ステップ「Ｓ５」に進む。
【０１４１】
ステップ「Ｓ５」において、システムは、プログラム可能な制御デバイスのメモリ内に記憶しているコンピュータ・プログラム・コードおよびアルゴリズムを実行するコンピュータ・プログラムを実行する。アルゴリズムは、フィールド・プログラム可能なアナログ・アレー（ＦＰＡＡ）を、必要なデバイス構成にマッピングするため、および／または機能パラメータ計算を行うために供給される。ステップ「Ｓ５」を実行した後で、プロセスは、ステップ「Ｓ６」に進む。
【０１４２】
ステップ「Ｓ６」において、アプリケーション・プログラムにより、システムは、フィールド・プログラム可能なアナログ・アレー（ＦＰＡＡ）内の少なくとも１つの構成データ・レジスタに構成データを書き込むための命令により、プログラム可能な制御デバイスをプログラムする。ステップ「Ｓ６」を実行した後で、プロセスは、ステップ「Ｓ７」に進む。
【０１４３】
ステップ「Ｓ７」において、システムは、プログラム可能な制御デバイスから、フィールド・プログラム可能なアナログ・アレー（ＦＰＡＡ）に構成データをエクスポートする。ステップ「Ｓ７」を実行した後で、プロセスは、ステップ「Ｓ８」に進む。
【０１４４】
ステップ「Ｓ８」において、システムは、フィールド・プログラム可能なアナログ・アレー（ＦＰＡＡ）の少なくとも１つの構成データ・レジスタに構成データを書き込む。ステップ「Ｓ８」を実行した後で、プロセスは、ステップ「Ｓ９」に進む。
【０１４５】
ステップ「Ｓ９」において、システムは、少なくとも１つの構成データ・レジスタへの構成データの書込みに応じて、フィールド・プログラム可能なアナログ・アレー（ＦＰＡＡ）内のハードウェアを構成する。ステップ「Ｓ９」を実行した後で、プロセスは終了する。
【０１４６】
法令に従って、構造上の機能および方法上の機能の多かれ少なかれ特有の言語により本発明を説明してきた。しかし、本発明は、図示し、説明してきた特定の機能に制限されないことを理解されたい。何故なら、本明細書に記載した手段は、本発明を実行するための好適な形を含んでいるからである。それ故、本発明は、添付の特許請求の範囲の原則に従って正しく解釈した、添付の特許請求の範囲の正しい範囲内のすべてのその形式および修正に記載する通りのものである。
【０１４７】
本発明で使用するコンピュータープログラムリスト（付録Ａ）は下記のとおりである。
2004110771.tif 000003
2004110771.tif 000004
2004110771.tif 000005
2004110771.tif 000006
2004110771.tif 000007
2004110771.tif 000008
2004110771.tif 000009
2004110771.tif 000010
2004110771.tif 000011
2004110771.tif 000012
2004110771.tif 000013
2004110771.tif 000014
2004110771.tif 000015
2004110771.tif 000016
2004110771.tif 000017
2004110771.tif 000018
2004110771.tif 000019
2004110771.tif 000020
2004110771.tif 000021
2004110771.tif 000022
2004110771.tif 000023
2004110771.tif 000024
2004110771.tif 000025
2004110771.tif 000026
2004110771.tif 000027
2004110771.tif 000028
2004110771.tif 000029
2004110771.tif 000030
2004110771.tif 000031
2004110771.tif 000032
2004110771.tif 000033
2004110771.tif 000034
2004110771.tif 000035
2004110771.tif 000036
2004110771.tif 000037
2004110771.tif 000038
2004110771.tif 000039
2004110771.tif 000040
2004110771.tif 000041
2004110771.tif 000042
2004110771.tif 000043
2004110771.tif 000044
2004110771.tif 000045
2004110771.tif 000046
2004110771.tif 000047
2004110771.tif 000048
2004110771.tif 000049
2004110771.tif 000050
2004110771.tif 000051
2004110771.tif 000052
2004110771.tif 000053
2004110771.tif 000054
2004110771.tif 000055
2004110771.tif 000056
2004110771.tif 000057
2004110771.tif 000058
2004110771.tif 000059
2004110771.tif 000060
2004110771.tif 000061
2004110771.tif 000062
2004110771.tif 000063
2004110771.tif 000064
2004110771.tif 000065
2004110771.tif 000066
2004110771.tif 000067
2004110771.tif 000068
2004110771.tif 000069
2004110771.tif 000070
2004110771.tif 000071
2004110771.tif 000072
2004110771.tif 000073
2004110771.tif 000074
2004110771.tif 000075
2004110771.tif 000076
2004110771.tif 000077
2004110771.tif 000078
2004110771.tif 000079
2004110771.tif 000080
2004110771.tif 000081
2004110771.tif 000082
2004110771.tif 000083
2004110771.tif 000084
2004110771.tif 000085
2004110771.tif 000086
2004110771.tif 000087
2004110771.tif 000088
2004110771.tif 000089
2004110771.tif 000090
2004110771.tif 000091
2004110771.tif 000092
2004110771.tif 000093
2004110771.tif 000094
2004110771.tif 000095
2004110771.tif 000096
2004110771.tif 000097
2004110771.tif 000098
2004110771.tif 000099
2004110771.tif 000100
2004110771.tif 000101
2004110771.tif 000102
2004110771.tif 000103
2004110771.tif 000104
2004110771.tif 000105
2004110771.tif 000106
2004110771.tif 000107
2004110771.tif 000108
2004110771.tif 000109
2004110771.tif 000110
2004110771.tif 000111
2004110771.tif 000112
2004110771.tif 000113
2004110771.tif 000114
2004110771.tif 000115
2004110771.tif 000116
2004110771.tif 000117
2004110771.tif 000118
2004110771.tif 000119
2004110771.tif 000120
2004110771.tif 000121
2004110771.tif 000122
2004110771.tif 000123
2004110771.tif 000124
2004110771.tif 000125
2004110771.tif 000126
2004110771.tif 000127
2004110771.tif 000128
2004110771.tif 000129
2004110771.tif 000130
2004110771.tif 000131
2004110771.tif 000132
2004110771.tif 000133
2004110771.tif 000134
2004110771.tif 000135
2004110771.tif 000136
2004110771.tif 000137
2004110771.tif 000138
2004110771.tif 000139
2004110771.tif 000140
2004110771.tif 000141
2004110771.tif 000142
2004110771.tif 000143
2004110771.tif 000144
2004110771.tif 000145
2004110771.tif 000146
2004110771.tif 000147
2004110771.tif 000148
2004110771.tif 000149
2004110771.tif 000150
2004110771.tif 000151
2004110771.tif 000152
2004110771.tif 000153
2004110771.tif 000154
2004110771.tif 000155
2004110771.tif 000156
2004110771.tif 000157
2004110771.tif 000158
2004110771.tif 000159
2004110771.tif 000160
2004110771.tif 000161
2004110771.tif 000162
2004110771.tif 000163
2004110771.tif 000164
【図面の簡単な説明】
【図１および図２】半導体デバイスを構成するための、従来技術のシステムのブロック図であり、構成可能なハードウェアの動作の流れおよびコントローラの動作の流れも示す。
【図３および図４】本発明のある実施形態による、構成可能な半導体デバイスをプログラムするための例示としてのシステムの基本的システム構成全体のブロック図である。
【図５】簡単な設計式、空の構成可能なデバイス、および代表的な構成データとともに、デバイスに対する構成プログラムにより構成することができる４つの可能な構成を含む必要な回路設計を示す仮定のプログラム可能なハードウェア・デバイスのための例示としての回路設計を示すブロック図である。
【図６および図７】構成可能なハードウェアの動作の流れおよびコントローラの動作の流れを再度示す、図３および図４のシステムのブロック図である。
【図８および図９】構成可能なデバイスを再構成する際に使用するために、修正構成データを生成することができるプログラムを生成するための、ユーザの「Ｃ」コンパイラにより直接導入される構成可能なデバイス・データ・セットの詳細を再度示す、図６および図７のシステムのブロック図である。
【図１０】プログラム可能な制御デバイス上で稼動する設計ツールが生成したコンピュータ・プログラム・コードにより構成可能なハードウェア・デバイスを更新するための、ユーザ・プログラムを実行するためのアプリケーション・システムを示すブロック図である。
【図１１】ユーザ・アプリケーションおよび設計ツールを通して、図６の構成可能なデバイスのためのアナログ・マルチプレクサ（ＭＵＸ）による例示としての抵抗ネットワーク回路を示す簡単な略図である。
【図１２】図１１のアナログ・マルチプレクサ（ＭＵＸ）内のアナログ回路のブロック図を示す簡単な略図である。
【図１３】ユーザ・ディスプレイ内の設計ツール・アプリケーション・ウィンドウのスクリーン・ディスプレイである。
【図１４】図１３の設計ツール・アプリケーション・ウィンドウ用のスクリーン・ディスプレイであり、設計ツールが発生した例示としてのアナログ回路を示し、図１２のアナログ・マルチプレクサ（ＭＵＸ）の機能を実行する入力ポートを含む。
【図１５】図１５のスクリーン・ディスプレイ内のポップアップ・ウィンドウを備える「Ｃ」コード生成アナログ・ボックスである。
【図１６】図３、図４、図６〜図９のシステムにより構成可能なハードウェア・デバイスでアナログ素子の構成／再構成を行うためのプロセス段階を示す処理フローチャートである。
【図１７および図１８】フィールド・プログラム可能なアナログ・アレー（ＦＰＡＡ）の構成を行うための処理段階を示す処理フローチャートである。
【図１】
2004110771.tif 000165
【図２】
2004110771.tif 000166
【図３】
2004110771.tif 000167
【図４】
2004110771.tif 000168
【図５】
2004110771.tif 000169
【図６】
2004110771.tif 000170
【図７】
2004110771.tif 000171
【図８】
2004110771.tif 000172
【図９】
2004110771.tif 000173
【図１０】
2004110771.tif 000174
【図１１】
2004110771.tif 000175
【図１２】
2004110771.tif 000176
【図１３】
2004110771.tif 000177
【図１４】
2004110771.tif 000178
【図１５】
2004110771.tif 000179
【図１６】
2004110771.tif 000180
【図１７】
2004110771.tif 000181
【図１８】
2004110771.tif 000182