(57)【特許請求の範囲】
【請求項１】
集積回路装置であって、
少なくとも１つのユーザによりプログラム可能なゲートアレイ領域と、少なくとも１つのマスクによりプログラム可能なゲートアレイ領域と、
Ｉ／Ｏパッドと関連する駆動回路とを有するＩ／Ｏシステムと、
少なくとも１つのユーザによりプログラム可能なゲートアレイ領域と、少なくとも１つのマスクによりプログラム可能なゲートアレイ領域と、Ｉ／Ｏシステムと、を選択的に接続するための、ユーザによりプログラム可能な接続構造とから構成されることを特徴とする集積回路装置。
【請求項２】
さらに、少なくとも１つのユーザによりプログラム可能なゲートアレイ領域と、少なくとも１つのマスクによりプログラム可能なゲートアレイ領域と、の間を接続する少なくとも１つのインターフェイス回路領域を備えることを特徴とする請求項１の集積回路装置。
【請求項３】
少なくとも１つのインターフェイス回路領域が、ユーザによりプログラム可能であることを特徴とする請求項２の集積回路装置。
【請求項４】
複数の領域を有する集積回路装置であって、
少なくとも１つのユーザによりプログラム可能なゲートアレイ領域と、
少なくとも１つのマスクによりプログラム可能なゲートアレイ領域と、
集積回路装置の入力および出力を可能とする、少なくとも１つの入力・出力領域と、
少なくとも１つのユーザによりプログラム可能なゲートアレイ領域と、少なくとも１つのマスクによりプログラム可能なゲートアレイ領域と、少なくとも１つの入力・出力領域との間を選択的に接続する少なくとも１つのユーザによりプログラム可能なインターフェイス回路領域とを備えることを特徴とする集積回路装置。
【請求項５】
少なくとも１つのマスクによりプログラム可能なゲートアレイ領域が、入力部より受信した暗号化された構成データ信号から解読された構成データ信号に解読する少なくとも１つの解読回路を備え、少なくとも１つのユーザによりプログラム可能なゲートアレイ領域が、解読された構成データ信号を用いて、少なくとも１つのユーザによりプログラム可能なゲートアレイ領域にユーザのプログラムする機能を実行させる構成制御回路を備えることを特徴とする請求項４の集積回路装置。
【請求項６】
少なくとも１つのマスクによりプログラム可能なゲートアレイ領域が、少なくとも１つのユーザによりプログラム可能なゲートアレイ領域の任意の部分を再度プログラムする、少なくとも１つの動的な再プログラム回路を備えることを特徴とする請求項４の集積回路装置。
【請求項７】
少なくとも１つのマスクによりプログラム可能なゲートアレイ領域が、少なくとも１つのユーザによりプログラム可能なゲートアレイ領域に対する組み込み式のテストシーケンスを与える少なくとも１つの論理機能を備えることを特徴とする請求項４の集積回路装置。
【請求項８】
少なくとも１つのマスクによりプログラム可能なゲートアレイ領域が、外部ユーザシステムと、少なくとも１つのユーザによりプログラム可能なゲートアレイ領域と、の間を接続する少なくとも１つのバスインターフェイス回路を備えることを特徴とする請求項４の集積回路装置。
【請求項９】
少なくとも１つのマスクによりプログラム可能なゲートアレイ領域が、外部ユーザシステムと、少なくとも１つのユーザによりプログラム可能なゲートアレイ領域と、の間を接続する少なくとも１つのローカルネットワークインターフェイス回路を備えることを特徴とする請求項４の集積回路装置。
【請求項１０】
少なくとも１つのマスクによりプログラム可能なゲートアレイ領域が、少なくとも１つのマイクロプロセッサコントローラを備えることを特徴とする請求項４の集積回路装置。
【請求項１１】
少なくとも１つのユーザによりプログラム可能なゲートアレイ領域が、少なくとも１つの高い論理出力数負荷を備え、少なくとも１つのマスクによりプログラム可能なゲートアレイ領域が、少なくとも１つの高い論理出力数負荷に接続するために少なくとも１つの低ドライブスキュークロック駆動回路を備えることを特徴とする請求項４の集積回路装置。
【発明の詳細な説明】
発明の背景
１．発明の分野
本発明は、ユーザによりプログラム可能なゲートアレイ（Field Programmable Gate Arrays：ＦＰＧＡｓ）の分野に関する。とりわけ本発明は、ＦＰＧＡ回路部と、とりわけマスクによりプログラム可能な回路領域として構成される集積回路上の回路部と、を有する集積回路ダイの上に、他の機能回路部を設けて、ユーザが特定する機能を有する手段を備えることにより、ＦＰＧＡの機能性を拡張する方法および装置に関する。
２．先行技術
集積回路は、ウェハー製造工程中に標準的なフォトリソグラフィ処理を行ってパターン化される独立した半導体部品の間を、金属配線するネットワークを利用している。金属配線パターンの多層構造を用いて、配線の順応性を向上させることができる。
ユーザによりプログラム可能な配線を行う技術、または製造業者により出荷前にプログラム可能であるということは、量産費用を削減し納期を短縮するものと、長い間考えられてきた。こうした考えに従って、ゲートアレイは開発されてきた。
ゲートアレイ回路は、未使用の配線チャンネルを有する未使用のゲートからなるアレイである。特定の回路機能を実行するのに必要な配線を形成するために、回路をアレイおよび配線チャンネルに写し込み、そして配線を適当にプログラムする。
ゲートアレイ回路は、一連の機能の中から実質的に任意のものを実行するようにプログラムすることができる。所望の一連の出力が形成されるように、プログラムされた回路により入力信号が処理される。このような入力信号は、入力バッファおよびこの回路を経由して、ユーザシステムから入力され、最終的には出力バッファを経由して、ユーザシステムに帰還する。これらのバッファは、電圧ゲイン、電流ゲイン、水準移動、遅延、信号分離、またはヒステリシスからなる入力および出力（Ｉ／Ｏ）機能のいずれかの、またはすべての機能を有する。
製造業者がマスクを製造する過程で、配線チャンネルおよび適当な接続をプログラムした場合、このゲートアレイ回路は、マスクによりプログラム可能なゲートアレイと呼ばれる。
ユーザが書き込みできる回路要素によって、配線チャンネルおよび適当な接続をプログラムした場合、このゲートアレイ回路はＦＰＧＡ（Field Programmable Gate Arrays）と呼ばれる。
ＦＰＧＡをプログラムするとき、ユーザに順応性を提供するために用いられる書き込み可能な回路要素として、本質的に２つの構成がある。第１の構成では、エル・ガマルらの米国特許第４，７５８，７４５号で開示される実施例によれば、ユーザは、ＦＰＧＡを永久にプログラムすることができる。第２の構成では、フリーマンの米国特許第４，８７０，３０２号で開示された実施例によれば、ユーザは、ＦＰＧＡを置換可能にプログラムすることができる。
比較してみると、マスクによりプログラム可能なゲートアレイは、高機能および高性能を呈し、効率的に空間を利用するのに対し、ＦＰＧＡは、設計費用をより低く抑え、より高いユーザ順応性を有する。同様に、マスクによりプログラム可能なゲートアレイは、いかなる多様なＩ／Ｏ機能にも順応でき、しかもＦＰＧＡよりも処理速度が速い。他の専用の機能回路もまた、ＦＰＧＡ要素から構成される同等の回路と比して、しばしばより高い機能および性能を呈する。
本発明の目的および利点
したがって、本発明の目的は、設計コストを低く抑え、かつ、ＦＰＧＡとしてのユーザ順応性を維持しながら、マスクによりプログラム可能なゲートアレイのより高い機能、性能、および効率を兼ね備えた、改善されたＦＰＧＡを提供することにある。
本発明のさらなる目的は、マスクによりプログラム可能なゲートアレイが有する改良型の入出力機能を備えたＦＰＧＡを提供することにある。
本発明のさらに別の目的は、ＦＰＧＡ集積回路の技術を、同じ集積回路ダイ上で、その他の機能回路部の技術と組み合わせることにある。
本発明に関する図面と以下の説明を考察すれば、本発明の上記の、そして他の目的および利点が当業者にとって明らかとなるであろう。
発明の要約
本発明によれば、改良型ＦＰＧＡが開示されている。集積回路ダイの一部に、専用の機能回路部、またはマスクによりプログラム可能なゲートアレイを備えている。その結果、ユーザによりプログラム可能な量産品だけでは十分に、あるいは費用効果的に実現されなかった重要な回路機能を享受することができる。
本発明によるＦＰＧＡ集積回路は、複数からなる論理セルまたは論理モジュールをアレイまたはマトリックス状に備えている。このアレイは、一連の垂直方向の配線チャンネルと、一連の水平方向の配線チャンネルとを備えており、ユーザがこれらの配線チャンネルをプログラムして、所望する論理機能を構成するように、さまざまに論理セルを配線する。
配線チャンネルは、ユーザによりプログラム可能な配線要素を用いて配線され、この配線要素は、配線される任意の２つの配線が交わるところに配置されている。配線するためには、ユーザによりプログラム可能な配線要素がプログラムされ、その結果、２つの配線間に低インピーダンスの電気接続が形成される。ユーザによりプログラムできる配線要素として、例えば、アンチヒューズと、パストランジスタと、メモリセルと、フラッシュメモリ、ＥＥＰＲＯＭ、およびＥＰＲＯＭを含む不揮発性メモリと、が本発明による構成で利用することができる。
配線チャンネルをより効率的に利用するために、これら複数のプログラム可能な要素を用いて、垂直方向および水平方向のチャンネルをより短い距離の配線にセグメント分割する。これらの分割されたセグメントは、プログラム可能な要素をプログラムすることで、より長い配線接続を形成するように合成することができ、あるいは個々のセグメント配線の長さはそのままにして、同じ配線チャンネルを異なる回路配線のために何度も利用することもできる。
プログラム回路部は、一般にアレイの端部に配置される。プログラム情報および配線情報がプログラム回路に移植されると、所望する配線パターンの効果が生じるように適当な電圧が印加される。この垂直方向および水平方向のチャンネルは、通常の動作時において配線チャンネルとして用いられ、さまざまな配線をプログラムするために、そしてアレイモジュールおよび配線経路を十分に検査するために利用することができる。その他、個々の要素を直接的にプログラムすることもできる。ユーザによりプログラム可能な間接的な要素をプログラムするためのさまざまな回路およびプロセスが広く知られているが、本発明の一部を構成するものではない。この開示内容をいたずらに複雑にすることを避けるために、プログラムの詳細については、ここでは説明しない。
アレイのＦＰＧＡ領域で用いられる論理モジュールは、一般的な論理要素であってもよく、これは、ユーザがプログラムできる要素を選択して利用することにより設定される任意の論理機能を構成するとき、極めて有効である。当業者には理解されるように、数多くの異なるモジュールが利用できる。
アレイの少なくとも一部分は、論理モジュールで占有されておらず、むしろその他の回路部が設けられている。本発明の実施例では、他の回路部は、マスクによりプログラム可能なゲートアレイのようなマスクによりプログラム可能な回路を備えている。本発明の他の特定の実施例は、アナログブロックのような回路と（アナログ・デジタル・コンバータ、デジタル・アナログ・コンバータ、電圧レファレンス、オペアンプ、コンパレータ、ＰＬＬ、ＤＰＬＬ、ＤＬＬ、水晶発振器）、特有のデジタルブロックと（ＳＲＡＭ、ＤＲＡＭ、ＲＯＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、ＦＩＦＯ、マルチプレクサ、マイクロプロセッサ、埋め込み型コントローラ、ＡＬＵ、浮動小数点プロセッサ、ＤＳＰ、アレイプロセッサ）、および特有のＩ／Ｏ機能回路（ＧＴＬ、ＰＥＣＬ、ＬＶＤＳ、ＰＣＩ、ＩＳＡ、ＥＩＳＡ、ＲＡＭＢＵＳなどのためのバスコントローラ、ネットワークトランシーバ、高速シリアル配線）とを有する。
インターフェイス回路部によれば、マスクによりプログラム可能な回路と、アレイ内の論理モジュールと、および集積回路上のＩ／Ｏピンに接続するＩ／Ｏ回路部との間の配線を可能にする。本発明の１つの態様によれば、ＦＰＧＡ領域と集積回路のマスクによりプログラム可能な回路領域との中間点、あるいはその近傍に、１つまたはそれ以上の論理モジュールを配置する空間が設けられており、その空間に、ＦＰＧＡ領域と集積回路のマスクによりプログラム可能な回路領域との間の接続するインターフェイス回路が占有する。
エンドユーザは、機能に関する広い選択範囲の中から選択し、製造業者に指定する。そして製造業者は、マスクによりプログラム可能な技術を用いて、集積回路にいくつかの機能をプログラムするとともに、集積回路上のユーザによりプログラム可能な領域を用いて、集積回路にその他の機能をユーザがプログラムできるようにしておく。
本発明の１つの実施例では、集積回路のマスクによりプログラム可能な領域は、広範な機能を実行するためのゲートアレイを有する。マスクによりプログラムできるゲートアレイは、集積回路のインターフェイス回路領域を経由して、ＦＰＧＡに配線される。インターフェイス回路は、マスクにより、またはユーザによりプログラム可能な回路のいずれかを備えており、これらの回路は、マスクによりプログラム可能なゲートアレイおよびＦＰＧＡの両方に対して入出力信号を制御し処理することができる。マスクによりプログラム可能なゲートアレイ、ＦＰＧＡ、またはインターフェイス回路のいずれかが集積回路のＩ／Ｏ領域と配線されている。集積回路のＩ／Ｏ領域は、マスクにより、またはユーザによりプログラム可能な回路のいずれかを備えており、これらの回路は、外部ソースから集積回路に入力される信号、または集積回路から外部ソースに出力される信号を制御し処理する。
本発明のその他の実施例において、集積回路のマスクによりプログラム可能な領域は、広い範囲の機能を実行するＩ／Ｏ回路を有し、このＩ／Ｏ回路は、外部ソースから集積回路に入力される信号、または集積回路から外部ソースに出力される信号を制御し処理する。マスクによりプログラム可能なＩ／Ｏ回路は、集積回路のインターフェイス回路領域を経由して、ＦＰＧＡに配線される。インターフェイス回路は、ＦＰＧＡに対する入出力信号を制御し処理できるよう、マスクにより、またはユーザによりプログラム可能な回路のいずれかを有していてもよい。インターフェイス回路およびＦＰＧＡは、外部ソースと直接に信号を入出力してもよい。
当業者には理解されるように、ここで開示されたマスクによりプログラム可能なＦＰＧＡが、一般的に他の種類のアナログまたはデジタル回路に適用される。
【図面の簡単な説明】
図１は、本発明による好適な実施例のブロック図であって、ＦＰＧＡ領域と、マスクによりプログラム可能なゲートアレイ領域との両方を有する。
図２は、本発明によるインターフェイス回路の目下の好適な実施例のブロック図であって、このインターフェイス回路は、ＦＰＧＡ領域と、マスクによりプログラム可能なゲートアレイ領域と、集積回路のＩ／Ｏドライバとの間に挿入される。
図３は、図２で示すインターフェイス回路の目下の好適な実施例の概略図である。
図４は、ＦＰＧＡ領域とマスクによりプログラム可能なゲートアレイ領域とを有する本発明の実施例のブロック図であって、Ｉ／Ｏルーティング構成を図示する。
好適な実施例の詳細な説明
当業者には理解されるように、本発明に関する以下の記載は、単に説明するためのものであって、いかなる制限をも加えるものではない。当業者がこの開示内容の範囲で検討すれば、本発明のその他の実施例が容易に想像されるであろう。
図１を参照すると、改良型のＦＰＧＡ集積回路１０の好適な実施例のブロック図が示されている。集積回路１０は、数多くのブロックからなることが示されている。図１で示すブロックの数、大きさ、および配置は、本発明の動作にとって決定的なものではなく、図１のレイアウトは、単に説明するためだけのものである。当業者には理解されるように、本発明の範疇に属する、非常に数多くの置換可能な構成を利用することができる。
始めに、集積回路１０はＦＰＧＡ領域１２を有する。ＦＰＧＡ１２は、論理機能モジュールのアレイと、未使用の配線チャンネルとを有する。このチャンネルは、よく知られているように、相互に配線可能で、しかもユーザによりプログラム可能な配線要素を経由して集積回路１０のＩ／Ｏに配線できる。エンドユーザは、広範な機能を実行するＦＰＧＡ１２を、集積回路１０に構成することができる。ＦＰＧＡを用いてユーザ設定する機能を実行するために用いる技術は、当業者には広く知られており、ここではさらに説明しない。
さらに集積回路１０は、他の回路部の領域１４および１６を有する。ここに開示した説明的な実施例に関して、他の回路部とは、マスクによりプログラム可能なゲートアレイである。この開示内容から当業者には理解されるように、ＦＰＧＡの製造過程における互換性を条件として、その他多くの種類の回路部が領域１４および１６で利用することができる。したがって、その他の種類の、領域１４および１６に配置できる回路機能の数は、実質的に限りがない。また当業者には理解されるように、図１のブロック図では２つの領域１４および１６を示しているが、本発明による集積回路の中に、１つの領域、または３つ以上の領域を配置することもできる。
領域１４および１６にあるマスクによりプログラム可能なゲートアレイは、未使用の配線チャンネルを含む未使用のゲートのアレイを有する。製造工程中に、広範な機能のいずれかを集積回路１０内に構成するために、マスクによるゲートアレイ領域１４および１６の内部でこれらのゲートを互いに配線することができる。マスクによりプログラム可能なゲートアレイの領域１４および１６にプログラムされる機能は、一般にユーザが決定するか、業界の標準を反映するものである。マスクによりプログラム可能なゲートアレイを用いて機能を構成するための技術は、当業者には広く知られており、ここではさらに説明しない。
集積回路１０は、インターフェイス領域１８を有する。インターフェイス領域１８は、任意の数および種類の要素を有し、この要素により、ＦＰＧＡ部１２と、マスクによりプログラム可能なゲートアレイ領域１４および１６と、集積回路の１０のＩ／Ｏとの間で信号交換する。インターフェイス回路のこの要素は、単純に、ＦＰＧＡ領域１２と、マスクによりプログラム可能なゲートアレイ領域１４および１６と、の間を直接配線することができ、あるいはＦＰＧＡ領域１２と、マスクによりプログラム可能なゲートアレイ領域１４および１６と、の間の信号交換を制御および・または条件付けする複雑な論理モジュールとすることができる。インターフェイス回路の要素は、一般に、領域１４および１６と、ＦＰＧＡ領域１２とに配置される回路部の特性によって、選択される。このインターフェイス回路の要素を構成するために用いられる技術は、部分的には、ＦＰＧＡ１２およびマスクによりプログラム可能なゲートアレイ１４が有する機能を構成するために用いられる技術によって、決定される。インターフェイス回路の要素を構成するための技術は、当業者には広く理解されているので、ここではさらに説明しない。
集積回路１０のＦＰＧＡ領域１２を構成するために用いられるソフトウェアライブラリの中から論理モジュールのマトリックスを経由して、Ｉ／Ｏと領域１４および１６とが配線するために、広く利用されている手法を用いるのが望ましい。いくつかの装置では、レイアウトの許す範囲で領域１４および１６に配線できるように、固定位置、すなわち論理モジュールを設定する。その他の装置では、レイアウトが許す範囲で領域１４および１６に配線できるように、ＦＰＧＡルーティングソースを外部に持ち出してもよい。
集積回路１０はまた、Ｉ／Ｏ領域２０を有する。Ｉ／Ｏ領域２０は、集積回路１０と外部システムにあるその他の構成部品との間で信号交換するために必要な要素を提供する。Ｉ／Ｏ領域２０は、図１のブロック図では１つの位置に示しているが、当業者には理解されるように、効率的な利用のために、集積回路１０が製造されるダイの周辺領域にＩ／Ｏ領域２０を配置してもよい。
外部ユーザとは、ボンディングパッド２２ａないし２２ｄを介して、物理的に接続される。当業者には理解されるように、ボンディングパッドの２２ａないし２２ｄの数および位置は、本発明が動作するのに必要とする特定のアプリケーションに大きく依存する。
ボンディングパッド２２ａないし２２ｄは、Ｉ／Ｏ領域２０に配線される。Ｉ／Ｏ領域２０は、Ｉ／Ｏインターフェイス２４に配線し、このインターフェイスは、任意の数と種類の、マスクによりプログラム可能な、またはユーザによりプログラム可能な要素を有する。そしてこの要素により、外部ユーザは、集積回路１０の上に配置される、ＦＰＧＡ領域１２のいずれかまたはすべてと、マスクによりプログラム可能なゲートアレイ領域１４および１６と、およびインターフェイス回路１８と、の間の信号交換を行う。Ｉ／Ｏインターフェイス要素は、外部ユーザおよび集積回路１０の間の直接的な配線のように簡単なものとすることができ、または外部ユーザおよび集積回路１０の間の信号交換を制御および・または条件付けする論理モジュールのように複雑なものとすることができる。Ｉ／Ｏインターフェイスの要素の選択は、一般にユーザが決定するか、業界の標準を反映するものである。Ｉ／Ｏインターフェイス要素を構成するために用いられる技術は、当業者には広く知られているので、ここではさらに説明しない。
マスクによりプログラム可能な改良型のＦＰＧＡの性能と機能が向上したことにより、広範な利用が可能となる。いくつかの特定の利用に関して、以下説明するが、本発明の範疇に入るこれら用途の全部を描写するものでは決してない。
例えば、ユーザにより、またはマスクによりプログラムできる技術のいずれかを用いて、インターフェイス回路１８に、３−ステートのバッファをプログラムすることができる。これら３−ステートバッファを用いて、検査中または必要なら通常動作時において、ＦＰＧＡ領域１２とマスクによりプログラムできるゲートアレイ１４から互いに分離することができる。
この他に、高電圧パスゲートのようなトランジスタを、インターフェイス回路１８にプログラムして、分離のために利用することができる。いずれの場合も、外部ユーザは、Ｉ／Ｏ領域２０を介して、選択的に分離の状態をオン・オフすることにより、分離の状態を選択することができる。
マスクによりプログラム可能なゲートアレイ領域１４または１６のいずれか一方に対する別の用途は、これを解読回路として構成することである。この解読回路は、外部ユーザからの暗号化された構成データを受信し、このデータを解読し、そして解読されたデータをＦＰＧＡ領域１２に転送する。当業者には理解されるように、この目的を達成するために、マスクによりプログラム可能なゲートアレイ領域１４または１６を、数多くある既知の解読回路の１つとして構成することができる。
マスクによりプログラム可能なゲートアレイ領域１４または１６のいずれか一方が、解読回路として構成された場合、集積回路のＦＰＧＡ領域１２が構成用の制御回路によりプログラムされる。この制御回路は、解読された構成データを受信し、外部ユーザが所望する機能を実行するように、ＦＰＧＡ１２のプログラム可能な要素を構成するために、この解読信号を利用する。こうして、暗号化した構成データを作った人以外のすべての人に対して、ＦＰＧＡ１２の構成を秘密にしておくことができる。これはとりわけ、ＦＰＧＡ１２がユーザにより再度プログラム可能な既知の配線要素のいずれかを用いる場合に、とりわけ便利である。
置換可能にプログラムできる回路要素を、ＦＰＧＡ１２内に再度プログラムできるという能力を用いると、マスクによりプログラム可能なゲートアレイ領域１４および１６を最大限にプログラムできるという新たな用途が生じる。第１に、ＦＰＧＡ領域１２が実行する機能を、確立された基準にしたがって置換することができる。第２に、マスクによりプログラム可能なゲートアレイ１４が実行する機能を置換できるのと同じように、ＦＰＧＡ１２をプログラムすることができる。
ＦＰＧＡ１２を再度プログラムできることに加えて、外部ユーザからの命令または自動的なスタートアップにより、ＦＰＧＡ１２を検査するための組込み式の検査シーケンスを、マスクによりプログラム可能なゲートアレイ領域１４および１６にプログラムすることができる。数多くの検査回路が、当業者により広く知られている。
マスクによりプログラム可能なゲートアレイ１４および１６は、外部ユーザとＦＰＧＡ１２との間の標準的なインターフェイスを与えるのに用いることができる。第１に、マスクによりプログラム可能なゲートアレイ領域１４および１６は、ＰＣＩ、ＶＭＥ、またはＵＳＢなどのようなバスインターフェイス機能を実行することができる。第２に、マスクによりプログラム可能なゲートアレイ領域１４および１６は、エターネット、フレームリレイ、およびＡＴＭなどのようなローカルエリアネットワーク（ＬＡＮ）の機能を実行することができる。
マスクによりプログラム可能なゲートアレイ領域１４および１６のいずれか一方に対する用途は、業界において数多くの一般的な使用設計などのようなマイクロプロセッサまたは埋め込み型の制御回路を構成する。
ＦＰＧＡ１２が高い論理出力数負荷でプログラムされた場合、マスクによりプログラム可能なゲートアレイ領域１４および１６は、高い論理出力数負荷に配線するために、高いドライブで低いスキューのクロックドライバを用いてプログラムすることができる。低いスキューのクロックドライバは、広く知られた技術である。
図１で示すマスクによりプログラム可能な改良型のＦＰＧＡを、創造してプログラムするために用いられた処理手順は、当業者に広く知られている技術を組み合わせたものである。この一般的な処理手順を以下に概観する。
まず始めに、集積回路１０が実行すべき一般的な必要性が決定される。これは、ユーザ、またはユーザ集団により、あるいは市場分析に基づいた製造業者のみによる決定により、与えられた仕様に完全に依存することができる。
次に、製造業者は、できるだけ順応性を残したまま、集積回路１０の細部についてレイアウトする。これは、集積回路１０のブロック、および各ブロック内で利用できる論理回路の相対的な大きさを選択する作業を含む。そして製造業者は、集積回路１０を製造し、マスクによりプログラム可能な技術を用いて、集積回路１０にいくつかの機能をプログラムする。これらの機能は、配線のように簡単であったり、標準的なインターフェイスまたはマイクロプロセッサのように複雑であったりする。
そして集積回路１０は、ユーザに出荷され、ユーザはユーザによるプログラム可能な配線要素を用いて、集積回路１０に追加的な機能をプログラムする。当業者には理解されるように、マスクによりプログラムする作業は、個人ユーザの仕様に対してなすことができる。プログラムの結果、集積回路１０は、改良型のユーザが設定した機能を実行する回路を有する。
集積回路１０が再構成可能なユーザによりプログラム可能な要素を有する場合、製造業者またはユーザのどちらかが、集積回路の最終的な構成を変えることができ、得られる機能も変えることができる。これにより、集積回路をより順応性の高いものとすることができる。
本発明の別の態様によれば、領域１４および１６は、数多くの事前設定したモードを構成することにより、そのモードの１つにおいて動作するようプログラムすることができる。プログラムするモードでは、集積回路の１つまたはそれ以上のＩ／Ｏピンを用いて、領域１４および１６の機能を構成することができる。動作するモードでは、これらのＩ／Ｏピンを用いて、通常のＩ／Ｏ機能を実行させることができる。Ｉ／Ｏピンに両方の機能を与えることは、よく知られた技術である。
さらに、領域１４および１６を非動作状態にして、単なるＦＰＧＡとして販売することもできる。ソフトウェアをプログラムすることにより、これらの領域の存在が認識されない場合、この集積回路を記述するネットワークリストの中に、該当する回路が存在しないことになる。
ここで図２を参照すると、ブロック図は、本発明によるインターフェイス回路３０の好適な実施例を表し、このインターフェイス回路は、ＦＰＧＡ領域１２と、マスクによりプログラム可能な領域１４または１６のいずれか一方と、集積回路のＩ／Ｏドライバ３２との間で用いられる。インターフェイス回路３０は、マスクによりプログラム可能な領域１４または１６に直接アクセスする各Ｉ／Ｏピン３４のために用いてもよい。
Ｉ／Ｏパッド３４は、集積回路１０の入力または出力として機能しているかによって、ドライバ回路３２によって駆動されるか、ドライバ回路３２を駆動する。当業者には理解されるように、パッドドライバ回路３２は、入力バッファ３８およびトライステートの出力バッファを有する両方向性バッファから構成されている。パッドドライバ回路３２に付随する３つの信号ラインは、パッド入力（ＰＩ）ライン４２、パッド出力（ＰＯ）ライン４２、およびパッドイネーブル（ＰＥ）ライン４６である。ＰＩライン４２は、入力バッファ３８の出力部からの入力信号を伝送し、ＰＯライン４４は、出力バッファ４０の入力部に出力信号を伝送し、ＰＥライン４６は、出力バッファ４０のためのトライステート制御である。パッドドライバ回路３２の動作は、既知の技術である。
本発明によれば、インターフェイス回路３０は、パッドドライバ回路３２により、集積回路１０のＦＰＧＡ領域１２と、マスクによりプログラム可能な領域１４または１６との信号交換を可能にする手段を与える。ＦＰＧＡ領域１２およびマスクによりプログラム可能な領域１４または１６のいずれも、関連する３つの信号ラインを備えている。ＦＰＧＡ領域１２は、信号入力（ＦＩ）ライン４８、信号出力（ＦＯ）ライン５０、および信号イネーブル（ＦＥ）ライン５２を有している。ＦＩライン４８は入力信号をＦＰＧＡ領域１２に伝送し、ＦＯライン５０は出力信号をＦＰＧＡ領域１２から伝送し、ＦＥライン５２はトライステート制御ラインである。マスクによりプログラム可能な領域１４および１６は、関連する３つの信号ラインを有し、すなわち、信号入力（ＧＩ）ライン５４、信号出力（ＧＯ）ライン５６、および信号イネーブル（ＧＥ）ライン５８である。ＧＩライン５４は入力信号をマスクによりプログラム可能な領域１４または１６に伝送し、ＧＯライン５６は出力信号をマスクによりプログラム可能な領域１４または１６から伝送し、ＧＥライン５８はトライステート制御ラインである。当業者には理解されるように、集積回路１０の各Ｉ／Ｏに対して、インターフェイス３０を設けることができる。
ここで図３を参照すると、図２のインターフェイス回路３０の現在の好適な実施例の概略図を示す。第１のマルチプレクサ６０は、制御信号Ｑ０によって駆動される制御入力端子と、ＦＥ信号により駆動される第１のデータ入力端子と、ＧＥ入力信号により駆動される第２のデータ入力端子と、ＰＥ信号を出力する出力端子とを有する。第２のマルチプレクサ６２は、制御信号Ｑ０によって駆動される制御入力端子と、ＦＯ信号により駆動される第１のデータ入力端子と、ＧＯ入力信号により駆動される第２のデータ入力端子と、ＰＯ信号を出力する出力端子とを有する。第３のマルチプレクサ６４は、制御入力端子と、ＰＩ信号により駆動される第１のデータ入力端子と、ＧＯ入力信号により駆動される第２のデータ入力端子と、ＦＩ信号を出力する出力端子とを有する。第４のマルチプレクサ６６は、制御入力端子と、ＰＩ信号により駆動される第１のデータ入力端子と、ＦＯ入力信号により駆動される第２のデータ入力端子と、ＧＩ信号を出力する出力端子とを有する。
第１ないし第４のマルチプレクサ６０、６２、６４、および６６は、パストランジスタではなくてトライステートバッファを用いて構成するのが望ましい。これらのトライステートバッファを用いると、ラインに沿って駆動できる。
第５のマルチプレクサ６８は、制御信号Ｑ１により駆動される制御入力端子と、ＰＥ信号により駆動される第１のデータ入力端子と、制御信号Ｑ２により駆動される第２のデータ入力端子と、第３のマルチプレクサ６４の制御入力を駆動する出力端子とを有する。第６のマルチプレクサ７０は、制御信号Ｑ３により駆動される制御入力端子と、ＰＥ信号により駆動される第１のデータ入力端子と、入力信号Ｑ４により駆動される第２のデータ入力端子と、第４のマルチプレクサ６６の制御入力を駆動する出力端子とを有する。
制御ビットＱ０によって、ＦＰＧＡ領域１２またはマスクによりプログラム可能な領域１４または１６のいずれかは、ＰＯおよびＰＥラインのソースとして各々、ＦＯおよびＦＥラインか、ＧＯおよびＧＥのいずれかを選択することにより、トライステート出力バッファ４０を制御することができる。
制御ビットＱ１およびＱ２によって、ＦＰＧＡ領域１２へのＦＩ入力信号が、ＧＯまたはＰＩ信号のいずれか一方で与えられるようにすることができる。Ｑ１＝１の場合、この選択は、制御ビットＱ２の状態に依存して静的である。Ｑ１＝０の場合、ＦＩソースの選択は、ＰＥの値に依存して動的である。Ｑ０＝１の場合（すなわち、マスクによりプログラム可能なゲートアレイ領域１４または１６がトライステート出力バッファ４０を制御するようプログラムされている場合）、これは便利である。というのも、ＦＰＧＡ領域１２が、トライステート出力バッファ４０が非動作状態の場合（ＰＥ＝０）、入力バッファ３８およびＰＩによって、集積回路に入力される可能性のある外部データをモニタし、さらに、トライステート出力バッファ４０が動作状態の場合（ＰＥ＝１）、出力バッファ４０およびＧＯによって、集積回路から出力される可能性のある内部データをモニタすることができるからである。
同様に、制御ビットＱ３およびＱ４によって、マスクによりプログラム可能なゲートアレイ領域１２へのＧＩ入力信号が、ＦＯまたはＰＩ信号のいずれか一方で与えられるようにすることができる。Ｑ３＝１の場合、この選択は、制御ビットＱ４の状態に依存して静的である。Ｑ３＝０の場合、ＧＩソースの選択は、ＰＥの値に依存して動的である。Ｑ０＝１の場合（すなわち、ＦＰＧＡ領域１２がトライステート出力バッファ４０を制御するようプログラムされている場合）、これは便利である。というのも、マスクによりプログラム可能な領域１４または１６が、トライステート出力バッファ４０が非動作状態の場合（ＰＥ＝０）、入力バッファ３８およびＰＩによって、集積回路に入力される可能性のある外部データをモニタし、さらに、トライステート出力バッファ４０が動作状態の場合（ＰＥ＝１）、入力バッファ３８およびＰＩによって、集積回路から出力される可能性のある内部データをモニタすることができるからである。
エンドユーザでＦＰＧＡ装置をプログラムする際に、ユーザによりプログラム可能な配線要素を選択的にプログラムすることで、Ｑ０ないしＱ４の制御ビットを制御することができる。例えば、関連するユーザによりプログラム可能な配線要素をプログラムすることで、Ｑ０ないしＱ４のノードが引き下げられない限り、これらノードを別々に、積極的にまたは消極的に引き上げておくことができる。
ノードＱ０は、プルアップ装置７２を介してＶＤＤに配線し、参照符号７４で特定される円で示すユーザによりプログラム可能な配線要素を経由してグランドに接地することが概略的に図示されている。ノードＱ１は、プルアップ装置７６を介してＶＤＤに配線し、参照符号７８で特定される円で示すユーザによりプログラム可能な配線要素を経由してグランドに接地することが概略的に図示されている。ノードＱ２は、プルアップ装置８０を介してＶＤＤに配線し、参照符号８２で特定される円で示すユーザによりプログラム可能な配線要素を経由してグランドに接地することが概略的に図示されている。ノードＱ３は、プルアップ装置８４を介してＶＤＤに配線し、参照符号８６で特定される円で示すユーザによりプログラム可能な配線要素を経由してグランドに接地することが概略的に図示されている。ノードＱ４は、プルアップ装置８８を介してＶＤＤに配線し、参照符号９０で特定される円で示すユーザによりプログラム可能な配線要素を経由してグランドに接地することが概略的に図示されている。
表１および２は、インターフェイス３０の動作を設定する実際のテーブルである。
0003926398.tif 000002
0003926398.tif 000003
よく知られているように、時間の関数として信号経路の設定を変更するために、Ｑ０ないしＱ４の制御信号をレジスタにより制御できる
図４は、本発明による集積回路１００の好適な実施例のブロック図であって、この集積回路は、ＦＰＧＡ領域１０２と、例えばマスクによりプログラム可能なゲートアレイ領域であってもよい他の領域１０４とから構成される。図４は、本発明で用いた別の説明的なＩ／Ｏルーティング構成を示す。
よく知られた技術であるように、複数のＩ／Ｏパッド１０６ａないし１０６ｊを集積回路のダイの周辺部に配置する。当業者には理解されるように、Ｉ／Ｏバッファ（図４に図示せず）を備えていてもよい。
加えて、集積回路上に複数の配線チャンネルが配置される。各配線チャンネルは、複数の配線導体を有する。このようないくつかの配線チャンネルが、水平方向および垂直方向の両方向に配置されることを図４で示している。しかし当業者には理解されるように、本発明の教示するところにより製造された集積回路には、一般に、図４で示したものより多くの配線チャンネルが存在している。
例として、３階層の水平方向の配線チャンネルを図示する。最上層の水平方向配線チャンネルは、配線導体１０８ａないし１０８ｄを有する。中央層の水平方向配線チャンネルは、配線導体１１０ａないし１１０ｄを有する。最下層の水平方向配線チャンネルは、配線導体１１２ａないし１１２ｄを有する。
加えて、２列の垂直方向の配線チャンネルを図４に示す。最左列の垂直方向チャンネルは、配線導体１１４ａないし１１４ｄを有する。最右列の垂直方向チャンネルは、配線導体１１６ａないし１１６ｄを有する。
図示していないが、当業者には理解されるように、配線導体の長さは変更することができる。いくつかの配線導体の長さはアレイ全体の長さ（幅）に及び、いくつかのものは、集積回路１００の配線できる可能性を最大化するために、少なくとも２つの部分に分割する。
図４で示す本発明の態様によれば、Ｉ／Ｏパッド１０６ａないし１０６ｊのうちのいくつかは、配線導体とハードワイヤードされ、またいくつかは、プログラムにより配線導体と配線できる。Ｉ／Ｏパッド１０６ａ、１０６ｃ、１０６ｆ、１０６ｈ、および１０６ｊは、配線導体１０８ａ、１１６ｄ、１１２ｂ、１１２ａ、および１１４ｄの各々にハードワイヤードされている。Ｉ／Ｏパッド１０６ｂ、１０６ｄ、１０６ｅ、１０６ｇ、および１０６ｉは、導体が配線チャンネルと交わるところで、プログラムを用いて任意の配線導体と配線できる。例えば、Ｉ／Ｏパッド１０６ｂは、ユーザ個人がプログラムできる配線要素を用いて、配線導体１０８ａないし１０８ｄの任意のものと配線することができ、この配線要素は、Ｉ／Ｏパッドの導体が配線導体と交わる小円で示されている。
さらに、配線チャンネルと交わる個々の配線導体は、配線導体が互いに交わるところに小円で示された、ユーザ個人がプログラムできる配線要素を介して、プログラムを用いて互いにプログラム可能に配線できる。例えば、配線導体１０８ａないし１０８ｄは、配線導体１１４ａないし１１４ｄ、または１１６ａないし１１６ｄの任意のものとプログラムによって配線できる。
集積回路１００のＦＰＧＡ領域１０２における個々の論理機能モジュールの入力および出力端子は、上述したような手法を用いて、配線導体にプログラムを用いて配線できる。図示する入力および出力端子１１８、１２０、１２２、１２４、１２６、１２８、および１３０は、さまざまな配線チャンネルと交わり、小円で示されたユーザによりプログラム可能な配線要素を介して、ここに含まれる個々の配線導体に接続できる。
集積回路１００のその他の回路領域１０４の入力および出力端子が、Ｉ／Ｏパッド１０６ａないし１０６ｊに配線する手法として、２種類がある。例えば、入力・出力端子１３２は、配線導体１１２ｂにハードワイヤードされており、１１２ｂはＩ／Ｏパッド１０６ｆにハードワイヤードされている。入力・出力端子１３４は、配線導体１１２ａないし１１２ｄの任意のものとプログラムによって配線可能で、同様に、ユーザによりプログラム可能な配線要素を経由して、１０６ｅとプログラムを用いて配線できる。
その他の回路領域１０４の入力・出力端子１３６および１３８は、配線導体１１０ａないし１１０ｄに各々ハードワイヤードし、その他の回路領域１０４の入力・出力端子１４０および１４２は、ユーザによりプログラム可能な配線要素を介して、配線導体１１０ａないし１１０ｄの任意の１つに、プログラムを用いて配線できる。
本発明を説明するための適用例と実施例を示してきたが、当業者には明白であるが、ここに述べた本発明の概念から逸脱することなく、より多くの変更が可能である。したがって、添付クレームの精神以外のものから限定されるものではない。
【図１】
0003926398.tif 000004
【図２】
0003926398.tif 000005
【図３】
0003926398.tif 000006
【図４】
0003926398.tif 000007