JP3729943B2 - 時間多重書込可能論理装置 - Google Patents

時間多重書込可能論理装置 Download PDF

Info

Publication number
JP3729943B2
JP3729943B2 JP21752796A JP21752796A JP3729943B2 JP 3729943 B2 JP3729943 B2 JP 3729943B2 JP 21752796 A JP21752796 A JP 21752796A JP 21752796 A JP21752796 A JP 21752796A JP 3729943 B2 JP3729943 B2 JP 3729943B2
Authority
JP
Japan
Prior art keywords
signal
logic
configuration
memory
clock
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
JP21752796A
Other languages
English (en)
Other versions
JPH09181599A (ja
Inventor
エム. トリムバーガー ステファン
エイ. カーベリー リチャード
アンダース ジョンソン ロバート
ウォン ジェニファー
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Xilinx Inc filed Critical Xilinx Inc
Publication of JPH09181599A publication Critical patent/JPH09181599A/ja
Application granted granted Critical
Publication of JP3729943B2 publication Critical patent/JP3729943B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources
    • H03K19/1776Structural details of configuration resources for memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/76Architectures of general purpose stored program computers
    • G06F15/78Architectures of general purpose stored program computers comprising a single central processing unit
    • G06F15/7867Architectures of general purpose stored program computers comprising a single central processing unit with reconfigurable architecture
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17704Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form the logic functions being realised by the interconnection of rows and columns

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Logic Circuits (AREA)
  • Dram (AREA)

Description

【0001】
【発明の属する技術分野】
本発明は、大略、プログラマブルロジック装置即ちプログラム可能論理装置に関するものであって、更に詳細には、コンフィギャラブル(形態特定可能)論理ブロック及びプログラム可能ルーチング(経路付け)マトリクスがダイナミックに再度形態特定されるフィールドプログラマブルゲートアレイ、即ち現場においてプログラム可能なゲートアレイに関するものである。
【0002】
【従来の技術】
フィールドプログラマブルゲートアレイ(FPGA)等のプログラム可能論理装置は公知のタイプの集積回路であり且つ再プログラム可能特性によって提供される柔軟性のために広く適用可能なものである。FPGAは、典型的に、ユーザ(回路設計者)によって所望される論理関数を与えるために互いにプログラムすることによって相互接続される複数個のコンフィギャラブル(形態特定可能)論理ブロック(CLB)からなるアレイを有している。FPGAは、典型的に、同一の複数個のCLBからなる規則的なアレイを有しており、各CLBは、多数の異なる論理関数のうちのいずれか1つを実行するために個別的にプログラムされる。FPGAは、所望のユーザの回路設計にしたがってCLBを相互接続するためのコンフィギャラブル即ち形態特定可能なルーチング(経路付け)構成体を有している。FPGAは、更に、多数のコンフィギュレーション(形態)メモリセルを有しており、それらはCLBと結合されて各CLBによって実行されるべき関数を特定し、且つコンフィギャラブルルーチング(形態特定可能な経路付け)構成体へ結合されており各CLBの入力線及び出力線の結合を特定する。FPGAは、更に、動作期間中にユーザによってアクセス可能なデータ格納メモリセルを有することが可能である。然しながら、特に断りがない限り、メモリセルという用語はコンフィギュレーション(形態)メモリセルのことを言及する。ザイリンクスインコーポレイテッドの1994年に出版された「ザ・プログラマブル・ロジック・データ・ブック(The Programmable Logic Data Book)」という題名の出版物は、幾つかのFPGA製品を記載しており、引用によってその全体を本明細書に取込む。
【0003】
論理回路の複雑性及び寸法を増加させるために従来技術において使用可能な1つのアプローチは、外部接続によって複数個のFPGA(即ち、複数個のチップ)を結合させることであった。然しながら、FPGA間での入力/出力接続部、即ちピンの数が制限されていたために、全ての回路がこのアプローチを使用して実現することが可能なものではない。更に、1個を超えた数のFPGAを使用することは、ユーザの回路設計を実現する上で、電力消費、コスト及び空間を不所望に増加させる。
【0004】
別の公知の解決方法は、FPGAにおけるCLB及び相互接続構成体の数を増加させることであった。然しながら、いずれの与えられた半導体製造技術の場合にも、実際的な寸法の集積回路チップ上に製造することの可能なCLBの数には制限がある。従って、FPGA用の論理ゲート数即ちCLB密度を増加させることの必要性が継続して存在している。
【0005】
異なる時間において異なる論理関数を実行するためにFPGAを再度形態を特定することは当該技術分野において公知である。然しながら、この再形態特定は、各再形態特定のためにコンフィギュレーション(形態)ビットストリームを再ロードする時間のかかるステップを必要とする。更に、従来のFPGAの再形態特定は、通常、論理関数の実行を中断し、論理関数の現在の状態をFPGA外部のメモリ装置内へ保存し、メモリ形態セルの全アレイを再ロードし、且つチップ外に保存した論理関数の状態及びその他の必要な入力を入力することを必要とする。これらのステップの各々は、かなりの時間を必要とし、そのために再形態特定は典型的な回路を実現する場合に非実際的なものとさせている。
【0006】
【発明が解決しようとする課題】
本発明は、以上の点に鑑みなされたものであって、上述した如き従来技術の欠点を解消し、形態特定可能論理ブロック及びプログラム可能経路付けマトリクスをダイナミックに再形態特定することの可能なプログラム可能論理装置を提供するを目的とする。
【0007】
【課題を解決するための手段】
本発明によれば、プログラム可能論理装置(PLD)が、少なくとも1個のコンフィギャラブルロジックブロック即ち形態特定可能論理ブロック(CLB)と、該CLBを相互接続するための相互接続構成体と、該CLB及び該相互接続構成体をコンフィギュア、即ち形態を特定するための複数個のプログラム可能論理要素とを有している。各CLBは、組合わせ要素と順序論理要素とを有しており、少なくとも1個のプログラム可能論理要素は、該組合わせ要素をコンフィギュア、即ち形態を特定するための複数個のメモリセルを有しており、且つ少なくとも1個のプログラム可能論理要素は該順序論理要素をコンフィギュア、即ち形態を特定するための複数個のメモリセルを有している。本発明によれば、PLDは、前記複数個のメモリ要素のうちの少なくとも1つへのアクセスをディスエーブル、即ち動作不能状態とさせる手段を有している。一実施例においては、該メモリセルはRAMセルであり、一方他の実施例においては、該メモリセルはROMセルであり、又はそれらの組合わせである。
【0008】
本発明の一実施例によれば、コンフィギュレーション(形態)メモリ用に使用されるメモリセルは、更に、ユーザのデータメモリとしても使用可能である。従って、1個のメモリスライス(1つのコンフィギュレーション即ち形態に対するビットの全て)又は1つのメモリスライスの一部を、コンフィギュレーションメモリ又はユーザデータのいずれかとして選択的に使用される。ラッチがアクティブ即ち活性なコンフィギュレーション(形態)を保持している間に、データビットをアドレスでアクセスすることが可能である。
【0009】
マイクロレジスタが1個のCLB又は相互接続構成体の複数個の中間状態を格納する。該マイクロレジスタは複数個の読取ポートを有しており、その際に1つのコンフィギュレーション(形態)が幾つかのその他のコンフィギュレーション(形態)のうちのいずれか1つの期間中に該CLBにおいて計算された値を同時的に使用することを可能としている。このような態様で、CLBは他のコンフィギュレーション(形態)においてCLB(その他のCLB又はそれ自身)によって計算された値へアクセスすることが可能である。種々の実施例において、該マイクロレジスタはCLBの出力端か、CLBの入力端か、又は相互接続構成体内のその他の箇所のいずれかに位置されている。
【0010】
本PLDは、ランダムアクセスによるか、又は外部又は内部信号からのコマンドによって、逐次的にコンフィギュレーション(形態)間でスイッチする。このスイッチ動作は、「フラッシュリコンフィギュレーション(フラッシュ再形態特定)」と呼ばれる。フラッシュリコンフィギュレーションは、本PLDがN個のコンフィギュレーション(形態)のうちの1つにおいて機能することを可能とし、尚、Nは各プログラム可能な点へ割当てられた最大数のメモリセルに等しい。このような態様で、M個の実際のCLBを有するPLDは、それがあたかもM×N個の実効的なCLBを有するように機能する。従って、8個のコンフィギュレーション(形態)を仮定した場合に、本PLDは、付加的なコンフィギュレーションメモリを有することによってそれが実際に有する論理の量の8倍の論理を実現する。フラッシュリコンフィギュレーションを使用することによって、本発明のCLBはダイナミックに効果的に再使用され、その際に与えられた数の論理関数を実現するために必要とされる物理的なCLBの数をコンフィギュレーションの数の係数だけ減少させる。更に、該マイクロレジスタは、各フラッシュリコンフィギュレーションに対して保存及び再格納機能を提供し、その際にそのコンフィギュレーション(形態)が最後に終了した箇所からコンフィギュレーション即ち形態特定を行なうこととを再開することを可能とする。
【0011】
本発明は、典型的に、前記プログラム可能論理要素のうちの1つの出力信号として該メモリセルの1つの値を供給するためのラッチを有している。このラッチは、該メモリセルのコンフィギュア即ち形態特定を行なうための複数個のビット線に関して行なわれるプレチャージの遅延を効果的に隠す。更に、該ラッチはユーザのコンフィギュレーションとは独立的に該PLDに対し既知の状態へパワーアップする。更に、該ラッチは、コンフィギュレーション即ち形態特定がアクティブ即ち活性状態にある間にメモリへのアクセスを可能とさせる。
【0012】
一実施例においては、各CLBは、更に、該中間状態、少なくとも1個のCLBにおける値(順序論理要素又は組合わせ要素と関連している)又はCLBへの外部信号のいずれかへアクセスするための複数個のマルチプレクサを有している。
【0013】
【発明の実施の形態】
以下の説明は、トピック毎に分割されており、それらは以下の目次に従って構成されている。
【0014】
目 次
1.0 用語
2.0 論理アレイアーキテクチュア
2.1 マイクロレジスタ
2.1a マイクロレジスタ位置
2.2 バスヒエラルキ
3.0 パワー節約
4.0 共用メモリ
5.0 チップレイアウト
6.0 リコンフィギュレーション(再形態特定)
7.0 単一クロックシーケンサ
7.1 コンフィギュレーションシーケンス動作
7.2 コンフィギュレーション期間
7.3 同期型FPGA用のマイクロサイクル発生
8.0 動作モード
8.1 タイムシェアリングモード
8.2 論理エンジンモード
8.2a 同期/非同期クロック動作
8.2b 論理エンジンモード用制御器
8.2c スケジューラ
8.2d 圧縮スケジューリング
8.2e 同時的スケジューリング及び配置
8.2f 論理エンジン入力及び出力信号
8.3 スタティックモード
8.4 混合モード
9.0 その他
9.1 可変深さCLB
9.2 マイクロサイクルインタラプトシミュレーション
9.3 マイクロレジスタ代替物
9.4 より深い論理に対する代替物
9.5 CLB毎メモリアクセスコンフィギュレーションビット
9.6 マイクロレジスタセレクタオプション
9.7 低パワー相互接続回路
9.8 コンフィギュレーション用マルチアクセス
9.9 パイプライン特徴モード
9.10 ROMセルの組込み
1.0 用語
ここにおいては3つのタイプのデータ(3つのタイプのメモリ又は格納部を暗示する)、即ち、コンフィギュレーションデータ、ユーザデータ、状態データについて説明する。コンフィギュレーションデータは、そのデータが論理ブロック又は相互接続体へ供給された場合に、論理ブロック又は相互接続体のコンフィギュレーション即ち形態特定を決定する。ユーザデータは、典型的に、ユーザの論理によって発生され且つそうでなければコンフィギュレーションデータの格納のために使用することの可能なメモリにおいて格納/検索されるデータである。状態データは、任意の特定の時間においてのユーザ論理におけるノードの論理値を画定するデータである。典型的に、状態データは、該ノードにおける値が後の時間において必要とされる場合に格納される。「状態」という用語は、特定の時間においてのノード値の全て又はこれらの値のうちのサブセットのいずれかを言及するために使用される。
【0015】
2.0 論理アレイアーキテクチュア
従来の1つのFPGA、例えばザイリンクスインコーポレイテッドから市販されているザイリンクスXC4000(商標)ファミリィのFPGAのうちの1つの装置は、各プログラミング点を制御するために1個のコンフィギュレーションメモリセルを有している。図1に示したように、従来のラッチ101(即ち、4トランジスタ装置)及びセレクトトランジスタ102は、FPGAチップ上の全ての論理関数に対する制御の基本的なユニットを形成する5トランジスタ(5T)メモリセル100を有している。1989年4月11日付で発行された米国特許第4,821,233号、及び1988年6月7日付で発行された米国特許第4,750,155号は、この5Tメモリセルのコンフィギュレーション即ち形態特定について詳細に説明しており、それらは引用によって本明細書に導入する。
【0016】
本発明によれば、且つ図2を参照すると、各メモリセル100(図1)はランダムアクセスメモリ(RAM)ビット組200で置換されている。ビット組200は、8個のメモリセルMC0−MC7を有している。各メモリセルMCはラッチ201と、それと関連するセレクトトランジスタ202とを有している。メモリセルMC0−MC7はクロック動作されるラッチ204へ信号を供給する共通ビット線203へ結合されている。別の実施例においては、メモリセルMC0−MC7は従来の6トランジスタ(6T)メモリセルであって、それらは当該技術分野において公知であり、従ってその詳細な説明は割愛する。異なるビット組における同一の位置における全てのコンフィギュレーションビット(例えば、メモリセルMC2によってラッチ2012 により格納されている3番目のコンフィギュレーションビット)はメモリの単一の「スライス」内に存在するものと考えられ、アレイの単一コンフィギュレーション(形態)に対応している。
【0017】
付加的なコンフィギュレーションメモリセルはFPGA回路のダイナミックな再使用により論理密度を増加させる。特に、CLB及び相互接続体はある時刻において何らかの定義されたタスクを実行すべく形態特定され且つ別の時刻において別のタスクを実効すべく再度形態特定される。従って、各先のFPGAプログラミング点に対してビット組を供給することにより、本発明におけるFPGAは従来のFPGAの論理量の8倍の量を「保持」する。CLBを再度形態特定させることによって、CLBにおける関数発生器の数、典型的には、ユーザの回路において与えられた数のルックアップテーブル(「仮想のLUT」)を実現するために必要とされる従来のルックアップテーブル(「現実のLUT」)の数は、コンフィギュレーション(形態特定)の数の係数だけ減少される。
【0018】
図3は本発明に基づくCLB301の一実施例を示したブロック図である。この実施例においては、CLB301は320個のプログラミング点を有しており、各プログラミング点は1ビットのコンフィギュレーションデータを必要とし、各ビットは8ビットメモリを有している。例えば、G論理関数発生器302は128個のビット(16ビット×8)によって形態が特定される。論理関数発生器302,303,304、複数個のマルチプレクサ305−321、SR制御を制御するコンフィギュレーションビットは、コンフィギュレーションワード内のビットの各々の「後ろ側」の8ビットメモリ組を表わす陰付きボックスとして示されている。説明の便宜上、図3はスイッチボックス及び接続ボックス及びそれらに関連するコンフィギュレーションビットを図示していないが、これらのボックス内の各プログラミング点も8ビットメモリを有している。
【0019】
動作期間中に、同一のスライス内の全ての値が同時的に読み出されて、チップ上のCLB及び相互接続体のコンフィギュレーション即ち形態特定をアップデートし、その際にCLBをして異なる論理関数を実行させ且つ相互接続体をして異なる接続を行なわせる。
【0020】
2.1 マイクロレジスタ
図3はマルチプレクサ311及び312の出力端子へ結合されているマイクロレジスタ324及び325を示している。中間論理状態を格納する各マイクロレジスタは、8個のマイクロレジスタビットを有しており、その場合に、各マイクロレジスタビットは前述した8個のメモリスライスのうちの1つに対応している(然しながら、一実施例においては、全てのマイクロレジスタの全てのビットが存在する訳ではない)。コンフィギュレーション即ち形態特定の変化の直前において、現在のメモリスライスに対応するマイクロレジスタビットがクロック動作され全てのCLB(及び、ある実施例においては、IOB)の状態を捕獲する。本発明によれば、マイクロレジスタ324及び325の内容はどのようなコンフィギュレーション(形態特定)においても使用することが可能である。各コンフィギュレーション期間中に、信号は従来の態様でFPGAを介して伝播し、プログラムした相互接続体を介してマイクロレジスタからルックアップテーブル(LUT)又はCLBの入力端子へ付加的な経路が与えられる。
【0021】
一実施例においては、各マイクロレジスタに対する複数個のセレクタが設けられており、従って単一のコンフィギュレーション即ち形態特定が、CLBの複数個のその他のコンフィギュレーションによって発生された値へアクセスするか、又はマイクロレジスタ324及び325をバイパスする現在のCLBの値へアクセスすることが可能である。例えば、マイクロレジスタ324は複数個の出力セレクタ、即ちマルチプレクサ313,314,315,316へ結合されている。同様の態様で、マイクロレジスタ325はマルチプレクサ317,318,319,320へ結合されている。注意すべきことであるが、上述したマルチプレクサ(セレクタ)の各々は関数発生器302,303,304からの信号、又はCLB301外部の信号(即ち、信号H1又はDIN)を受取る。マルチプレクサの数は、一度に使用することの可能なマイクロレジスタからの信号の数を制限する。例えば、各マイクロレジスタに対して4個の出力マルチプレクサが存在しているので(即ち、マイクロレジスタ324に対してマルチプレクサ313−316及びマイクロレジスタ325に対してマルチプレクサ317−328)、単一のコンフィギュレーションは、その他のコンフィギュレーションにおいて同一のマイクロレジスタ内に格納されている4つを超えた数の信号へアクセスすることは不可能である。
【0022】
図3Aを参照すると、レジスタ書込セレクト(LWS)信号がどのマイクロレジスタビット、即ちビット0−7へ書込を行なうかを決定する。読取セレクト信号は、例えば、出力マルチプレクサ313を制御し、該マルチプレクサはどのマイクロレジスタビットを読取るかを決定する。コンフィギュレーションセレクト(CRS)信号は、ブロック330から読取ったどのセレクト信号を使用するかを決定し、各ブロックは8個のメモリセル(MC0−MC7)を有している。注意すべきことであるが、RWS信号は、メモリ書込動作のみのためにメモリ制御器によって供給され(図11及び12を参照して更に詳細に説明する)及びその他の動作のためにシーケンサによって供給される(図22A及び52を参照して更に詳細に説明する)。対照的に、CRS信号は、コンフィギュレーション読取動作のためにシーケンサによって供給され且つその他の動作のためにメモリ制御器によって供給される。
【0023】
最も簡単な実施例においては、RWS信号は、単に、一つのマイクロサイクルだけ遅延されたCRS信号である(「マイクロサイクル」は「μcycle」又は「ucycle」とも呼称する)。即ち、CRS信号はマイクロサイクルの開始時において計算を特定し、且つRWS信号はマイクロサイクルの終了時にその結果を格納する。
【0024】
出力信号、例えば出力信号YAはマイクロクロック(μCLK)信号によってパイプラインラッチ350内へラッチされるので、読取セレクト信号又はCRS信号をラッチすることは必要ではなく、従ってシリコン面積を最小とすると共にマルチプレクサ313がコンフィギュレーション読取プロセスと並列的に動作することを可能としている。
【0025】
図4はマイクロレジスタ324と、マルチプレクサ305,321,313−316と、Dフリップフロップ322とを有するCLB301(図3)の一部のより詳細な実施例を示している。注意すべきことであるが、図4に示した構造はCLB301内において二度複製されている。何故ならば、2組のマイクロレジスタ(即ち、マイクロレジスタ324及び325)が設けられているからである。この実施例においては、マルチプレクサ311(図3)は3個のマルチプレクサ402,403,404を有している。マルチプレクサ313,314,315,316は、夫々、バッファした出力信号YA,YB,YQA,YQBを供給する。
【0026】
RECIRC経路の機能はクロックイネーブル信号によって制御される。特に、クロックイネーブル信号ECが論理0であると、現在のマイクロレジスタビットの前の値を以下の態様で得ることが可能である。最初に、マイクロレジスタ324からの出力信号がCRS信号で選択され且つマルチプレクサ408を介してマイクロクロック(μCLK)信号と共にラッチ415へ転送される。図3Aを参照して前述したように、このCRS信号は現在アクティブなコンフィギュレーションのビット組におけるアドレス即ち位置である。第二に、ラッチされた信号QOLDは、次いで、マルチプレクサ402(信号EC′によって制御される)、マルチプレクサ403(信号SEL(コンフィギュレーションビットによって供給される)によって制御される)、及びマルチプレクサ404(信号SAVE(シーケンサによって与えられる)によって制御される)を介して、現在のマイクロレジスタビットへフィードバックされる。
【0027】
図4に示した入力信号は、概略、市販されているザイリンクスXC4000ファミリィのFPGAにおいて与えられる信号に適合している。例えば、信号Kはクロック入力信号であり、且つ信号IVはパワーアップ又はリセット時のフリップフロップ322の初期値であり且つビット組200(図2)によって与えられる値である。
【0028】
信号X1はマイクロレジスタ324への入力信号である(尚、X2(不図示)はマイクロレジスタ325への入力信号である)。注意すべきことであるが、ビット組200(図2)は図4の種々の要素を制御する。マルチプレクサ408の出力信号はメモリインターフェース(MEM I−F)405へ供給され、該メモリインターフェースはマイクロレジスタ324のプレロードのため、パワーアップ動作のため、又はデバッグ動作のため等のためにマルチプレクサ404へ値を供給する。一実施例においては、マイクロレジスタ324は、該レジスタの各ビットがそれを発生したコンフィギュレーションと同一のアドレス空間内に存在するようにアドレスされ、その際に状態へアクセスすることの複雑性を著しく減少させている。注意すべきことであるが、Dフリップフロップ322のセット/リセット(S/R)及びイネーブルクロック(EC)端子へ供給される信号(SR′及びEC′)は、ライン413及び414を介してマルチプレクサ402の動作を制御する。
【0029】
マルチプレクサ403は、Dフリップフロップ322からの信号又はマルチプレクサ402からの信号(1つのコンフィギュレーションにおいては、マイクロレジスタ324からのフィードバック信号RECIRC)がマルチプレクサ404へ供給されるか否かを決定する。ラッチ407はマルチプレクサ404からの出力信号を捕獲し且つ適宜のマイクロサイクルクロック信号μCLKによってこの値をマイクロレジスタ324へ転送させる。図63A,63B,63Cはマルチプレクサ313−320(図3)に対する種々の実施例を示している。
【0030】
図63AはCLBの出力信号OUT_を相互接続構成体へ供給する本発明に基づく出力マルチプレクサの一実施例、この場合には、マルチプレクサ313(図4)を示している。尚、本明細書において英文字記号の後にアンダーラインを付したものはその英文字記号の反転した信号であることを示している。注意すべきであるが、ラッチ407及びレジスタ324はマルチプレクサ314−316によって共用されている(図4参照)。レジスタ書込信号RWS0−RWS7を受取るレジスタ324は信号uR0−uR7をマルチプレクサ6301A−6301Dへ供給する。アドレスビットA0は、各マルチプレクサへの2つの信号のうちのいずれがマルチプレクサ6301E及び6301Fへ転送されるかを決定する。同様の態様で、アドレスビットA1は、これらのマルチプレクサへの2つの信号のうちのいずれがマルチプレクサ6301Gへ転送されるかを決定する。アドレスビットA2は、どの入力信号が反転され且つマルチプレクサ6301Hへ転送されるかを決定する。マルチプレクサ6301Hは、更に、ラッチ407から反転されたレジスタバイパス信号RBYPを受取り且つ回路6302へ出力信号を供給する(セレクト信号A3によって決定される)。アドレスビットA3は、マルチプレクサ6301Gからの出力信号か又はレジスタバイパス信号RBYPのいずれが爾後にマルチプレクサ6301Iへ供給されるかを決定する。注意すべきことであるが、信号RBYPが選択されると、マルチプレクサ6301Hは前のマイクロサイクルにおいて該レジスタ内に書き込んだ値を供給している。RBYP信号はツリーマルチプレクサ6301の待ち時間を取除いているが、該信号は論理エンジンモード以外における前のマイクロサイクルにおける値に関してある程度の不明確性を発生させる場合がある。
【0031】
図63Dに示した表は、各マルチプレクサ313−320に対する入力信号を示しており、その場合に、信号X1はラッチ407の出力信号であり(即ち、マイクロレジスタ324と関連しているレジスタバイパス信号)、且つ信号X2はマイクロレジスタ325と関連しているレジスタバイパス信号である。入力信号SBYP0及びSBYP1は、典型的に、ザイリンクスXC4000ファミリィの装置のコンフィギュレーション論理ブロックにおいて発生される逐次的なバイパス信号(即ち、信号F,H,DIN又はQ)を参照している。
【0032】
注意すべきことであるが、信号SBYP0及びSBYP1はアドレスビットA1−A3によって選択される。特に、アドレスビットA1はラッチ6303内に格納され、該ラッチはマルチプレクサ6301Jを制御し(即ち、入力信号SBYP0及びSBYP1の間の選択を行なう)、一方アドレスビットA2及びA3はANDゲート6304へ供給される。両方のアドレスビットA2及びA3が低状態であると、高信号がラッチ6305内に格納され、そうでない場合には低信号がラッチ6305内に格納される。ラッチ6305の出力信号は、マルチプレクサ6301Iがマルチプレクサ6301H又はマルチプレクサ6301Jの出力信号を選択することを制御する(以下に詳細に説明する)。
【0033】
図63Bは別の実施例を示しており、この場合は、ラッチ407がマイクロレジスタ324へ接続されており、マイクロレジスタ324はラッチ63110 −63117 及びラッチ6312へ接続している。上述したラッチの全てはマイクロクロック信号uClkによってクロック動作されるので、回路6315は複数個のフリップフロップとして機能し、信号RWS0−RWS7はこれらのフリップフロップに対してのイネーブル信号として作用する。更に、マイクロクロック信号uClkはチップ全体にわたって低スキューで分布されるので、信号RWS0−RWS7は図63Fにおいてハッチングした部分によって示したようにかなりの勾配を有することが可能であり、その部分は信号RWSに対する「don’t care」期間を表わしている。注意すべきことであるが、回路6315において競合問題を除去するために、マイクロクロック信号uClkとuClk_との間にあるオーバーラップしていない部分が与えられている(そうでないと、オーバーラップ期間中にデータがこれらのラッチを介して通過する場合がある)。この実施例においては、信号SBYP0及びSBYP1が選択されると、それはマイクロサイクルクロックuClkとは無関係にマルチプレクサ313によって転送され、一方マイクロレジスタ324からの信号が選択される場合には、そのような信号はマイクロサイクルクロックuClkのエッジ上でサンプルされる。
【0034】
図63Cは更に別の実施例を示しており、この場合は、ラッチ407がマイクロレジスタ324へ接続されており、マイクロレジスタ324はマルチプレクサ313Aへ接続している。図示したように、この実施例は、ラッチされる入力信号に対してマルチプレクサ313Aを設けてあり且つラッチされない入力信号に対して別のマルチプレクサ313Bを設けてある。従って、ラッチ6311(図63B)はマルチプレクサ313を介して「プッシュ」されており、その際に図63Bにおける9個のラッチ、即ちラッチ63110 −63117 からラッチ数を効果的に1個、即ちラッチ6317へ減少させている。マルチプレクサ313Aは4個のブロック330によって制御され(図3A参照)、一方マルチプレクサ313Bはラッチ6318を介してブロック330によって制御される。この実施例においては、マルチプレクサ313Aからの出力信号に対してラッチ6317が設けられている。従って、リコンフィギュレーション即ち再形態特定が完了すると、図63Cの実施例は値がマルチプレクサ313Aを介してリップル動作することを待機する必要はない。
【0035】
図63Eは回路6302(図63A)に対する真理値表を示している。例えば、信号SBYP0又は信号SBYP1のいずれかが選択されると、アドレスビットA2及びA3は0である。従って、ゲート6304の出力信号(実効的には、その反転された入力端子のためにNORゲートである)は高状態である。ラッチ6305によってuClk信号が検知された後に、それは高信号を出力し、その際にORゲート6306の出力信号を強制的に高状態とさせる。その高信号は、実効的に、ラッチ6307をトランスペアレントなものとさせ、その際に信号SBYP0又はSBYP1のいずれかが直接的にCLB出力線へリップル動作することを可能とさせる。換言すると、回路6302はマルチプレクサとして機能する。注意すべきことであるが、図63B及び63Cに示した構造も同一の機能を実行するが、その機能は異なる態様で実現される。
【0036】
一方、マイクロレジスタ324の出力信号が所望される場合には、ラッチ6305の出力信号が低状態であり且つORゲート6306の出力信号はマイクロクロックと同じである。この態様においては、ラッチ6307はラッチ6317と同一の機能を実行する(図63C)。従って、このコンフィギュレーションにおいては、回路6302はラッチへ結合されているマルチプレクサとして機能する。
【0037】
図63Gはトランジスタ6330−6333及びインバータ6334−6337を有する回路6302に対する1つの詳細な実現例を示している。
【0038】
図5はマルチプレクサ402,403,404,MEN I/F405を示しており、それらは、この実施例においては、効果的に単一のマルチプレクサ回路500として統合されており、それは直列したパストランジスタの数を減少させることによって遅延を減少させている。注意すべきことであるが、読取信号RD、書込信号WR、メモリセレクト信号MSELはメモリ制御器(図11を参照して詳細に説明する)によって供給され、一方SAVE信号はシーケンサ(図22A及び52を参照して詳細に説明する)によって供給され、且つセレクト信号SELはコンフィギュレーションビットによって供給される。図6はノード501(図5)における特定の信号となる種々の入力信号に対する真理値表601を示している。
【0039】
2.1a マイクロレジスタ位置
マイクロレジスタ324及び325(図3)は択一的な箇所に位置されている。一実施例においては(図3に示してある)、マイクロレジスタ324,325は出力マルチプレクサ313−320の入力端子へ結合されている。第二実施例においては、これらのマイクロレジスタは論理関数発生器302及び303の入力端子へ結合されている。例えば、マイクロレジスタ324が論理関数発生器302の入力端子へ結合されている場合には、マルチプレクサ313−316は簡単化される。注意すべきことであるが、2つの信号が同一のコンフィギュレーションにおいて発生され且つこれらの信号が異なるコンフィギュレーションに関し論理関数発生器の同一のピン上で必要とされる場合には、コンフリクト即ち競合が発生する。特に、これらのマイクロレジスタが論理関数発生器の入力端子へ結合されている場合には、これらのマイクロレジスタへ供給される2つの信号は同一のコンフィギュレーション上で供給することは不可能である。
【0040】
第三実施例においては、これらのマイクロレジスタは相互接続体内に位置されており、その場合に、使用可能である場合には信号がマイクロレジスタへ経路付けされ且つ必要とされる場合にはこれらのマイクロレジスタから経路付けされる。一実施例においては、これらのマイクロレジスタは計算を行なう論理関数発生器とは独立的に割当てられている。このような態様で、配置プログラムはコンフリクト即ち競合を有することのないマイクロレジスタのみを自動的に選択することが可能である。この実施例はデータ格納位置に関し最大の柔軟性を与えている。
【0041】
第四実施例においては、これらのマイクロレジスタはコンフィギュレーションとは独立した格納位置内に位置されている。そのアドレス又はそのアドレスの一部はコンフィギュレーションビット又は配置位置とすることが可能である。この態様においては、維持されるべき値のみが格納され且つコンフリクト即ち競合を有することのない位置のみが選択される。
【0042】
2.2 バスヒエラルキ
上述したように、従来のFPGAにおける各コンフィギュレーション即ち形態特定動作は1組のコンフィギュレーションメモリビットによって制御される。これらのコンフィギュレーションビットをロードするために使用されるバスは、典型的に、単一レベルのヒエラルキ即ち階層を形成し、垂直アドレス線がCLBアレイの高さ全体にわたり、且つ水平なデータ線(グローバルバスとして呼称する)がアレイの幅全体にわたる。
【0043】
本発明によれば、従来のコンフィギュレーションメモリビットの各々がN個のビットによって置換されている。これらのN個のビット、即ちメモリセルMC0−MC7内に格納されているビットは、それらのローカルバス203を介しスイッチ700を介して図7に示したようにグローバルバス701へ接続されている。ローカルバス203はメモリ機能装置703(即ち、CLB又は相互接続構成体におけるプログラム可能点)を駆動するためにメモリセルMC0−MC7へランダムに又は逐次的にアクセスすることが可能である。一実施例においては、スイッチ700はトランジスタであり、一方その他の実施例においては、スイッチ700は従来のバッファ型スイッチである。一実施例においては、各メモリセルMCは5トランジスタメモリセル100(図1)を使用して実現される。その他のメモリセル実現例については以下に詳細に説明する。
【0044】
ローカルバス203は各コンフィギュレーションに対するビットを担持するのでよりアクティブであり(ラッチ204に対して)、一方グローバルバス701はプレーン(スライスとも呼ばれる)をリコンフィギュア即ち再形態特定する場合又はユーザメモリ動作を実施する場合にのみアクティブである。ローカルバス203の容量は、小型のレイアウト及び電力及び速度に関して小型のトランジスタ寸法によって最小とされている。バス205はトランジスタ202に対してコンフィギュレーションセレクト(CRS)信号を供給し、アドレスバス702はスイッチ700へアドレス信号を供給する。
【0045】
一実施例においては、ローカルバス203及びグローバルバス701は、所望により、真信号及びその相補的信号を担持する。例えば、メモリセルMCは従来の6トランジスタ(6T)メモリセル(それは当該技術分野において公知であり、従ってその詳細な説明は割愛する)で実現されている場合には、2つのローカルバス203A及び203B、2つのスイッチ700A及び700B、及び2つのグローバルバス701A及び701Bは、典型的に、図7Aに示した如くに使用され、その際に各ビット組200Aに対するトランジスタ数を増加させる。
【0046】
ローカルバスからグローバルバスへの転送においては、その転送に参加するメモリセルMCはグローバルバス701当たり1個に過ぎない(従って、CLBアレイに対する一列のMCセル)。本発明に基づき、4個の列及び列当たり80個のビット組を有する例示的なCLBにおいては、16×16CLBアレイは64個の列及び列当たり1280個のビット組を有するアレイを形成する。
【0047】
2レベルヒエラルキの改良したものを図17に示してあり、その場合には、2つのローカルバス1702A及び1702Bが単一のグローバルバス1701上に多重化される。この改良の利点はグローバルバス線を減少させることである。注意すべきことであるが、その他の実施例においては(不図示)、2つを超えた数のローカルバスが単一のグローバルバス上へ多重化される。
【0048】
3. パワー節約
1個のチップ上に設けられるビット組200の数が多い、即ち160,000の程度であるために、ダイナミックな電力消費は著しいものである。4T,5T,6Tメモリセルのビット線容量、電圧の振れ及びクロックサイクル時間は異なるものである。更に、それらの夫々のバス線の電圧の振れの周波数も異なる。特に、図8及び9を参照すると、4Tセル801はローカルバスLB及びLBB上の信号を高状態へ駆動することは不可能である。何故ならば、抵抗802はその抵抗値が高過ぎるからである。従って、ローカルバスLB及びLBBは、コンフィギュレーションを読取る度にプレチャージされねばならない(トランジスタ902A及び902Bのゲートへ供給される低プレチャージ信号PCHBを介して)。ローカルバスLBB上の信号はローカルバスLB上の信号の反転したものであり、従って全てのサイクルに関して、ローカルバスLB又はローカルバスLBBのいずれかがメモリセル801のうちの1つによって放電される。従って、サイクル当たり1つの高及び1つの低遷移が存在しており、そのことはセンスアンプ901によって検知され、該アンプはメモリ機能装置703を駆動する。
【0049】
対照的に、再度図7を参照すると、5Tメモリセルはローカルバス203を高状態及び低状態へ駆動することが可能であり、その際にプレチャージの必要性を取除いている(6Tセルもプレチャージを必要とするものではない)。逐次的なアクセスは異なるデータを有するのと同様に同一のデータを有する可能性があるので、5Tの場合に対する平均的バス遷移は1つ置きのサイクルである。6Tセルは2つのバスを有しているので、そのセルに対する平均的バス遷移は4Tセルのものと5Tセルのものとの間である。従って、5Tメモリセルは4Tセルが有するものの遷移数の1/4を有しており、一方6Tメモリセルは4Tセルが有する遷移数の半分を有している。各バス遷移はパワーすなわち電力を使用することに対応しているので、5Tセルは75%だけ電力消費を減少させ、一方6Tセルは50%だけ電力消費を減少させる。例えば、電源が5Vであり、電圧の振れが2Vであり、160Kのローカルバス203であり、CL=0.06pFであり、100MHzのクロック周波数であると仮定すると、4Tセル形態905(図9)を使用するチップの電力消費は10ワットである。同一のパラメータを使用した場合に、ビット組200(図7)を使用することにより、チップの電力消費は2.5ワットへ減少される。
【0050】
チップメモリへのアクセスが行なわれる場合に電力が消費される。一実施例において電力を節約するために、メモリセルへのアクセスはCLBに対するコンフィギュレーション当たり1ビットを持ったレジスタを付加することによって各コンフィギュレーションに対してCLB毎に制限される。CLB750A及び750Bを示した図7Bを参照すると、レジスタ7200及び7201はメモリセル101(図1)である。これらのメモリセルの格納されている値は、本発明のコンフィギュレーション即ち形態特定に対するメモリセル201に対するセレクトトランジスタ202を制御する(説明の便宜上、2つのコンフィギュレーション、即ち「0」及び「1」コンフィギュレーションのみ、及び2つのビット組、即ちA及びBビット組のみが図7Bに対して仮定されている)。特に、レジスタ7200の値が低状態である場合には、ANDゲート7210は論理0出力信号を供給する。このような態様で、アクセストランジスタ2020A及び2020Bはターンオンされることはなく、その際にCLB705A内のメモリセル2010A及び2010Bが読取られることがないことを確保し、その結果電力を節約している。ライン205A上のCRS信号(図2)はグローバル組205から各CLB内において局所的に発生され且つ制御レジスタビット720がセットされていない場合にはアサート即ち活性化されることはない。
【0051】
コンフィギュレーションデータビットは読取られた後にラッチ204内に格納されるので、本FPGAはコンフィギュレーションメモリの初期的な読取の後にその機能703を継続して実行する。ユーザデータ参照期間中にパワー散逸を制限するための付加的な手段は、アドレスされた列内のローカルバス線203のみが活性化されることを可能とする。典型的に、これはローカルバス線の60分の1である。
【0052】
4. 共用メモリ
本発明は、従来のLUTメモリとは異なるタイプのユーザデータメモリを提供している。特に、メモリスライスの各々は、コンフィギュレーションデータか又は読取/書込(ユーザデータとも呼称される)メモリのいずれかに割当てられている。8個のメモリスライス全てを読取/書込メモリのために使用することが可能であるが、少なくとも1個のメモリスライスは初期的にはコンフィギュレーションデータを格納している。このコンフィギュレーションデータがラッチ204内に格納されると、コンフィギュレーションメモリはユーザデータのために再使用することが可能である。
【0053】
コンフィギュレーションメモリスライスの一部は、コンフィギュレーションのその部分によって制御される論理が論理を実行しているコンフィギュレーションの残部の動作と干渉することがない場合には、ユーザデータのために使用することが可能である。コンフィギュレーションの一部の割当ては厄介な場合があるので、一実施例では各メモリスライス全体をコンフィギュレーションか又はユーザデータメモリへ割当てる。換言すると、メモリスライスがユーザデータメモリへ割当てられると、そのスライス内の全てのビットは読取/書込格納部、即ち全てのCLBに対する全体的なコンフィギュレーションワードとして使用することが可能である。従って、本発明は、ユーザに対して豊富な格納部を使用可能なものとしている。例えば、20×20アレイのCLBの場合には、RAMの約16,000バイトがメモリスライス毎に使用可能である。
【0054】
図11は本発明の一実施例のメモリのブロック図を示しており、その場合に、データバスDbus、メモリ1102、論理1101は、夫々、図7におけるグローバルバス701、メモリセルMC0−MC7、機能(関数)装置703と等価である。アドレスバスAbus及びレジスタバスRbusは一般論理及び相互接続体を使用してCLB1100において形態が特定される。一般相互接続線は、CLB1100の周辺部に位置されている専用のレジスタへの経路付けを行なう。メモリアドレスレジスタMAR1105はメモリアドレスを保持し、一方メモリデータレジスタMDR1103はメモリデータを保持する。一般論理及び相互接続体はAbus/Rbusのために使用されるので、ユーザメモリをサポートするためにCLB1100内において専用のメモリハードウエアは必要ではない。
【0055】
MDR1103の幅はプログラム可能であり、典型的な値は1,2又は4バイトである。列データレジスタCDR1108はDbus幅と同数のビットを有しており、典型的には、16×16CLBアレイに対しては256ビット幅である。CDR1108を使用することにより、CDR1108の転送毎にMDR1103の複数個の転送を行なうことが可能であり、その際に性能を向上させ且つCLB1100における行デコードを減少させている。シフタ1104はMDR1103内のデータをCDR1108内の適切なバイトへシフトさせる。CLB1100の周辺部に位置されているメモリ制御器1106は入力信号RC(読取コマンド)、WC(書込コマンド)、BURST(バーストコマンド)をCLB1100内のユーザ論理から受取る。
【0056】
図15及び16を参照して以下に説明するバースト読取(BR)及びバースト書込(BW)動作をサポートするための制御信号であるBURST信号は、CDR転送毎の複数個のMDR転送をトリガする。バーストアクセスは隣接したアドレスに制限される。何故ならば、これはデータバスDbusを介してメモリ1102とCDR1108との間で転送するデータだからである。
【0057】
ユーザ論理1101はメモリアドレス、データ寸法識別子(図11における論理1101によって発生されるSIZE信号)、及びデータを発生し、次いでこれらのパラメータ(メモリに特定の論理なしで)をMAR1105、MDR1103、CLB1100へ及びそれらから転送させる。MAR1105、MDR1103、CDR1108、シフタ1104、メモリ制御器1106、アドレスデコード・タイミングブロック1107は、全て、チップの周辺部における専用のメモリハードウエアである。
【0058】
図12はMAR1105、メモリ制御器1106、アドレスデコード1107、MDR1103、メモリ1102、CDR1108の部分をより詳細に示している(全て「A」で示してある)。シフタ1104は図12において暗示されており、それにより、Vbus1201に沿ってのCDRセルが活性化される。32ビット未満のデータ(即ち、1又は2バイト)はRbus1202、フリップフロップ1212、ラッチ1208上で右側に整列される。アライナ即ち整列器1206及び1211はデータを右側整列からVbus1201上でアドレス整列又はその逆に変換を行なう。
【0059】
クロック信号μCLKはチップ全体にわたり分布される高周波数の低スキュークロックである。そうであるから、μCLK(又は、それのイネーブルさせたもの)は、MDRセル1103Aのような専用ハードウエア、単一クロックシーケンサ(図22Aに参照して詳細に説明する)、コンフィギュレーションラッチ204(図2)、CLB常駐フリップフロップ322及び323のような形態特定可能ハードウエア及びローカルメモリ(図12には示していないが、本明細書に取込んだ1994年ザイリンクスデータブック2頁乃至13頁に詳細に記載されている)をクロック動作するために使用される。
【0060】
本装置が論理エンジンモード(以下に詳細に説明する)で使用される場合には、全てのメモリスライス信号は所定数のμCLKサイクルを有している。装置がタイムシェアリングモード(以下に詳細に説明する)で使用される場合には、任意の数のμCLKサイクルに対して単一のコンフィギュレーションが活性状態にあるが、コンフィギュレーションスイッチングは未だにμCLKに対して同期されている。従って、μCLKは、論理エンジンモードにあるか又はタイムシェアリングモードにあるかに拘らず、メモリ参照用のクロックである。
【0061】
ユーザが発生した信号であるRC、WC、SIZE(即ち、転送されるべきバイト数を表わすマルチビット値)、BURST、Abusはフリップフロップ1217においてμCLKの上昇エッジ上で捕獲される。書込信号Wはメモリ制御器1106によって供給される。組合わせ論理1218はアドレス(Abus)及びSIZE信号をアドレス行(ARi)及びアドレス列(ACj,SALK)選択信号へ変換する。信号ARi,ACj,SELkは、μCLKサイクル内に発生する読取R、書込W、バースト読取BR、バースト書込BW、形態特定CFG(図22A及び52において更に詳細に説明するシーケンサによって供給される)信号パルスをイネーブルさせる。マルチプレクサ出力信号である信号SELkは、データメモリ及びコンフィギュレーション参照のために使用される。特に、信号SELkはメモリスライスを選択する。信号PREVはデコードしたアドレス信号である。
【0062】
読取動作
メモリ読取動作の場合には、読取コマンド信号RC=1が読取セレクト信号RSEL=1とさせ(読取セレクト信号RSELは組合わせ論理1218によって供給される)、その際にトランジスタ213をターンオンさせ且つマルチプレクサ1207においてVbus1201を選択する。このような態様でVbus上の信号はラッチ1208内にラッチされ且つRbus1202上に駆動される(導通状態にあるトランジスタ1213を介して)。この読取動作期間中に、トランジスタ1215及び1216がターンオンされ、その際にメモリセルMCiからローカルバス1214へ及びDbus1205へデータを転送させる。次いで、このデータはラッチ1209内へラッチされる。トランジスタ1204は、それが導通状態にある場合に、ラッチ1209内に格納されている信号をVbus1201上へ駆動する。
【0063】
書込動作
メモリ書込動作の場合には、RC=0がトランジスタ1213をターンオフさせ且つRbus1202上のデータ(フリップフロップ1212内に格納されている)が書込動作のためにVbus1201へ転送されるようにマルチプレクサ1207におけるフリップフロップ1212を選択する。この書込動作期間中に、トランジスタ1203,1216,1215はVbus1201からDbus1205へデータを転送し、Dbus1205からローカルバス1214へ転送し、且つローカルバス1214からメモリセルMCiへ転送する。この駆動は、メモリセルMCiの試みによる駆動に打ち勝つのに充分に強いものである。一列内の選択したメモリセルMCiのみが書き込まれ、その場合にこのような選択はトランジスタ1203によって制御される。特に、トランジスタ1203がアドレスAriに対してオフである場合には、Dbus1205上の駆動のみがメモリセルMCiによって供給されるものであり、従ってメモリセルMCi内の値は不変のまま溜まる。
【0064】
非バースト読取動作(単一サイクル)
図13は非バースト読取動作タイミング線図を示している。アドレスバスAbus上の信号がμCLK上昇エッジでサンプルされ、その際に1つのμCLKサイクルに対し安定なACj,Ari信号を発生する。安定な信号ACj,AriはRパルスをイネーブルさせ、それはメモリセルMCiからローカルバス1214(図12)へ、Dbus1205へ、次いでVbus1201へのデータの伝搬を開始させる。このデータは、次いで、アライナ(整合器)1206によって整合され、マルチプレクサ1207を介して転送されラッチ1208内へラッチされ、導通状態にあるトランジスタ1213によって転送され、最後にRbus1202上に供給される。次いで、そのデータは図13に示した如くμCLKの2番目の上昇エッジでサンプルされる。従って、読取動作の場合には、1つのμCLKサイクルにおけるAbus上のアドレス信号は次のμCLKサイクル上でRbus1202上にデータを発生する。このデータは、μCLKレートでデータを発生させるためにパイプライン動作させることが可能である。
【0065】
(i)uCLK信号がアドレスバスAbus上の信号と共にMAR1105をロードし且つ読取制御信号RCがuCLK信号と共にラッチされる。この時間における信号Ari及びAcj(夫々、行アドレス及び列アドレス)がMAR1105の信号を反映する。ラッチした信号RSELは、レジスタバスRbusではなくメモリ1102がラッチ1208をロードするようにMDR1103内のマルチプレクサ1207を制御する。[即ち、読取メモリデータをCLB論理内へ]
(ii)格納したデータメモリ1102は信号R*ACj=1を受取った後にラッチ1209へ転送される。ラッチ1209は、信号R*Ari=1である場合に垂直バス1201へ結合される。垂直バス1201は、信号R=1でラッチ1208へ結合される。
【0066】
非バースト書込動作
図14は非バースト書込動作のタイミング線図を示している。Abus上の信号がμCLKの上昇エッジでサンプルされ、その際に1つのμCLKサイクルに対し安定なACj,ARi(夫々、列及び行アドレス)を発生する。安定な信号ACj,ARiは、Wパルスをイネーブルさせ、該パルスは、ラッチ1208からアライナ1211を介してVbus1201へ、導通状態にあるトランジスタ1203を介してDbus1205へ、導通状態にあるトランジスタ1216を介してローカルバス1214へ、トランジスタ1215を介してメモリセルMCiへのデータの伝搬を開始させる。
【0067】
(i)uCLK信号はアドレスバスAbus内容上の信号と共にMAR1105をロードし、且つ信号RCはuCLK信号と共にフリップフロップ1217内へラッチされる。この時間における信号Ari,ACjはMAR1105の信号を反映する。RC=0のラッチされた信号は、メモリ1102ではなくレジスタバスRbusがラッチ1208をロードするように、MDR1103内のマルチプレクサ1207を制御する。信号WC=1の場合には、その信号は信号Wを発生するシーケンスを開始させる。
【0068】
(ii)ラッチ1208内に格納されている信号は、信号W=1の場合に、垂直バス1201へ転送される。垂直バス1201上の信号は、信号W*ARi=1の場合にデータバスDbusへ転送される。
【0069】
バースト読取動作
バースト読取(BR=1)は、Ariが各読取動作と共に変化しながら、CDRロード当たりCDRを複数回読取ることによって画定される。BR信号は性能を改善する。何故ならば、それはメモリセルMCiからの同数の読取よりも高速だからである。
【0070】
図15はバースト読取動作のタイミング線図を示している。μCy1期間中、読取パルスRはメモリセルMCiへアクセスする(Rパルスがトランジスタ1215のゲートを制御する図12を参照)。
【0071】
一実施例においては、読取アクセスはCLB当たり16ビットをCLB列からCDR1108A内へロードする。CDR1108(図11)は複数個のCDRセル1108Aを有しているので、爾後の読取がこれらのCDRセルに対してのものである場合には、読取動作はメモリセルMCiからではなくCDR1108から容易に実施することが可能である。従って、メモリセルMCiはμCy2乃至μCy4に対して二度アクセスされる必要はなく、その際にこれらのサイクルを短縮化している。再度図15を参照すると、信号BRはデータビットd1,d2,d3へアクセスする(信号BRは図12のトランジスタ1204及びラッチ1208を制御する)。
【0072】
バースト読取プロセスは以下のステップを有している。
【0073】
(i)マイクロサイクル0(uCy0)期間中、ユーザはアドレスバスAbus上のアドレス信号a0−a3のアサート(活性化)を開始し且つ信号RC=1を供給する。信号BURST=0は非バースト読取であることを意味している。これらの信号は次のuCLKの上昇エッジでサンプルされる。
【0074】
(ii)uCy1期間中、uCy0においてアソートされた即ち活性化された信号RCが実行される。データビットd0/d1/d2/d3を包含するメモリ列全体(各データ「ビット」は複数個のビットを含んでいる)がデータビットd1/d2/d3を得るためにメモリ1102の代わりに現在アクセス可能なテンポラリレジスタCDR1108内へラッチされる。データビットd0もMDR1103へ供給される。uCy1においてアソートされた両方の信号RC=1=BurstがマイクロサイクルuCy2においてCDR1108へアクセスする。
【0075】
(iii )uCy2及びuCy3期間中、データビットは継続してアドレスAriに関してインクリメントし且つ信号RC=1=Burstをアサートする。更に、ユーザは書込を行なう前に各サイクル毎にMDR1103を読み出さねばならない(Rbus1202上)。
【0076】
(iv)マイクロサイクルuCy4期間中、それは最後のサイクルであるが、RC=0=Burst(又は別の基準)の信号を発生する。
【0077】
バースト書込動作
バースト書込(BW=1)はメモリセルMCiに対するCDR書込毎にCDR内に複数回書込を行なうことによって画定され、その際に全ての書込に関してメモリセルMCiに対して書込を行なうことの必要性を取り除いている。
【0078】
図16はバースト書込動作のタイミング線図を示している。この動作期間中、フリップフロップ1212、マルチプレクサ1207、ラッチ1208、アライナ1211、最後にトランジスタ1203を介してのRbus1202からの複数サイクルのデータがラッチ1209(図12)内へロードされる。信号ARiは図16に示したようにシーケンス動作され、ラッチ1209内の複数個のデータ要素をアドレスする。マイクロサイクル4において、最後のデータ要素が、トランジスタ1219を介してメモリセルMCi内のDbus1205を駆動する前にロードしたCDRデータと並列的に、メモリセルMCi内へDbus1205へのトランジスタ1203を介してリップル動作する。トランジスタを制御する信号、即ち信号W*Prevにおいて、前のバーストサイクルにおいてロードされているアドレスに対してPrevは「1」に等しい。図16において、Prev=a0+a1+a2である。
【0079】
バースト書込プロセスは以下のステップを有している。
【0080】
(i)uCy0期間中、ユーザはアドレスバスAbus上のアドレス信号a0及びそのアドレスに対するレジスタバスRbus上のデータ信号d0をアサート即ち活性化させる。両方の信号ともWC=Burst=1である。
【0081】
(ii)uCy1期間中、uCy0においてアサートされた信号WCは実行される。データ信号d0はアドレス信号a0によって決定されたCDR1108のバイト内へロードされる。同時的に、ユーザはアドレスバスAbus上のアドレス信号a1及びレジスタバスRbus上のデータ信号d1をアサートする。
【0082】
(iii )uCy2及びuCy3期間中、データ信号d1及びd2はアドレス信号a1及びa2によって決定されたCDR1108のバイト内へロードされる。ユーザはアドレスバスAbus上のアドレス信号a3及びa4及びレジスタバスRbus上のデータ信号d3及びd4をアサートする。uCy3期間中、ユーザはWC=1をアサートするが、メモリ制御器1106をトリガするBURST=0をリターンさせて、バースト動作期間中にCDR1108内へロードされた全てのバイトをuCy4においてメモリへ書き戻させる。
【0083】
(iv)uCy4期間中、それは最後のサイクルであるが、CDR1108の修正したバイトが最終的なデータ要素と共にメモリセルMCiへ書込まれる。CDR1108の修正していないバイトはCDR1108からデータバスDbus上へ駆動することがないことによって書込まれることはない。
【0084】
以下の説明は、どのようにしてコンフィギュレーションメモリアクセスがユーザメモリアクセスとインターリーブされるかを説明する。一例においては、コンフィギュレーションアクセスは信号CRS0乃至CRS7のサブセットであるCRSi信号のシーケンスであり、一方ユーザメモリアクセスはコンフィギュレーションサブセット内に存在しないCSRjアクセスである。
【0085】
図18は図17に示したコンフィギュレーションに対する書込動作のタイミング線図を示している。3つのマイクロサイクル(uCy1,uCy2,uCy3)が図18に示されており、各マイクロサイクルはCLBアレイに対し異なるコンフィギュレーションを有している。アクセス信号CRS1はuCy1に対するコンフィギュレーションを画定する。同様の態様で、アクセス信号CRS2及びCRS3は、夫々、uCy2及びuCy3に対するコンフィギュレーションを画定する。アサートした信号CRS2及びCRS3の間において、ユーザアクセス信号CRS7が与えられる。書込(W=1)信号がこのユーザアクセス信号期間中にアサートされる。アドレス信号(Abus上)及び書込データ信号(Rbus上)はuCy1においてユーザ論理によって画定されており、それら両方を次のマイクロサイクルクロックでラッチし、従ってそれらはuCy2に対して使用可能である。8個のCRS信号の場合、3個のアドレスビットがユーザアクセスに対する信号CRSn(この例においてはCRS7)を選択するために使用される。各コンフィギュレーションはMDR1103(図11)とインターフェースするそれ自身の組のレジスタを有している。
【0086】
5. チップレイアウト
本発明の一実施例によれば、時間多重型FPGA集積回路チップはザイリンクスXC4000(商標)ファミリィの装置のアーキテクチュアに基づいている。
図23はチップレイアウトと同一のトポロジィを有するビット組200(図2)の2×5アレイ2300を示している。ビット組列2300A及び2300Bは、両方とも、5個のラッチ出力線23200 −23204 を提供する。スプリッタトランジスタ2301A及び2301B(夫々ライン702A及び702B上のアドレス信号によって制御される)は、マルチプレクサトランジスタ2303及びスイッチ2302をビット組列2300A及び2300Bの間で共用することを可能とし、一方全てのトランジスタ2301がターンオフされている場合に両方の列がラッチ204を並列的にロードすることを可能とする。信号Y0乃至Y4は、グローバルバス701転送に対してどの行が選択されるかを決定する。トランジスタ2302は、アレイ2300の1ビット組列をグローバルバス701へ選択的に結合させることを可能とする。
【0087】
図24は3つの列、即ち列2401A,2401B,2401Cを含むCLBレイアウトを示しており、その場合に各列2401は16個のアレイ2300(図23)を有している。列2401A及び2401Cは隣接するCLB(不図示)で共用され、一方列2401BはCLB2400によって使用される。2つの論理セクション、即ちIO2403及びCLE2402が隣接するアレイ2300のラッチ出力によって供給される。この実施例においては、各論理セクションは160個のラッチによって供給される。
【0088】
6. リコンフィギュレーション(再形態特定)
従来のFPGAリコンフィギュレーション、即ち再形態特定は、FPGAの状態をリセットすることなしに、オフチップからの新たなコンフィギュレーションデータのローディングを行なっている。このことは、FPGAが動作中に実施することが可能であり(ダイナミックリコンフィギュレーション即ち動的再形態特定)と呼ばれる)且つ全コンフィギュレーションデータパターンを再ロードする必要性なしにコンフィギュレーションのある部分に対してのみのものとすることが可能である(即ち、部分的再形態特定)。対照的に、本発明は、オンチップ即ちチップ上に複数個のコンフィギュレーション(形態)を格納する能力を与えることによって、従来のリコンフィギュレーション(再形態特定)モードのスーパーセットを画定する。
【0089】
タイムシェアリングモードにおける一実施例において、FPGAが第一コンフィギュレーションに基づいて動作し、一方部分的な又は全体的な新たな組のコンフィギュレーションデータがメモリスライスの1つ又はそれ以上のものの中へロードされる(オフチップから)。(注意すべきことであるが、この動作は、論理エンジンが8個のメモリスライスに等しいか又はそれ未満のものを使用する場合には、論理エンジンモードにおいても動作する。)次いで、フラッシュリコンフィギュレーション動作によって第二コンフィギュレーションデータが並列的に活性化される。この動作は、システムのブートアップの後に付加的なコンフィギュレーションデータがオフチップから持ち込まれるという点において、通常のフラッシュリコンフィギュレーションとは異なる。このオフチップ能力は、ユーザが、8個のみ(本発明の一実施例を参照して上述した)ではなく無制限の数のコンフィギュレーションの間で変更することを可能としている。クロック速度に依存して、リコンフィギュレーション(再形態特定)はオフチップから各新たなコンフィギュレーションワードをロードするのにミリ秒を必要とする場合がある。然しながら、注意すべきことであるが、FPGAはこの時間期間中いまだに活性状態にある。専用のリコンフィギュレーションハードウエアがユーザメモリインターフェースのメモリアクセス機能を共用することが可能であるか、又はユーザ論理がリコンフィギュレーション(再形態)を制御することが可能であるか、又はその両方である。
【0090】
7. 単一クロックシーケンサ
本発明によれば、シーケンサが、リコンフィギュレーション(再形態特定)を開始させ、リコンフィギュレーションを終了させ、且つコンフィギュレーションシーケンス動作を管理するための制御信号を発生する。好適には、シーケンサはユーザ論理によって制御されるか又はそれから形成され、その際に入力信号と出力信号の任意の組合わせを使用して論理を形成する場合にユーザが著しい柔軟性を有することを確保している。
【0091】
7.1 コンフィギュレーションシーケンス動作
シーケンサは、プログラムすることによって次のコンフィギュレーション即ち形態を選択する。前述したように、次のコンフィギュレーションは逐次的に選択されるか、又はアドレスで直接選択される。そのアドレスは外部的に発生させるか(即ち、FPGAチップのピンへ供給する)、又は内部的に発生させることが可能である。従って、次のアドレスは内部又は外部論理に関して条件付けすることが可能である。次のコンフィギュレーションへのスイッチは、外部信号、内部信号又はナノサイクルの数のカウントによって代替的に支配される(尚、ナノサイクルは200MHzの程度の非常に高速の内部クロックである)。注意すべきことであるが、一実施例においては、シーケンス動作方法の選択は1つのコンフィギュレーションと次のコンフィギュレーションでは異なっている。
【0092】
一実施例においては、FPGAは複数個のシーケンサを有しており、その各々がFPGAの異なる部分を制御する。該シーケンサは、ロック(lock)ステップで動作し、単一のシーケンサをエミュレートするか、又は独立的に動作して、複数個のユーザクロックで動作することを可能とする。
【0093】
論理エンジンモードにおける本発明によれば、フラッシュリコンフィギュレーション(即ち、メモリスライスのコンフィギュレーション)が2つの方法のうちの1つにおいて発生する。第一の方法においては、フラッシュリコンフィギュレーションは選択した入力信号(又はいずれかの入力信号)によってトリガされる。チップは、選択した組の入力信号のうちの1つが変化するまで(即ち、高状態又は低状態へ移行するまで)何等計算をすることなしに(低電力消費状態)待機する。この時点において、チップは、内部又は外部信号がストップ条件を表わすまで、1つの主要なサイクル(尚、1つの主要なサイクルは全てのリコンフィギュレーションを介しての完全な繰返しである)、固定した数の主要なサイクル、又は多数の主要なサイクル又はリコンフィギュレーションと関連するリコンフィギュレーションを実行する。
【0094】
第二の方法においては、フラッシュリコンフィギュレーションは連続的なリコンフィギュレーションシーケンス動作を含んでいる。特に、チップは何等特定の外部信号を考慮することなしに全ての又は幾つかのリコンフィギュレーションを介して断続的にサイクル動作する。
【0095】
7.2 コンフィギュレーション期間
論理エンジンモードにおいては、マイクロサイクル期間は、次のコンフィギュレーションへ進行する前に最も長いネットが安定化するのに充分に長いものでなければならない。本発明は、シーケンサにおける以下の代替物を提供している。
1.固定マイクロサイクル期間
全てのネット遅延はこの時間拘束条件を満足するのに充分に短いものでなければならない。一実施例においては、この時間拘束条件の実行はどのような可能な経路も予め設定した限界よりも長いものでないようにアーキテクチュア(即ち、ハードウエア)において行なわれる。別の実施例においては、その施行は時間制限を超えるネットを再経路付けすることによってソフトウエアで行なわれる。
【0096】
2.設計毎の可変マイクロサイクル期間
特に、ユーザが正規のマイクロサイクルクロックを供給することを可能とする。
【0097】
3.マイクロサイクル毎の可変マイクロサイクル期間
マイクロサイクル期間を変化するのには幾つかの方法がある。同期的方法においては、各マイクロサイクルコンフィギュレーションは期間フィールドを有している。このフィールドは固定した遅延を選択し、その場合に、固定した遅延の寸法は以下の方法のうちの1つによって設定される。
【0098】
a.チップ内に遅延を構築する。
【0099】
b.チップがどのように配線されるかによって(即ち外部遅延回路)遅延を決定する。
【0100】
c.チップのコンフィギュレーション情報内に遅延を設定する。
【0101】
d.マイクロサイクルにおけるナノサイクル数の各マイクロサイクルとカウントとを関連付ける。ナノサイクルはナノサイクルクロックと呼ばれる非常に高速の内部クロックのサイクルである。
【0102】
e.外部トリガ、例えば、不規則的なパルスを有する外部マイクロサイクルクロックに基づいて1つのマイクロサイクルから次のマイクロサイクルへ進行する。
【0103】
f.内部信号が到着する場合に次のマイクロサイクルへ進行し、その場合にその内部信号は、それがマイクロサイクルにおける最も遅い経路をトラバースするように経路付けされる。
【0104】
g.インタラプトアドレス信号を使用して、マイクロサイクルシーケンスをトリガしてすぐさま新たなアドレスへジャンプし且つその点から動作を継続する。
【0105】
h.シーケンサへ供給された内部信号に基づいて2つのアドレスのうちの1つを選択する。換言すると、この代替方法は次のマイクロサイクルへの条件付きジャンプを与える。別の実施例においては、複数個の内部信号が供給され、その場合に、各内部信号は異なる次のアドレスを選択する(即ち、マルチウエイ分岐)。所定のシーケンス動作の場合(即ち、コンフィギュレーションのスキップがない)、これらのビットは定数に対して配線されねばならない。更に別の実施例においては、次のアドレスはマイクロサイクルにおいてユーザ論理によって計算される。一実施例においては、シーケンサは現在のコンフィギュレーションを保存し且つそのコンフィギュレーション又は次のコンフィギュレーションへ復帰し、その際にサブセットのコンフィギュレーションに対しての「サブルーチンコール」を効果的に与える。
【0106】
論理エンジンモードにおいては、新たなメモリスライスに対する読取アクセス時間は、次のコンフィギュレーションに対するメモリの読取が現在のコンフィギュレーションの論理と並列的に行なわれるようにパイプライン動作され、その際にリコンフィギュレーション時間を最小としている。
【0107】
7.3 同期型FPGAに対するマイクロサイクル発生
アナログ自己同期型回路は当該技術分野において公知である。図19は従来のアナログ自己同期型回路1910を示しており、それはANDゲート1904及び3個のインバータ1905,1906,1907を有している。ANDゲート1904は信号1900及び信号1901(信号1900の反転されたもの)を受取る。図20における回路1910の関連するタイミング線図に示したように、信号1901はインバータ1905によって多少遅延されている。ANDゲート1904は信号1902を出力し、その場合に信号1900と1901の両方が高状態である場合にのみ信号1902は高状態である。信号1902は更に反転され、従ってインバータ1906及び1907によって二度遅延される。この二度遅延された信号1903を図20に示してある。従って、回路1910は複数個のクロック、即ち信号1902及び1903を形成する。
【0108】
然しながら、回路1910はインバータ1905,1906又は1907の遅延を制御するためのフィードバックを与えるものではない。従って、該インバータによって与えられる遅延が小さすぎる場合には(典型的に、処理又は環境変動によって発生される)、信号1902及び1903のパルス幅は回路条件を満足するのには小さすぎるものとなる。このような態様で、外部クロック、即ち信号1900が遅滞化しても、チップは動作することはない。換言すると、アナログ自己同期型回路は、それが機能障害を起こしている場合には、典型的に、どのような速度においても機能不全である。
【0109】
対照的に、本発明はデジタルタイミング割当を形成し、それはチップが動作上機能的なものとさせるために外部クロックをスローダウンさせることを可能とし、その際にアナログ自己同期型回路1910よりもより信頼性のある正確な複数個のクロックを供給する方法を提供している。一実施例においては、時間多重型FPGAは、外部サイクル毎に複数個の内部サイクルが発生するように、外部クロック周波数の倍数である内部クロック周波数を与える。図21を参照すると、外部クロック2101はフェーズロックループ(PLL)2107に対してクロック信号を供給する。PLL2107は、典型的に、位相検知器2102、ローパスフィルタ(LPF)2103、オシレータ2104を有している。オシレータ2104は外部クロック2101によって与えられるクロック信号の倍数である周波数で動作する。
【0110】
分周器2105は、外部クロック2101によって与えられた信号周波数を近似するためにオシレータ周波数を分周する。外部クロック2101によって与えられた入力クロック信号に対してのこれらの出力信号の正確な同期を確保するために、フィードバック線2106が位相比較器2102へ結合されている。位相比較器2102は入力線2108上に与えらえた周波数とフィードバック線2106上の周波数とを比較する。位相比較器2102はこれら2つの周波数の間の位相差によって決定される出力位相エラー信号を発生する。ライン2106上の周波数がライン2108上の周波数と等しくない場合には、位相エラー信号は、LPF2103(これはジッタを補正する)によってフィルタされた後に、オシレータ2104の周波数をライン2108上の周波数の方向へそらさせる。
【0111】
本発明によれば、高内部オシレータ周波数(即ち、5ナノ秒周期)は全ての内部サイクルをオシレータ周期の倍数とすることを可能とする。特に、オシレータ2104の周波数が高ければ高い程、可能な内部サイクルはより精細に同調され、即ちより短いものとなる。例えば、オシレータ2104が200MHz(即ち5ナノ秒周期)の周波数を与えるものと仮定すると、単一クロックシーケンサ(図22Aを参照して詳細に説明する)は5ナノ秒又はその倍数の内部サイクルを供給することが可能である。本発明においては、内部サイクルは等しいものである必要はないが、内部サイクルの全ての和は外部サイクルと等しい。
【0112】
コンフィギュレーションブロック2109からのコンフィギュレーションビットは、フィードバック線2106に対しての分周を選択するように分周器2105をプログラムし、その際に外部クロック2101の周波数範囲を拡張させる。分周器2105は従来の二進カウンタであって、分周器が0に到達するたびにコンフィギュレーションブロック2109によってプリセットされる。
【0113】
図22Aは本発明の一実施例における単一クロックシーケンサ2201を示しており、それはその動作を制御するためにCLB1100からユーザが発生した信号を受取る。特に、ユーザが発生した信号JumpComm(即ち、ユーザ論理から発生され且つ、例えば、マルチプレクサ315(図13)によって与えられる)は、単一クロックシーケンサ2201に対してそのプログラムされたシーケンスのコンフィギュレーションからそれることを支持し、一方ユーザが発生した信号JumpAddr(典型的に3ビット)は、どのスライスへ単一クロックシーケンサ2201がジャンプするかを決定する。単一クロックシーケンサ2201はいつ及びどこへジャンプするかを決定する場合に論理1101を助けるために、ユーザ論理1101に対して現在のスライスアドレス信号CurrentAddrを供給する。
【0114】
単一クロックシーケンサ2201は、3つのフィールド、即ちNextAddr,JumpEn,Durationへ分割されている複数個のビットを具備するシーケンステーブル2202を有している。ビットNextAddr0乃至NextAddr7は夫々のメモリスライスに対するアドレスである(即ち、NextAddr0はスライス0に対するもの等)。ビットJumpEn0乃至JumpEn7は、ユーザジャンプコマンドをそのメモリスライスに対して実行すべきか否かを決定する。ビットDuration0乃至Duration7は、夫々のメモリスライスの期間を表示する。一実施例においては、シーケンステーブル2202のビットはコンフィギュレーションビットストリームによって供給され、一方その他の実施例においては、これらのビットはユーザ論理1101によって供給される。
【0115】
本発明によれば、単一クロックシーケンサ2201の動作はモードに依存するものである。例えば、
(i)タイムシェアリングのみのモード又はタイムシェアリング+スタティックモードにおいては、nanoclock(nCLK)はマイクロクロック(uCLK)へ等しく(タイムシェアリングモード信号TSmodeによって設定される)、且つコンフィギュレーションスイッチのみがユーザ論理ジャンプによるものである。この場合には、NextAddrは循環される。換言すると、次のアドレスは現在のアドレスである。
【0116】
(ii)いくらかのタイムシェアリングといくらかの論理エンジンCLBが存在する混合モードをサポートする実施例においては、第二単一クロックシーケンサが必要となる。即ち、1つのシーケンサは論理エンジンモード用であり且つ別のシーケンサはタイムシェアリングモード用のシーケンステーブルのないものである。その実施例においては、各シーケンサ2201は別個のJumpComm及びJumpAddr入力ビット及び別個のCurrentAddr出力ビットを有している。
【0117】
(iii )論理エンジンモードのみ又は論理エンジン+スタティックモードにおいては、単一クロックシーケンサ2201が使用される。
【0118】
注意すべきことであるが、図22Aに示した単一クロックシーケンサ2201は、例えば当該技術分野において公知な例えばリセット等の特徴を有しているが、その詳細な説明は割愛する。
【0119】
単一クロックシーケンサ2201の定常状態動作は以下のとおりである。
【0120】
(i)スライス0の活性化期間中に、フリップフロップ2204は「0」を有しており且つアドレスデコーダ2203はシーケンステーブル2202からスライス0の値を選択する(即ち、NextAddr0,JumpEn0,Duration0)。
【0121】
(ii)NextAddr0は、ジャンプがとられない場合に、次のuCycleに対するメモリスライスの番号を与える。JumpEn0はジャンプが可能であるか否かを決定する。従って、JumpEn=0である場合には、JumpCommは無視される。
【0122】
(iii )JumpEn0=1である場合には、ユーザ論理1101(図11)は3ビットアドレスJumpAddrを供給し且つJumpComm上でジャンプコマンドを発生することによって、次のコンフィギュレーションに対するメモリスライスアドレスを決定する。ユーザ論理1101はCurrentAddrに関する現在のコンフィギュレーションアドレスを使用してJumpAddrを計算する(換言すると、ユーザ論理1101はアクティブ即ち活性状態にあるスライスに依存してジャンプを表示する)。
【0123】
(iv)カウンタ2205は現在のuCycleに対するナノサイクル即ちnanocyleをカウントする。例えば、カウンタ2205がDuration0でロードされたと仮定すると、0へカウントダウンし(カウンタ2205上での「=0」信号)、且つ新たなuCLKパルスを発生し、それはフリップフロップ2204をロードし且つ次のuCycleでプロセスを再開始する。
【0124】
本発明によれば、ユーザは、あるスライスに対するシーケンサテーブル2202内の選択したNextAddr信号が使用されないように、即ち8未満のシーケンスに対して、NextAddr値をプログラムすることが可能である。3つのコンフィギュレーションのシーケンスに対するタイミングを図22Bに示してある。特に、最初のuCycle(uCLKパルス2210によって示してある)は、3つのナノクロック2211を有しており、2番目のuCycle(uCLKパルス2212によって示してある)は5つのナノサイクル2213を有しており、且つ3番のuCycle2214(uCLKパルス2214によって示してある)は4個のナノサイクル2215を有している。注意すべきことであるが、uCLKパルス2210は「2」のカウンタ値のローディングをトリガし、uCLKパルス2212は「4」のカウンタ値のローディングをトリガし、且つuCLKパルス2214は「3」のカウンタ値のローディングをトリガする。ローディングの後に、各ナノサイクルパルスは「0」が発生されるまでカウンタ値を「1」だけ減少させる。0が発生されると次のuCLKパルスをトリガする。8. 動作モード
本発明に基づくFPGAは3つのモードで動作する。第一のモード、即ちタイムシェアリングモードにおいては、フラッシュリコンフィギュレーション当たり複数個のユーザサイクルが存在している(例えば、複数個のユーザクロックサイクルに対してFPGAは単一のコンフィギュレーションに溜まる)。フラッシュリコンフィギュレーション(再形態特定)は、通常、信号によってトリガされ、且つ典型的には予め定めたシーケンスのコンフィギュレーションは存在しない。第二のモードである論理エンジンモードにおいては、ユーザサイクル当たり複数個のフラッシュリコンフィギュレーション(マイクロサイクル)が存在している。このモードにおいては、フラッシュリコンフィギュレーションは、通常、予め定めたシーケンスのコンフィギュレーションで継続的にシーケンス動作される。第三のモードであるスタティックモードにおいては、多くのコンフィギュレーションが同一である。換言すると、FPGAがリコンフィギュア即ち再形態特定が行なわれる場合に実行中の論理は同一のままであり、その際に永久的に常駐しているように見える。このモードにおいては、フラッシュリコンフィギュレーションは上述した方法のいずれかによってトリガされる。幾つかの実施例では1つのモードにおいて排他的に動作するが、他の実施例は逐次的か又は同時的かのいずれかにおいて複数個のモードで動作する。これらのモードの各々については以下に詳細に説明する。
【0125】
8.1 タイムシェアリングモード
図25を参照すると、タイムシェアリングモードにおいては、FPGAは、同時的に動作状態となることが必要ではない異なる機能をサポートするために、複数個のコンフィギュレーション2500、即ちメモリスライス0−7でプログラムされる。図示した形状2501の各々は任意の寸法(例えば、CLBの数)及び形態(例えば、経路付け構成体)の論理関数を表わしている。論理関数2501A−2501Hが図25に示されている。1つのシーケンス動作において、FPGAは初期的にある論理関数(例えば、2501A)を実行すべくプログラムされており、次いでフラッシュリコンフィギュレーションによって再形態特定されて異なる論理関数(例えば、2501H)を実行する。FPGAはユーザ論理において発生されるか又は外部ピンによって与えられる信号に応答していずれかの論理関数からいずれかのその他の論理関数へスイッチする。
【0126】
この実施例においては、FPGAはオンチップ即ちチップ上に同時的に最大で8個の別個のコンフィギュレーションを格納する(各々は異なるメモリスライスに格納される)。フラッシュリコンフィギュレーションが発生すると、CLBの出力の状態が自動的に前述したマイクロレジスタ内へ格納され、その際にコンフィギュレーション間においてパラメータをパスさせることを可能としている。前に使用したコンフィギュレーションを再度呼ぶ場合には、コンフィギュレーション動作がそれが中断した箇所から再開することが可能であるように全ての以前の状態を回復することが可能である。
【0127】
図25に示したように、各論理関数2501は所定数のゲートを必要とする。従来技術においては、例えば400個のCLBからなるアレイが10,000個のゲートの論理を実現していた。然しながら、本発明の時間多重能力によれば、最大で80,000個のゲートの論理を実現可能である(8×10,000)。図25は、400個のCLBからなるアレイにおいて62,000個のゲートの論理が実現されている実施例を示している。
【0128】
図4を参照すると、ラッチされた信号QOLDは、マイクロレジスタ324へ供給することに加えて、フリップフロップ322へも供給される。上述したタイムシェアリングモードにおいては、新たなコンフィギュレーションの最初のサイクル上で(それはアクティブグローバル信号FirstCycによって表わされる)、信号QOLDはフリップフロップ322のQ出力端子へ回復される。これと対比して、スタティックモードにおいては(セクション8.3参照)、信号FirstCycはコンフィギュレーションビットを具備するスタティックモードCLBにおいて局所的に禁止され、その際に信号QOLDがフリップフロップ322内へロードされることを防止する。特に、その他の周辺論理(不図示)は信号FirstCycを発生する。この信号は、コンフィギュレーションビットと共にゲート動作され、その際に信号FirstCycを禁止させるか又はアクティブ即ち活性な信号FirstCycを供給する。
【0129】
1つのコンフィギュレーションから別のコンフィギュレーションへ変化するビットによって制御されるライン上でグリッチが発生する場合がある。これらの可能性のあるグリッチはスタティックモードフリップフロップ接続を制限する。特に、組合わせ論理と対比して、殆どのフリップフロップ入力信号はグリッチがフリップフロップ状態を変化させることを防止するために常にグリッチがない状態に維持されねばならない。従って、例えばC及びSR等の信号は、それらの供給源へ至るまでずっとグリッチのないものでなければならず、これらの経路上全てにおいてコンフィギュレーションビット制限を暗示している。更に、信号D及びECはクロック信号Cと相対的なあるセットアップ及びホールド時間に関し有効なものである必要がある。非同期的クロックの場合には、信号Cはコンフィギュレーションスイッチング時間に対し何等関係を有するものではないので、信号D及びECはコンフィギュレーションスイッチに基づく任意の時間においてグリッチを有することができず、その際に信号C及びSRと同一の制限を暗示している。
【0130】
8.2 論理エンジンモード
論理エンジンモードにおいては、FPGAは、幾つかのステージに分かれた単一の大きな設計を実現すべくプログラムされており、各ステージは1つのコンフィギュレーションである。FPGAは、典型的に、各論理部分を介しての信号伝搬速度と同等の速度で所定の順番で全てのコンフィギュレーションを介してシーケンス動作する。1つのコンフィギュレーションにおいて実行された論理の結果は後のコンフィギュレーションで使用するためにマイクロレジスタ内に格納される。この設計におけるフリップフロップ内に格納すべき結果はマイクロレジスタ内に格納され且つマイクロサイクルを介して後のパスにおいて使用される。このプロセスはCLBの再使用のために従来のFPGAよりも遅いが、チップ容量は著しく増加される。
【0131】
このモードにおいて、各フラッシュリコンフィギュレーションは「マイクロサイクル」と呼ばれる。全てのマイクロサイクルを介しての1つの繰返しは「主要なサイクル」と呼ばれる。「ユーザサイクル」はユーザの最も速いクロックサイクルにおける時間である。典型的に、出力信号はユーザサイクル当たり一度アップデートされねばならない。簡単な場合においては、ユーザサイクルは主要なサイクルと同一である。全てのユーザ論理が同期的であり且つ一つのクロックのみが存在するか(「ユーザ」クロック)、又はその他の全てのクロックがユーザクロックから派生される場合には、そのユーザクロックは主要なサイクルと同一であるユーザサイクルを画定する。ユーザクロックは全てのコンフィギュレーションを介してシーケンス動作するマイクロサイクルをトリガするか、又はシーケンサは全てのマイクロサイクルを介して断続的にサイクル動作することが可能である。注意すべきことであるが、主要なサイクルはユーザクロックと同期させることが可能である(例えば、コンフィギュレーション0はユーザクロックの上方向遷移と同期させることが可能である)。
【0132】
典型的に、論理エンジンモードにおいては、ユーザの設計における組合わせ論理がLUT又はFPGA上で使用可能な論理原始要素に分割される。あるデザイン(設計)におけるLUT「レベル」は以下の如くに定義される。フリップフロップ出力端子及びチップ入力ピンへの接続のみを有するLUTのレベルは「1」であり、一方その他全てのLUTのレベルはその入力信号を発生するLUTの最も大きなレベルよりも1つ大きなものである。組合わせ論理サイクルはLUT出力信号に依存するLUT入力信号を無視することによって分解される。このデザイン(設計)における任意のLUTの最も大きなレベルはこの設計の深さと呼ばれる。
【0133】
論理をマイクロサイクルへ分割する場合に、1つのLUTから次のものへの直列接続は、その信号の供給を発生するLUTは、その信号の全てのディスティネーション(宛先)よりも1つのマイクロサイクル先に(又は同一のマイクロサイクル)評価されねばならない。従って、各LUTはそのレベルに対応するマイクロサイクルにおいて評価され、その場合にLUT出力信号はマイクロレジスタ内に保持される。その設計のレベル及び深さは、その論理を評価するのに必要とされるマイクロサイクルの数を表わす。これらの制限については図26及び30を参照して後に説明する。
【0134】
前述したようにLUT及び相互接続体は、論理エンジンモードにおいては各マイクロサイクルに対して再形態特定が行なわれ、中間状態は後のマイクロサイクルにおいてアクセスするためにマイクロレジスタ内に保持される。図26に示した例においては、5個の仮想LUT2601−2605を必要とする回路設計が、単に3個の実際のLUTを使用して実現されている。第一マイクロサイクル期間中、即ちμcycle 0期間中に、LUT2601−2603がコンフィギュア、即ち形態が特定され、ネット1−8から信号を受取り、且つネット9,10,11上にその結果を発生する。ネット9,10,11の状態は、マイクロレジスタ内にラッチされ、且つ第二マイクロサイクル、即ちμcycle 1に対応する新たなコンフィギュレーションワードが読取られる。μcycle 1において、LUT2604は、μcycle 0において前に使用したLUT302−304(図3)のうちの1つを再度使用することによって実現される。ネット10及び11へのアクセスは、出力マルチプレクサ313−320(図3)のうちの3つを介して行なわれる。同様の態様において、μcycle 2において、LUT302−304(図3)のうちの1つを再度使用することによって、LUT2605が構成される。
【0135】
説明の便宜上、図26は3つのマイクロサイクルを示しているに過ぎない。然しながら、8個のメモリスライスの全てがコンフィギュレーションデ−タのために使用されるものと仮定すると、本発明に基づくFPGAは最大で従来技術の回路と等価な論理の量の8倍の量を保持するものである。然しながら、実現される論理はクリティカルパス(臨界的経路)における論理レベルの数及びユーザクロック条件に依存して、より遅いものである。例えば、クリティカルパスが2つのレベルの深さに過ぎないが、回路設計は8個のマイクロサイクルを使用して実現される場合には、その回路設計は従来のFPGAで実現されたもの(又は、本明細書に詳細に説明したようにタイムシェアリング又はスタティックモードで)実現した設計よりも少なくとも4倍遅いものとなる。一方、回路設計がそのクリティカルパスにおいて8個又はそれ以上の論理レベルを有するものである場合には、本発明において実現したような設計は従来のFPGAよりもわずかに遅いものに過ぎない場合がある。従って、論理エンジンモードはある程度速度を犠牲にして著しい密度を得るものである。
【0136】
該設計の論理深さはFPGA内に構築されたコンフィギュレーションの数と同一でない場合がある。例えば、該設計が単に3つのコンフィギュレーションを必要とするに過ぎない場合(即ち、計算が3つのコンフィギュレーションで完了)、シーケンサはその他のコンフィギュレーション(例えば、8個のコンフィギュレーションを有するFPGAにおけるコンフィギュレーション4乃至8)をスキップし且つ最初のコンフィギュレーションへ復帰する場合がある。このように、該論理の完了後(即ち、3番目のマイクロサイクル(μcycle2)の後)次のものの開始への待ち時間はより少ない(即ち、潜在的に、5サイクル後の代わりに次のマイクロサイクルにおいて)。従ってこの例においては、主要なサイクルは該設計に適合するように短縮化されている。一実施例においては、この各ユーザ設計に対して設定されるシーケンサ内のこの終了カウントはプログラム可能なレジスタ内に格納される。
【0137】
基本的なチップアーキテクチュアの場合、即ち「n」マイクロサイクルアーキテクチュアの場合には、最大でn個のレベルの深さまでのユーザ設計のみが評価することが可能であるように見える。回路設計における平均経路深さは典型的に3個のレベルと4個のレベルとの間であるが、典型的な回路設計においては2,3の長い経路を有することは異常ではない。性能を改善するか又はユーザの設計が使用可能なマイクロサイクルの数よりも多くのレベルの論理を有する場合に設計に適合させるために、該設計の深さよりもより少ないマイクロサイクルに適合させるように設計を修正させることが可能である。本発明は、以下の代替的な解決方法を提供している。
【0138】
1.「バイパス」接続を使用してマイクロレジスタ周りに信号を指向させる(例えば、マルチプレクサ313−314(図3)へ供給される信号G参照)。これらの信号は、現在のマイクロサイクルにおいてその他の論理によって使用されるが、それらがマイクロレジスタ内に格納されていない限りその他のマイクロサイクルにおいて論理によって使用されることはない。
【0139】
2.マイクロレジスタはFPGAにおけるマイクロサイクルコンフィギュレーションの総数よりも多くの値を保持しており、その際に1つを超えた主要なサイクル前に発生された結果へアクセスすることを可能としている。該コンフィギュレーション(主要なサイクル)を介しての複数個のパスが該計算を完了するのに必要とされる。
【0140】
3.自走マイクロサイクルシーケンスを与え且つより長い計算の結果に関するイネーブルとしてユーザクロックを供給する。従って、この解決方法においては、ユーザサイクルは1つを超えた主要サイクルを有している。オプションとして、この解決方法はマイクロサイクルの数より長いマイクロサイクルシーケンスカウントを有しており、従って回路設計におけるマイクロサイクルの数はチップ内に組込んだ実際のマイクロサイクルの数の倍数である必要はない。
【0141】
解決方法3において、各LUTは各ユーザサイクルにおける複数個の主要なサイクルのうちの単に1つのみに関して使用される。その他の主要なサイクルに関しては、LUTは無視される値を計算する。従って、ユーザクロックは無視された値が格納されることがないことを確保するためのイネーブル信号として必要とされ、コンフィギュレーションビットはどの主要サイクルに関して結果を保存するかを表わすために必要とされ、且つグローバル信号はどの主要なサイクルがアクティブ即ち活性状態であるかを表わすために必要とされる。オプションとして、いつ結果及びグローバル活性信号を保存するかの表示は、FPGAに関する論理で構成することが可能である。
【0142】
8.2a 複数個のクロック/非同期クロック動作
論理エンジンモードの上述した説明は単一のクロックを暗示しているが、多くのユーザ回路設計はこの制限を有するものではない。クロック動作される回路の2つの異なるカテゴリが存在しており、即ち複数個の関連したクロック及び関連していない(非同期)クロックである。
【0143】
回路設計が1つを超えた数のクロックを有しており且つ全てのクロックが最も速いクロックの倍数である場合には、最も速いクロックはユーザクロックとして実現され、且つその他の全てのクロックはマイクロサイクルレジスタイネーブル信号で実現される。例えば、図39及び39Aを参照すると、遅いクロック信号SC(状態3901において決定される)の上昇エッジの後可及的速やかに、遅いクロックイネーブル信号SCEがアクティブ即ち活性状態(状態3902)へ移行し且つ1つの主要サイクルの間アクティブ即ち活性状態に溜まる。1つの主要サイクルの後(主要なクロック信号MCによって決定される)、遅いクロックが低状態へ移行し(ステップ3903)且つシステムは遅いクロックSCが0へ復帰する場合の遅いクロックの上昇エッジ(状態3901)を待機する状態に復帰する。イネーブル信号状態マシンは、オンチップの特別目的論理として与えられるか又はCLBにおいてFPGA論理から構築される。この技術は、最も速いクロックの倍数ではないより遅いクロックを実現するために使用することも可能である。
【0144】
例えば、図27はユーザの設計の一部を示しており、その場合に、フリップフロップ2700はクロックゲート動作回路2701からクロック信号を受取る。この実施例においては、クロックゲート動作回路2701はANDゲート2702を有しており、該ゲートはクロック2703及びイネーブル回路2704から入力信号を受取る。このように、フリップフロップ2700のクロック端子Kは、クロック2703及びイネーブル回路2704からの両方の信号が論理高である場合にのみ、ANDゲート2702からイネーブル信号を受取る。クロック2703は主要なサイクル毎に信号を供給する(即ち、PLDにおける最も速いユーザクロック信号を供給する)。1つの例示的なユーザ設計においては、イネーブル回路2704は主要なサイクル毎に信号を供給する。従って、クロックゲート動作回路2701がユーザの設計したフリップフロップ2700へ結合されているものとして識別される場合には、2つの重要な情報が決定される。第一に、クロック2703によって供給される信号(ユーザクロック)及びフリップフロップ2700のクロック端子Kへ供給される信号は関連しており、且つ、第二に、フリップフロップ2700のクロック端子Kへ供給される信号はユーザクロックよりも遅いものである。従って、より遅いクロック信号が識別される。このより遅い信号がマイクロレジスタイネーブルでクロックイネーブルピンへ供給されるようにユーザの設計を最適化させることが可能であり、その場合にはANDゲート2702を除去している。
【0145】
別の実施例においては、ライブラリ要素(ゲート、フリップフロップ又はその他の論理関数)がクロックの分割即ち分周を特定する(換言すると、エンドユーザによって選択されるマイクロクロックを識別する)。図28は例示的なライブラリ要素2802A,2802B,2802C及びそれらのマイクロサイクルクロック2801に対する関係を示している。特に、ライブラリ要素2802Bは、クロック信号CLKが8によって分周されることを特定し、その際に出力信号CLK8を与える。最後に、一般的ライブラリ要素2802Nが、クロック信号CLKがNによって分周されることを特定し、その場合にNはユーザによって与えられる数である。然しながら、この実施例においてはユーザの設計がクロック分周器を使用しているが、本発明は、典型的に、図27に示した態様でクロック分周器を実現する。換言すると、クロック2801はマイクロサイクルクロック信号を供給し、且つライブラリ要素2802A−2802Nと関連する分周器はイネーブル信号を供給する。
【0146】
出力信号CLK10,CLK8,CLKNは、概略的捕獲期間中にユーザによって決定されるフリップフロップ(不図示)のクロック入力端子へ供給される信号である。図29に示した一実施例においては、これらの信号は、分周信号、例えば出力線2808上の分周信号を図39に示した状態マシンに従って動作する回路2911へ供給することによって実現される。回路2911はマイクロレジスタ2910のイネーブルENピンへ遅いクロックイネーブル信号を供給する。
高速論理の一部は、例えば、システム全体としての速度の2倍乃至4倍で走る場合がある。本発明においては、この論理は例えば、マイクロサイクル1−4、次いで、再度、マイクロサイクル5−8において複製され且つ実現される。この実現、即ち高速クロックの2つのサイクルを単一の主要なサイクルへ適合させることは、論理の残部に関して高速論理の速度を2倍とさせる。
【0147】
8.2b 論理エンジンモード/マイクロサイクルシーケンス動作用シーケンサシーケンサは、元のコンフィギュレーションからの入力及びユーザが発生した信号を取りながらマイクロサイクルを介してシーケンス動作する。回路設計の最良の性能のためには、マイクロサイクルは可及的に短い期間から構成する。マイクロサイクルの期間は、
1.コンフィギュレーションメモリからのマイクロサイクルコンフィギュレーションの読取、
2.LUTへの信号の伝搬、
3.LUTの評価、
4.次のマイクロサイクルに対するマイクロレジスタのセットアップ、
を行なうために必要とされる時間の量によって設定される。
【0148】
複数個のレベルの論理が1つのマイクロサイクルで評価される場合にはステップ2及び3が繰返し行なわれる(注意すべきであるが、ステップ1の待ち時間は、パイプラインラッチによって隠すことが可能であり、従ってそれはμcycle期間に貢献することはない)。
【0149】
FPGA内に設けられる論理は、高速論理、即ちその動作を迅速に実行する論理、及びより遅い論理、即ちその動作を完了するために著しくより多くの時間(高速論理によって必要とされる時間と比較して)を必要とする論理へ分割することが可能である。本発明の一実施例によれば、高速論理はそれがいずれかの主要なサイクルにおいて少なくとも2回評価されるように所定のマイクロサイクルにおいて複数回評価される。この評価は、繰返し技術(図33を参照して説明する)又はサブルーチン技術(図34を参照して説明する)を使用して行なわれる。換言すると、高速論理が低速論理のクロック速度の2倍の速度を有するものと仮定する。この例においては、主要なサイクルは低速論理のクロック速度に設定され、その場合に、高速論理は主要サイクル毎に2度実行する。
【0150】
図33は時間に関して、特にマイクロサイクル3301−3305を介してのCLB1−5の表示を示している。前述したように、各CLB1−5は、典型的に、各マイクロサイクル3301−3305に対して異なるコンフィギュレーション(形態)を有している。陰線の付けた区域3306は、矢印3310によって示したように、各主要なサイクルにおいて複数回評価されるべき論理を表わしている。
【0151】
特に、この実施例においては、マイクロサイクル3302がマイクロサイクル3301に追従している。マイクロサイクル3302と関連するコンフィギュレーションを完了した後に、高速論理はマイクロサイクル3301(矢印3310で示してある)と関連するコンフィギュレーションへ復帰することを表わす次のマイクロサイクルアドレスを発生する。マイクロサイクル3301及び3302と関連するCLB1−5に対するコンフィギュレーションが繰返される。一実施例においては、繰返しカウントは例えば2等の固定数である。その実施例においては、CLB1−5はマイクロサイクル3301及び3302期間中に4回リコンフィギュア即ち再形態特定が行なわれる(即ち、3301,3302,3301,3302,3303...)。
【0152】
別の実施例においては、マイクロサイクル3301及び3302と関連するコンフィギュレーションは、ある条件(条件付き分岐論理へ供給される)が充足されるまで繰返される。マイクロサイクル3301及び3302が適宜の回数繰返された後に、マイクロサイクル3303,3304,3305は逐次的に追従する(即ち、(3301,3302)...(3301,3302),3303,3304,3305))。従って、マイクロサイクル3301及び3302と関連する論理は、マイクロサイクル3303,3304,3305と関連する論理よりも多数回評価される。マイクロサイクル3301及び3302と関連する論理はマイクロサイクル3303,3304,3305と関連する論理よりもより多数回評価されるので、該論理はより速い応答を有しており従ってより高速で走るように見える。従って、マイクロサイクル3301及び3302を介しての繰返しは、典型的に、主要なサイクル当たり多数回発生し、一方、マイクロサイクル3303,3304,3305を介してのシーケンスは、典型的に、主要なサイクル当たり1回発生する。
【0153】
一方、別の実施例においては、高速論理はサブルーチンコールに類似したものである。換言すると、サブルーチンはマイクロサイクルシーケンスにおける任意の場所において選択的にコールされ、且つ元のマイクロサイクルシーケンスへリターンする。図34はマイクロサイクル3401,3405を介してのCLB1−5の表示を示している。この実施例においては、マイクロサイクル3401と関連するCLB1−CLB5の低速論理コンフィギュレーションの後に、マイクロサイクル3404及び3405と関連する高速論理コンフィギュレーションがコールされ(矢印3410で表わしてある)且つ解析される。マイクロサイクル3405の完了の後に、プログラムはリターンして(矢印3411で表わしてある)マイクロサイクル3402において与えられた低速論理コンフィギュレーションを解析する。従って、プログラムは再度マイクロサイクル3404及び3405において高速論理コンフィギュレーションをコールする(矢印3412で表わしてある)。マイクロサイクル3405の完了後、プログラムはリターンし(矢印3413で表わしてある)マイクロサイクル3403において低速論理コンフィギュレーションを解析する。最後に、プログラムは、シーケンス全体を繰返すために、マイクロサイクル3401へリターンする(矢印3414で表わしてある)。従って、この実施例においては、プログラムは、マイクロサイクル3401,3404,3405,3402,3404,3405,3403と関連する論理コンフィギュレーションシーケンスに従う。
【0154】
8.2c スケジューラ
ユーザの設計における論理の論理エンジンモードにおけるコンフィギュレーションスライスへの割当はスケジューリングと呼ばれる。スケジューリングは手動的に行なうことが可能であるが、より便宜的にはスケジューラと呼ばれるプログラムによって自動的に行なわれる。
【0155】
スケジューリングは任意的なものではない。例えば回路26における回路等の回路が1つの主要なサイクルにおいて正しい結果を発生するためには、各LUTは、それに対して入力信号を発生する全てのLUTよりも速くないようにマイクロサイクルにおいてスケジューリングがなされねばならない。更に、フリップフロップに対して2つの条件が存在している。第一に、各フリップフロップはそのLUTに対する入力信号を発生する全てのLUTよりも速くないようにマイクロサイクルにおいてスケジューリングされねばならない。第二に、各フリップフロップは、それを駆動する全てのLUT又はフリップフロップよりも速くないようにマイクロサイクルにおいてスケジューリングされねばならない。
【0156】
図26Bを参照すると、フリップフロップ2611は第二の条件を満足する、即ちLUT2610(この場合には、LUT2610と同一のマイクロサイクルn内にある)よりも速くないようにスケジューリングされている。従って、LUT2610は前のユーザサイクルからフリップフロップから2611の値をとる。このように、フリップフロップ2611の出力信号はマイクロサイクルn+1まで変化することはない。従って、フリップフロップ2611はマイクロサイクルnの終了時にLUT2610の入力信号に対してサンプルされる。注意すべきことであるが、フリップフロップ2611は後のマイクロサイクルにおいてスケジューリングすることが可能であったものであり且つLUT2610はより速いマイクロサイクルにおいてスケジューリングすることが可能であったものである。更に、フリップフロップ2612は第一の条件を満足する。即ち、LUT2610よりも速くないようにマイクロサイクルにおいてスケジューリングされている(この場合には、後のマイクロサイクルにおいてスケジューリングされている)。フリップフロップ2612もマイクロサイクルn内にスケジューリングすることが可能であったものであり又はマイクロサイクルn+1の後のマイクロサイクルにおいてスケジューリングすることが可能であったものである。
【0157】
論理エンジンモードにおける本発明によれば、ソフトウエアプログラム(以後、「スケジューラ」と呼ぶ)が設計中のクリティカルパスを識別するためのレベライゼーション(levelization)即ちレベル化と呼ばれる技術を使用する。最も簡単な場合においては、該設計は全てのフリップフロップが同一のクロック信号によって同期される同期型設計であると仮定される(注意すべきことであるが、マルチクロック設計のクロックイネーブル信号を有する単一クロック設計への変換についてはセクション8.2fにおいて後に詳細に説明する)。最初の(最も低い番号)マイクロサイクルはユーザクロックの上昇エッジと同期される。全ての組合わせ論理が評価され且つ全てのフリップフロップ値が該コンフィギュレーションを介しての1つのパスにおいてアップデートされる。各ユーザクロックサイクルは全てのマイクロサイクルの評価を行なう。
【0158】
単に1つのLUT又はCLBの組合わせ論理が各マイクロサイクルにおいて評価されるものと仮定すると(換言すると、マイクロサイクル当たり1つを超えたLUTを介して伝搬が発生することがない)、1つのマイクロサイクル期間は、1つのLUT遅延+入力信号をLUT入力端子へ転送するための相互接続遅延から構成されている。マイクロレジスタは後のマイクロサイクルにおいて使用するために組合わせ論理中間値を保持する。マイクロレジスタは、更に、マイクロサイクルを介しての次のパス上で評価される次のユーザサイクルにおいて使用するためのフリップフロップ値を保持する。
【0159】
これらの拘束条件が与えられると、該設計はレベライゼーションアルゴリズムを使用してスケジューリングすることが可能である。特にチップ入力ピン又はフリップフロップからのみ入力信号をとる各LUTはレベル1が与えられる。その他のLUTはいずれかの入力の最も大きいレベルよりも1つ大きなレベル番号が与えられる。この技術は可及的速やかなスケジュールを発生する。
【0160】
図26に示した可及的速やかスケジューリングは、全ての入力信号がレディ即ち準備されるや否や各LUTをスケジューリングする。図30に示した可及的に遅いスケジューリングは、その出力信号が要求される前にマイクロサイクルにおいて各LUTをスケージューリングする。その他のスケジューリングも可能であり、例えば、各マイクロサイクルにおいて必要とされるLUTの数を減少させるためにマイクロサイクルの数を増加させるもの等がある。例えば、図26において、スケジューラが5個のマイクロサイクルを使用することが許容される場合には、スケジューラはそれ自身のマイクロサイクルにおいて各LUTをスケジューリングすることが可能であり、全ての結果をマイクロレジスタ内に保存し、且つ前のマイクロサイクル期間中にマイクレジスタ内の格納した結果を入力信号として使用することが可能である。このように、該設計を構築するのに単に1つの実際のLUTが必要とされるに過ぎない。
【0161】
レベライゼーションは部分的な評価を与えるものであるが、クリティカル即ち臨界的な遅延経路上にないLUTに対する部分的な評価には著しい余裕が存在している。このために、スケジューラはクリティカルパス内にないLUTを識別し且つマイクロサイクル当たり必要とされるLUTの数を最小とさせるためにそれらの評価をその他のマイクロサイクル内へ再スケジュールすることが可能である。例えば、図26と図30とを比較すると、LUT2601はマイクロサイクル1期間中に評価されるべく再スケジュールされている(スケジューラによって)。このようにすることによって、回路設計を実現するために必要とされる物理的なLUTの数は3個から2個へ減少される。LUT2601はクリティカルパス即ち臨界的経路内にはないので、そのLUTをマイクロサイクル1内へ再度スケジューリングすることは回路性能に影響を与えるものではない。
【0162】
最適化方法がスケジューリングを改善することが可能であり、即ち(i)いずれかのマイクロサイクルにおいて必要とされる実際のLUTの数を最小とさせ、(ii)各ネットが表われる毎にマイクロサイクルの数を最小とさせ、且つ(iii )同一のマイクロサイクル内に経路付けされた各ネットのピン数を最大とすることによって改善することが可能である。
【0163】
スケジューリングを最適化するための方法、即ちリストスケジューリングとして知られる技術の変形例について図40を参照して説明する。
【0164】
1.最初のマイクロサイクルでスタートする(ステップ4001)。
【0165】
2.このマイクロサイクルにおいてスケジュールすることの可能な全ての
LUTを識別する(ステップ4002)。即ち、その入力信号がチップ入力ピン、フリップフロップ出力端子、又はより先のマイクロサイクルにおいて既にスケジューリングされている入力信号を発生する全てのLUTを持ったLUTから来る入力信号を受取るLUTを識別する。
【0166】
3.以下の点に基づいてLUTを優先度で順番付けする(ステップ
4003)。
【0167】
a.タイミング:LUTの可及的に遅いスケジューリングによって決定されて、最も速い又は最も遅いスケジュールを有するLUTが最初である。
b.ネット:その他の全てのデスティネーションLUTが既にスケジューリングされている入力ネットを有するLUT。
【0168】
c.ピン:そのディスティネーションインスタンスのうちの少なくとも1つがスケジューリングされているネット上の1個のピンを有するLUT。
d.可能なネット:リスト内の先のLUTを付加することによってこのマイクロサイクルにおいて導入させることの可能なネットを完成するLUT。
【0169】
e.可能なピン:リスト内の先のLUTを付加することによってこのマイクロサイクル内に導入することの可能なネット上に1個のピンを有するLUT。
【0170】
4.最も高い優先度を有するm個のLUTを選択し、尚mはFPGAにおける実際のLUTの数である。これらm個のLUTを現在のマイクロサイクル番号の符号を付ける。それらを識別したLUTのリストから取除く(ステップ4004)。
【0171】
5.次のマイクロサイクルへ移行する(ステップ4005)。
【0172】
6.いまだにスケジューリングしていないLUTが存在する場合には(ステップ4006)、ステップ4002へ移行し、そうでない場合には終了する(ステップ4007)。
【0173】
別の実施例においては、m個のLUTは一度に1個選択され、その場合には、ステップ4003は各選択の後に再度実行される。この実施例は低速であるが、各選択の後にLUTの順番付けをすることは、より少ない数のマイクロサイクルを使用する結果となるか又は配置させ且つ経路付けすることがより簡単となる。
8.2d スケジューリング圧縮
クリティカルパスにおける論理のレベル数がFPGA設計が実現されるコンフィギュレーションの数よりも大きい場合には、スケジューラはクリティカルパスを圧縮させる。図26Aを参照すると、2つのLUT、即ちLUT2604及び2605を同一のマイクロサイクル、即ちマイクロサイクル1において直列的に接続させるためにマイクロレジスタバイパスを使用してクリティカルパス上のレベルの対を単一レベルへ合体させる。一実施例においては、圧縮はクリティカルパス上のLUTの数の最小の拡張に基づいて、合体すべき対を選択する。
【0174】
8.2e 同時的スケジューリング及び配置
1つのコンフィギュレーションにおける論理は、その他のコンフィギュレーションにおける同一のLUTにおいて発生される固定数の信号を超えてアクセスすることはできない。この制限はスケジューリング(コンフィギュレーション)と配置(実際のLUT)との間の拘束条件であり、そのことはこれらのプロセスを分離することを困難又は非現実的なものとしている。
【0175】
上述した説明においてはLUTをスケジューリングするためにLUTをレベル化することについて説明したが、スケジューリングによって課される拘束条件はプレースメント即ち配置及び経路付け可能性に悪影響を与える場合がある。従って、一実施例においては、スケジューリング及びプレースメント(配置)は同時的に行なわれる。
【0176】
以下の表Aは、標準的なFPGA、「簡単な」時間多重型FPGA設計プロセス、及び「より良い」時間多重型FPGA設計プロセスに対するスタンダードなFPGA回路設計プロセスを比較している。
【0177】
Figure 0003729943
標準FPGAプロセスにおいては、回路設計エントリの後、回路設計が最適化され且つFPGA上で使用可能な物理的資源に対してマッピングが行なわれる(例えば、組合わせ論理に対するLUT)。最適化は当業者にとって公知であるが、それは設計におけるLUTを最小とするための組合わせ論理の作り直し、及び長い組合わせ論理経路を短くするための再計時を行なうことを包含する。次いで、FPGA資源は、ユーザの論理における各関数を実現するために使用される実際の資源を選択するために配置され且つこれらの資源を接続するための経路付けが行なわれる。
【0178】
プロセス設計流れをタイムシェアリングFPGAで実現するための簡単な方法は、テクノロジマッピングの後であるがプレースメント(配置)の前にスケジュールステップを付加することである。このスケジュールステップは、設計内の各LUTのマイクロサイクルを決定し、その際に該設計をN個の配置及び経路付け問題へ分割することを可能とする(尚、Nは該設計によって使用されるマイクロサイクルの数である)。
【0179】
スケジュール及び配置ステップは互いに依存している。特に、スケジュールステップは、各マイクロサイクル期間中にどのネットが必要とされるかを決定する。明らかに、接続されるべきネットの数又はピンの数が減少されると、プレースメント即ち配置はそれに対応してより簡単なものとなる。
【0180】
特定のマイクロサイクルnにおいて与えられるLUTの出力信号はその他のマイクロサイクル(例えば、n+1)における入力信号として使用される。従って、これらn個の配置のうちの1つにおける全てのネットの供給源の位置はその他のマイクロサイクルにおけるLUTの配置によって決定される。各LUT出力マイクロレジスタがN個のマルチプレクサを有する場合には、同一の実際のLUTが同一のマイクロサイクルにおいてスケジュールされるべきN個を超える異なる信号を供給すべきではない。設計におけるLUTのFPGAにおける実際のLUTへの割当はプレースメント(配置)ステップ期間中に行なわれる。従って、よりよいタイムシェアリングFPGAプロセスにおいて、スケジューリング及び配置動作は同時的に行なわれる。
【0181】
図31を参照すると、各ボックスは空間(LUT配置9)及び時間(マイクロサイクル)における配置である。スケジューリング拘束条件はマイクロサイクル(時間)次元におけるLUTの相対的配置に関する拘束条件である。
【0182】
FPGAは二次元であるので、結合させたスケジューリングと配置とは図32に示したように三次元配置問題として解くことが可能である。配置コスト関数は、PLDのx及びy次元における物理的な拘束条件コスト及びマイクロサイクル次元におけるスケジューリング拘束条件コストを反映している。従来の配置発見的手法、例えばシミュレーション型アニーリング、最小切断ニ分割(min−cut bi−partitioning)、クラスタ成長、シミュレーション型展開(simulated evolution)及び力指向型緩和(force−directed relaxation)が適用可能である。配置アルゴリズムはスケジューリングによって課される相対的な配置拘束条件に従わねばならない。
【0183】
8.2f 論理エンジン入力及び出力信号
入力/出力信号はユーザサイクルの終了によってアップデートせねばならない。然しながら、好適には、最後のマイクロサイクルを待つのではなく、値が計算されるとそれを出力へパスさせる。
【0184】
論理エンジンモードの最も簡単な動作モデルにおいては、全ての入力信号が最初のマイクロサイクルにおいて使用可能であり且つ全ての出力信号はユーザサイクルの終りにおいて必要とされる(最後のマイクロサイクルの終了時)。実際に、幾つかの入力信号はあとに到着し、且つ幾つかの出力信号はより速く必要とされる。これらの拘束条件を受付けるために、スケジューラコンピュータプログラムは幾つかのマイクロサイクルの後になるまで後に到着する入力信号を使用するスケジューリングを回避し、且つ最後のマイクロサイクルの前の早期に必要とされる出力信号を発生する。これらの早期の出力信号は早期のマイクロサイクルにおいて夫々の出力パッドへ経路付けされ且つチップ出力ピン上に供給されねばならない。
【0185】
全てのマイクロサイクル期間中にチップ出力端に値を供給するために、信号を保持するレジスタから出力パッドへ経路付けされた経路はスタティック即ち静的な経路でなければならない(即ち、セクション8.3において説明したスタティック論理技術を使用し、その場合に、その経路に対するプログラミングは全てのマイクロサイクルコンフィギュレーション内に含まれている)。一実施例においては、単一のスタティックレジスタが出力すべき値を保持する全ての出力パッドを具備している。
【0186】
本発明の一実施例によれば、非同期入力信号が論理エンジン同期動作と同期される。この同期はその他のシステムにおいて遭遇する同期問題と類似している。ユーザの回路設計がユーザクロックがサイクル動作する場合に信号が使用可能であることを考慮に入れる。後に到着する信号は主要なサイクルにおいてこれらの信号を後に使用するようにスケジューリングすることによって受入れることが可能である。
【0187】
非同期信号の到着時間を予測することは不可能である。入力信号から出力信号をアップデートするために完全なユーザサイクルが必要とされる。更に、主要なサイクルのスタート直後に入力信号が変化すると、その信号は結果の中に含まれない場合がある。従って、非同期入力の結果が可視的なものであることが保証される前に、2つの完全な主要なサイクルが必要とされる。同期を簡単化させるために、入力信号を直接チップへ供給するか又はI/Oブロック内のマイクロレジスタを介して供給する。
【0188】
ユーザサイクルにおける幾つかのマイクロサイクルが実行された後に入力信号が変化するとスキュー問題が発生する。特に、信号の異なる値が計算の異なる部分に含まれる場合があり、その際に不正確な結果となる場合がある。例えば、図64Aを参照すると、マイクロサイクル1及び2期間に信号INを使用する論理はIN=1を使用し、マイクロサイクル4及び5期間中にINを使用する論理はIN=0を使用し、且つマイクロサイクル3期間中にINを使用する論理はIN=0又はIN=1のいずれかを使用する。図64Bは、論理要素がそれらがスケジューリングされているマイクロサイクルの符号が付けられた論理回路6400を示している。信号INの値はANDゲート6401及び6402の評価の間で変化するので、これらのゲートは同一の信号の異なる値を受取り、その際に予測不可能な結果を発生する。特に、この場合には、ORゲート6403の出力信号は、ANDゲート6401又は6402の一方が「1」を供給するので、信号Aの値に拘らずに、「1」である(信号INはこれらのゲートの評価の値で変化する)。
【0189】
入力/出力ブロックにおけるマイクロレジスタを使用する本発明の入力同期はこの問題を回避している。例えば、入力/出力ブロック4100の一部を示している図41を参照すると、マイクロレジスタ4101はパッド4105からの入力信号を捕獲し、一方マイクロレジスタ4102はフリップフロップ4103からの出力信号を捕獲する。ビット組200(図2)によって制御されるマルチプレクサ4106は、マイクロレジスタ4101、マイクロレジスタ4102、又はライン4107からの信号を選択的に出力する。パッド4105への出力信号を捕獲するマイクロレジスタ4104は、タイムシェアリングモードにおいて値を出力するためにリコンフィギュレーション即ち再形態特定からの遅延に対し一定の(即ち、設計と独立的な)時間仕様を可能としている。
【0190】
8.3 スタティックモード
非同期経路及び特に高速論理は、CLB及び相互接続体の幾つかをこれらの信号及び計算に対するスタティックロジック即ち静的論理として専用化することによって実現することが可能である。
【0191】
第三モード、即ちスタティックモードにおいては、FPGAの一部が、FPGAのその他の部分が再形態特定される場合に、単一のコンフィギュレーション即ち形態特定を維持する。スタティックモードで形態特定されているFPGAの部分は、機能的には、従来のPFGAの対応する部分と同一である。付加的なシリコン面積がメモリビットによって消費されるので、スタティックモードにおけるCLBの論理密度は従来のCLBの論理密度よりも低い。
【0192】
スタティックモードは、典型的に、全てのメモリスライスを同一のコンフィギュレーション(形態特定)値へプログラミングすることによって実現され、その際にコンフィギュレーションに拘らずに機能が同一状態を維持することを確保する。スタティックモードにおいては、フリップフロップクロック及びマイクロレジスタクロックは互いに何等関係を有するものではない。従って、マイクロレジスタからスタティックフリップフロップへ値を回復されることは何等意味がなく、且つ禁止されねばならない。例えば、スタティックフリップフロップはマイクロレジスタクロックを定義する全てのユーザサイクルに対し複数個のクロックサイクルを有することが可能である。従って、マイクロレジスタ値は古すぎるかも知れず且つ回復動作はセクション8.1タイムシェアリングモードにおいて詳細に説明した信号FirstCyc(図4)をディスエーブルさせることによって禁止されねばならない。
【0193】
8.4 混合モード
システム設計が、幾つかが高性能条件で幾つかが中程度性能の必要性を有する論理タイプの混合を必要とする場合がある。更に、同期システムは、実時間インタラプトを取扱うために何らかの非同期能力を有する必要性がある。このことをサポートするために、本発明アーキテクチュアは混合動作モードを提供している。例えば、幾つかのコンフィギュレーションではタイムシェアリングサイクルで動作し、一方その他のコンフィギュレーションは論理エンジンシーケンスに結合される。例えば、マイクロプロセサバスぺリフェラルは、バス動作を検知するための静的論理を有する場合があり且つペリフェラルがプリンタ制御器、ネットワークインターフェース又はディスクドライブ制御器等と異なる時間に動作することを可能とするタイムシェアリグを行なう。この適用例の一実施例においては、プリンタ制御器が論理エンジンの幾つかのマイクロサイクルを有する場合がある。更に、CLB及び相互接続体のサブセットがスタティックモードでプログラムされ、その場合にそれらがタイムシェアリング又は論理エンジンモード使用可能ではない。
【0194】
9.0 その他
9.1 可変深さCLB
論理の所要の深さ(従って、各プログラミング点を超えるコンフィギュレーションメモリセルの数)は回路設計依存性であり且つ設計内において変化する。従って、特定のユーザ設計が各CLBの全てのコンフィギュレーションの利点を得ることができない場合には、コンフィギュレーションメモリの幾つかは浪費され、その際に必要以上のFPGAとなる。従って、本発明に基づく典型的なCLBはN個のメモリサイクルに対しN個ビットを有するものであるが、幾つかの実施例における幾つかのCLBはより少ない数を有している。図35はタイムシェアリング型PLDを示しており、y軸上のCLBA−F及びx軸上のコンフィギュレーション1−6を有している。図35において、各CLBは6個の異なるコンフィギュレーションを有している。従って、アーキテクチュア3500はメモリの36個のCLBマップを必要とする(即ち、6個のCLB×6個のマイクロサイクル)。
【0195】
修正したアーキテクチュアを図36に示してあり、その場合には、CLB A及びBはコンフィギュレーション1−8を有しており、一方CLB C及びDはコンフィギュレーション1−5を有しており、且つCLB E及びFはコンフィギュレーション1を有するに過ぎない。アーキテクチュア3600はメモリの28個のCLBMマップを必要とする(2×8+2×5+2×1)。従って、回路設計が深さにおける変化を有するものと仮定すると、アーキテクチュア3600はアーキテクチュア3500と比較して著しい量のメモリを節約する。
【0196】
典型的な良好に設計されたPLDはその上で実現されるべき回路設計に適合すべく選択された深さの分布を有している。例えば、図37A及び37Bは2つの2入力LUTを示しており、即ちLUT3700A(マルチプレクサ3701及びメモリセル3702によって供給される8個のコンフィギュレーションを包含している)、且つLUT3700B(マルチプレクサ3703及びメモリセル3704によって与えられる4つのコンフィギュレーションを含んでいる)。1列のメモリセルが各コンフィギュレーションに対して必要とされる。従って、メモリセル3702は8個の列に配列されており、一方メモリセル3704は4つの列に配列されている。動作期間中に、1列のメモリセルがLUTの内容として逐次的に選択される。
【0197】
コンフィギュレーション即ち形態特定用のメモリセルを有することのないCLBは尚且つそのコンフィギュレーションに対してプログラムされねばならない。例えば、図36を参照すると、CLB E及びFはコンフィギュレーション2−8期間中にプログラムされねばならず、且つCLB C,D,E,Fはコンフィギュレーション6−8期間中にプログラムされねばならない。幾つかの実施例においては、特定のコンフィギュレーションに対してCLBを実際的にプログラミングする代わりに、本発明は以下の代替方法を提供している。
【0198】
1.最後の値を保持する。CLBプログラミングは最後に実現されたメモリセル上に存在していたものを残存させる。
【0199】
2.リサイクル。最大数のコンフィギュレーションより少ない数を有するCLBはより高いコンフィギュレーション数に対してそのコンフィギュレーションを介して再度サイクル動作する(最大で8個のコンフィギュレーションがあり且つCLBでの格納が4ビットである場合には、CLBは12341234の順番で進行する)。
【0200】
3.アイドリング状態を維持。CLBは何をすることもなく、即ち所定のハードワイヤードアイドリング形態を使用する。
【0201】
4.CLB毎の選択。どのオプションを使用するかの選択はCLB毎に基づいて行なわれる。
【0202】
図38は異なるマルチプレクサ入力端子に対して異なる数の形態を有する2入力LUT3801を示している。同様に、マルチプレクサ3803は5個のコンフィギュレーションを受取るための2つの入力端子を有すると共に、4つのコンフィギュレーションを受取るための2つの入力端子を有している。アイドリング形態の選択は0,1又はユーザ信号3805とすることが可能でありその場合は、これらのコンフィギュレーションに対して、LUTはより少ない数の完全に制御される入力信号を有するか、全ての入力信号の幾つかの制限された関数がいまだに使用可能である。全ての入力信号が存在するものではないコンフィギュレーションにおいては、LUT3801はあるメモリセルが入力信号を供給し且つある定数が入力信号を供給するマルチプレクサとして記述することが可能である。
9.2 マイクロサイクルインタラプトシミュレーション
論理エンジンモードは単一クロックシステムで両方に動作する。然しながら、ネットワークはしばしばマルチクロックシステムとして動作する。特に、多くのエンドユーザ設計におけるフリップフロップは、関係のないクロックによってトリガされ、又クロック間のタイミング関係は決定することは不可能である。換言すると、これらのクロックは非同期的に動作するものと考えられる。
【0203】
本発明によれば、非同期クロックを有する論理回路網がシミュレーションされる。特に、論理回路網は、最初に、サブネットワーク即ち副回路網へ分割され、各サブネットワークは共通のクロック及び中間論理を共用するフリップフロップを含んでいる。一実施例においては、論理ネットワークはクロックの数を減少させるために変換され、その際にサブネットワークの数を減少させる。従って、各サブネットワークは前述した方法を使用して独立的に編集され(スケジューリングされ)且つその他のサブネットワークとは排他的にそれが占有する8個のコンフィギュレーションスライスからなるサブセットが割当られる。最後に、各サブネットワークと関連するクロックネットに関する遷移が検知され、ダイナミックスケジューリングとして夫々のサブネットワークの評価をトリガする。
【0204】
図42は、フリップフロップ4201,4202,4204が第一クロック線4209上の信号によってトリガされ且つフリップフロップ4203及び4205が第二クロック線4210上の信号によってトリガされるユーザネットワーク4200の一例を示している。注意すべきことであるが、中間組合わせ論理ブロック(以後、ブロックと呼ぶ)4211−4214は異なる時間において信号を受取る。例えば、ブロック4213はライン4208上の主要な入力信号i1を受取り更にクロック線4209上のクロック信号Caによってトリガされるフリップフロップ4202からの別の入力信号i2を受取る。別の例として、ブロック4214はブロック4213からの出力信号を受取ると共にクロック線4210上のクロック信号Cbによってトリガされるフリップフロップ4203からの信号を受取る。注意すべきことであるが、ブロック4211−4214は、定義上、フリップフロップ又はフィードバックループを包含するものではない。
【0205】
図42Aはユーザネットワーク4200のサブネットワーク4200−1,4200−2,4200−3への区画化即ち分割を示している。これらのサブネットワークはオーバーラップしており、そのことは幾つかのブロックの評価は1つを超えた数のクロック遷移によってトリガすることを可能であることを意味している。極端な一例として、ブロック4214は信号Caの正のエッジ、信号Cbの正のエッジ、又は信号I1における何等かの変化によってトリガすることが可能である。
【0206】
本発明に対する向上として、同一のクロックのフリップフロップから派生するものではない全てのブロック入力信号は、可能である場合には、それらの入力を供給するフリップフロップを介して前方向へ「再同期」される。例えば、図43を参照すると、ブロック4212はフリップフロップ4204を介して再同期され且つブロック4214はフリップフロップ4205を介して再同期される。このステップにおいては、フリップフロップ4204は2個のフリップフロップ4204A及び4204Bによって置換されており、これらのフリップフロップの各々はブロック4212に対して出力信号を供給する。同様に、フリップフロップ4205は2個のフリップフロップ4205A及び4205Bによって置換されており、その場合にこれらのフリップフロップの各々はブロック4214に対して出力信号を供給する。図44においては、ブロック4213はフリップフロップ4204Bを介して再同期される。このステップにおいては、フリップフロップ4204Bはフリップフロップ4204B1及び4204B2によって置換されている。再度図43を参照すると、ブロック4213はフリップフロップ4204B及びフリップフロップ4205Aの両方へ出力信号を供給する。従って、ネットワーク4200においては、ブロック4213もフリップフロップ4205Aを介して再同期されねばならず、その際にフリップフロップ4205A1及び4205A2を形成する。
【0207】
図45はネットワーク4200Bを示しており、それは機能的にネットワーク4200(図42)と等価であり、それは本発明に基づいてサブネットワーク4200B1及び4200B2に分割され、その各サブネットワークは1つのクロックを有するに過ぎない。ブロック4213A及び4213Bはブロック4213を有するに過ぎないネットワーク4200と比較して、1個のブロックだけネットワーク4200Bのダイ面積を増加させる。フリップフロップ4204B1,4204B2,4205A1,4205A2,4205Bは、ユーザの設計においては「新しい」フリップフロップとして表わされているが、それらは、通常、付加的なハードウエア資源を必要とするものではない。何故ならば、マイクロレジスタがブロック出力端において充分な格納を与え、且つその格納はユーザの設計におけるブロック出力端においてのフリップフロップの配置とは無関係に必要とされるからである(セクション2.1参照)。付加的な資源はフリップフロップ又は主要な入力が中間論理なしでフリップフロップへ供給する稀な場合においてのみ必要とされるに過ぎない。従って、フリップフロップの数の増加がユーザのネットワークを実現するのに必要とされるダイ面積を著しく増加させるという蓋然性はない。
【0208】
ネットワーク4200の例においては、ブロック4213が、1つを超えたクロックエッジで評価されねばならないので、変換されたネットワーク4200B内において複製されている。然しながら、典型的な設計プラクティスにおいては、単一のブロックは複数個のクロックエッジにおいて動作することが必要とされるものではない。従って、再同期はユーザの設計においてブロック数を殆ど増加させることはない。従って、再同期変換はダイ面積の増加をさせることはないか殆どさせることはない。
【0209】
図46及び47は、スケジューリングを行なった論理ネットワーク4200及び4200B(図42及び45)の夫々に対しての擬似的コード変換4600及び4700を示している(再同期プロセスを含む変換4700は典型的に変換4600よりも好適であるが、両方の変換が機能的に正しい結果を発生する)。各変換は複数個の区画部、即ちプロセスを有している。例えば、変換4600はプロセス1(5),2(5),3(5)を有している。プロセス1(5)はクロック信号Caの正のエッジによってトリガされ、プロセス2(5)はクロック信号Cbの正のエッジによってトリガされ、且つプロセス3(5)は信号I1の遷移によってトリガされる。
【0210】
クロック信号Caの正のエッジを検知した後に、プロセス1(5)は最初にフリップフロップ4201及び4202の入力信号をサンプルする(即ち、フリップフロップ4201及び4202のQ出力端子へ転送された入力信号i2及びi3であって、信号i3及びi2として示してある)。第二に、プロセス1(5)は図48に示したスケジューリング拘束条件4600Aに基づいて論理ネットワーク4200−1を評価する。尚、「<」は「前」を表わしている。従って、例えば、ブロック4211はブロック4212の前に評価される。同様に、「≧」は「後又は同時」を表わしている。従って、例えば、ブロック4212はブロック4211の後か又は同時に評価される。
【0211】
図46及び48の両方を参照すると、クロック信号Cbの正のエッジを検知した後に、プロセス2(5)はブロック4214を評価する前に信号o2をサンプルする。同時的に、プロセス2(5)は出力信号O2をサンプリングする前ではない時にブロック4214を評価し、且つ出力信号O2が変換した信号o2であることを識別する。入力I1の信号遷移を検知した後に、プロセス3(5)はブロック4214の前にブロック4213を評価する。図50はプロセス1−3(5)に対するマイクロサイクル割当を示している。特に、プロセス1(5)はマイクロサイクルC0及びC1を有しており、プロセス2(5)はマイクロサイクルC2を有しており、且つプロセス3(5)はマイクロサイクルC3及びC4を有している。残りのマイクロサイクル、即ちマイクロサイクルC5−C7は使用されないままである。
【0212】
図51は図50に示したマイクロサイクル割当に対する状態線図を示している。ステップ5105において状態マシンが開始した後に、例えばプロセス1(5)の等のプロセスが開始する(図46においても示してある)。プロセス1(5)が完了した後に、状態マシンはアイドル状態5100へ復帰し、そこで別のプロセス、例えばプロセス3(5)が開始するまでシステムはループ状態となる(ループ5104で示してある)。同様に、プロセス3(5)が完了した後に、状態マシンは、更に別のプロセスが開始するまで、アイドル状態5100へ復帰する。然しながら、図51に示したように、この状態マシンは論理資源に対する「プロセス」競合の可能性を考慮に入れるものではない。
【0213】
本発明によれば、論理ネットワーク4200B(図45)は、論理ネットワーク4200B(図45)は、論理ネットワーク4200(図42)よりも複雑であるが、実際にはより簡単な擬似的コード変換を有している。スケジュール4600において、ブロック4212,4213,4214は1つを超えた位置が割当てられる。この割当は、マイクロレジスタ書込セレクト信号が本明細書に開示した実現例によってはサポートされていないCLB毎に独立的に制御されることを必要とする。この問題に対する解決方法は、アレイ内に専用のサイト(箇所)を与えることであり、各箇所は任意の組合わせのマイクロサイクルでクロック動作すべく形態が特定されたフリップフロップから構成されている。このような箇所は、1個のブロックが1つを超えたマイクロサイクルでスケジューリングされている場合にマイクロレジスタの代りに使用することが可能である。付加的な利点として、このような箇所は使用していない相互接続体に対して定数1又は0のいずれかを適用するハードウエア資源(業界においては「タイダウン(tie−down)」として知られている)として使用することが可能であり、その際に相互接続体におけるバッファがフローティング条件の結果としてスタティックな電流を流すことを防止する。
【0214】
再同期が行なわれると、フリップフロップによって破られることのない主要な入力端から主要な出力端への経路に沿って発生する場合にのみマイクロレジスタに1つを超えた位置が割当てられ、且つそれは異なるクロックからなる信号によって供給される。論理を複製することによって、このようなマイクロレジスタは主要な出力端においてのみ必要とされる。
【0215】
ランタイムの環境においては、サブネットワーク(マイクロプロセッサにおいて「プロセス」として言及される)はデフォルトによってトリガイベントを待機している(即ち、プロセスは「ブロック」されている)。本発明においては、トリガイベントはプロセスによって特定される入力ピン遷移である。クロックエッジが発生すると、対応するサブネットワークが評価される。その評価が完了すると、サブネットワークは待機状態へ復帰し、その場合にシステムは次のクロックエッジによってトリガされる。
【0216】
シミュレーション資源は制限されているので、システムが既に別のサブネットワークを評価するプロセスにある間にクロックエッジが到着する可能性があり、その際に多数の異なる動作のうちの1つをトリガする。一実施例においては、インタラプトしているサブネットワークが待機状態とされる。資源が使用可能となると、例えばインタラプト中のサブネットワーク等の所定のプロセスが選択され且つ稼動される。このプロセススケジューリングを実現する1つの回路実施例を図52に示してある。
【0217】
図52はマルチクロックシーケンサ5200を示しており、それは外部クロック信号C1,C2,...,CK(典型的に、FPGAチップ上のピンを介して供給される)を受取り、且つ適宜のマイクロサイクル(即ちサブネットワーク)を活性状態とすることを決定する内部マイクロサイクルクロックuC0,uC1,...,uCNを出力する。エッジ検知ブロック5201A−5201Kはクロック信号C1−CKのエッジを夫々検知する。これらの信号は同期ブロック5202A−5202Kによって自走マルチクロックシーケンサへ同期される。マルチクロックシーケンサクロックは図52において「シーケンサクロック(sequencer CLOCK)」として示してあり、それは、暗示的に、明示的には接続されていない回路内の全てのクロック入力端(例えば、5202A−K,5205A−K,5209A−N)へ接続されている。優先度付器5203は同期ブロック5202A−5202Kから信号を受取り、且つ、複数個の信号が同時的に受取られた場合に、どの信号をANDゲート5204A−5204Kへ供給すべきかを決定する。図52に示したように、ANDゲート5204A−5204Kは、更に、ANDゲート5212Nによって供給される信号BLOCKを受取る(以下に詳細に説明する)。BLOCK信号は、サブネットワークは稼動中である場合には、なされた要求(入力クロック信号によって示されている)が無視されることとする。特に、BLOCK信号が低状態である場合には、ANDゲート5204A−5204Kの全ての出力信号も低状態である。その条件の結果、デマルチプレクサ(demux)5206は全て論理0信号を供給する(即ち、「無視」条件)。
【0218】
一方、BLOCK信号が高状態である場合には、システムがアイドルであることを意味する(即ち、どのサブネットワークも稼動中ではない)。この条件においては、ANDゲート5204の出力信号(即ち、信号RUN)が高状態へ移行すると、その特定の高信号は、その他のANDゲート5204によって供給されるその他の全ての低信号と共に、デマルチプレクサ(DEMUX)5206へ供給され、その際に、1ホット又は0ホットパターンを与え、該パターンは、それも1ホット又は0ホットであるDEMUX5206の出力信号を決定する。DEMUX5206は、該プロセスのスタートのマイクロサイクルを反映すべく形態特定されている。DEMUX5206の出力信号は、どのマイクロサイクルクロックuCが活性されるべきかを決定し、そのことは、どのマイクロサイクルが活性化されるかを決定する。DEMUX5206はメモリセル5207によってプログラムされ、そのプログラミングはどのマイクロサイクルが各トリガ信号uCと関連するかを決定する。
【0219】
フリップフロップ5205A−5205Kは、夫々、RUN(A)−RUN(K)を受取る。マルチクロックシーケンサクロック(FPGAチップ上の最高速のクロック)によってトリガされると、フリップフロップ5205A−5205Nは、夫々、エッジ検知器5201A−5201Nへフィードバック信号を供給する。このコンフィギュレーションにおいては、高信号がフリップフロップ5205によって出力されると、その高信号は夫々のエッジ検知器5201をリセットし、従って1つのエッジの受取りをアクノレッジ即ち認証する。
【0220】
ORゲート5208A−5208N、ANDゲート5210A−5210N、ANDゲート5212A−5212Nを包含する論理ゲートは信号BLOCKを発生する。1つの好適実施例においては、ANDゲート5212A−5212Nの直列チェーンが単一幅NORゲートとして実現されており且つ別のプレチャージ型論理が使用されている。このような実現例は従来公知であり(例えば、Weste及びEshraghian「CMOS VLSI設計の原理:システム展望(Principles of CMOS VLSI Design: A System Perspective)」、160−164頁、アジソンウェリィ出版社、1988)、従ってその詳細については割愛する。
【0221】
メモリセル5211A−5211Nの各々は、対応するマイクロサイクルがスケジューリングされたネットワークにおけるプロセスの最後のマイクロサイクルである場合にのみ、それに対応するANDゲート5210A−5210Nへ論理0を供給する。例えば、図50のスケジュールにおいて、マイクロサイクル1,2,4は最後のマイクロサイクルであり、従ってメモリセル5211B,5211C,5211E(明示的には示していない)が論理0を供給する。メモリセル5211A−5211N,5204,5207はコンフィギュレーションメモリの一部を構成しているが、それらの出力は図2に示したように時間多重型ではない。フリップフロップ5209A−5209Nの状態は現在のマイクロサイクルの状態を表わしている。特に、フリップフロップ5209A−5209Nは論理1を保持するものではない場合には、マルチクロックシーケンサ5200はアイドル状態にある(図57の状態5100)。単一のフリップフロップが論理1を保持している場合には、マルチクロックシーケンサ5200は対応するマイクロサイクル内にある。例えば、フリップフロップ5209Bが1を保持している場合にのみ、マルチクロックシーケンサ5200はマイクロサイクル1内にある(図50)。フリップフロップ5209A−5209Nのその他の全ての状態は無効である。
【0222】
該回路の動作は以下の如くである。アイドル状態において、フリップフロップ5209A−5209Nは低信号を格納し、そのことはANDゲート5210A−5210Nの出力信号を強制的に低状態とさせる。これらの低信号はゲート5212A−5212Nの出力信号、従って信号BLOCKを強制的に高状態とさせる。高BLOCK信号は、最も優先度の高い未定のクロックエッジ(存在する場合)がDEMUX5206へ高信号を供給することを可能とする。どのエッジも未定でない場合には、(換言すると、サービスされていないクロックエッジが検知されない場合)、全て0がDEMUX5206へ供給される。次いで、DEMUX5206は信号を発生するエッジ(存在する場合)を対応するプロセスにおける最初のマイクロサイクルへマッピングする。未定のエッジが存在しない場合には、DEMUX5206は全てのその出力端上で論理0を出力し、その際に全てのORゲート5208A−5208Nの出力信号を強制的に0とさせる。これらの低信号はフリップフロップ5209A−Nへ供給され、マルチクロックシーケンサ5200が次のシーケンサクロックにおいてアイドル状態に溜まることを確保する。
【0223】
然しながら、未定のエッジが存在する場合には、単一のDEMUX出力信号が高状態であり、対応するORゲート5208の出力信号を強制的に高状態とさせる。この高信号は、マルチクロックシーケンサ5200をして次のシーケンサクロックで適宜のマイクロサイクルへエンターさせる。
【0224】
マルチクロックシーケンサ5200がシーケンスの最後のマイクロサイクルではないマイクロサイクルにある場合には、現在のマイクロサイクルに対応するメモリセル5211が高信号を格納する。従って、対応するANDゲート5210の出力信号は高状態であり、BLOCK信号が低状態であることを保証する。低BLOCK信号は、DEMUX5206の出力信号が全て低状態であることを保証する。対応するフリップフロップ5209における論理1信号が対応するANDゲート5210を介して次のORゲート5208へ流れ、次いで次のフリップフロップ5209内へ流れる。このように、マルチクロックシーケンサ5200は次のシーケンサクロックにおいてシーケンス内の次のマイクロサイクルへエンターする。
【0225】
マルチクロックシーケンサ5200がシーケンスの最後のマイクロサイクルであるマイクロサイクル内にある場合には、BLOCK信号は高状態であり、あたかもマルチクロックシーケンサ5200が現在アイドル状態にあるかのように次の状態を決定させる。これは、IDLE(アイドル)状態5100を適宜バイパスすることが可能であるという点において、図51によって例示される形態の状態線図よりも改良されたものである。
【0226】
上述したシーケンサクロックは自走であり、且つ各マイクロサイクルは1つのシーケンササイクルの間持続する。フェーズロックループ(PLL)5214は通常必要とされる。何故ならば、適切なシステム性能を達成するために、シーケンサクロックはオフチップから実際的に分配されるのには高過ぎる周波数のものでなければならないからである。従って、より低い周波数のクロック信号CINがピン5212を介して供給され且つPLL5214によって周波数が増加されてシーケンサクロックを達成する。PLL5214は又、クロックのオフチップのものとオンチップのものとの間のスキュー即ち歪を効果的に最小なものとさせる。ある場合には、トリガ信号はシーケンサクロックに対して同期していることが既知であり(例えば、シーケンサクロックから分周された信号、別の信号によって特性付けられたシーケンサクロック、又は何等かのそれらの組合わせ)、従ってシンクロナイザ5202A−Kと関連する本質的な遅延を解消している。同期クロック発生器5213はこのようなクロックを発生するために設けられており、その際に不必要な同期ステップをバイパスしている。マイクロサイクル期間はシーケンサクロックの期間を操作することによって変化する。
【0227】
別の実施例においては、稼動中のサブネットワークは、インラプトしているサブネットワークが評価されている間に、先買され且つ待機状態とされる。インタラプト中のサブネットワークの稼動が完了すると、先買されたサブネットワークの中間状態が回復され且つ評価が継続して行なわれる。更に別の実施例においては、稼動中のサブネットワークが先買され、その中間状態が廃棄され、且つ稼動中のサブネットワークが待機状態とされる。資源が使用可能となると、先買されたサブネットワークの評価が回復される。このアプローチは通常計算環境において代替的なものではないが、この実施例は、状態節約の使用可能なレベルの数がサブネットワークの数よりも少ない場合に利点を与える。
【0228】
サブネットワーク間で転送される信号は「プロセス間通信」メカニズムを必要とする。特に、サブネットワークAからの信号がサブネットワークBにおけるフリップフロップへ供給される場合に、サブネットワークBは、単に、サブネットワークBに対するクロックエッジが発生する場合にサブネットワークAのデータ空間からの値を読取る。換言すると、サブネットワークA及びBは共用メモリを有している。然しながら、複数個のサブネットワークからの信号が同一の組合わせ論理へ供給される場合には、各「プロセス」がその組合わせ論理の出力信号をアップデートすることを可能とするメカニズムが必要である。冗長な論理ブロックを形成することによりこのような条件を迂回することが可能であるが(図45を参照して詳細に説明する)、このようなメカニズムは、基本的に、複数個のクロックエッジで変化する出力信号を実現することを必要とする。
【0229】
例えば図53に示した論理ネットワーク5300のようなある論理ネットワークは、それらの入力信号の関数として非同期的に遷移する信号を有している。特に、ピン5311A、ピン5311B、クロックピン5314上の信号が互いに非同期的であると仮定すると、ANDゲート5312Aの出力信号、即ちノード5313における信号Iは、入力ピン5311A及び5311B上に供給される信号が遷移する場合にはいつでも遷移する。ノードIにおける信号遷移が観察されると、入力ピン5311A及び5311Bへ供給される信号は評価をトリガするクロックとして考えねばならない。然しながら、フリップフロップ5301が入力ピン5311A及び5311Bにおける全ての信号遷移をサンプルするのに充分な頻度でクロック動作されない限り、信号Iは出力ピン5311Cへ到達することはない。このコンフィギュレーションにおいて、ANDゲート入力信号のうちの1つが変化する度にANDゲート5312Aは不必要にシミュレーションされ、その際に不所望にシミュレーションの複雑性を増加させる。
【0230】
図54は本発明に基づく論理ネットワーク5400を例示しており、その場合に、ANDゲート5312Aはフリップフロップ5301を介して再同期され、且つそれは論理ネットワーク5300と機能的に等価である(図53)。論理ネットワーク5400において、重要である場合には(即ち、出力信号に影響を与えることが可能)、入力信号をサンプルするために冗長な論理が形成され、その際にシミュレーションを簡単化させる。特にフリップフロップ5410B及び5410Cはフリップフロップ5301を置換する(図53)。従って、このコンフィギュレーションにおいては、入力ピン5411D及び5411Eは、夫々、フリップフロップ5410B及び5410Cへ信号を供給する。このように、クロック信号Cを受取ると(クロック5314によって供給される)、フリップフロップ5410B及び5410CはANDゲート5412Bへ信号を供給し、それは出力ピン5411Fへ信号を供給する。
【0231】
再同期が行なわれない場合には、例えば、フリップフロップにおいて破られることのない入力から出力の経路の場合には、各入力端に対して別個のサブネットワークが必要とされる。サブネットワークの数が法外もなく大きくなることを防止するために、信号のうちのいずれか1つの遷移が入力信号によって組合わせにより共用される単一のサブネットワークをトリガするように入力信号をグループ化させる。このステップは、典型的に、該経路がフリップフロップで破られることがない場合にのみ行なわれる。再度、再同期が行なわれない場合には、典型的に、各入力端に対して別個のサブネットワークが必要とされる。
【0232】
本発明の一実施例においては、ローカル(即ち、オンチップ)メモリ内に存在するアイドルのサブネットワークが現在ローカルメモリ内に存在することのないサブネットワークに対するコンフィギュレーションメモリとして又はユーザメモリとして使用するためにローカルメモリを解放するために格納(即ち、オフチップ)メモリへ転送させることが可能である。従って、サブネットワークは要求によりロードさせることが可能であり、且つ同時的にオンチップに存在することは必要ではない。外部メモリからコンフィギュレーションをローディングするためにある応答の時間の犠牲が必要であるが、このコンフィギュレーションにおけるチップの論理密度は理論的に無制限である。
【0233】
9.3 マイクロレジスタ代替物
特に論理エンジンモードに対して状態格納を提供する別の方法は、「バイパス」と呼ばれる固定した遅延を持った格納装置によるものである。図10Aを参照すると、バイパス350及び351が、夫々、上述したマイクロレジスタ324及び325を置換している(図3)。バイパスは単一ビット装置であって、それは次のコンフィギュレーションまで現在の結果を保存するラッチを有している。単に次のコンフィギュレーションへパスされるこれらの信号はバイパス350及び351内に格納される。典型的に、バイパス350及び351は完全なマイクロレジスタ324及び325よりもより小型で且つより簡単である。
【0234】
図10Bに示した別の実施例においては、各バイパス350及び351がシフトレジスタ352を有している。このように、信号が、例えば、バイパス350内に格納される場合には、その信号は1マイクロサイクル遅延されるものではなく、その代わりに、多数のマイクロサイクル遅延される。この遅延は該信号をマイクロサイクル毎に経路再決定することを節約し、そのサイクルに相互接続資源を節約している。
【0235】
バイパスは共用することが可能であり、マイクロサイクル毎に異なる信号をシフトレジスタ内へ入れ、且つレジスタ遅延の後に結果的に得られる値を取出すことが可能である。スケジューラは同一の遅延を有する信号を同一のバイパスへ割当てるに過ぎない。
【0236】
スケジューラは、シフトレジスタバイパスの利用を最大とするために論理遅延を同一の長さのものとさせる。
【0237】
シフトレジスタにおける遅延は以下のうちの択一的なものである。
【0238】
1.アーキテクチュアにおいて固定されているもの。この実施例においては、FPGAは多様なバイパス遅延で予め構築されており、その場合に各バイパスは固定した遅延を有している。全ての遅延が同じである必要はないので、シフトレジスタ352の長いもの及び短いものが存在する場合がある。シフトレジスタ長さの適切な分布は回路設計における必要とされる最小レジスタ格納時間の解析から決定される。
【0239】
2.コンフィギュレーション時間において固定されているもの。この実施例においては、バイパスはどのビットが出力信号であるかを選択する長さレジスタを有している。スケジューラプログラムは手元にある設計に対するバイパス長さを選択する。
【0240】
3.各マイクロサイクルにおいて選択可能なもの。この実施例においては、各マイクロサイクルにおいて、どのビットが出てくるかを選択することが可能である。スケジューラは、それらのビットが同一のマイクロサイクルにおいて必要とされる場合には、同一のバイパス内に2つのビットをスケジュールしてはならない。
【0241】
4.実施例1−3の組合わせによって決定されるもの。
【0242】
シフトレジスタバイパスの長さはチップ内のマイクロサイクルの数よりも長い場合がある。一実施例においては、2つのバイパスをカスケードさせてより長い遅延を構築することが可能である。
【0243】
別の実施例においては、マイクロレジスタの幾つかのビットをアーキテクチュアから省略することが可能である。減少させたマイクロレジスタは、CLBがマイクロレジスタビットを有するものではないマイクロサイクルに対するバイパスと結合させることが可能である。換言すると、殆どのCLBが全てのマイクロサイクルからの出力信号を格納するマイクロレジスタを有しており、幾つかのCLBは最初の2,3個のマイクロサイクルからの出力信号を保存するためにのみ構築することが可能である。これらのCLBは他のマイクロサイクルにおけるバイパスで次のマイクロサイクルへ信号をパスせねばならない。
【0244】
9.4 より深い論理に対する代替物
一方、SLBアレイはm個のブロックへ区画化即ち分割されており、各ブロック内のCLBは論理エンジンモードにおけるm個のシーケンスのマイクロサイクルのうちの1つにおいてアクティブ即ち活性状態である。部分的な結果が1つのブロックから次のブロックへパス即ち通過される。この場合には、最大論理深さはm×nである。スケジューリング及び区画化によって、論理を非常に効率的に詰込むことが可能である。何故ならば、nよりも深いレベルを有する論理部分のみが別個に区画化させることが必要であるに過ぎず、論理の残部は、尚且つ、全てのシーケンスのマイクロサイクルにおいて稼動しているからである。例えば、活性なCLBのアレイ5500を示す図55を参照すると、CLB5501は特定のシーケンスのマイクロサイクル期間中に活性であるに過ぎず、一方CLB5502は、全てのシーケンスのマイクロサイクル期間中において活性状態だからである(8.2a 同期/非同期クロック動作参照)。
【0245】
この技術の拡張は、FPGA内におけるコンフィギュレーションスライスの数よりもより多くのマイクロサイクルを可能とするマイクロサイクルシーケンサを調節することである。この実施例においては、シーケンサは、コンフィギュレーションを選択するためにマイクロサイクル番号の低次ビットを使用して、論理のレベル当たり1つのマイクロサイクルを介してサイクル動作すべく設定される。この実施例は論理の深さがFPGAにおけるコンフィギュレーション数よりも大きい場合の経路に対するCLBアレイの部分的区画化に関連している。より長いアドレスカウンタは、チップ内のコンフィギュレーション数の単純な倍数ではなくコンフィギュレーションの任意の数FPGAがシーケンス動作することを可能とする。
【0246】
9.5 CLB毎のメモリアクセスコンフィギュレーションビット
本発明の一実施例によれば、付加的なレジスタがメモリアクセスサイクル期間中にメモリへのアクセスを制限する。このレジスタは、メモリサイクルによって影響されることのないCLBに対するメモリアクセスを選択的にターンオフし、その際に各メモリサイクルに対する電力消費を減少させている。更に、電力の節約に加えて、このレジスタはメモリへのアクセスを選択的にディスエーブルさせることによってメモリのサブセットへのアクセスを可能とさせる。例えば、図61を参照すると、信号MCikはレジスタ720に類似した態様でメモリへのアクセスを制御するメモリセル(不図示)からのものである(図7B)。従って、この信号は、指定されたメモリセルが読取のために選択されているか否かを決定する。従って、信号MCikがこの実施例において論理「0」である場合には、CLKb内のメモリセルは読取られるか書込まれることはなく、その際に電力を節約している。
【0247】
9.6 マイクロレジスタセレクタオプション
本発明によれば、マイクロレジスタ上のセレクタの数(以前に簡単化のためにマルチプレクサとして言及した)がチップ面積を節約するために最小化されている。一実施例によれば、セレクタに対する2つの要素が存在しており、即ちマルチプレクサとバッファとである。隣接するレジスタに関してマルチプレクサを共用することによりセレクトのピークの利用を低下させる。図56A及び56Bはマイクロレジスタ(この例においては8ビットレジスタ)5601及び5602及び関連するセレクタ(即ち、3出力マルチプレクサ)5601A及び5602Aを夫々示している。
【0248】
図57において、マイクロレジスタ5601(それはCLB Aから信号を受取る)からマルチプレクサセレクタ5602A(それはCLB Bから信号を受取る)へ付加的な接続5700が設けられている。このように、CLB Bがコンフィギュレーションにおけるマルチプレクサの全てを必要とするものではなく且つCLB Aがエキストラな1つを必要とする場合には、CLB Aは共用マルチプレクサを使用することが可能である。レジスタ5601における全てのビットが全てのコンフィギュレーションに関して共用されることは必要ではない。実際に、異なるビットが異なるセレクタに関して共用されうる。
【0249】
図58の回路は、通常マルチプレクサ5601A及び5602Aと関連しているバッファ(図4の出力線上)の幾つかを取除いている。例えば、幾つかの信号がCLB Aによって次のコンフィギュレーションにおいて使用される場合には、マルチプレクサ5601Aは経路5801を使用することによって完全にバイパスされる。マルチプレクサ5601Aからの信号がCLB A内に位置されるべき場合には、該信号はフィードバック経路5802上に供給される。更に、マルチプレクサ5601Aからの信号が隣接するCLB B内に位置されるべき場合には、該信号は直接接続経路5803上に供給される。
【0250】
9.7 低パワー相互接続回路
本発明によれば、信号電圧の振れが制限されており、それにより速度を増加させ且つPLDの相互接続回路における電力を著しく減少させている。図59はPLD5900の一部を示しており、それは、ソース(発信元)形態特定可能論理ブロック(CLB)出力回路5901、ディスティネーション(宛先)CLB入力回路5903、相互接続構成体5902を有している。ソースCLB出力回路5901の出力線5901Aは相互接続構成体5902を介してディスティネーションCLB入力回路5903の入力線5903Aへ結合している。
【0251】
相互接続構成体5902は、実効的には、Nチャンネルトランジスタ5908A−5908Nによって実現されるRCネットワークである。特に、各トランジスタ5908A−5908Nは関連する抵抗Qを提供し、一方各トランジスタ5908A−5908N及び関連するラインセグメント5910A−5910Nは、夫々、容量5909A−5909N(コンデンサとして示してある)を提供する。
【0252】
当業者にとって公知の如く、いずれかのトランジスタ5908の容量は、そのチャンネル領域の面積を増加することによって増加される。従って、いずれかのトランジスタ5908の幅を増加させることによって抵抗Qを低下させることは、減少効果を有している。何故ならば、関連する容量5909も増加するからである。
【0253】
本発明によれば、トランジスタ5908A−5908Nのゲート上の電圧を高く維持しながらこれらのトランジスタのソース/ドレイン電圧を制限することによって、容量5909を増加させることなしに実効的に抵抗Qを低下させ、その際に相互接続構成体5902を介しての信号転送速度を改善し且つCLA5900における電力消費を著しく減少させる。従って、本発明によれば、ソースCLB出力回路5901は低い電圧トリガ点及び2つのNチャンネルトランジスタを有する従来のインバータ5904を有している。
【0254】
ソースCLB出力回路5901へ供給される論理0信号は、トランジスタ5906のゲートへ供給され、その際に該トランジスタをターンオフさせる。該論理0信号はインバータ5904によって反転され、その際にトランジスタ5905へ高信号を供給し、そのトランジスタを完全にターンオンさせる。トランジスタ5905は、そのオン状態において、約2.0Vを相互接続線5901Aへ転送する。
【0255】
一方、ソースCLB出力回路5901へ供給された論理1信号はトランジスタ5905をターンオフし且つトランジスタ5906をターンオンし、その際に相互接続線5901A上の電圧を接地へプルする。このように、ソースCLB出力回路5901は、高ゲート電圧駆動(インバータ5904を介し)を供給し、一方相互接続構成体5902へ最大2Vを確保する(トランジスタ5905及び5906を介して)。出力線5901A上の電圧の振れを約3.6Vではなく2Vへ制限することによって、相互接続構成体5902の電力条件を著しく減少させる(式1を参照して以下に説明する)。
【0256】
インバータ5907A−5907Nはパストランジスタ5908A−5908Nのゲートへ夫々供給される制御信号を反転させる。インバータ5907A−5907Nが論理低信号を受取るものと仮定すると、トランジスタ5908A−5908Nがターンオンし、その際に出力線5901A上の信号を入力線5903Aへ転送させる。
【0257】
ディスティネーションCLB入力回路5903は、約0.8Vのノイズマージンにおける低パワーで、低「1」レベル(即ち、2V)入力を取扱うことが可能であり且つ高「1」レベル(即ち、5V)出力を与えることが可能でなければならない。典型的に、高スレッシュホールドは1個の0.8VスレッシュホールドVccから低い信号によって駆動されるゲートにおける1.6V範囲において回路5903のPチャンネル装置上で使用される。回路5903の場合には、入力「1」レベルはVccから約3V低い。図60に示した一実施例においては、3つのステージが「1」レベルをVccとさせ、各ステージは1V上昇させる。各ステージの生来のPチャンネル装置のゲート対ソース電圧(Vgs)は、Pチャンネル装置6001がオフである場合に、1.6Vのスレッシュホールド電圧よりも0.6V低く、その際に良好なマージンを与えている。3及び4Vの中間状態供給電圧は当該技術分野において公知のN個のダイオードで得ることが可能であり、従ってその詳細な説明は割愛する。
【0258】
当該技術分野において公知の如く、CMOS回路における電力消費は次式と等価である。
【0259】
P=(CL×V1×V2×f)/2 (1)
尚、CLは出力上の容量負荷であり、V1は供給電圧であり、V2は相互接続構成体5902の電圧の振れであり、且つfは動作周波数である。容量負荷CL、毎秒当たりの遷移数f、供給電圧V1が適用場面毎に一定であると仮定すると、本発明はPLD5900における電力消費を著しく減少させる。特に、3.6V信号レベルの代わりに2Vの信号レベルを与えることによって、本発明は44%電力消費を減少させる。何故ならば、電圧V1は変化せず電圧V2が変化するに過ぎないからである。
【0260】
9.8 コンフィギュレーションに対するマルチアクセス
メモリアクセスは相互接続体及びLUTアクセスよりもかなり速いので、メモリをパイプライン動作させることが可能であり、即ち各メモリサイクル期間中に複数個のコンフィギュレーションワードを読取ることが可能である。
【0261】
マイクロレジスタがCLB出力線へ結合されていると仮定すると(例えば、図3参照)、論理エンジンモードにおけるマイクロサイクルは以下のステップを包含している(典型的な関連する時間は各ステップに続くカッコ内に示されている)。
【0262】
1.コンフィギュレーションワードを読取り且つパイプラインラッチ値をアップデートする(5ns)。
【0263】
2.相互接続体を介して論理入力線へ信号を伝搬させる(15ns)。
【0264】
3.ラッチ入力をパイプライン動作させるためにLUTを介して信号を伝搬させる(5ns)。
【0265】
信号がそれらの夫々LUT入力線へ到達するまでLUTコンフィギュレーションは必要とされない(上述した実施例においては、相互接続が有効となった後15ns)。従って、LUTコンフィギュレーションは、相互接続コンフィギュレーションの後メモリから読取ることが可能である。実際に、LUTコンフィギュレーションに対してメモリを2度目にサイクル動作する時間がある。
【0266】
従って、図62に示した1つの実施例において、全ての従来のコンフィギュレーションメモリセルの「後ろ側」に8個のビットを置く代わりに、各対の従来のコンフィギュレーションメモリセル(即ち、1つが相互接続用及び別のものが論理用)に対して16ビット(即ち、メモリセルMC1−MC15内に格納されているビット)を供給する。この実施例においては、コンフィギュレーションデータは2つのメモリアクセスで読取られ、その際により大きな深さに基づいてメモリ効率の利点を得ている。この実施例においてはビット線203が共用されているが、各メモリアクセスに対し付加的なラッチ204が設けられており、各ラッチ204は別個のクロック線を有している。従って、ラッチ2041 (それは相互接続体に対して信号を供給する)及びラッチ2042 (それはCLB論理に対して信号を供給する)は、夫々、コンフィギュレーションクロック1及び2によって駆動される。爾後のマイクロサイクルがオーバーラップされる上述したプロセスと異なり、この実施例においては、FPGAをコンフィギュア即ち形態特定するために複数回のメモリアクセスが必要とされる。
【0267】
9.9 パイプライン特徴
論理エンジンモードにおけるFPGAのフラッシュリコンフィギュレーションの後に、FPGA計算が従来の対応で実行される。典型的に、これらの計算はメモリアクセスよりも長い時間を必要とする。従って、初期的なコンフィギュレーションデータを読取った後に、コンフィギュレーションメモリはある時間期間の間アイドル状態となる。
【0268】
コンフィギュレーションデータが上述したようにラッチされると、図2を参照すると、論理及び相互接続が評価されている間にそのコンフィギュレーションと同一のマイクロサイクルにおけるメモリアイドル時間内にメモリ動作を「挿入」することが可能であり、その際に効果的にメモリアクセスをパイプライン動作させる。ユーザメモリアクセス、コンフィギュレーション、ユーザ論理及び相互接続のタイミングは以下の表Bに示してある。
【0269】
Figure 0003729943
尚、Cはコンフィギュレーションアクセスであり、LIPは論理相互接続伝搬であり、且つMはメモリアクセスである。
【0270】
コンフィギュレーションC0は時間T0においてコンフィギュレーションメモリから読取られる。時間T1において、コンフィギュレーションはFPGAにおける論理及び相互接続を制御するためにラッチされ(LIP0)、それはREAD(読取)メモリ動作を発生させることを包含している。メモリアクセス(M0)は時間T2において行なわれ、データが時間T3においてCLB入力信号として与えられる。メモリアクセスの後に、メモリは再度サイクル動作されて次のマイクロサイクルに対するコンフィギュレーション情報を維持する。コンフィギュレーションC1はコンフィギュレーションC0によるメモリアクセスの結果を使用することはできないが、コンフィギュレーションC1は次のメモリアドレスを発生する。従って、1サイクルの待ち時間期間の後(コンフィギュレーションC1に対して)、メモリはサイクル当たり1個の転送割合でフローを転送する。
【0271】
単一のコンフィギュレーションに対するメモリアクセス(M)及びコンフィギュレーションアクセス(C)は同一の時間Tにおいて発生することは不可能であるが、時間(T)の期間は、通常、論理相互接続伝搬(LIP)ステップによって決定される。従って、メモリ(M)は、コンフィギュレーションの論理が評価されている間に多数回サイクル動作することが可能である。実際に、FPGA計算の期間に依存して、マイクロサイクルの期間を増加させることなしに、幾つかのメモリサイクル(例えば書込に続く読取)を挿入させることが可能である。本発明のその他の実施例においては、より短い待ち時間を有するパイプラインスケジュールが提供される。
【0272】
Figure 0003729943
表CにおいてM0に対するアドレスはLIP0に関連して計算される。そのメモリアクセスは、そのアドレスの計算が完了するまで遅延され、その計算はLIP遅延全体よりも小さい場合がある。M0が充分に短いか又はT1が充分に長い場合には、メモリ動作M0の結果が時間T1内に得られる場合がある。
【0273】
メモリアクセスはFPGAコンフィギュレーションの後に発生するので、アドレス計算が充分に速いものと仮定すると、メモリはアドレスが計算されるのと同一のサイクルにおいてアクセス可能である。このような高速計算は次のものを含んでいる。
【0274】
1.コンフィギュレーションデータにおいて与えられるアドレス計算(即ち、即値)。
【0275】
2.そのアドレス値が、最も最後に到着する信号よりも充分前にアドレスレジスタに到着する場合(即ち、迅速な経路)。後者の計算においては、メモリは、アドレスが発生されるFPGAサイクルの後の部分においてアクセス可能である。一実施例においては、リコンフィギュレーション即ち再形態特定は、メモリ動作から結果が戻されるまで遅延される。遅延の量は、最悪の場合のアドレス発生遅延+メモリアクセス遅延から決定することが可能である。
【0276】
9.10 ROMセルの組込
上述した実施例においては、全てのメモリスライスがRAMセルを有している。その他の実施例においては、付加的なメモリスライスはROMセルを有しており、それはローカルバス203上のサイト即ち箇所を占有し(図2)、RAMセルと同一のラッチ204を使用し、且つそれ自身の制御線205を有している。ROMセルはRAMセルよりも著しく小さいが柔軟性はより低い。従って、RAMセルと比較してROMセルを使用することの柔軟性の減少は、ROMセルに関連する低コストとバランスされる。これらの実施例においては、ROMセルは、製品をエンドユーザがテストすることを助けるための自己テスト等の機能のため、又は例えば直接メモリアクセス又は特定バスインターフェース(例えば、PCI)等のある固定した機能を提供するために使用される。
【0277】
エンドユーザは、その機能を含むスライスへジャンプすることによってこれらの機能を喚起させる。自己テスト機能能力は、固定機能能力よりも容易に提供される。何故ならば、自己テストは、典型的に、ユーザのコンフィギュレーションとは独立的だからである。対照的に、固定機能能力は、より制限的なものである。何故ならば、コールを行なうエンドユーザスライスとROMスライスとの間でパラメータをパスするための構成を設けねばならないからである。パラメータのパスはユーザメモリとして設定されたRAMスライスの固定したサブセットを介して行なうことが可能である。パスされたパラメータ及びメモリ内のパラメータ区域でさえも、例えばスタートアドレス、リターンプレーンアドレス等の機能特定性である。
【0278】
固定機能は、典型的に、異なる製品に対して異なっている。本発明によれば、新たな製品はROM技術を定義するマスク層を単に変更するだけで開発される。一方、ROMは例えばアンチヒューズ等の一度だけプログラム可能な装置で実現することが可能である。一実施例においては、混合ROM及びRAM装置が2つの既存の業界標準部品、即ちRAMをベースとしたFPGAとそのハードワイヤード型等価物の間のハイブリッド部品として使用される(例えば、ザイリンクスのHardWire(商標)装置)。このように顧客はROM密度の単価の利点を得るために顧客に特定的なROMマスクの固定コストを支払うが、尚且つ、可変のコンフィギュレーション及びユーザメモリのために使用可能な幾つかのスライスを有している。
【0279】
以上、本発明の具体的実施の態様について詳細に説明したが、本発明は、これら具体例にのみ限定されるべきものではなく、本発明の技術的範囲を逸脱することなしに種々の変形が可能であることは勿論である。
【図面の簡単な説明】
【図1】 従来のFPGAコンフィギュレーションビットを示した概略図。
【図2】 本発明に基づくコンフィギュレーションビットスライスを示した概略図。
【図3】 時間多重型CLBを示した概略ブロック図。
【図3A】 複数個のメモリセルブロック、出力マルチプレクサ、マイクロレジスタの夫々供給される本発明のコンフィギュレーション選択信号、読取選択信号、書込選択信号を示した概略図。
【図4】 図3に示した時間多重型CLBの一部をより詳細に示した概略ブロック図。
【図5】 図4のCLBの一部をより詳細に示した概略図。
【図6】 図5の回路に対する真理値表を示した概略図。
【図7】 2レベルメモリヒエラルキを示した概略図。
【図7A】 2つのローカルバス及び2つのグローバルバスが真及び相補信号をビット組へ担持する実施例を示した概略図。
【図7B】 CLB毎にメモリセルへのアクセスを与えるレジスタコンフィギュレーションを示した概略図。
【図8】 公知の4トランジスタメモリセルを示した概略図。
【図9】 PLDにおける4トランジスタセルメモリコンフィギュレーションを示した概略図。
【図10A】 本発明の一実施例に基づいて固定遅延を有する格納装置を具備するCLBを示した概略図。
【図10B】 本発明の一実施例に基づく固定遅延を持った格納装置を具備する別のCLBを示した概略図。
【図11】 共用メモリを示した概略ブロック図。
【図12】 図11の共用メモリの詳細を示した概略図。
【図13】 共用メモリに対するワード読取タイミングを示した概略図。
【図14】 共用メモリに対するワード書込タイミングを示した概略図。
【図15】 共用メモリに対するバースト読取タイミングを示した概略図。
【図16】 共用メモリに対するバースト書込タイミングを示した概略図。
【図17】 共用メモリに対する複数個のコンフィギュレーションビットを示した概略図。
【図18】 共用メモリに対するコンフィギュレーションアクセスタイミングを示した概略図。
【図19】 従来の自己同期型回路を示した概略図。
【図20】 図19の回路に対するタイミングを示した概略図。
【図21】 各外部クロックサイクルに対する複数個の内部サイクルを発生するタイミング回路を示した概略図。
【図22A】 本発明の一実施例に基づく単一クロックシーケンサを示した概略図。
【図22B】 3つのコンフィギュレーションに対する例示的なタイミングシーケンスを示した概略図。
【図23】 本発明に基づく分割メモリを示した概略図。
【図24】 CLBに対するレイアウトの一実施例を示した概略図。
【図25】 PLDの多機能タイムシェアリング動作モードを示した概略図。
【図26】 PLDにおける論理エンジンモードの実現例を示した概略図。
【図26A】 クリティカルパス上のレベルの対が同一のマイクロサイクル内に2つのLUTを直列的に適合させるためにマイクロレジスタバイパスを使用して単一レベルへ合体させる本発明の一実施例に基づく圧縮方法を示した概略図。
【図26B】 装置内のフリップフロップとその他の要素との間の2つの必要なスケジューリング関係を示した概略図。
【図27】 ゲート型クロックフリップフロップを示した概略図。
【図28】 マイクロサイクルクロックに対する種々のライブラリィ要素及びそれらの関係を示した概略図。
【図29】 クロックイネーブル型フリップフロップを示した概略図。
【図30】 図26の再スケジュールされた論理を示した概略図。
【図31】 二次元空間におけるスケジューリング及び配置ルックアップテーブルを示した概略図。
【図32】 三次元空間におけるスケジューリング及び配置ルックアップテーブルを示した概略図。
【図33】 時間多重型PLDにおけるマイクロサイクルシーケンス動作を示した概略図。
【図34】 時間多重型PLDにおけるマイクロサイクルシーケンス動作を示した概略図。
【図35】 各メモリサイクルに対し異なるコンフィギュレーションを持った全てのCLBを示した概略図。
【図36】 あるマイクロサイクルに対してコンフィギュレーションを有することのない幾つかのCLBを示した概略図。
【図37A】 1つの可変深さ時間多重型CLBを示した概略図。
【図37B】 別の可変深さ時間多重型CLBを示した概略図。
【図38】 異なる入力に対し異なる数のマイクロサイクルを有するCLBを示した概略図。
【図39】 最高速クロックがユーザクロックとして実現され且つその他の全てのクロックがマイクロサイクルレジスタイネーブル信号で実現されている場合の適宜の波形を与える状態マシンを示した概略図。
【図39A】 図39の遅いクロック信号、イネーブル信号及びマスタクロック信号を示したタイミング線図。
【図40】 本発明に基づくスケジューリングを最適化する流れを示したフローチャート図。
【図41】 本発明に基づく例示的な入力/出力ブロックを示した概略図。
【図42】 マイクロサイクルインタラプトシミュレーションに露呈される回路を示した概略図。
【図42A】 図42のユーザネットワークを複数個のサブネットワークへ区画化する状態を示した概略図。
【図43】 図42の回路の変形例を示した概略図。
【図44】 図42の回路の変形例を示した概略図。
【図45】 図42の回路の変形例を示した概略図。
【図46】 図42の回路の擬似コード変換を示した概略図。
【図47】 図45の回路の擬似コード変換を示した概略図。
【図48】 図46の擬似コード変換に関連して使用されるスケジューリング拘束条件を示した概略図。
【図49】 図47の擬似コード変換に関連して使用されるスケジュ−リング拘束条件を示した概略図。
【図50】 1つのマイクロサイクル割当を示した概略図。
【図51】 図50に対する状態線図を示した概略図。
【図52】 適宜のマイクロサイクルを決定する回路を示した概略図。
【図53】 同期した出力信号を有する等価回路を示した概略図。
【図54】 同期した出力信号を有する別の等価回路を示した概略図。
【図55】 拡張可能な論理深さを有する時間多重型PLDを示した概略図。
【図56A】 自分自身の出力マイクロレジスタ及びマルチプレクサを具備するCLBを示した概略図。
【図56B】 それ自身の出力マイクロレジスタ及びマルチプレクサを具備する別のCLBを示した概略図。
【図57】 マルチプレクサを共用する2つのCLBを示した概略図。
【図58】 マルチプレクサを共用し且つフィードバック経路を具備する2つのCLBを示した概略図。
【図59】 相互接続体を有するPLDの一部を示した概略図。
【図60】 図59のPLDにおいて使用するインバータを示した概略図。
【図61】 付加的なレジスタがメモリアクセスサイクル期間中にメモリへのアクセスを制限する本発明の一実施例を示した概略図。
【図62】 コンフィギュレーションデータが2つのメモリアクセスで読取られる本発明の一実施例を示した概略図。
【図63A】 1つの出力マルチプレクサを制御するコンフィギュレーションメモリへ供給されるコンフィギュレーション選択信号及びマイクロレジスタへ供給される書込選択信号を示した概略図。
【図63B】 出力マルチプレクサの別の実施例を示した概略図。
【図63C】 図63Bの出力マルチプレクサと比較してラッチ数を減少させる出力マルチプレクサの更に別の実施例を示した概略図。
【図63D】 本発明の出力マルチプレクサに対する入力信号を示した表の説明図。
【図63E】 図63Aに示した出力マルチプレクサ内に設けられる回路に対する真理値表を示した説明図。
【図63F】 図63Bに示した出力マルチプレクサに対するタイミング線図。
【図63G】 図63Aにおいて識別した回路の詳細な実現例を示した概略図。
【図64A】 本発明によって解消されるスキュー問題を例示するタイミング線図。
【図64B】 本発明によって解消されるスキュー問題を例示する回路を示した概略図。
【符号の説明】
200 ランダムアクセスメモリビット組
201 ラッチ
202 セレクトトランジスタ
203 共通ビット線
204 クロック型ラッチ

