プログラマブル論理の特定用途向け集積回路等価物および関連の方法
【課題】FPGAのASIC等価物をより効率的、経済的に提供すること。
【解決手段】FPGAのASIC等価物の提供は、複数のいわゆるハイブリッド論理素子(HLE)を含むASICアーキテクチャを使用することによって、促進され、より効率的、経済的に実行される。各HLEは、FPGA論理素子(LE)の完全機能の一部を提供可能である。ユーザの論理設計を実装する各FPGA LEの機能は、ユーザの論理を再合成することなく単一または複数のHLEへとマッピング可能である。必要な数のHLEだけが、各LEの関数を実行するために使用される。LE間および(1)単一のHLEまたは(2)HLE群間の1対1の等価性によって、FPGA設計とASIC設計との間のいずれの方向においてもマッピングが(再合成することなく)促進される。
【解決手段】FPGAのASIC等価物の提供は、複数のいわゆるハイブリッド論理素子(HLE)を含むASICアーキテクチャを使用することによって、促進され、より効率的、経済的に実行される。各HLEは、FPGA論理素子(LE)の完全機能の一部を提供可能である。ユーザの論理設計を実装する各FPGA LEの機能は、ユーザの論理を再合成することなく単一または複数のHLEへとマッピング可能である。必要な数のHLEだけが、各LEの関数を実行するために使用される。LE間および(1)単一のHLEまたは(2)HLE群間の1対1の等価性によって、FPGA設計とASIC設計との間のいずれの方向においてもマッピングが(再合成することなく)促進される。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラマブル論理回路(PLDまたはFPGA)の等価物または代替物として利用可能な、特定用途向け集積回路(ASIC)用の回路に関する。本発明は、また、デバイスの相互可変性が達成されるような、上記2種類のデバイス間のASICまたはPLD(またはFPGA)の特定の利用のための転送設計に関連する。
【背景技術】
【0002】
典型的なプログラマブル論理デバイス(PLD)またはフィールド・プログラマブル・ゲート・アレイ(FPGA)は、所定の大きさの論理素子(LE)を含んでいる。(本明細書では便宜のため、FPGAという術語はPLDおよびFPGAの一般的な術語として使用されている。)例えばFPGA LEは、4入力ルックアップテーブル(LUT)、レジスタおよび、いくつかのルーティング回路を含んでいてもよい。このルーティング回路は、順序ロジックまたは演算が所望される場合に、(例えば、LUTの出力を登録するために)レジスタを使用可能とするか、組み合わせの、または組み合わせ論理または演算が所望される場合に、レジスタをバイパス可能とする。FPGA LEは、他の特徴または能力を有していてもよいが、上述の例で十分説明可能である。FPGAはまた、多くのLEの他に、典型的にはプログラマブル・ルーティング回路を有していてもよい。この回路は、多くの異なる方法のうち任意の方法で、LEへ、から、および/または間の信号を伝達することによって、複数のLEを組み合わせまたは他の方法で使用することによって、非常に複雑なおよび/または広範な論理または論理型演算が実行可能である。さらにFPGAは、LEに加えて、入/出力(I/O)回路、メモリのブロック、マイクロ・プロセッサ、デジタル信号処理(DSP)ブロック、高速シリアル・インタフェース(HSSI)ブロック等、特定用途回路等の、他の種類の回路を有していてもよい。これらの他の種類の回路も、上述のプログラマブル・ルーティング回路を介して、互いに(およびLEに)相互接続可能である。
【0003】
FPGAは当業者にとって周知である多くの利点を有している。しかし、場合によっては、FPGA設計のASIC等価物を有することが望ましく、そのため高容量のアプリケーションにおいてコスト低減が可能である。例えば、設計はFPGA中から開始してもよい。しかし、当該設計が十分に証明され、十分な高容量に到達した後は、ASIC等価物を代替することによって、費用効率が高い場合もある。
【0004】
FPGAに対しASIC等価物を提供する既知の方法では、起動用FPGAと同一のLEの基本的な機構を有するASICアーキテクチャを採用している。例えば、FPGAがLEの列を含んでいる場合、各列は4入力LUT(4−LUT)およびレジスタを有し、ASICは4−LUTおよびレジスタを含むLEの類似した列を備える。続いて、ASIC中の所定の層は、特定のユーザの設計のためにカスタマイズされて、LEを効果的に「プログラム」し、LE間の所要の相互接続ルーティングを提供する。
【発明の概要】
【発明が解決しようとする課題】
【0005】
FPGAのASIC等価物を提供する上述の方法は多くの利点を有する。しかし、改善が常に求められている。例えば、大部分のユーザ設計はFPGA上の全回路を利用していない。FPGA回路の一部は、一般に使用されていない。4−LUTは、2入力または3入力関数を提供するためにのみ、使用してもよい。あるいは、一部のLE中ではLUTまたはレジスタ(両方ではない)を使用してもよい。これらのいずれの場合も、完全に利用されていないLE中の回路の相当量が、事実上無駄に消費されている。同一の基本的なLE構造が、等価ASICの基本を形成する場合、同一の無駄な消費がASIC中に反復される。
【課題を解決するための手段】
【0006】
上述に鑑みて、本発明によるASICアーキテクチャは、等価FPGA中のLEとは同一でない論理素子を含む。本明細書中ではこれらASIC論理素子は、ハイブリッド論理素子(HLE)として言及されている。各HLEは、比較的小さい、汎用的な、組み合わせ論理コンポーネント(例:1入力LUTすなわち1−LUT)、比較的小さな論理ゲートアレイ(例:2個の2入力NANDゲート)、およびいくつかの関連する相互接続またはルーティング・リソースを有していてもよい。HLE(例:1−LUTおよびNANDゲート)中の演算回路の量は、関連するFPGA LE中の演算回路の量よりもはるかに小さい。HLE中のルーティング・リソースの少なくともごく一部の態様では、HLEへの入力接続、HLEからの出力接続、およびHLEの内部接続等を確立する目的のために、プログラマブル(例えば、バイアを使用してマスク・プログラマブル)である。一部の比較的十分利用されていないFPGA LEに対しては、単一のASIC HLEがLEの関数を実行可能である。LEの利用率がより大きい場合、数個の隣接した(あるいは少なくとも近傍に存在する)HLEが、LEの関数を等価的に実行するために必要とされることがある。いずれの場合も、LEの等価物を提供するために、LEの関数を実行するために必要なHLEと同数のHLEのみが使用される。大部分の設計ではLEの多くが完全に利用されていないので、FPGAと等価としての使用のためにASIC上に提供されるHLEの数は、全LEが完全に利用された場合に必要とされるであろうHLEの数よりも有意に少ない。これは、各FPGA LEに対し完全機能を持つLEを使用するASICと比較して、ASICの規模が有意に低減される。
【0007】
少なくともかなりの程度まで、各LEと、等価のHLEまたはHLE群との間には、好適には1対1の対応がある。この対応によって、ユーザの論理を再合成することなしに、FPGA設計から等価のASICへの変換、およびその逆の変換が促進される。このような再合成を回避することによって時間および費用の節約が可能であり、(FPGAまたはASICのいずれかが適切に機能することが実証されていると仮定すれば、)ASICおよびFPGAの等価物が略同一におよび欠陥なしに機能することが、一層確実に保証される。
例えば、本発明は以下の項目を提供する。
(項目1)
第2および第3の選択回路入力信号のうち一つを選択回路出力信号として選択するために、第1の選択回路入力信号を使用する選択回路、
第1および第2の論理回路入力信号の論理関数である論理回路出力信号を供給する論理回路、および
第1および第2の論理回路入力信号のうち少なくとも一つを、選択回路出力信号または論理素子外の信号から取り出すことを可能にする、プログラマブル相互接続回路
を含む、論理素子回路。
(項目2)
選択回路がマルチプレクサ回路を含む、項目1記載の回路。
(項目3)
論理回路がNAND回路を含む、項目1記載の回路。
(項目4)
プログラマブル相互接続回路がマスク・プログラマブル回路を含む、項目1記載の回路。
(項目5)
プログラマブル回路がプログラマブル・バイア回路を含む、項目1記載の回路。
(項目6)
第1、第2、第3の選択回路入力信号のうち一つを論理回路出力信号から取り出すことを可能にする、さらに別のプログラマブル相互接続回路をさらに含む、項目1記載の回路。
(項目7)
第1、第2、第3の選択回路入力信号のうち少なくとも一つを論理素子外の信号から取り出すことを可能にする、さらに別のプログラマブル相互接続回路をさらに含む、項目6記載の回路。
(項目8)
第1および第2のさらに別の論理回路入力信号の論理関数であるさらに別の論理回路出力信号を供給する、さらに別の論理回路をさらに含む、項目1記載の回路。
(項目9)
第1および第2のさらに別の論理回路入力信号のうち少なくとも一つを、選択回路出力信号または論理素子外の信号から取り出すことを可能にする、さらに別のプログラマブル相互接続回路をさらに含む、項目8記載の回路。
(項目10)
第1および第2のさらに別の論理回路入力信号のうち少なくとも一つを、論理回路出力信号から取り出すことを可能にする、さらに別のプログラマブル相互接続回路をさらに含む、項目8記載の回路。
(項目11)
第1および第2のさらに別の論理回路入力信号のうち少なくとも一つを、選択回路出力信号または論理素子外の信号から取り出すことを可能にする、追加的なプログラマブル相互接続回路をさらに含む、項目10記載の回路。
(項目12)
それぞれが項目1記載の複数の論理素子回路を含む、集積回路デバイス。
(項目13)
少なくとも数個の論理素子回路それぞれからの信号を、論理素子回路に隣接する別の論理素子回路に供給することを可能にする、さらに別のプログラマブル相互接続回路をさらに含む、項目12記載のデバイス。
(項目14)
プログラマブル相互接続回路はデバイス層の第1サブセット中に提供され、さらに別のプログラマブル相互接続回路もまたデバイス層の第1サブセット中に提供される、項目13記載のデバイス。
(項目15)
少なくとも数個の論理素子回路それぞれからの信号を、論理素子回路に隣接しない別の論理素子回路に供給することを可能にする、追加的なプログラマブル相互接続回路をさらに含む、項目14記載のデバイス。
(項目16)
追加的なプログラマブル相互接続回路が、少なくとも部分的に、デバイス層の第1サブセット中にはないデバイス層中に提供されている、項目15記載のデバイス。
(項目17)
それぞれがFPGAの単一のLEの関数能力の一部を提供可能であり、必要に応じて組み合わせ可能で任意の単一のLEによって実行される概ねすべての関数を実行する、複数のHLEを含むASICアーキテクチャを使用して、FPGAと略等価なASICを設計する方法であって、
ユーザの論理設計を合成する工程と、
合成された論理設計をFPGA設計にマッピングする工程と、
FPGA設計の各LEを、ASIC設計の単一または複数のHLEに再マッピングする工程と
を含む方法。
(項目18)
マッピングが、FPGA用ネットリストおよび配置情報を生成することを含む、項目17記載の方法。
(項目19)
再マッピングが、FPGA用ネットリストおよび配置情報上で実行される、項目18記載の方法。
(項目20)
再マッピングが、ASIC用ネットリストおよび配置情報を生成することを含む、項目17記載の方法。
(項目21)
再マッピングが、ASIC用ネットリストおよび配置情報を生成することを含む、項目19記載の方法。
(項目22)
項目17記載の方法を使用して作成される、ASIC。
(項目23)
再マッピングが、単一のHLEによっては実行不可能な任意のLEの関数を実行するために、互いに隣接した複数のHLEを使用することを含む、項目17記載の方法。
(項目24)
再マッピングが、FPGA LEの関数を単一または複数のHLEに再マッピングする際に、論理圧縮を採用することを含む、項目17記載の方法。
(項目25)
再マッピングが、各FPGA LEの(1)論理関数および(2)レジスタ関数を、異なるHLEまたはHLE群のそれぞれにさらに再マッピングすることを含む、項目17記載の方法。
(項目26)
それぞれがFPGAの単一のLEの関数能力の一部を提供可能であり、必要に応じて組み合わせ可能で任意の単一のLEによって実行される概ねすべての関数を実行する、複数のHLEを含むASICアーキテクチャを使用して、機能的に略等価なFPGAおよびASICを設計する方法であって
ユーザの論理設計を合成する工程と、
合成された論理設計をFPGA設計にマッピングする工程と、
合成された論理設計をASIC設計にマッピングする工程と
を含む方法。
(項目27)
FPGA設計へのマッピングが、FPGA用ネットリストおよび配置情報を生成することを含む、項目26記載の方法。
(項目28)
ASIC設計へのマッピングが、ASIC用ネットリストおよび配置情報を生成することを含む、項目26記載の方法。
(項目29)
項目26記載の方法を使用して作成される、ASIC。
(項目30)
ASIC設計へのマッピングが、FPGA LEの関数を実行するためにHLEを使用することを含む、項目26記載の方法。
(項目31)
上記使用が、単一のHLEによっては実行不可能な任意のLEの関数を実行するために、互いに隣接した複数のHLEを採用することを含む、項目30記載の方法。
(項目32)
上記使用が、単一または複数のHLEによるFPGA LEの関数の実行を促進するために、論理圧縮を採用することを含む、項目30記載の方法。
(項目33)
上記使用が、FPGA LEの(1)論理関数および(2)レジスタ関数を実行するために、異なるHLEまたはHLE群のそれぞれを使用すること、
を含む、項目30記載の方法。
(項目34)
それぞれがFPGAの単一のLEの関数能力の一部を提供可能であり、必要に応じて組み合わせ可能で任意の単一のLEによって実行される概ねすべての関数を実行する、複数のHLEを含むアーキテクチャを有するASICと等価な、FPGAを設計する方法であって、
ユーザの論理設計を合成する工程と、
FPGA LEの関数を実行するためのHLEの使用に基づいて、合成された論理設計をASIC設計にマッピングする工程と
を含む方法。
(項目35)
それぞれがFPGAの単一のLEの関数能力の一部を提供可能であり、必要に応じて組み合わせ可能で任意の単一のLEによって実行される概ねすべての関数を実行する、複数のHLEを含むアーキテクチャを有するASICと等価な、FPGAを設計する方法であって、
ユーザの論理設計を合成する工程と、
FPGA LEの関数を実行するためのHLEの使用に基づいて、合成された論理設計をASIC設計にマッピングする工程と
ASIC設計をFPGA設計に再マッピングする工程と
を含む方法。
(項目36)
マッピングが、ASIC用ネットリストおよび配置情報を生成することを含む、項目35記載の方法。
(項目37)
再マッピングが、FPGA用ネットリストおよび配置情報に基づいて実行される、項目36記載の方法。
(項目38)
再マッピングが、FPGA用ネットリストおよび配置情報を生成することを含む、項目35記載の方法。
(項目39)
再マッピングが、FPGA用ネットリストおよび配置情報を生成することを含む、項目37記載の方法。
(項目40)
項目35記載の方法を用いて形成される、FPGA。
(項目41)
マッピングが、単一のHLEによっては実行不可能な任意のLEの関数を実行するために、互いに隣接した複数のHLEを使用することを含む、項目35記載の方法。
(項目42)
マッピングが、単一のHLEによっては実行不可能な任意のLEの関数を実行するために、どのHLEが同時に使用中であるかを記録することをさらに含む、項目41記載の方法。
(項目43)
再マッピングが、それぞれのLEに対して再マッピングするHLE群を特定するために、上記記録することを使用することを含む、項目42記載の方法。
(項目44)
マッピングが、少なくとも数個のFPGA LEの関数を実行するためにHLEを使用する際に、論理圧縮を採用することを含む、項目35記載の方法。
(項目45)
マッピングが、各FPGA LEの任意の(1)論理関数および(2)レジスタ関数を、異なるHLEまたはHLE群のそれぞれに、さらにマッピングすることを含む、項目35記載の方法。
(項目46)
完全に利用されていれば、FPGAの完全に利用されたLEの能力のうち一部のみを実行する能力をそれぞれが有し、各LEの関数がHLEまたはHLE群の一つにそれぞれマッピングされる複数のASICを含む、プログラムされたFPGAと機能的に等価なASIC。
(項目47)
組み合わせ論理能力が、1入力ルックアップ・テーブル回路、2個の2入力NANDゲートもしくは該NANDゲートの論理等価物を実質的に含む論理素子回路。
(項目48)
ルックアップ・テーブル回路が、2個の選択可能な入力および選択制御入力を有するマルチプレクサ回路を含む、項目47記載の回路。
(項目49)
ルックアップ・テーブル回路およびNANDゲートもしくはその論理等価物へ、から、および間で、信号を選択的に伝達するプログラマブル相互接続回路を追加的に含む、項目47記載の回路。
(項目50)
出力バッファ回路を追加的に含む、項目47記載の回路。
(項目51)
ルックアップ・テーブル、またはNANDゲートもしくは論理等価物のうち少なくとも一つの出力信号を、出力バッファ回路へと選択的に供給するプログラマブル相互接続回路を追加的に含む、項目50記載の回路。
(項目52)
プログラマブル相互接続回路が少なくとも部分的にマスク・プログラマブルである、項目49記載の回路。
(項目53)
プログラマブル相互接続回路が少なくとも部分的にバイア・プログラマブルである項目47記載の回路。
(項目54)
それぞれが項目47記載の、複数の論理素子回路を含むASIC。
(項目55)
機能的に等価なFPGAの各論理素子の概ねすべての関数が、論理素子回路もしくは論理素子回路群のうち一つによってそれぞれ実行される、項目54記載のASIC。
(項目56)
FPGAのLEに合成された論理を実装可能なHLEを含む、ストラクチャードASIC。
(項目57)
論理がLEにマッピングされ、HLEに再マッピングされる、項目56記載のストラクチャードASIC。
(項目58)
各LEの全関数がHLE単独にまたはHLE群によって実行される、項目56記載のストラクチャードASIC。
【図面の簡単な説明】
【0008】
【図1】既知の例示的なFPGA LEの簡略化した概略ブロック図である。
【図2】既知の例示的なASICと等価なFPGA LEの簡略化した概略ブロック図である。
【図3】本発明による例示的なASIC HLEの簡略化した概略ブロック図である。
【図4】本発明による、ASIC用の例示的なプログラマブル相互接続構造の簡略化した斜視図である。
【図5】本発明による、ASIC用の例示的なプログラマブル相互接続構造の簡略化した斜視図である。
【図6】本発明による、ASIC用の例示的なプログラマブル相互接続構造の簡略化した正面図である。
【図7】本発明による、ASIC用の例示的なプログラマブル相互接続構造の簡略化した正面図である。
【図8】本発明による、ASIC用の例示的なプログラマブル相互接続構造の簡略化した斜視図である。
【図9】本発明による、ASIC用の例示的なプログラマブル相互接続構造の簡略化した斜視図である。
【図10】本発明による、例示的な、プログラムされたASIC HLEの簡略化した概略ブロック図である。
【図11】本発明による、さらに別の例示的な、プログラムされたASIC HLEの簡略化した概略ブロック図である。
【図12】本発明による、例示的な、プログラムされたASIC HLE対の簡略化した概略ブロック図である。
【図13】本発明による、さらに別の例示的な、プログラムされたASIC HLE対の簡略化した概略ブロック図である。
【図14】本発明による、例示的な追加のプログラマブル相互接続回路を備えた、数個の例示的なASIC HLE対の簡略化した概略ブロック図である。
【図15】本発明による、ASIC上のHLEの例示的な配置を示す簡略化したブロック図である。
【図16】本発明による、ASIC上のHLEの使用の例を示す簡略化したブロック図である。
【図17】本発明による、ASIC上の追加のプログラマブル相互接続回路の例を示す簡略化した概略ブロック図である。
【図18】本発明による、例示的な方法のフローチャートである。
【図19】本発明による、例示的な方法のさらに別のフローチャートである。
【図20】本発明による、例示的な方法のさらにさらに別のフローチャートである。
【図21】本発明による、HLEの所定の可能なコンポーネントの例示的な使用を示す概略ブロック図である。
【図22】本発明による、HLEの所定の可能なコンポーネントの例示的な使用を示す概略ブロック図である。
【図23】本発明による、HLEの所定の可能なコンポーネントの例示的な使用を示す概略ブロック図である。
【発明を実施するための形態】
【0009】
本発明のさらに別の特徴、特性、種々の利点については、添付図面および以下の詳細な説明によってより明らかになる。
【0010】
図1に例示的な既知のFPGA LE10を示す。LE10は、4−LUT部12およびレジスタ部14を備える。4−LUT部は16個のプログラマブル・メモリ(例:RAM)セル20−0から20−15を備える。各対において、RAMセル20の出力は、8個の2入力マルチプレクサ(マックス)22−0から22−7の入力へと供給される。4−LUTの入力Aは、各マックス22が(RAMセル20から)どの4−LUTの入力を出力として選択するかを制御する。例えば、入力Aが論理1である場合、各マックス22はその上側入力を出力として選択する。入力Aが論理0である場合、各マックス22はその下側入力を出力として選択する。各対において、マックス22の出力は、4個の2入力マックス24へと供給される。4−LUTの入力Bは、各マックス24がどの入力を出力として選択するかを制御する。再び、Bが論理1の場合、マックス24は上側入力を出力に選択する。Bが論理0の場合、マックス24は下側入力を出力に選択する。各対において、マックス24の出力は、2個の2入力マックス26へと供給される。4−LUTの入力Cは、各マックス26がどの入力を出力として選択するかを制御する。この論理は、マックス22、24の論理と類似している。マックス26の出力は、2入力マックス28へと供給される。4−LUTの入力Dは、(入力A−Cと同じ論理にしたがって)マックス28がどの入力を出力するかを制御する。
【0011】
マックス30の出力信号は、ドライバ回路30に供給される。ドライバ30の出力は、LE10の単一の出力(組み合わせ出力32)である。ドライバ30の出力もまた、マックス40の単一の入力端末に供給される。マックス40に対する他の入力は、LE10に対する他の入力となる。マックス40は、(例えば、プログラマブルRAMセル42によって、)レジスタ44のデータ入力端末に適用するために、マックス40の入力のいずれかを選択するよう制御可能である。この配置によって、LUT12の出力を登録するためにレジスタ44が必要ない場合は、レジスタ44を、別の信号を登録するために使用することができる。レジスタ44の出力は、LE10の登録済出力46である。
【0012】
図2は、(出力の登録がない)2入力ANDゲートとして構成された、想定可能な既知の、LE10のASIC等価物を示している。図2に示す素子は、図1に示す素子と類似しており、図1の参照番号から100増加した参照番号を有する。こうして、ASIC LE110中では、入力CおよびDはAND処理され、未登録のLE出力132を生成する。マックス122−0、122−1の入力は、論理1に接続されている。他のマックス122の入力は、論理0に接続されている。この構成は、入力AおよびBを「ドントケア」入力とする効果を有する。入力CおよびDだけが出力に影響を及ぼす可能性があり、出力がCおよびDのANDとなるような影響を及ぼす。このLE110を使用することは、Xが配置された場所にある素子が事実上未使用であることを意味している。特に、素子122、124、126−1、140、144はすべて事実上未使用である。したがって、このような利用率の低いFPGA LE10の等価物を作成するために提供されるASIC回路に含まれるこれら全素子にとって、相当な浪費量である。論理圧縮(例えば、2004年6月4日出願Foo米国特許出願第 号(代理人整理番号174/309(A877)を参照)を使用して、ASIC LE110に提供しなければならない回路の量を低減することができる。例えば、第1のマキシングレベル(122)は、入力Aおよびその補数を選択的に使用することによって、次のマキシングレベル(124)への入力として除去することが可能である。それにもかかわらず、十分に利用されていないFPGA LE10が実装中である場合はつねに、このような圧縮されたASIC LE110であっても相当量の回路が浪費される。
【0013】
図3は、浪費量の少ないFPGA LEのASIC等価物を提供する際の、本発明にしたがって構成された、単独または複数の使用のための、いわゆるハイブリッド論理素子(HLE)200の例示的な実施形態を示す。図3に示す特定のHLE構造についてこの先ある程度詳細に記述する。しかし本明細書では基本的な要点として、本実施形態が一つの例にすぎないこと、およびこの構成には、本発明の範囲および精神から逸脱することなく多くの変形が可能であることが強調される。
【0014】
HLE200は、2入力マルチプレクサ(マックス)210、2個の2入力NANDゲート220a、220bと、2個の反転バッファまたはドライバ230a、230bと、後続の数文中により詳細に説明する相互接続リソースとを備える。図3に示す相互接続リソースは、マックス210の上流にある複数の垂直導体240と、マックス210とNANDゲート220との間の複数の垂直導体250と、NANDゲート220とドライバ230との間にある垂直導体260(1個または複数)と、ドライバ230の下流にある複数の垂直導体270とを含む。図3に示す相互接続リソースはまた、数個の水平導体(例:導体310、320、330、340)を備える。導体240、250、260、270、310、320、330、340は、比較的汎用目的の導体であり、このことはすなわち、数個の異なるソースのうち任意のソースと数個の異なる送信先のうち任意の送信先との間での任意の数個の異なるリンクを作成するために使用することができる。これらの比較的汎用目的の導体に加え、HLE200は数個のより特定目的の導体を備える。例えば、導体350はマックス210に制御入力を供給することのみに使用される。(もっとも、以下詳述するように、該制御入力信号に対して数個のソースのうち任意のソースが可能であり、導体350は所望に応じて他の用途にも使用可能である。)さらに別の例として、導体360a、360bはマックス210への2個の選択可能な入力を供給することのみに、(この場合も、数個のソースのうち任意のソースから、また所望に応じて、想定可能な追加的な用途とともに)使用される。また別の例として、導体370はマックス210の出力を伝達することのみに使用されるが、出力は数箇所の宛先のうち任意の宛先に送ることができる。ここまでは、一部の導体は比較的汎用目的の導体として記載されてきたが、他の導体はより専用目的の導体として記載されており、これら説明的概念は便宜目的でのみ使用される。これら説明的概念は限定を目的としていない。またこの2種類の間に明確な区別はなく、両方の種類が存在する必要性もない。
【0015】
図3において導体の相互接続における非中空の小さな点は、交差する導体間の接続が所望により形成されたり、形成されなかったりすることができる位置を示している。したがって、上記接続はプログラマブルである。好適な実施形態において、上記接続は、バイア・ホールを使用してマスク・プログラマブルである。該バイア・ホールは、交差する導体を含有する層同士の間に存在する単一または複数の層に含まれている場合も、含まれていない場合もある。(本明細書では、全般にバイア・プログラミングについて言及しているが、これは例にすぎず、所望に応じて代わりに、他の数個のプログラミング技術のうち任意の技術を使用可能である。使用可能なプログラミング技術の他の例は、本明細書中に後述する。)図4は、HLE200を備える集積回路デバイス上の異なる金属層中にそれぞれ存在する、交差する導体240および320を示す。図4では、これら導体はバイア420によって、2枚の金属層間に存在する絶縁層を介して互いに電気的に接続されている。再び図5に、絶縁層を介するバイアのない同一の構造が示されている。したがって図5では、導体240および320は互いに接続されない。(導体240または320が高い側の金属層または低い側の金属層のいずれに存在するかいなかは、任意であり、設計上の選択の問題である。)
【0016】
図3中のX430は、所望に応じ、導体部の互いのプログラマブルな、または非接続が可能である。上述の非中空の小さな点410に対する技術と同一の技術選択が、接続430に適している。例えば、図6は、マスク・プログラマブル・バイア440によってブリッジ導体450へと接続される代表的な導体320の2つの部分を示している。したがって、導体320の2つの部分は、バイア440およびブリッジ導体450を介して互いに電気的に接続されている。図7は同一の構造を示しているが、バイア440は存在しない。したがって、導体部は互いに接続されていない。むしろ、導体部は互いに電気的に絶縁されている。
【0017】
図3における大きく開口した円または楕円460は、この円または楕円を有する導体が、HLE200を備えるデバイス上の高レベルの相互接続リソースと呼ばれるもの(図3には示されていない)にプログラマブルに接続可能な位置を示している。このより高いレベルの相互接続リソースは、互いに隣接せず、比較的近傍にもない成分(例:HLE、デバイス入/出力(I/O)ポート等)間の信号を伝達するなどの目的のために使用してもよい。「より高いレベル」という句は、必ずしも物理的に高いレベルであることを意味しているのではなく、単に階層的により高いレベルにあることを意味する。プログラマブル接続460は、上述の方法のうち任意の方法(例:プログラマブル接続410用の方法)を使用して行うことができる。例えば、図8はマスク・プログラマブル・バイア470によって、より高いレベルの導体510へと接続される代表的な導体360を示す。図9もまた、同一の構造位置460を示すが、導体360とより高いレベルの導体520との間の接続はない。
【0018】
図3において、異なる軸に沿って延出するよう示されている導体は、導体のうち一つが別の導体によって途切れている場合(あるいは、両導体が互いに他方の導体によって途切れている場合)、常に互いに接続している。交差部において小さい点なしに互いに交差している導体は、好適には、交差部では接続可能でない。
【0019】
特定の外部接続を持つ所定の導体が、図3に示されている。このように最上部の導体310は、常にVCC(例:論理1)に接続するよう示されている。図3中の、最上部の次の導体310は、常にVSS(例:論理0)に接続されるよう示されている。導体312、314、316は、記載されたHLEの上方、左方および下方に隣接する他のHLEからの入力接続として示されている。導体332は、記載されたHLEの上方にあるHLEに入力316を供給する。導体272は、記載されたHLEの右方にあるHLEに、入力314を供給する。導体342は、記載されたHLEの下方にあるHLEに、入力312を供給する。隣接するか近傍にあるHLE間のいわゆる「スニーク」接続は、デバイスの相互接続リソースの常設の固定部分となりうる。プログラマブル接続410がスニーク接続の一端または両端においてプログラムされた方法の結果、スニーク接続が実際に使用されるかどうか、およびどのように「スニーク」接続が使用されるかが、プログラマブルである。
【0020】
導体240、250等の記載された端部におけるX430は、導体が、記載されたHLEに隣接する他のHLE中に存在する類似の導体にプログラマブルに接続可能な位置を示している。
【0021】
単一または比較的少数であるが適切な数の隣接するか近傍にあるHLE200は、図1におけるFPGA LE10等によって実行可能な、任意の単数または複数の関数を実行するために使用可能である。それぞれの場合において、LEの(単数または複数の)関数を実行するために必要なHLEと同数のHLEのみが、FPGA LEのASIC等価物を生成するために採用されている。
【0022】
図10は、A XOR Bである出力Yを供給するために使用されているHLE200aをある程度簡略化した形態(あるいは、少なくともHLE200(図3)のより簡略化した表示形式)を示す。この例において実際使用されているHLE200aの相互接続リソースは、非常に太い線を用いて描かれている。存在するがこの例では使用されていない他の相互接続リソースは、細い線で表示されている。入力Aは、マックス210の上側入力端末へと供給される。例えば、入力Aは、図3中の対応するマックス入力IN0上に表示されるプログラマブル接続460(図3)を経由して、HLE200aに入力されてもよい。このように、入力Aは、デバイスのより高いレベルの相互接続回路中の導体(図8の510等)から入力可能である。図3では、入力AはNANDゲート220bの両入力端末へと供給される。このことによって、図10に示すように、NANDゲート220bはインバータとして作動する。再び、これら入力Aはプログラマブル接続460を介して、図3中のNANDゲート220bの左方に入力されてもよい。インバータ220b(図10)の出力は、(例えば、導体322、垂直導体240のうち一つへのプログラマブル接続410(図3)、この垂直導体の一部、導体360bへの別のプログラマブル接続410、およびこの導体360bの一部を介して、)マックス210の下側入力へとフィードバックされる。
【0023】
入力Bは、導体350を介してマックス210の制御入力へと供給される。例えば、図3中の導体上に示すプログラマブル接続460を介して、入力Bを導体350に供給してもよい。このように入力Bは、デバイスのより高いレベルの相互接続回路からHLE200aへと入力されてもよい。入力Bが論理0である場合、マックス210は2個の選択可能な入力リード線のうち上側(すなわち導体360a)の上にある信号を出力する。入力Bが論理1である場合、マックス210は2個の選択可能な入力リード線のうち下側(すなわち導体360b)にある信号を出力する。したがって、マックス210の出力信号はA XOR Bである。
【0024】
マックス210の出力信号はNANDゲート220a(図3)の両方の入力へと供給され、したがってNANDゲート220aはインバータとして作動する。NANDゲート220aの出力は反転ドライバ230aへと供給され、反転ドライバ230aは再び信号を反転させる。したがって、このように使用される素子220a、230aの複合効果は、マックス210の出力信号、すなわちY(=A XOR B)用の非反転出力ドライバの供給である。
【0025】
NANDゲート220aの2個の入力端末へのマックス210の出力信号のルーティングは、導体370の一部、この導体から垂直導体250のうち一つへのプログラマブル接続410(図3)、この垂直導体250の一部、およびこの導体からNANDゲート220aへの2個の入力へのさらに2個のプログラマブル接続410を介して、実行可能である。ドライバ220a/230bのY出力は、インバータ230aの出力リード線上にあるプログラマブル接続460を介して、より高レベルの相互接続回路へと接続可能である。
【0026】
こうして、図10はリソースの浪費が比較的少ない、単一のHLE中で実行可能な論理関数の一例を示す。FPGA LEと同等のASIC LE中に存在するこの関数の実行は図1および2に示すものと類似しているが、この実行を行うと(この場合、図2に関する議論の終了時までに論じた種類の論理圧縮を行うものの)未使用のおよびこのために無駄となったASIC LEリソースの相当の部分が残る。本明細書に示すHLE構造は、はるかに無駄の少ない実装を提供する。
【0027】
図11は、単一のHLE200b(この場合も、図3中のHLE200様のものまたは少なくとも概念的にこれに類似したもの)において実装される論理関数のさらに別の例を示す。図11において実装された関数はY=(A AND C’)OR(B AND C)である。図11で使用される導体および素子は、太線で示されている。図11で使用されない導体および素子は、細線で示されている。信号がHLE200bへ、HLE200bへを介して、およびHLE200bへからルーティングされる態様は、上述の議論から明らかであり、したがってさらなる詳細な記載は必要ない。
【0028】
図12は、2個の隣接した複数のHLE200c、200bに実装された4入力組み合わせ論理関数の例を示す。各HLEは、図3に中のHLE200と類似していても、あるいは、少なくとも概念的に類似してもよい。実装された関数はF=((A(BC+B’D)+A’)’である。この関数を実装するために使用された素子および導体は、図12中で太線を使用して示される。使用されない素子および導体は、細線を用いて示される。図12は、単一のHLEから隣接するか近傍にあるさらに別のHLEへと信号を伝達するためのスニーク接続の使用を例示している。この場合、HLE200c中にあるマックス210の出力信号は、図3中の272/314等のスニーク接続を介してHLE200dへと伝えられる。(マックス210の出力が、スニーク右出力272へと、さらにスニーク右出力272から右方のHLEのスニーク入力314へと、さらにこの入力から右方のHLE中のマックス210の入力へとどのようにルーティングされるかは、図3および本明細書中の先の言及より明らかである。)図12は、またHLE200d中の素子210、220aへのVCC入力(論理1)の使用を示している。このルーティングは、図3に示す導体310のうち一つおよびこの導体から素子210、220aの所望の入力へのプログラマブル・ルーティング(例:プログラマブル接続410)を使用して実行可能である。
【0029】
図12は、水平方向に隣接した複数のHLE間での(少なくとも明示的には)図3に示していないいくつかの追加的な相互接続を示す。この接続は、各HLEとその右方のHLEとの間のより広範な接続である。図3は、このようなルーティングにはスニーク接続のみが利用可能であることを示唆している。しかし、図12は、3つの信号(マックス210の出力、NANDゲート220a、220bの出力)が、HLEルーティング・リソースの階層レベルにおいて、各HLEからその右方のHLEへと流入可能であることを示している。この追加的な比較的直接的なHLE間ルーティングは多くの異なる方法のうち単一の例にすぎず、本発明にしたがって複数のHLEを構築することが可能である。もちろん、このような追加的な直接接続がHLEレベルで提供されていない場合、より高いレベルの相互接続回路を使用して類似の接続を行うことが可能である。しかし現在では、比較的直接的なHLE間の(スニーク接続を含む)十分なルーティング能力を提供することが、FPGA LEの任意の(単数または複数の)関数を実行するHLE群によって必要とされるHLE間接続の少なくとも相当量の部分(好適には少なくとも大部分の)を可能にするためには好ましいと考えられている。このため、より長距離の相互接続のためにより高いレベルのルーティングを留保しておくことができる。
【0030】
図13は、フリップフロップまたはレジスタ(典型的なEPGA LEの能力の一つ)を供給する2個の隣接するHLE200e、200fの使用の例を示す。ここでも、HLE200e、200fはそれぞれ図3に示すHLE200と類似している(か、少なくとも概念的に類似している)。フリップフロップを供給するために使用される素子および導体は太線で表示される。使用されない構造は図13では細線で示される。図13中のすべての接続、あるいはどのようにこれら接続が達成されるかについての情報は、図および先の記載より明らかであるため記載する必要はない。登録される信号Dは、デバイスのより高いレベルの相互接続回路から、あるいはより低いレベルでのさらに別の隣接するか近傍にあるHLEから、プログラマブル接続460(図3)を介して、HLE200eへと入力されると言えるであろう。フリップフロップを測定するクロック信号CLKについても同じことがあてはまる。(この信号は、HLE200e、200fの両方によって必要とされる。)あるいは、図3中のVCCおよびVSSに対して示すような態様で、CLKが各HLEに入力されることもある。図13は、上下に隣接するHLE中の同様の導体から、導体250のプログラマブル接続430を介してHLE200e、HLE200fのそれぞれに入力される。上記信号は最終的には、図3においてVCCおよびVSS等の信号が入力されるように、あるいはデバイスのより高いレベルの相互接続回路へのプログラマブル接続(図3)を経由して、HLEアレイに入力されてもよい。フリップフロップの登録済の出力Q、Q’は、よりプログラマブルな接続460を介してデバイスのより高いレベルの相互接続に入力することができる。あるいは、この出力は、より低いレベルの接続を介して、隣接するか近傍にあるHLEに入力されてもよい。
【0031】
図14は、数個の隣接するHLE200g、200h、200i、200jを、所定の(しかし必ずしもすべてでない)比較的直接的なHLE間の接続リソースを強調して示している。図14に示す実施形態では、HLE間相互接続リソースは、HLE200hのNANDゲート220aからその右方のHLE200jへの(太い破線で示す)直接接続222を含む。図14に示すさらに別の直接接続は、HLE200h中のマックス210の出力からその右方のHLE200jへの(太い破線で示す)接続212である。図示されるさらにさらに別の直接接続は、(太い実践で示す)スニーク接続ネットワーク214であり、この接続はHLE200hのスニーク出力から、HLE200g、200i、さらにはHLE200jの右方にある(図示しない)HLEへと延出する。本実施形態では、スニーク出力は導体212、222のいずれかからプログラマブルに選択可能として示されているが、該信号には他のソースも同等に利用可能である。図14で強調表示される(スニーク接続を含む)全HLE間接続リソースは、HLE内接続リソースに使用されるものと同じレベルの金属内に実装可能であるため、より長距離の相互接続に典型的に使用されるより高いレベルの相互接続回路へのリソースは必要としない。
【0032】
図15は、集積回路デバイス500上のHLE200の例示的な配置を示す。図15中のHLE200は図3または本明細書中の他の図に示すように構成されるか、あるいは、本明細書の任意の箇所で言及される修正を含んでいてもよい。図15に示す例示的な配置において、HLE200は、交差する行と列とからなる2次元アレイ中にあるデバイス500上に配置されている。デバイス500は、(図示しない)I/Oブロック、メモリブロック等の他の回路を含んでいてもよい。したがって、本発明によるASICは基本的な回路機構または構成(例:上述の図15に示すようなHLEの2次元アレイ)を持っているという意味において好適には「ストラクチャードASIC」であり、このASICに対してカスタマイズ可能な修正および/または追加が行われる(例:HLE内および/または複数のHLE間の相互接続)。デバイス500がFPGAのASIC等価物として使用される場合、デバイス500には一般にHLE200の全数が供給される。このHLE200の全数は、FPGA上のLEの数と、単一のFPGA LEの全能力を再生成するために必要なHLE200の最大数との積より少ない。この理由は、各FPGA LEの(単数または複数の)関数を実行するために必要なだけの数のHLEが使用され、またこの目的のために、多くの場合HLEの最大数よりも少ないHLE数が必要である。この点に関する所定の側面は、説明を進めるにつれより明らかとなるであろう。
【0033】
図16は、デバイス500上のHLE200が、等価FPGA中のLEの(単数と複数の)関数を実行するために、単独またはグループで一緒にどのように使用されるかを示している。図16では、ともに使用される隣接するか近傍にあるHLE200は同様な態様で陰影が付けられているが、他の隣接するか近傍にあるHLEに使用される陰影とは異なっている。参照をしやすくするために、図16中のHLEの列は1、2、3等と番号付けされ、HLEの行はA、B、C等と符号付けされている。これらの列および行を使用して、図16は以下のようにともに使用されるHLEを示す。
グループ1:A1/A2/B1
グループ2:A3/A4
グループ3:B2/C1/C2/C3
グループ4:B3/B4
グループ5:D1/E1/E2/F1
グループ6:D2/D3/D4
グループ7:F2
【0034】
上記のグループ分けは、以下のような等価FPGA中におけるLEの関数を実行することもある。
グループ1:FPGA LE A1の組み合わせ論理
グループ2:FPGA LE A1のレジスタ関数
グループ3:FPGA LE B1の組み合わせ論理
グループ4:FPGA LE B1のレジスタ関数
グループ5:FPGA LE C1の組み合わせ論理
グループ6:FPGA LE D1の組み合わせ論理
グループ7:FPGA LE E1の組み合わせ論理
直前のリストでは、(図16に示すような)行の文字および列の数字は、二次元FPGA LEアレイにおいてLEを参照付けをしやすくするよう使用される。
【0035】
図16に示すHLE群化の例は単に例示的なものにすぎず、多くの他のグループ化も同様に可能であることが理解される。任意の特定の場合(ASIC)に採用された実際のグループ化は、ASICデバイス500中で同様に実行する必要があるFPGA LE関数によって指示されている。しかし、この先行する2段落中の例示的な一覧は以下のとおりの好適例を提示している。時には、FPGA LEの関数がASIC HLEの同一の一般配置においても実装されることが望ましい。例えば、FPGAの左上隅近傍のLEによって実行される単一または複数の関数は、ASICの対応する位置(例:左上隅近傍)において必要とされる数のHLEによって好適に実行される。
【0036】
また図16と関連して、ASIC500中のHLE200のうちいくつかを使用しない場合もあることを言及すべきである。
【0037】
完全性のため、図17は、ASIC500上の例示的な高いレベルの相互接続回路510、520、530、540、550を示している。例えば、回路520は(ASIC用にカスタマイズされた場合)、ASIC500の左上隅近傍のHLE200のI/Oポート460から、ASICの中央下部近傍のさらに別のHLE200のI/Oポート460(例:入力)への接続を形成するために提供することができる。さらに別の例では、回路550は(ASIC用にカスタマイズされた場合)、ASIC500の左下隅近傍のHLE200のI/Oポート460(例:出力)から、ASICの出力ポート(図示せず)への接続を形成するために提供することができる。任意の所望の配置のHLE200への、200からの、および/またはHLE200間の非ブロッキングの、より高いレベルのルーティングを提供するために、カスタマイズ可能な金属の2層(および介在するカスタム化可能なバイア)を使用することが必要となる場合もある。
【0038】
ASIC設計において望ましいように、本発明によるデバイス中のカスタム化(プログラミング)に必要な層の数は、好適には比較的少ない。本書中にこれまで記載されたカスタム化を要する例示的な層は、主として、HLE等の水平および垂直な相互接続導体間にプログラマブル・バイア420/440を提供する層である。この層はより高いレベルの相互接続回路へのI/Oポートにプログラマブル・バイア470(図8)を提供し、またより高いレベルの相互接続自体を提供する。(あるいは、すべてのI/Oポート・バイア470が常に存在してもよく、あるいは必要であれば(使用される場合)、より高いレベルの相互接続回路に接続され、必要でなければ(使用されない場合)この回路によってバイパスされてもよい。)
【0039】
本発明の重要な利点は、任意のFPGA LEの関数が、(単一または複数の)ASIC HLEへと簡単にマッピングできる(およびその逆も可能な)ことである。このため、ユーザによってプログラムまたは構成されたFPGAのHLEベースのASIC等価物(またはその逆)を、いかなるレベルでもユーザの論理を再合成することなしに提供可能である(先に論じた簡単な再マッピングは別として)。このことは、大部分のストラクチャードASICのメーカーによってFPGA等価物として提供されているものとは有利に対照的である。典型的には、このようなメーカーは、論理構造を構成するために、複雑なマルチゲートまたはゲートアレイ設計を使用する。これらの論理構造のビルディング・ブロックは、FPGAとは類似しない傾向にあるが、プロトタイピングのためにFPGAを使用する場合再合成が必要である。このように柔軟性に欠けるため、FPGA中でプロトタイプされた設計が、ストラクチャードASIC中で構成される設計と機能的に等価であることを確認するための検証活動が追加される。このようなストラクチャードASICと等価なプログラムされたFPGAを生成することが望まれる場合、論理の再合成が必要とされる。本発明は、構成されたFPGAとHLEベースASICとの間でいずれかの方向に移動する際にこのような再合成を避けるものである。さらにHLEは、FPGA LEと構造的に類似するASIC比べて、スペースを節約する。(その理由は、各FPGA LEに対して、プログラムされた対応するFPGA LEの(単数または複数の)関数を実行するために必要な数と同数のHLEだけが使用されるためである。)
【0040】
図18は、等価なLEベースFPGAおよびHLEベースASICの設計を生成するために使用可能な例示的な一連のフロー素子(すなわち、ステップおよび/または結果)を示している。図18は、FPGA設計を最初に生成し、次にこのFPGA設計から略等価なASIC設計を生成することを例示している。ユーザが特定した所望の論理(およびおそらくは他の関数も)がフロー素子610に提示されており、典型的にはRTL(レジスタ転送レベル)等の標準形式で提示されている。フロー素子620においてRTLは、フロー素子610中に供給された比較的一般的な仕様から、特定の特徴を有するFPGA(例:4−LUTおよびレジスタ等を含むLE)中の実装に役立つ形態へと再合成される。フロー素子620は、カリフォルニア州サンノゼのAltera Corporationによって提供されるQuartus II等の、商業的に利用可能なFPGA合成ソフトウェアツールを使用して実行可能である。合成620の結果は、フロー素子630中の特定のFPGA技術へとマッピングされる。
【0041】
次のフロー素子640は、フロー素子630中で検討されていた一般的なFPGA技術中に存在する特定FPGA向けの、ネットリストおよび配置情報へとマッピングするFPGA技術の変換を示している。例えば、フロー素子640は、特定の数および配置のリソースを有するFPGA中において作動する。フロー素子640は、これらのうちどのリソースがユーザの設計が要求する各関数を実行するかを指定する。指定された種類のFPGAは、フロー素子640中で生成される情報からビットストリームを介してプログラマブルである。
【0042】
情報640からプログラムされたFPGAと略等価のHLEベースASICを生成するために、ステップ650が本発明にしたがって情報640に基づいて実行される。ステップ650は、情報640中の関数単位の、関数単位を最低限実行可能な単一のHLEまたは単一のHLE群の1対1マッピングである。本明細書で先に論じられた例において、関数単位は、所定のFPGA LE中のLUTによって実行される組み合わせ論理、または所定のFPGA LEにおけるレジスタのいずれかである。関数単位が組み合わせ論理の場合、ステップ650は論理を、当該関数を実行可能な最小数のHLEへとマッピングする。このことは好適には、必要な選択レベル数を低減するために、先に述べたような論理圧縮を使用することを含んでいる。他の技術を使用して、HLE中の実装のための論理を単純化(最適化)してもよい。関数単位がレジスタの場合、ステップ650は前記レジスタを例えば図13に示す2個のHLEへとマッピングする。ステップ650はまた、どのHLEがどの関数単位を実行するか、および各HLEが割り当てられた関数単位を実装する際の役割を実行するためにどのように構成されるべきかも選択する。例えば、ステップ650は好適には、FPGA上の関数を等価なASICに位置決めする際に、FPGA上の関数の一般配置を保持する。(しかし、一般的な配置を保持することは必ずしも実施する必要はなく、等価なHLEは標的ASICの他の部分でも配置される。)またステップ650は、より低くより直接的なHLE間レベルでは供給不可能な、HLEまたはHLE群への、HLEまたはHLE群からの、および/またはHLEまたはHLE群間のより高いレベルのルーティングも指定する。ステップ650は、起動FPGA中で指定された関数を実装する十分な能力を有するASICの状況において作動すると仮定される。
【0043】
ステップ650の結果660は、(情報640によって指定される)起動FPGAと等価的に機能するASICを構成するために必要なマスクを指定するために使用可能なASIC用ネットリストおよび配置情報である。有利には、情報660は、情報640から直接取り出される。このFPGA−ASIC変換を実行するために、ユーザの起動ロジック仕様(例:ステップ620中のような)の再合成は必要ない。したがって、図18のステップおよび結果にしたがって生成されたFPGAとASICとの間の等価性に欠陥はないはずである。
【0044】
図19は、等価なLEベースASICおよびHLEベースASICを生成する、本発明によるさらに別の技術を示す。フロー素子710、720は、図18中のフロー素子610、620とそれぞれ類似している。ある特定のFPGA技術に入力された合成720の結果は、FPGAデバイスないしデバイスクラスへのユーザの論理設計のマッピング730と、ASICベースデバイスないしデバイスクラスへのユーザの論理設計のマッピング750との両方を生成するために使用される。言い換えれば、単一の共通の論理合成720は、マッピング730、750の両方のベースとして使用される。この使用によって、これら2個のマッピングの論理等価性が保証される。FPGAマッピング730は、ある特定のFPGA設計(すなわち、プログラミングまたは構成)のためのネットリストおよび配置情報740を生成するため使用される。ASICマッピング750は、ある特定のマスク・プログラマブルなHLEベースASICのプログラマブル・マスクの仕様760を生成するために使用される。情報740から生成されたFPGAは、情報760から生成されたASICと論理的に等価であり、逆もまた真である。例えば、ASIC版のみが最初に使用されるが、初期合成720からのFPGAマッピング730またはFPGA情報740のいずれも保持される場合、ASICとのFPGA等価物は、情報740または(情報740を再び生成するための)マッピング730のいずれかを使用して、論理の再合成なしに生成可能である。最初に生成されたマッピング750または情報760が保持されていると仮定すると、最初に生成されたFPGAから後に必要とされる等価なASICへの移動にも同一のことがあてはまる。ASICは、情報760または(情報760を再び生成するためのベースとして使用される)マッピング750のいずれかから、いつでも生成可能である。論理の再合成は必要なく、後に生成されるASICと、最初に生成されたFPGAとの等価性が保証される。
【0045】
図20は、すでに生成されたHLEベースASICからLEベースFPGAを生成する本発明の他の技術を示す。ここで再び、図20中のフロー素子810、820は、図18中のフロー素子610、620(または図19中のフロー素子710、720)とそれぞれ類似している。技術マッピング830は、LEベースFPGAアーキテクチャへと入力されるが、このマッピングは、FPGA LEベースからHLEベースへのマッピングを要するステップを実行するためのHLEライブラリ840を利用している。フロー素子850は、マッピング830から、マスク・プログラマブルなHLEベースASICのプログラマブル・マスクの仕様を生成する。ASICは、この仕様から生成可能である。
【0046】
後に等価なFPGAが必要となる場合、図20に詳しく示す情報850から生成可能である。フロー素子860中では、情報850がHLEベース形態からLEベース形態へと再マッピングされる。この再マッピングは、素子830、840中のLE関数から取り出されたHLEまたはHLE群からの、この関数を当初有していたLEへの1対1マッピングであってもよい。この1対1マッピングを促進するために、情報850は、起動LEから種々の部分がどのように取り出されるかを示す記録を含んでいてもよい。フロー素子860中には論理再合成は必要とされない。素子860から、FPGA用ネットリストおよび配置情報870が発生し、情報850から生成されるASICと論理的に等価なFPGAを生成するために使用してもよい。
【0047】
上述の議論においてすでに少なくとも暗示しているが、技術マッピング830は、ユーザの論理設計を実装するためのどの任意の可能な方法においても、HLEを自由に組み付けできないことをここに明記する。その反対に、マッピング830はHLEを、FPGA
LE中に実装された関数の実装としてのみ使用することに制約されている。これによって、後に情報850を、素子870中のLEベース形態への1対1マッピング860が可能となる。
【0048】
図21(a)−(c)、22(a)−(c)、23は、図3に示すHLE等中に存在するNANDアレイ220および想定可能なその他素子230(あるいは等価回路)を、本発明のさらに別の態様にしたがって(例えばマスク・プログラミングによって)構成する種々の方法の例を示している。図21(a)−(c)は、例えば、インバータを提供する種々の方法を示している。図21(a)では、NANDゲート220のうち1個が、入力の一つが論理1と接続された状態で使用される。図21(b)では、インバータ230のうち1個が使用されている。図21(c)では、両方のNANDゲート220a、220b、もしくは両方のインバータ230a、230bが(HLE中の略マスク・プログラミング相互接続リソースによって)並列に接続され、例えばHLEからのより強力な出力駆動を生成するための単一のより大きなインバータを効果的に提供する。
【0049】
図22(a)−(c)は、非反転バッファを提供する方法を示すいつくかの例を示す。図22(a)では、NANDゲート220a、220bは直列に接続され、各NANDゲートの入力端末の一つが論理1に接続されている。再び、HLEのルーティング・リソースは、NANDゲートを直列に接続するためにマスク・プログラム化される。図22(b)では、インバータ230a、230bは、同様に直列に接続されている。図22(c)では、NANDゲート220a、220bは(例えば図21(a)に示すように)インバータ構成において並列に接続され、単一のより大きな第1のインバータ220a/bを効果的に提供し、インバータ230a、230bは、同様に並列に接続され、単一のより大きな第2のインバータ230a/bを効果的に提供する。図21(c)に示すように、図22(c)中の効果的に大きな素子はHLEからより強力な出力駆動を供給する。
【0050】
図23は、NAND関数を提供するために、NANDゲート220a、220bのうち1つを利用することを示している。
【0051】
図21−23に示す種々の選択しのうちいくつかを選択する理由の一つに、本発明のHLEを採用するデバイス中に存在する種々のHLEからの、異なる量の出力駆動への必要性がありうる。所定の大きさのドライバは典型的には、所定量の寄生ローディングを駆動する能力を有する。ASICのフロー中では、散開量が非常に大きく初期の駆動セルが荷重を駆動できない場合は、駆動強度を高めるために、標準セルまたは金属のプログラマブル・セルを拡大したり、他のドライバ(バッファまたはインバータ)を挿入することが、必要であるか、望ましい場合もある。このことは、規模の拡大またはバッファ/インバータの追加に起因した領域の増加を示唆している。しかし、この発明によるHLEべースASICでは、未使用の素子(HLEまたはHLEの一部)を利用して、例えば、より低いレベルのプログラマブル相互接続リソースを介して、(非反転または反転によって)駆動強度を高めることは容易に可能である。図21−23にて示す素子等の、種々の構成においてともに使用可能な素子(例:220および/または230)は、同一のHLE中にある必要はない。そのかわり、隣接するか近傍にあるHLE中に存在してもよい。
【0052】
すでに述べたように、所定の関数の実装に必要なHLEの数を節約するために、種々の技術が使用可能である。上述のとおり、論理圧縮はこのようなHLE節約技術の一例である。さらに別の例では、ある単一のHLEがさらに別のHLEを駆動し、この第2のHLEが例示的に2入力NANDゲートとして構成されている。この例が発生すると、ASICフローはNANDゲートを第1のHLEに圧縮可能であるため、HLEの数を2から1へと低減する。n番目のHLEが(n−1)番目のHLEへと圧縮可能であり、(n−1)番目のHLEが(n−2)番目のHLE等へと圧縮可能であり、特に図3のインバータ230等を含む、多くの類似事例がある。他の例は、!A AND B、A AND B等である。
【0053】
上述は本発明の原理の例示にすぎず、本発明の範囲および精神から逸脱することなしに、当業者によって種々の変更がなし得ることが理解されるであろう。例えば、本明細書で言及されるFPGAおよびASICは、それぞれ純粋なFPGAまたはASICである必要はない。デバイスは、FPGAの一部、ASICの一部、またはその他さらに別のもの(例:FPGAの一部およびASICの一部)の一部であってもよい。本明細書におけるFPGAおよびASICへの言及は、このようなハイブリッド・デバイス中のFPGA部またはASIC部への言及と理解される。
【0054】
本明細書において「プログラミングを介して」(例図4−9を参照)は、一般に論理構成およびHLE内、HLE間のルーティングについて言及しているが、所望に応じて、上記のかわりにまたは上記に加えて、他の種類のプログラミング(例:金属のオプショナルリンク、ヒューズ、アンチヒューズ、CRAM制御、フラッシュ制御等)を使用することもできる。これら他の技術のうちいくつかが使用される場合、「マスク・プログラミング」に対する上記言及は、カスタム化または部分的にカスタム化されたマスク以外によって実装可能な他のプログラミング技術のことを言及していると理解されている。同様に、HLEは本明細書中ではFPGA LEと等価な関数を実行するものとして記載されているが、本明細書に示されるHLEは高密度、高性能のコンポーネントである。このためHLEは、(デジタル信号処理(DSP)ブロック、マイクロ・プロセッサ等の)高性能知的財産(IP)メモリ等の形成にも使用してもよい。
【技術分野】
【0001】
本発明は、プログラマブル論理回路(PLDまたはFPGA)の等価物または代替物として利用可能な、特定用途向け集積回路(ASIC)用の回路に関する。本発明は、また、デバイスの相互可変性が達成されるような、上記2種類のデバイス間のASICまたはPLD(またはFPGA)の特定の利用のための転送設計に関連する。
【背景技術】
【0002】
典型的なプログラマブル論理デバイス(PLD)またはフィールド・プログラマブル・ゲート・アレイ(FPGA)は、所定の大きさの論理素子(LE)を含んでいる。(本明細書では便宜のため、FPGAという術語はPLDおよびFPGAの一般的な術語として使用されている。)例えばFPGA LEは、4入力ルックアップテーブル(LUT)、レジスタおよび、いくつかのルーティング回路を含んでいてもよい。このルーティング回路は、順序ロジックまたは演算が所望される場合に、(例えば、LUTの出力を登録するために)レジスタを使用可能とするか、組み合わせの、または組み合わせ論理または演算が所望される場合に、レジスタをバイパス可能とする。FPGA LEは、他の特徴または能力を有していてもよいが、上述の例で十分説明可能である。FPGAはまた、多くのLEの他に、典型的にはプログラマブル・ルーティング回路を有していてもよい。この回路は、多くの異なる方法のうち任意の方法で、LEへ、から、および/または間の信号を伝達することによって、複数のLEを組み合わせまたは他の方法で使用することによって、非常に複雑なおよび/または広範な論理または論理型演算が実行可能である。さらにFPGAは、LEに加えて、入/出力(I/O)回路、メモリのブロック、マイクロ・プロセッサ、デジタル信号処理(DSP)ブロック、高速シリアル・インタフェース(HSSI)ブロック等、特定用途回路等の、他の種類の回路を有していてもよい。これらの他の種類の回路も、上述のプログラマブル・ルーティング回路を介して、互いに(およびLEに)相互接続可能である。
【0003】
FPGAは当業者にとって周知である多くの利点を有している。しかし、場合によっては、FPGA設計のASIC等価物を有することが望ましく、そのため高容量のアプリケーションにおいてコスト低減が可能である。例えば、設計はFPGA中から開始してもよい。しかし、当該設計が十分に証明され、十分な高容量に到達した後は、ASIC等価物を代替することによって、費用効率が高い場合もある。
【0004】
FPGAに対しASIC等価物を提供する既知の方法では、起動用FPGAと同一のLEの基本的な機構を有するASICアーキテクチャを採用している。例えば、FPGAがLEの列を含んでいる場合、各列は4入力LUT(4−LUT)およびレジスタを有し、ASICは4−LUTおよびレジスタを含むLEの類似した列を備える。続いて、ASIC中の所定の層は、特定のユーザの設計のためにカスタマイズされて、LEを効果的に「プログラム」し、LE間の所要の相互接続ルーティングを提供する。
【発明の概要】
【発明が解決しようとする課題】
【0005】
FPGAのASIC等価物を提供する上述の方法は多くの利点を有する。しかし、改善が常に求められている。例えば、大部分のユーザ設計はFPGA上の全回路を利用していない。FPGA回路の一部は、一般に使用されていない。4−LUTは、2入力または3入力関数を提供するためにのみ、使用してもよい。あるいは、一部のLE中ではLUTまたはレジスタ(両方ではない)を使用してもよい。これらのいずれの場合も、完全に利用されていないLE中の回路の相当量が、事実上無駄に消費されている。同一の基本的なLE構造が、等価ASICの基本を形成する場合、同一の無駄な消費がASIC中に反復される。
【課題を解決するための手段】
【0006】
上述に鑑みて、本発明によるASICアーキテクチャは、等価FPGA中のLEとは同一でない論理素子を含む。本明細書中ではこれらASIC論理素子は、ハイブリッド論理素子(HLE)として言及されている。各HLEは、比較的小さい、汎用的な、組み合わせ論理コンポーネント(例:1入力LUTすなわち1−LUT)、比較的小さな論理ゲートアレイ(例:2個の2入力NANDゲート)、およびいくつかの関連する相互接続またはルーティング・リソースを有していてもよい。HLE(例:1−LUTおよびNANDゲート)中の演算回路の量は、関連するFPGA LE中の演算回路の量よりもはるかに小さい。HLE中のルーティング・リソースの少なくともごく一部の態様では、HLEへの入力接続、HLEからの出力接続、およびHLEの内部接続等を確立する目的のために、プログラマブル(例えば、バイアを使用してマスク・プログラマブル)である。一部の比較的十分利用されていないFPGA LEに対しては、単一のASIC HLEがLEの関数を実行可能である。LEの利用率がより大きい場合、数個の隣接した(あるいは少なくとも近傍に存在する)HLEが、LEの関数を等価的に実行するために必要とされることがある。いずれの場合も、LEの等価物を提供するために、LEの関数を実行するために必要なHLEと同数のHLEのみが使用される。大部分の設計ではLEの多くが完全に利用されていないので、FPGAと等価としての使用のためにASIC上に提供されるHLEの数は、全LEが完全に利用された場合に必要とされるであろうHLEの数よりも有意に少ない。これは、各FPGA LEに対し完全機能を持つLEを使用するASICと比較して、ASICの規模が有意に低減される。
【0007】
少なくともかなりの程度まで、各LEと、等価のHLEまたはHLE群との間には、好適には1対1の対応がある。この対応によって、ユーザの論理を再合成することなしに、FPGA設計から等価のASICへの変換、およびその逆の変換が促進される。このような再合成を回避することによって時間および費用の節約が可能であり、(FPGAまたはASICのいずれかが適切に機能することが実証されていると仮定すれば、)ASICおよびFPGAの等価物が略同一におよび欠陥なしに機能することが、一層確実に保証される。
例えば、本発明は以下の項目を提供する。
(項目1)
第2および第3の選択回路入力信号のうち一つを選択回路出力信号として選択するために、第1の選択回路入力信号を使用する選択回路、
第1および第2の論理回路入力信号の論理関数である論理回路出力信号を供給する論理回路、および
第1および第2の論理回路入力信号のうち少なくとも一つを、選択回路出力信号または論理素子外の信号から取り出すことを可能にする、プログラマブル相互接続回路
を含む、論理素子回路。
(項目2)
選択回路がマルチプレクサ回路を含む、項目1記載の回路。
(項目3)
論理回路がNAND回路を含む、項目1記載の回路。
(項目4)
プログラマブル相互接続回路がマスク・プログラマブル回路を含む、項目1記載の回路。
(項目5)
プログラマブル回路がプログラマブル・バイア回路を含む、項目1記載の回路。
(項目6)
第1、第2、第3の選択回路入力信号のうち一つを論理回路出力信号から取り出すことを可能にする、さらに別のプログラマブル相互接続回路をさらに含む、項目1記載の回路。
(項目7)
第1、第2、第3の選択回路入力信号のうち少なくとも一つを論理素子外の信号から取り出すことを可能にする、さらに別のプログラマブル相互接続回路をさらに含む、項目6記載の回路。
(項目8)
第1および第2のさらに別の論理回路入力信号の論理関数であるさらに別の論理回路出力信号を供給する、さらに別の論理回路をさらに含む、項目1記載の回路。
(項目9)
第1および第2のさらに別の論理回路入力信号のうち少なくとも一つを、選択回路出力信号または論理素子外の信号から取り出すことを可能にする、さらに別のプログラマブル相互接続回路をさらに含む、項目8記載の回路。
(項目10)
第1および第2のさらに別の論理回路入力信号のうち少なくとも一つを、論理回路出力信号から取り出すことを可能にする、さらに別のプログラマブル相互接続回路をさらに含む、項目8記載の回路。
(項目11)
第1および第2のさらに別の論理回路入力信号のうち少なくとも一つを、選択回路出力信号または論理素子外の信号から取り出すことを可能にする、追加的なプログラマブル相互接続回路をさらに含む、項目10記載の回路。
(項目12)
それぞれが項目1記載の複数の論理素子回路を含む、集積回路デバイス。
(項目13)
少なくとも数個の論理素子回路それぞれからの信号を、論理素子回路に隣接する別の論理素子回路に供給することを可能にする、さらに別のプログラマブル相互接続回路をさらに含む、項目12記載のデバイス。
(項目14)
プログラマブル相互接続回路はデバイス層の第1サブセット中に提供され、さらに別のプログラマブル相互接続回路もまたデバイス層の第1サブセット中に提供される、項目13記載のデバイス。
(項目15)
少なくとも数個の論理素子回路それぞれからの信号を、論理素子回路に隣接しない別の論理素子回路に供給することを可能にする、追加的なプログラマブル相互接続回路をさらに含む、項目14記載のデバイス。
(項目16)
追加的なプログラマブル相互接続回路が、少なくとも部分的に、デバイス層の第1サブセット中にはないデバイス層中に提供されている、項目15記載のデバイス。
(項目17)
それぞれがFPGAの単一のLEの関数能力の一部を提供可能であり、必要に応じて組み合わせ可能で任意の単一のLEによって実行される概ねすべての関数を実行する、複数のHLEを含むASICアーキテクチャを使用して、FPGAと略等価なASICを設計する方法であって、
ユーザの論理設計を合成する工程と、
合成された論理設計をFPGA設計にマッピングする工程と、
FPGA設計の各LEを、ASIC設計の単一または複数のHLEに再マッピングする工程と
を含む方法。
(項目18)
マッピングが、FPGA用ネットリストおよび配置情報を生成することを含む、項目17記載の方法。
(項目19)
再マッピングが、FPGA用ネットリストおよび配置情報上で実行される、項目18記載の方法。
(項目20)
再マッピングが、ASIC用ネットリストおよび配置情報を生成することを含む、項目17記載の方法。
(項目21)
再マッピングが、ASIC用ネットリストおよび配置情報を生成することを含む、項目19記載の方法。
(項目22)
項目17記載の方法を使用して作成される、ASIC。
(項目23)
再マッピングが、単一のHLEによっては実行不可能な任意のLEの関数を実行するために、互いに隣接した複数のHLEを使用することを含む、項目17記載の方法。
(項目24)
再マッピングが、FPGA LEの関数を単一または複数のHLEに再マッピングする際に、論理圧縮を採用することを含む、項目17記載の方法。
(項目25)
再マッピングが、各FPGA LEの(1)論理関数および(2)レジスタ関数を、異なるHLEまたはHLE群のそれぞれにさらに再マッピングすることを含む、項目17記載の方法。
(項目26)
それぞれがFPGAの単一のLEの関数能力の一部を提供可能であり、必要に応じて組み合わせ可能で任意の単一のLEによって実行される概ねすべての関数を実行する、複数のHLEを含むASICアーキテクチャを使用して、機能的に略等価なFPGAおよびASICを設計する方法であって
ユーザの論理設計を合成する工程と、
合成された論理設計をFPGA設計にマッピングする工程と、
合成された論理設計をASIC設計にマッピングする工程と
を含む方法。
(項目27)
FPGA設計へのマッピングが、FPGA用ネットリストおよび配置情報を生成することを含む、項目26記載の方法。
(項目28)
ASIC設計へのマッピングが、ASIC用ネットリストおよび配置情報を生成することを含む、項目26記載の方法。
(項目29)
項目26記載の方法を使用して作成される、ASIC。
(項目30)
ASIC設計へのマッピングが、FPGA LEの関数を実行するためにHLEを使用することを含む、項目26記載の方法。
(項目31)
上記使用が、単一のHLEによっては実行不可能な任意のLEの関数を実行するために、互いに隣接した複数のHLEを採用することを含む、項目30記載の方法。
(項目32)
上記使用が、単一または複数のHLEによるFPGA LEの関数の実行を促進するために、論理圧縮を採用することを含む、項目30記載の方法。
(項目33)
上記使用が、FPGA LEの(1)論理関数および(2)レジスタ関数を実行するために、異なるHLEまたはHLE群のそれぞれを使用すること、
を含む、項目30記載の方法。
(項目34)
それぞれがFPGAの単一のLEの関数能力の一部を提供可能であり、必要に応じて組み合わせ可能で任意の単一のLEによって実行される概ねすべての関数を実行する、複数のHLEを含むアーキテクチャを有するASICと等価な、FPGAを設計する方法であって、
ユーザの論理設計を合成する工程と、
FPGA LEの関数を実行するためのHLEの使用に基づいて、合成された論理設計をASIC設計にマッピングする工程と
を含む方法。
(項目35)
それぞれがFPGAの単一のLEの関数能力の一部を提供可能であり、必要に応じて組み合わせ可能で任意の単一のLEによって実行される概ねすべての関数を実行する、複数のHLEを含むアーキテクチャを有するASICと等価な、FPGAを設計する方法であって、
ユーザの論理設計を合成する工程と、
FPGA LEの関数を実行するためのHLEの使用に基づいて、合成された論理設計をASIC設計にマッピングする工程と
ASIC設計をFPGA設計に再マッピングする工程と
を含む方法。
(項目36)
マッピングが、ASIC用ネットリストおよび配置情報を生成することを含む、項目35記載の方法。
(項目37)
再マッピングが、FPGA用ネットリストおよび配置情報に基づいて実行される、項目36記載の方法。
(項目38)
再マッピングが、FPGA用ネットリストおよび配置情報を生成することを含む、項目35記載の方法。
(項目39)
再マッピングが、FPGA用ネットリストおよび配置情報を生成することを含む、項目37記載の方法。
(項目40)
項目35記載の方法を用いて形成される、FPGA。
(項目41)
マッピングが、単一のHLEによっては実行不可能な任意のLEの関数を実行するために、互いに隣接した複数のHLEを使用することを含む、項目35記載の方法。
(項目42)
マッピングが、単一のHLEによっては実行不可能な任意のLEの関数を実行するために、どのHLEが同時に使用中であるかを記録することをさらに含む、項目41記載の方法。
(項目43)
再マッピングが、それぞれのLEに対して再マッピングするHLE群を特定するために、上記記録することを使用することを含む、項目42記載の方法。
(項目44)
マッピングが、少なくとも数個のFPGA LEの関数を実行するためにHLEを使用する際に、論理圧縮を採用することを含む、項目35記載の方法。
(項目45)
マッピングが、各FPGA LEの任意の(1)論理関数および(2)レジスタ関数を、異なるHLEまたはHLE群のそれぞれに、さらにマッピングすることを含む、項目35記載の方法。
(項目46)
完全に利用されていれば、FPGAの完全に利用されたLEの能力のうち一部のみを実行する能力をそれぞれが有し、各LEの関数がHLEまたはHLE群の一つにそれぞれマッピングされる複数のASICを含む、プログラムされたFPGAと機能的に等価なASIC。
(項目47)
組み合わせ論理能力が、1入力ルックアップ・テーブル回路、2個の2入力NANDゲートもしくは該NANDゲートの論理等価物を実質的に含む論理素子回路。
(項目48)
ルックアップ・テーブル回路が、2個の選択可能な入力および選択制御入力を有するマルチプレクサ回路を含む、項目47記載の回路。
(項目49)
ルックアップ・テーブル回路およびNANDゲートもしくはその論理等価物へ、から、および間で、信号を選択的に伝達するプログラマブル相互接続回路を追加的に含む、項目47記載の回路。
(項目50)
出力バッファ回路を追加的に含む、項目47記載の回路。
(項目51)
ルックアップ・テーブル、またはNANDゲートもしくは論理等価物のうち少なくとも一つの出力信号を、出力バッファ回路へと選択的に供給するプログラマブル相互接続回路を追加的に含む、項目50記載の回路。
(項目52)
プログラマブル相互接続回路が少なくとも部分的にマスク・プログラマブルである、項目49記載の回路。
(項目53)
プログラマブル相互接続回路が少なくとも部分的にバイア・プログラマブルである項目47記載の回路。
(項目54)
それぞれが項目47記載の、複数の論理素子回路を含むASIC。
(項目55)
機能的に等価なFPGAの各論理素子の概ねすべての関数が、論理素子回路もしくは論理素子回路群のうち一つによってそれぞれ実行される、項目54記載のASIC。
(項目56)
FPGAのLEに合成された論理を実装可能なHLEを含む、ストラクチャードASIC。
(項目57)
論理がLEにマッピングされ、HLEに再マッピングされる、項目56記載のストラクチャードASIC。
(項目58)
各LEの全関数がHLE単独にまたはHLE群によって実行される、項目56記載のストラクチャードASIC。
【図面の簡単な説明】
【0008】
【図1】既知の例示的なFPGA LEの簡略化した概略ブロック図である。
【図2】既知の例示的なASICと等価なFPGA LEの簡略化した概略ブロック図である。
【図3】本発明による例示的なASIC HLEの簡略化した概略ブロック図である。
【図4】本発明による、ASIC用の例示的なプログラマブル相互接続構造の簡略化した斜視図である。
【図5】本発明による、ASIC用の例示的なプログラマブル相互接続構造の簡略化した斜視図である。
【図6】本発明による、ASIC用の例示的なプログラマブル相互接続構造の簡略化した正面図である。
【図7】本発明による、ASIC用の例示的なプログラマブル相互接続構造の簡略化した正面図である。
【図8】本発明による、ASIC用の例示的なプログラマブル相互接続構造の簡略化した斜視図である。
【図9】本発明による、ASIC用の例示的なプログラマブル相互接続構造の簡略化した斜視図である。
【図10】本発明による、例示的な、プログラムされたASIC HLEの簡略化した概略ブロック図である。
【図11】本発明による、さらに別の例示的な、プログラムされたASIC HLEの簡略化した概略ブロック図である。
【図12】本発明による、例示的な、プログラムされたASIC HLE対の簡略化した概略ブロック図である。
【図13】本発明による、さらに別の例示的な、プログラムされたASIC HLE対の簡略化した概略ブロック図である。
【図14】本発明による、例示的な追加のプログラマブル相互接続回路を備えた、数個の例示的なASIC HLE対の簡略化した概略ブロック図である。
【図15】本発明による、ASIC上のHLEの例示的な配置を示す簡略化したブロック図である。
【図16】本発明による、ASIC上のHLEの使用の例を示す簡略化したブロック図である。
【図17】本発明による、ASIC上の追加のプログラマブル相互接続回路の例を示す簡略化した概略ブロック図である。
【図18】本発明による、例示的な方法のフローチャートである。
【図19】本発明による、例示的な方法のさらに別のフローチャートである。
【図20】本発明による、例示的な方法のさらにさらに別のフローチャートである。
【図21】本発明による、HLEの所定の可能なコンポーネントの例示的な使用を示す概略ブロック図である。
【図22】本発明による、HLEの所定の可能なコンポーネントの例示的な使用を示す概略ブロック図である。
【図23】本発明による、HLEの所定の可能なコンポーネントの例示的な使用を示す概略ブロック図である。
【発明を実施するための形態】
【0009】
本発明のさらに別の特徴、特性、種々の利点については、添付図面および以下の詳細な説明によってより明らかになる。
【0010】
図1に例示的な既知のFPGA LE10を示す。LE10は、4−LUT部12およびレジスタ部14を備える。4−LUT部は16個のプログラマブル・メモリ(例:RAM)セル20−0から20−15を備える。各対において、RAMセル20の出力は、8個の2入力マルチプレクサ(マックス)22−0から22−7の入力へと供給される。4−LUTの入力Aは、各マックス22が(RAMセル20から)どの4−LUTの入力を出力として選択するかを制御する。例えば、入力Aが論理1である場合、各マックス22はその上側入力を出力として選択する。入力Aが論理0である場合、各マックス22はその下側入力を出力として選択する。各対において、マックス22の出力は、4個の2入力マックス24へと供給される。4−LUTの入力Bは、各マックス24がどの入力を出力として選択するかを制御する。再び、Bが論理1の場合、マックス24は上側入力を出力に選択する。Bが論理0の場合、マックス24は下側入力を出力に選択する。各対において、マックス24の出力は、2個の2入力マックス26へと供給される。4−LUTの入力Cは、各マックス26がどの入力を出力として選択するかを制御する。この論理は、マックス22、24の論理と類似している。マックス26の出力は、2入力マックス28へと供給される。4−LUTの入力Dは、(入力A−Cと同じ論理にしたがって)マックス28がどの入力を出力するかを制御する。
【0011】
マックス30の出力信号は、ドライバ回路30に供給される。ドライバ30の出力は、LE10の単一の出力(組み合わせ出力32)である。ドライバ30の出力もまた、マックス40の単一の入力端末に供給される。マックス40に対する他の入力は、LE10に対する他の入力となる。マックス40は、(例えば、プログラマブルRAMセル42によって、)レジスタ44のデータ入力端末に適用するために、マックス40の入力のいずれかを選択するよう制御可能である。この配置によって、LUT12の出力を登録するためにレジスタ44が必要ない場合は、レジスタ44を、別の信号を登録するために使用することができる。レジスタ44の出力は、LE10の登録済出力46である。
【0012】
図2は、(出力の登録がない)2入力ANDゲートとして構成された、想定可能な既知の、LE10のASIC等価物を示している。図2に示す素子は、図1に示す素子と類似しており、図1の参照番号から100増加した参照番号を有する。こうして、ASIC LE110中では、入力CおよびDはAND処理され、未登録のLE出力132を生成する。マックス122−0、122−1の入力は、論理1に接続されている。他のマックス122の入力は、論理0に接続されている。この構成は、入力AおよびBを「ドントケア」入力とする効果を有する。入力CおよびDだけが出力に影響を及ぼす可能性があり、出力がCおよびDのANDとなるような影響を及ぼす。このLE110を使用することは、Xが配置された場所にある素子が事実上未使用であることを意味している。特に、素子122、124、126−1、140、144はすべて事実上未使用である。したがって、このような利用率の低いFPGA LE10の等価物を作成するために提供されるASIC回路に含まれるこれら全素子にとって、相当な浪費量である。論理圧縮(例えば、2004年6月4日出願Foo米国特許出願第 号(代理人整理番号174/309(A877)を参照)を使用して、ASIC LE110に提供しなければならない回路の量を低減することができる。例えば、第1のマキシングレベル(122)は、入力Aおよびその補数を選択的に使用することによって、次のマキシングレベル(124)への入力として除去することが可能である。それにもかかわらず、十分に利用されていないFPGA LE10が実装中である場合はつねに、このような圧縮されたASIC LE110であっても相当量の回路が浪費される。
【0013】
図3は、浪費量の少ないFPGA LEのASIC等価物を提供する際の、本発明にしたがって構成された、単独または複数の使用のための、いわゆるハイブリッド論理素子(HLE)200の例示的な実施形態を示す。図3に示す特定のHLE構造についてこの先ある程度詳細に記述する。しかし本明細書では基本的な要点として、本実施形態が一つの例にすぎないこと、およびこの構成には、本発明の範囲および精神から逸脱することなく多くの変形が可能であることが強調される。
【0014】
HLE200は、2入力マルチプレクサ(マックス)210、2個の2入力NANDゲート220a、220bと、2個の反転バッファまたはドライバ230a、230bと、後続の数文中により詳細に説明する相互接続リソースとを備える。図3に示す相互接続リソースは、マックス210の上流にある複数の垂直導体240と、マックス210とNANDゲート220との間の複数の垂直導体250と、NANDゲート220とドライバ230との間にある垂直導体260(1個または複数)と、ドライバ230の下流にある複数の垂直導体270とを含む。図3に示す相互接続リソースはまた、数個の水平導体(例:導体310、320、330、340)を備える。導体240、250、260、270、310、320、330、340は、比較的汎用目的の導体であり、このことはすなわち、数個の異なるソースのうち任意のソースと数個の異なる送信先のうち任意の送信先との間での任意の数個の異なるリンクを作成するために使用することができる。これらの比較的汎用目的の導体に加え、HLE200は数個のより特定目的の導体を備える。例えば、導体350はマックス210に制御入力を供給することのみに使用される。(もっとも、以下詳述するように、該制御入力信号に対して数個のソースのうち任意のソースが可能であり、導体350は所望に応じて他の用途にも使用可能である。)さらに別の例として、導体360a、360bはマックス210への2個の選択可能な入力を供給することのみに、(この場合も、数個のソースのうち任意のソースから、また所望に応じて、想定可能な追加的な用途とともに)使用される。また別の例として、導体370はマックス210の出力を伝達することのみに使用されるが、出力は数箇所の宛先のうち任意の宛先に送ることができる。ここまでは、一部の導体は比較的汎用目的の導体として記載されてきたが、他の導体はより専用目的の導体として記載されており、これら説明的概念は便宜目的でのみ使用される。これら説明的概念は限定を目的としていない。またこの2種類の間に明確な区別はなく、両方の種類が存在する必要性もない。
【0015】
図3において導体の相互接続における非中空の小さな点は、交差する導体間の接続が所望により形成されたり、形成されなかったりすることができる位置を示している。したがって、上記接続はプログラマブルである。好適な実施形態において、上記接続は、バイア・ホールを使用してマスク・プログラマブルである。該バイア・ホールは、交差する導体を含有する層同士の間に存在する単一または複数の層に含まれている場合も、含まれていない場合もある。(本明細書では、全般にバイア・プログラミングについて言及しているが、これは例にすぎず、所望に応じて代わりに、他の数個のプログラミング技術のうち任意の技術を使用可能である。使用可能なプログラミング技術の他の例は、本明細書中に後述する。)図4は、HLE200を備える集積回路デバイス上の異なる金属層中にそれぞれ存在する、交差する導体240および320を示す。図4では、これら導体はバイア420によって、2枚の金属層間に存在する絶縁層を介して互いに電気的に接続されている。再び図5に、絶縁層を介するバイアのない同一の構造が示されている。したがって図5では、導体240および320は互いに接続されない。(導体240または320が高い側の金属層または低い側の金属層のいずれに存在するかいなかは、任意であり、設計上の選択の問題である。)
【0016】
図3中のX430は、所望に応じ、導体部の互いのプログラマブルな、または非接続が可能である。上述の非中空の小さな点410に対する技術と同一の技術選択が、接続430に適している。例えば、図6は、マスク・プログラマブル・バイア440によってブリッジ導体450へと接続される代表的な導体320の2つの部分を示している。したがって、導体320の2つの部分は、バイア440およびブリッジ導体450を介して互いに電気的に接続されている。図7は同一の構造を示しているが、バイア440は存在しない。したがって、導体部は互いに接続されていない。むしろ、導体部は互いに電気的に絶縁されている。
【0017】
図3における大きく開口した円または楕円460は、この円または楕円を有する導体が、HLE200を備えるデバイス上の高レベルの相互接続リソースと呼ばれるもの(図3には示されていない)にプログラマブルに接続可能な位置を示している。このより高いレベルの相互接続リソースは、互いに隣接せず、比較的近傍にもない成分(例:HLE、デバイス入/出力(I/O)ポート等)間の信号を伝達するなどの目的のために使用してもよい。「より高いレベル」という句は、必ずしも物理的に高いレベルであることを意味しているのではなく、単に階層的により高いレベルにあることを意味する。プログラマブル接続460は、上述の方法のうち任意の方法(例:プログラマブル接続410用の方法)を使用して行うことができる。例えば、図8はマスク・プログラマブル・バイア470によって、より高いレベルの導体510へと接続される代表的な導体360を示す。図9もまた、同一の構造位置460を示すが、導体360とより高いレベルの導体520との間の接続はない。
【0018】
図3において、異なる軸に沿って延出するよう示されている導体は、導体のうち一つが別の導体によって途切れている場合(あるいは、両導体が互いに他方の導体によって途切れている場合)、常に互いに接続している。交差部において小さい点なしに互いに交差している導体は、好適には、交差部では接続可能でない。
【0019】
特定の外部接続を持つ所定の導体が、図3に示されている。このように最上部の導体310は、常にVCC(例:論理1)に接続するよう示されている。図3中の、最上部の次の導体310は、常にVSS(例:論理0)に接続されるよう示されている。導体312、314、316は、記載されたHLEの上方、左方および下方に隣接する他のHLEからの入力接続として示されている。導体332は、記載されたHLEの上方にあるHLEに入力316を供給する。導体272は、記載されたHLEの右方にあるHLEに、入力314を供給する。導体342は、記載されたHLEの下方にあるHLEに、入力312を供給する。隣接するか近傍にあるHLE間のいわゆる「スニーク」接続は、デバイスの相互接続リソースの常設の固定部分となりうる。プログラマブル接続410がスニーク接続の一端または両端においてプログラムされた方法の結果、スニーク接続が実際に使用されるかどうか、およびどのように「スニーク」接続が使用されるかが、プログラマブルである。
【0020】
導体240、250等の記載された端部におけるX430は、導体が、記載されたHLEに隣接する他のHLE中に存在する類似の導体にプログラマブルに接続可能な位置を示している。
【0021】
単一または比較的少数であるが適切な数の隣接するか近傍にあるHLE200は、図1におけるFPGA LE10等によって実行可能な、任意の単数または複数の関数を実行するために使用可能である。それぞれの場合において、LEの(単数または複数の)関数を実行するために必要なHLEと同数のHLEのみが、FPGA LEのASIC等価物を生成するために採用されている。
【0022】
図10は、A XOR Bである出力Yを供給するために使用されているHLE200aをある程度簡略化した形態(あるいは、少なくともHLE200(図3)のより簡略化した表示形式)を示す。この例において実際使用されているHLE200aの相互接続リソースは、非常に太い線を用いて描かれている。存在するがこの例では使用されていない他の相互接続リソースは、細い線で表示されている。入力Aは、マックス210の上側入力端末へと供給される。例えば、入力Aは、図3中の対応するマックス入力IN0上に表示されるプログラマブル接続460(図3)を経由して、HLE200aに入力されてもよい。このように、入力Aは、デバイスのより高いレベルの相互接続回路中の導体(図8の510等)から入力可能である。図3では、入力AはNANDゲート220bの両入力端末へと供給される。このことによって、図10に示すように、NANDゲート220bはインバータとして作動する。再び、これら入力Aはプログラマブル接続460を介して、図3中のNANDゲート220bの左方に入力されてもよい。インバータ220b(図10)の出力は、(例えば、導体322、垂直導体240のうち一つへのプログラマブル接続410(図3)、この垂直導体の一部、導体360bへの別のプログラマブル接続410、およびこの導体360bの一部を介して、)マックス210の下側入力へとフィードバックされる。
【0023】
入力Bは、導体350を介してマックス210の制御入力へと供給される。例えば、図3中の導体上に示すプログラマブル接続460を介して、入力Bを導体350に供給してもよい。このように入力Bは、デバイスのより高いレベルの相互接続回路からHLE200aへと入力されてもよい。入力Bが論理0である場合、マックス210は2個の選択可能な入力リード線のうち上側(すなわち導体360a)の上にある信号を出力する。入力Bが論理1である場合、マックス210は2個の選択可能な入力リード線のうち下側(すなわち導体360b)にある信号を出力する。したがって、マックス210の出力信号はA XOR Bである。
【0024】
マックス210の出力信号はNANDゲート220a(図3)の両方の入力へと供給され、したがってNANDゲート220aはインバータとして作動する。NANDゲート220aの出力は反転ドライバ230aへと供給され、反転ドライバ230aは再び信号を反転させる。したがって、このように使用される素子220a、230aの複合効果は、マックス210の出力信号、すなわちY(=A XOR B)用の非反転出力ドライバの供給である。
【0025】
NANDゲート220aの2個の入力端末へのマックス210の出力信号のルーティングは、導体370の一部、この導体から垂直導体250のうち一つへのプログラマブル接続410(図3)、この垂直導体250の一部、およびこの導体からNANDゲート220aへの2個の入力へのさらに2個のプログラマブル接続410を介して、実行可能である。ドライバ220a/230bのY出力は、インバータ230aの出力リード線上にあるプログラマブル接続460を介して、より高レベルの相互接続回路へと接続可能である。
【0026】
こうして、図10はリソースの浪費が比較的少ない、単一のHLE中で実行可能な論理関数の一例を示す。FPGA LEと同等のASIC LE中に存在するこの関数の実行は図1および2に示すものと類似しているが、この実行を行うと(この場合、図2に関する議論の終了時までに論じた種類の論理圧縮を行うものの)未使用のおよびこのために無駄となったASIC LEリソースの相当の部分が残る。本明細書に示すHLE構造は、はるかに無駄の少ない実装を提供する。
【0027】
図11は、単一のHLE200b(この場合も、図3中のHLE200様のものまたは少なくとも概念的にこれに類似したもの)において実装される論理関数のさらに別の例を示す。図11において実装された関数はY=(A AND C’)OR(B AND C)である。図11で使用される導体および素子は、太線で示されている。図11で使用されない導体および素子は、細線で示されている。信号がHLE200bへ、HLE200bへを介して、およびHLE200bへからルーティングされる態様は、上述の議論から明らかであり、したがってさらなる詳細な記載は必要ない。
【0028】
図12は、2個の隣接した複数のHLE200c、200bに実装された4入力組み合わせ論理関数の例を示す。各HLEは、図3に中のHLE200と類似していても、あるいは、少なくとも概念的に類似してもよい。実装された関数はF=((A(BC+B’D)+A’)’である。この関数を実装するために使用された素子および導体は、図12中で太線を使用して示される。使用されない素子および導体は、細線を用いて示される。図12は、単一のHLEから隣接するか近傍にあるさらに別のHLEへと信号を伝達するためのスニーク接続の使用を例示している。この場合、HLE200c中にあるマックス210の出力信号は、図3中の272/314等のスニーク接続を介してHLE200dへと伝えられる。(マックス210の出力が、スニーク右出力272へと、さらにスニーク右出力272から右方のHLEのスニーク入力314へと、さらにこの入力から右方のHLE中のマックス210の入力へとどのようにルーティングされるかは、図3および本明細書中の先の言及より明らかである。)図12は、またHLE200d中の素子210、220aへのVCC入力(論理1)の使用を示している。このルーティングは、図3に示す導体310のうち一つおよびこの導体から素子210、220aの所望の入力へのプログラマブル・ルーティング(例:プログラマブル接続410)を使用して実行可能である。
【0029】
図12は、水平方向に隣接した複数のHLE間での(少なくとも明示的には)図3に示していないいくつかの追加的な相互接続を示す。この接続は、各HLEとその右方のHLEとの間のより広範な接続である。図3は、このようなルーティングにはスニーク接続のみが利用可能であることを示唆している。しかし、図12は、3つの信号(マックス210の出力、NANDゲート220a、220bの出力)が、HLEルーティング・リソースの階層レベルにおいて、各HLEからその右方のHLEへと流入可能であることを示している。この追加的な比較的直接的なHLE間ルーティングは多くの異なる方法のうち単一の例にすぎず、本発明にしたがって複数のHLEを構築することが可能である。もちろん、このような追加的な直接接続がHLEレベルで提供されていない場合、より高いレベルの相互接続回路を使用して類似の接続を行うことが可能である。しかし現在では、比較的直接的なHLE間の(スニーク接続を含む)十分なルーティング能力を提供することが、FPGA LEの任意の(単数または複数の)関数を実行するHLE群によって必要とされるHLE間接続の少なくとも相当量の部分(好適には少なくとも大部分の)を可能にするためには好ましいと考えられている。このため、より長距離の相互接続のためにより高いレベルのルーティングを留保しておくことができる。
【0030】
図13は、フリップフロップまたはレジスタ(典型的なEPGA LEの能力の一つ)を供給する2個の隣接するHLE200e、200fの使用の例を示す。ここでも、HLE200e、200fはそれぞれ図3に示すHLE200と類似している(か、少なくとも概念的に類似している)。フリップフロップを供給するために使用される素子および導体は太線で表示される。使用されない構造は図13では細線で示される。図13中のすべての接続、あるいはどのようにこれら接続が達成されるかについての情報は、図および先の記載より明らかであるため記載する必要はない。登録される信号Dは、デバイスのより高いレベルの相互接続回路から、あるいはより低いレベルでのさらに別の隣接するか近傍にあるHLEから、プログラマブル接続460(図3)を介して、HLE200eへと入力されると言えるであろう。フリップフロップを測定するクロック信号CLKについても同じことがあてはまる。(この信号は、HLE200e、200fの両方によって必要とされる。)あるいは、図3中のVCCおよびVSSに対して示すような態様で、CLKが各HLEに入力されることもある。図13は、上下に隣接するHLE中の同様の導体から、導体250のプログラマブル接続430を介してHLE200e、HLE200fのそれぞれに入力される。上記信号は最終的には、図3においてVCCおよびVSS等の信号が入力されるように、あるいはデバイスのより高いレベルの相互接続回路へのプログラマブル接続(図3)を経由して、HLEアレイに入力されてもよい。フリップフロップの登録済の出力Q、Q’は、よりプログラマブルな接続460を介してデバイスのより高いレベルの相互接続に入力することができる。あるいは、この出力は、より低いレベルの接続を介して、隣接するか近傍にあるHLEに入力されてもよい。
【0031】
図14は、数個の隣接するHLE200g、200h、200i、200jを、所定の(しかし必ずしもすべてでない)比較的直接的なHLE間の接続リソースを強調して示している。図14に示す実施形態では、HLE間相互接続リソースは、HLE200hのNANDゲート220aからその右方のHLE200jへの(太い破線で示す)直接接続222を含む。図14に示すさらに別の直接接続は、HLE200h中のマックス210の出力からその右方のHLE200jへの(太い破線で示す)接続212である。図示されるさらにさらに別の直接接続は、(太い実践で示す)スニーク接続ネットワーク214であり、この接続はHLE200hのスニーク出力から、HLE200g、200i、さらにはHLE200jの右方にある(図示しない)HLEへと延出する。本実施形態では、スニーク出力は導体212、222のいずれかからプログラマブルに選択可能として示されているが、該信号には他のソースも同等に利用可能である。図14で強調表示される(スニーク接続を含む)全HLE間接続リソースは、HLE内接続リソースに使用されるものと同じレベルの金属内に実装可能であるため、より長距離の相互接続に典型的に使用されるより高いレベルの相互接続回路へのリソースは必要としない。
【0032】
図15は、集積回路デバイス500上のHLE200の例示的な配置を示す。図15中のHLE200は図3または本明細書中の他の図に示すように構成されるか、あるいは、本明細書の任意の箇所で言及される修正を含んでいてもよい。図15に示す例示的な配置において、HLE200は、交差する行と列とからなる2次元アレイ中にあるデバイス500上に配置されている。デバイス500は、(図示しない)I/Oブロック、メモリブロック等の他の回路を含んでいてもよい。したがって、本発明によるASICは基本的な回路機構または構成(例:上述の図15に示すようなHLEの2次元アレイ)を持っているという意味において好適には「ストラクチャードASIC」であり、このASICに対してカスタマイズ可能な修正および/または追加が行われる(例:HLE内および/または複数のHLE間の相互接続)。デバイス500がFPGAのASIC等価物として使用される場合、デバイス500には一般にHLE200の全数が供給される。このHLE200の全数は、FPGA上のLEの数と、単一のFPGA LEの全能力を再生成するために必要なHLE200の最大数との積より少ない。この理由は、各FPGA LEの(単数または複数の)関数を実行するために必要なだけの数のHLEが使用され、またこの目的のために、多くの場合HLEの最大数よりも少ないHLE数が必要である。この点に関する所定の側面は、説明を進めるにつれより明らかとなるであろう。
【0033】
図16は、デバイス500上のHLE200が、等価FPGA中のLEの(単数と複数の)関数を実行するために、単独またはグループで一緒にどのように使用されるかを示している。図16では、ともに使用される隣接するか近傍にあるHLE200は同様な態様で陰影が付けられているが、他の隣接するか近傍にあるHLEに使用される陰影とは異なっている。参照をしやすくするために、図16中のHLEの列は1、2、3等と番号付けされ、HLEの行はA、B、C等と符号付けされている。これらの列および行を使用して、図16は以下のようにともに使用されるHLEを示す。
グループ1:A1/A2/B1
グループ2:A3/A4
グループ3:B2/C1/C2/C3
グループ4:B3/B4
グループ5:D1/E1/E2/F1
グループ6:D2/D3/D4
グループ7:F2
【0034】
上記のグループ分けは、以下のような等価FPGA中におけるLEの関数を実行することもある。
グループ1:FPGA LE A1の組み合わせ論理
グループ2:FPGA LE A1のレジスタ関数
グループ3:FPGA LE B1の組み合わせ論理
グループ4:FPGA LE B1のレジスタ関数
グループ5:FPGA LE C1の組み合わせ論理
グループ6:FPGA LE D1の組み合わせ論理
グループ7:FPGA LE E1の組み合わせ論理
直前のリストでは、(図16に示すような)行の文字および列の数字は、二次元FPGA LEアレイにおいてLEを参照付けをしやすくするよう使用される。
【0035】
図16に示すHLE群化の例は単に例示的なものにすぎず、多くの他のグループ化も同様に可能であることが理解される。任意の特定の場合(ASIC)に採用された実際のグループ化は、ASICデバイス500中で同様に実行する必要があるFPGA LE関数によって指示されている。しかし、この先行する2段落中の例示的な一覧は以下のとおりの好適例を提示している。時には、FPGA LEの関数がASIC HLEの同一の一般配置においても実装されることが望ましい。例えば、FPGAの左上隅近傍のLEによって実行される単一または複数の関数は、ASICの対応する位置(例:左上隅近傍)において必要とされる数のHLEによって好適に実行される。
【0036】
また図16と関連して、ASIC500中のHLE200のうちいくつかを使用しない場合もあることを言及すべきである。
【0037】
完全性のため、図17は、ASIC500上の例示的な高いレベルの相互接続回路510、520、530、540、550を示している。例えば、回路520は(ASIC用にカスタマイズされた場合)、ASIC500の左上隅近傍のHLE200のI/Oポート460から、ASICの中央下部近傍のさらに別のHLE200のI/Oポート460(例:入力)への接続を形成するために提供することができる。さらに別の例では、回路550は(ASIC用にカスタマイズされた場合)、ASIC500の左下隅近傍のHLE200のI/Oポート460(例:出力)から、ASICの出力ポート(図示せず)への接続を形成するために提供することができる。任意の所望の配置のHLE200への、200からの、および/またはHLE200間の非ブロッキングの、より高いレベルのルーティングを提供するために、カスタマイズ可能な金属の2層(および介在するカスタム化可能なバイア)を使用することが必要となる場合もある。
【0038】
ASIC設計において望ましいように、本発明によるデバイス中のカスタム化(プログラミング)に必要な層の数は、好適には比較的少ない。本書中にこれまで記載されたカスタム化を要する例示的な層は、主として、HLE等の水平および垂直な相互接続導体間にプログラマブル・バイア420/440を提供する層である。この層はより高いレベルの相互接続回路へのI/Oポートにプログラマブル・バイア470(図8)を提供し、またより高いレベルの相互接続自体を提供する。(あるいは、すべてのI/Oポート・バイア470が常に存在してもよく、あるいは必要であれば(使用される場合)、より高いレベルの相互接続回路に接続され、必要でなければ(使用されない場合)この回路によってバイパスされてもよい。)
【0039】
本発明の重要な利点は、任意のFPGA LEの関数が、(単一または複数の)ASIC HLEへと簡単にマッピングできる(およびその逆も可能な)ことである。このため、ユーザによってプログラムまたは構成されたFPGAのHLEベースのASIC等価物(またはその逆)を、いかなるレベルでもユーザの論理を再合成することなしに提供可能である(先に論じた簡単な再マッピングは別として)。このことは、大部分のストラクチャードASICのメーカーによってFPGA等価物として提供されているものとは有利に対照的である。典型的には、このようなメーカーは、論理構造を構成するために、複雑なマルチゲートまたはゲートアレイ設計を使用する。これらの論理構造のビルディング・ブロックは、FPGAとは類似しない傾向にあるが、プロトタイピングのためにFPGAを使用する場合再合成が必要である。このように柔軟性に欠けるため、FPGA中でプロトタイプされた設計が、ストラクチャードASIC中で構成される設計と機能的に等価であることを確認するための検証活動が追加される。このようなストラクチャードASICと等価なプログラムされたFPGAを生成することが望まれる場合、論理の再合成が必要とされる。本発明は、構成されたFPGAとHLEベースASICとの間でいずれかの方向に移動する際にこのような再合成を避けるものである。さらにHLEは、FPGA LEと構造的に類似するASIC比べて、スペースを節約する。(その理由は、各FPGA LEに対して、プログラムされた対応するFPGA LEの(単数または複数の)関数を実行するために必要な数と同数のHLEだけが使用されるためである。)
【0040】
図18は、等価なLEベースFPGAおよびHLEベースASICの設計を生成するために使用可能な例示的な一連のフロー素子(すなわち、ステップおよび/または結果)を示している。図18は、FPGA設計を最初に生成し、次にこのFPGA設計から略等価なASIC設計を生成することを例示している。ユーザが特定した所望の論理(およびおそらくは他の関数も)がフロー素子610に提示されており、典型的にはRTL(レジスタ転送レベル)等の標準形式で提示されている。フロー素子620においてRTLは、フロー素子610中に供給された比較的一般的な仕様から、特定の特徴を有するFPGA(例:4−LUTおよびレジスタ等を含むLE)中の実装に役立つ形態へと再合成される。フロー素子620は、カリフォルニア州サンノゼのAltera Corporationによって提供されるQuartus II等の、商業的に利用可能なFPGA合成ソフトウェアツールを使用して実行可能である。合成620の結果は、フロー素子630中の特定のFPGA技術へとマッピングされる。
【0041】
次のフロー素子640は、フロー素子630中で検討されていた一般的なFPGA技術中に存在する特定FPGA向けの、ネットリストおよび配置情報へとマッピングするFPGA技術の変換を示している。例えば、フロー素子640は、特定の数および配置のリソースを有するFPGA中において作動する。フロー素子640は、これらのうちどのリソースがユーザの設計が要求する各関数を実行するかを指定する。指定された種類のFPGAは、フロー素子640中で生成される情報からビットストリームを介してプログラマブルである。
【0042】
情報640からプログラムされたFPGAと略等価のHLEベースASICを生成するために、ステップ650が本発明にしたがって情報640に基づいて実行される。ステップ650は、情報640中の関数単位の、関数単位を最低限実行可能な単一のHLEまたは単一のHLE群の1対1マッピングである。本明細書で先に論じられた例において、関数単位は、所定のFPGA LE中のLUTによって実行される組み合わせ論理、または所定のFPGA LEにおけるレジスタのいずれかである。関数単位が組み合わせ論理の場合、ステップ650は論理を、当該関数を実行可能な最小数のHLEへとマッピングする。このことは好適には、必要な選択レベル数を低減するために、先に述べたような論理圧縮を使用することを含んでいる。他の技術を使用して、HLE中の実装のための論理を単純化(最適化)してもよい。関数単位がレジスタの場合、ステップ650は前記レジスタを例えば図13に示す2個のHLEへとマッピングする。ステップ650はまた、どのHLEがどの関数単位を実行するか、および各HLEが割り当てられた関数単位を実装する際の役割を実行するためにどのように構成されるべきかも選択する。例えば、ステップ650は好適には、FPGA上の関数を等価なASICに位置決めする際に、FPGA上の関数の一般配置を保持する。(しかし、一般的な配置を保持することは必ずしも実施する必要はなく、等価なHLEは標的ASICの他の部分でも配置される。)またステップ650は、より低くより直接的なHLE間レベルでは供給不可能な、HLEまたはHLE群への、HLEまたはHLE群からの、および/またはHLEまたはHLE群間のより高いレベルのルーティングも指定する。ステップ650は、起動FPGA中で指定された関数を実装する十分な能力を有するASICの状況において作動すると仮定される。
【0043】
ステップ650の結果660は、(情報640によって指定される)起動FPGAと等価的に機能するASICを構成するために必要なマスクを指定するために使用可能なASIC用ネットリストおよび配置情報である。有利には、情報660は、情報640から直接取り出される。このFPGA−ASIC変換を実行するために、ユーザの起動ロジック仕様(例:ステップ620中のような)の再合成は必要ない。したがって、図18のステップおよび結果にしたがって生成されたFPGAとASICとの間の等価性に欠陥はないはずである。
【0044】
図19は、等価なLEベースASICおよびHLEベースASICを生成する、本発明によるさらに別の技術を示す。フロー素子710、720は、図18中のフロー素子610、620とそれぞれ類似している。ある特定のFPGA技術に入力された合成720の結果は、FPGAデバイスないしデバイスクラスへのユーザの論理設計のマッピング730と、ASICベースデバイスないしデバイスクラスへのユーザの論理設計のマッピング750との両方を生成するために使用される。言い換えれば、単一の共通の論理合成720は、マッピング730、750の両方のベースとして使用される。この使用によって、これら2個のマッピングの論理等価性が保証される。FPGAマッピング730は、ある特定のFPGA設計(すなわち、プログラミングまたは構成)のためのネットリストおよび配置情報740を生成するため使用される。ASICマッピング750は、ある特定のマスク・プログラマブルなHLEベースASICのプログラマブル・マスクの仕様760を生成するために使用される。情報740から生成されたFPGAは、情報760から生成されたASICと論理的に等価であり、逆もまた真である。例えば、ASIC版のみが最初に使用されるが、初期合成720からのFPGAマッピング730またはFPGA情報740のいずれも保持される場合、ASICとのFPGA等価物は、情報740または(情報740を再び生成するための)マッピング730のいずれかを使用して、論理の再合成なしに生成可能である。最初に生成されたマッピング750または情報760が保持されていると仮定すると、最初に生成されたFPGAから後に必要とされる等価なASICへの移動にも同一のことがあてはまる。ASICは、情報760または(情報760を再び生成するためのベースとして使用される)マッピング750のいずれかから、いつでも生成可能である。論理の再合成は必要なく、後に生成されるASICと、最初に生成されたFPGAとの等価性が保証される。
【0045】
図20は、すでに生成されたHLEベースASICからLEベースFPGAを生成する本発明の他の技術を示す。ここで再び、図20中のフロー素子810、820は、図18中のフロー素子610、620(または図19中のフロー素子710、720)とそれぞれ類似している。技術マッピング830は、LEベースFPGAアーキテクチャへと入力されるが、このマッピングは、FPGA LEベースからHLEベースへのマッピングを要するステップを実行するためのHLEライブラリ840を利用している。フロー素子850は、マッピング830から、マスク・プログラマブルなHLEベースASICのプログラマブル・マスクの仕様を生成する。ASICは、この仕様から生成可能である。
【0046】
後に等価なFPGAが必要となる場合、図20に詳しく示す情報850から生成可能である。フロー素子860中では、情報850がHLEベース形態からLEベース形態へと再マッピングされる。この再マッピングは、素子830、840中のLE関数から取り出されたHLEまたはHLE群からの、この関数を当初有していたLEへの1対1マッピングであってもよい。この1対1マッピングを促進するために、情報850は、起動LEから種々の部分がどのように取り出されるかを示す記録を含んでいてもよい。フロー素子860中には論理再合成は必要とされない。素子860から、FPGA用ネットリストおよび配置情報870が発生し、情報850から生成されるASICと論理的に等価なFPGAを生成するために使用してもよい。
【0047】
上述の議論においてすでに少なくとも暗示しているが、技術マッピング830は、ユーザの論理設計を実装するためのどの任意の可能な方法においても、HLEを自由に組み付けできないことをここに明記する。その反対に、マッピング830はHLEを、FPGA
LE中に実装された関数の実装としてのみ使用することに制約されている。これによって、後に情報850を、素子870中のLEベース形態への1対1マッピング860が可能となる。
【0048】
図21(a)−(c)、22(a)−(c)、23は、図3に示すHLE等中に存在するNANDアレイ220および想定可能なその他素子230(あるいは等価回路)を、本発明のさらに別の態様にしたがって(例えばマスク・プログラミングによって)構成する種々の方法の例を示している。図21(a)−(c)は、例えば、インバータを提供する種々の方法を示している。図21(a)では、NANDゲート220のうち1個が、入力の一つが論理1と接続された状態で使用される。図21(b)では、インバータ230のうち1個が使用されている。図21(c)では、両方のNANDゲート220a、220b、もしくは両方のインバータ230a、230bが(HLE中の略マスク・プログラミング相互接続リソースによって)並列に接続され、例えばHLEからのより強力な出力駆動を生成するための単一のより大きなインバータを効果的に提供する。
【0049】
図22(a)−(c)は、非反転バッファを提供する方法を示すいつくかの例を示す。図22(a)では、NANDゲート220a、220bは直列に接続され、各NANDゲートの入力端末の一つが論理1に接続されている。再び、HLEのルーティング・リソースは、NANDゲートを直列に接続するためにマスク・プログラム化される。図22(b)では、インバータ230a、230bは、同様に直列に接続されている。図22(c)では、NANDゲート220a、220bは(例えば図21(a)に示すように)インバータ構成において並列に接続され、単一のより大きな第1のインバータ220a/bを効果的に提供し、インバータ230a、230bは、同様に並列に接続され、単一のより大きな第2のインバータ230a/bを効果的に提供する。図21(c)に示すように、図22(c)中の効果的に大きな素子はHLEからより強力な出力駆動を供給する。
【0050】
図23は、NAND関数を提供するために、NANDゲート220a、220bのうち1つを利用することを示している。
【0051】
図21−23に示す種々の選択しのうちいくつかを選択する理由の一つに、本発明のHLEを採用するデバイス中に存在する種々のHLEからの、異なる量の出力駆動への必要性がありうる。所定の大きさのドライバは典型的には、所定量の寄生ローディングを駆動する能力を有する。ASICのフロー中では、散開量が非常に大きく初期の駆動セルが荷重を駆動できない場合は、駆動強度を高めるために、標準セルまたは金属のプログラマブル・セルを拡大したり、他のドライバ(バッファまたはインバータ)を挿入することが、必要であるか、望ましい場合もある。このことは、規模の拡大またはバッファ/インバータの追加に起因した領域の増加を示唆している。しかし、この発明によるHLEべースASICでは、未使用の素子(HLEまたはHLEの一部)を利用して、例えば、より低いレベルのプログラマブル相互接続リソースを介して、(非反転または反転によって)駆動強度を高めることは容易に可能である。図21−23にて示す素子等の、種々の構成においてともに使用可能な素子(例:220および/または230)は、同一のHLE中にある必要はない。そのかわり、隣接するか近傍にあるHLE中に存在してもよい。
【0052】
すでに述べたように、所定の関数の実装に必要なHLEの数を節約するために、種々の技術が使用可能である。上述のとおり、論理圧縮はこのようなHLE節約技術の一例である。さらに別の例では、ある単一のHLEがさらに別のHLEを駆動し、この第2のHLEが例示的に2入力NANDゲートとして構成されている。この例が発生すると、ASICフローはNANDゲートを第1のHLEに圧縮可能であるため、HLEの数を2から1へと低減する。n番目のHLEが(n−1)番目のHLEへと圧縮可能であり、(n−1)番目のHLEが(n−2)番目のHLE等へと圧縮可能であり、特に図3のインバータ230等を含む、多くの類似事例がある。他の例は、!A AND B、A AND B等である。
【0053】
上述は本発明の原理の例示にすぎず、本発明の範囲および精神から逸脱することなしに、当業者によって種々の変更がなし得ることが理解されるであろう。例えば、本明細書で言及されるFPGAおよびASICは、それぞれ純粋なFPGAまたはASICである必要はない。デバイスは、FPGAの一部、ASICの一部、またはその他さらに別のもの(例:FPGAの一部およびASICの一部)の一部であってもよい。本明細書におけるFPGAおよびASICへの言及は、このようなハイブリッド・デバイス中のFPGA部またはASIC部への言及と理解される。
【0054】
本明細書において「プログラミングを介して」(例図4−9を参照)は、一般に論理構成およびHLE内、HLE間のルーティングについて言及しているが、所望に応じて、上記のかわりにまたは上記に加えて、他の種類のプログラミング(例:金属のオプショナルリンク、ヒューズ、アンチヒューズ、CRAM制御、フラッシュ制御等)を使用することもできる。これら他の技術のうちいくつかが使用される場合、「マスク・プログラミング」に対する上記言及は、カスタム化または部分的にカスタム化されたマスク以外によって実装可能な他のプログラミング技術のことを言及していると理解されている。同様に、HLEは本明細書中ではFPGA LEと等価な関数を実行するものとして記載されているが、本明細書に示されるHLEは高密度、高性能のコンポーネントである。このためHLEは、(デジタル信号処理(DSP)ブロック、マイクロ・プロセッサ等の)高性能知的財産(IP)メモリ等の形成にも使用してもよい。
【特許請求の範囲】
【請求項1】
本願明細書に記載の発明。
【請求項1】
本願明細書に記載の発明。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【公開番号】特開2012−235499(P2012−235499A)
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願番号】特願2012−153545(P2012−153545)
【出願日】平成24年7月9日(2012.7.9)
【分割の表示】特願2012−87199(P2012−87199)の分割
【原出願日】平成17年7月1日(2005.7.1)
【出願人】(597154922)アルテラ コーポレイション (163)
【氏名又は名称原語表記】Altera Corporation
【Fターム(参考)】
【公開日】平成24年11月29日(2012.11.29)
【国際特許分類】
【出願日】平成24年7月9日(2012.7.9)
【分割の表示】特願2012−87199(P2012−87199)の分割
【原出願日】平成17年7月1日(2005.7.1)
【出願人】(597154922)アルテラ コーポレイション (163)
【氏名又は名称原語表記】Altera Corporation
【Fターム(参考)】
[ Back to top ]