(57)【要約】【課題】ＦＰＧＡのＡＳＩＣ等価物をより効率的、経済的に提供すること。【解決手段】ＦＰＧＡのＡＳＩＣ等価物の提供は、複数のいわゆるハイブリッド論理素子（ＨＬＥ）を含むＡＳＩＣアーキテクチャを使用することによって、促進され、より効率的、経済的に実行される。各ＨＬＥは、ＦＰＧＡ論理素子（ＬＥ）の完全機能の一部を提供可能である。ユーザの論理設計を実装する各ＦＰＧＡ  ＬＥの機能は、ユーザの論理を再合成することなく単一または複数のＨＬＥへとマッピング可能である。必要な数のＨＬＥだけが、各ＬＥの関数を実行するために使用される。ＬＥ間および（１）単一のＨＬＥまたは（２）ＨＬＥ群間の１対１の等価性によって、ＦＰＧＡ設計とＡＳＩＣ設計との間のいずれの方向においてもマッピングが（再合成することなく）促進される。【選択図】図３
2014131365.tif 000002
【特許請求の範囲】
【請求項１】
本願明細書に記載の発明。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブル論理回路（ＰＬＤまたはＦＰＧＡ）の等価物または代替物として利用可能な、特定用途向け集積回路（ＡＳＩＣ）用の回路に関する。本発明は、また、デバイスの相互可変性が達成されるような、上記２種類のデバイス間のＡＳＩＣまたはＰＬＤ（またはＦＰＧＡ）の特定の利用のための転送設計に関連する。
【背景技術】
【０００２】
典型的なプログラマブル論理デバイス（ＰＬＤ）またはフィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）は、所定の大きさの論理素子（ＬＥ）を含んでいる。（本明細書では便宜のため、ＦＰＧＡという術語はＰＬＤおよびＦＰＧＡの一般的な術語として使用されている。）例えばＦＰＧＡ  ＬＥは、４入力ルックアップテーブル（ＬＵＴ）、レジスタおよび、いくつかのルーティング回路を含んでいてもよい。このルーティング回路は、順序ロジックまたは演算が所望される場合に、（例えば、ＬＵＴの出力を登録するために）レジスタを使用可能とするか、組み合わせの、または組み合わせ論理または演算が所望される場合に、レジスタをバイパス可能とする。ＦＰＧＡ  ＬＥは、他の特徴または能力を有していてもよいが、上述の例で十分説明可能である。ＦＰＧＡはまた、多くのＬＥの他に、典型的にはプログラマブル・ルーティング回路を有していてもよい。この回路は、多くの異なる方法のうち任意の方法で、ＬＥへ、から、および／または間の信号を伝達することによって、複数のＬＥを組み合わせまたは他の方法で使用することによって、非常に複雑なおよび／または広範な論理または論理型演算が実行可能である。さらにＦＰＧＡは、ＬＥに加えて、入／出力（Ｉ／Ｏ）回路、メモリのブロック、マイクロ・プロセッサ、デジタル信号処理（ＤＳＰ）ブロック、高速シリアル・インタフェース（ＨＳＳＩ）ブロック等、特定用途回路等の、他の種類の回路を有していてもよい。これらの他の種類の回路も、上述のプログラマブル・ルーティング回路を介して、互いに（およびＬＥに）相互接続可能である。
【０００３】
ＦＰＧＡは当業者にとって周知である多くの利点を有している。しかし、場合によっては、ＦＰＧＡ設計のＡＳＩＣ等価物を有することが望ましく、そのため高容量のアプリケーションにおいてコスト低減が可能である。例えば、設計はＦＰＧＡ中から開始してもよい。しかし、当該設計が十分に証明され、十分な高容量に到達した後は、ＡＳＩＣ等価物を代替することによって、費用効率が高い場合もある。
【０００４】
ＦＰＧＡに対しＡＳＩＣ等価物を提供する既知の方法では、起動用ＦＰＧＡと同一のＬＥの基本的な機構を有するＡＳＩＣアーキテクチャを採用している。例えば、ＦＰＧＡがＬＥの列を含んでいる場合、各列は４入力ＬＵＴ（４−ＬＵＴ）およびレジスタを有し、ＡＳＩＣは４−ＬＵＴおよびレジスタを含むＬＥの類似した列を備える。続いて、ＡＳＩＣ中の所定の層は、特定のユーザの設計のためにカスタマイズされて、ＬＥを効果的に「プログラム」し、ＬＥ間の所要の相互接続ルーティングを提供する。
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＦＰＧＡのＡＳＩＣ等価物を提供する上述の方法は多くの利点を有する。しかし、改善が常に求められている。例えば、大部分のユーザ設計はＦＰＧＡ上の全回路を利用していない。ＦＰＧＡ回路の一部は、一般に使用されていない。４−ＬＵＴは、２入力または３入力関数を提供するためにのみ、使用してもよい。あるいは、一部のＬＥ中ではＬＵＴまたはレジスタ（両方ではない）を使用してもよい。これらのいずれの場合も、完全に利用されていないＬＥ中の回路の相当量が、事実上無駄に消費されている。同一の基本的なＬＥ構造が、等価ＡＳＩＣの基本を形成する場合、同一の無駄な消費がＡＳＩＣ中に反復される。
【課題を解決するための手段】
【０００６】
上述に鑑みて、本発明によるＡＳＩＣアーキテクチャは、等価ＦＰＧＡ中のＬＥとは同一でない論理素子を含む。本明細書中ではこれらＡＳＩＣ論理素子は、ハイブリッド論理素子（ＨＬＥ）として言及されている。各ＨＬＥは、比較的小さい、汎用的な、組み合わせ論理コンポーネント（例：１入力ＬＵＴすなわち１−ＬＵＴ）、比較的小さな論理ゲートアレイ（例：２個の２入力ＮＡＮＤゲート）、およびいくつかの関連する相互接続またはルーティング・リソースを有していてもよい。ＨＬＥ（例：１−ＬＵＴおよびＮＡＮＤゲート）中の演算回路の量は、関連するＦＰＧＡ  ＬＥ中の演算回路の量よりもはるかに小さい。ＨＬＥ中のルーティング・リソースの少なくともごく一部の態様では、ＨＬＥへの入力接続、ＨＬＥからの出力接続、およびＨＬＥの内部接続等を確立する目的のために、プログラマブル（例えば、バイアを使用してマスク・プログラマブル）である。一部の比較的十分利用されていないＦＰＧＡ  ＬＥに対しては、単一のＡＳＩＣ  ＨＬＥがＬＥの関数を実行可能である。ＬＥの利用率がより大きい場合、数個の隣接した（あるいは少なくとも近傍に存在する）ＨＬＥが、ＬＥの関数を等価的に実行するために必要とされることがある。いずれの場合も、ＬＥの等価物を提供するために、ＬＥの関数を実行するために必要なＨＬＥと同数のＨＬＥのみが使用される。大部分の設計ではＬＥの多くが完全に利用されていないので、ＦＰＧＡと等価としての使用のためにＡＳＩＣ上に提供されるＨＬＥの数は、全ＬＥが完全に利用された場合に必要とされるであろうＨＬＥの数よりも有意に少ない。これは、各ＦＰＧＡ  ＬＥに対し完全機能を持つＬＥを使用するＡＳＩＣと比較して、ＡＳＩＣの規模が有意に低減される。
【０００７】
少なくともかなりの程度まで、各ＬＥと、等価のＨＬＥまたはＨＬＥ群との間には、好適には１対１の対応がある。この対応によって、ユーザの論理を再合成することなしに、ＦＰＧＡ設計から等価のＡＳＩＣへの変換、およびその逆の変換が促進される。このような再合成を回避することによって時間および費用の節約が可能であり、（ＦＰＧＡまたはＡＳＩＣのいずれかが適切に機能することが実証されていると仮定すれば、）ＡＳＩＣおよびＦＰＧＡの等価物が略同一におよび欠陥なしに機能することが、一層確実に保証される。
例えば、本発明は以下の項目を提供する。
（項目１）
第２および第３の選択回路入力信号のうち一つを選択回路出力信号として選択するために、第１の選択回路入力信号を使用する選択回路、
第１および第２の論理回路入力信号の論理関数である論理回路出力信号を供給する論理回路、および
第１および第２の論理回路入力信号のうち少なくとも一つを、選択回路出力信号または論理素子外の信号から取り出すことを可能にする、プログラマブル相互接続回路
を含む、論理素子回路。
（項目２）
選択回路がマルチプレクサ回路を含む、項目１記載の回路。
（項目３）
論理回路がＮＡＮＤ回路を含む、項目１記載の回路。
（項目４）
プログラマブル相互接続回路がマスク・プログラマブル回路を含む、項目１記載の回路。
（項目５）
プログラマブル回路がプログラマブル・バイア回路を含む、項目１記載の回路。
（項目６）
第１、第２、第３の選択回路入力信号のうち一つを論理回路出力信号から取り出すことを可能にする、さらに別のプログラマブル相互接続回路をさらに含む、項目１記載の回路。
（項目７）
第１、第２、第３の選択回路入力信号のうち少なくとも一つを論理素子外の信号から取り出すことを可能にする、さらに別のプログラマブル相互接続回路をさらに含む、項目６記載の回路。
（項目８）
第１および第２のさらに別の論理回路入力信号の論理関数であるさらに別の論理回路出力信号を供給する、さらに別の論理回路をさらに含む、項目１記載の回路。
（項目９）
第１および第２のさらに別の論理回路入力信号のうち少なくとも一つを、選択回路出力信号または論理素子外の信号から取り出すことを可能にする、さらに別のプログラマブル相互接続回路をさらに含む、項目８記載の回路。
（項目１０）
第１および第２のさらに別の論理回路入力信号のうち少なくとも一つを、論理回路出力信号から取り出すことを可能にする、さらに別のプログラマブル相互接続回路をさらに含む、項目８記載の回路。
（項目１１）
第１および第２のさらに別の論理回路入力信号のうち少なくとも一つを、選択回路出力信号または論理素子外の信号から取り出すことを可能にする、追加的なプログラマブル相互接続回路をさらに含む、項目１０記載の回路。
（項目１２）
それぞれが項目１記載の複数の論理素子回路を含む、集積回路デバイス。
（項目１３）
少なくとも数個の論理素子回路それぞれからの信号を、論理素子回路に隣接する別の論理素子回路に供給することを可能にする、さらに別のプログラマブル相互接続回路をさらに含む、項目１２記載のデバイス。
（項目１４）
プログラマブル相互接続回路はデバイス層の第１サブセット中に提供され、さらに別のプログラマブル相互接続回路もまたデバイス層の第１サブセット中に提供される、項目１３記載のデバイス。
（項目１５）
少なくとも数個の論理素子回路それぞれからの信号を、論理素子回路に隣接しない別の論理素子回路に供給することを可能にする、追加的なプログラマブル相互接続回路をさらに含む、項目１４記載のデバイス。
（項目１６）
追加的なプログラマブル相互接続回路が、少なくとも部分的に、デバイス層の第１サブセット中にはないデバイス層中に提供されている、項目１５記載のデバイス。
（項目１７）
それぞれがＦＰＧＡの単一のＬＥの関数能力の一部を提供可能であり、必要に応じて組み合わせ可能で任意の単一のＬＥによって実行される概ねすべての関数を実行する、複数のＨＬＥを含むＡＳＩＣアーキテクチャを使用して、ＦＰＧＡと略等価なＡＳＩＣを設計する方法であって、
ユーザの論理設計を合成する工程と、
合成された論理設計をＦＰＧＡ設計にマッピングする工程と、
ＦＰＧＡ設計の各ＬＥを、ＡＳＩＣ設計の単一または複数のＨＬＥに再マッピングする工程と
を含む方法。
（項目１８）
マッピングが、ＦＰＧＡ用ネットリストおよび配置情報を生成することを含む、項目１７記載の方法。
（項目１９）
再マッピングが、ＦＰＧＡ用ネットリストおよび配置情報上で実行される、項目１８記載の方法。
（項目２０）
再マッピングが、ＡＳＩＣ用ネットリストおよび配置情報を生成することを含む、項目１７記載の方法。
（項目２１）
再マッピングが、ＡＳＩＣ用ネットリストおよび配置情報を生成することを含む、項目１９記載の方法。
（項目２２）
項目１７記載の方法を使用して作成される、ＡＳＩＣ。
（項目２３）
再マッピングが、単一のＨＬＥによっては実行不可能な任意のＬＥの関数を実行するために、互いに隣接した複数のＨＬＥを使用することを含む、項目１７記載の方法。
（項目２４）
再マッピングが、ＦＰＧＡ  ＬＥの関数を単一または複数のＨＬＥに再マッピングする際に、論理圧縮を採用することを含む、項目１７記載の方法。
（項目２５）
再マッピングが、各ＦＰＧＡ  ＬＥの（１）論理関数および（２）レジスタ関数を、異なるＨＬＥまたはＨＬＥ群のそれぞれにさらに再マッピングすることを含む、項目１７記載の方法。
（項目２６）
それぞれがＦＰＧＡの単一のＬＥの関数能力の一部を提供可能であり、必要に応じて組み合わせ可能で任意の単一のＬＥによって実行される概ねすべての関数を実行する、複数のＨＬＥを含むＡＳＩＣアーキテクチャを使用して、機能的に略等価なＦＰＧＡおよびＡＳＩＣを設計する方法であって
ユーザの論理設計を合成する工程と、
合成された論理設計をＦＰＧＡ設計にマッピングする工程と、
合成された論理設計をＡＳＩＣ設計にマッピングする工程と
を含む方法。
（項目２７）
ＦＰＧＡ設計へのマッピングが、ＦＰＧＡ用ネットリストおよび配置情報を生成することを含む、項目２６記載の方法。
（項目２８）
ＡＳＩＣ設計へのマッピングが、ＡＳＩＣ用ネットリストおよび配置情報を生成することを含む、項目２６記載の方法。
（項目２９）
項目２６記載の方法を使用して作成される、ＡＳＩＣ。
（項目３０）
ＡＳＩＣ設計へのマッピングが、ＦＰＧＡ  ＬＥの関数を実行するためにＨＬＥを使用することを含む、項目２６記載の方法。
（項目３１）
上記使用が、単一のＨＬＥによっては実行不可能な任意のＬＥの関数を実行するために、互いに隣接した複数のＨＬＥを採用することを含む、項目３０記載の方法。
（項目３２）
上記使用が、単一または複数のＨＬＥによるＦＰＧＡ  ＬＥの関数の実行を促進するために、論理圧縮を採用することを含む、項目３０記載の方法。
（項目３３）
上記使用が、ＦＰＧＡ  ＬＥの（１）論理関数および（２）レジスタ関数を実行するために、異なるＨＬＥまたはＨＬＥ群のそれぞれを使用すること、
を含む、項目３０記載の方法。
（項目３４）
それぞれがＦＰＧＡの単一のＬＥの関数能力の一部を提供可能であり、必要に応じて組み合わせ可能で任意の単一のＬＥによって実行される概ねすべての関数を実行する、複数のＨＬＥを含むアーキテクチャを有するＡＳＩＣと等価な、ＦＰＧＡを設計する方法であって、
ユーザの論理設計を合成する工程と、
ＦＰＧＡ  ＬＥの関数を実行するためのＨＬＥの使用に基づいて、合成された論理設計をＡＳＩＣ設計にマッピングする工程と
を含む方法。
（項目３５）
それぞれがＦＰＧＡの単一のＬＥの関数能力の一部を提供可能であり、必要に応じて組み合わせ可能で任意の単一のＬＥによって実行される概ねすべての関数を実行する、複数のＨＬＥを含むアーキテクチャを有するＡＳＩＣと等価な、ＦＰＧＡを設計する方法であって、
ユーザの論理設計を合成する工程と、
ＦＰＧＡ  ＬＥの関数を実行するためのＨＬＥの使用に基づいて、合成された論理設計をＡＳＩＣ設計にマッピングする工程と
ＡＳＩＣ設計をＦＰＧＡ設計に再マッピングする工程と
を含む方法。
（項目３６）
マッピングが、ＡＳＩＣ用ネットリストおよび配置情報を生成することを含む、項目３５記載の方法。
（項目３７）
再マッピングが、ＦＰＧＡ用ネットリストおよび配置情報に基づいて実行される、項目３６記載の方法。
（項目３８）
再マッピングが、ＦＰＧＡ用ネットリストおよび配置情報を生成することを含む、項目３５記載の方法。
（項目３９）
再マッピングが、ＦＰＧＡ用ネットリストおよび配置情報を生成することを含む、項目３７記載の方法。
（項目４０）
項目３５記載の方法を用いて形成される、ＦＰＧＡ。
（項目４１）
マッピングが、単一のＨＬＥによっては実行不可能な任意のＬＥの関数を実行するために、互いに隣接した複数のＨＬＥを使用することを含む、項目３５記載の方法。
（項目４２）
マッピングが、単一のＨＬＥによっては実行不可能な任意のＬＥの関数を実行するために、どのＨＬＥが同時に使用中であるかを記録することをさらに含む、項目４１記載の方法。
（項目４３）
再マッピングが、それぞれのＬＥに対して再マッピングするＨＬＥ群を特定するために、上記記録することを使用することを含む、項目４２記載の方法。
（項目４４）
マッピングが、少なくとも数個のＦＰＧＡ  ＬＥの関数を実行するためにＨＬＥを使用する際に、論理圧縮を採用することを含む、項目３５記載の方法。
（項目４５）
マッピングが、各ＦＰＧＡ  ＬＥの任意の（１）論理関数および（２）レジスタ関数を、異なるＨＬＥまたはＨＬＥ群のそれぞれに、さらにマッピングすることを含む、項目３５記載の方法。
（項目４６）
完全に利用されていれば、ＦＰＧＡの完全に利用されたＬＥの能力のうち一部のみを実行する能力をそれぞれが有し、各ＬＥの関数がＨＬＥまたはＨＬＥ群の一つにそれぞれマッピングされる複数のＡＳＩＣを含む、プログラムされたＦＰＧＡと機能的に等価なＡＳＩＣ。
（項目４７）
組み合わせ論理能力が、１入力ルックアップ・テーブル回路、２個の２入力ＮＡＮＤゲートもしくは該ＮＡＮＤゲートの論理等価物を実質的に含む論理素子回路。
（項目４８）
ルックアップ・テーブル回路が、２個の選択可能な入力および選択制御入力を有するマルチプレクサ回路を含む、項目４７記載の回路。
（項目４９）
ルックアップ・テーブル回路およびＮＡＮＤゲートもしくはその論理等価物へ、から、および間で、信号を選択的に伝達するプログラマブル相互接続回路を追加的に含む、項目４７記載の回路。
（項目５０）
出力バッファ回路を追加的に含む、項目４７記載の回路。
（項目５１）
ルックアップ・テーブル、またはＮＡＮＤゲートもしくは論理等価物のうち少なくとも一つの出力信号を、出力バッファ回路へと選択的に供給するプログラマブル相互接続回路を追加的に含む、項目５０記載の回路。
（項目５２）
プログラマブル相互接続回路が少なくとも部分的にマスク・プログラマブルである、項目４９記載の回路。
（項目５３）
プログラマブル相互接続回路が少なくとも部分的にバイア・プログラマブルである項目４７記載の回路。
（項目５４）
それぞれが項目４７記載の、複数の論理素子回路を含むＡＳＩＣ。
（項目５５）
機能的に等価なＦＰＧＡの各論理素子の概ねすべての関数が、論理素子回路もしくは論理素子回路群のうち一つによってそれぞれ実行される、項目５４記載のＡＳＩＣ。
（項目５６）
ＦＰＧＡのＬＥに合成された論理を実装可能なＨＬＥを含む、ストラクチャードＡＳＩＣ。
（項目５７）
論理がＬＥにマッピングされ、ＨＬＥに再マッピングされる、項目５６記載のストラクチャードＡＳＩＣ。
（項目５８）
各ＬＥの全関数がＨＬＥ単独にまたはＨＬＥ群によって実行される、項目５６記載のストラクチャードＡＳＩＣ。
【図面の簡単な説明】
【０００８】
【図１】既知の例示的なＦＰＧＡ  ＬＥの簡略化した概略ブロック図である。
【図２】既知の例示的なＡＳＩＣと等価なＦＰＧＡ  ＬＥの簡略化した概略ブロック図である。
【図３】本発明による例示的なＡＳＩＣ  ＨＬＥの簡略化した概略ブロック図である。
【図４】本発明による、ＡＳＩＣ用の例示的なプログラマブル相互接続構造の簡略化した斜視図である。
【図５】本発明による、ＡＳＩＣ用の例示的なプログラマブル相互接続構造の簡略化した斜視図である。
【図６】本発明による、ＡＳＩＣ用の例示的なプログラマブル相互接続構造の簡略化した正面図である。
【図７】本発明による、ＡＳＩＣ用の例示的なプログラマブル相互接続構造の簡略化した正面図である。
【図８】本発明による、ＡＳＩＣ用の例示的なプログラマブル相互接続構造の簡略化した斜視図である。
【図９】本発明による、ＡＳＩＣ用の例示的なプログラマブル相互接続構造の簡略化した斜視図である。
【図１０】本発明による、例示的な、プログラムされたＡＳＩＣ  ＨＬＥの簡略化した概略ブロック図である。
【図１１】本発明による、さらに別の例示的な、プログラムされたＡＳＩＣ  ＨＬＥの簡略化した概略ブロック図である。
【図１２】本発明による、例示的な、プログラムされたＡＳＩＣ  ＨＬＥ対の簡略化した概略ブロック図である。
【図１３】本発明による、さらに別の例示的な、プログラムされたＡＳＩＣ  ＨＬＥ対の簡略化した概略ブロック図である。
【図１４】本発明による、例示的な追加のプログラマブル相互接続回路を備えた、数個の例示的なＡＳＩＣ  ＨＬＥ対の簡略化した概略ブロック図である。
【図１５】本発明による、ＡＳＩＣ上のＨＬＥの例示的な配置を示す簡略化したブロック図である。
【図１６】本発明による、ＡＳＩＣ上のＨＬＥの使用の例を示す簡略化したブロック図である。
【図１７】本発明による、ＡＳＩＣ上の追加のプログラマブル相互接続回路の例を示す簡略化した概略ブロック図である。
【図１８】本発明による、例示的な方法のフローチャートである。
【図１９】本発明による、例示的な方法のさらに別のフローチャートである。
【図２０】本発明による、例示的な方法のさらにさらに別のフローチャートである。
【図２１】本発明による、ＨＬＥの所定の可能なコンポーネントの例示的な使用を示す概略ブロック図である。
【図２２】本発明による、ＨＬＥの所定の可能なコンポーネントの例示的な使用を示す概略ブロック図である。
【図２３】本発明による、ＨＬＥの所定の可能なコンポーネントの例示的な使用を示す概略ブロック図である。
【発明を実施するための形態】
【０００９】
本発明のさらに別の特徴、特性、種々の利点については、添付図面および以下の詳細な説明によってより明らかになる。
【００１０】
図１に例示的な既知のＦＰＧＡ  ＬＥ１０を示す。ＬＥ１０は、４−ＬＵＴ部１２およびレジスタ部１４を備える。４−ＬＵＴ部は１６個のプログラマブル・メモリ（例：ＲＡＭ）セル２０−０から２０−１５を備える。各対において、ＲＡＭセル２０の出力は、８個の２入力マルチプレクサ（マックス）２２−０から２２−７の入力へと供給される。４−ＬＵＴの入力Ａは、各マックス２２が（ＲＡＭセル２０から）どの４−ＬＵＴの入力を出力として選択するかを制御する。例えば、入力Ａが論理１である場合、各マックス２２はその上側入力を出力として選択する。入力Ａが論理０である場合、各マックス２２はその下側入力を出力として選択する。各対において、マックス２２の出力は、４個の２入力マックス２４へと供給される。４−ＬＵＴの入力Ｂは、各マックス２４がどの入力を出力として選択するかを制御する。再び、Ｂが論理１の場合、マックス２４は上側入力を出力に選択する。Ｂが論理０の場合、マックス２４は下側入力を出力に選択する。各対において、マックス２４の出力は、２個の２入力マックス２６へと供給される。４−ＬＵＴの入力Ｃは、各マックス２６がどの入力を出力として選択するかを制御する。この論理は、マックス２２、２４の論理と類似している。マックス２６の出力は、２入力マックス２８へと供給される。４−ＬＵＴの入力Ｄは、（入力Ａ−Ｃと同じ論理にしたがって）マックス２８がどの入力を出力するかを制御する。
【００１１】
マックス３０の出力信号は、ドライバ回路３０に供給される。ドライバ３０の出力は、ＬＥ１０の単一の出力（組み合わせ出力３２）である。ドライバ３０の出力もまた、マックス４０の単一の入力端末に供給される。マックス４０に対する他の入力は、ＬＥ１０に対する他の入力となる。マックス４０は、（例えば、プログラマブルＲＡＭセル４２によって、）レジスタ４４のデータ入力端末に適用するために、マックス４０の入力のいずれかを選択するよう制御可能である。この配置によって、ＬＵＴ１２の出力を登録するためにレジスタ４４が必要ない場合は、レジスタ４４を、別の信号を登録するために使用することができる。レジスタ４４の出力は、ＬＥ１０の登録済出力４６である。
【００１２】
図２は、（出力の登録がない）２入力ＡＮＤゲートとして構成された、想定可能な既知の、ＬＥ１０のＡＳＩＣ等価物を示している。図２に示す素子は、図１に示す素子と類似しており、図１の参照番号から１００増加した参照番号を有する。こうして、ＡＳＩＣ  ＬＥ１１０中では、入力ＣおよびＤはＡＮＤ処理され、未登録のＬＥ出力１３２を生成する。マックス１２２−０、１２２−１の入力は、論理１に接続されている。他のマックス１２２の入力は、論理０に接続されている。この構成は、入力ＡおよびＢを「ドントケア」入力とする効果を有する。入力ＣおよびＤだけが出力に影響を及ぼす可能性があり、出力がＣおよびＤのＡＮＤとなるような影響を及ぼす。このＬＥ１１０を使用することは、Ｘが配置された場所にある素子が事実上未使用であることを意味している。特に、素子１２２、１２４、１２６−１、１４０、１４４はすべて事実上未使用である。したがって、このような利用率の低いＦＰＧＡ  ＬＥ１０の等価物を作成するために提供されるＡＳＩＣ回路に含まれるこれら全素子にとって、相当な浪費量である。論理圧縮（例えば、２００４年６月４日出願Ｆｏｏ米国特許出願第 号（代理人整理番号１７４／３０９（Ａ８７７）を参照）を使用して、ＡＳＩＣ  ＬＥ１１０に提供しなければならない回路の量を低減することができる。例えば、第１のマキシングレベル（１２２）は、入力Ａおよびその補数を選択的に使用することによって、次のマキシングレベル（１２４）への入力として除去することが可能である。それにもかかわらず、十分に利用されていないＦＰＧＡ  ＬＥ１０が実装中である場合はつねに、このような圧縮されたＡＳＩＣ  ＬＥ１１０であっても相当量の回路が浪費される。
【００１３】
図３は、浪費量の少ないＦＰＧＡ  ＬＥのＡＳＩＣ等価物を提供する際の、本発明にしたがって構成された、単独または複数の使用のための、いわゆるハイブリッド論理素子（ＨＬＥ）２００の例示的な実施形態を示す。図３に示す特定のＨＬＥ構造についてこの先ある程度詳細に記述する。しかし本明細書では基本的な要点として、本実施形態が一つの例にすぎないこと、およびこの構成には、本発明の範囲および精神から逸脱することなく多くの変形が可能であることが強調される。
【００１４】
ＨＬＥ２００は、２入力マルチプレクサ（マックス）２１０、２個の２入力ＮＡＮＤゲート２２０ａ、２２０ｂと、２個の反転バッファまたはドライバ２３０ａ、２３０ｂと、後続の数文中により詳細に説明する相互接続リソースとを備える。図３に示す相互接続リソースは、マックス２１０の上流にある複数の垂直導体２４０と、マックス２１０とＮＡＮＤゲート２２０との間の複数の垂直導体２５０と、ＮＡＮＤゲート２２０とドライバ２３０との間にある垂直導体２６０（１個または複数）と、ドライバ２３０の下流にある複数の垂直導体２７０とを含む。図３に示す相互接続リソースはまた、数個の水平導体（例：導体３１０、３２０、３３０、３４０）を備える。導体２４０、２５０、２６０、２７０、３１０、３２０、３３０、３４０は、比較的汎用目的の導体であり、このことはすなわち、数個の異なるソースのうち任意のソースと数個の異なる送信先のうち任意の送信先との間での任意の数個の異なるリンクを作成するために使用することができる。これらの比較的汎用目的の導体に加え、ＨＬＥ２００は数個のより特定目的の導体を備える。例えば、導体３５０はマックス２１０に制御入力を供給することのみに使用される。（もっとも、以下詳述するように、該制御入力信号に対して数個のソースのうち任意のソースが可能であり、導体３５０は所望に応じて他の用途にも使用可能である。）さらに別の例として、導体３６０ａ、３６０ｂはマックス２１０への２個の選択可能な入力を供給することのみに、（この場合も、数個のソースのうち任意のソースから、また所望に応じて、想定可能な追加的な用途とともに）使用される。また別の例として、導体３７０はマックス２１０の出力を伝達することのみに使用されるが、出力は数箇所の宛先のうち任意の宛先に送ることができる。ここまでは、一部の導体は比較的汎用目的の導体として記載されてきたが、他の導体はより専用目的の導体として記載されており、これら説明的概念は便宜目的でのみ使用される。これら説明的概念は限定を目的としていない。またこの２種類の間に明確な区別はなく、両方の種類が存在する必要性もない。
【００１５】
図３において導体の相互接続における非中空の小さな点は、交差する導体間の接続が所望により形成されたり、形成されなかったりすることができる位置を示している。したがって、上記接続はプログラマブルである。好適な実施形態において、上記接続は、バイア・ホールを使用してマスク・プログラマブルである。該バイア・ホールは、交差する導体を含有する層同士の間に存在する単一または複数の層に含まれている場合も、含まれていない場合もある。（本明細書では、全般にバイア・プログラミングについて言及しているが、これは例にすぎず、所望に応じて代わりに、他の数個のプログラミング技術のうち任意の技術を使用可能である。使用可能なプログラミング技術の他の例は、本明細書中に後述する。）図４は、ＨＬＥ２００を備える集積回路デバイス上の異なる金属層中にそれぞれ存在する、交差する導体２４０および３２０を示す。図４では、これら導体はバイア４２０によって、２枚の金属層間に存在する絶縁層を介して互いに電気的に接続されている。再び図５に、絶縁層を介するバイアのない同一の構造が示されている。したがって図５では、導体２４０および３２０は互いに接続されない。（導体２４０または３２０が高い側の金属層または低い側の金属層のいずれに存在するかいなかは、任意であり、設計上の選択の問題である。）
【００１６】
図３中のＸ４３０は、所望に応じ、導体部の互いのプログラマブルな、または非接続が可能である。上述の非中空の小さな点４１０に対する技術と同一の技術選択が、接続４３０に適している。例えば、図６は、マスク・プログラマブル・バイア４４０によってブリッジ導体４５０へと接続される代表的な導体３２０の２つの部分を示している。したがって、導体３２０の２つの部分は、バイア４４０およびブリッジ導体４５０を介して互いに電気的に接続されている。図７は同一の構造を示しているが、バイア４４０は存在しない。したがって、導体部は互いに接続されていない。むしろ、導体部は互いに電気的に絶縁されている。
【００１７】
図３における大きく開口した円または楕円４６０は、この円または楕円を有する導体が、ＨＬＥ２００を備えるデバイス上の高レベルの相互接続リソースと呼ばれるもの（図３には示されていない）にプログラマブルに接続可能な位置を示している。このより高いレベルの相互接続リソースは、互いに隣接せず、比較的近傍にもない成分（例：ＨＬＥ、デバイス入／出力（Ｉ／Ｏ）ポート等）間の信号を伝達するなどの目的のために使用してもよい。「より高いレベル」という句は、必ずしも物理的に高いレベルであることを意味しているのではなく、単に階層的により高いレベルにあることを意味する。プログラマブル接続４６０は、上述の方法のうち任意の方法（例：プログラマブル接続４１０用の方法）を使用して行うことができる。例えば、図８はマスク・プログラマブル・バイア４７０によって、より高いレベルの導体５１０へと接続される代表的な導体３６０を示す。図９もまた、同一の構造位置４６０を示すが、導体３６０とより高いレベルの導体５２０との間の接続はない。
【００１８】
図３において、異なる軸に沿って延出するよう示されている導体は、導体のうち一つが別の導体によって途切れている場合（あるいは、両導体が互いに他方の導体によって途切れている場合）、常に互いに接続している。交差部において小さい点なしに互いに交差している導体は、好適には、交差部では接続可能でない。
【００１９】
特定の外部接続を持つ所定の導体が、図３に示されている。このように最上部の導体３１０は、常にＶＣＣ（例：論理１）に接続するよう示されている。図３中の、最上部の次の導体３１０は、常にＶＳＳ（例：論理０）に接続されるよう示されている。導体３１２、３１４、３１６は、記載されたＨＬＥの上方、左方および下方に隣接する他のＨＬＥからの入力接続として示されている。導体３３２は、記載されたＨＬＥの上方にあるＨＬＥに入力３１６を供給する。導体２７２は、記載されたＨＬＥの右方にあるＨＬＥに、入力３１４を供給する。導体３４２は、記載されたＨＬＥの下方にあるＨＬＥに、入力３１２を供給する。隣接するか近傍にあるＨＬＥ間のいわゆる「スニーク」接続は、デバイスの相互接続リソースの常設の固定部分となりうる。プログラマブル接続４１０がスニーク接続の一端または両端においてプログラムされた方法の結果、スニーク接続が実際に使用されるかどうか、およびどのように「スニーク」接続が使用されるかが、プログラマブルである。
【００２０】
導体２４０、２５０等の記載された端部におけるＸ４３０は、導体が、記載されたＨＬＥに隣接する他のＨＬＥ中に存在する類似の導体にプログラマブルに接続可能な位置を示している。
【００２１】
単一または比較的少数であるが適切な数の隣接するか近傍にあるＨＬＥ２００は、図１におけるＦＰＧＡ  ＬＥ１０等によって実行可能な、任意の単数または複数の関数を実行するために使用可能である。それぞれの場合において、ＬＥの（単数または複数の）関数を実行するために必要なＨＬＥと同数のＨＬＥのみが、ＦＰＧＡ  ＬＥのＡＳＩＣ等価物を生成するために採用されている。
【００２２】
図１０は、Ａ  ＸＯＲ  Ｂである出力Ｙを供給するために使用されているＨＬＥ２００ａをある程度簡略化した形態（あるいは、少なくともＨＬＥ２００（図３）のより簡略化した表示形式）を示す。この例において実際使用されているＨＬＥ２００ａの相互接続リソースは、非常に太い線を用いて描かれている。存在するがこの例では使用されていない他の相互接続リソースは、細い線で表示されている。入力Ａは、マックス２１０の上側入力端末へと供給される。例えば、入力Ａは、図３中の対応するマックス入力ＩＮ０上に表示されるプログラマブル接続４６０（図３）を経由して、ＨＬＥ２００ａに入力されてもよい。このように、入力Ａは、デバイスのより高いレベルの相互接続回路中の導体（図８の５１０等）から入力可能である。図３では、入力ＡはＮＡＮＤゲート２２０ｂの両入力端末へと供給される。このことによって、図１０に示すように、ＮＡＮＤゲート２２０ｂはインバータとして作動する。再び、これら入力Ａはプログラマブル接続４６０を介して、図３中のＮＡＮＤゲート２２０ｂの左方に入力されてもよい。インバータ２２０ｂ（図１０）の出力は、（例えば、導体３２２、垂直導体２４０のうち一つへのプログラマブル接続４１０（図３）、この垂直導体の一部、導体３６０ｂへの別のプログラマブル接続４１０、およびこの導体３６０ｂの一部を介して、）マックス２１０の下側入力へとフィードバックされる。
【００２３】
入力Ｂは、導体３５０を介してマックス２１０の制御入力へと供給される。例えば、図３中の導体上に示すプログラマブル接続４６０を介して、入力Ｂを導体３５０に供給してもよい。このように入力Ｂは、デバイスのより高いレベルの相互接続回路からＨＬＥ２００ａへと入力されてもよい。入力Ｂが論理０である場合、マックス２１０は２個の選択可能な入力リード線のうち上側（すなわち導体３６０ａ）の上にある信号を出力する。入力Ｂが論理１である場合、マックス２１０は２個の選択可能な入力リード線のうち下側（すなわち導体３６０ｂ）にある信号を出力する。したがって、マックス２１０の出力信号はＡ  ＸＯＲ  Ｂである。
【００２４】
マックス２１０の出力信号はＮＡＮＤゲート２２０ａ（図３）の両方の入力へと供給され、したがってＮＡＮＤゲート２２０ａはインバータとして作動する。ＮＡＮＤゲート２２０ａの出力は反転ドライバ２３０ａへと供給され、反転ドライバ２３０ａは再び信号を反転させる。したがって、このように使用される素子２２０ａ、２３０ａの複合効果は、マックス２１０の出力信号、すなわちＹ（＝Ａ  ＸＯＲ  Ｂ）用の非反転出力ドライバの供給である。
【００２５】
ＮＡＮＤゲート２２０ａの２個の入力端末へのマックス２１０の出力信号のルーティングは、導体３７０の一部、この導体から垂直導体２５０のうち一つへのプログラマブル接続４１０（図３）、この垂直導体２５０の一部、およびこの導体からＮＡＮＤゲート２２０ａへの２個の入力へのさらに２個のプログラマブル接続４１０を介して、実行可能である。ドライバ２２０ａ／２３０ｂのＹ出力は、インバータ２３０ａの出力リード線上にあるプログラマブル接続４６０を介して、より高レベルの相互接続回路へと接続可能である。
【００２６】
こうして、図１０はリソースの浪費が比較的少ない、単一のＨＬＥ中で実行可能な論理関数の一例を示す。ＦＰＧＡ  ＬＥと同等のＡＳＩＣ  ＬＥ中に存在するこの関数の実行は図１および２に示すものと類似しているが、この実行を行うと（この場合、図２に関する議論の終了時までに論じた種類の論理圧縮を行うものの）未使用のおよびこのために無駄となったＡＳＩＣ  ＬＥリソースの相当の部分が残る。本明細書に示すＨＬＥ構造は、はるかに無駄の少ない実装を提供する。
【００２７】
図１１は、単一のＨＬＥ２００ｂ（この場合も、図３中のＨＬＥ２００様のものまたは少なくとも概念的にこれに類似したもの）において実装される論理関数のさらに別の例を示す。図１１において実装された関数はＹ＝（Ａ  ＡＮＤ  Ｃ’）ＯＲ（Ｂ  ＡＮＤ  Ｃ）である。図１１で使用される導体および素子は、太線で示されている。図１１で使用されない導体および素子は、細線で示されている。信号がＨＬＥ２００ｂへ、ＨＬＥ２００ｂへを介して、およびＨＬＥ２００ｂへからルーティングされる態様は、上述の議論から明らかであり、したがってさらなる詳細な記載は必要ない。
【００２８】
図１２は、２個の隣接した複数のＨＬＥ２００ｃ、２００ｂに実装された４入力組み合わせ論理関数の例を示す。各ＨＬＥは、図３に中のＨＬＥ２００と類似していても、あるいは、少なくとも概念的に類似してもよい。実装された関数はＦ＝（（Ａ（ＢＣ＋Ｂ’Ｄ）＋Ａ’）’である。この関数を実装するために使用された素子および導体は、図１２中で太線を使用して示される。使用されない素子および導体は、細線を用いて示される。図１２は、単一のＨＬＥから隣接するか近傍にあるさらに別のＨＬＥへと信号を伝達するためのスニーク接続の使用を例示している。この場合、ＨＬＥ２００ｃ中にあるマックス２１０の出力信号は、図３中の２７２／３１４等のスニーク接続を介してＨＬＥ２００ｄへと伝えられる。（マックス２１０の出力が、スニーク右出力２７２へと、さらにスニーク右出力２７２から右方のＨＬＥのスニーク入力３１４へと、さらにこの入力から右方のＨＬＥ中のマックス２１０の入力へとどのようにルーティングされるかは、図３および本明細書中の先の言及より明らかである。）図１２は、またＨＬＥ２００ｄ中の素子２１０、２２０ａへのＶＣＣ入力（論理１）の使用を示している。このルーティングは、図３に示す導体３１０のうち一つおよびこの導体から素子２１０、２２０ａの所望の入力へのプログラマブル・ルーティング（例：プログラマブル接続４１０）を使用して実行可能である。
【００２９】
図１２は、水平方向に隣接した複数のＨＬＥ間での（少なくとも明示的には）図３に示していないいくつかの追加的な相互接続を示す。この接続は、各ＨＬＥとその右方のＨＬＥとの間のより広範な接続である。図３は、このようなルーティングにはスニーク接続のみが利用可能であることを示唆している。しかし、図１２は、３つの信号（マックス２１０の出力、ＮＡＮＤゲート２２０ａ、２２０ｂの出力）が、ＨＬＥルーティング・リソースの階層レベルにおいて、各ＨＬＥからその右方のＨＬＥへと流入可能であることを示している。この追加的な比較的直接的なＨＬＥ間ルーティングは多くの異なる方法のうち単一の例にすぎず、本発明にしたがって複数のＨＬＥを構築することが可能である。もちろん、このような追加的な直接接続がＨＬＥレベルで提供されていない場合、より高いレベルの相互接続回路を使用して類似の接続を行うことが可能である。しかし現在では、比較的直接的なＨＬＥ間の（スニーク接続を含む）十分なルーティング能力を提供することが、ＦＰＧＡ  ＬＥの任意の（単数または複数の）関数を実行するＨＬＥ群によって必要とされるＨＬＥ間接続の少なくとも相当量の部分（好適には少なくとも大部分の）を可能にするためには好ましいと考えられている。このため、より長距離の相互接続のためにより高いレベルのルーティングを留保しておくことができる。
【００３０】
図１３は、フリップフロップまたはレジスタ（典型的なＥＰＧＡ  ＬＥの能力の一つ）を供給する２個の隣接するＨＬＥ２００ｅ、２００ｆの使用の例を示す。ここでも、ＨＬＥ２００ｅ、２００ｆはそれぞれ図３に示すＨＬＥ２００と類似している（か、少なくとも概念的に類似している）。フリップフロップを供給するために使用される素子および導体は太線で表示される。使用されない構造は図１３では細線で示される。図１３中のすべての接続、あるいはどのようにこれら接続が達成されるかについての情報は、図および先の記載より明らかであるため記載する必要はない。登録される信号Ｄは、デバイスのより高いレベルの相互接続回路から、あるいはより低いレベルでのさらに別の隣接するか近傍にあるＨＬＥから、プログラマブル接続４６０（図３）を介して、ＨＬＥ２００ｅへと入力されると言えるであろう。フリップフロップを測定するクロック信号ＣＬＫについても同じことがあてはまる。（この信号は、ＨＬＥ２００ｅ、２００ｆの両方によって必要とされる。）あるいは、図３中のＶＣＣおよびＶＳＳに対して示すような態様で、ＣＬＫが各ＨＬＥに入力されることもある。図１３は、上下に隣接するＨＬＥ中の同様の導体から、導体２５０のプログラマブル接続４３０を介してＨＬＥ２００ｅ、ＨＬＥ２００ｆのそれぞれに入力される。上記信号は最終的には、図３においてＶＣＣおよびＶＳＳ等の信号が入力されるように、あるいはデバイスのより高いレベルの相互接続回路へのプログラマブル接続（図３）を経由して、ＨＬＥアレイに入力されてもよい。フリップフロップの登録済の出力Ｑ、Ｑ’は、よりプログラマブルな接続４６０を介してデバイスのより高いレベルの相互接続に入力することができる。あるいは、この出力は、より低いレベルの接続を介して、隣接するか近傍にあるＨＬＥに入力されてもよい。
【００３１】
図１４は、数個の隣接するＨＬＥ２００ｇ、２００ｈ、２００ｉ、２００ｊを、所定の（しかし必ずしもすべてでない）比較的直接的なＨＬＥ間の接続リソースを強調して示している。図１４に示す実施形態では、ＨＬＥ間相互接続リソースは、ＨＬＥ２００ｈのＮＡＮＤゲート２２０ａからその右方のＨＬＥ２００ｊへの（太い破線で示す）直接接続２２２を含む。図１４に示すさらに別の直接接続は、ＨＬＥ２００ｈ中のマックス２１０の出力からその右方のＨＬＥ２００ｊへの（太い破線で示す）接続２１２である。図示されるさらにさらに別の直接接続は、（太い実践で示す）スニーク接続ネットワーク２１４であり、この接続はＨＬＥ２００ｈのスニーク出力から、ＨＬＥ２００ｇ、２００ｉ、さらにはＨＬＥ２００ｊの右方にある（図示しない）ＨＬＥへと延出する。本実施形態では、スニーク出力は導体２１２、２２２のいずれかからプログラマブルに選択可能として示されているが、該信号には他のソースも同等に利用可能である。図１４で強調表示される（スニーク接続を含む）全ＨＬＥ間接続リソースは、ＨＬＥ内接続リソースに使用されるものと同じレベルの金属内に実装可能であるため、より長距離の相互接続に典型的に使用されるより高いレベルの相互接続回路へのリソースは必要としない。
【００３２】
図１５は、集積回路デバイス５００上のＨＬＥ２００の例示的な配置を示す。図１５中のＨＬＥ２００は図３または本明細書中の他の図に示すように構成されるか、あるいは、本明細書の任意の箇所で言及される修正を含んでいてもよい。図１５に示す例示的な配置において、ＨＬＥ２００は、交差する行と列とからなる２次元アレイ中にあるデバイス５００上に配置されている。デバイス５００は、（図示しない）Ｉ／Ｏブロック、メモリブロック等の他の回路を含んでいてもよい。したがって、本発明によるＡＳＩＣは基本的な回路機構または構成（例：上述の図１５に示すようなＨＬＥの２次元アレイ）を持っているという意味において好適には「ストラクチャードＡＳＩＣ」であり、このＡＳＩＣに対してカスタマイズ可能な修正および／または追加が行われる（例：ＨＬＥ内および／または複数のＨＬＥ間の相互接続）。デバイス５００がＦＰＧＡのＡＳＩＣ等価物として使用される場合、デバイス５００には一般にＨＬＥ２００の全数が供給される。このＨＬＥ２００の全数は、ＦＰＧＡ上のＬＥの数と、単一のＦＰＧＡ  ＬＥの全能力を再生成するために必要なＨＬＥ２００の最大数との積より少ない。この理由は、各ＦＰＧＡ  ＬＥの（単数または複数の）関数を実行するために必要なだけの数のＨＬＥが使用され、またこの目的のために、多くの場合ＨＬＥの最大数よりも少ないＨＬＥ数が必要である。この点に関する所定の側面は、説明を進めるにつれより明らかとなるであろう。
【００３３】
図１６は、デバイス５００上のＨＬＥ２００が、等価ＦＰＧＡ中のＬＥの（単数と複数の）関数を実行するために、単独またはグループで一緒にどのように使用されるかを示している。図１６では、ともに使用される隣接するか近傍にあるＨＬＥ２００は同様な態様で陰影が付けられているが、他の隣接するか近傍にあるＨＬＥに使用される陰影とは異なっている。参照をしやすくするために、図１６中のＨＬＥの列は１、２、３等と番号付けされ、ＨＬＥの行はＡ、Ｂ、Ｃ等と符号付けされている。これらの列および行を使用して、図１６は以下のようにともに使用されるＨＬＥを示す。
グループ１：Ａ１／Ａ２／Ｂ１
グループ２：Ａ３／Ａ４
グループ３：Ｂ２／Ｃ１／Ｃ２／Ｃ３
グループ４：Ｂ３／Ｂ４
グループ５：Ｄ１／Ｅ１／Ｅ２／Ｆ１
グループ６：Ｄ２／Ｄ３／Ｄ４
グループ７：Ｆ２
【００３４】
上記のグループ分けは、以下のような等価ＦＰＧＡ中におけるＬＥの関数を実行することもある。
グループ１：ＦＰＧＡ  ＬＥ  Ａ１の組み合わせ論理
グループ２：ＦＰＧＡ  ＬＥ  Ａ１のレジスタ関数
グループ３：ＦＰＧＡ  ＬＥ  Ｂ１の組み合わせ論理
グループ４：ＦＰＧＡ  ＬＥ  Ｂ１のレジスタ関数
グループ５：ＦＰＧＡ  ＬＥ  Ｃ１の組み合わせ論理
グループ６：ＦＰＧＡ  ＬＥ  Ｄ１の組み合わせ論理
グループ７：ＦＰＧＡ  ＬＥ  Ｅ１の組み合わせ論理
直前のリストでは、（図１６に示すような）行の文字および列の数字は、二次元ＦＰＧＡ  ＬＥアレイにおいてＬＥを参照付けをしやすくするよう使用される。
【００３５】
図１６に示すＨＬＥ群化の例は単に例示的なものにすぎず、多くの他のグループ化も同様に可能であることが理解される。任意の特定の場合（ＡＳＩＣ）に採用された実際のグループ化は、ＡＳＩＣデバイス５００中で同様に実行する必要があるＦＰＧＡ  ＬＥ関数によって指示されている。しかし、この先行する２段落中の例示的な一覧は以下のとおりの好適例を提示している。時には、ＦＰＧＡ  ＬＥの関数がＡＳＩＣ  ＨＬＥの同一の一般配置においても実装されることが望ましい。例えば、ＦＰＧＡの左上隅近傍のＬＥによって実行される単一または複数の関数は、ＡＳＩＣの対応する位置（例：左上隅近傍）において必要とされる数のＨＬＥによって好適に実行される。
【００３６】
また図１６と関連して、ＡＳＩＣ５００中のＨＬＥ２００のうちいくつかを使用しない場合もあることを言及すべきである。
【００３７】
完全性のため、図１７は、ＡＳＩＣ５００上の例示的な高いレベルの相互接続回路５１０、５２０、５３０、５４０、５５０を示している。例えば、回路５２０は（ＡＳＩＣ用にカスタマイズされた場合）、ＡＳＩＣ５００の左上隅近傍のＨＬＥ２００のＩ／Ｏポート４６０から、ＡＳＩＣの中央下部近傍のさらに別のＨＬＥ２００のＩ／Ｏポート４６０（例：入力）への接続を形成するために提供することができる。さらに別の例では、回路５５０は（ＡＳＩＣ用にカスタマイズされた場合）、ＡＳＩＣ５００の左下隅近傍のＨＬＥ２００のＩ／Ｏポート４６０（例：出力）から、ＡＳＩＣの出力ポート（図示せず）への接続を形成するために提供することができる。任意の所望の配置のＨＬＥ２００への、２００からの、および／またはＨＬＥ２００間の非ブロッキングの、より高いレベルのルーティングを提供するために、カスタマイズ可能な金属の２層（および介在するカスタム化可能なバイア）を使用することが必要となる場合もある。
【００３８】
ＡＳＩＣ設計において望ましいように、本発明によるデバイス中のカスタム化（プログラミング）に必要な層の数は、好適には比較的少ない。本書中にこれまで記載されたカスタム化を要する例示的な層は、主として、ＨＬＥ等の水平および垂直な相互接続導体間にプログラマブル・バイア４２０／４４０を提供する層である。この層はより高いレベルの相互接続回路へのＩ／Ｏポートにプログラマブル・バイア４７０（図８）を提供し、またより高いレベルの相互接続自体を提供する。（あるいは、すべてのＩ／Ｏポート・バイア４７０が常に存在してもよく、あるいは必要であれば（使用される場合）、より高いレベルの相互接続回路に接続され、必要でなければ（使用されない場合）この回路によってバイパスされてもよい。）
【００３９】
本発明の重要な利点は、任意のＦＰＧＡ  ＬＥの関数が、（単一または複数の）ＡＳＩＣ  ＨＬＥへと簡単にマッピングできる（およびその逆も可能な）ことである。このため、ユーザによってプログラムまたは構成されたＦＰＧＡのＨＬＥベースのＡＳＩＣ等価物（またはその逆）を、いかなるレベルでもユーザの論理を再合成することなしに提供可能である（先に論じた簡単な再マッピングは別として）。このことは、大部分のストラクチャードＡＳＩＣのメーカーによってＦＰＧＡ等価物として提供されているものとは有利に対照的である。典型的には、このようなメーカーは、論理構造を構成するために、複雑なマルチゲートまたはゲートアレイ設計を使用する。これらの論理構造のビルディング・ブロックは、ＦＰＧＡとは類似しない傾向にあるが、プロトタイピングのためにＦＰＧＡを使用する場合再合成が必要である。このように柔軟性に欠けるため、ＦＰＧＡ中でプロトタイプされた設計が、ストラクチャードＡＳＩＣ中で構成される設計と機能的に等価であることを確認するための検証活動が追加される。このようなストラクチャードＡＳＩＣと等価なプログラムされたＦＰＧＡを生成することが望まれる場合、論理の再合成が必要とされる。本発明は、構成されたＦＰＧＡとＨＬＥベースＡＳＩＣとの間でいずれかの方向に移動する際にこのような再合成を避けるものである。さらにＨＬＥは、ＦＰＧＡ  ＬＥと構造的に類似するＡＳＩＣ比べて、スペースを節約する。（その理由は、各ＦＰＧＡ  ＬＥに対して、プログラムされた対応するＦＰＧＡ  ＬＥの（単数または複数の）関数を実行するために必要な数と同数のＨＬＥだけが使用されるためである。）
【００４０】
図１８は、等価なＬＥベースＦＰＧＡおよびＨＬＥベースＡＳＩＣの設計を生成するために使用可能な例示的な一連のフロー素子（すなわち、ステップおよび／または結果）を示している。図１８は、ＦＰＧＡ設計を最初に生成し、次にこのＦＰＧＡ設計から略等価なＡＳＩＣ設計を生成することを例示している。ユーザが特定した所望の論理（およびおそらくは他の関数も）がフロー素子６１０に提示されており、典型的にはＲＴＬ（レジスタ転送レベル）等の標準形式で提示されている。フロー素子６２０においてＲＴＬは、フロー素子６１０中に供給された比較的一般的な仕様から、特定の特徴を有するＦＰＧＡ（例：４−ＬＵＴおよびレジスタ等を含むＬＥ）中の実装に役立つ形態へと再合成される。フロー素子６２０は、カリフォルニア州サンノゼのＡｌｔｅｒａ  Ｃｏｒｐｏｒａｔｉｏｎによって提供されるＱｕａｒｔｕｓ  ＩＩ等の、商業的に利用可能なＦＰＧＡ合成ソフトウェアツールを使用して実行可能である。合成６２０の結果は、フロー素子６３０中の特定のＦＰＧＡ技術へとマッピングされる。
【００４１】
次のフロー素子６４０は、フロー素子６３０中で検討されていた一般的なＦＰＧＡ技術中に存在する特定ＦＰＧＡ向けの、ネットリストおよび配置情報へとマッピングするＦＰＧＡ技術の変換を示している。例えば、フロー素子６４０は、特定の数および配置のリソースを有するＦＰＧＡ中において作動する。フロー素子６４０は、これらのうちどのリソースがユーザの設計が要求する各関数を実行するかを指定する。指定された種類のＦＰＧＡは、フロー素子６４０中で生成される情報からビットストリームを介してプログラマブルである。
【００４２】
情報６４０からプログラムされたＦＰＧＡと略等価のＨＬＥベースＡＳＩＣを生成するために、ステップ６５０が本発明にしたがって情報６４０に基づいて実行される。ステップ６５０は、情報６４０中の関数単位の、関数単位を最低限実行可能な単一のＨＬＥまたは単一のＨＬＥ群の１対１マッピングである。本明細書で先に論じられた例において、関数単位は、所定のＦＰＧＡ  ＬＥ中のＬＵＴによって実行される組み合わせ論理、または所定のＦＰＧＡ  ＬＥにおけるレジスタのいずれかである。関数単位が組み合わせ論理の場合、ステップ６５０は論理を、当該関数を実行可能な最小数のＨＬＥへとマッピングする。このことは好適には、必要な選択レベル数を低減するために、先に述べたような論理圧縮を使用することを含んでいる。他の技術を使用して、ＨＬＥ中の実装のための論理を単純化（最適化）してもよい。関数単位がレジスタの場合、ステップ６５０は前記レジスタを例えば図１３に示す２個のＨＬＥへとマッピングする。ステップ６５０はまた、どのＨＬＥがどの関数単位を実行するか、および各ＨＬＥが割り当てられた関数単位を実装する際の役割を実行するためにどのように構成されるべきかも選択する。例えば、ステップ６５０は好適には、ＦＰＧＡ上の関数を等価なＡＳＩＣに位置決めする際に、ＦＰＧＡ上の関数の一般配置を保持する。（しかし、一般的な配置を保持することは必ずしも実施する必要はなく、等価なＨＬＥは標的ＡＳＩＣの他の部分でも配置される。）またステップ６５０は、より低くより直接的なＨＬＥ間レベルでは供給不可能な、ＨＬＥまたはＨＬＥ群への、ＨＬＥまたはＨＬＥ群からの、および／またはＨＬＥまたはＨＬＥ群間のより高いレベルのルーティングも指定する。ステップ６５０は、起動ＦＰＧＡ中で指定された関数を実装する十分な能力を有するＡＳＩＣの状況において作動すると仮定される。
【００４３】
ステップ６５０の結果６６０は、（情報６４０によって指定される）起動ＦＰＧＡと等価的に機能するＡＳＩＣを構成するために必要なマスクを指定するために使用可能なＡＳＩＣ用ネットリストおよび配置情報である。有利には、情報６６０は、情報６４０から直接取り出される。このＦＰＧＡ−ＡＳＩＣ変換を実行するために、ユーザの起動ロジック仕様（例：ステップ６２０中のような）の再合成は必要ない。したがって、図１８のステップおよび結果にしたがって生成されたＦＰＧＡとＡＳＩＣとの間の等価性に欠陥はないはずである。
【００４４】
図１９は、等価なＬＥベースＡＳＩＣおよびＨＬＥベースＡＳＩＣを生成する、本発明によるさらに別の技術を示す。フロー素子７１０、７２０は、図１８中のフロー素子６１０、６２０とそれぞれ類似している。ある特定のＦＰＧＡ技術に入力された合成７２０の結果は、ＦＰＧＡデバイスないしデバイスクラスへのユーザの論理設計のマッピング７３０と、ＡＳＩＣベースデバイスないしデバイスクラスへのユーザの論理設計のマッピング７５０との両方を生成するために使用される。言い換えれば、単一の共通の論理合成７２０は、マッピング７３０、７５０の両方のベースとして使用される。この使用によって、これら２個のマッピングの論理等価性が保証される。ＦＰＧＡマッピング７３０は、ある特定のＦＰＧＡ設計（すなわち、プログラミングまたは構成）のためのネットリストおよび配置情報７４０を生成するため使用される。ＡＳＩＣマッピング７５０は、ある特定のマスク・プログラマブルなＨＬＥベースＡＳＩＣのプログラマブル・マスクの仕様７６０を生成するために使用される。情報７４０から生成されたＦＰＧＡは、情報７６０から生成されたＡＳＩＣと論理的に等価であり、逆もまた真である。例えば、ＡＳＩＣ版のみが最初に使用されるが、初期合成７２０からのＦＰＧＡマッピング７３０またはＦＰＧＡ情報７４０のいずれも保持される場合、ＡＳＩＣとのＦＰＧＡ等価物は、情報７４０または（情報７４０を再び生成するための）マッピング７３０のいずれかを使用して、論理の再合成なしに生成可能である。最初に生成されたマッピング７５０または情報７６０が保持されていると仮定すると、最初に生成されたＦＰＧＡから後に必要とされる等価なＡＳＩＣへの移動にも同一のことがあてはまる。ＡＳＩＣは、情報７６０または（情報７６０を再び生成するためのベースとして使用される）マッピング７５０のいずれかから、いつでも生成可能である。論理の再合成は必要なく、後に生成されるＡＳＩＣと、最初に生成されたＦＰＧＡとの等価性が保証される。
【００４５】
図２０は、すでに生成されたＨＬＥベースＡＳＩＣからＬＥベースＦＰＧＡを生成する本発明の他の技術を示す。ここで再び、図２０中のフロー素子８１０、８２０は、図１８中のフロー素子６１０、６２０（または図１９中のフロー素子７１０、７２０）とそれぞれ類似している。技術マッピング８３０は、ＬＥベースＦＰＧＡアーキテクチャへと入力されるが、このマッピングは、ＦＰＧＡ  ＬＥベースからＨＬＥベースへのマッピングを要するステップを実行するためのＨＬＥライブラリ８４０を利用している。フロー素子８５０は、マッピング８３０から、マスク・プログラマブルなＨＬＥベースＡＳＩＣのプログラマブル・マスクの仕様を生成する。ＡＳＩＣは、この仕様から生成可能である。
【００４６】
後に等価なＦＰＧＡが必要となる場合、図２０に詳しく示す情報８５０から生成可能である。フロー素子８６０中では、情報８５０がＨＬＥベース形態からＬＥベース形態へと再マッピングされる。この再マッピングは、素子８３０、８４０中のＬＥ関数から取り出されたＨＬＥまたはＨＬＥ群からの、この関数を当初有していたＬＥへの１対１マッピングであってもよい。この１対１マッピングを促進するために、情報８５０は、起動ＬＥから種々の部分がどのように取り出されるかを示す記録を含んでいてもよい。フロー素子８６０中には論理再合成は必要とされない。素子８６０から、ＦＰＧＡ用ネットリストおよび配置情報８７０が発生し、情報８５０から生成されるＡＳＩＣと論理的に等価なＦＰＧＡを生成するために使用してもよい。
【００４７】
上述の議論においてすでに少なくとも暗示しているが、技術マッピング８３０は、ユーザの論理設計を実装するためのどの任意の可能な方法においても、ＨＬＥを自由に組み付けできないことをここに明記する。その反対に、マッピング８３０はＨＬＥを、ＦＰＧＡ
ＬＥ中に実装された関数の実装としてのみ使用することに制約されている。これによって、後に情報８５０を、素子８７０中のＬＥベース形態への１対１マッピング８６０が可能となる。
【００４８】
図２１（ａ）−（ｃ）、２２（ａ）−（ｃ）、２３は、図３に示すＨＬＥ等中に存在するＮＡＮＤアレイ２２０および想定可能なその他素子２３０（あるいは等価回路）を、本発明のさらに別の態様にしたがって（例えばマスク・プログラミングによって）構成する種々の方法の例を示している。図２１（ａ）−（ｃ）は、例えば、インバータを提供する種々の方法を示している。図２１（ａ）では、ＮＡＮＤゲート２２０のうち１個が、入力の一つが論理１と接続された状態で使用される。図２１（ｂ）では、インバータ２３０のうち１個が使用されている。図２１（ｃ）では、両方のＮＡＮＤゲート２２０ａ、２２０ｂ、もしくは両方のインバータ２３０ａ、２３０ｂが（ＨＬＥ中の略マスク・プログラミング相互接続リソースによって）並列に接続され、例えばＨＬＥからのより強力な出力駆動を生成するための単一のより大きなインバータを効果的に提供する。
【００４９】
図２２（ａ）−（ｃ）は、非反転バッファを提供する方法を示すいつくかの例を示す。図２２（ａ）では、ＮＡＮＤゲート２２０ａ、２２０ｂは直列に接続され、各ＮＡＮＤゲートの入力端末の一つが論理１に接続されている。再び、ＨＬＥのルーティング・リソースは、ＮＡＮＤゲートを直列に接続するためにマスク・プログラム化される。図２２（ｂ）では、インバータ２３０ａ、２３０ｂは、同様に直列に接続されている。図２２（ｃ）では、ＮＡＮＤゲート２２０ａ、２２０ｂは（例えば図２１（ａ）に示すように）インバータ構成において並列に接続され、単一のより大きな第１のインバータ２２０ａ／ｂを効果的に提供し、インバータ２３０ａ、２３０ｂは、同様に並列に接続され、単一のより大きな第２のインバータ２３０ａ／ｂを効果的に提供する。図２１（ｃ）に示すように、図２２（ｃ）中の効果的に大きな素子はＨＬＥからより強力な出力駆動を供給する。
【００５０】
図２３は、ＮＡＮＤ関数を提供するために、ＮＡＮＤゲート２２０ａ、２２０ｂのうち１つを利用することを示している。
【００５１】
図２１−２３に示す種々の選択しのうちいくつかを選択する理由の一つに、本発明のＨＬＥを採用するデバイス中に存在する種々のＨＬＥからの、異なる量の出力駆動への必要性がありうる。所定の大きさのドライバは典型的には、所定量の寄生ローディングを駆動する能力を有する。ＡＳＩＣのフロー中では、散開量が非常に大きく初期の駆動セルが荷重を駆動できない場合は、駆動強度を高めるために、標準セルまたは金属のプログラマブル・セルを拡大したり、他のドライバ（バッファまたはインバータ）を挿入することが、必要であるか、望ましい場合もある。このことは、規模の拡大またはバッファ／インバータの追加に起因した領域の増加を示唆している。しかし、この発明によるＨＬＥべースＡＳＩＣでは、未使用の素子（ＨＬＥまたはＨＬＥの一部）を利用して、例えば、より低いレベルのプログラマブル相互接続リソースを介して、（非反転または反転によって）駆動強度を高めることは容易に可能である。図２１−２３にて示す素子等の、種々の構成においてともに使用可能な素子（例：２２０および／または２３０）は、同一のＨＬＥ中にある必要はない。そのかわり、隣接するか近傍にあるＨＬＥ中に存在してもよい。
【００５２】
すでに述べたように、所定の関数の実装に必要なＨＬＥの数を節約するために、種々の技術が使用可能である。上述のとおり、論理圧縮はこのようなＨＬＥ節約技術の一例である。さらに別の例では、ある単一のＨＬＥがさらに別のＨＬＥを駆動し、この第２のＨＬＥが例示的に２入力ＮＡＮＤゲートとして構成されている。この例が発生すると、ＡＳＩＣフローはＮＡＮＤゲートを第１のＨＬＥに圧縮可能であるため、ＨＬＥの数を２から１へと低減する。ｎ番目のＨＬＥが（ｎ−１）番目のＨＬＥへと圧縮可能であり、（ｎ−１）番目のＨＬＥが（ｎ−２）番目のＨＬＥ等へと圧縮可能であり、特に図３のインバータ２３０等を含む、多くの類似事例がある。他の例は、！Ａ  ＡＮＤ  Ｂ、Ａ  ＡＮＤ  Ｂ等である。
【００５３】
上述は本発明の原理の例示にすぎず、本発明の範囲および精神から逸脱することなしに、当業者によって種々の変更がなし得ることが理解されるであろう。例えば、本明細書で言及されるＦＰＧＡおよびＡＳＩＣは、それぞれ純粋なＦＰＧＡまたはＡＳＩＣである必要はない。デバイスは、ＦＰＧＡの一部、ＡＳＩＣの一部、またはその他さらに別のもの（例：ＦＰＧＡの一部およびＡＳＩＣの一部）の一部であってもよい。本明細書におけるＦＰＧＡおよびＡＳＩＣへの言及は、このようなハイブリッド・デバイス中のＦＰＧＡ部またはＡＳＩＣ部への言及と理解される。
【００５４】
本明細書において「プログラミングを介して」（例図４−９を参照）は、一般に論理構成およびＨＬＥ内、ＨＬＥ間のルーティングについて言及しているが、所望に応じて、上記のかわりにまたは上記に加えて、他の種類のプログラミング（例：金属のオプショナルリンク、ヒューズ、アンチヒューズ、ＣＲＡＭ制御、フラッシュ制御等）を使用することもできる。これら他の技術のうちいくつかが使用される場合、「マスク・プログラミング」に対する上記言及は、カスタム化または部分的にカスタム化されたマスク以外によって実装可能な他のプログラミング技術のことを言及していると理解されている。同様に、ＨＬＥは本明細書中ではＦＰＧＡ  ＬＥと等価な関数を実行するものとして記載されているが、本明細書に示されるＨＬＥは高密度、高性能のコンポーネントである。このためＨＬＥは、（デジタル信号処理（ＤＳＰ）ブロック、マイクロ・プロセッサ等の）高性能知的財産（ＩＰ）メモリ等の形成にも使用してもよい。
【図１】
2014131365.tif 000003
【図２】
2014131365.tif 000004
【図３】
2014131365.tif 000005
【図４】
2014131365.tif 000006
【図５】
2014131365.tif 000007
【図６】
2014131365.tif 000008
【図７】
2014131365.tif 000009
【図８】
2014131365.tif 000010
【図９】
2014131365.tif 000011
【図１０】
2014131365.tif 000012
【図１１】
2014131365.tif 000013
【図１２】
2014131365.tif 000014
【図１３】
2014131365.tif 000015
【図１４】
2014131365.tif 000016
【図１５】
2014131365.tif 000017
【図１６】
2014131365.tif 000018
【図１７】
2014131365.tif 000019
【図１８】
2014131365.tif 000020
【図１９】
2014131365.tif 000021
【図２０】
2014131365.tif 000022
【図２１】
2014131365.tif 000023
【図２２】
2014131365.tif 000024
【図２３】
2014131365.tif 000025