Claims (18)

  1. プログラム可能論理装置において、
    少なくとも1個の形態特定可能論理ブロックが設けられており、各形態特定可能論理ブロックは組合わせ要素と順序論理要素とを有しており、
    前記少なくとも1個の形態特定可能論理ブロックを形態特定させるための複数個のプログラム可能論理要素が設けられており、少なくとも1個のプログラム可能論理要素は、前記組合わせ要素の形態を特定させるための複数個のメモリセルを有しており、且つ少なくとも1個のプログラム可能論理要素は前記順序論理要素の形態を特定させるための複数個のメモリセルを有しており
    1個の形態特定可能論理ブロックの複数個の中間状態を格納するための格納装置が設けられおり、
    各形態特定可能論理ブロックが、更に、前記中間状態へアクセスするため又は少なくとも1個の形態特定可能論理ブロックにおける値へアクセスするための複数個のセレクタを有している、
    ことを特徴とするプログラム可能論理装置。
  2. 請求項において、前記値が順序論理要素の出力信号であることを特徴とするプログラム可能論理装置。
  3. 請求項において、前記値が組合わせ要素の出力信号であることを特徴とするプログラム可能論理装置。
  4. 請求項において、前記格納装置が第一トリガ信号によって制御されることを特徴とするプログラム可能論理装置。
  5. 請求項において、前記セレクタが複数個のトリガ信号によって制御されることを特徴とするプログラム可能論理装置。
  6. 請求項において、更に、複数個のラッチが設けられており、前記格納装置の各ビットが関連するラッチへ供給され、前記複数個のラッチの出力端子がマルチプレクサの入力端子へ結合されており、前記マルチプレクサは前記複数個のプログラム可能論理要素によって制御されることを特徴とするプログラム可能論理装置。
  7. 請求項において、前記複数個のラッチが第一トリガ信号によってクロック動作されることを特徴とするプログラム可能論理装置。
  8. 請求項において、前記格納装置が前記第一トリガ信号よりも精度の低い複数個のトリガ信号によって制御されることを特徴とするプログラム可能論理装置。
  9. 請求項において、更に、バイパスラッチが前記形態特定可能論理ブロックと前記マルチプレクサとの間に結合されており、前記バイパスラッチが前記複数個のラッチと同一のトリガによって制御されることを特徴とするプログラム可能論理装置。
  10. 請求項において、各セレクタが前記形態特定可能論理ブロック及び前記格納装置から信号を受取るための第一マルチプレクサを有していることを特徴とするプログラム可能論理装置。
  11. 請求項において、更に、前記順序論理要素又は前記組合わせ要素から前記格納装置へ信号を選択的に供給するために少なくとも1個の形態特定可能論理ブロック内にマルチプレクサが設けられていることを特徴とするプログラム可能論理装置。
  12. 請求項1において、更に、前記プログラム可能論理要素のうちの1つの出力信号として前記複数個のメモリセルのうちの1つの値を供給するラッチが設けられていることを特徴とするプログラム可能論理装置。
  13. 請求項において、各形態特定可能論理ブロックが、更に、前記格納装置からの信号を受取るための出力マルチプレクサを有していることを特徴とするプログラム可能論理装置。
  14. 請求項において、前記格納装置が前記形態特定可能論理ブロックのうちの少なくとも1つの入力端子へ結合されていることを特徴とするプログラム可能論理装置。
  15. 請求項1において、更に、前記複数個のメモリセルへアクセスするための複数個のラインが設けられていることを特徴とするプログラム可能論理装置。
  16. 請求項15において、更に、1つの形態と関連した前記複数個のプログラム可能論理要素のうちの所定の組を選択するための手段が設けられていることを特徴とするプログラム可能論理装置。
  17. 請求項15において、更に、1個の形態特定可能論理ブロック内の1つの形態と関連した前記複数個のプログラム可能論理要素のうちの所定の組を選択するレジスタが設けられていることを特徴とするプログラム可能論理装置。
  18. プログラム可能論理装置において、
    組合わせ要素及び順序論理要素を含む形態特定可能論理ブロックが設けられており、
    入力/出力ブロックが設けられており、
    前記形態特定可能論理ブロック及び前記入力/出力ブロックを相互接続する相互接続構成体が設けられており、
    前記形態特定可能論理ブロック及び前記相互接続構成体の形態を特定するための複数個のプログラム可能論理要素が設けられており、少なくとも1個のプログラム可能論理要素が複数個のメモリセルを有しており、
    前記入力/出力ブロックの複数個の中間状態を格納するための格納装置が設けられており
    各形態特定可能論理ブロックが、更に、前記中間状態へアクセスするため又は少なくとも1個の形態特定可能論理ブロックにおける値へアクセスするための複数個のセレクタを有している、
    ことを特徴とするプログラム可能論理装置。
