(57)【特許請求の範囲】
【請求項１】
統合型デバイスであって、該統合型デバイスは、
複数のハードロジックブロックを含むハードロジック部分であって、該複数のハードロジックブロックのうちの第一のハードロジックブロックは、第一のデータ信号を提供するように構成されている、ハードロジック部分と、
制御ロジックと複数のソフトロジックモジュールとを含むフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）ファブリックであって、該複数のソフトロジックモジュールのうちの第一のソフトロジックモジュールは、第二のデータ信号を提供するように構成されている、ＦＰＧＡファブリックと、
該ハードロジック部分と該ＦＰＧＡファブリックとの間で信号の経路を定めるように構成されているインターフェースと
を含み、
該インターフェースは、
コンバイナー回路と、
該第一のデータ信号およびゼロ値信号のうちの１つを該コンバイナー回路に提供するように構成されている第一のマルチプレクサと、
該第二のデータ信号および該ゼロ値信号のうちの１つを該コンバイナー回路に提供するように構成されている第二のマルチプレクサと
を含み、
該コンバイナー回路は、該第一および第二のマルチプレクサによって提供された該信号を組み合わせ、かつ組み合わせられた信号を出力するように構成されており、
該インターフェースは、該制御ロジックからの制御信号に応答して、該ＦＰＧＡファブリック内のノードに該ハードロジック部分における第一のノードを選択的に連結するようにさらに構成されている、統合型デバイス。
【請求項２】
前記第一のノードは、前記複数のハードロジックブロックのうちの第二のハードロジックブロックへの入力であり、前記インターフェースは、前記ハードロジック部分において前記第一および第二のハードロジックブロックの間に配置されたマルチプレクサを含み、該マルチプレクサは、
前記制御信号が第一の値を有する場合に、該第二のハードロジックブロックに前記第一のソフトロジックモジュールの出力を提供することと、
該制御信号が第二の値を有する場合に、該第二のハードロジックブロックに該第一のハードロジックブロックの出力を提供することと
を行うように構成されている、請求項１に記載の統合型デバイス。
【請求項３】
前記第一のソフトロジックモジュールは、前記第一のハードロジックブロックから入力信号を受信するように構成されている、請求項２に記載の統合型デバイス。
【請求項４】
前記第一のソフトロジックモジュールおよび前記第一のハードロジックブロックは、各々、同じ入力信号を受信するように構成され、前記制御ロジックは、該第一のソフトロジックモジュールの出力が前記マルチプレクサによって出力のために選択された場合に、該第一のハードロジックブロックの電力を切るように構成されている、請求項２に記載の統合型デバイス。
【請求項５】
前記インターフェースは、前記ハードロジック部分に配置された複数のマルチプレクサを含み、
前記複数のマルチプレクサのうちの前記第一のマルチプレクサは、前記制御信号に基づいて、前記第一のデータ信号と前記ゼロ値信号とのうちの１つを前記コンバイナー回路に提供するように構成され、
該複数のマルチプレクサのうちの前記第二のマルチプレクサは、該制御信号に基づいて、第二のデータ信号と該ゼロ値信号とのうちの１つを該コンバイナー回路に提供するように構成され、
該コンバイナー回路は、前記組み合わせられた信号を該ハードロジック部分における前記第一のノードにおいて出力するように構成されている、請求項１に記載の統合型デバイス。
【請求項６】
前記第一のハードロジックブロックが単独で使用されることを決定したことに応答して、
前記制御ロジックは、前記第一のデータ信号を前記コンバイナー回路に提供するように前記第一のマルチプレクサを構成し、
該制御ロジックは、前記ゼロ値信号を該コンバイナー回路に提供するように前記第二のマルチプレクサを構成し、
該コンバイナー回路は、該第一のデータ信号を該ゼロ値信号と組み合わせるように構成されている、請求項５に記載の統合型デバイス。
【請求項７】
前記第一のソフトロジックモジュールが単独で使用されることを決定したことに応答して、
前記制御ロジックは、前記ゼロ値信号を前記コンバイナー回路に提供するように前記第一のマルチプレクサを構成し、
該制御ロジックは、前記第二のデータ信号を該コンバイナー回路に提供するように前記第二のマルチプレクサを構成し、
該コンバイナー回路は、該ゼロ値信号を該第二のデータ信号と組み合わせるように構成されている、請求項５に記載の統合型デバイス。
【請求項８】
前記第一のハードロジックブロックおよび前記第一のソフトロジックモジュールが共に使用されることを決定したことに応答して、
前記制御ロジックは、前記第一のデータ信号を前記コンバイナー回路に提供するように前記第一のマルチプレクサを構成し、
該制御ロジックは、前記第二のデータ信号を該コンバイナー回路に提供するように前記第二のマルチプレクサを構成し、
該コンバイナー回路は、該第一のデータ信号を該第二のデータ信号と組み合わせるように構成されている、請求項５に記載の統合型デバイス。
【請求項９】
前記インターフェースは、前記ハードロジック部分に配置された複数の構成可能な遅延線をさらに含み、
該複数の構成可能な遅延線のうちの第一の構成可能な遅延線は、入力信号を遅延させて、該遅延させられた入力信号を前記第一のソフトロジックモジュールに提供するように構成され、
該複数の構成可能な遅延線のうちの第二の構成可能な遅延線は、前記複数のマルチプレクサのうちの第三のマルチプレクサの出力信号を遅延させて、該遅延させられた出力信号を該複数のマルチプレクサのうちの第四のマルチプレクサおよび該複数のマルチプレクサのうちの第五のマルチプレクサに提供するように構成され、
該第三のマルチプレクサは、前記制御信号に基づいて、前記第一のデータ信号と前記第二のデータ信号とのうちの１つを該第二の構成可能な遅延線に提供するように構成され、
該第四のマルチプレクサは、遅延制御信号に基づいて、該第一のデータ信号と該遅延させられた出力信号とのうちの１つを前記第一のマルチプレクサに提供するように構成され、
該第五のマルチプレクサは、該遅延制御信号に基づいて、該第二のデータ信号と該遅延させられた出力信号とのうちの１つを前記第二のマルチプレクサに提供するように構成されている、請求項５に記載の統合型デバイス。
【請求項１０】
統合型デバイスであって、該統合型デバイスは、
１つ以上のハードロジックブロックを含むハードロジック部分であって、該１つ以上のハードロジックブロックのうちの第一のハードロジックブロックは、第一のデータ信号を提供するように構成されている、ハードロジック部分と
構成ロジックと１つ以上のソフトロジックモジュールとを含むフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）ファブリックであって、該１つ以上のソフトロジックモジュールのうちの第一のソフトロジックモジュールは、第二のデータ信号を提供するように構成されている、ＦＰＧＡファブリックと、
コンバイナー回路と、
該第一のデータ信号およびゼロ値信号のうちの１つを該コンバイナー回路に提供するように構成されている第一のマルチプレクサと、
該第二のデータ信号および該ゼロ値信号のうちの１つを該コンバイナー回路に提供するように構成されている第二のマルチプレクサと、
該ハードロジック部分に配置され、かつ該１つ以上のハードロジックブロックに連結されている構成インターフェースと
を含み、
該コンバイナー回路は、該第一および第二のマルチプレクサによって提供された該信号を組み合わせ、かつ組み合わせられた信号を出力するように構成されており、
該構成インターフェースは、該ＦＰＧＡファブリックにおける構成ロジックから受信されたデータ信号に基づいて、構成信号を該１つ以上のハードロジックブロックに提供するように構成されている、統合型デバイス。
【請求項１１】
１つ以上のマイクロプロセッサーコアを含むプロセッサーサブシステムをさらに含み、前記構成インターフェースは、該プロセッサーサブシステムから受信された第二のデータ信号に基づいて、前記構成信号を前記１つ以上のハードロジックブロックに提供するようにさらに構成されている、請求項１０に記載の統合型デバイス。
【請求項１２】
前記ハードロジック部分に配置されたデバッギングインターフェースをさらに含み、該デバッギングインターフェースは、外部メモリに格納されたテストデータに基づいて、前記１つ以上のハードロジックブロックを含むデータ経路にテスト信号を挿入し、かつ抽出するように構成され、該外部メモリは、前記ＦＰＧＡファブリックに実装されたメモリ制御器によってアクセスされる、請求項１０に記載の統合型デバイス。
【請求項１３】
統合型デバイスにおいてハードロジック部分とＦＰＧＡファブリックとの間をインターフェース接続する方法であって、該方法は、
該ＦＰＧＡファブリックにおける制御ロジックを使用して、データ経路構成データをメモリから読み出すことと、
該データ経路構成データに基づいて、該制御ロジックを用いて、該ハードロジック部分と該ＦＰＧＡファブリックとの間のインターフェースを構成することであって、該構成することは、該ハードロジック部分における１つ以上のハードロジックブロックがデータ経路に含まれるかどうか、および該ＦＰＧＡファブリックにおける１つ以上のソフトロジックモジュールがデータ経路に含まれるかどうかを決定する、ことと、
該インターフェース構成に基づいて、該インターフェースを用いて、該１つ以上のソフトロジックモジュールのうちの第一のソフトロジックモジュールと該１つ以上のハードロジックブロックのうちの第一のハードロジックブロックとのうちの１つに該ハードロジック部分におけるノードを連結することと、
該ハードロジック部分の第一のハードロジックブロックにより、第一のデータ信号を第一のマルチプレクサに提供することと、
該ＦＰＧＡファブリックの第一のソフトロジックモジュールにより、第二のデータ信号を第二のマルチプレクサに提供することと、
該第一のマルチプレクサにより、該第一のデータ信号およびゼロ値信号のうちの１つをコンバイナー回路に提供することと、
該第二のマルチプレクサにより、該第二のデータ信号および該ゼロ値信号のうちの１つを該コンバイナー回路に提供することと、
該コンバイナー回路により、該第一のマルチプレクサおよび該第二のマルチプレクサによって提供された該信号を組み合わせることと
を含む、方法。
【請求項１４】
前記第一のハードロジックブロックが単独で使用されるかどうかを、前記データ経路構成データから決定することと、
該第一のハードロジックブロックが単独で使用されることを決定したことに応答して、
前記第一のデータ信号を前記コンバイナー回路に提供するように前記第一のマルチプレクサを構成すること、および、
前記ゼロ値信号を該コンバイナー回路に提供するように前記第二のマルチプレクサを構成することと
をさらに含み、該コンバイナー回路は、該第一のデータ信号を該ゼロ値信号と組み合わせるように構成されている、請求項１３に記載の方法。
【請求項１５】
前記第一のソフトロジックモジュールが単独で使用されるかどうかを、前記データ経路構成データから決定することと、
該第一のソフトロジックモジュールが単独で使用されることを決定したことに応答して、
前記ゼロ値信号を前記コンバイナー回路に提供するように前記第一のマルチプレクサを構成すること、および、
前記第二のデータ信号を該コンバイナー回路に提供するように前記第二のマルチプレクサを構成することと
をさらに含み、該コンバイナー回路は、該ゼロ値信号を該第二のデータ信号と組み合わせるように構成されている、請求項１３に記載の方法。
【請求項１６】
前記第一のハードロジックブロックおよび前記第一のソフトロジックモジュールが共に使用されるかどうかを、前記データ経路構成データから決定することと、
該第一のハードロジックブロックおよび該第一のソフトロジックモジュールが共に使用されることを決定したことに応答して、
前記第一のデータ信号を前記コンバイナー回路に提供するように前記第一のマルチプレクサを構成すること、および、
前記第二のデータ信号を該コンバイナー回路に提供するように前記第二のマルチプレクサを構成することと
をさらに含み、
該コンバイナー回路は、該第一のデータ信号を該第二のデータ信号と組み合わせるように構成されている、請求項１３に記載の方法。
【請求項１７】
第一の構成可能な遅延線を使用して、前記第一のハードロジックブロックからの前記第一のデータ信号を遅延させることであって、該出力は、前記ＦＰＧＡファブリックの相対的なスループット速度に比例して、遅延させられる、ことと、
第二の構成可能な遅延線を使用して、前記第一のソフトロジックモジュールからの前記第二のデータ信号を遅延させることであって、該出力は、該第一のハードロジックブロックの相対的なスループット速度に比例して、遅延させられる、ことと
をさらに含む、請求項１３に記載の方法。
【請求項１８】
前記ハードロジック部分における構成インターフェースを用いて、前記ＦＰＧＡファブリックにおいて実装された構成ロジックと、プロセッサーサブシステムとのうちの１つから構成データを受信することと、
該構成インターフェースを用いて、該構成データに基づいて、複数の構成信号を前記１つ以上のハードロジックブロックに提供することと
をさらに含む、請求項１３に記載の方法。
【請求項１９】
前記ハードロジック部分におけるデバッギングインターフェースを用いて、前記ＦＰＧＡファブリックにおいて実装されたメモリ制御器を使用して、外部メモリからテストデータを受信することと、
該デバッギングインターフェースを用いて、該ハードロジック部分における第一のプローブ点に該テストデータを挿入することと、
該デバッギングインターフェースを用いて、該ハードロジック部分における第二のプローブ点でデバッギングデータを抽出することと、
該メモリ制御器を使用して、該外部メモリに該抽出されたデバッギングデータを格納することと
をさらに含む、請求項１３に記載の方法。
【請求項２０】
前記インターフェースは、複数の利用可能な相互接続を含み、前記方法は、
前記データ経路構成データに基づいて、前記ハードロジック部分における１つ以上のデータ経路ノードが、前記ＦＰＧＡファブリックに接続されるべきかどうかを決定することと、
該決定に基づいて、該ハードロジック部分における該１つ以上のデータ経路ノードに該複数の利用可能な相互接続を選択的に連結することと
をさらに含む、請求項１３に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願への相互参照）
本願は、同時係属の同一人に譲渡された米国仮特許出願第６１／４８７，０４６号（２０１１年５月１７日出願）の利益およびそれに基づく優先権を主張し、これによって、その全体が本明細書中に参照によって援用される。
【背景技術】
【０００２】
（背景）
プログラマブルデバイスは、周知である。一般に、プログラマブルデバイス（例えば、フィールドプログラマブルゲートアレイ（ＦＰＧＡ））は、カスタマイズされた機能を実装するロジックブロックに構成可能な数多くのソフトロジック要素を含む。ＦＰＧＡは、独自の機能的なモジュールを実装することを所望する顧客に安価な順応性の高い解決策を提供する。しかしながら、ＦＰＧＡは、一般に、ハードロジック解決策（例えば、特定用途向け統合型デバイス（ＡＳＩＣ））よりも遅く稼働し、ハードロジック解決策に比べてより多くの電力およびより大きな領域を必要とする。これに対して、ＡＳＩＣは、プログラマブルでなく、従って、製作後にハードウェアをカスタマイズすることを所望する顧客により低い順応性を提供する。
【０００３】
従って、ハードロジックとソフトロジックとの両方を含むハイブリッドデバイスが、現れた。ハードロジックは、通例、種々の用途において使用され得る標準の機能的ブロックを実装する一方、ソフトロジックは、カスタマイズされた機能性を可能にする。しかしながら、これらのデバイスは、機能および順応性において制限される。特に、ハードロジックブロックは、しばしば、シリアルの態様で動作し、ソフトロジックの方を選んで個々のブロックを迂回する機会がないこともある。そのうえ、ハードロジックブロックは、個々のハードロジックブロックの内部機能性が、ソフトロジックの特徴を用いて増強されることが不可能なように、主として分離して動作する。従って、これらのハイブリッドデバイスは、ソフトロジックによって与えられる機能性が所望される場合はいつでも、ハードロジックの速度および低電力の利点を捨てることを依然として顧客に要求する。
【発明の概要】
【課題を解決するための手段】
【０００４】
（発明の概要）
本発明は、ハイブリット統合型デバイスにおいて実装されたハードロジック要素とソフトロジック要素との間をインターフェース接続するシステムおよび方法に関連する。特に、構成可能な相互接続は、ハードロジックとソフトロジックとの間に提供され、構成可能な相互接続は、信号がハードロジックブロックの入力および出力とソフトロジックモジュールの入力および出力との間で経路を定められることを可能にする。相互接続は、特定のハードロジックブロックがソフトロジック機能性の方を選んで迂回されることを可能にする。そのうえ、相互接続は、例えば、ハードロジックブロックに追加の信号を提供することによって、ソフトロジックがハードロジックブロックの処理を増強することを可能にする。
【０００５】
本発明の実施形態に従って、ハードロジック部分と、フィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）ファブリックと、ハードロジック部分とＦＰＧＡファブリックとの間で信号の経路を定めるように構成されたインターフェースとを有する統合型デバイスが提供される。ハードロジック部分は、数多くのシリアルに接続されたハードロジックブロックを含む一方、ＦＰＧＡファブリックは、制御ロジックと数多くのソフトロジックモジュールとを含む。インターフェースは、制御ロジックからの制御信号に応答して、ソフトロジックモジュールのうちの１つまたはハードロジックブロックのうちの１つにハードロジック部分におけるノード（例えば、ハードロジックデータ経路におけるノード）を選択的に接続するように構成され得る。
【０００６】
本発明の追加の実施形態に従って、第一のノードは、第二のハードロジックブロックへの入力であり得る。従って、インターフェースは、ハードロジック部分において２つのハードロジックブロックの間に配置されたマルチプレクサを含み得る。マルチプレクサは、制御信号が第一の値（つまり、１または０のビット値）を有する場合に、第二のハードロジックブロックの入力にソフトロジックモジュールの出力を提供し、かつ制御信号が第二の値を有する場合に、第二のハードロジックブロックに第一のハードロジックブロックの出力を提供するように構成され得る。
【０００７】
ソフトロジックモジュールは、第一のハードロジックブロックから、またはデータ経路の上流の別のブロックから入力信号を受信するように構成され得る。いくつかのアプローチにおいて、ソフトロジックモジュールと第一のハードロジックブロックとの両方は、同じ入力信号を受信するように構成される。そのうえ、制御ロジックは、ソフトロジックモジュールの出力がマルチプレクサによって出力のために選択された場合に、第一のハードロジックブロックの電力を切るように構成され得る。
【０００８】
いくつかの実施形態において、インターフェースは、ハードロジック部分に配置されたコンバイナー回路と数多くのマルチプレクサとを含む。第一のマルチプレクサは、制御信号に基づいて、（例えば、第一のハードロジックブロックによって提供された）データ信号またはゼロ値をコンバイナー回路に提供するように構成され得る。第二のマルチプレクサは、同様に、制御信号に基づいて、（例えば、ソフトロジックブロックによって提供された）第二のデータ信号またはゼロ値をコンバイナー回路に提供するように構成され得る。コンバイナー回路は、２つのマルチプレクサによって提供された信号を組み合わせ、かつ組み合わせられた信号をハードロジック部分における前記ノードにおいて出力するように構成され得る。
【０００９】
１つのアプローチにおいて、制御ロジックは、第一のハードロジックブロックが単独で使用されることを（例えば、格納された構成データに基づいて）決定し得る。それに応じて、制御ロジックは、第一のハードロジックブロックによって提供されたデータ信号をコンバイナー回路に提供するように第一のマルチプレクサを構成し得る。同時に、制御ロジックは、ゼロ値をコンバイナー回路に提供するように第二のマルチプレクサを構成し得る。次に、コンバイナー回路は、データ信号をゼロ値と組み合わせるように構成され、それによって、第一のハードロジックブロックによって提供された本来のデータ信号を効果的に出力し得る。
【００１０】
別のアプローチにおいて、制御ロジックは、第一のソフトロジックモジュールが単独で使用されることを（例えば、格納された構成データに基づいて）決定し得る。それに応じて、制御ロジックは、ゼロ値をコンバイナー回路に提供するように第一のマルチプレクサを構成する一方、制御ロジックは、（例えば、ソフトロジックブロックによって提供された）第二のデータ信号をコンバイナー回路に提供するように第二のマルチプレクサを構成し得る。コンバイナー回路は、第二のデータ信号をゼロ値と組み合わせるように構成され、それによって、ソフトロジックブロックによって提供された本来の第二のデータ信号を効果的に出力し得る。
【００１１】
さらに別のアプローチにおいて、制御ロジックは、第一のハードロジックブロックおよび第一のソフトロジックモジュールが共に使用されることを（例えば、格納された構成データに基づいて）決定し得る。それに応じて、制御ロジックは、第一のデータ信号をコンバイナー回路に提供するように第一のマルチプレクサを構成し、第二のデータ信号をコンバイナー回路に提供するように第二のマルチプレクサを構成し得る。コンバイナー回路は、出力のために２つのデータ信号を（例えば、論理和演算を用いて）組み合わせるように構成され得る。
【００１２】
いくつかの実施形態において、インターフェースは、ハードロジック部分に配置された１つ以上の構成可能な遅延線を含む。第一の構成可能な遅延線は、入力信号を遅延させて、遅延させられた信号をソフトロジックモジュールに提供するように構成され得る。第二の構成可能な遅延線は、第三のマルチプレクサの出力信号を遅延させて、遅延させられた出力信号を第四および第五のマルチプレクサに提供するように構成され得る。そのシナリオにおいて、第三のマルチプレクサは、制御信号に基づいて、第一のデータ信号または第二のデータ信号を第二の構成可能な遅延線に提供するように構成され得る。そのうえ、第四のマルチプレクサは、遅延制御信号に基づいて、第一のデータ信号または遅延させられた出力信号を第一のマルチプレクサに提供するように構成され得る一方、第五のマルチプレクサは、遅延制御信号に基づいて、第二のデータ信号または遅延させられた出力信号を第二のマルチプレクサに提供するように構成される。
【００１３】
いくつかの実施形態において、統合型デバイスは、１つ以上のマイクロプロセッサーコアを有するプロセッサーサブシステムを含む。構成インターフェースは、ハードロジック部分に配置され、かつハードロジックブロックの各々に連結され得る。構成インターフェースは、ＦＰＧＡファブリックおよび／またはプロセッサーサブシステムにおける構成ロジックから受信されたパラメータに基づいて、構成信号をハードロジックブロックに提供するように構成され得る。
【００１４】
いくつかの実施形態において、統合型デバイスは、ハードロジック部分に配置されたデバッギングインターフェースを含む。デバッギングインターフェースは、外部メモリに格納されたテストデータに基づいて、ハードロジックブロックを包含するデータ経路における特定のプローブ点にテスト信号を挿入し、かつ抽出するように構成され得る。外部メモリは、ＦＰＧＡファブリックに実装されたメモリ制御器、またはプロセッサーサブシステムによってアクセスされ得る。
【００１５】
上記で説明された統合型デバイスを構成し、かつ動作させる方法も、提供される。
本明細書は、例えば、以下の項目も提供する。
（項目１）
統合型デバイスであって、該統合型デバイスは、
複数のハードロジックブロックを含むハードロジック部分と、
制御ロジックと複数のソフトロジックモジュールとを含むフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）ファブリックと、
該ハードロジック部分と該ＦＰＧＡファブリックとの間で信号の経路を定めるように構成されているインターフェースと
を含み、該インターフェースは、該制御ロジックからの制御信号に応答して、該複数のソフトロジックモジュールのうちの第一のソフトロジックモジュールと該複数のハードロジックブロックのうちの第一のハードロジックブロックとのうちの１つに該ハードロジック部分における第一のノードを選択的に連結するようにさらに構成されている、
統合型デバイス。
（項目２）
前記第一のノードは、前記複数のハードロジックブロックのうちの第二のハードロジックブロックへの入力であり、前記インターフェースは、前記ハードロジック部分において前記第一および第二のハードロジックブロックの間に配置されたマルチプレクサを含み、該マルチプレクサは、
前記制御信号が第一の値を有する場合に、該第二のハードロジックブロックに前記第一のソフトロジックモジュールの出力を提供することと、
該制御信号が第二の値を有する場合に、該第二のハードロジックブロックに該第一のハードロジックブロックの出力を提供することと
を行うように構成されている、項目１に記載の統合型デバイス。
（項目３）
前記第一のソフトロジックモジュールは、前記第一のハードロジックブロックから入力信号を受信するように構成されている、項目２に記載の統合型デバイス。
（項目４）
前記第一のソフトロジックモジュールおよび前記第一のハードロジックブロックは、各々、同じ入力信号を受信するように構成され、前記制御ロジックは、該第一のソフトロジックモジュールが前記マルチプレクサによって出力のために選択された場合に、該第一のハードロジックブロックの電力を切るように構成されている、項目２に記載の統合型デバイス。
（項目５）
前記インターフェースは、前記ハードロジック部分に配置されたコンバイナー回路と複数のマルチプレクサとを含み、
該複数のマルチプレクサのうちの第一のマルチプレクサは、前記制御信号に基づいて、第一のデータ信号とゼロ値信号とのうちの１つを該コンバイナー回路に提供するように構成され、該第一のデータ信号は、前記第一のハードロジックブロックによって提供され、
該複数のマルチプレクサのうちの第二のマルチプレクサは、該制御信号に基づいて、第二のデータ信号と該ゼロ値信号とのうちの１つを該コンバイナー回路に提供するように構成され、該第二のデータ信号は、前記第一のソフトロジックモジュールによって提供され、
該コンバイナー回路は、該第一および第二のマルチプレクサによって提供された該信号を組み合わせ、かつ組み合わせられた信号を該ハードロジック部分における前記第一のノードにおいて出力するように構成されている、項目１に記載の統合型デバイス。
（項目６）
前記第一のハードロジックブロックが単独で使用されることを決定したことに応答して、
前記制御ロジックは、前記第一のデータ信号を前記コンバイナー回路に提供するように前記第一のマルチプレクサを構成し、
該制御ロジックは、前記ゼロ値信号を該コンバイナー回路に提供するように前記第二のマルチプレクサを構成し、
該コンバイナー回路は、該第一のデータ信号を該ゼロ値信号と組み合わせるように構成されている、項目５に記載の統合型デバイス。
（項目７）
前記第一のソフトロジックモジュールが単独で使用されることを決定したことに応答して、
前記制御ロジックは、前記ゼロ値信号を前記コンバイナー回路に提供するように前記第一のマルチプレクサを構成し、
該制御ロジックは、前記第二のデータ信号を該コンバイナー回路に提供するように前記第二のマルチプレクサを構成し、
該コンバイナー回路は、該ゼロ値信号を該第二のデータ信号と組み合わせるように構成されている、項目５に記載の統合型デバイス。
（項目８）
前記第一のハードロジックブロックおよび前記第一のソフトロジックモジュールが共に使用されることを決定したことに応答して、
前記制御ロジックは、前記第一のデータ信号を前記コンバイナー回路に提供するように前記第一のマルチプレクサを構成し、
該制御ロジックは、前記第二のデータ信号を該コンバイナー回路に提供するように前記第二のマルチプレクサを構成し、
該コンバイナー回路は、該第一のデータ信号を該第二のデータ信号と組み合わせるように構成されている、項目５に記載の統合型デバイス。
（項目９）
前記インターフェースは、前記ハードロジック部分に配置された複数の構成可能な遅延線をさらに含み、
該複数の構成可能な遅延線のうちの第一の構成可能な遅延線は、入力信号を遅延させて、該遅延させられた入力信号を前記第一のソフトロジックモジュールに提供するように構成され、
該複数の構成可能な遅延線のうちの第二の構成可能な遅延線は、前記複数のマルチプレクサのうちの第三のマルチプレクサの出力信号を遅延させて、該遅延させられた出力信号を該複数のマルチプレクサのうちの第四のマルチプレクサおよび該複数のマルチプレクサのうちの第五のマルチプレクサに提供するように構成され、
該第三のマルチプレクサは、前記制御信号に基づいて、前記第一のデータ信号と前記第二のデータ信号とのうちの１つを該第二の構成可能な遅延線に提供するように構成され、
該第四のマルチプレクサは、遅延制御信号に基づいて、該第一のデータ信号と該遅延させられた出力信号とのうちの１つを前記第一のマルチプレクサに提供するように構成され、
該第五のマルチプレクサは、該遅延制御信号に基づいて、該第二のデータ信号と該遅延させられた出力信号とのうちの１つを前記第二のマルチプレクサに提供するように構成されている、項目５に記載の統合型デバイス。
（項目１０）
統合型デバイスであって、該統合型デバイスは、
１つ以上のハードロジックブロックを含むハードロジック部分と
構成ロジックを含むフィールドプログラマブルゲートアレイ（「ＦＰＧＡ」）ファブリックと、
該ハードロジック部分に配置され、かつ該１つ以上のハードロジックブロックに連結されている構成インターフェースと
を含み、該構成インターフェースは、該ＦＰＧＡファブリックにおける構成ロジックから受信されたデータ信号に基づいて、構成信号を該１つ以上のハードロジックブロックに提供するように構成されている、
統合型デバイス。
（項目１１）
１つ以上のマイクロプロセッサーコアを含むプロセッサーサブシステムをさらに含み、前記構成インターフェースは、該プロセッサーサブシステムから受信された第二のデータ信号に基づいて、前記構成信号を前記１つ以上のハードロジックブロックに提供するようにさらに構成されている、項目１０に記載の統合型デバイス。
（項目１２）
前記ハードロジック部分に配置されたデバッギングインターフェースをさらに含み、該デバッギングインターフェースは、外部メモリに格納されたテストデータに基づいて、前記１つ以上のハードロジックブロックを含むデータ経路にテスト信号を挿入し、かつ抽出するように構成され、該外部メモリは、前記ＦＰＧＡファブリックに実装されたメモリ制御器によってアクセスされる、項目１０に記載の統合型デバイス。
（項目１３）
統合型デバイスにおいてハードロジック部分とＦＰＧＡファブリックとの間をインターフェース接続する方法であって、該方法は、
該ＦＰＧＡファブリックにおける制御ロジックを使用して、データ経路構成データをメモリから読み出すことと、
該データ経路構成データに基づいて、該制御ロジックを用いて、該ハードロジック部分と該ＦＰＧＡファブリックとの間のインターフェースを構成することであって、該構成することは、該ハードロジック部分における１つ以上のハードロジックブロックがデータ経路に含まれるかどうか、および該ＦＰＧＡファブリックにおける１つ以上のソフトロジックモジュールがデータ経路に含まれるかどうかを決定する、ことと、
該インターフェース構成に基づいて、該インターフェースを用いて、該１つ以上のソフトロジックモジュールのうちの第一のソフトロジックモジュールと該１つ以上のハードロジックブロックのうちの第一のハードロジックブロックとのうちの１つに該ハードロジック部分におけるノードを連結することと
を含む、方法。
（項目１４）
前記第一のハードロジックブロックが単独で使用されるかどうかを、前記データ経路構成データから決定することと、
該第一のハードロジックブロックが単独で使用されることを決定したことに応答して、前記ハードロジック部分における前記ノードを該第一のハードロジックブロックの出力に連結するように前記インターフェースを構成することであって、前記第一のソフトロジックモジュールの出力は、前記データ経路から接続を絶たれる、ことと
をさらに含む、項目１３に記載の方法。
（項目１５）
前記第一のソフトロジックモジュールが単独で使用されるかどうかを、前記データ経路構成データから決定することと、
該第一のソフトロジックモジュールが単独で使用されることを決定したことに応答して、前記ハードロジック部分における前記ノードを該第一のソフトロジックモジュールの出力に連結するように前記インターフェースを構成することと、
前記第一のハードロジックブロックの電力を切ることと
をさらに含む、項目１３に記載の方法。
（項目１６）
前記第一のハードロジックブロックおよび前記第一のソフトロジックモジュールが共に使用されるかどうかを、前記データ経路構成データから決定することと、
該第一のハードロジックブロックおよび該第一のソフトロジックモジュールが共に使用されることを決定したことに応答して、前記ハードロジック部分における前記ノードを、該第一のハードロジックブロックの出力と該第一のソフトロジックモジュールの出力とを組み合わせる回路網に連結するように前記インターフェースを構成することと
をさらに含む、項目１３に記載の方法。
（項目１７）
第一の構成可能な遅延線を使用して、前記第一のハードロジックブロックの出力を遅延させることであって、該出力は、前記ＦＰＧＡファブリックの相対的なスループット速度に比例して、遅延させられる、ことと、
第二の構成可能な遅延線を使用して、前記第一のソフトロジックモジュールの出力を遅延させることであって、該出力は、該第一のハードロジックブロックの相対的なスループット速度に比例して、遅延させられる、ことと
をさらに含む、項目１３に記載の方法。
（項目１８）
前記ハードロジック部分における構成インターフェースを用いて、前記ＦＰＧＡファブリックにおいて実装された構成ロジックと、プロセッサーサブシステムとのうちの１つから構成データを受信することと、
該構成インターフェースを用いて、該構成データに基づいて、複数の構成信号を前記１つ以上のハードロジックブロックに提供することと
をさらに含む、項目１３に記載の方法。
（項目１９）
前記ハードロジック部分におけるデバッギングインターフェースを用いて、前記ＦＰＧＡファブリックにおいて実装されたメモリ制御器を使用して、外部メモリからテストデータを受信することと、
該デバッギングインターフェースを用いて、該ハードロジック部分における第一のプローブ点に該テストデータを挿入することと、
該デバッギングインターフェースを用いて、該ハードロジック部分における第二のプローブ点からデバッギングデータを抽出することと、
該メモリ制御器を使用して、該外部メモリに該抽出されたデータを格納することと
をさらに含む、項目１３に記載の方法。
（項目２０）
前記インターフェースは、複数の利用可能な相互接続を含み、前記方法は、
前記データ経路構成データに基づいて、前記ハードロジック部分における１つ以上のデータ経路ノードが、前記ＦＰＧＡファブリックに接続されるべきかどうかを決定することと、
該決定に基づいて、該ハードロジック部分における該１つ以上のデータ経路ノードに該複数の利用可能な相互接続を選択的に連結することと
をさらに含む、項目１３に記載の方法。
【００１６】
（図面の簡単な説明）
本発明のさらなる特徴、本発明の性質、および種々の利点は、添付の図面と共に、以下の詳細な説明を考慮することによって明白であり、図面において、同様の参照文字は、通じて同様の部分を表す。
【図面の簡単な説明】
【００１７】
【図１】図１は、本発明の例証的な実施形態に従って、ハードロジック部分とＦＰＧＡファブリックとを有する例証的なハイブリッドデバイスを描写している。
【図２】図２は、本発明の例証的な実施形態に従って、ハイブリッドデバイスの主要な機能的ブロックを描写している。
【図３】図３は、本発明の例証的な実施形態に従って、ハードロジックブロックをソフトロジックモジュールと取り替えるように構成されたハイブリッドデバイスの例示的な実装を描写している。
【図４】図４は、本発明の例証的な実施形態に従って、１つ以上のハードロジックブロックをテストするように構成されたハイブリッドデバイスの例示的な実装を描写している。
【図５】図５は、本発明の例証的な実施形態に従って、ハードロジックをソフトロジックに連結する構成可能な相互接続の例示的な実装を描写している。
【図６】図６は、本発明の例証的な実施形態に従って、ソフトロジックモジュールをハードロジックデータ経路内へ挿入することを可能にする構成可能な相互接続の例示的な実装を描写している。
【図７】図７は、本発明の例証的な実施形態に従って、ハードロジックブロックの増強および／または取り替えを可能にする構成可能な相互接続の例示的な実装を描写している。
【図８】図８は、本発明の例証的な実施形態に従った、インターフェースを使用してハードロジックおよびソフトロジックを接続する場合に実施される例証的なステップのフローチャートである。
【図９】図９は、本発明の例証的な実施形態に従った、ハードロジックとソフトロジックとの間のインターフェースを構成する場合に実施される例証的なステップのフローチャートである。
【発明を実施するための形態】
【００１８】
（発明の詳細な説明）
ハイブリッド統合型デバイスにおいてハードロジックとソフトロジックとの間をインターフェース接続するシステムおよび方法が、本明細書中に開示される。特に、構成可能な相互接続が、ハードロジックとソフトロジックとの間に提供され、構成可能な相互接続は、信号がハードロジックブロックの入力および出力とソフトロジックモジュールの入力および出力との間で経路を定められることを可能にする。相互接続は、特定のハードロジックブロックがソフトロジック機能性の方を選んで迂回されることを可能にする。そのうえ、相互接続は、例えば、既存の信号との組み合わせのために、例えば、ハードロジックブロックに追加の信号を提供することによって、ソフトロジックがハードロジックブロックの処理を増強することを可能にする。これらのハイブリッドデバイスは、１つの統合型チップであり得るか、または他の実施形態において、ハイブリッドデバイスは、２つ以上のチップのモノリシックではない統合（例えば、同じパッケージにおける２つのダイ）であり得る。
【００１９】
図１は、例証的なハイブリッドデバイス１００を示し、そのハイブリッドデバイス１００は、本発明のいくつかの実施形態に従って、ハードロジックと、ソフトロジックと、マイクロプロセッサーサブシステムと、インターフェース回路網とを含む。ハードロジックは、インターフェース１１０と、メモリ制御器１１２と、ハードロジック部分１１４および１１６とを含む。インターフェース１１０は、シリアライザ−デシリアライザ（ＳＥＲＤＥＳ）回路網１４２を通して外部構成要素（例えば、アンテナインターフェース）とインターフェース接続するためのハードロジック要素を含む。メモリ制御器１１２は、インターフェース１４０を通した外部メモリへのアクセス（読み込みおよび書き込み）を制御するためのハードロジック要素を含む。ハードロジック部分１１４および１１６は、入力信号を処理するためのハードロジック要素を含み、そのハードロジック要素は、ハードロジックブロックに集められ得る。例えば、ハードロジック部分１１４および１１６は、トランシーバー機能（例えば、波高率低減、デジタルプリディストーション、等化、フィルタリング、および／またはアナログ−デジタル変換インターフェース）を実装し得る。ハードロジックは、ＳＥＲＤＥＳ回路網１４２を通して外部構成要素（例えば、データ変換器）とインターフェース接続し得る。
【００２０】
ソフトロジックは、ＦＰＧＡファブリック１２０を含み、ＦＰＧＡファブリック１２０は、入力信号を処理するための数多くのプログラマブルロジック要素を有し、その数多くのプログラマブルロジック要素は、ソフトロジックモジュールに集められ得る。ＦＰＧＡファブリック１２０はまた、トランシーバー機能を実装し、これらの機能が顧客プログラマブルであるという追加の利益を有し得る。これらのカスタマイズされたソフトロジックモジュールは、図１においてブロック１２２によって表されている。いくつかの場合、ソフトロジックモジュールは、ハードロジック部分１１４および１１６において実装される機能に取って代わるように使用され得る。他の場合において、ソフトロジックモジュールは、ハードロジック部分１１４および１１６において実装される機能への入力を生成するために使用され得る。ＦＰＧＡファブリック１２０は、カスタマイズ可能な相互接続１５０を通してハードロジック部分１１４および１１６とインターフェース接続し得る。下記でさらに説明されるように、相互接続１５０は、特定のハードロジックブロックを迂回するため、またはソフトロジックから１つ以上のハードロジックブロックへの（逆もまた同様）入力を提供するために、ＦＰＧＡにおける（つまり、ＦＰＧＡファブリック１２０に実装された）制御回路網によって構成され得る。
【００２１】
マイクロプロセッサーサブシステム１３０は、１つ以上のプロセッサーコア（例えば、コア１３２および１３４）を含む。例えば、マイクロプロセッサーサブシステム１３０は、デュアルコアプロセッサーを有するシステムオンチップ（ＳｏＣ）であり得る。マイクロプロセッサーサブシステム１３０は、プロセッサーサブシステムＩＯ１４４を使用して、デバイスの他の部分、または外部構成要素とインターフェース接続し得る。
【００２２】
デバイス１００の構造が例示にすぎないこと、および任意の適したアーキテクチャが、ハードロジックとソフトロジックとの両方を有するハイブリッドデバイスを実装するために使用され得ることが、理解されるはずである。ハードロジック部分が、カスタマイズ（「差異化（ｄｉｆｆｅｒｅｎｔｉａｔｉｏｎ）」とも呼ばれる）を必要としない機能のために非常に低電力の解決策を可能にする機能（例えば、特定用途向け標準製品（ＡＳＳＰ）機能）を実装するハードロジックブロックを含むことが、さらに理解されるはずである。しかしながら、順応性および差異化が必要とされる場合、構成可能な相互接続（例えば、ハードロジックおよびマイクロプロセッサーサブシステムへの高いバンド幅の接続）は、ハードロジックがＦＰＧＡファブリックとインターフェース接続することを可能にする。従って、ハードロジックと、ソフトロジックと、構成可能な相互接続との組み合わせは、費用対効果の高い、電力効率の良い、順応性の高い解決策を提供する。
【００２３】
一実施形態において、ハードロジック部分１１４および１１６は、４９１ＭＨｚの周波数での動作を可能にする２８ｎｍジオメトリープロセス（ｇｅｏｍｅｔｒｙ  ｐｒｏｃｅｓｓ）を使用して、実装される。各相互接続は、２倍のデータ幅のバスインターフェースであり得、データがハードロジックブロックのチェーンの識別された点においてＦＰＧＡファブリック１２０へ、およびＦＰＧＡファブリック１２０から転送されることを可能にする。上記で論じられたように、ＦＰＧＡファブリックは、機能性を差異化して実装するため、またはハードロジック部分によって提供される現在の機能性を拡張するために使用され得る。一実施形態において、ＦＰＧＡファブリック１２０は、１クロックサイクルあたり１サンプルで２４５Ｍｓｐｓまでをサポートし得る２８ｎｍ低電力プロセス（ｌｏｗ  ｐｏｗｅｒ  ｐｒｏｃｅｓｓ）を使用して実装される。より高いサンプルレートは、例えば、スーパーサンプルレート実装（ｓｕｐｅｒ  ｓａｍｐｌｅ  ｒａｔｅ  ｉｍｐｌｅｍｅｎｔａｔｉｏｎ）を使用してサポートされ得る。もちろん、上記の周波数は、例示にすぎず、本明細書中に説明された技術は、より低いかまたはより高い周波数で動作するデバイスに関して使用され得る。そのうえ、ハードロジック部分およびソフトロジック部分が、同じ周波数または異なる周波数で動作し得ることが、理解されるはずである。
【００２４】
図２は、本発明のいくつかの実施形態に従って、ハイブリッドデバイスの主要な機能的ブロックを描写している。特に、図２は、例証的なハイブリッドデバイス２００を示し、そのハイブリッドデバイス２００は、図１のデバイス１００に実質的に類似し得る。示されているように、デバイス２００は、ハードロジック２０２と、ＦＰＧＡファブリック２０４と、マイクロプロセッサーサブシステム２０６とを含み、これらはそれぞれ、図１のハードロジック部分１１４および／または１１６と、ＦＰＧＡファブリック１２０と、マイクロプロセッサーサブシステム１３０とに実質的に類似し得る。一実施形態において、デバイス２００は、ＦＰＧＡファブリック２０４のソフトロジック内に実装されたダイレクトメモリアクセス（ＤＭＡ）制御器２９４を通して外部メモリ２０８（例えば、ダブルデータレート（ＤＤＲ）メモリ）とインターフェース接続する。
【００２５】
ハードロジック２０２は、数多くの機能のうちの任意のものを実装する。トランシーバーの文脈において、ハードロジック２０２は、種々の標準のデジタルラジオ機能を実装し得る。例として、図２は、送信機フロントエンドに含まれ得るハードロジックブロックを示している。特に、ハードロジック２０２は、ネットワークインターフェース（例えば、Ｃｏｍｍｏｎ  Ｐｕｂｌｉｃ  Ｒａｄｉｏ  Ｉｎｔｅｒｆａｃｅ（ＣＰＲＩ）またはＧｉｇａｂｉｔ  Ｅｔｈｅｒｎｅｔ（登録商標）（ＧｂＥ））ブロック２１２、Ｄｉｇｉｔａｌ  Ｕｐ  Ｃｏｎｖｅｒｓｉｏｎ（ＤＵＣ）ブロック２１４、波高率低減（ＣＦＲ）ブロック２１６、デジタルプリディストーション（ＤＰＤ）ブロック２１８、等化器ブロック２２０、ＩＱ不均衡補正ブロック２２２、および／またはデジタル−アナログ変換（ＤＡＣ）インターフェース２２４を含み得る。ハードロジック２０２はまた、ＤＰＤフィードバック（ＦＢ）アナログ−デジタル変換（ＡＤＣ）インターフェース２２６、ＦＢフロントエンド２２８、構成インターフェース２３０、および／またはデバッギングインターフェース２５０を含み得る。
【００２６】
ブロック２１２〜２２４は、示されているように、互いにシリアルに接続され得、１つのブロックの出力は、次のブロックの入力に接続される。ブロック２１２〜２２４が例示にすぎないこと、およびいくつかの実施形態において、ブロック２１２〜２２４のうちの１つ以上がなくてもよく、かつ／または１つ以上の他の機能的ブロック（描写されていない）が含まれ得ることが、理解されるはずである。そのうえ、ブロック２１２〜２２４の順番は、例示にすぎず、ブロック２１２〜２２４が、任意の適した順番で配列され得ることが理解されるはずである。いくつかの実施形態において、機能的ブロックの追加のパラレル経路が、ハードロジック２０２において実装され得る。従って、ハードロジック２０２は、任意の適した順番で接続された（例えば、受信機または送信器フロントエンドの機能を実施するための）ハードロジックブロックの任意の数のシリアルチェーンを含み得る。
【００２７】
ハードロジック２０２は、構成インターフェース２３０を含み得、構成インターフェース２３０は、ＦＰＧＡファブリック２０４および／またはマイクロプロセッサーサブシステム２０６における制御ロジックがハードロジックブロック２１２〜２２４に構成信号を提供することを可能にする。特に、一実施形態において、構成インターフェース２３０は、示されているような相互接続２４６を通してＦＰＧＡファブリック２０４および／またはマイクロプロセッサーサブシステム２０６に接続され得る統一されたメモリマップされた構成バスを提供する。構成インターフェース２３０は、従って、ＦＰＧＡファブリックまたはマイクロプロセッサーサブシステムからの信号を受信し、次に、構成信号を生成し、構成信号は、それぞれ、接続２３２〜２４４を介してブロック２１２〜２２４の各々に提供される。構成インターフェース２３０は、任意の適したタイプの統一されたインターフェースであり得ること、およびいくつかの実施形態において、構成インターフェース２３０は、メモリマップされなくてもよいことが理解されるはずである。
【００２８】
いくつかの実施形態において、構成インターフェース２３０は、ＦＰＧＡファブリックに実装されるソフトプロセッサーおよび／またはステートマシンによって制御される。構成インターフェースはまた、外部プロセッサー（例えば、マイクロプロセッサーサブシステム２０６）からの構成をサポートする。ソフトロジックまたはマイクロプロセッサーは、ハードロジックにおけるメモリマップされた構成インターフェースに構成信号を提供し得、その構成インターフェースは、次に、関連があるハードロジックブロックを構成し得る。一実施形態において、メモリマップされたインターフェースは、例えば２４５ＭＨｚで動作する３２ビットポート（例えば、相互接続２４６）を含む。
【００２９】
ハードロジック２０２は、デバッギングインターフェース２５０も含み得、デバッギングインターフェース２５０は、ハードロジックブロックのうちの任意のものにおける事前定義されたプローブ点からデータを挿入または抽出することを可能にする。いくつかの実施形態において、ハードブロック２１２〜２２４のうちのいくつか（例えば、示されているように、ハードロジックブロック２１２〜２２０）のみが、デバッギングインターフェース２５０に接続され得る。特に、ハードブロック２１２〜２２０の各々は、それぞれ接続２５４〜２６０を介してデバッギングインターフェース２５０に連結される。デバッギングインターフェース２５０は、次に、相互接続２６２を介してＦＰＧＡファブリック２０４に接続され、ＦＰＧＡファブリック２０４は、図４に関連して下記でより詳細に説明されるように、外部メモリに上記データを提供し得る。ハードブロック２１２〜２２４のうちの任意のものまたはすべてが、デバッギングインターフェース２５０に接続され得ることが理解されるはずである。しかしながら、ハードロジック２０２とソフトロジック２０４との間のバンド幅が、例えば物理的なシリコンの制約によって、制限される場合、複数のハードブロックの一部をなす組が、接続され得る。そのうえ、いくつかの実施形態において、相互接続２７０〜２８２は、デバッギングおよびテスト目的のために、接続２５４〜２６０に加えて使用され得る。さらに別の実施形態において、接続２５４〜２６０は、構成可能な選択回路網（例えば１つ以上のマルチプレクサ）を使用して、かつ／または時間領域多重化（例えば時分割マルチプレクサ）を使用して、複数のハードロジックブロック間で共有され得る。多重化機能性は、デバイスが例えばＦＰＧＡビットストリームを使用して作動させられる場合に、または実行時間中に動的に、構成され得る。
【００３０】
再び図２を参照すると、ソフトロジック２０４は、数多くのプログラマブル機能のうちの任意のものを実装する。例として、図２は、トランシーバーフロントエンドをサポートするために含まれ得るソフトロジックブロックを示している。特に、ソフトロジック２０４は、キャプチャバッファ２９０と、デジタルプリディストーション（ＤＰＤ）適応ブロック２９２と、読み込み／書き込みダイレクトメモリアクセス（ＤＭＡ）制御器２９４とを含み得る。ソフトロジックブロック２９０〜２９４は、示されているように互いに接続され得るか、または他の任意の適した構成にあり得る。ブロック２９０〜２９４が例示にすぎないこと、およびいくつかの実施形態において、ブロック２９０〜２９４のうちの１つ以上がなくてもよく、かつ／または１つ以上の他のソフトブロック（描写されていない）が実装され得ることがまた、理解されるはずである。要するに、ソフトロジック２０４は、互いに、かつ／またはハードロジック２０２のハードロジックブロックに任意の適した順番で接続された（例えば、受信機または送信器フロントエンドの機能を実施するための）ソフトロジックブロックの任意の数のシリアルまたはパラレルチェーンを含み得る。
【００３１】
デバイス２００はまた、ハードロジック２０２をＦＰＧＡファブリック２０４に連結するための構成可能な相互接続を含み得る。図２に示されているように、各々が２つの連続したハードロジックブロック間の点に配置された相互接続２７０〜２８２が、提供され得る。この配列は、データ信号が、ハードロジックブロックのチェーンにおける任意の第一の点からＦＰＧＡファブリックにおけるプログラマブルロジックへ、そしてハードロジックブロックのチェーンにおける任意の第二の点へ戻る経路を定められることを可能にする。あるいは、相互接続２７０〜２８２のうちの１つ以上は、ハードロジックブロックのうちの１つ内の点に配置され得る。この配列は、データ信号が、特定のハードロジックブロックにおける任意の第一の点からＦＰＧＡファブリックにおけるプログラマブルロジックへ、そして同じまたは別のハードロジックブロック内の任意の第二の点へ戻る経路を定められることを可能にする。もちろん、これらの配列の組み合わせはまた、可能であり、つまり、相互接続は、信号が、ハードロジック点のチェーンにおける任意の第一の点（ブロック内であろうとチェーンにおけるノードであろうと）から他の任意の点までの経路を定められることを可能にし得る。従って、経路を定めることの特徴は、ハードロジック迂回、ハードロジック増強、およびロジック機能の追加を可能にする。
【００３２】
ハードロジック迂回は、１つ以上のハードロジックブロックを迂回して信号の経路を定めることによって実装され、いくつかの場合において、迂回されたハードロジックブロックをＦＰＧＡファブリックにおけるカスタマイズされたバージョンと取り替える。例えば、ブロック２１６の機能性が必要とされない場合、相互接続２７２は、ブロック２１４の出力からＦＰＧＡファブリック２０４へデータ信号の経路を定めるように構成され得、ＦＰＧＡファブリック２０４において、信号は相互接続２７４へ直接通過させられ得、相互接続２７４は、ブロック２１８の入力へデータ信号の経路を定めるように構成され得る。別の例として、ブロック２１６の機能性がソフトロジックモジュールによって取り替えられる場合、相互接続２７２は、ブロック２１４の出力からＦＰＧＡファブリック２０４へデータ信号の経路を定めるように構成され得、ＦＰＧＡファブリック２０４において、信号はソフトロジックモジュールによって処理されて相互接続２７４へ出力され得、相互接続２７４は、ブロック２１８の入力へデータ信号の経路を定めるように構成され得る。構成可能な相互接続を使用して、ハードロジックブロックを迂回すること、および／またはハードロジックブロックを取り替えることは、図３および７に関連して下記でより詳細に論じられる。
【００３３】
ハードロジック増強は、ＦＰＧＡファブリック２０４におけるソフトロジックブロックからハードロジックブロック（または、ハードロジックブロック内のロジック要素）の入力へ信号の経路を定めることによって実装される。特に、ハードロジックブロックは、処理のために複数の入力を受け入れ得、これらの入力のうちの１つは、ソフトロジックによって提供され得、従って、ハードロジックブロックの機能性を増強する。ソフトロジックによって提供される信号は、ハードロジック経路におけるデータ信号から導出されてもされなくてもよい。例えば、相互接続２７４は、ＦＰＧＡファブリック２０４からの入力信号をプリディストーションブロック２１８内へ提供し、プリディストーションブロック２１８は、複数の入力を受け入れるように構成され得る。入力信号は、新たな信号を生成するソフトロジックブロックによって、または、例えば、ハードロジックチェーンの別の点における相互接続から受信された信号を処理するソフトロジックブロックによって生成され得る。
【００３４】
ロジック機能の追加は、ハードロジックチェーンにおける点からＦＰＧＡファブリックにおけるソフトロジックブロックへ、そしてハードロジックチェーンにおける同じ点に戻る信号の経路を定めることによって達成される。従って、ソフトロジックブロックは、ハードロジック経路内に「挿入される」。例えば、追加のロジックブロックは、ブロック２１４の出力からＦＰＧＡファブリック２０４において実装されたソフトロジックブロックへ信号の経路を定め、ＦＰＧＡファブリック２０４において、信号が処理されてブロック２１６の入力へ戻る経路を定められるように相互接続２７２を構成することによって、ブロック２１４と２１６との間に挿入され得る。ハードロジック増強およびロジック機能の追加は、図３、６および７に関連して下記でより詳細に論じられる。
【００３５】
上記で論じられ、かつ図２に描写されているように、相互接続２７０〜２８２の各々は、２つの連続したハードロジックブロック間の点に配置され得る。より具体的には、相互接続は、ハードロジックデータ経路（例えば、ハードロジックブロック間および／またはこれらのブロック内）における任意の数のノードに接続され得る。しかしながら、この配列が実際は概念的であり得ることが、理解されるはずである。特に、ノードの数は、利用可能な相互接続の数よりも大きくあり得る。これは、例えば、バンド幅制限システムにおける場合であり得る。従って、利用可能な相互接続は、選択回路網（例えば、１つ以上のマルチプレクサ）を使用して、ハードロジックデータ経路におけるノードに選択的に接続され得る。選択回路網は、（例えば、ＦＰＧＡにおける制御ロジック、マイクロプロセッサーサブシステム、またはデバイスが作動させられる場合のＦＰＧＡビットストリームによる）構成データに従って、特定のノードを利用可能な相互接続に接続するように構成され得る。このように、制限された数の相互接続は、構成データに基づいて、ハードロジックデータ経路におけるノードのうちの任意のものに接続され得る。
【００３６】
図３は、本発明のいくつかの実施形態に従って、ハードロジックブロックを代替ソフトロジックモジュールと取り替えるように構成された図２のデバイス２００の例示的な実装を描写している。特に、図３は、例証的なハイブリッドデバイス３００を示し、そのハイブリッドデバイス３００は、図２のデバイス２００に実質的に類似し得るが、ＦＰＧＡファブリック３０４においてカスタムプリディストーションブロック３３０の追加を有する。示されているように、相互接続３２０は、ソフトロジックモジュール３３０へハードロジックブロック３１０の出力の経路を定めるように構成され得る。次に、相互接続３２２は、ハードロジックブロック３１４の入力へソフトロジックモジュール３３０の出力の経路を定めるように構成され得る。従って、ハードロジックブロック３１２の機能性は、ソフトロジックモジュール３３０の機能性と取り替えられる。このように、顧客は、ハードロジック３０２におけるハードロジックブロックのうちの任意のものを取り替るために、カスタマイズされた機能を実装するようにＦＰＧＡファブリック３０４をプログラムし得る。さらに、いくつかの実施形態において、ＦＰＧＡファブリック３０４における制御ロジックは、代替ソフトロジックブロックが代わりに使用される場合に、迂回されたハードロジックデバイスを無効にするように構成され得る。例えば、制御ロジックは、構成インターフェース３１６に信号を提供し得、構成インターフェース３１６は、ブロック３１２を無効にする（または、ブロックの電力消費を妨げるかまたは最小にする）構成信号を提供し得る。
【００３７】
図４は、本発明のいくつかの実施形態に従って、１つ以上のハードロジックブロックをテストするように構成された図２のデバイス２００の例示的な実装を描写している。特に、図４は、例証的なハイブリッドデバイス４００を示し、そのハイブリッドデバイス４００は、図２のデバイス２００に実質的に類似し得るが、ＤＭＡ制御器４４０に直接連結された相互接続４２８を有する。示されているように、相互接続４２８は、メモリ４０６における格納のために、制御器４４０へ、デバッギングインターフェース４３０によって提供された信号の経路を定めるように構成され得る。デバッギングインターフェース４３０は、ハードロジックブロックのうちの任意のものにおける事前定義されたプローブ点から（例えば、テスト目的のための）データを挿入または抽出することを可能にする。いくつかの実施形態において、ハードブロック２１２〜２２４のうちのいくつかのみ（例えば、示されているように、ハードロジックブロック２１２〜２２０）が、デバッギングインターフェース２５０に接続され得る。ハードロジック４０２における接続４２０〜４２６は、デバッギングインターフェース４３０へ、事前定義されたプローブ点における信号の経路を定める一方、相互接続４２８は、デバッギングインターフェース４３０からＦＰＧＡファブリック４０４へ信号の経路を定める。いくつかの実施形態において、相互接続４２８は、１つの３２ビット双方向テストポートを形成し、それによって、統一されたデバッギングインターフェースを提供する。いくつかの実施形態において、デバッギングインターフェース４３０は、ＦＰＧＡファブリックにおける追加のデバッギングロジックを用いて補われ得る。そのような実施形態において、相互接続４２８は、デバッギングインターフェース４２８からデバッギングソフトロジックへ信号の経路を定めるように構成され得、それから、デバッギングソフトロジックは、ＤＭＡ４４０を通してメモリとインターフェース接続し得る。
【００３８】
上記で説明された態様で、相互接続４２８と、デバッギングインターフェース４３０と、接続４２０〜４２６とを使用することは、テストデータが、メモリ４０６から読み出されて、事前定義されたプローブ点のうちの任意のものにおいてハードロジックデータ経路内へ挿入されることを可能にする。同時に、データは、事前定義されたプローブ点のうちの任意のものにおいて抽出されて、メモリ４０６に格納され得る。異なるプローブ点におけるテストデータの挿入および収集は、ハードロジック４０２のハードロジックブロックをテストおよびデバッグすることを助け得る。デバッギングの特徴はまた、ソフトロジックがハードロジックブロックのうちの任意のものを取り替えるかまたは増強する場合に、使用され得ることが、理解されるはずである。例えば、図３および４において描写された相互接続は、それぞれの図において示されかつ上記で説明されたように同時に構成され得る。このように、デバッギングインターフェース４３０はまた、ソフトロジックモジュールを用いてハードロジックブロックの統合をテストするために使用され得る。
【００３９】
図５は、本発明のいくつかの実施形態に従って、ハードロジックをソフトロジックに連結する構成可能な相互接続の例示的な実装を描写している。特に、図５は、例証的な相互接続５００を示し、その相互接続５００は、図２の相互接続２７０〜２８２のうちの任意のものに実質的に類似し得る。示されているように、相互接続５００は、ＦＰＧＡファブリックとハードロジックとの間のデータの経路を定めるために、２つの別個の相互接続５２０および５２２を含む。相互接続５２０は、ＦＰＧＡファブリック５０４からハードロジック５０２へデータの経路を定めるために使用される一方、相互接続５２２は、ハードロジック５０２からＦＰＧＡファブリック５０４へデータの経路を定めるために使用される。いくつかの実施形態において、ＦＰＧＡファブリックは、ハードロジックの速度の半分で動作する。従って、データがＦＰＧＡファブリック５０４からハードロジック５０２に提供される場合、２つのデータワードは、パラレルに送信され、そしてハードロジックにおいてシリアル化され得る。シリアル化することは、ビットレベルまたはワードレベルで実施され得る。例えば、２つのデータワードは、ハードロジックにおいてワードレベルでシリアル化され、それによって、ワードをハードロジックブロックにシリアルの態様で提供し得る。従って、相互接続５２０は、示されているように、２つのデータワードをシリアル化するためにシリアライザ回路網５１０を含み得る。同様に、データがハードロジック５０２からＦＰＧＡファブリック５０４に提供される場合、２つのデータワードは、ハードロジックにおいてパラレル化され、そしてＦＰＧＡファブリックに提供され得る。従って、相互接続５２２は、示されているように、２つのデータワードをパラレル化するためにパラレライザ回路網５１２を含み得る。このように、スループットは、より速いハードロジックとより遅いＦＰＧＡファブリックとの間で均衡が保たれる。
【００４０】
図６は、本発明のいくつかの実施形態に従って、ソフトロジックモジュールをハードロジックデータ経路内へ挿入することを可能にする構成可能な相互接続の例示的な実装を描写している。特に、図６は、例証的な相互接続６２０を示し、その相互接続６２０は、図２の相互接続２７０〜２８２のうちの任意のものに実質的に類似し得る。示されているように、相互接続６２０は、ハードロジック６０２とＦＰＧＡファブリック６０４との間のデータ信号の経路を定める。相互接続６２０は、ハードロジックからＦＰＧＡファブリックに信号を提供するための相互接続６２４と、ＦＰＧＡファブリックからハードロジックに信号を提供するための相互接続６２６と、マルチプレクサ６２２とを含む。マルチプレクサ６２２は、ソフトロジックモジュールがデータ経路に追加されるかどうかに応じて、ハードロジックから受信された信号とソフトロジックから受信された信号とのうちの１つを出力するように構成される。例えば、ソフトロジックモジュール６１４をハードロジックデータ経路内へ挿入するために、相互接続６２４は、ソフトロジックモジュール６１４へハードロジックブロック６１０の出力の経路を定める。ソフトロジックモジュール６１４は、信号を処理し、相互接続６２６は、マルチプレクサ６２２へ処理された信号の経路を定め、マルチプレクサ６２２はまた、処理されていない出力をロジックブロック６１０から直接受信する。マルチプレクサ６２２は、ソフトロジックモジュールをハードロジックデータ経路内へ挿入するために、相互接続６２６によって提供された信号を選択し、ハードロジックブロック６１２は、処理された信号を受信する。これに対して、マルチプレクサ６２２は、ソフトロジックモジュールを迂回するために、ロジックブロック６１０によって提供された信号を選択し、この場合、ハードロジックブロック６１２は、処理されていない信号をブロック６１０から直接受信する。
【００４１】
図６が簡単化された例証であること、および他の適した構成要素が追加の機能性を提供し得ることが、理解されるはずである。例えば、図５に関して説明されたシリアライザおよびパラレライザ回路網は、ＦＰＧＡファブリックにおけるスループット制限を補償するために実装され得る。そのうえ、図６の回路網は、図７に示されているように、ハードロジックブロックの増強および／または取り替えを可能にする追加の回路網を用いて増強され得る。
【００４２】
図７は、本発明のいくつかの実施形態に従って、ハードロジックブロックの増強および／または取り替えを可能にする構成可能な相互接続の例示的な実装を描写している。特に、図７は、ハードロジック部分７０２とＦＰＧＡファブリック７０４とを示している。ハードロジック部分７０２は、ハードロジックブロック７１０と、マルチプレクサ７２０〜７２８と、コンバイナー７３０と、構成可能な遅延線７４０および７４２とを含み得る。ＦＰＧＡファブリック７０４は、ソフトロジックモジュール７１２を含み得る。説明されるように、構成要素の描写されている配列は、ハードロジックブロック７１０がソフトロジックモジュール７１２によって取り替えられること、またはソフトロジックモジュール７１２を使用してハードロジックを増強することを可能にする。後者のアプローチにおいて、遅延回路網は、ハードロジックとソフトロジック構成要素との間の処理速度の任意のミスマッチを補償することを保証する。
【００４３】
ハードロジックブロック７１０によって提供される機能性のみが所望される場合、マルチプレクサ７２０〜７２８は、ハードロジックブロック７１０の出力をコンバイナー７３０へ直接通過させるように構成され得、それから、コンバイナー７３０は、受信された信号を出力し得る。特に、ブロック７１０によって出力されたデータ信号は、マルチプレクサ７２２に直接提供され、マルチプレクサ７２２は、データ信号をマルチプレクサ７２６へ通過させるように構成される。マルチプレクサ７２６は、同様に、データ信号をコンバイナー７３０へ通過させるように構成され、コンバイナー７３０は、マルチプレクサ７２８によるゼロ値出力をデータ信号に組み合わせる（例えば、追加する）。いくつかのアプローチにおいて、ハードロジックブロック７１０によって出力されたデータ信号がコンバイナー７３０によって出力される前に、ハードロジックブロック７１０によって出力されたデータ信号を遅延させることが望ましくあり得る。その場合、マルチプレクサ７２２は、遅延線７４２によって出力されたデータ信号を通過させるように構成され、遅延線７４２は、所望の量の遅延を提供するように設定される。遅延線７４２は、ハードロジックブロック７１０からマルチプレクサ７２０を通してデータ信号を受信し、マルチプレクサ７２０は、ロジックブロック７１０から受信するデータ信号を通過させるように構成される。
【００４４】
ソフトロジックモジュール７１２がハードロジックブロック７１０に取って代わる場合、マルチプレクサ７２０〜７２８は、ソフトロジックモジュール７１２の出力をコンバイナー７３０へ直接通過させるように構成され得、それから、コンバイナー７３０は、受信された信号を出力し得る。特に、ソフトロジックモジュール７１２によって出力されたデータ信号は、マルチプレクサ７２４に直接提供され、マルチプレクサ７２４は、データ信号をマルチプレクサ７２８へ通過させるように構成される。マルチプレクサ７２８は、同様に、データ信号をコンバイナー７３０へ通過させるように構成され、コンバイナー７３０は、マルチプレクサ７２６によるゼロ値出力をデータ信号に組み合わせる（例えば、追加する）。いくつかのアプローチにおいて、ソフトロジックモジュール７１２によって出力されたデータ信号がコンバイナー７３０によって出力される前に、ソフトロジックモジュール７１２によって出力されたデータ信号を遅延させることが望ましくあり得る。その場合、マルチプレクサ７２４は、遅延線７４２によって出力されたデータ信号を通過させるように構成され、遅延線７４２は、所望の量の遅延を提供するように設定される。遅延線７４２は、ソフトロジックモジュール７１２からマルチプレクサ７２０を通してデータ信号を受信し、マルチプレクサ７２０は、ソフトロジックモジュール７１２から受信するデータ信号を通過させるように構成される。
【００４５】
ハードロジックブロック７１０がソフトロジックモジュール７１２と組み合わせられる場合、マルチプレクサ７２０〜７２８は、ハードロジックブロック７１０の出力とソフトロジックモジュール７１２の出力との両方をコンバイナー７３０へ通過させるように構成され得、それから、コンバイナー７３０は、信号を共に組み合わせ（例えば、追加し）て、組み合わせられた信号を出力し得る。特に、遅延が必要でない場合、マルチプレクサ７２２および７２６は、ブロック７１０によって提供された信号をコンバイナー７３０へ直接通過させ得る。同様に、マルチプレクサ７２４および７２８は、モジュール７１２によって提供された信号をコンバイナー７３０へ直接通過させ得る。（例えば、より遅いかまたはより長々しいＦＰＧＡにおける処理によって）遅延がハードロジック信号に対して必要とされる場合、マルチプレクサ７２０は、ブロック７１０から遅延線７４２にデータ信号を提供し得、遅延線７４２は、所望の量だけハードロジック信号を遅延させ得る。それから、マルチプレクサ７２２および７２６は、遅延させられた信号をコンバイナー７３０へ直接通過させ得る。同様に、（例えば、より遅いかまたはより長々しいハードロジックにおける処理によって）遅延がソフトロジック信号に対して必要とされる場合、マルチプレクサ７２０は、モジュール７１２から遅延線７４２にデータ信号を提供し得、遅延線７４２は、所望の量だけソフトロジック信号を遅延させ得る。それから、マルチプレクサ７２４および７２８は、遅延させられた信号をコンバイナー７３０へ直接通過させ得る。
【００４６】
図７の配列が例証にすぎないこと、および１つ以上の構成要素が、所望されるように取り除かれ得るかまたは追加され得ることが、理解されるはずである。例えば、マルチプレクサ７２０、７２２、および７２４と遅延線７４２とが取り除かれ得、遅延線７４０が、信号がモジュール７１２によって受信される前に信号を遅延させるために使用され得る。あるいは、または、そのうえ、遅延線７４０は、完全に取り除かれ得る。コンバイナー回路網７３０は、加算器、または２つ以上の信号を組み合わせることに適した他の任意の回路網であり得る。そのうえ、図７は、図５および６に関連して示されかつ説明された構成要素のうちの任意のものを組み込み得る。
【００４７】
図８は、インターフェースを使用してハードロジックおよびソフトロジックを接続する例証的な工程８００を示している。ステップ８０２において、データ経路構成データが、例えば、ＦＰＧＡファブリックにおける制御ロジックによって受信され得る。データ経路構成データは、外部メモリ（例えば、図２のメモリ２０８）に格納されて、ＦＰＧＡファブリックにおけるメモリアクセスデバイス（例えば、図２のＤＭＡ２９４）によって読み出され得る。ステップ８０４において、制御ロジックは、読み出された構成データに基づいて、ハードロジック部分とＦＰＧＡファブリックとの間のインターフェースを構成し得る。例えば、制御ロジックは、上記で説明されたように、ハードロジックブロックを迂回するため、ハードロジックブロックをソフトロジックモジュールと取り替えるため、ソフトロジックモジュールをデータ経路内へ挿入するため、またはソフトロジックからの信号の経路を定めることによってハードロジックを増強するために、相互接続２７０〜２８２のうちの任意のものを構成し得る。従って、制御ロジックは、図５〜７に関連して描写されかつ論じられた構成要素のうちの任意のものを構成し得る。特に、制御ロジックは、１つ以上のマルチプレクサ、シリアライザまたはパラレライザ回路網、および／または遅延線を構成し得る。他の実施形態において、プロセッサーサブシステムは、制御ロジックの代わりに、または制御ロジックに加えて、これらの構成要素を構成し得る。例えば、プロセッサーサブシステムは、読み出された構成データに基づいて、ハードロジック部分とＦＰＧＡファブリックとの間のインターフェースを構成し得る。
【００４８】
ステップ８０６において、インターフェースは、構成に基づいて、ハードロジックデータ経路（例えば、２つのハードロジックブロック間、またはハードロジックブロック内）におけるノードをソフトロジックモジュールまたはハードロジックブロックに接続し得る。例えば、図６を参照して、インターフェースは、構成に応じて、ロジックブロック６１２の入力をハードロジックブロック６１０またはソフトロジックモジュール６１４の出力に接続し得る。別の例として、図７を参照して、ブロック７１０とモジュール７１２とのうちの１つまたは両方は、コンバイナー７３０に接続され得る。構成データは、制御ロジックおよび／またはプロセッサーサブシステムによって両方の事情において使用されることにより、所望されるようにマルチプレクサおよび／または遅延線を構成する。
【００４９】
図９は、ハードロジックとソフトロジックとの間のインターフェースを構成する例証的な工程９００を示している。工程９００は、図８のステップ８０４の一部として（例えば、制御ロジックおよび／またはプロセッサーサブシステムによって）実行され得る。ステップ９０２において、データ経路構成は、データ経路構成データから決定される。つまり、制御ロジックおよび／またはプロセッサーサブシステムは、メモリからデータを読み込み、どの相互接続を構成すべきか、およびそれらの相互接続はどのように構成されるかを決定する。特に、ステップ９０４〜９１４は、ハードロジックチェーンの各ハードロジックブロックに対して実行され得る。ステップ９０４において、制御ロジックおよび／またはプロセッサーサブシステムは、特定のハードロジックブロックが、単独で（つまり、ソフトロジックモジュールによる増強または取り替えなしに）使用されるかどうかを決定する。そのような場合、工程は、ステップ９０６へ進み、ステップ９０６において、インターフェース（例えば、相互接続、マルチプレクサ、および／または遅延線）は、ハードロジックブロックをデータ経路に接続するように構成される。ステップ９０８において、制御ロジックおよび／またはプロセッサーサブシステムは、特定のソフトロジックモジュールが、単独で（つまり、ハードロジックブロックの代わりに）使用されるかどうかを決定する。そのような場合、工程は、ステップ９１０へ進み、ステップ９１０において、インターフェース（例えば、相互接続、マルチプレクサ、および／または遅延線）は、ハードロジックブロックの代わりにソフトロジックモジュールをデータ経路に接続するように構成される。最後に、ステップ９１２において、制御ロジックおよび／またはプロセッサーサブシステムは、特定のハードロジックブロックが、ソフトロジックモジュールと組み合わせて使用されるかどうかを決定する。そのような場合、工程は、ステップ９１４へ進み、ステップ９１４において、インターフェース（例えば、相互接続、マルチプレクサ、および／または遅延線）は、ハードロジックブロックをソフトロジックモジュールに接続するように構成される。例えば、各ブロックの出力をコンバイナー回路に接続することによって。
【００５０】
実際は、工程８００および９００において示されている１つ以上のステップは、他のステップと組み合わせられ、任意の適した順番で実施され、パラレルに（例えば、同時に、または実質的に同時に）実施され、または取り除かれ得る。例えば、制御ロジックおよび／またはプロセッサーサブシステムは、別の選択肢が決定されない限り、すべてのハードロジックブロックを接続することをデフォルトで実行する。従って、ステップ９０４および９０６は、取り除かれ得、ハードロジックブロックは、取り替えられる構成または増強される構成が構成データから所望されることを決定したことに応答して、取り替えられるか、または増強されるのみであり得る。いくつかの実施形態において、インターフェース（例えば、相互接続、マルチプレクサ、および／または遅延線）は、デバイスが作動させられる場合のＦＰＧＡビットストリームによって構成される。例えば、マルチプレクサは、構成メモリ（ＣＲＡＭ）に格納されたデータを使用するＦＰＧＡ構成ルーチンの一部として構成され得る。最後に、工程８００および／または９００は、任意の適した態様で、ハードウェアおよび／またはソフトウェアの任意の適した組み合わせを使用して実装され得る。例えば、上記で論じられたように、ＦＰＧＡファブリックにおける制御ロジックとプロセッサーサブシステムとのうちの１つまたは両方は、種々のハードロジックブロック、ソフトロジックモジュール、およびインターフェース接続を構成し得る。インターフェースが、デバイスが（例えば、ＣＲＡＭを使用して）作動させられる場合のＦＰＧＡビットストリームによって構成される実施形態において、制御ロジックおよびプロセッサーサブシステムは、さらに、インターフェースを動的に構成してもしなくてもよい。
【００５１】
本発明の上記で説明された実施形態は、制限の目的のためではなく、例証の目的のために提示され、本発明は、以下の特許請求の範囲によってのみ制限される。
【図１】
0005745165.tif 000002
【図２】
0005745165.tif 000003
【図３】
0005745165.tif 000004
【図４】
0005745165.tif 000005
【図５】
0005745165.tif 000006
【図６】
0005745165.tif 000007
【図７】
0005745165.tif 000008
【図８】
0005745165.tif 000009
【図９】
0005745165.tif 000010