JP21752796A 1995-08-18 1996-08-19 時間多重書込可能論理装置 Expired - Lifetime JP3729943B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/516,186 US5646545A (en) 1995-08-18 1995-08-18 Time multiplexed programmable logic device
US08/516186 1995-08-18

Publications (2)

Publication Number Publication Date
JPH09181599A JPH09181599A (ja) 1997-07-11
JP3729943B2 true JP3729943B2 (ja) 2005-12-21

Family

ID=24054509

Family Applications (1)

Application Number Title Priority Date Filing Date
JP21752796A Expired - Lifetime JP3729943B2 (ja) 1995-08-18 1996-08-19 時間多重書込可能論理装置

Country Status (3)

Country Link
US (1) US5646545A (ja)
EP (1) EP0759662A3 (ja)
JP (1) JP3729943B2 (ja)

Families Citing this family (252)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6556044B2 (en) 2001-09-18 2003-04-29 Altera Corporation Programmable logic device including multipliers and configurations thereof to reduce resource utilization
US5701441A (en) * 1995-08-18 1997-12-23 Xilinx, Inc. Computer-implemented method of optimizing a design in a time multiplexed programmable logic device
US5784313A (en) 1995-08-18 1998-07-21 Xilinx, Inc. Programmable logic device including configuration data or user data memory slices
US7266725B2 (en) 2001-09-03 2007-09-04 Pact Xpp Technologies Ag Method for debugging reconfigurable architectures
US5787007A (en) * 1996-01-30 1998-07-28 Xilinx, Inc. Structure and method for loading RAM data within a programmable logic device
US5852795A (en) * 1996-11-22 1998-12-22 New York Gas Group Apparatus for controlling a multiplicity of compressors
DE19651075A1 (de) 1996-12-09 1998-06-10 Pact Inf Tech Gmbh Einheit zur Verarbeitung von numerischen und logischen Operationen, zum Einsatz in Prozessoren (CPU's), Mehrrechnersystemen, Datenflußprozessoren (DFP's), digitalen Signal Prozessoren (DSP's) oder dergleichen
DE19654595A1 (de) 1996-12-20 1998-07-02 Pact Inf Tech Gmbh I0- und Speicherbussystem für DFPs sowie Bausteinen mit zwei- oder mehrdimensionaler programmierbaren Zellstrukturen
EP1329816B1 (de) 1996-12-27 2011-06-22 Richter, Thomas Verfahren zum selbständigen dynamischen Umladen von Datenflussprozessoren (DFPs) sowie Bausteinen mit zwei- oder mehrdimensionalen programmierbaren Zellstrukturen (FPGAs, DPGAs, o.dgl.)
US5959466A (en) 1997-01-31 1999-09-28 Actel Corporation Field programmable gate array with mask programmed input and output buffers
US5821776A (en) * 1997-01-31 1998-10-13 Actel Corporation Field programmable gate array with mask programmed analog function circuits
US6542998B1 (en) 1997-02-08 2003-04-01 Pact Gmbh Method of self-synchronization of configurable elements of a programmable module
US6150837A (en) 1997-02-28 2000-11-21 Actel Corporation Enhanced field programmable gate array
US6047115A (en) * 1997-05-29 2000-04-04 Xilinx, Inc. Method for configuring FPGA memory planes for virtual hardware computation
US6421817B1 (en) * 1997-05-29 2002-07-16 Xilinx, Inc. System and method of computation in a programmable logic device using virtual instructions
US8686549B2 (en) 2001-09-03 2014-04-01 Martin Vorbach Reconfigurable elements
US5986467A (en) * 1997-10-31 1999-11-16 Xilinx, Inc. Time-multiplexed programmable logic devices
DE19861088A1 (de) 1997-12-22 2000-02-10 Pact Inf Tech Gmbh Verfahren zur Reparatur von integrierten Schaltkreisen
US6034538A (en) * 1998-01-21 2000-03-07 Lucent Technologies Inc. Virtual logic system for reconfigurable hardware
US6011740A (en) * 1998-03-04 2000-01-04 Xilinx, Inc. Structure and method for providing additional configuration memories on an FPGA
US6292907B1 (en) * 1998-07-29 2001-09-18 Hewlett-Packard Company State machine bit group selection apparatus for debugging a digital system
EP1138001B1 (en) 1998-11-20 2003-08-27 Altera Corporation Reconfigurable programmable logic device computer system
US6292916B1 (en) 1998-12-10 2001-09-18 Lucent Technologies Inc. Parallel backtracing for satisfiability on reconfigurable hardware
EP1017059B1 (en) * 1998-12-30 2007-07-18 STMicroelectronics S.r.l. Method for reading a memory, particularly a non-volatile memory
US6107821A (en) * 1999-02-08 2000-08-22 Xilinx, Inc. On-chip logic analysis and method for using the same
US6407576B1 (en) * 1999-03-04 2002-06-18 Altera Corporation Interconnection and input/output resources for programmable logic integrated circuit devices
US6088784A (en) * 1999-03-30 2000-07-11 Sandcraft, Inc. Processor with multiple execution units and local and global register bypasses
US6442732B1 (en) 1999-04-21 2002-08-27 Lucent Technologies, Inc. Virtual logic system for solving satisfiability problems using reconfigurable hardware
AU5805300A (en) 1999-06-10 2001-01-02 Pact Informationstechnologie Gmbh Sequence partitioning in cell structures
JP3520810B2 (ja) 1999-07-02 2004-04-19 日本電気株式会社 バックアップ機能を有するデータ保持回路
GB2352548B (en) 1999-07-26 2001-06-06 Sun Microsystems Inc Method and apparatus for executing standard functions in a computer system
US6618698B1 (en) 1999-08-12 2003-09-09 Quickturn Design Systems, Inc. Clustered processors in an emulation engine
US6255849B1 (en) 2000-02-04 2001-07-03 Xilinx, Inc. On-chip self-modification for PLDs
US6496971B1 (en) 2000-02-07 2002-12-17 Xilinx, Inc. Supporting multiple FPGA configuration modes using dedicated on-chip processor
US6438737B1 (en) 2000-02-15 2002-08-20 Intel Corporation Reconfigurable logic for a computer
US6694491B1 (en) 2000-02-25 2004-02-17 Lightspeed Semiconductor Corporation Programmable logic array embedded in mask-programmed ASIC
US6769109B2 (en) 2000-02-25 2004-07-27 Lightspeed Semiconductor Corporation Programmable logic array embedded in mask-programmed ASIC
EP1342158B1 (de) 2000-06-13 2010-08-04 Richter, Thomas Pipeline ct-protokolle und -kommunikation
US7343594B1 (en) 2000-08-07 2008-03-11 Altera Corporation Software-to-hardware compiler with symbol set inference analysis
AU2001283549A1 (en) 2000-08-07 2002-02-18 Altera Corporation Software-to-hardware compiler
US7055125B2 (en) * 2000-09-08 2006-05-30 Lightspeed Semiconductor Corp. Depopulated programmable logic array
US8058899B2 (en) 2000-10-06 2011-11-15 Martin Vorbach Logic cell array and bus system
AU2002220600A1 (en) * 2000-10-06 2002-04-15 Pact Informationstechnologie Gmbh Cell system with segmented intermediate cell structure
US7187673B2 (en) * 2000-12-18 2007-03-06 Koninklijke Philips Electronics N.V. Technique for creating a machine to route non-packetized digital signals using distributed RAM
US7844796B2 (en) 2001-03-05 2010-11-30 Martin Vorbach Data processing device and method
US7444531B2 (en) 2001-03-05 2008-10-28 Pact Xpp Technologies Ag Methods and devices for treating and processing data
US9037807B2 (en) 2001-03-05 2015-05-19 Pact Xpp Technologies Ag Processor arrangement on a chip including data processing, memory, and interface elements
US7581076B2 (en) * 2001-03-05 2009-08-25 Pact Xpp Technologies Ag Methods and devices for treating and/or processing data
WO2005045692A2 (en) 2003-08-28 2005-05-19 Pact Xpp Technologies Ag Data processing device and method
US7249242B2 (en) 2002-10-28 2007-07-24 Nvidia Corporation Input pipeline registers for a node in an adaptive computing engine
US7325123B2 (en) * 2001-03-22 2008-01-29 Qst Holdings, Llc Hierarchical interconnect for configuring separate interconnects for each group of fixed and diverse computational elements
US6836839B2 (en) 2001-03-22 2004-12-28 Quicksilver Technology, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US7653710B2 (en) 2002-06-25 2010-01-26 Qst Holdings, Llc. Hardware task manager
US7752419B1 (en) 2001-03-22 2010-07-06 Qst Holdings, Llc Method and system for managing hardware resources to implement system functions using an adaptive computing architecture
US7962716B2 (en) 2001-03-22 2011-06-14 Qst Holdings, Inc. Adaptive integrated circuitry with heterogeneous and reconfigurable matrices of diverse and adaptive computational units having fixed, application specific computational elements
US6526559B2 (en) 2001-04-13 2003-02-25 Interface & Control Systems, Inc. Method for creating circuit redundancy in programmable logic devices
US6577678B2 (en) 2001-05-08 2003-06-10 Quicksilver Technology Method and system for reconfigurable channel coding
EP1402382B1 (de) 2001-06-20 2010-08-18 Richter, Thomas Verfahren zur bearbeitung von daten
US7996827B2 (en) 2001-08-16 2011-08-09 Martin Vorbach Method for the translation of programs for reconfigurable architectures
US7434191B2 (en) 2001-09-03 2008-10-07 Pact Xpp Technologies Ag Router
US8686475B2 (en) 2001-09-19 2014-04-01 Pact Xpp Technologies Ag Reconfigurable elements
US7046635B2 (en) 2001-11-28 2006-05-16 Quicksilver Technology, Inc. System for authorizing functionality in adaptable hardware devices
US8412915B2 (en) 2001-11-30 2013-04-02 Altera Corporation Apparatus, system and method for configuration of adaptive integrated circuitry having heterogeneous computational elements
US6986021B2 (en) 2001-11-30 2006-01-10 Quick Silver Technology, Inc. Apparatus, method, system and executable module for configuration and operation of adaptive integrated circuitry having fixed, application specific computational elements
US7215701B2 (en) 2001-12-12 2007-05-08 Sharad Sambhwani Low I/O bandwidth method and system for implementing detection and identification of scrambling codes
JP3540796B2 (ja) * 2001-12-28 2004-07-07 東京エレクトロンデバイス株式会社 演算システム
US7403981B2 (en) 2002-01-04 2008-07-22 Quicksilver Technology, Inc. Apparatus and method for adaptive multimedia reception and transmission in communication environments
US8281108B2 (en) 2002-01-19 2012-10-02 Martin Vorbach Reconfigurable general purpose processor having time restricted configurations
ATE402446T1 (de) 2002-02-18 2008-08-15 Pact Xpp Technologies Ag Bussysteme und rekonfigurationsverfahren
US8914590B2 (en) 2002-08-07 2014-12-16 Pact Xpp Technologies Ag Data processing method and device
US7328414B1 (en) 2003-05-13 2008-02-05 Qst Holdings, Llc Method and system for creating and programming an adaptive computing engine
US7660984B1 (en) 2003-05-13 2010-02-09 Quicksilver Technology Method and system for achieving individualized protected space in an operating system
US20040025004A1 (en) * 2002-08-02 2004-02-05 Gorday Robert Mark Reconfigurable logic signal processor (RLSP) and method of configuring same
WO2004021176A2 (de) 2002-08-07 2004-03-11 Pact Xpp Technologies Ag Verfahren und vorrichtung zur datenverarbeitung
US7657861B2 (en) 2002-08-07 2010-02-02 Pact Xpp Technologies Ag Method and device for processing data
US8108656B2 (en) 2002-08-29 2012-01-31 Qst Holdings, Llc Task definition for specifying resource requirements
AU2003289844A1 (en) 2002-09-06 2004-05-13 Pact Xpp Technologies Ag Reconfigurable sequencer structure
US7502915B2 (en) * 2002-09-30 2009-03-10 Nvidia Corporation System and method using embedded microprocessor as a node in an adaptable computing machine
US7937591B1 (en) 2002-10-25 2011-05-03 Qst Holdings, Llc Method and system for providing a device which can be adapted on an ongoing basis
US8276135B2 (en) 2002-11-07 2012-09-25 Qst Holdings Llc Profiling of software and circuit designs utilizing data operation analyses
US7225301B2 (en) 2002-11-22 2007-05-29 Quicksilver Technologies External memory controller node
US8296764B2 (en) 2003-08-14 2012-10-23 Nvidia Corporation Internal synchronization control for adaptive integrated circuitry
US7174432B2 (en) 2003-08-19 2007-02-06 Nvidia Corporation Asynchronous, independent and multiple process shared memory system in an adaptive computing architecture
US7099227B1 (en) 2004-01-16 2006-08-29 Xilinx, Inc. PLD hardwire programming with multiple functional modes
US7109752B1 (en) * 2004-02-14 2006-09-19 Herman Schmit Configurable circuits, IC's, and systems
US7193440B1 (en) * 2004-02-14 2007-03-20 Herman Schmit Configurable circuits, IC's, and systems
US7126381B1 (en) 2004-02-14 2006-10-24 Herman Schmit VPA interconnect circuit
US7425841B2 (en) * 2004-02-14 2008-09-16 Tabula Inc. Configurable circuits, IC's, and systems
US7167025B1 (en) * 2004-02-14 2007-01-23 Herman Schmit Non-sequentially configurable IC
US7622951B2 (en) * 2004-02-14 2009-11-24 Tabula, Inc. Via programmable gate array with offset direct connections
US7284222B1 (en) * 2004-06-30 2007-10-16 Tabula, Inc. Method and apparatus for identifying connections between configurable nodes in a configurable integrated circuit
US7084664B1 (en) 2004-06-14 2006-08-01 Alter Corporation Integrated circuits with reduced interconnect overhead
US7282950B1 (en) * 2004-11-08 2007-10-16 Tabula, Inc. Configurable IC's with logic resources with offset connections
US7193438B1 (en) * 2004-06-30 2007-03-20 Andre Rohe Configurable integrated circuit with offset connection
US7449915B2 (en) 2004-06-30 2008-11-11 Tabula Inc. VPA logic circuits
US7439766B2 (en) * 2004-06-30 2008-10-21 Tabula, Inc. Configurable logic circuits with commutative properties
US7408382B2 (en) * 2004-06-30 2008-08-05 Tabula, Inc. Configurable circuits, IC's, and systems
US7145361B1 (en) * 2004-06-30 2006-12-05 Andre Rohe Configurable integrated circuit with different connection schemes
US7312630B2 (en) * 2004-06-30 2007-12-25 Tabula, Inc. Configurable integrated circuit with built-in turns
US7530044B2 (en) * 2004-11-04 2009-05-05 Tabula, Inc. Method for manufacturing a programmable system in package
US7301242B2 (en) * 2004-11-04 2007-11-27 Tabula, Inc. Programmable system in package
US7242216B1 (en) * 2004-11-08 2007-07-10 Herman Schmit Embedding memory between tile arrangement of a configurable IC
US7295037B2 (en) * 2004-11-08 2007-11-13 Tabula, Inc. Configurable IC with routing circuits with offset connections
US7268586B1 (en) * 2004-11-08 2007-09-11 Tabula, Inc. Method and apparatus for accessing stored data in a reconfigurable IC
US7743085B2 (en) * 2004-11-08 2010-06-22 Tabula, Inc. Configurable IC with large carry chains
US7224181B1 (en) * 2004-11-08 2007-05-29 Herman Schmit Clock distribution in a configurable IC
US7917559B2 (en) * 2004-11-08 2011-03-29 Tabula, Inc. Configurable IC's with configurable logic circuits that perform adder and/or subtractor operations
US7573296B2 (en) * 2004-11-08 2009-08-11 Tabula Inc. Configurable IC with configurable routing resources that have asymmetric input and/or outputs
US7276933B1 (en) * 2004-11-08 2007-10-02 Tabula, Inc. Reconfigurable IC that has sections running at different looperness
US20070244958A1 (en) * 2004-11-08 2007-10-18 Jason Redgrave Configurable IC's with carry bypass circuitry
US7317331B2 (en) 2004-11-08 2008-01-08 Tabula, Inc. Reconfigurable IC that has sections running at different reconfiguration rates
US7259587B1 (en) 2004-11-08 2007-08-21 Tabula, Inc. Configurable IC's with configurable logic resources that have asymetric inputs and/or outputs
US7342415B2 (en) * 2004-11-08 2008-03-11 Tabula, Inc. Configurable IC with interconnect circuits that also perform storage operations
US7301368B2 (en) * 2005-03-15 2007-11-27 Tabula, Inc. Embedding memory within tile arrangement of a configurable IC
US7330050B2 (en) 2004-11-08 2008-02-12 Tabula, Inc. Storage elements for a configurable IC and method and apparatus for accessing data stored in the storage elements
US7236009B1 (en) 2004-12-01 2007-06-26 Andre Rohe Operational time extension
US7428721B2 (en) * 2004-12-01 2008-09-23 Tabula, Inc. Operational cycle assignment in a configurable IC
US7496879B2 (en) * 2004-12-01 2009-02-24 Tabula, Inc. Concurrent optimization of physical design and operational cycle assignment
US7224182B1 (en) * 2005-03-15 2007-05-29 Brad Hutchings Hybrid configurable circuit for a configurable IC
US8201124B1 (en) 2005-03-15 2012-06-12 Tabula, Inc. System in package and method of creating system in package
US7298169B2 (en) * 2005-03-15 2007-11-20 Tabula, Inc Hybrid logic/interconnect circuit in a configurable IC
US7825684B2 (en) * 2005-03-15 2010-11-02 Tabula, Inc. Variable width management for a memory of a configurable IC
US7530033B2 (en) * 2005-03-15 2009-05-05 Tabula, Inc. Method and apparatus for decomposing functions in a configurable IC
US7310003B2 (en) * 2005-03-15 2007-12-18 Tabula, Inc. Configurable IC with interconnect circuits that have select lines driven by user signals
US7272031B1 (en) * 2005-03-15 2007-09-18 Tabula, Inc. Method and apparatus for reduced power cell
US20070244959A1 (en) * 2005-03-15 2007-10-18 Steven Teig Configurable IC's with dual carry chains
US7230869B1 (en) * 2005-03-15 2007-06-12 Jason Redgrave Method and apparatus for accessing contents of memory cells
EP1877927B1 (en) * 2005-04-28 2011-03-30 The University Court of the University of Edinburgh Reconfigurable instruction cell array
US8138788B2 (en) * 2005-05-31 2012-03-20 Fuji Xerox Co., Ltd. Reconfigurable device
US7492186B2 (en) * 2005-07-15 2009-02-17 Tabula, Inc. Runtime loading of configuration data in a configurable IC
US7375550B1 (en) * 2005-07-15 2008-05-20 Tabula, Inc. Configurable IC with packet switch configuration network
US7212448B1 (en) 2005-07-19 2007-05-01 Xilinx, Inc. Method and apparatus for multiple context and high reliability operation of programmable logic devices
US7266020B1 (en) 2005-07-19 2007-09-04 Xilinx, Inc. Method and apparatus for address and data line usage in a multiple context programmable logic device
US7250786B1 (en) 2005-07-19 2007-07-31 Xilinx, Inc. Method and apparatus for modular redundancy with alternative mode of operation
US7746785B2 (en) * 2005-08-22 2010-06-29 Broadcom Corporation Time multiplexing logic in physical design domain for multiple instantiation
US8620980B1 (en) 2005-09-27 2013-12-31 Altera Corporation Programmable device with specialized multiplier blocks
US7236000B1 (en) 2005-10-18 2007-06-26 Xilinx, Inc. Method and apparatus for error mitigation of programmable logic device configuration memory
US7372297B1 (en) 2005-11-07 2008-05-13 Tabula Inc. Hybrid interconnect/logic circuits enabling efficient replication of a function in several sub-cycles to save logic and routing resources
US8463836B1 (en) 2005-11-07 2013-06-11 Tabula, Inc. Performing mathematical and logical operations in multiple sub-cycles
US7818361B1 (en) 2005-11-07 2010-10-19 Tabula, Inc. Method and apparatus for performing two's complement multiplication
US7765249B1 (en) 2005-11-07 2010-07-27 Tabula, Inc. Use of hybrid interconnect/logic circuits for multiplication
US7262633B1 (en) 2005-11-11 2007-08-28 Tabula, Inc. Via programmable gate array with offset bit lines
US7489162B1 (en) 2005-12-01 2009-02-10 Tabula, Inc. Users registers in a reconfigurable IC
US7461362B1 (en) 2005-12-01 2008-12-02 Tabula, Inc. Replacing circuit design elements with their equivalents
US7679401B1 (en) 2005-12-01 2010-03-16 Tabula, Inc. User registers implemented with routing circuits in a configurable IC
JP2009524134A (ja) 2006-01-18 2009-06-25 ペーアーツェーテー イクスペーペー テクノロジーズ アクチエンゲゼルシャフト ハードウェア定義方法
US8266199B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8301681B1 (en) 2006-02-09 2012-10-30 Altera Corporation Specialized processing block for programmable logic device
US8266198B2 (en) 2006-02-09 2012-09-11 Altera Corporation Specialized processing block for programmable logic device
US8041759B1 (en) 2006-02-09 2011-10-18 Altera Corporation Specialized processing block for programmable logic device
US7797497B1 (en) 2006-03-08 2010-09-14 Tabula, Inc. System and method for providing more logical memory ports than physical memory ports
US7518400B1 (en) 2006-03-08 2009-04-14 Tabula, Inc. Barrel shifter implemented on a configurable integrated circuit
US7694083B1 (en) 2006-03-08 2010-04-06 Tabula, Inc. System and method for providing a virtual memory architecture narrower and deeper than a physical memory architecture
US7504858B1 (en) 2006-03-08 2009-03-17 Tabula, Inc. Configurable integrated circuit with parallel non-neighboring offset connections
US7609085B1 (en) 2006-03-08 2009-10-27 Tabula, Inc. Configurable integrated circuit with a 4-to-1 multiplexer
US7669097B1 (en) 2006-03-27 2010-02-23 Tabula, Inc. Configurable IC with error detection and correction circuitry
US7529992B1 (en) 2006-03-27 2009-05-05 Tabula, Inc. Configurable integrated circuit with error correcting circuitry
US7836117B1 (en) 2006-04-07 2010-11-16 Altera Corporation Specialized processing block for programmable logic device
US7822799B1 (en) 2006-06-26 2010-10-26 Altera Corporation Adder-rounder circuitry for specialized processing block in programmable logic device
US8386550B1 (en) 2006-09-20 2013-02-26 Altera Corporation Method for configuring a finite impulse response filter in a programmable logic device
US8386553B1 (en) 2006-12-05 2013-02-26 Altera Corporation Large multiplier for programmable logic device
US7930336B2 (en) 2006-12-05 2011-04-19 Altera Corporation Large multiplier for programmable logic device
US7587697B1 (en) 2006-12-12 2009-09-08 Tabula, Inc. System and method of mapping memory blocks in a configurable integrated circuit
US7930666B1 (en) 2006-12-12 2011-04-19 Tabula, Inc. System and method of providing a memory hierarchy
US7814137B1 (en) 2007-01-09 2010-10-12 Altera Corporation Combined interpolation and decimation filter for programmable logic device
US7865541B1 (en) 2007-01-22 2011-01-04 Altera Corporation Configuring floating point operations in a programmable logic device
US8650231B1 (en) 2007-01-22 2014-02-11 Altera Corporation Configuring floating point operations in a programmable device
US8645450B1 (en) 2007-03-02 2014-02-04 Altera Corporation Multiplier-accumulator circuitry and methods
EP2140548A4 (en) 2007-03-20 2010-06-09 Tabula Inc CONFIGURABLE IC WITH A COUPLING AREA WITH MEMORY ELEMENTS
US8112468B1 (en) 2007-03-22 2012-02-07 Tabula, Inc. Method and apparatus for performing an operation with a plurality of sub-operations in a configurable IC
US7827433B1 (en) 2007-05-16 2010-11-02 Altera Corporation Time-multiplexed routing for reducing pipelining registers
US7394287B1 (en) * 2007-05-21 2008-07-01 Altera Corporation Programmable logic device having complex logic blocks with improved logic cell functionality
US7579867B2 (en) * 2007-06-27 2009-08-25 Tabula Inc. Restructuring data from a trace buffer of a configurable IC
US8412990B2 (en) * 2007-06-27 2013-04-02 Tabula, Inc. Dynamically tracking data values in a configurable IC
US7652498B2 (en) 2007-06-27 2010-01-26 Tabula, Inc. Integrated circuit with delay selecting input selection circuitry
US7501855B2 (en) 2007-06-27 2009-03-10 Tabula, Inc Transport network for a configurable IC
US8069425B2 (en) * 2007-06-27 2011-11-29 Tabula, Inc. Translating a user design in a configurable IC for debugging the user design
US7595655B2 (en) * 2007-06-27 2009-09-29 Tabula, Inc. Retrieving data from a configurable IC
US7839162B2 (en) * 2007-06-27 2010-11-23 Tabula, Inc. Configurable IC with deskewing circuits
US7471104B1 (en) 2007-07-27 2008-12-30 Xilinx, Inc. Lookup table with relatively balanced delays
US7423452B1 (en) * 2007-07-27 2008-09-09 Xilinx, Inc. Integrated circuit including a multiplexer circuit
JP5151311B2 (ja) 2007-08-17 2013-02-27 富士通株式会社 集積回路装置
US7949699B1 (en) 2007-08-30 2011-05-24 Altera Corporation Implementation of decimation filter in integrated circuit device using ram-based data storage
EP2201569A4 (en) 2007-09-06 2011-07-13 Tabula Inc CONFIGURATION CONTEXT SWITCH
US7969184B1 (en) 2007-09-06 2011-06-28 Tabula, Inc. Configurable high speed high voltage input/output circuit for an IC
US8990651B2 (en) 2007-09-19 2015-03-24 Tabula, Inc. Integrated circuit (IC) with primary and secondary networks and device containing such an IC
US8863067B1 (en) 2008-02-06 2014-10-14 Tabula, Inc. Sequential delay analysis by placement engines
US8959137B1 (en) 2008-02-20 2015-02-17 Altera Corporation Implementing large multipliers in a programmable integrated circuit device
US8244789B1 (en) 2008-03-14 2012-08-14 Altera Corporation Normalization of floating point operations in a programmable integrated circuit device
US8166435B2 (en) 2008-06-26 2012-04-24 Tabula, Inc. Timing operations in an IC with configurable circuits
US8626815B1 (en) 2008-07-14 2014-01-07 Altera Corporation Configuring a programmable integrated circuit device to perform matrix multiplication
US7956639B2 (en) * 2008-07-23 2011-06-07 Ndsu Research Foundation Intelligent cellular electronic structures
US8525548B2 (en) * 2008-08-04 2013-09-03 Tabula, Inc. Trigger circuits and event counters for an IC
WO2010033263A1 (en) * 2008-09-17 2010-03-25 Tabula, Inc. Controllable storage elements for an ic
US8255448B1 (en) 2008-10-02 2012-08-28 Altera Corporation Implementing division in a programmable integrated circuit device
US8307023B1 (en) 2008-10-10 2012-11-06 Altera Corporation DSP block for implementing large multiplier on a programmable integrated circuit device
US8468192B1 (en) 2009-03-03 2013-06-18 Altera Corporation Implementing multipliers in a programmable integrated circuit device
US8706790B1 (en) 2009-03-03 2014-04-22 Altera Corporation Implementing mixed-precision floating-point operations in a programmable integrated circuit device
US8886696B1 (en) 2009-03-03 2014-11-11 Altera Corporation Digital signal processing circuitry with redundancy and ability to support larger multipliers
US8549055B2 (en) 2009-03-03 2013-10-01 Altera Corporation Modular digital signal processing circuitry with optionally usable, dedicated connections between modules of the circuitry
US8645449B1 (en) 2009-03-03 2014-02-04 Altera Corporation Combined floating point adder and subtractor
US8805916B2 (en) 2009-03-03 2014-08-12 Altera Corporation Digital signal processing circuitry with redundancy and bidirectional data paths
US8650236B1 (en) 2009-08-04 2014-02-11 Altera Corporation High-rate interpolation or decimation filter in integrated circuit device
US8412756B1 (en) 2009-09-11 2013-04-02 Altera Corporation Multi-operand floating point operations in a programmable integrated circuit device
US8396914B1 (en) 2009-09-11 2013-03-12 Altera Corporation Matrix decomposition in an integrated circuit device
US8072234B2 (en) 2009-09-21 2011-12-06 Tabula, Inc. Micro-granular delay testing of configurable ICs
WO2011091323A1 (en) 2010-01-21 2011-07-28 Qst Holdings, Llc A method and apparatus for a general-purpose, multiple-core system for implementing stream-based computations
US7948267B1 (en) 2010-02-09 2011-05-24 Altera Corporation Efficient rounding circuits and methods in configurable integrated circuit devices
US8539016B1 (en) 2010-02-09 2013-09-17 Altera Corporation QR decomposition in an integrated circuit device
US8601044B2 (en) 2010-03-02 2013-12-03 Altera Corporation Discrete Fourier Transform in an integrated circuit device
US8458243B1 (en) 2010-03-03 2013-06-04 Altera Corporation Digital signal processing circuit blocks with support for systolic finite-impulse-response digital filtering
US8484265B1 (en) 2010-03-04 2013-07-09 Altera Corporation Angular range reduction in an integrated circuit device
US8510354B1 (en) 2010-03-12 2013-08-13 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8539014B2 (en) 2010-03-25 2013-09-17 Altera Corporation Solving linear matrices in an integrated circuit device
WO2011123151A1 (en) 2010-04-02 2011-10-06 Tabula Inc. System and method for reducing reconfiguration power usage
US8589463B2 (en) 2010-06-25 2013-11-19 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8862650B2 (en) 2010-06-25 2014-10-14 Altera Corporation Calculation of trigonometric functions in an integrated circuit device
US8577951B1 (en) 2010-08-19 2013-11-05 Altera Corporation Matrix operations in an integrated circuit device
US8645451B2 (en) 2011-03-10 2014-02-04 Altera Corporation Double-clocked specialized processing block in an integrated circuit device
US9355690B1 (en) 2011-03-17 2016-05-31 Xilinx, Inc. Time-multiplexed, asynchronous device
US9600278B1 (en) 2011-05-09 2017-03-21 Altera Corporation Programmable device using fixed and configurable logic to implement recursive trees
KR101802945B1 (ko) * 2011-06-27 2017-12-29 삼성전자주식회사 논리 장치 및 이를 포함하는 반도체 패키지
US8760193B2 (en) 2011-07-01 2014-06-24 Tabula, Inc. Configurable storage elements
US8812576B1 (en) 2011-09-12 2014-08-19 Altera Corporation QR decomposition in an integrated circuit device
US9053045B1 (en) 2011-09-16 2015-06-09 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8949298B1 (en) 2011-09-16 2015-02-03 Altera Corporation Computing floating-point polynomials in an integrated circuit device
US8874837B2 (en) * 2011-11-08 2014-10-28 Xilinx, Inc. Embedded memory and dedicated processor structure within an integrated circuit
US8762443B1 (en) 2011-11-15 2014-06-24 Altera Corporation Matrix operations in an integrated circuit device
US8959469B2 (en) 2012-02-09 2015-02-17 Altera Corporation Configuring a programmable device using high-level language
US9230046B2 (en) 2012-03-30 2016-01-05 International Business Machines Corporation Generating clock signals for a cycle accurate, cycle reproducible FPGA based hardware accelerator
US8543634B1 (en) 2012-03-30 2013-09-24 Altera Corporation Specialized processing block for programmable integrated circuit device
US9286423B2 (en) 2012-03-30 2016-03-15 International Business Machines Corporation Cycle accurate and cycle reproducible memory for an FPGA based hardware accelerator
US8536896B1 (en) 2012-05-31 2013-09-17 Xilinx, Inc. Programmable interconnect element and method of implementing a programmable interconnect element
US9461649B2 (en) * 2012-06-01 2016-10-04 The Regents Of The University Of California Programmable logic circuit architecture using resistive memory elements
US9098332B1 (en) 2012-06-01 2015-08-04 Altera Corporation Specialized processing block with fixed- and floating-point structures
US8519741B1 (en) 2012-07-06 2013-08-27 Xilinx, Inc. Operating a programmable integrated circuit with functionally equivalent configuration bitstreams
US8996600B1 (en) 2012-08-03 2015-03-31 Altera Corporation Specialized processing block for implementing floating-point multiplier with subnormal operation support
KR101920719B1 (ko) * 2012-11-19 2019-02-13 삼성전자주식회사 논리 장치, 논리 장치를 포함하는 디지털 필터 및 논리 장치를 제어하는 방법
US9207909B1 (en) 2012-11-26 2015-12-08 Altera Corporation Polynomial calculations optimized for programmable integrated circuit device structures
US9189200B1 (en) 2013-03-14 2015-11-17 Altera Corporation Multiple-precision processing block in a programmable integrated circuit device
US9348795B1 (en) 2013-07-03 2016-05-24 Altera Corporation Programmable device using fixed and configurable logic to implement floating-point rounding
US9330040B2 (en) 2013-09-12 2016-05-03 Qualcomm Incorporated Serial configuration of a reconfigurable instruction cell array
US9379687B1 (en) 2014-01-14 2016-06-28 Altera Corporation Pipelined systolic finite impulse response filter
US9183337B1 (en) 2014-08-08 2015-11-10 Xilinx, Inc. Circuit design with predefined configuration of parameterized cores
US9337841B1 (en) 2014-10-06 2016-05-10 Xilinx, Inc. Circuits for and methods of providing voltage level shifting in an integrated circuit device
US9966960B2 (en) * 2014-12-17 2018-05-08 Silicon Laboratories Inc. Configurable logic circuit including dynamic lookup table
US9684488B2 (en) 2015-03-26 2017-06-20 Altera Corporation Combined adder and pre-adder for high-radix multiplier circuit
US10942706B2 (en) 2017-05-05 2021-03-09 Intel Corporation Implementation of floating-point trigonometric functions in an integrated circuit device
CN108231120B (zh) * 2017-10-18 2021-01-01 上海博维逻辑半导体技术有限公司 可重新配置的非易失性存储器结构和系统
US10909292B1 (en) * 2019-02-14 2021-02-02 Xilinx, Inc. Implementing circuit designs on multi-die programmable devices
TWI698088B (zh) * 2019-08-22 2020-07-01 瑞昱半導體股份有限公司 應用於多個操作模式的電路
FR3121315B1 (fr) * 2021-03-26 2024-03-29 Schneider Electric Ind Sas Module fonctionnel pour armoire électrique de raccordement et armoire électrique de raccordement comprenant un tel module fonctionnel

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4821233A (en) * 1985-09-19 1989-04-11 Xilinx, Incorporated 5-transistor memory cell with known state on power-up
US4750155A (en) * 1985-09-19 1988-06-07 Xilinx, Incorporated 5-Transistor memory cell which can be reliably read and written
US5155389A (en) * 1986-11-07 1992-10-13 Concurrent Logic, Inc. Programmable logic cell and array
US5343406A (en) * 1989-07-28 1994-08-30 Xilinx, Inc. Distributed memory architecture for a configurable logic array and method for using distributed memory
US5212652A (en) * 1989-08-15 1993-05-18 Advanced Micro Devices, Inc. Programmable gate array with improved interconnect structure
US5185706A (en) * 1989-08-15 1993-02-09 Advanced Micro Devices, Inc. Programmable gate array with logic cells having configurable output enable
US5245227A (en) * 1990-11-02 1993-09-14 Atmel Corporation Versatile programmable logic cell for use in configurable logic arrays
WO1993009504A1 (en) * 1991-10-30 1993-05-13 I-Cube Design Systems Inc. Field programmable circuit board
KR960702643A (ko) * 1993-05-28 1996-04-27 윌리암 에이. 호스킨스 동적 논리코어에 동적으로 상호접속된 필드 프로그램 가능 논리장치(field programmable logic device with dynamic interconnections to a dynamic logic core)
JP3547446B2 (ja) * 1994-02-15 2004-07-28 ジリンクス,インコーポレーテッド フィールドプログラマブルゲートアレーのタイル型構造
US5426378A (en) * 1994-04-20 1995-06-20 Xilinx, Inc. Programmable logic device which stores more than one configuration and means for switching configurations

Also Published As

Publication number Publication date
EP0759662A3 (en) 1998-01-28
JPH09181599A (ja) 1997-07-11
US5646545A (en) 1997-07-08
EP0759662A2 (en) 1997-02-26

Similar Documents

Publication Publication Date Title
JP3729943B2 (ja) 時間多重書込可能論理装置
US5825662A (en) Computer-implemented method of optimizing a time multiplexed programmable logic device
US5978260A (en) Method of time multiplexing a programmable logic device
US5838954A (en) Computer-implemented method of optimizing a time multiplexed programmable logic device
US5600263A (en) Configuration modes for a time multiplexed programmable logic device
US5761483A (en) Optimizing and operating a time multiplexed programmable logic device
US5629637A (en) Method of time multiplexing a programmable logic device
US5778439A (en) Programmable logic device with hierarchical confiquration and state storage
US5583450A (en) Sequencer for a time multiplexed programmable logic device
US6421817B1 (en) System and method of computation in a programmable logic device using virtual instructions
US7138827B1 (en) Programmable logic device with time-multiplexed interconnect
US6047115A (en) Method for configuring FPGA memory planes for virtual hardware computation
US8719750B1 (en) Placement and routing of a circuit design
EP0701713B1 (en) Field programmable logic device with dynamic interconnections to a dynamic logic core
US5552722A (en) Mask registor for a configurable cellular array
Tiwari et al. Saving power by mapping finite-state machines into embedded memory blocks in FPGAs
US8015530B1 (en) Method of enabling the generation of reset signals in an integrated circuit
US9065440B2 (en) Bypassable clocked storage circuitry for dynamic voltage-frequency scaling
Paulsson et al. Implementation of a virtual internal configuration access port (JCAP) for enabling partial self-reconfiguration on Xilinx Spartan III FPGAs
US9792395B1 (en) Memory utilization in a circuit design
US20150020038A1 (en) Method for Efficient FPGA Packing
Low et al. Variation tolerant AFPGA architecture
US9729153B1 (en) Multimode multiplexer-based circuit
Hagemeyer et al. Dedicated module access in dynamically reconfigurable systems
US20240185908A1 (en) Dual power supplied memory cells and deterministic reset thereof for programmable logic devices

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050517

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050810

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20050906

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20051005

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091014

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20091014

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20101014

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20111014

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20121014

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131014

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term