(57)【特許請求の範囲】
【請求項１】
汎用ハードウエアデバイス（１００）に於いて、
データ記憶用の第１の複数のセルと、そして
前記複数のセルの少なくとも１組の入力及び出力と接続された第１のプログラム可能なマトリックス（１０９）とを具備しており、複数のハードウエア応用品は、前記セル内にデータを選択的に記憶すること及び前記セルの少なくとも１つを前記セルの少なくとも１つに接続するために前記マトリックスを選択的にプログラムすることにより実施され、
少なくとも１つの前記セルはデータ記憶用の第２の複数のセルと、そして
前記第２の複数のセルの入力及び出力に接続された第２のプログラム可能なマトリックス（１０２，１０８）とを備えており、前記第１の複数のセル及び前記第２の複数のセルの各セルは該汎用ハードウエアデバイス全体と同様なアーキテクチャーを有してもよく、そして
前記第１の複数のセルの部分でない少なくとも１つのセルは該少なくとも１つのセルのポートを経由して直接アクセスされ得ることを特徴とする汎用ハードウエアデバイス。
【請求項２】
請求項１の該デバイスに於いて、該第１のプログラム可能なマトリックス（１０９）と該第２のプログラム可能なマトリックス（１０２、１０８）が一体化されていることを特徴とするデバイス。
【請求項３】
請求項１又は２の該デバイスに於いて、該記憶されたデータの少なくとも幾つかはその実行中に該ハードウエ応用品により動的に変更可能であることを特徴とするデバイス。
【請求項４】
請求項１から３の何れか１つの該デバイスが更に、該第１のプログラム可能なマトリックス（１０９）及び／又は該第２のプログラム可能なマトリックス（１０２，１０８）の制御設定をその中に記憶するためのメモリーを有することを特徴とするデバイス。
【発明の詳細な説明】
【０００１】
【本発明の分野】
本発明は回路の設計及びテストとデバイスアーキテクチャー（device architecture）とに関する。
【０００２】
【本発明の背景】
デーエスピーエス（DSPs）及び特定用途向け集積回路（Application Specific Integrated Circuits）｛エイシック（ASIC）｝を使用しての実施を含めたアイシーエス（ICs）の入った集積回路｛アイシーエス（ICs）｝及びモジュールの既知の設計及び製造過程は長い開発サイクルを要し、高価である。特に、該当応用品の長い設計、検証（verification）そしてテストを要する開発期間の長さのために集積回路を市販するに要する期間は長い。該製品の検証及びテストの間、デバッグ及び修理を要する設計不良が検出されるかも知れず、これは開発コストと時間に大幅に付加され、設計不良が該過程の終わりで、例えば、製品発送後に検出された時は特に然りである。
【０００３】
市販までの時間（time to market）はエンジニアリングコスト、市場喪失、等に影響するのでハードウエア製品は高価になる。又コストは、開発中に使用されたテスト用機器のオーバーヘッド（overhead）、製造中に使用されたテスト機器の費用、在庫規模そして職業技術者の雇用に関するコストを帯びねばならない。
【０００４】
シミュレーションの精度は不足している。該応用品の望まれる機能をシミュレートするために１つのシミュレーションを要する一方、該実施の実行時動作（run-time operation）をシミュレートするためにもう１つのシミュレーションが必要である。もし高分解能遅延（high-resolution delays）のシミュレーションを要するならば、シミュレーションは厄介である。更に、シミュレーションは非常に遅く、実時間よりも数十万倍遅いことも多い。
【０００５】
既知の設計及び開発過程のなおもう１つの欠点はプロトタイプと非エイシック電子的カード（non-ASIC electronic cards）の寸法が実際寸法を超えることである。チップ製品上のハイエンドシステムをテストする能力は集積回路の非常に高い密集度のために制限され、それは該回路内の関心のある点にプローブを当てることを非常に難しくしている。高密度集積回路を含む完成製品をテストし、複雑な回路の完全な機能を検証することは同様に難しい。
【０００６】
応用品のより新らしい技術との両立性を保証するように既設計製品を進歩したチップ生産技術へ適合させることは貧弱である（poor）。これは該応用品開発者に打撃を与えるのみならずチップ製造者が開発者に彼等の現在の応用品を使用させながら新しいジオメトリー（geometries）を使うことを難しくさせる。
【０００７】
エイシックは、該応用品が専用化を正当化するに充分な量で販売される場合に、より小さい面積を使用して応用品を実施するために使用される。典型的に、該応用品は最初従来の設計方法を使用して開発され、該設計の正当性を確立した後、エイシックに変換される。これは時間を要し高価な過程である。
【０００８】
大抵のハードウエアの実施が特定応用品に専用化され拡張又は変更を受け入れないので、典型的に、応用速度は機能的柔軟性を犠牲にして該応用品をハードウエアで実施することにより高められる。
【０００９】
該工業に付随するなおもう１つの欠点は有資格者が比較的不足していることと、該開発サイクルが減らせるように幾人かのエンジニア間の共有に従えるように該設計及び開発をブレークダウンすることの難しさである。
【００１０】
全てのこれらの制限は該開発及び製造サイクルの長さとコストの両者を増加させるよう組み合わされる。ロジック集積回路及びそれらを含むモジュールを実施するための従来の設計及び製造過程に付随する複雑さと努力を表現するために、種々の実施方法をここで説明する。
【００１１】
図１は電子的カード（electronic cards）上の集積回路｛アイシー（IC）｝チップのハードウエア実施用の従来の過程を示す流れ図である。カード開発過程７中で必要な応用を行うカードが開発される。この過程の後では、該カードの生産活動の準備が出来ている。該応用に関するアイデアと概念は応用の規定１０の間に規定され、その後にインターフエースの規定１２が続く。時には該インターフエースは該システム環境、例えばピーシー応用カード内で決定される。時には該カードを作る企業が該インターフエースを選ぶことが出来て、例えばカードで一杯のラック内では、大抵のカードは同じインターフエースを有する。時には該インターフエースはユニークであり、該カードの残りと同じ過程で設計されねばならない。
【００１２】
技術選択１６は実時間のニーヅ、柔軟性、寸法そしてタスク数（number of tasks）に影響される。ハードウエアでの実施はその優れた実時間性能のための応用品に選択される。ハードウエアでの実施は最も速い（実時間）解決策であるが、限られた数のタスクしか行えず、柔軟でなくそして大型になる。市販までの時間は長い。開発から製造までの過程は、数ヶ月から１年より長くまで、を要し、９ヶ月は非常に良い結果と考えられる。該開発及び製造過程は高価である。
【００１３】
該応用に利用可能な空間は該技術選択過程に重要なパラメーターである。普通は小さい程良い。もし寸法が重要なら、該カードはエイシックに変換されるがその場合は開発期間はエイシック変換のニーヅのために数ヶ月延長される。９ヶ月が普通の延長期間である。実際、エイシック変換は上記の全ての問題をこうむる。
【００１４】
大抵の場合、複雑で、高速度の、デジタルハードウエア設計用には特に、該応用品のシミュレーション１８が必要である。時には、該シミュレーションは該応用品を規定する過程の部分と考えられ、該ハードウエア開発過程の時間の部分としてはカウントされない。該シミュレーション過程の期間は、該応用の複雑さにより、数日から２，３ヶ月続くかも知れない。該シミュレーションの目的は、考えられたアイデアと手段（impelementation）が実施可能であることを検証することである。例えば、もし通信リンク上で音声（voice）を圧縮（compress）するアイデアがあるとすれば、該圧縮アルゴリズムは”Ｃ＋＋”の様な高級言語（high level language）及び”マットラブ（Matlab）”｛マサチューセッツ州、ナチック、マスワーク（Mathworks, Natick, Massachusettes）の｝の様な他のソフトウエアツールを使用して作られる。該シミュレーションと該手段の間に簡単な関連は無い。時には１つ以上のシミュレーションが行われ、該シミュレーション速度を増加させるためにワークステーション（workstation）が必要かも知れない。
【００１５】
次いで該インターフエースが設計されねばならない２０。もし該インターフエースが例えばピーシーカードのピーシーアイーインターフエースの様に、標準的であるならば、大抵の場合にそれを再設計する必要は無く、”在庫の（off the shelf）”既製品チップセット（ready-made chip set）が該実施で使用されてもよい。もし該インターフエースが固有（proprietary）であるならば、該ハードウエア開発者は、該インターフエースを、同じラック内の２，３のカード用インターフエースの様な、他の応用品用にも同じく使用出来るように、該インターフエースの開発を該応用品の開発から分離するのが好ましい。この様な場合、市販までの時間は該インターフエースを開発し、実施するに必要な時間により影響されないであろう。該インターフエースがユニークである時だけ、全体を実施する開発の部分となる。
【００１６】
電子的設計２２は該解決策を電子的集積回路デバイスのセットに変換する手順である。該開発者は或る関数を実行出来るこの様なデバイスのライブラリーを覚えていて、該応用を実施するために一緒に接続されるべき必要なアイシーエス（ICs）を選ぶ。該エンジニアは多数の異なる部品とそれらの使用法を記憶せねばならないので、該電子的設計過程は複雑である。該技術が改善されると、複雑な機能を有する部品が追加される。時には、該電子工学技術者は後に取り残される。高級設計言語（High-Level Design Languages）が実施されたが、該設計のなお大部分はモジュール的仕方で行われねばならない。該応用が複雑な程該設計に必要な時間は長い。
【００１７】
図面は該応用技術者と該カードを作るために使用されるコンピユータ化ツール（computerized tool）の間のインターフエースである。これは該技術者が彼の実施アイデアを”書く（write）”ために使用する”言語（language）”である。図面の過程２４は該設計を略図図面に変換する。該応用が複雑な程、該図面に必要な時間は長い。もしプログラム可能なデバイスが使用されれば、高級設計言語（High-level Design Language）｛エイチデーエル（HDL）｝は該図面の１部を置き換えるため使われてもよい。
【００１８】
実施が些細（trivial）でない時、該設計のシミュレーション２５が行われ、タイミングがチェックされる。該設計者は該応用品のシミュレーション１８の結果と該現在のシミュレーションとの間の相関を取るよう試みる。もし何等かの誤りが見出されるならば、該設計は修正され、過程２２と２４は繰り返される必要がある。
【００１９】
該設計が仕上げられた後、部品２６が得られる。時には、特定のデバイスを購入することは極めて長い時間を取り、それによりプロトタイプ製作を遅延させる。該応用品が複雑な程、より多くの部品を要し、製作までの時間は長く、そして部品の在庫は大きくなる。
【００２０】
レイアウト２８は該製図された設計を製造されるパッケージに変換する過程である。応用品が複雑な程、より多くの部品が使用され該レイアウト時間は長くなる。
【００２１】
該基板が作られる３０．各応用品用に異なる基板が作られねばならず、かくして投資される人的資源量と、カードの検証及び製造用の高価な機器のニーヅとを増加させる。
【００２２】
該部品は該製造されたカード上に設置される。該レイアウト内の欠陥は該設置で問題を引き起こす。例えば、該プロトタイプを設置するためのツールは製造用に使用されるそれらと普通異なる。特に、開発フエーズ（development phase）での設置はより少ない自動化を使用し、欠陥のあるカードの確率は大きい。該設置期間を短くするために、専用の、高価な器械、例えば、ハイピッチチップ挿入器械（high pitch dhip insertion equipment）、が使用される。
【００２３】
テスト及びデバッグ３４は全体の開発過程の中で最も長い期間である。複雑な設計に費やされた時間の５０から７５％が検証（verification）に用いられる。検証は急速に、最大の技術的障碍に成りつつある。
【００２４】
上記タスクの各１つで誤りが起こり得る。例えば、印刷回路のトラック間の狭い間隔は短絡を引き起こし得る。もしこの種の誤りが該デバッギング過程で発見されなければより悪くなり、何故ならば、後刻の、修理がより高価な時になって、見出されるかも知れぬからである。又誤りはカード規定や、その後も起こり得る。それは繰り返し過程が起こることを意味する。第１バッチの生産の前に３つのバージョンのプロトタイプを持つことが普通である。該電子的カードをテストするために高価なテスト機器、例えば、信号発生器（signal generators）、雑音発生器（noise generators）、ロジックアナライザー、オッシロスコープ、デシベルメーター、加算器（adders）、ラインシミュレーターその他が必要である。
【００２５】
アールアンドデー（R&D）から生産までの過程３６では、該カードを製造するために要する全ての詳細を伴うドキュメンテーション（documentation）が創られる。この過程は該プロトタイプの最終バージョンが準備される前にスタートすることが出来るが、該過程は市販までの時間を延長させる。カード検証｛釘のベッド（nails bed）の様な｝及び機能検証用の自動的ツールが創られる。自動部品挿入機がプログラムされること等が引き続く。
【００２６】
上記過程は該開発及び製造サイクルを長くさせる。誤りが見出されるのが遅い程修理は難しく、高価になる。従って、もしエイシック(ASIC)を要するなら、無謬の結果を保証するために可成りの努力が行われる。該電子部品をエイシックに変換する前に２，３バッチを製造するのが普通である。
【００２７】
一旦該カードのドキュメンテーションの準備が完了すると、全ての部品が購入され、チップ挿入機がプログラムされる等と進み、該カード生産過程３７が始まることが出来る。次いで生産カード検証３８が続くが、そこではその電子部品を有する又は有しない該カードがテストされる。機能検証４０は該設計された応用品用に該カードをテストする過程である。該応用品の各機能をテストするための自動器械を創ることは極めて複雑で時間がかかる。該結果が満足な時、クライアントへの該カードの発送４２が行われてもよい。
【００２８】
もし誤りが見出されるか又は該過程の終わりで増強部（enhancement）が必要となるならば、修理又は増強４４は非常に難しく、高価でそして時間が掛かる。最悪の場合、該過程の大部分は繰り返されねばならない。
【００２９】
上記の様に、実時間のニーヅ、柔軟性、タスクのサイズと数は技術の選び出しに影響する。柔軟性が必要とされそして／又は多数のタスクが行われるべきであるが、同時にではない時は、回路はデジタルシグナルプロセサーとして実施されてもよい。この解決策は等価なハードウエア手段より実時間では遅い。該デーエスピー手段は該ハードウエア手段と概略同じ寸法であるが、一般にデーエスピー手段はエイシックへの変換のオプションを可能にしない。
【００３０】
上記説明のハードウエア開発過程は又該デーエスピーカード用に実施されねばならないが、それは幾つかの理由で該市販までの時間の期間（the time to market period）には稀にしか影響しない。第１に、該ハードウエア手段は簡単でありそれは該デーエスピーベンダーが該ハードウエア設計用の解決策を提供するからである。非標準のインターフエースだけが設計される必要がある。第２に、一旦カードが準備され該インターフエースが固定されると、該新しい応用品に既製品のカードが使用出来る。普通該プログラム用コードを開発する過程は該デーエスピーカードを開発する過程より多くの時間が掛かる。それにも拘わらず、該カードは少なくとも１回開発されねばならない。どの種類のデーエスピーを選ぶか、該デーエスピーは次世代応用品のニーヅを満足させようとしているか等の様なハードウエア手段に関するそれらとは異なる問題も取り組まれねばならない。
【００３１】
該産業は、特徴寸法（feature size）（トランジスター及び相互接続）を収縮（shrinking）させることにより１８ヶ月毎にダイ（die）内のトランジスター数が２倍になるゴードンムアーの法則（Gordon Moor's Law）に従う（adheres）ので、製品は各新しい半導体世代と共に古くさくなりつつある。従って、新しいデーエスピー／シーピーユー開発は頻繁に必要になる。非常に共通してベンダーはソフトウエア両立性を可能にするため最善を尽くすが、実際には変換時間が必要である。この変換過程は市販までの時間のみならずコストにも影響する。
【００３２】
デーエスピーでの実施はシミュレーション段階でハードウエアでの実施より有利であるがそれは該シミュレーションも該実施も両者共”Ｃ”の様な高級言語で書かれ得るからである。実際には、該シミュレーションからデーエスピーコードへの変換の効率的手段はない。換言すれば、該シミュレーションは、特にもしアッセンブリー言語（assembly language）が該デーエスピーコーデイングで使用されれば、該精確な実施をシミュレートしない。又、アールアンドデーのコストは高い。該コスト計算は該カードの開発と該ソフトウエアの開発を考慮せねばならない。該市場ではデーエスピーエキスパート（DSP experts）が不足しているので該賃金費用が高い。
【００３３】
生産では、自動的機能検証は実施がなお難しく、只し発送後誤り又は増強部（enhancement）が発見されるならば、実際はこれは些少（）からは程遠いが、顧客の構内（at the customer's premises）でソフトウエアを変更することによりなお固定され得る。容易な部分は該実施品内へ改訂コードをロードすることである。
【００３４】
時には組合された実施が好ましい。例えば、もし該デーエスピー実施品内にフイルターが必要ならば、該フイルターはハードウエアで実施され、該応用品の残りは該デーエスピー内で実施される。各部分の有利な及び不利な点が留まっている。
【００３５】
プログラマブルロジックデバイス（Programmable Logic Devices）｛ピーエルデーエス（PLDs）｝は柔軟な実施を許容するが、与えられたチップ面積に対して応用能力で制限される。シミュレーション言語は設計者に実施を創生させる高級設計言語（High-level Design Language）｛エイチデーエル／ブイエイチデーエル（HDL/VHDL）｝に変換される。それにも拘わらず、これらのソフトウエア言語はユーザーにモジュール形式で該ハードウエアを創生させるので、それらはＣ＋＋に似た言語より遙かに後れている。シミュレーションは不正確で、デバッギングは複雑でそして製品は高価である。寸法が重要な時は、２，３のハイエンドピーエルデーを”促成プロトタイプ（fast prototype）”として使って該応用品を実施しそして次いで該応用品をエイシックに変換することが最も普通である。この場合、該エイシック開発用に２，３回の繰り返しを行うのが普通であり、それは価格と市販までの時間を増加させる。
【００３６】
該エイシック開発過程は、例えば、そのウエブアドレスがhttp://www.ti.com/sc/docs/asic/cad/cad.htmであるテキサスインスツルメント社（Texas Instruments Incorporated）、｛米国、テキサス州、ダラス、７５３８０−９０６６（Dallas,Texas USA, 75380-9066）｝により説明されている。
【００３７】
又、米国、カリフオルニア州、マウンテンビュー、のベリシテイデザイン社（Verisity Design, Inc. Mountain View, CA USA）に属するhttp://www.verisity.com/html/spechased.htmlを参照する。同様に、電子的設計オートメーション（Electronic Design Automation）に関する更に進んだ情報はhttp://www.wsdmag.com/library/penton/archives/wsd/January1998/261.htmを参照することにより見出されるが、それは電子的設計オートメーション｛イーデーエイ（EDA）｝技術が半導体製作の進歩の速さに対し後れたことを認めている。
【００３８】
該設計、製造そして検証過程に付随する欠点の幾つかは特許文書で述べられて来た。１９９８年９月２９日刊行でアルテラ社（Altera Corporation）に譲渡された”きめの粗いルックアップテーブルアーキテクチャー（Coarse-grained look-up table architecture）”の名称の米国特許第５、８１５、７２６号｛クリフ、リチャード  ジー（Cliff; Richard G.）｝はプログラム可能なロジックデバイスのアーキテクチャーを開示している。ロジック配列ブロックへのそしてそれからの相互接続信号用に、大域的相互接続源（global interconnection resources）がスイッチボックス、長いライン、２重ライン、単一ライン、そして半分の及び部分的に密度を持つマルチプレキサー領域（half- and partially populated multiplexer regions）を有する。該ロジック配列ブロックは２レベルの機能ブロックを有する。第１レベルには、８つの４入力機能ブロックがある。第２レベルには、２つの４入力機能ブロックと４つの第２の２入力機能ブロックがある。１実施例ではこれらの機能ブロックはルックアップテーブル｛エルユーテーエス（LUTs）｝を使用して実施される。該ロジック配列ブロックは組合せの、かつ、レジスターされた出力を有し、又シーケンシャルの又はレジスターされたロジック機能を実施するための記憶ブロックを含む。該ロジック配列ブロックはキャリービット（carry bits）を要するロジック機能を実施するためにキャリーチェーン（carry chain）を有し、又ランダムアクセスメモリーを実施するようコンフイギュアされてもよい。
【００３９】
１９９９年６月１日に刊行されアルテラ社に譲渡された”デーユーテー及びテスター間のピン接続をリコンフイギュアするツール（Tool to reconfigure pin connections between a DUT and a tester）”の名称の米国特許第５、９０９、４５０号｛ライト；アダム（Wright; Adam）｝は集積回路のテストをシミュレートする方法を開示している。種々のダウンボンド（downbond）用のテスターユニットとテスト中のデバイス｛デーユーテー（DUT）｝との間の望まれる接続のデータベースが望ましい接続をセットアップするマルチプレキサーによりアクセスされる。該システムは、従来のシミュレーターシステムで要求されたユーザーからの手動式介入を要せずに、各ダウンボンド用の正しい接続を自動的に作る。
【００４０】
１９９８年１０月１３日刊行で、アルテラ社に譲渡された”第２信号に対する入力の完全並べ換え可能性を有するルックアップテーブルベースのロジック要素（Look-up table based logic element with complete permutability of the inputs to the secondary signals）”の名称の米国特許第５、８２１、７７３号｛ノーマン；ケビン  エイ他（Norman; Kevin A. et al.）｝はプログラム可能なロジックデバイス用のロジック要素を開示している。該ロジック要素はロジック機能、プログラム可能な遅延ブロック、ラッチ又はフリップフロップとしてコンフイギュア可能な記憶ブロック、そして診断シャドーラッチ（diagnostic shadow latch）を実施するためのルックアップテーブルを含む。該記憶ブロックの第２機能を制御するために該ロジック要素への複数の入力及びこれらの入力の補数（complements）が利用可能である。
【００４１】
２０００年１月２５日に刊行されアルテラ社に譲渡された”プログラム可能なロジック配列集積回路（Programmable logic array integrated circuits）”の名称の米国特許第６、０１８、４９０号｛クリフ；リチャード  ジー他（Cliff; Richard G. et al.）｝は、複数のロジック配列ブロック内に一緒にグループ化された多数のプログラム可能なロジックモジュールを有するプログラム可能なロジック配列集積回路を開示している。該ロジック配列ブロックは２次元配列内の該回路上に配置される。どのロジックモジュールもどれかの他のロジックモジュールに相互接続するよう導体ネットワークが提供される。加えて、該全体的相互接続ネットワークを使用する必要なしに、ロジックモジュール間のキャリーチェーンを提供する様な特殊な目的用に及び／又はより複雑なロジック機能を提供するために２つ以上のモジュールを一緒に接続するために、隣接又は近隣ロジックモジュールは相互に接続可能である。クロック及びクリヤ信号の様な広く使用されるロジック信号を該回路全体に配分するためにいわゆる促成の又は汎用の導体のもう１つのネットワークが提供される。信号導体間に必要なプログラム可能な相互接続の数を減らすためにマルチプレキサーが種々の仕方で使用出来る。
【００４２】
２０００年５月２日に刊行されクイックターンデザインシステム社（Quickturn Design Systems, Inc.）に譲渡された”エミュレーション及びシミュレーションを使用する設計検証のための方法と装置（Method and apparatus for design verification using emulation and simulation）”の名称の米国特許第６、０５８、４９２号｛サンプル；ステフアン  ピー他（Sample; Stephen P. et al.）｝はロジック設計のエミュレーション及びシミュレーションを組み合わせるための方法と装置を開示している。該方法と装置は、ゲートレベル記述（gate-level description）、動作表現（behavioral representation）、構造表現（structural representation）、又はそれらの組合せを含むロジック設計で使用され得る。該エミュレーション及びシミュレーション部分は該２部分間でのデータ転送時間を最小化する仕方で組み合わされる。シミュレーションは１つ以上のマイクロプロセサーにより行われる一方エミュレーションはフイールドプログラマブルゲートアレー（field programmable gate arrays）の様なリコンフイギュア可能な（reconfigurable）ハードウエアで行われる。多数のマイクロプロセサーが使われる時、該ロジック設計の独立部分は該多数の同期したマイクロプロセサー上で行われるよう選択される。又リコンフイギュア可能なハードウエアは該シミュレーションを助け、そして処理時間を減じるためにイベント検出及びスケジュール動作を行う。
【００４３】
１９９８年９月２９日に刊行されモトローラ社（Motorola, Inc.）に譲渡された”ハードウエア及びソフトウエア部品を有する製品の設計方法とそれ用の製品（Method for designing a product having hardware and software components and product therefor）”の名称の米国特許第５、８１５、７１５号｛ク．セデイラ．ユーケー他（Ku.cedilla.uk et al.）｝は計算システムとハードウエア及びソフトウエア部品を使用して該計算システムを設計する方法とを開示している。該計算システムは同じアーキテクチャーのスタイルを有するプログラム可能なコプロセサー（coproccessor）を備える。各コプロセサーはシーケンサーとプログラム可能な相互接続ネットワークと可変数の機能ユニット及び記憶要素とを有する。該計算システムは、応用ソフトウエアコードの部分からホストマイクロプロセサー（host microproccessor）コードを、そして該応用ソフトウエアコードの部分からコプロセサーコードを、発生するコンパイラーを使用することにより設計される。該コンパイラーは該ホストマイクロプロセサーの実行速度を決定するために該ホストマイクロプロセサーコードを、そして該コプロセサーの実行速度を決定するために該コプロセサーコードを、使用しそして該応用ソフトウエアコードの部分の実行用に該ホストマイクロプロセサーか又は該コプロセサーの１つを選択する。次いで該コンパイラーは該ソフトウエアプログラムとして役立つコードを創る。
【００４４】
２０００年５月２日に刊行されアルテラ社に譲渡された”プログラム可能なロジックデバイス内でキャム又はラムとしてコンフイギュア可能なメモリーセル（Memory cells configurable as CAM or RAM in programmable logic devices）”の名称の米国特許第６、０５８、４５２号｛ランガサイー；クリシマ（Rangasayee; Krishna）｝はコンテントアドレス可能なメモリーを有するプログラム可能なロジックデバイスを開示している。該プログラム可能なロジックデバイスは第１モードではコンテントアドレス可能なメモリーとして、そして第２モードではランダムアクセスメモリーとしての動作に好適なリコンフイギュア可能な２重モードメモリーを有する。ユーザーにコンテントアドレス可能なメモリーか又はランダムアクセスメモリーか何れかとして選択的に該２重モードメモリーをコンフイギュアさせるためにモード制御スイッチ回路が提供されてもよい。
【００４５】
２０００年６月２０日に刊行されザイリンクス社（Xilinx, Inc.）に譲渡された”動的にリコンフイギュア可能な計算のためにエフピージーエイエスを設計する方法（Method of designing FPGAs for dynamically reconfiguable computing）”｛グッシオーネ；ステイブン  エイ．（Guccione; Steven A.）｝の名称の米国特許第６、０７８、７３６号はリコンフイギュア可能なコプロセサー応用品用のソフトウエア環境を含むリコンフイギュア可能な計算のためのエフピージーエイエス（FPGAs）の設計法を開示している。この環境は標準高級言語コンパイラー｛すなわちジャバ（Java）｝及び１セットのライブラリーを含む。該エフピージーエイはホストプロセサーから直接コンフイギュアされ、コンフイギュレーション（configuration）、リコンフイギュレーション（reconfiguration）そしてホストの実行時動作（host run-time operation）はコードの単片（a single piece of code）でサポートされる。秒の桁の設計コンパイル時間とパラメター化されたセル用に組み込まれたサポートとが該発明の方法の顕著な特徴である。
【００４６】
それぞれ２０００年２月２９日及び２０００年８月１日に刊行されアルテラ社に譲渡された、共に”コンフイギュレーションメモリー集積化回路（Configuration memory integrated circuit）”の名称の米国特許第６、０３１、３９１号及び第６、０９７、２１１号｛クーツ−マルチン；クリス他（Couts-Martin; Chris et al.）｝はシステム内でプログラム可能な情報を記憶するコンフイギュレーションメモリーを開示している。該コンフイギュレーションメモリーのプログラム作業はジェイテーエイジー（JTAG）｛アイイーイーイー標準１１４９．１（IEEE Standard 1149.1）｝命令を使用して行われてもよい。更に、該コンフイギュレーションメモリー内の該コンフイギュレーションデータを使用するプログラム可能なロジックデバイスのコンフイギュレーションはジェイテーエイジー（JTAG）命令を用いて始動される。該コンフイギュレーションメモリーパッケージ内にプルアップ抵抗器が組み入れられる。
【００４７】
１９９９年４月１３日に刊行されアルテラ社に譲渡された”プログラム可能なロジックデバイス用のトライステート構造体（Tristate structures for programmable logic devices）”｛レデイ；スリニバス他（Reddy; Srinivas et al.）｝の名称の米国特許第５、８９４、２２８号はトライステート構造体を有するプログラム可能なロジックデバイスアーキテクチャーを開示している。該プログラム可能なロジックデバイスアーキテクチャーはロジックに依るか又はプログラム可能式にか、又は両方で制御されてもよいトライステート構造体を提供する。これらのトライステート構造体を通して、該ロジック要素は該プログラム可能な相互接続に結合され、そこではそれらは該プログラム可能なロジックデバイスの他のロジック要素と結合されてもよい。これらのトライステート構造体を使用して該アーキテクチャーの信号通路は動的にリコンフイギュアされる。
【００４８】
２０００年２月１５日に刊行されアキシスシステムズ社（Axis Systems, Inc.）に譲渡された”メモリーシミュレーションシステムと方法（Memory simulation system and method）”の名称の米国特許第６、０２６、２３０号｛リン；シャロンシュー−ピング他（Lin; Sharon Sheau-Pyng et al.）｝は４つのモードの動作、すなわち（１）ソフトウエアシミュレーション、（２）ハードウエア加速（Hardware Acceleration）を介したシミュレーション、（３）イン−サーキットエミュレーション｛アイシーイー（）｝、そして（４）ポストシミュレーション解析（Post-Simulation Analyuis）を有するシステムを開示している。ハイレベルでは、該システムは上記４モード又はこれらのモードの種々の組合せの各々で具体化される。これらのモードのコアにはこのシステムの全体の動作を制御するソウトウエアカーネル（software kernel）がある。該カーネルの主制御ループは下記過程、すなわち：システムを初期化し、アクチブなテストベンチの過程／部品を評価し、クロック部品を評価し、クロックエッジを検出し、レジスター及びメモリーを更新し、組合せ部品を広め、シミュレーション時刻を進め、そしてアクチブテストベンチ過程がある限り該ループを続ける、ことを実行する。該発明のメモリー写像（mapping）の側面は、該ユーザーの設計に付随する該多数のメモリーブロックが、該ユーザーの設計をコンフイギュアしモデル化するため使用される、該ロジックデバイスの内部の代わりに、該シミュレーションシステム内のエスラム（SRAM）メモリーデバイス内に写像される構造体及び企画を提供する。該メモリー写像又はメモリーシミュレーションシステムは、（１）該主計算システム及びその付随メモリーシステム、（２）該シミュレーションシステム内の該エフピージーエイバスに結合されたエスラムメモリーデバイス、そして（３）デバッグされつつある該コンフイギュアされ、プログラムされたユーザー設計を含む該エフピージーエイロジックデバイス、を制御しそれらとインターフエースするために、メモリー状態機械（memory state machine）、評価状態機械（evaluation state machine）、そしてそれらの付随ロジックを備える。
【００４９】
２０００年２月１日に刊行されアルテラ社に譲渡された”積項として構成可能なランダムアクセスメモリーを有するプログラム可能なロジック配列デバイス（Programmable logic array device with random access memory configurable as product terms）”の名称の米国特許第６、０２０、７５９号｛ハイレ；フランシス  ビー．（Heile; Francis B.）｝はランダムアクセスメモリー（”ラム”）としてか又は積項（product term）｛”ピー−項（p-term）”｝を行うためか何れかで動作させられ得るメモリー回路を備えた、ルックアップテーブルベースのプログラム可能なロジックデバイスを開示している。該メモリーからデータを読み出すために、該メモリーの各個別の行は、該メモリーへデータを書き込めるようすなわちラムモードで個別にアドレス可能である。代わりに、該メモリーの多数行は該メモリーからピー−項を読み出すために並列にアドレス可能である。該発明のメモリー回路は、ルックアップテーブル型のプログラム可能なロジックデバイスへの追加として特に有用であり、何故なら、該メモリー回路の該ピー−項能力は、さもなければ多数のルックアップテーブルのツリーを要する広いフアンイン（fan-in）ロジック機能を行う効率的方法を提供するからである。
【００５０】
２０００年２月２２日に刊行されアルテラ社に譲渡された”トライステート化可能なロジック配列ブロックを組み入れたプログラム可能なロジックデバイス（Programmable logic device incorporating a tri-stateable logic array block）”の名称の米国特許第６、０２８、８０９号｛シライヒャー；ジェームス．（Schleicher; James.）｝は複数の必須に接続された機能ユニットを有する多数機能ブロックを組み入れたプログラム可能なロジックを開示しており、そこでは該多数機能ブロック内の該機能ユニットの少なくとも１つはトライステートロジックユニットである。又該プログラム可能なロジックデバイスは該トライステートロジックユニットに動作的に接続されたトライステートバスを有しており、該トライステートロジックユニットは該トライステートバスにトライステートロジック信号を供給出来るのみならず該トライステートバスからトライステートロジック信号を受けることが出来る。該トライステートバスはトライステートデータ信号を担いそして該プログラム可能なロジックデバイス内の該トライステートロジックユニットの望まれる１つを選択するために動作する選択信号をアドレス指定する。
【００５１】
２０００年７月４日に刊行されアルテラ社に譲渡された”プログラム可能なロジックデバイスを使用するリコンフイギュア可能なコンピユータアーキテクチャー（Reconfigurable computer architecture using programmable logic devices）”の名称の米国特許第６、０８５、３１７号｛スミス；ステフアン  ジェイ．（Smith; Stephen J.）｝はロジックデバイスを利用するリコンフイギュア可能なコンピユータアーキテクチャー使用して計算するための方法とシステムを開示している。該計算は第１のプログラム可能なロジックユニットをシステム制御器としてコンフイギュアすることにより達成される。該システム制御器は、該プログラム可能なロジックユニットの第３の１つをリコンフイギュアすると同時に該プログラム可能なロジックユニットの第２の１つ内にアルゴリズムの実施を導く。もう１つの側面では、該計算システムは、その各々が該システム制御器と該複数のプログラム可能なロジックデバイスを電気的に相互接続するよう配置された、１対の独立した、双方向性バスを有する。この配置を用いると、第１のバスは該プログラム可能なロジックデバイスの選択された１つを該システム制御器により導かれるようリコンフイギュアするため使用されてもよい、一方該第２バスは該プログラム可能なロジックデバイスの動作する１つにより使用される。
【００５２】
それぞれ２０００年３月７日及び２０００年７月１８日に刊行されアルテラ社に譲渡された共に”ロジック回路用冗長回路（Redundancy circuitry for logic circuits）”の名称の米国特許第６、０３４、５３６号及び第６、０９１、２５８号｛マックリントック；キャメロン他（McClintock; Cameron et al.）｝はプログラム可能なロジックデバイスの様なロジック回路用の冗長回路を開示している。該冗長回路は該ロジック回路が該回路上の欠陥ロジック範囲を冗長ロジック回路で置き換えることにより修理されることを可能にしている。ロジック範囲の行及び列は行及び列の交換（swapping）によりロジック的に再写像（remapped）されてもよい。該ロジック回路は、冗長度コンフイギュレーションデータにより規定された順序でプログラミングデータを該回路上の種々のロジック範囲へ導くための動的制御回路を含む。冗長性は冗長ロジック範囲を全部か又は部分的にか何れかで使用して実現（implemented）される。ロジック範囲は、欠陥を有するロジック範囲へ部分的に冗長のロジック範囲を再写像するよう交換されてもよい。該欠陥は次いで行又は列の交換又はシフトを使用して修理されてもよい。ロジック範囲のフオールドされた行（folded rows）を有するロジック回路は欠陥のある半分の行（half-row）を冗長な半分の行で置き換えることにより修理されてもよい。
【００５３】
２０００年３月３０日に刊行されザイリンクス社に譲渡された”促成コンフイギュレーションメモリーデータリードバックを有するエフピージーエイ（FPGA having fast configuration memory data readback）”の名称の米国特許第６、０６９、４８９号｛イワンツーク；ロマン他（Iwanczuk; Roman et al.）｝は各々がユニークなアドレスを有する縦のフレームに分けられたエフピージーエイコンフイギュレーションメモリーを開示している。コンフイギュレーションデータはコンフイギュレーションレジスター内にロードされ、該レジスターはコンフイギュレーションデータを、フレームづつ並列に、転送する。好ましい実施例では、入力レジスター、シャドー入力レジスター（shadow input register）そしてマルチプレキサー配列が、従来のエフピージーエイエスより多い数の入力ビットを使用して効率的なコンフイギュレーションデータ転送を可能にする。柔軟な外部インターフエースは予め決められた最大幅からその選択された分数まで下方へ変化するバスサイズとの接続を可能にする。コンフイギュレーションデータ転送は、この様なデータを、最小の遅延を有するフレームづつベースでメモリーセル内にドライブするためにシャドーレジスターを使用することによりそしてより広いコンフイギュレーションデータ転送バスを開発するためにマルチプレキサーを使うことによりより効率的になる。コンフイギュレーションリードバック（configuration read-back）の速度は、双方向データ転送をサポートするコンフイギュレーションレジスターロジックを使うことによりコンフイギュレーションデータ入力の速度と実質的に等しくなる。提案されたエフピージーエイコンフイギュレーションメモリーを使用すると、古いデバイス用に設計されたビットストリーム（bit stream）は追加的コンフイギュレーションメモリーセルを有する新デバイス用に使用出来る。
【００５４】
１９９５年１２月１９日に刊行されクイックターンデザインシステム社に譲渡された”電気的にリコンフイギュア可能なハードウエアエミュレーション装置を使用して回路設計をエミュレートするための方法（Method for emulating a circuit design using an electrically reconfigurable hardware emulation apparatus）”の名称の米国特許第５、４７７、４７５号｛サンプル；ステフアン  ピー．（Sample; Stephen P.）｝はユーザーが回路又はシステムコンフイギュレーションを表すデータを入力するデータエントリーワークステーションを有する電子回路又はシステムの物理的エミュレーション用システムを開示している。このデータは豊富に相互接続されたアーキテクチャーを備えたプログラム可能なゲート要素の配列をプログラムするに好適な形式に変換される。ユーザーの回路又はシステムのブイエルエスアイ（VLSI）デバイス又は他の部分を外部的に接続するよう用意されている。該プログラム可能なゲート配列内の未使用回路通路の利用により内部のプローブ作業用の相互接続のネットワークが利用可能である。
１９９８年１０月１３日に刊行されアルテラ社（Altera Corporation）及びクイックターンデザインシステム社（Quickturn Design Systems, Inc.）に譲渡された”第２信号への入力の完全な並べ換え能力を有するルックアップテーブルベースのロジック要素（Look-up table based logic element with complete permutability of the inputs to the secondary signals）”の名称の米国特許第５、８２１、７７３号｛ノーマン他（Norma et al.）｝はプログラム可能なロジックデバイス用ロジック要素を開示している。該ロジック要素はロジック機能実施用ルックアップテーブル、プログラム可能な遅延ブロック、ラッチ又はフリップフロップとしてコンフイギュア可能な記憶ブロックそして診断用シャドーラッチを含む。該ロジック要素への複数入力及びこれらの入力の補数が該記憶ブロックの第２機能を制御するために利用可能である。
１９９１年１月８日に刊行されウルトラシステムズデイフエンス社（Ultrasystems Defense Inc.）に譲渡された”実時間データ処理を行うためにリコンフイギュレーションスイッチングネットワーク内に接続可能なプログラム可能な状態機械（Programmable state machines connectable in a reconfiguration switching network for performing real-time data processing）”の名称の米国特許第４、９８４、１９２号｛フリン（Flynn）｝はプログラム可能なロジック回路を実施するためのプログラム可能な要素｛ピーイー（PE）｝を開示している。該プログラム可能な要素はラン（run）アドレスレジスター、ロード（load）アドレスレジスターそしてランダムアクセスメモリー｛ラム（RAM）｝を含む。該ラムは該ロードアドレスレジスターを使用して状態遷移テーブルで初期化される。ラム初期化後そして各クロック遷移に際して、該ランアドレスレジスターは外部入力及び現在の状態をロードされる。現在の状態は該ラム出力から該ランアドレスレジスター入力への内部フイードバックラインからの該ラムの次の状態出力として受信される。該ラム出力は、該内部フイードバックライン内に記憶される次の状態と、該プログラム可能な要素の外の宛先（destination）への要素データ出力とに分けられる。複雑なプログラム可能なロジック回路を実施するためのステートプロセサー｛エスピー（SP）｝は複数のプログラム可能な要素及びマトリックススイッチを有する。該マトリックススイッチはプログラム可能な要素用の外部フイードバックを提供する。加えて、何れかのプログラム可能な出力が何れかのプログラム可能な要素入力へルートを決められてもよい。プログラム可能なロジックシステムを実施するためのステートプロセサーの階層的ネットワーク（hierarchical network）は複数のステートプロセサーと複数のマトリックススイッチを含む。該階層的ネットワーク内では何れのステートプロセサー入力も何れかのステートプロセサーの出力を受けることが出来る。
１つ以上のマトリックスがそれぞれのステートプロセサーに接続され、自身も中央マトリックスにより相互接続される図１３を特に参照した。
主たる請求項の前文に適合するデバイスを示す、１９８０年シュプリンガーフエルラーク（Springer-Verlag）刊行で、ウー．テイーツエ、ツエーハー．シェンク（U. Tietze, CH. Schenk）著”半導体回路技術（Halbleiter-Schaltungstechnik）”の４９１及び４９２頁の図２０．１も又参照した。
これらの参考文献のどれにも、セルが同様なセル内にコンフイギュアされ得て、それにより帰納的な仕方でプログラム可能なロジックデバイスとそのロジック要素との間に自己相似性（self-similarity）を導入する様な仕方で、セルがプログラム可能なマトリックスにより相互接続されることを可能にするデバイスアーキテクチャーは開示されていない。
【００５５】
【本発明の概要】
本発明の目的は高い柔軟性を可能にし、設計から完成製品までの時間を減じる、デジタル回路の設計に特に適合した、改良されたデバイスアーキテクチャーを提供することである。
【００５６】
この目標に対して、本発明の広い側面に依れば、汎用ハードウエアデバイスが提供されるが、該汎用ハードウエアデバイスは、
データを記憶するための第１の複数のセルと、そして
前記複数のセルの少なくとも１組の入力及び出力と接続された第１のプログラム可能なマトリックスとを具備しており、前記セル内に選択的にデータを記憶しそして前記セルの少なくとも１つを前記セルの少なくとも１つと接続するために前記マトリックスを選択的にプログラムすることにより複数のハードウエア応用品が実施され、
少なくとも１つの前記セルはデータ記憶用の第２の複数のセルと、そして、
前記第２の複数のセルの入力及び出力に接続された第２のプログラム可能なマトリックスとを備えており、前記第１の複数のセル及び前記第２の複数のセルの各セルは該汎用ハードウエアデバイス全体と同様なアーキテクチャーを有してもよく、そして
前記第１の複数のセルの部分でない少なくとも１つのセルは該少なくとも１つのセルのポートを経由して直接アクセスされ得ることを特徴とする。
【００５７】
この様なデバイスアーキテクチャーは、より大きなセルを形成するよう自身が組み合わされ得るより大きなセルを形成するように、なおこの過程は必要なだけ繰り返されるが、そしてデータを該構成セルにダウンロードすることにより該組合わされたセルをハードウエア応用品としてコンフイギュアするように、セルが組み合わされることを可能にする。好ましくは、該セルはアドレス指定可能なメモリー位置を有するルックアップテーブルとしてコンフイギュア可能であるのがよく、そこでは記憶されたデータは該ルックアップテーブルにより実施される機能を規定している。該機能自身は、高級プログラム言語を使用してプログラムされ得てそして該セルの望ましい接続を実施するためのコードと一緒にフオーマットされてもよい。該フオーマットされたデータは次いで該デバイス内の該セルへダウンロードされる。一旦ダウンロードされると、該デバイスは、該望まれた機能を実施するために使用された高級プログラムコードに最早依らない仕方で予めプログラムされた機能を実行する。結果として該デバイスの動作は該高級プログラムコードの効率から独立している。同一コードが該デバイスをシミュレートするため使用されてもよく、かくして該デバイスの設計とシミュレーションを大幅に容易化しそして設計から市販までの時間を大幅に減じている。
【００５８】
又本発明は該ハードウエアデバイスの設計、シミュレーションそしてデバッギング用のツールを提供する。これらのツールは又、完成デバイスが所望のように動作することを確立した後該デバイスの全て又は部分をエイシック（ASIC）に変換するのに役立つ、尤も該製品の期待製品寿命が低落するとこの様な変換の価値は減少するが。
【００５９】
【本発明の詳細な記述】
図２は本発明のデバイス１００の基本的アーキテクチャーを略図的に示す。該デバイスアーキテクチャーは少なくとも１つのプログラム可能なマトリックス１０２を介して相互接続されるセル１０１の集まりである。セル１０３はより小さいセル１０１から作られてもよい。同様に、該付随マトリックス１０２と一緒の該セル１０１又は１０３の各々は１０４及び１０５の様なブロックの部分を形成してもよい。どんなブロックも全体のデバイス１００と同じアーキテクチャーを有する。どんなブロックも１つのセルとしてコンフイギュアされ得る。１つのブロックの出力と同じ又はもう１つのブロックの入力との間にどんな接続も行い得るが、２つのブロックの内部セル間の特定の相互接続は必ずしも可能でなくてもよい。これはブロックが、該ブロックを含むブロックの数である”レベル（level）”に付随することを可能にする。かくして、例えば、レベル０のブロックは該デバイスそれ自身であり；レベル１のブロックは該デバイスを形成し；そしてレベル２のブロックはレベル１のブロックを形成する。これを云うことで、図２は略図的でありそして該プログラム可能なマトリックス１０２が該ブロックの境界の内に示されるか又は外にかは重要でなく、それは何れの場合もブロック内の全てのセルは少なくとも１つのプログラム可能なマトリックスに接続されねばならないからであることが気付かれるべきである。ブロックに対し中にあり該ブロック外への接続を可能にするセルの該接続が該ブロックのポートとして形成される。
【００６０】
ブロックがセル又は２，３のセルを形成することが更に気付かれるべきである。同様に、該デバイス１００はそれ自身、プログラム可能なマトリックスにより相互接続された多数のセルを含むブロックでありかくしてどんなブロックもデバイス１００の同様なアーキテクチャーを有しそして実際デバイスとして見なされてもよい。かくして該デバイス１００は多数の同様なデバイスを含みそして多数の同様なセルから形成されたセルと見なされてもよい。
【００６１】
該名前”ブロック”は、例えこの区別が容易な明確化用の説明にだけ関係していても、完全なデバイス１００とそれの、同様なアーキテクチャーを有する部品との間で区別が行われることを可能にする。請求項が関係する限りでは、該完全なデバイスと、同様なアーキテクチャーを有するその何等かの部品との間に区別はない。実際、本発明の本質的特徴は、該デバイスの部品のアーキテクチャーは全体としての該デバイスのアーキテクチャーと同様である事実に存在する。同じ特徴（token）により、ブロックはそれ自身デバイスなのでそれは異なる方法で実現され得てかくしてデバイスは異なる構造を有する２つ以上のブロックを備えることが出来る。
【００６２】
該マトリックス１０２は単一の実体（single entity）である必要はなく部分に分割され得ることは気付かれるべきである。同様に、ブロック１０５はセルの多数グループを含み、該グループの２つは１０６及び１０７で識別され、各々はことによると種々の数のセル１０１を含みそして両者は単一のマトリックス１０８によりサービスされることが分かる。その構成セル、そして何等かの他の構成要素と一緒に該ブロック１０５は該ブロック１０５の外に示す第２マトリックス１０９に依っても又サービスされる。該マトリックス１０８及び１０９の各々は典型的に該マトリックス１０２と同一構造でありそしてそれが該ブロックの中に示されるか又はその外かは単に利便性の問題である。かくして、該マトリックスが該図内に描かれる仕方は図解のためだけの略図用である。又１つのマトリックス内で利用出来る接続の部分はもう１つのマトリックス内で複製されてもよいことも気付かれるべきである。何等かのこの様な複製は実施品内では除去されるであろう。実際には、図８を参照して下記で説明されるように、該マトリックスは単に、対応するフリップフロップ（Flip-Flop）へロジック”１”又は”０”を書くことにより、該スイッチは閉じられ又は開かれ、それにより該セルが何等かの必要なトポロジーに依り接続されることを可能にするように、各々がフリップフロップにより制御されるスイッチ｛シーモス（CMOS）スイッチの様な｝の集まりである。該マトリックスの全ての該スイッチに関係する該フリップフロップはグループで配置され、該フリップフロップの何れか１つがそれへデータを書き込む目的で選択されさせる補助回路に付随されている。かくして、該フリップフロップと付随補助回路はラムにより実施され、”マトリックス制御メモリー（Matrix Control Memory ）”として参照される。オプションでは、該マトリックス制御メモリー内のデータも読まれ得る。
【００６３】
示された該デバイスアーキテクチャーは、自己類似度（self-similarity）の特性を示す複雑な幾何学的形状のクラスの何れかを説明するため数学で使用される”フラクタル（fractal）”構造を思い出させる。
【００６４】
該デバイスの入力ピン及び出力ピンは該プログラム可能なマトリックスに；該入力ピンは該マトリックス入力へ；該出力ピンは該マトリックス出力から、の様に接続される。該入力から又は該出力から直接より低いレベルにアクセスするために、該ブロックのポートが使用されるべきである。
【００６５】
図３は第１実施例のセル１１０を略図的に示す。該セル１１０は（ｎ＋ｍ）アドレスライン１１２を有するランダムアクセスメモリー｛ラム（RAM）｝１１１を備え、該ラインは、それらがそのアドレスビット数（ｍ＋ｎ）の最小が１であり得る１つのアドレスバスを機能させるが、２つの別々のバスとして示されている。データバス１１３は該ラム１１１のアドレス可能なメモリー位置内に記憶されたデータが読み出されることを可能にし、その最小数も又１であるデータビット数ｄを収容する。該データバス上に現れるデータはその出力１１５が該セル１１０の出力を構成するラッチ１１４によりラッチされる。該ラム１１１は該望まれるデータをロードされ得る。
【００６６】
図４は第２の実施例のセル１２０を略図的示す。該セル１２０は（ｎ＋ｍ）アドレスライン１２２を有するラム１２１を備え、該ラインも再び、それらはそのアドレスビット数（ｍ＋ｎ）の最小が１であり得る単一アドレスバスを機能させるが、２つの別々のバスとして示されている。データバス１２３は該ラム１２１のアドレス可能なメモリー位置内に記憶されたデータが読み出されることを可能にし、そしてその最小数も又１であるデータビット数ｄを収容する。この場合、該データバス１２３上に現れるデータは該セル１２０の出力を構成する。該アドレスバス１２２上に現れる該アドレスはそれぞれのラッチ１２４によりラッチされる。該ラム１２１は下記説明の仕方で望まれるデータをロードされ得る。該ラム１２１の入力に２つのラッチ１２４が示されるが、それらはセル１２０の”そのラッチ（the latch）”として参照され、該アドレスをラッチするため使用されるラッチの実際の数に対し区別はされない。
【００６７】
図３及び図４に示された該ラム１１１及び１２１のみならずそのラッチ１１４及び１２４も又図２に示す該デバイス１００の部分である。実用化された特定の実施例では、該ラムは米国９５０５４、カリフオルニア州、サンタクララ、インテグレーテッドデバイステクノロジー（Integrated Device Technology, Santa Clara, California, USA 95054）のアイデーテー６１１６（IDT6116）上でモデル化され、該ラッチは米国７５３８０−９０６６、テキサス州、ダラス、テキサスインスツルメント社（Texas Instruments Incorporated, Dallas, Texas USA, 75380-9066）のレジスターエスエヌ７４エイチシー３７４（SN74HC374）上でモデル化される。該セルの両コンフイギュレーションでは、ｎ、ｍ及びｄの値は該デバイスを使用して実施されるべき応用品により要求されるように割り当てられてもよい。
【００６８】
図５は図４のロジック的なセルをより詳細に略図で示す。該図は（ｍ＋ｎ）ビットのアドレスバス１３２とｄビットのデータバス１３３を有するラム１３１を備えるセル１３０を示す。ラッチ１３４ａ及び１３４ｂは該アドレスバス１３２上に該アドレスをラッチするために使用される。再び、該アドレスバスとそのラッチ１３４は唯図解により分割されて示されることは注意されるべきである。機能的には、単一バスがあるに過ぎず、そのラッチは単一ラッチとして考えられる
【００６９】
【外１】
0004642304.tif 000002
【００７０】
も考えられ得るラッチ１３６によりラッチされ、補助回路１３７を経由して該ラム１３１の出力イネーブル（ＯＥ）へ供給されそして該ラムをトライステート条
【００７１】
【外２】
0004642304.tif 000003
【００７２】
され、該ラム１３１が選択されるか又は切断されることを可能にするよう該補助
【００７３】
【外３】
0004642304.tif 000004
【００７４】
（又はデバイス）を単一セル内に写像することを可能にするような数である。クロックがそのラッチ１３４及び１３６に回され、又マトリックスを経由して回されるクロックイネーブル信号（ＣＥ）によりイネーブル又はデイスイネーブルに
【００７５】
【外４】
0004642304.tif 000005
【００７６】
ロー(LOW)にセットされそしてアクチブハイ信号がハイ(HIGH)にセットされ
る、すなわちそれらのイネーブルとされる状態に、セットされるような、デフオールト値にセットされる信号となる。これに対する様に、接続されない時のＷＥのデフオールト値はそのデイスエーブル状態にセットされる。該ラムが選択されない（チップセレクトがアクチブでない）時は、それは両者共トライステート条件にあり、書き込み抑制される（write disabled）。
【００７７】
図５のセルに基づいたデバイス用の起こり得るタイミング実施をここで説明する。
【００７８】
（ａ）全てのセル用に単一”マスタークロック（master clock）”が使用される。
【００７９】
（ｂ）該マスタークロックが”書き込み”信号である時”書き込み”信号は無い。該書き込みは該”書き込みイネーブル（Write Enable）”信号に依りアクチブかそうでないかになる。
【００８０】
（ｃ）該”出力イネーブル”信号及び”書き込みイネーブル”信号も又該マスタークロックによってもラッチされるので、従って該”書き込み”信号と何等かの他の信号との間にタイミングレース又は衝突はない。
【００８１】
（ｄ）該ラッチ動作の開始は該書き込み動作の終わりであるので該ラッチ動作と該書き込み動作の間に衝突はない。これにも拘わらず、該ラッチへの２つの連続するクロックパルスの間の時間に等価である、安全マージンを同じサイクルを保持しながら増加するために該書き込み信号のパルス幅を僅かに減じることが望ましい。
【００８２】
（ｅ）書き込みが起こると、データは該デバイスの入力から又は他のセルから、該マトリックスを経由して要求されたセルへ回らされる。後者の場合、該２つのセルのそれぞれのデータバスは相互接続される。データが書き込まれる該ラムの該出力イネーブルは該出力デイスエーブル状態（トライステート）にあり、そこからデータが書かれる該ラムの該出力イネーブルはアクチブになっている。
【００８３】
（ｆ）ＯＥ及びチップセレクト信号が図５を参照した上記説明の様に提供される。該ＯＥ信号は書き込み動作、該セル間のマルチプレクス動作等に使用されてもよく、該チップセレクト信号は図６を参照して下記で説明される様により大きいセルの創生用に使用されてもよい。
【００８４】
書き込み動作の全く要しない応用に好適なデバイス用に、該クロックサイクルは、より速い（実時間の）応用品を創るためにより短く出来てそして該セル出力が用意出来た時、該マスタークロックのローツーハイ遷移（low-to-high transition）が起こり得る。これは図１５及び１７に示すラムサーバー組合せ（RAM-Server combination）の説明と図１６及び１８に示すタイミング線図とからより明らかになる。
【００８５】
図６は２倍のサイズを有する，すなわち（ｎ＋１）ビットのアドレスバスによりアドレス指定されるアドレス可能位置の数が２倍の複合セル１４０を形成するよう各々がｎビットのアドレスを有する２つのセルを接続するための例を示す。各構成セルの部品が図５を参照して上記で説明したそれらと同一である程度に、図６では同様な参照数字が使用される。かくして、該複合セル１４０は両者がそれぞれｎビットのアドレスバス１３２ａ及び１３２ｂを有する１３１ａ及び１３１ｂと識別される２つのラムを含む。かくして、組合せアドレスの該ｎの最下位ビット（the n least significcant bits）がそれぞれのラッチ１３４ａ及び１３４ｂを経由して該対応するラム１３１ａ及び１３１ｂに供給される。図解により、該組合せセルに供給された（ｎ＋１）ビットアドレスはｍビットアドレスバス及びｎ＋１ビットデータバスを有するラム１４２から引き出されており、ｍビットアドレスはｍビットラッチ１４３を経由してそれに供給されている。２つのラム１３１ａ及び１３１ｂのデータバス１３３は該マトリックスを介して接続され、各データ出力は、該ラムの選択された１つ上のデータのみが出力となるようにトライステートである。該（ｎ＋１）ビットアドレスバスの最上位ビット（MSB）は、該２つのラム１３１ａ及び１３１ｂのどちらがデータを該データバス１３３に供給するかを制御するために使用される。この目的で、それは該ラム１３
【００８６】
【外５】
0004642304.tif 000006
【００８７】
そのラッチ１３６ｂの該ＣＳ１入力とに接続されている。
【００８８】
該回路の動作は下記の様である。もし該組み合わされた（ｎ＋１）ビットアドレスの最上位ビットに回されるラム１４２のデータの最上位ビットが０ならば、該ラム１３１ａはイネーブルとなり、該ラム１３１ｂはデイスエーブルとなる。逆に、もし該組み合わされた（ｎ＋１）ビットアドレスの該最上位ビットに回されるラム１４２のデータの最上位ビットが１ならば、該ラム１３１ａはデイスエーブルとなり、該ラム１３１ｂはイネーブルとなる。図５に示す補助回路１３７を戻って参照すると、該ＣＳ１入力は、その出力が全てのその入力がイネーブルの場合のみアクチブな第１のロジックのアンドゲート１４５へ供給される。上記注意の様に、該マトリックスにより接続されないどんな入力も自動的にイネーブルになるので、ロジックのアンドゲート１４５の該出力は、もしＣＳ１がイネーブルならアクチブにそしてもしＣＳ１がデイスエーブルならインアクチブになる
【００８９】
【外６】
0004642304.tif 000007
【００９０】
クチブロー）のみアクチブな第２のロジックのアクチブローのアンドゲート１４６へ供給される。再び、該マトリックスにより接続されないどんな入力も自動的
【００９１】
【外７】
0004642304.tif 000008
【００９２】
らインアクチブ（INACTIVE）になる。かくして、もし該最上位ビットがローなら
【００９３】
【外８】
0004642304.tif 000009
【００９４】
operative）であり、もし該最上位ビットがハイなら、該ラム１３１ｂのＣＳ１はイネーブルとなり、該ラム１３１ｂはオペラチブである。そこで該ラム１３１ａがアクチブの時、該ラム１３１ｂはインアクチブであり、逆に該ラム１３１ａがインアクチブの時、該ラム１３１ｂはアクチブである。
【００９５】
精確に同じ方法で、２つのラム１４０が組み合わされ得るが、その場合該ＣＳ
【００９６】
【外９】
0004642304.tif 000010
【００９７】
れる。この様な拡張は、特定の応用品により要求される多さのアドレス可能なメモリー位置を有するラムを作るために任意に繰り返すことが出来る。該２つのラム１３１ａ及び１３１ｂは等しいサイズのアドレスバスを有するよう図６で示されることは注意されるべきである。しかしながら、これは必要ことでなく、応用品は異なるサイズのアドレスバスを有するトポロジーが組み合わされることを指示してもよく、それは普通に起こるであろう。
【００９８】
それはデバッギングの目的で設計中に主として使用されるが、該”クロックイネーブル”信号が該セルへの入力として考えられてもよい。
【００９９】
図７はＤセル出力１５１をＡセル入力１５２へ接続するマトリックス１５０を略図的に示す。
【０１００】
図８は図７の回路に使用されてもよい、４つの入力ラインと３つの出力ラインとを有する飽和型マトリックス（saturated matrix）１５５を略図的に示す。該マトリックス１５５は該ブロック内で該セル出力ライン１５１の各々を該セル入力ライン１５２の各々に接続出来ねばならない。各セル出力１５１はアルフアベット文字ａ，ｂ，ｃ，ｄにより呼称される該マトリックス入力１５５のそれぞれの入力に接続される。該マトリックス１５５は各セル出力１５１の数字１，２，３により呼称される１つ以上のセル入力１５２への接続を可能にするよう働く。実際には各セル出力１５１を全ての起こり得るセル入力１５２に接続する能力を持つ理由は無く、かくして図９に示す様に飽和されないマトリックスの使用が可能である。しかしながら、図８に於ける様に該飽和型マトリックス１５５を使用するのがオートメーションをより簡単化し、動作は実時間に於いて、より速い。該セルはより小さいセルから作られ得て、幾つかの応用品ではより大きいセルは作られないが、より大きいセルの出力及び入力は予め決められる。
【０１０１】
該応和型マトリックスの動作は下記の様である。入力ａ，ｂ，ｃ，ｄの各々は対応するスイッチを介して該出力１，２，３の各々に接続される。かくして、該入力ａ，ｂ，ｃ，ｄはスイッチａ１，ｂ１，ｃ１，ｄ１を介して出力１に接続される。同様に、該入力ａ，ｂ，ｃ，ｄはスイッチａ２，ｂ２，ｃ２，ｄ２を介して出力２に接続されそしてそれらはスイッチａ３，ｂ３，ｃ３，ｄ３を介して出力３に接続される。入力ａを出力１に接続するために、該スイッチａ１は閉じられる。ｃを３に接続するために、該スイッチｃ３は閉じられる。ｂを１及び３の両者に接続するためにスイッチｂ１及びｂ３の両者が閉じられる。ｂとｄの両者を２と３に接続するためにスイッチｂ２，ｂ３，ｄ２，そしてｄ３が閉じられ、以下同様である。
【０１０２】
各スイッチは該スイッチを”閉じて”又は”開いて”セットする制御ライン（図示せず）を有し、該スイッチの状態を記憶する１ビットメモリーに接続されている。実際には非常に多くのスイッチがあるので、各スイッチ状態を記憶する全てのビットはメモリー構造体（memory structure）内に配置される。換言すれば、該スイッチの状態を記憶するメモリーユニットがある。該メモリー内の各ビットは１つの制御ラインに接続され、該マトリックス内のスイッチ数と同じ数のビットが該メモリー内にある。この様な手段により、該メモリーは各スイッチの状態を閉じか又は開きかと制御するためのマトリックス制御メモリー（Matrix Control Memory）として機能する。上記例では、該マトリックス１５５は４ビットデータバスを３ビットアドレスバスに接続する。しかしながら、該マトリックス１５５は、３ビットデータバスを４ビットアドレスバスへ接続するように出力を形成するラインａ、ｂ、ｃ、ｄと該入力を形成するライン１，２，３とに等しく良好に接続され得ることは評価されるであろう。
【０１０３】
図９は、各々がそれらの各スイッチを制御するそれ自身のメモリーを有する、図８に示す複数の相互接続された飽和型マトリックス１５５を含む非飽和型マトリックス１５６の例を略図的に示す。全ての該メモリーは該マトリックス制御メモリーとして機能する１つの大きなメモリーとして組織される。該マトリックスをプログラムすることは、下記で説明される様に該マトリックス制御メモリーに適当なデータをロードすることにより達成され、該プログラム動作は該デバイスの望まれるトポロジーをセットする。
【０１０４】
限定されるが充分な数の接続を有するよう作られたこの様なマトリックス１５６は、リンク｛ルーテイング（routing）｝を選ぶコードが僅かにより複雑であるが、それがダイ空間を節約するので、同じ数のスイッチ用接続を有する等価な飽和型マトリックスより好ましい。かくして、各マトリックス１５５は飽和型でありそして、
Ｄ＝該マトリックスへの入力ライン数、
Ａ＝該マトリックスの出力ライン数、
Ｘ＝入力マトリックス１５５の数、
Ｙ＝出力マトリックス１５５の数、
Ｚ＝中間列マトリックス（middle column matrixes）１５５の数、
を表していると仮定して、
Ｘ、ＹそしてＺは次の様に計算され、
【０１０５】
【数１】
0004642304.tif 000011
【０１０６】
ここで”シーリング（ceiling）”は非整数（non-integer）が次の最高整数（the next highest integer）まで丸められることを表す。
【０１０７】
該入力マトリックスの各々は該中間列マトリックスの各々に接続される。該出力マトリックスの各々は該中間列マトリックスの各々に接続される。交差接続（cross connects）の限界を避けるために、Ｚを増加することは可能である。例えそうであっても、スイッチの数と付随するメモリーは同じ数の入力ピンと出力ピンとを有する飽和型マトリックス内のスイッチ数と付随メモリーよりずっと少ない。これは全てのレベルでの全てのセルを接続するために１つのマトリックスが使用される時特に重要である。より大きいセルを形成するためにセルを組み合せようと意図する傾向のために、最終ユーザーが同じブロック内の２つのセルを接続する尤も度（likelihood）は彼が異なるブロック内の２つのセルを接続する尤も度より大きいことは気付かれるだろう。従って、この様な１つのマトリックスが使用される時、該デバイスの設計中に、どの入力及び出力マトリックスに該セルのピンが接続されるかを斟酌することが勧められるが、何故ならば該最終ユーザーはこれらのセルからより大きいセルを形成することを選ぶからである。又、もし代わりに、各ブロック内で別々のマトリックスが提供されるならば、幾つかの接続の累積遅延はもし１つのマトリックスが使用されたとするより大きくなりそうであることも注意されるべきである。又該セルの出力と該セルの入力の間の相互接続に加えて該デバイスの入力及び出力への該マトリックス内の接続を提供する必要性も考慮されねばならない。
【０１０８】
単に、必要なトポロジーを選択し、該セルの各の記憶要素内へデータをダウンロードすることにより種々のハードウエア応用品を実施するために如何に該デバイスが使用されるかを理解するために、ここで種々の例を説明する。該デバイスは図４のセル１２０を使用すると同じ仕方で作動するが、説明の容易化のために、幾つかの例は図３に示すセル１１０に基づいている。下記例では、図３に示すセルと図８に示すマトリックスとに共通な部品は同一参照数字により参照される。
【０１０９】
【例１−カウンター】
図１０は、その、該セルの出力を構成する、出力１１５が該マトリックス１５５の入力に接続されるｎ入力ラッチ１１４に供給されるｎビットデータ出力バス１１３を有するラム１１１を備える１つのセル１１０を使用するカウンター１６０を略図的に示す。該セルのｎ出力ラインの各々は該マトリックス１５５を経由して該ラムのアドレスバス１１２のそれぞれのアドレスラインに接続される。該ラムは次のデータをロードされる。
【０１１０】
アドレス      データ
０            １
１            ２
２            ３
．
．
Ｋ−１        Ｋ
Ｋ            ０
定常状態では、該ラム１１１の該”アドレス”を規定するそのラッチ１１４の出力１１５に”番号（number）”がある。従って、該ラムの”データ”−該ラッチの入力−は該テーブルでセットされる。後者から離れた全てのアドレスについて、該ラムの何等かのアドレス可能な位置内のデータがそのアドレスより１大きいものに等しく、これは次のクロックパルス時新しいアドレスになる。かくして、該ラムがクロックされる度に、そのラッチ１１４は、そのデータが現在のデータプラス１に等しい次のアドレス可能な位置のアドレスをラッチする。遅延時間の後、該ラムは新クロック用に用意が出来て、該サイクルは繰り返され、該出力は逐次インクレメントされる。
【０１１１】
【例２−アップ−ダウンカウンター】
（Up-Down Counter）
図１１は該ラム１１１がそのそれぞれのアドレス可能な位置内に２つのテーブルを記憶するよう作られていることを除くと、図１０に示すカウンターと実質的に同一なアップ−ダウンカウンター１６５を略図的に示す。勿論、これは該ラムが図１０のカウンターで使用されるそれの２倍大きいこと、又は該カウンターの範囲が半分であることを要する。何れの場合も、該アドレスの１ビットは、該アドレスバスのの残りのビットに供給される時、そのデータの値が該アドレスより１小さい新アドレスを指し示すデータを記憶するために該ラム内に新範囲をセットするために使用される。該ラム内の新範囲は次のデータでロードされる。
【０１１２】
アドレス        データ
０              Ｋ
１              ０
２              １
３              ２
．
．
Ｋ−１          Ｋ−２
Ｋ              Ｋ−１
該アップ／ダウン信号は又、該セルの全ての入力がそうであるように、該マトリックス１５５から回される。
【０１１３】
【例３−遅延】
遅延を達成するためには、該ラムは冗長である。従って、該ラム１１１は、例えば、アドレス”０”ではデータは”０”であり、アドレス”１”ではデータは１である等々の様に、簡単に該アドレスを該データに転送するようコードされ得る。各クロック信号で、該セルの入力のデータはラッチされ、直接該ラムを経由して外へ回され、１クロックの遅延が達成される。又この様な遅延の接続は例４で下記に説明され、図１３で示されるシフトレジスターでも使用される。
【０１１４】
【例４−シフトレジスター】
図１２はブロック内の３つのセルを使用し、それぞれのラム１１１ａ、１１１ｂそして１１１ｃを備えるシフトレジスター１７０を略図的に示すが、該ラムの各々は、そのそれぞれの出力１１５ａ、１１５ｂそして１１５ｃが該セルの出力を構成する３ｎビット出力データバス１１５を形成するため組み合わされる、それぞれのｎ入力ラッチ１１４ａ、１１４ｂそして１１４ｃに供給されるｎビットデータ出力を有している。該マトリックス１５５は該出力データバス１１５ａ、１１５ｂそして１１５ｃの各々の該（ｎー１）最下位ビットを該対応するラム１１１ａ、１１１ｂそして１１１ｃのそれぞれのアドレスビットへ接続するようプログラムされる。同様に、該出力データバス１１５ａ、１１５ｂそして１１５ｃの各々の最上位ビットは該マトリックス１５５により次のラムの最下位ビットに供給され、例外になるのは、該応用品により使用されてもよい、該シフトレジスターにより簡単に捨てられる該データバス１１５ｃの最上位ビットである。各ラム内のデータは、上記例３で説明された該遅延で行われた様に、例えば、アドレス”０”では該データは”０”であり、アドレス”１”では該データは”１”である等々の様に、該アドレスを該データに簡単に転送するようコード化される。該シフトレジスターのトポロジーは必要なシフトを作るよう設計され、該マトリックス１５５は該必要な接続を達成するようプログラムされる。
【０１１５】
該マトリックス１５５の接続は明確なために図１２には示されないことは理解されるであろう。しかしながら、該シフトレジスター１７０の動作を明らかにするため、ラム１１１ａのみの接続と動作を今図１３を参照して説明するが、そこでは同一参照数字は図１２でのそれらの部品を表すため使用される。
【０１１６】
図１３は８ビットアドレスバス（すなわちｎ＝８）を有するラム１１１ａを備える１つのセルのシフトレジスター１７５を示し、そのデータビットの各々はラッチ１１４ａによりラッチされそして該マトリックス（図示せず）により該ラムのアドレスバスの次ぎにより上位のビット（the next more significant bit）に接続される。かくして、Ａ0が最下位ビットでＡ7が最上位ビットであるＡ0、Ａ1、Ａ2、．．．Ａ7により該アドレスビットをそしてＤ0，Ｄ1，Ｄ2，．．．Ｄ7により該データビットを表して、最下位データビットＤ0は該アドレスビットＡ1に接続され、データビットＤ1は該アドレスビットＡ2に接続され以下同様である。最上位データビットＤ7は捨てられるか又はもし幾つかの１セルシフトレジスターが図１２に於ける様なカスケード（cascade）で接続されるなら該シフトレジスターの次段に供給される。
【０１１７】
上記で注意されている様に、該ラム１１１ａ内のデータは、例えば、アドレス”０”では該データは”０”であり、アドレス”１”では該データは”１”である等々、各アドレスビットを該対応するデータビットに簡単に転送するようコード化されている。この様な手段により各アドレスライン上の該データは該ラム１１１ａにより簡単に出力され、そのラッチ１１４ａによりラッチされる。次のクロックパルス時に、各データビットは該マトリックスにより次のアドレスラインへ供給されそれにより引き続くクロックパルス時に、該最下位アドレスビットａ0に供給されたデータは該シフトレジスターを通るよう波及（ripples）する。
【０１１８】
１セルシフトレジスターを実施するため使用される代わりの取り組みは、Ｄ1がアドレスビットＡ1に接続され、データビットＤ2がアドレスビットＡ2に接続され等々の様に該ラインを直接転送させるよう該マトリックスをプログラムすることである。この場合シフトは該ラムに次のデータをロードすることにより行われる。
【０１１９】
アドレス      データ
０            ０
１            ２
２            ４
３            ６
４            ８
５            ＡH
等々。もし逆シフト（reverse shift）が必要な時は該ラムは下記のデータをロードされる。
【０１２０】
アドレス      データ
０            ０
１            ０
２            １
３            １
４            ２
５            ２
等々。
【０１２１】
図１２の該３セルシフトレジスター（3-cell shift register）と図１３の該１セルシフトレジスターとの両者では、最下位アドレスラインも又マトリックスに接続されることが理解されよう。しかしながら、該シフト動作を強調するために両図では”切り離されて（detached）”示されている。
【０１２２】
下記点が注意されるべきである。このシフトレジスターの最大速度（maximum rate）はその周波数が１セルの遅延に該マトリックスの遅延のみをプラスするよう斟酌せねばならないクロックにより決定される。又、”レベル”に関する前の議論を参照すると、該デバイスの入力ピン及び出力ピンは、該入力ピンが該マトリックス入力へ、該出力ピンが該マトリックス出力からとなるよう、該”レベル１”プログラム可能なマトリックスに接続される。もし該応用品が”レベル１”で実施されるなら、該シフトレジスターの最下位ビットを担う入力ピンは該デバイスの入力ピンの１つから回され、そして該出力ピン１１５は該デバイスの出力ピンへ回されることが出来る。もし該応用品が”１”より他の”レベル”で実施されるならば、そのレベルのブロックのポートからのピンのみが該デバイスの該アイ／オーピンへ回されることが出来る。
【０１２３】
【例５−ノイズ発生器】
ノイズ発生器が図１２で図解された該シフトレジスターに基づいて作られてもよい。当業者には既知の様に、ノイズ発生器は、シフトレジスターの出力の幾つかをイーエックスノア演算する（XNOR-ing）ことと、該シフトレジスターを通して波及させるよう該イーエックスノアの出力（output of the XNOR）を入力アドレス最下位ビットへ戻るよう供給することとにより形成されてもよい。該ラム内のアドレス−データ関係は該イーエックスノア動作を達成するようプログラムされる。同じラムの２つのデータビットがイーエックスノアされるべき簡単な場合では、該デバイスの望まれる真理値表に依り該ラム内のデータをプログラムすることは率直である。しかしながら、もしイーエックスノアが２つの別々のラムのデータビット間で行われねばならないならば、これらのデータビットの１つは他のラムの入力も形成するように該マトリックスにより接続されねばならない。例えば、図１２に示す該シフトレジスター１７０で、ラム１１１ａのデータビットの１つがラム１１１ｂの該ビットの１つとイーエックスノアされるべきことを考える。該マトリックス１５５は該ラム１１１ｂの出力１１５ｂ内の必要なデータビットを該ラム１１１ａの入力１１２ａに接続すべきであり、該イーエックスノアされた結果は該ラム１１１ａのデータ出力ビット１１５ａの１つへ渡されねばならない。結果として該ラム１１１ａは該シフト機能を行うべきより少ない残りビット（fewer remaining bits）を有する。
【０１２４】
【例６−パターン発生器】
パターン発生器／信号発生器はもう１つの簡単な応用品であり、典型的に、１つのセルをカウンターとして使用し、該カウンターは、そのデータが該カウンダーの状態に依り必要なパターンを発生するようプログラムされる第２セルへ回される。かくして、計算されプロットされ得る何等かの関数ｆ（ｔ）を考えると、該カウンターはｔの数列値を出力し、一方該第２セルはそのアドレスバスへ供給されたｔの各値について該関数ｆ（ｔ）の値を記憶する。該第２セルは異なる関数に関するデータをラムの異なる部分に記憶するようコンフイギュアされ得て、これらは該セルの他の空いているアドレスビットへ供給される選択コードにより要求される様な選択となる。プログラム可能な該カウンターセルは異なる信号（パターン）用に異なるサイクルをセット出来る。もし該セル内のデータビット量が必要なビット数より少ないなら、該信号のもう１つの部分を発生するためにもう１つのセルが使用され得て、１つは該信号の最上位ビット部分を発生し、もう１つは最下位ビット部分を発生する。
【０１２５】
今度は図４に図解された該セル１２０を使用して種々の例が提示される。
【０１２６】
【例７−セルのトライステート能力】
図１４は、両方共マトリックス（図示せず）により共通データバス１８２に接続されたそれぞれのデータ出力バス１８２ａと１８２ｂを有する２つのラム１８１ａと１８１ｂとを備える１対のセル１８０ａと１８０ｂを略図的に示す。各セル出力はトライステート（tri-state）にドライブされ得る。マルチプレキサーが必要な時該セルのトライステート能力を使うことが勧められる。マルチプレキサーの実施品では、接続されるべき該セルの出力は、該マトリックスを介して、同じ点に回される。該ラム１８１ａはそのそれぞれのアドレスラインが１対のラッチ１８４ａと１８４ｂによりラッチされる（ｎ＋ｍ）のアドレスバス１８３ａと１８３ｂを有し、一方該ラム１８４ｂはそのそれぞれのアドレスラインがラッチ１８４ｃによりラッチされるｋビットのアドレスバス１８３ｃを有する。該２つのラムの該ラッチコンフイギュレーション（latch configuration）の間の外見の差は紙上のみにあると注意されるべきであり、何故ならｋはｍ＋ｎに等しくてもよくて、それで該ラッチ１８４ａと１８４ｂは該ラッチ１８４ｃと同様な１つのｋビットラッチとして動作するからである。該２つのラム１８１ａと１８１ｂに印加される出力イネーブル信号はどちらの１つがアクチブであるかを選択する。該出力イネーブル信号も同様に該マトリックスを介して回される。
【０１２７】
図９を参照すると、中間列のマトリックス１５５の数Ｚは交差接続の制限を避けるために重要な数である。しかしながら、幾つかのセルの出力が同じ点に接続されるべき時に、ラインはこの中間列で自由にされる。かくして、該セル１８０ａと１８０ｂは第１列のマトリックスを介してその共通の出力に接続され得て、このマトリックスの該共通な出力が、該第２列の１つのマトリックスのみを介して該マトリックス１５６の出力に接続されることを可能にして、かくしてそのより少ないラインを使用する。これは、該セル１８０ａと１８０ｂの各々を該中間のマトリックスのそれぞれのラインに接続しそして次いで該交差接続をもたらすよりも好ましい。
【０１２８】
該マトリックスは、例えば該セル１８０ａの様な、どんなセルの出力も、例えば該セル１８０ｂ内の該ラムの様な、該ブロック内のどんな他のラム、のデータに接続出来るので（どんなラムのデータも又そのセルの出力である）、もし第１のセル１８０ａがアクチブな間他のセル１８０ｂがトライステートであるなら、該セル１８０ｂ内の該ラム１８１ｂへ書き込み動作が行われ得る。該書き込みパルスは各サイクルで賦活されてもよいが、該マトリックスから回される該書き込みイネーブルが実際の書き込みをイネーブル又はデイスエーブルにする。
【０１２９】
【例８−ラム−”サーバー”組合せ】
図１５は、図１４を参照して上記で説明された書き込み能力を開発するサーバー１９１とラム１９２を有する”ラム−サーバー”組合せ１９０を示す。該サーバー１９１は１つの機能を実行するセルであり、一方該ラム１９２は次のサーバー動作で使用されるべき該サーバーの結果を記憶する。該サーバー１９１と該ラム１９２の間の必要な接続は該マトリックスによりもたらされるが、それは明確なために図では示されない。
【０１３０】
該ラム−サーバー組合せ１９０の使用の例は次の様である。該ラム−サーバー１９１はバイトの入力ストリーム（input stream of bytes）を受け（起こり得る２５６の異なるバイトの）各バイトが何回周期内に現れるかをカウントせねばならない｛この例はハフマンコード（Huffman Code）応用の部分である｝。該入力ストリームは該”ラム−サーバー”組合せ１９０の入力１９３に回され該組合せは次ぎの様に動作する。該ラム１９２はバイト当たりの結果を記憶し、該サーバー１９１は該古い結果を１だけインクレメントする。この様な手段により、該ラム１９２は１連の８ビット数（０と２５５の間）を受けそして該ラム−サーバー１９０は各８ビット数の発生の頻度を示すヒストグラムをコンパイルして該ラム１９２内に記憶する。
【０１３１】
次ぎの動作が起こる。
【０１３２】
（ａ）現在のバイトが該入力セル−ラム内にサンプルされ、該ラム内に記憶された数が準備される。
【０１３３】
（ｂ）この数は該セル−サーバー内にラッチされる。該サーバーは該数を増加するようプログラムされる（図１０に示すカウンターと同様に）。
【０１３４】
（ｃ）該増加したデータは該セル−ラム内に記憶される。
【０１３５】
図１６は上記実施用の起こり得るタイミング線図を示し、該動作が、該”書き込み”サイクルが新バイトがラッチされるのと同じサイクルで行われるので、唯２サイクル内で行われ得ることを示す。該マスタークロックは、２サイクル内の該書き込み動作をイネーブルにするために僅かに大きくあるべきなので、このタイミング解決策には実時間の浪費があるが、それにも拘わらずこれは正当化されるがそれは”ラム−サーバー”組合せは応用品の実施を時には簡単化するからである。図１６で示す全ての必要な信号は、上記で説明した様にパターン発生を行うようコンフイギュアされた他のセルにより発生され、該マトリックスを介して供給される。
【０１３６】
もし該デバイスが、上記実施を可能にするには余りに短いクロックサイクルで設計されているならば、図１７を参照してここで説明され、対応するタイミング線図が図１８で示される様に３クロックサイクルのラム−サーバー組合せが使用されてもよい。かくして、図１７を参照すると、図１５を参照して上記で説明されたと同じ応用品を実行しそして図５のセルと同一のセルラム２０２に結合されたセル−サーバー２０１を含むラム−サーバー組合せ２００が示されている。この場合、第３クロックサイクルで該データは、前のクロックサイクル中の該セル−サーバー２０１の出力と同じ値で留まるように、該書き込み動作中不変に保持されねばならない。さもなければ、該セル−サーバー２０１の該ラムの出力データは該セル−サーバー２０１のアドレスバスに戻るよう供給されるので、それはその中のカウンターにより再びインクレメントされる。従ってこの場合、該第３サイクルで該クロック信号はデイスエーブルにされる。しかしながら、この場合、該クロックイネーブル信号は不要にされ（dispensed with）そして代わりに、該第３サイクルで無変化をコマンドするよう、図１７で”１を加算（ADD One）”で示す１つの特別なアドレスビットが該セル−サーバー２０１の入力に供給される。
【０１３７】
第３のタイミング計画は、書き込み期間が読み出し期間より短くなると期待されるよう該ラムアドレスのコード化が該書き込み動作の前に準備される事実に基づいている。従って、２サイクル動作の方が好ましい。しかしながら、図１８で図解される様に３サイクル動作は実施出来る。該クロック”ローツーハイ（low-to-high）”遷移が該読み出し動作の終了後にあるよう”移され（moved）”得て、より速いクロックサイクルを創る。上述の様に、該入力信号は他のセルにより発生され該マトリックスにより接続されることが出来る。
【０１３８】
図１７を参照して上記で説明されたことから、該クロックイネーブルは該ラム−サーバー２０１用には本質的でないこと従って例え該デバイス内にクロックイネーブルが提供されなくても、該ラム−サーバー２０１はなお実施され得ることは明らかである。クロックイネーブルを提供するか否かに関する決定は該クロックイネーブル用に各セルにもう１つのロジックのアンドゲートを追加する必要にそれ程依らず、むしろ該プログラム可能なマトリックスのサイズを増加する必要に依る。
【０１３９】
より速いクロックサイクルを創ることは幾つかの応用品がより速く実行されるようにさせるが、もしこれが図１７に示す該”ラム−サーバー”応用品の場合であるなら、該入力は該３サイクルクロックに同期化されねばならず、それでそれは実行がより遅くなると思われる。
【０１４０】
【例９−タイムシェアリング】
応用品を実施するためには、普通幾つかのセルが必要である。タイムシェアリングでは、同じ動作が同じ入力ポート上でシーケンシャルに実施品に回される幾つかの独立な入力用に行われる。タイムシェアリング応用品を容易に実施するために、図１５又は図１７を参照して上記で説明された様な、該”ラム−サーバー”組合せは、該”サーバー”がロジックを実行するセルとして使用され、該ラムが各スロットの状態を記憶するため使用される、ロジックを行う何等かの単一セルに置き換わるべきである。各ラムの該入力はタイムシェアリングを支配する応用品のスロット／チャンネルをカウントする１つの大域的カウンターに接続される。該カウンターは該セルの１つであるか、又は該タイムシェアリングされた実施を実行する該”ラム−サーバー”組合せの全ての該ラムへ該プログラム可能なマトリックスを経由して回される特製カウンター（special purpose counter）とすることが出来る。好ましいアーキテクチャーでは、特製カウンターは無くて、それでもしタイムシェアリングが必要ならば、カウンター応用品（１つのセル又は２，３のセル）が実施されるべきである。
【０１４１】
図１９はタイムシェアリングカウンター２１１を利用してタイムシェアリングモードで動作するシフトレジスター２１０についての例である。該シフトレジスター２１０は２つのラム−サーバー２１２及び２１４そして２１３及び２１５を含み、それらは図１２を参照して上記で説明されたそれと同様な仕方で該組み合わされたシフト動作の、それぞれ、下部及び上部部分を行い、該ラム２１４の最上位ビット該サーバー２１３の入力に供給される。それぞれのタイムシェアリングセル２１４及び２１５は、該シフトレジスターサンプルの各スロットに関するそれぞれロー及びハイ部分を記憶するために該サーバー２１２及び２１３に接続される。該ラム−サーバー２１２，２１４及び２１３，２１５は図１５又は図１７を参照し、そしてそれらのタイミング線図は図１６及び図１８を参照して上記で説明した様に作動する。該タイムシェアリングカウンター２１１は、それぞれ図１５及び図１７で示すラムサーバー１９０及び２００の入力バイトの接続と同様な仕方で該セル２１４及び２１５のラッチに接続される。全体の動作は図１６を参照し上記で図解されそして図２０を参照して下記で更に展示される様にもし好ましい”２サイクル”動作が選ばれた場合のみ２サイクルを有する。
【０１４２】
該応用品の動作は次の様である。該２つの”サーバー”セル２１２及び２１３は上記で説明した様にシフトレジスター処理（shift register implementation）を実施する（implement）。該タイムシェアリングカウンター２１１は該タイムシェアリングスロット／チャンネルをカウントする大域的カウンターとして動作する。
【０１４３】
図２０はタイミング動作を示すタイミング線図であり、そこでは”Ｎ→１”は”１だけシフト”をシンボル化し（symbolizes）、下記動作が起こることを示す。
【０１４４】
（ａ）同じクロックが該大域的カウンター用にそして該残りの処理（the rest of the implementation）用のマスタークロック信号を提供するために使用されるので、該大域的カウンターはその最下位ビットを該タイムシェアリングセル２１４および２１５に回らせるべきでない。かくして、該大域的カウンター上の該’ｎ’の最上位ラインは２サイクルカウンターを表す。該最下位ビットは該タイムシェアリングセル２１４及び２１５と該ラム−サーバー２１２及び２１３の’ＯＥ’を制御するため使用出来る。
【０１４５】
（ｂ）図１０を参照すると１つより多いセルが該カウンターを実施するため使用出来る（もしデータビットの数が必要な該’ｎ＋１’ビットの数より少ないならば）。
【０１４６】
（ｃ）第１サイクル時、該古いデータが読み出されるべき時、該タイムシェアリングセル２１４及び２１５の出力はイネーブルとなり、該ラム−サーバー２１２及び２１３の出力はデイスエーブルとなる。
【０１４７】
（ｄ）次のサイクル時、該タイムシェアリングセル２１４及び２１５の出力はデイスエーブルであり一方それらの書き込みイネーブルはイネーブルとなり、該ラム−サーバー２１２及び２１３の出力はイネーブルとなる。結果として、それぞれのラム−サーバー２１２及び２１３の現在のステイタスに対応するデータが今度は該タイムシェアリングカウンター２１１の値によりアドレスされるそのメモリー位置で該タイムシェアリングセル２１４及び２１５に書き込まれる。
【０１４８】
（ｅ）該大域的カウンターとしてサービスする該タイムシェアリングカウンター２１１は両サイクル中イネーブルである。
【０１４９】
【例１０−タイムシェアリング環境での”ラム−サーバー”】
図２１は図１５を参照して上記で説明された例を実施するためにタイムシェアリング環境で動作する”ラム−サーバー”組合せ２２０を示す。該ラム−サーバー組合せ２２０はセル−サーバー２２１と、図面の図１５を参照して上記で説明された様に機能するラム２２３とラッチ２２４とを有するセル−ラム２２２とを備える。大域的タイムシェアリングカウンター２２５は該セル−ラムのみに回される。例として、タイムシェアリングは図面の図１５を参照して上記で説明される該ラム−サーバー１９０に追加されるが、それは該セル−ラム２２２の該ラムの別の範囲がそれぞれのタイムシェアリングスロットに専用化されることを可能にするためである。
【０１５０】
次の動作が行われる。
【０１５１】
（ａ）該大域的カウンター２２５がインクレメントされ、その’ｎ’最上位ビットは、データが読み出されるべきラム２２３内の該範囲を規定する（すなわち該アドレスの’ｎ’最上位ビット）、現在のスロットを規定する。
【０１５２】
（ｂ）該規定された範囲内の該メモリー位置の該ラム２２３内に記憶された番号は該ラム２２３へ該ラッチ２２４により供給されるアドレスの該’ｋ’最下位ビットにより指摘されている。該”サーバー”２２１は該番号をインクレメントするようプログラムされている。
【０１５３】
（ｃ）該インクレメントされた番号は、該タイムシェアリングカウンターと該ラッチ入力の値によりアドレスされたそのメモリー位置で該セル−ラム２２２内に記憶される。
【０１５４】
この繰り返し動作は該書き込みが新しいバイトと同じサイクルで行われ得るので２サイクル行われ得て、該タイムシェアリングカウンターはラッチされる。
【０１５５】
【例１１−より多量のデータビットを有するセルの創生】
セルのアドレスバスのサイズを増加するためにセルが如何に２つのセルから形成されるかを図６を参照して上記で説明した。図２２はセルのデータバスのサイズを増加するためセル２３０が如何に２つのセル２３１と２３２から形成されるかを示す。該２つのセル２３１と２３２のアドレスバスは並列に接続され、それにより両セル２３１と２３２のアドレスは同一である。両セル２３１と２３２は望まれる機能の結果が該２つのセルの間に分かれるようにプログラムされる。必要ならば、２つより多いセルのアドレスバスが並列に接続され、各々が機能出力の異なる部分を取り扱うようプログラムされる。該全ての接続は該プログラム可能なマトリックスを利用して作られる。もし図９に示すマトリックスが使用されれば、該マトリックスを利用して必要な接続を創る多くの方法があることを注意する。もしリンクされるセルが該’Ｘ’列の同じ飽和型マトリックスに接続されるなら、該接続はそのマトリックス内で直接行われ得て、該’Ｙ’又は’Ｚ’スイッチからのスイッチを使用しないことによりマトリックス源を節約する。又該接続は’Ｚ’列でも行われ得て、再び節約するか、又は該接続は該’Ｙ’列で行われ得る。
【０１５６】
厳密には、該データが実際は１つより多いセル間に分割されるので、そのデータビットの全てが既に使用されつつあるセルにデータビットを追加することは該セルサイズを増加することによっては達成され得ないことは議論されるかも知れない。しかしながら、複合セルと等価大型セルの構成セル間では区別は行われない。
【０１５７】
【ロード動作】
セル内に該コードをロードするには幾つかの方法がある。たとえば、マトリックスは該全デバイスが１つのラムとしてコンフイギュアされる方法でプログラムされてもよい。次いでデータはこのラム内に、どんなメモリーでも書き込まれるべき同じ仕方でホストコンピユータ又は他の電子的実施品によりロードされ、その後該マトリックスは必様な接続をもたらすよう再度プログラムされてもよい。
【０１５８】
図２３は、ホストコンピユータ（host computer）が該ラムの全アドレス空間を写像することが出来ない場合にその中にデータをロードするために、又はデバッグする目的でコンフイギュアされたデバイス２４０を示す。この目的で、該デバイスは幾つかのラムに分けられており、その中の３つは２４１，２４２そして２４３及びそれぞれのラッチ２４４，２４５そして２４６で表されて示されそしてそれらはプログラム可能なマトリックス２５０を介して該ホストコンピユータに接続されている。補助回路２５１はそのラッチ２４４，２４５そして２４６に接続され、そのラッチへクロック−イネーブル（clock-enable）｛シーイー（CE）｝信号を供給するための該ホストコンピユータによりそれへ供給されるロジック信号に応答する。
【０１５９】
マトリックス制御メモリー（図示せず）のアドレスとデータビットはデバイス２４０のピンアウト（pin-out）に接続される。この接続は該ホストコンピユータに、該ホストコンピユータが該マトリックス制御メモリーの該メモリーをそのメモリー範囲内に写像しそしてそれにプログラムされた接続をダウンロードする、一方該シーイー信号は該ラム間を”ページ（page）”するよう使用されるように、該マトリックス２５０にプログラム（制御）させる。
【０１６０】
該ロードに使用されるピンは、スイッチ範囲を含まない応用品用には、アイ／オー用に使用されると同じピンとすることが出来る。これは該マトリックス制御メモリーへの書き込みパルスが無い時は該スイッチ状態には変更が行われないからである。この様な場合、該ロード中（すなわちスイッチアウトされている）該アイ／オーピンは遮断されねばならない（すなわちスイッチアウトされる）。
【０１６１】
該補助回路２５１はデバッグ中該ラッチのクロックをイネーブル又はデイスエーブルにするため使用される。もしクロックイネーブル（シーイー）信号が該マトリックス２５０に接続されるなら、該クロックイネーブル（シーイー）信号は該マトリックスを経由して回され得て、各セルが別々にクロックされ、望まれる状態がロードされることを可能にするので、該補助回路２５１は不要である。
【０１６２】
典型的には実時間で作動するよう設計されることはないので、このロジック用に実時間の考慮は行われない。しかしもし実時間の”クロックイネーブル”信号が必要なら、これを該”レベル１マトリックス”内に集積化することが勧められる。
【０１６３】
【好ましいアーキテクチャーを選ぶための考慮】
ダイのサイズは重要なパラメーターである。該セルが小さくそして該ブロックが大きい程、柔軟性は大きく、ユーシジ（usage）は良くそして性能は良いが、該マトリックスはより大きくなる。該マトリックスのサイズを減じるために、レベルが付加される。上記の様に、１つのレベルの全てのセルがこの能力を有する必要はないことは注意されるべきであるが、セルはより低いレベルの他のセルから作られ得る。
【０１６４】
０．２５ミクロン（micron）技術用の可能なアーキテクチャーの第１例はレベル１での４０９６バイト（１２ビットアドレス、８ビットデータ）の３００セルと、レベル２での各ブロックの５１２バイト（９ビットアドレス、８ビットデータ）の６４セルとである。又第２例は２０４８バイトの６４セルから５１２バイトの１２８セルへレベル２のブロックを形成することである。レベル２では１０以下のブロックが実施された。レベル０では全てのセルが１つのセルに変換された（１つのメモリー又は１つのルックアップテーブル）。
【０１６５】
可能なアーキテクチャーの第３例は１つのレベルだけの６４キロバイトの２０セルに基づいている。再び、レベル０では全てのセルが１つのセルに変換されるので、この例では、該マトリックスは小さくそして従って飽和され得る。これらの３つの例は可能なアーキテクチャー間の幾つかの差を示す。これらの３つの例では、ダイのサイズは概略同じである。提案された最初の２つのアーキテクチャーでは該レベル１は６４キロバイトセルの約１８メモリーのみであるが、多数のより小さいセルがあるので、該ユーシジ（usage）はより良く、全体の結果は大抵の応用品用により良いと期待される。
【０１６６】
【セル接続例を利用した実時間計算】
０．２５ミクロン技術では、１つのセルのサイクル時間は典型的に１０ｎｓより短いと期待され、かくしてそれは下記計算での例として取られている。全てのセルは同期化され並列に作動する。従って、１０ｎｓの間に、該デバイス内のセルの各々は１コマンドを行う。これは、該セルにより行われる平行コマンドの全てが１命令（instruction）と考えれば、該処理速度は１００ミップス（MIPS）（秒当たり１億命令）である。
【０１６７】
図２４は、８ビットコマンドを行うよう動作しそして普通に使用される計算に基づき実際の処理力（actual processing power）へのより良い参考事項を提供するため役立つデバイス２６０を略図的に示す。このコンフイギュレーションで、該デバイス２６０は８ビットコマンド、ラッチ２６１への入力、を行いそして前のコマンドの８ビット結果に関係することが出来る。
【０１６８】
６４キロバイトアーキテクチャーで、サイズ４キロバイトの３００セルは１６ビット（すなわち６４キロ）アドレスバスと８ビットデータバスを有するセルに変換されると仮定すると、タイムシェアリング及び他の小さなタスク用に使用出来る他のスペアのセルを残して１８のこの様なセルがある。該１８のセルの各々が８ビットコマンドを行うことが出来ると仮定すると、完全なデバイス２６０は１８００ミップスを行うことが出来て、そこでは各命令は８ビットである。実際には、全てのセルが一般に６４キロ×８の様に大きく必ずしもなく、そして又平行してコマンドを行う多数の小さなセルもあり、かくしてミップスの有効数をなお更に増加させる。
【０１６９】
動作速度（ミップス）が高い程、該多数のセルのために遅延も大きいことが注意されるべきである。例として、図１２に示すシフトレジスターを参照して上記で説明されたノイズ発生器を考える。唯３ｎ−１サイクル後に（すなわち、もしｎ＝８なら、２３サイクル後に）、該シフトレジスターは、その出力が必要なノイズ信号として使用されてもよいように、入力ビットで満ちる。かくして、各サイクルが１０ｎｓ持続時間であると仮定すると、全遅延は２３０ｎｓである。その後、１０ｎｓ毎に新しいノイズサンプルが出力される。この種の遅延はハードウエア及びデーエスピー実施品、例えばフイルターの実施品では普通である。
【０１７０】
【異なるセルコンフイギュレーション】
該デバイスの前記説明では、全てのセルはラム及びラッチの両者を有した。それにも拘わらず、該デバイスアーキテクチャーは上記説明のそれらに対し異なる構造のセルを使用して実施されてもよい。例えば、フイードバックが必要でないならば、該デバイス１００上で走る（running）応用品（図２参照）はそのラッチを有しない同じデバイス上でより速く走る。
【０１７１】
【例１２−スタンドアローン（ｓｔａｎｄａｌｏｎｅ）ラムセル】
図２５はラム２７１と、図５を参照して上記で説明した付随補助回路２７２とを含むセル２７０を示す。図２６はこの様なセルを使用し、そして２つのオペランド（operands）Ａ及びＢを加算するための１対の８ビット入力データバス２７６及び２７７と該加算の結果を担う９ビット出力データバスとを有する８ビット加算器２７５を示す。この様な応用品では、該出力は単に該２つの入力Ａ及びＢの状態を反映するのでタイミングは要せず従ってラッチは要しない。
【０１７２】
図２６に示す該８ビット加算器２７５は、２つの８ビット入力の９ビット和は該マトリックスによりコンフイギュアされた必要サイズの１つのラムのみの中へプログラムされる、基本的解決策を図解する。この様なコンフイギュレーションでの該応用品はラムの９ビットワードの６４キロの等価品を使用する。該解決策は使用されるラムの量を減じるよう最適化され得る。
【０１７３】
図２７はより良く最適化された加算器２８０を図解するが、それは各々が１８ビットの２つの入力を加算し、そしてその出力に１９ビット和を作る。図２６に示す１つのラムを使用する代わりに、複数の第１段セル２８１，２８２，２８３そして２８４が、見られる様に、５ビットと３ビットの要素オペランドに分割された１８ビット入力を加算し、そして１つ又は２つの繰り上げ（carry-out）ビットを発生するようプログラムされる。該繰り上げ及び適当な第１段出力は次いで適当な第２段セル２８５，２８６そして２８７を使用して加算される。この様な配置は、該加算をもたらすために使用される該２段のために、該入力オペランドの供給と該結果の出力との間に２段の遅延がある。しかしながら、最下位ビットは該第１段加算器２８１を経由して直接供給されそして追加的遅延はこうむらない。もしそれが残りのビットと同じ２段遅延をこうむる必要があれば、それが１つの追加的遅延をこうむり、そしてそれにより残りの出力ビットの遅延に整合させるためにそれは該第１段加算器２８４を通して直接供給されることも出来る。
【０１７４】
この様な解決策は図５と図２５を参照して上記で説明した両デバイス用に好適である。該１８ビット加算器が図２７で示されるようにコンフイギュアされる時は、応用品は、上記説明の理由で該非最適化解決策に於けるよりもう１つ多い遅延があるに拘わらず、７キロバイトより少ない、すなわち、図２６で示される該非最適化８ビット加算器より著しく少ない、ラムの等価物を使用する。
【０１７５】
【例１３−構成部品から形成されるデバイス】
前の該遅延の例又は図１２に示す該シフトレジスターでは、該セル内のラッチのみが利用され、該ラムのためのニーヅはない。これと対照的に、図２５を参照して上記で説明した様に、ラムは必要だが、ラッチは不要の応用品が存在する。従って、該セルの幾つかは各部品が別々に使用されるようそれらの部品に分解される。元のセル構造は該マトリックスを使用して該部品を組み合わせることによりなお実現され得る。もし望むならば、セルは追加的構成部品を含むことが出来る。
【０１７６】
図２８は図２５に示すラム２７０から独立に使用されてもよいが、図５に示される該セルを実現するために、もし必要ならば、それらと組み合わされてもよいラッチ２９０の例を示す。
【０１７７】
【例１４−独立なクロックを有するデバイス】
上記説明の様に、ブロックはデバイスと考えてもよい。従って、完全なデバイス用の１つのクロックを有することは本質的でなく、各ブロックはそれ自身の独立なクロックを有してもよい。又前に説明した様に、該ブロックは、各セルがそれ自身の独立なクロックを有するよう、セル内へ変換されてもよい。
【０１７８】
もし異なる種類の２つのブロックが１つのデバイス内に組み合わされたならば、１つのクロックは１つのブロック用に提供されるがもう１つ用ではない。従って、必要なクロック応答の充分な種類を提供するために多数のクロック入力が該マトリックスを経由して該デバイスの入力から何れかのブロック又はセルへ回されてもよい。
【０１７９】
【例１５−単一ステップ動作】
単一ステップ動作のニーヅはデバッグ目的用であり、該実施品の状態を動作の何れステップについてもトレースされることを可能にする。この様な特徴は本発明の該デバイスを使用したハードウエア応用品が、ソフトウエアプログラムがデバッガー（debugger）を使用してデバッグされる方法と同様な仕方でデバッグされることを可能にする。必要な時は何時でもソフトウエアプログラムが止められ、その変数が追跡、変更され、そしてそれが止められた所から又は該プログラム内の何等かの他の点からか何れかで再スタート（restarted）されると同じ方法で、同様な仕方で該ハードウエアデバイスをデバッグするためのツールを本発明は提供する。
【０１８０】
もしデバイスが、例えば、図２７に示す加算器に於ける様にクロックを有しない種類であり、そして該実施品がフイードバックを有しないならば、該入力を単一ステップ化（single stepping）することにより単一ステップ動作が達成される。もし該実施品がフイードバックを有するなら、該定常状態のみが追加的ツールを使用することなく追跡出来る。もう１つの可能性は該セルを現在のステイタスが保持されるメモリーのもう１つの範囲へ導くためにアドレスビットを使うことである。
【０１８１】
もしデバイスがクロックを有しそして１つのクロック動作が必要ならば、ゆっくりした入力制御と速いハードウエア応答の間の同期化が達成されねばならない。１つの可能性は該デバイス用クロックとしてゆっくりした外部クロックを使用することである。
【０１８２】
図２９は該クロックが外部的に供給され得ないもう１つの解決策を示し、該クロックイネーブル信号（シーイー）は有効なクロック速度を調整するため使用される。該セルは次の状態を有するようプログラムされる。
【０１８３】
該入力（ｘｙ）で：ｘは該外部シーイー信号、ｙは該フイードバック、
該出力（ａｂ）で：ａは該内部シーイー信号、ｂ＝ｙは該フイードバックである。
【０１８４】
入力  出力
００  ００  外部クロックイネーブルなし、内部クロックをイネーブルにせず
０１  ００  外部クロックイネーブルなし、内部クロックをイネーブルにせず
１０  １１  外部クロックイネーブルをスタート、内部クロックをイネーブルにする。
【０１８５】
１１  ０１  外部クロックイネーブルを継続、内部クロックをイネーブルにせず。
【０１８６】
これは外部クロックイネーブルの各長いパルス用に、１つのクロックパルス用の等価の唯１つのパルスが発生されることを保証する。
【０１８７】
【例１６−２重バッフアーメモリー】
上記で説明された大抵の実時間応用品は固定マトリックス交差接続に基づいている。回し方（routing）を変更する時間は典型的デバイス目標の実時間の連続動作用には長過ぎる。しかしながら、新しい種類の応用品はホストに接続された１つより多いデバイスを利用することにより達成され得る。例えば、その各々が必要な動作を実行するようプログラムされるべき３つのデバイスがホストに接続されている状況を考える。該ホストコンピユータはメモリーを有し、該メモリーはそれが動作出来るようにするよう各デバイスにロードされねばならないコードを記憶している。１つのデバイスが該応用品を実行している間、第２は、前の結果がそこから読み出される又は新しいコードがそれにロードされることを可能にする普通メモリーとして該ホストに接続され、そして同時に該必要な接続をもたらしそして該必要なデータをロードするためのコードは第３のデバイスにロードされてもよい。現在走っているデバイスによる応用品が完了すると、各デバイスの状態は変化し、そしてホストは、結果を読み出しそして新しい実施品をロードするためにそのタスクを丁度完了したデバイスに接続される。この様な手段により、各実施品は、ソフトウエアを使用して普通のシーピーユー内で行われ得るより遙かに速いハードウエア内にもたらされ、一方時間のかかる、該デバイスへの新しいデータのダウンロード作業は異なるデバイスの動作で平行して行われ、それなので、実時間での何等のオーバーヘッドを要しない透明な動作を表す。
【０１８８】
上記実施では幾つかのデバイスが使用されるが、該実施は又同じデバイス内の２，３グループのセルを使用しても行われ得る。もし２つのデバイスグループのみがアクチブなら、メモリーだけを”見る（sees）”該ホストの遠望からは、それは２重バッフアーハードウエア実施（double-buffer hardware implementation）に似ている。
【０１８９】
この技術は、もし非常に速い実時間の計算が必要なら有用であり得る（コンフイギュア可能なコンピユータに於ける様に）。該ホストコンピユータは実施されるべきタスクを１つのデバイス上で必要な様に変更し、一方もう１つのデバイス内でそれは前の命令の結果をフエッチ（fetches）する。
【０１９０】
この様な応用品の実際の実施品は各々がアクチブ（active）とイナクチブ（inactive）の状態を有する少なくとも１つのデバイスを備える。該ホストは各デバイスに結合され、メモリーを有するが、該メモリーは、該アクチブ状態にある時該それぞれのデバイスが必要な動作を実行出来るようにするか又は該イナクチブ状態にある時該ホストが該それぞれのデバイスにロードすることを可能にするように、該デバイスの各々内にロードされねばならないそれぞれのフオーマットされたデータをその中に記憶する。これはコンフイギュア可能なコンピユータが少なくとも２つのデバイスを使用して実施されることを可能にするが、そこでは該ホストは各タスクを実行するために必要な多さのデバイスを賦活することにより少なくとも１つのタスクを管理するよう適合されている。
【０１９１】
【例１７−多数”エムシーエム（ＭＣＭ）”アーキテクチャー】
図９を参照して上記で説明された非飽和型マトリックス及び標題”好ましいアーキテクチャーを選ぶための考慮”の下で上記議論された例には、約１００万（1M）のスイッチがある。これは該マトリックスが全ダイ面積の約１０％を占めることを意味する。図３０は多数エムシーエム（multiple MCM）アーキテクチャーを略図的に示すが該アーキテクチャーは、２つのマトリックス制御メモリーの該ビットＡ1、Ｂ1、Ａ2，Ｂ2．．．ＡN、ＢNの各々間を多重化する（multiplexing）ための１つの制御部２９９により全てが動作させられるスイッチモジュール２９８内のそれぞれの２路開閉器（two-way switches）２９７により選択されるＡ1、Ｂ1，Ａ2、Ｂ2からＡN、ＢNまでとして表される該エムシーエム内のそれぞれの対のスイッチを経由して該マトリックス２９６内の各スイッチ２９５が開かれ又は閉じられるように追加的マトリックス制御メモリーを提供することにより作られる。該エムシーエムの各々は、それぞれの接続を規定するようデータでロードされ、それにより種々の予めコンフイギュアされた接続が望ましいエムシーエムを選択するように該制御を簡単に動作させることにより実質的に瞬間的に実施され得て、かくしてより速い実時間動作を可能にする。又このアーキテクチャーはデバイス内の同じセルの再使用を可能にするので、それらは応用品を実施するためそして該コンピユータのメモリーとして使用されてもよい。タイミング又はホストコンピユータの命令又は応用品の命令（例えば、該タスクが完了した時）は、該セルが該応用品にサービスする期間｛”ワーキング期間（working period）”｝か、又は該ホストコンピユータにそのメモリーとしてサービスする期間の、それぞれの期間の間で切り替わってもよい。各ワーキング期間の後、該ホストコンピユータはそのメモリーにアクセスする許可を受ける。
【０１９２】
このアーキテクチャーは該マトリックスと該マトリックス制御部品の集合したサイズを約４の倍数で増大させる。０．２５ミクロン技術が使用され、そして０．１８及び０．１３ミクロンのジオメトリー（geometry）が現在使用可能と仮定すると、この例は実行可能な設計である。
【０１９３】
このアーキテクチャーは例１６で上記で説明した２重バッフアーメモリーと同じユーシジを達成出来る。上記説明した両例１６及び１７でホストコンピユータの使用が説明されたが、該デバイスを利用するモジュールは同じ機能を実現出来る。
【０１９４】
【デバッギングポート】
プログラム可能なマトリックスに接続されたポートはどんなセル出力も、該セル出力を該マトリックス経由で該ポートまで回すことにより見ることが出来る。セル入力を見るためには、小さな自由セルが使われることが可能である（或いはセルとして作用する専用化されたラッチ）。図１２のシフトレジスターで説明した様にそのセルでのデータは該入力を該出力に転送するようセットされ、該セル出力は次いで該ポートへ回送される。
【０１９５】
このポートは、実時間動作で、該全体デバイスのどんな入力又は出力でも見られるようセットされ得る。
【０１９６】
注意：
１．大抵の場合、該セルの入力は、恰もこの入力が何れかの出力に接続され、該出力が該ポートに回され得るなら、見る必要はない。もし該ポートが該デバイスのアイ／オーピンに接続されていれば−それは該マトリックスにより該ポートへ回送され得る。
２．より低いレベルについては：該より低いレベルの”ポート”のみが該アイ／オーピンで実時間で見られ得る。
【０１９７】
【単一ステップ】
該デバイスをランニング（running）から停止させるために、全ての必要なことは該セルへのクロックを停止させることである。もし該ロジック操作の何れかが取り込まれ、そしてユーザーがこのロジックをインサーキットエミュレーションモード（In Circuit Emulation mode）で該ハードウエアの動作を停止させるようセットするなら、該応用品は停止する。もしユーザーが欲するなら、該マトリックス制御メモリーは該マトリックスにどれかのセルの該アイ／オーピン内へのルートを決めさせるよう変更され得る。又それはメモリーに変換され、普通のメモリーとして読み出される得る。この方法で、該デバイス全体内の何等かの単一ロジックビットを見ることが出来る。該テストの後、該マトリックス制御メモリーはその元の状態へ戻るようセットされ得て、該動作はそれが停止した同じ点から継続してもよい。
注意：
該シミュレーションが停止する時、より低いレベルのそれらを含み、該デバイス全体内の何等かの単一ロジックビットを、恰もそのレベルがメモリーに変換され、全ての該出力セルは該レベルのポートに接続された様に、見ることが出来る。見られるべきビットは新しく創られたメモリーのアドレスにより選ばれる。
【０１９８】
【技術の適合】
１つのチップ上に益々多くの機能を集積する半導体工業の能力はいつも増加している。該デバイスの技術はセルに基づき、使用されるセルが多い程、該応用品の能力は大きい。そのアーキテクチャーはセルがより大きいセルを形成するよう組み合わされるようにされているので、下記方法は、より大きいダイ利用が可能になった時、何れの実施品も新技術上で自動的に作動することを保証する：
１．セルの数を減らさない。
２．該マトリックスの交差接続制限を増やさない（すなわち、図９で示す上記例でＺを減じない）。
３．小さいセルサイズはより大きいセルサイズで置き換えられてもよい。
４．より低いレベルが追加されてもよい（より小さいセル用にレベルを追加する）。該より低いレベルのセルはより高いセルへ戻るよう変換され得ることは注意されるべきである。
５．クロックサイクル周期を増やさない。
６．セルのブロックはより低いレベルからより高いレベルへ動かされてもよく、かくして該マトリックスサイズが増やされることが求められる。
７．入力ピン数を減らさない。
８．出力ピン数を減らさない。
【０１９９】
事実、もし技術が改良されるならデバイス能力は減らされるべきでないことは上記から明らかである。これを考えることはどんな応用品も新しい技術と自動的に両立出来ることを保証する。又、シミュレーションで、機能はセルに分けられるので、該シミュレーション自身は変化せぬことは注意されるべきである。しかしながら、（マトリックス制御メモリーの）メモリー構造とデバイス全体の”メモリー画像（memory image）”との両者が変化するので該ロードされるプログラムは変化せねばならない。換言すれば、必要な全てのことはセルにロードされるデータが再フオーマット（reformatted）されねばならぬことである。
【０２００】
【ハードウエアのテスト】
実施品は該ハードウエアが適当に働くことを確認するためにテストされる必要はない。全てのラムをテストするためには、デバイス全体が１つのラムに変換され、全てのその位置（all its locations）は、従来型メモリーでなされる様に読み出し／書き込み動作を使用してチェックされる。例えば、”００”、”ＡＡ”、”５５”、”ＦＦ”、”データ内アドレス”等。該マトリックス接続は今度は接続信号により全ての起こり得る接続を経由してチェックされる。同じ仕方で、全てのアイ／オーピンがチェックされる。
【０２０１】
上記は応用のないハードウエアの全てをテストする能力の図解である。これを行う他の方法がある。例えば、信号はパターン発生器を使用して内部的に発生出来て該デバイス自身でテストされ得る。
【０２０２】
【スタンドアロンのカード】
スタンドアロンのカードが必要な時、例えば、もしホストが利用出来なければ、デーエスピー分野に共通な同じ解決策がここでも良い。例えば：
消去可能でプログラム可能な読み出し専用メモリー｛イーピーロム（EPROM）｝
１．該マトリックス制御メモリー用及び該セル用のデータを有するイーピーロムが該カード上に設置される。一旦電力がオンに替わると、該デバイスは該マトリックス制御データを該イーピーロムから該マトリックス制御メモリーへコピーする。メモリーからメモリーへコピーする電子回路実施品は当該技術で知られている。
２．一旦最後のビットが該マトリックス制御メモリーにコピーされると、該デバイスは１つのメモリーの様に見える。該電子回路は今度は該イーピーロムから新しく創られたメモリーへコピーする。該セルはかくしてそれらのデータをロードされる。
３．最後に、該電子回路は該応用品用に必要な交差接続をセットするために、該イーピーロムから再び該マトリックス制御メモリーへコピーする。
【０２０３】
もし使用される該デバイスアーキテクチャーが、該標題”好ましいアーキテクチャーを選ぶための考慮”の下の例で論じたと同じであるなら、該イーピーロムサイズは約１０メガビットである。
他の解決策
該イーピーロム（EPROM）が使用されると同じ仕方で、当該技術で公知の他の解決策、例えば、バックアップバッテリーを有するイーイーピーロム（EEPROM）又はラムが使用出来る。該イーピーロムを該デバイス内に集積化することは、それが該デバイスの製造コストを増加させるので勧められない。
【０２０４】
直接に該デバイス用となる、バッテリーバックアップは、もしそれが該デバイスがアクチブでない時だけ該バッテリーがアクチブであることを確認するならば、有用である。さもなければ、電力消費が多い。
【０２０５】
【自己永久運動的応用品】
（Self-Perpetuating Application）開発
該ハードウエア応用品が記憶され、ソフトウエアコードとして再使用され得るので、再使用され得る各タスクは記憶され必要時にコールされることが可能である。例えば、もしフイルターが実施されデバッグされるなら、プログラムは該フイルターパラメーターを求めそして該デバイスコードを自動的に発生する。これは、該デバイス技術が多く使用される程、作業グループ（work-groups）に利用可能な在庫タスク実施品の数（the number of "off-the-shelf" task implementations）が大きくなり、市販までの時間が短くなる、ことを意味する。更に、上記説明の様に該チップ製造技術が改善された時応用品のライブラリーはなお使用可能である。
【０２０６】
【該デバイスの補足部品】
該デバイスアーキテクチャーに直接関係しない補足部品が、下記のために該デバイス上に提供されてもよい。
１．同期化されたクロック及びタイミング用に内部クロックを発生する、
２．外部クロックの使用をイネーブルにする、
３．”書き込みサイクル”用タイミングを創る。これは固定タイミングであり、それは該書き込み動作が、該マトリックスから来る該”書き込みイネーブル”及び該セルの出力イネーブルの利用によりイネーブル又はデイスエーブルにされるからである。従って、それはマスタークロックからドライブされ得る。
４．該アイ／オー信号をバッフアーする。
【０２０７】
これらの機能を如何に実施するかは当該技術で公知である。
【０２０８】
【該デバイスを実施する他の方法】
該デバイスアーキテクチャーの利点の幾つかは図５に示す様な該セル入力信号と該セル出力信号が同期化されている事実と関係する。しかしながら、幾つかの非同期動作も実施出来る。例えば、小さなセルは余りに速いのでそれらのサイクル周期は普通のセルのサイクル周期の半分であることを考える。これらのより速いセルはより速いクロックを有するより小さいブロック内に接続され得る。それらのサイクル周期は普通のセルのサイクル周期の半分であるので、これらのブロックの出力は残りのブロックに容易に同期化出来る。
【０２０９】
より速いセルはより高いレベルにあるより小さいセル上で実施されることが出来る。従って、この種の接続は全体のアーキテクチャー内に適合出来る。事実、フイードバックが実施されない部分では、該セルのラッチは冗長である。フイードバックされないセルの終わりにある最後のラッチのみが必要である。
【０２１０】
同様に、指定された遅延を提供するために多数のラッチがカスケードで使用され得る応用品が存在する。従って、該セルは部分的に、付随ラッチを有しないラム及び／又は付随ラムを有しないラッチにより実現されてもよい。それにも拘わらずラッチをラムに直接付随させることが必要な場合、これは上記説明の様に該マトリックスを使用して行われ得る。それは使用するにより複雑であり、平均的エンジニアにとってエンジニアリング時間を費やすけれども、もしこの種のアーキテクチャーで働くエキスパートのグループが全ての利点用に新ライブラリーを作るため作業しつつあるならば、それは価値がある。
【０２１１】
【簡単さ】
該応用品は小さな部分に分けられるので、それは応用品エンジニアを簡単な解決策へ導き、該解決策は実施するのに簡単でもある。
【０２１２】
【人的資源の平行開発】
１人のシステムエンジニアが該解決策のアウトライン（outline）を開発する時、彼又は彼女は該機能セルの中に作られねばならない機能を宣言出来る。次いで各セル実施品は独立にコード化され得る。これは、もし市販までの時間が重要であるなら、各セル実施品のコードが異なるエンジニアにより開発され得ることを意味する。
【０２１３】
【流れ線図】
図３１は、本発明のデバイスを使用してハードウエア応用品の機能を規定する構造データ（construction data）を得るための第１の方法に付随する主要な動作ステップを示す流れ図である。”構造データ”は、セル及び／又は構成要素間の接続を規定しその中に記憶するためのデータを含むトポロジーを表すデータを意味する。見られる様に、トポロジーは望ましい応用品を実施するために選択されるが、その後データは該選択されたトポロジーにより規定されたセル及び／又は構成要素内に記憶されるために定式化される。
【０２１４】
図３２は本発明のデバイスを使用して、望まれるハードウエア応用品の少なくとも部分的機能を規定する構造データを得るための代わりの取り組みを示す。各々がそれぞれの機能に関する構造データを含む予めコンフイギュアされたフアイルを記憶するアイブラリーがアクセスされ、該応用品の１つ以上の機能を実現するために１つ以上のフアイルが該ライブラリーから選択される。オプションでは、該ライブラリーに含まれない機能を追加するか又はそこにある構造データを置き換えるか何れかを行う、前に得られた構造データが該ライブラリーにセーブされてもよい。かくして該デバイスと連携して該ライブラリー内に記憶された該構造データは該応用品の望ましい機能又は部分的機能を実現するデバイスアーキテクチャーを規定する。例えば、必要な追加的構造データと組み合わされ、その構造データが該ライブラリーに記憶された１０ビット加算器から、１２ビット加算器が作られてもよい。もし必要なら、最終１２ビット加算器の構造データは、標準的特徴として次ぎに利用可能となるように、そこで該ライブラリーにセーブされてもよい。これは予め設計された構造データのライブラリーが再使用されることを可能にしてかくして各応用品用に繰り返して同じ構造データを創る必要を解消する。かくして上記例では、一旦創られた該１２ビット加算器用構造データは記憶され、かくして１２ビット加算器が必要な度に設計者がこの機能を再設計する必要を解消する。これは可成り設計時間を節約するのみならず、より重要なことは、エキスパート設計者が最適解決策を設計することそしてこれらの解決策を該設計者のコミュニテイに利用可能にすることを可能にする。この設備は又、例えばインターネットを通してメンバーが設計を交換（swapp）することを可能にする作業グループ（work-groups）に有用である。
【０２１５】
図３３は構造データを得るなおもう１つの方法を示すが、そこでは該少なくとも１つのセル及び／又は該少なくとも１つの構成要素を実施するようそして該構造データを使用して予めコンフイギュアされたトポロジーを実施するようコンピユータをプログラムすることによりハードウエア応用品のコンピユータシミュレーションが走る（is run）。該構造データは、必要な様に、変更されてもよく、該コンピユータシミュレーションが満足されるまで該シミュレーションは繰り返される。次いで該ハードウエア応用品は該シミュレーション構造データから引き出されたデータを該デバイスにダウンロードすることにより実施される。上記注意の様に、該コンピユータは高級プログラム言語を使用してプログラムされてもよく、かくして従来はエキスパート設計エンジニアの領域であった熟練を今やプログラマーに利用可能にする。更に、該プログラムは該構造データを形成するためだけに役立ち、一旦該応用品の機能的実施が入手可能になり、該データがそのセルにダウンロードされると、該データが形成された仕方は最早関係なくなる。これは、該データを作りそれにダウンロードするため使用された該プログラムコードが最適化されたか、されなかったかに無関係に等しい効率で動作デバイスが機能することを意味する。
【０２１６】
該シミュレーションを走らせるため該コンピユータをプログラムする時、該シミュレーション構造データは２つの方法で引き出されてもよい。１つの方策に依れば、該シミュレーション構造データの少なくとも１部分の瞬間的サンプルは該コンピユータにより実行中に（on the fly）連続的に計算される。しかしながら、異なる方策に依れば、該シミュレーション構造データの少なくとも１部分は予めコンフイギュアされそして記憶され、そして必要な時その瞬間的サンプルが該コンピユータによるフエッチ（fetched）される。この様な方策は該シミュレーション構造データを実時間で計算する必要を避けるが、それは該データが予め決定されフエッチされ、かくして該構造データを引き出すために要するコンピユータ演算コード（computer opcodes）の数を著しく減らすからである。
【０２１７】
図３４は本発明のデバイスを使用してハードウエア応用品を実施するための方法に付随する主要な動作ステップを示す流れ図である。その最も基本的な所で、フオーマットされたデータが得られ、該デバイスにダウンロードされる。該フオーマットされるデータは予め決められた構造データから引き出されて、次いで該デバイスへのダウンロード用にフオーマットされてもよい。該構造データ自身は図３１，３２又は３３を参照して上記で説明された方策のどれかを使用して得られてもよい。
【０２１８】
【シミュレーターとツール】
下記例はスタンドアロンの存在として各々同期化された複数のセルを取り扱う。これらの存在の集積化は当該技術で公知の様に達成される。
【０２１９】
【シミュレーター】
信号が該応用品に入力される普通の実施品では、該信号は操作されそして、結果として、信号が該応用品から出力される。シミュレーションでは、”仮想（virtual）”信号が、該実施品の機能をシミュレートするコンピユータプログラムに入力され、そして”仮想”出力信号を発生する。複雑な実施品をシミュレートすることは非常に複雑である。該難しい部分は該コンピユータ”時間（time）”の分解能が固定されている時に該信号間の遅延をシミュレートすることである。該シミュレーターの分解能が良い程、該シミュレーションはゆっくりしている。
【０２２０】
全てのセルが同期化されているので、それが真に動作すると同じ仕方で該ハードウエアの精確な機能をシミュレートすることに問題はない。本発明のデバイスを使用して作られた応用品内の各セルはタスクを行う。該タスクは変換テーブル（ルックアアップテーブル）として実施され得る。該テーブルデータにより表されるタスクは高級プログラム言語で書くことが出来る。種々のテーブル内に記憶された全てのデータの集まりはデバイスコードと呼ばれる。
【０２２１】
例：
今、擬似コード（pseud code）として”Ｃ”言語を使用した幾つかの例を下記するが、どんな他のプログラム言語も使用され得ることは理解される。
【０２２２】
どんなタスク実施品用の例も下記の様になるであろう：
0004642304.tif 000012
0004642304.tif 000013
該タスクがソフトウエアを使用して行われると、セル機能を実施する同じコードが該シミュレーター内でそして該デバイスへダウンロードされるべき該データの発生で使用出来る。該ハードウエア実施品の各サイクル内では唯１つの動作がセル内で行われるので、該動作は該コンピユータ上で”１対１（one to one）”でシミュレートされ得る。該動作をシミュレートするために、全ての該動作は、１つのハードウエアサイクルをシミュレートするループ内に含まれるべきである。
【０２２３】
例えば、該シミュレーター用コードは次の様に出来る：
0004642304.tif 000014
このコードと前のコードとの間の次の差が注意されるべきである：
１．該マトリックス動作が追加された；該”アドレス”をインクレメントする代わりに、該”アドレス”は該新しい値を該データから得る。
２．該データはテーブル要素内には集められない。該データは１サイクル内に行われる単一動作を反映するのみである。
３．小数のセルは同じ仕方で、同じループ内で実施され得る。この例では、全てのセル用のマトリックス動作は該ループの終わりへ動かされるべきである。
【０２２４】
従って、該過程を自動化すること、そして該シミュレーターに該デバイスコードにより求められるロード可能なデータを”実行中に”発生させることは全く容易である。該シミュレーションがこの仕方で作動する時、それは”コンパイルドモード（Compiled mode）”で動作すると云われる。
【０２２５】
ユーザーにより変更されねばならない全てのコード、すなわち該セル用及び該マトリックス用のコード、は該シミュレーター用及び該ロードされるデータ用で同じであることを注意することは重要である。その結果として、該シミュレーターは該応用品の１対１のシミュレーションを行うことが出来るのみならず、更に、もし該シミュレーションが適当に作動すれば、それは追加的人的誤り無しに該ロードされるデータを創る自動的過程でもある。
【０２２６】
該デバイスコードはアドレス−データ関係のテーブルである。該シミュレーターをより速く走らせるために、該テーブルにより表された該デバイスコードは予め計算され、該シミュレーターにより変換テーブルとして使用されることが出来て、かくして該シミュレーターが”実行中に”で該テーブル値を計算する必要を解消し演算コードを節約する。該シミュレーションがこの仕方で作動する時、それは”リアルモード（Real Mode）”で動作すると云われる。この場合、該コードはこの様に作られる。
【０２２７】
0004642304.tif 000015
0004642304.tif 000016
該２つのシミュレーション方策は組合せて使用されてもよい。かくして、１つのセルは”実行中に”該セルデータを計算することによりシミュレートされ得る、一方もう１つのセルは予め計算されたデータをフエッチすることが出来る。”コンパイルドモード”でデバッグすることはより容易であるが、それは”リアルモード”での方が速い。
【０２２８】
例によると、該セルコード発生は次の様に現れる：
0004642304.tif 000017
0004642304.tif 000018
このコードは各セル用に実施されるべきである一方、該関数コード（Cell1(int)、Cell2(int)...Celln(int)）は別々に実施される。
【０２２９】
例により、該シミュレーターコード発生は次の様に現れる：
0004642304.tif 000019
0004642304.tif 000020
該iAddressForCellnは該セルの実際のアドレスの部分に過ぎなくてもよい。該マトリックスは該データの部分を該アドレスの部分に接続してもよい（ビット毎の接続）。これらのマトリックスラインが、このマトリックス動作を該”マトリックス制御メモリー”データに変換する、ホストにより使用される、種々の含まれたフアイル、サブルーチン、又はクラスに対し分離され得ることは明らかである。
【０２３０】
【シミュレーション速度】
下記議論は同じ機能を実施するデバイスの速度とシミュレーションの速度の間の比較に関する。該シミュレーターを走らせるコンピユータの速度要因を速度評価から除去するために、下記議論は該コンピユータは該デバイスと同じ速度で動作すると考える。
【０２３１】
コンパイルドシミュレーターモード（Compiled simulator mode）
該応用品をシミュレートするために、指定された関数を実施するために専用化されたセルの各々は必要なアルゴリズムを実施するためにシミュレートされるべきである。下記では、”好ましいアーキテクチャーを選ぶための考慮”の標題の節で上記で説明されたアーキテクチャーに依り３００セルが選択される。従って、該デバイスセルが平行に作動しつつありそして該シミュレーターがステップづつで作動しつつある時、該シミュレーターは該デバイスハードウエアより少なくとも３００倍ゆっくりと作動しつつある。上記規定された”コンパイルドモード”では、該セルデータは該シミュレーターが走っている間に該指定された関数を実施することにより計算される。例え簡単な関数が典型的に少なくとも３０の演算コードを使用して実施されても、かくして該ハードウエアに比して少なくとも９０００の比率（factor）で該シミュレーションを遅くさせる。ここで、該入力信号用の発生時間と該入力及び出力が見た信号の操作時間とを追加すると、該比率は更に高くなる。これは該シミュレーション速度を増加させるどんな技術も重要であることを意味する。
【０２３２】
実際には、該コンピユータは該ハードウエアより遅くそして該セル関数内で求められるサブルーチンは非常に大きいので、該シミュレーションは遙かにもっとゆっくりと走る。
【０２３３】
それにも拘わらず、シミュレートすべき限定された数の動作しかないので（上記で参照された好ましいアーキテクチャーで３００セルを収容している）、該シミュレーターは今まで提案されたシミュレーターよりずっと速く走ると期待されている。
【０２３４】
【リアルモード】
”リアルモード”では該セル内に記憶されるべき該データは該シミュレーションを走らせる前に計算され、該シミュレーション中該セルにより実施されるべき望ましいアルゴリズムを実行するために使用される。この様な手段により、該シミュレーションをもたらすに要する演算コードの数は大いに減少し、該シミュレーターは遙かに速く走る。この理由で、”リアルモード”で該シミュレーターを走らせることは３０の基本的比率より遙かに速いが、それは下記のためである。
１．該セル関数用サブルーチンが大きい程、該速度の節約は大きい。
２．該セルが大きい程、該節約は大きい。その理由はより大きいセルは多数のセルを組合せ、シミュレートされるべきセルの合計数を減らすことである。”リアルモード”では大きいセル又は小さいセルをシミュレートするために同じ時間を要する。
３．少ない数のセルはコンパイルドモードでも該シミュレーター速度を増加させるが、大抵の場合より大きいセルはより小さいセルより多くのコードを使用するので、この利点は失われる。
【０２３５】
結論では、該”リアルモード”は該デバイス上で走ると期待されるハイエンド応用品（high-end applications）で”コンパイルドモード”より数十から数百倍速く作動すると期待されてよい。この数は、該応用品でより大きいセルを創るため使用されたより小さいセルの平均数により掛け算されたセルの、タスク内の演算コードの平均数により計算される。
【０２３６】
【エミュレーターモード】
エミュレーターモードでは該シミュレーションは”仮想信号（virtual signals）”発生により引き出されたクロック速度で走る。該応用品は実時間で走ることが出来るが、該シミュレーターにより発生される該”仮想信号”が最大速度をセットする。
【０２３７】
【インサーキットエミュレーター】
（In Circuit Emulator）｛アイシーイー（ICE）｝モード
インサーキットエミュレーターモード内では、該シミュレーターは実時間で作動する。
【０２３８】
【シミュレーター入、出力信号】
信号は、パターン発生を説明する例６での上記説明の様に該デバイス内セルにより発生される。等価な信号はコンピユータにより同等にうまく発生され操作され得て、該信号が何れかの場合に発生され又は使用される仕方の間に差は無い。それにも拘わらず、該コンピユータ化された信号は”仮想の”信号と引用され、かくして該コンピユータに接続されたデイスプレーモニター上で見ることが出来る。
【０２３９】
ユーザーが該”仮想”の信号を見て達成出来る幾つかの利点がある：
１．該信号をそれらがあるが儘に示す（ロジックアナライザー流儀で）。
２．該データのリストを示す（リストモード）。
３．該信号を、見る前に変換する。例えば、パルスコード変調｛ピーシーエム（）｝では、”１つのロー（A Law）”｛ピーシーエムの慣例（PCM convention）の１つ｝信号は各第２ビットが反転される様なものである。ユーザーは該反転されたビットを見る前に反転出来るので、それは該結果をより理解し易い。ユーザーは該ピーシーエムコードを線形コードに変換してもよく、それによりそれをずっと理解し易くする。
４．ユーザーはバイト又はワード（words）をアナログ型に変換しそれらをスクリーン上に示すことが出来る（スコープモード）。
【０２４０】
該出力信号は該応用品により発生される。それらは入力信号と同じ方法で操作され得る。
【０２４１】
図３５は本発明のハードウエアデバイスをシミュレートするための方法に付随する主要な動作ステップを抄録する流れ図である。ステップ式に走らせるよう適合されたエミュレーションモジュールは該デバイス及びアイ／オーインターフエースを含んで作られる。望まれるハードウエア応用品を創るためにフオーマットされたデータが該エミュレーションモジュール内の該デバイスにダウンロードされ、該アイ／オーインターフエースはコンピユータに接続されるが、該コンピユータは制御デバイスを構成しそして又該エミュレーションに参画する。入力サンプルが該コンピユータにより発生され該アイ／オーインターフエースを経由して該エミュレーションモジュールにロードされる。出力サンプルは該アイ／オーインターフエースを経由して該エミュレーションモジュールから解析用に集められる。１つの方策に依れば、該エミュレーションモジュールはステップ式に走らせるようセットアップされるのでそれは、該前の出力サンプルが解析され、正しいと見出された後、該コンピユータによりオーソライズされる、次の入力サンプルを待つ。もう１つの方策に依ると、該エミュレーションモジュール内の該デバイスは、図面の図３６を参照して下記で説明される様に、インサーキットエミュレーション用のそれと同一の仕方で該出力サンプルを解析するために幾つかの未使用セル（ことによるとこの目的に専用化されたもう１つのデバイス内の）を使用する。全過程は必要により、サンプル毎に繰り返される。代わりのコンフイギュレーションでは、ロジックアナライザーが該コンピユータに取って代わり、信号発生器が該入力サンプルを発生出来る。
【０２４２】
次の入力サンプルが印加される前に、該コンピユータ又は他のロジックアナライザーは現在の出力サンプルを解析し、そして欠陥の場合に更に進んだ動作をことによるとアボート（abort）するために時間を取るために該エミュレーションをステップ式に走らせることが必要である。該望ましいステップ式に走らせることは、該応用品にクロック信号を供給するようクロックイネーブル信号を外部的に供給することにより、そして該応用品による無効化まで該クロック信号の供給を避けるようクロックイネーブル信号を内部的にデイスエーブルにすることにより達成出来る。
【０２４３】
【エミュレーター】
１つ以上の汎用ハードウエアデバイス（含む複数）を有する汎用エミュレーターピーシーカード（general-purpose emulator PC card）が実施される。該コードは該デバイス内にロードされる。該コンピユータにより発生される”仮想”入力信号は該ピーシーバス（PC Bus）｛例えば、ピーシーアイ（PCI）バス｝を経由して該カードの入力に転送される。該デバイス又はもう１つのデバイスの自由な部分が、ロジックアナライザー用と同じロジックだが、ユーザーが欲する様に柔軟な、望まれるロジック状態を取り込むためにプログラムされる。該出力は戻って該ピーシーバス経由でサンプルされ該ユーザースクリーン上で見られる。該スクリーン上で該信号を見るために、必要ならば、該エミュレーションカードのクロックは操作され、スローダウンされ、停止されるか又は１ステップ化（single stepped）され得る。該クロック信号は最大の速度又は柔軟性を持つために該ソフトウエアにより制御される該ピーシーから該デバイスの外部クロック信号内に注入され得る。
【０２４４】
もし数時間以上続く長い持続時間実信号を入力とする必要があれば、インサーキットエミュレーターが使用されるべきである。該同じ汎用エミュレーターピーシーカードが使用されるが、該ピーシーカード用ポートはユーザーカード上で実施されるべきである。このポートは該アイ／オー信号を該エミュレーターカード内へ伝送する。該エミュレーターは該入力信号を記憶し、該出力及び入力信号上でロジック操作を行う。一旦このロジック操作の結果が取り込まれると、該過程は停止し（該クロックをデイスエーブルにすることにより）そして該応用品をデバッグするためにユーザーは該記憶された信号を該シミュレーター／エミュレーター内に注入（inject）する。
【０２４５】
図３６は該デバイスの実時間動作中に該エミュレーションモジュール中で該デバイスをテストするためのインサーキットエミュレーション方法に付随する主要な動作ステップを抄録する流れ図である。テスト中の該モジュールのアイ／オーインターフエースの少なくとも１つは制御ユニットに接続され、そして該デバイスは該インターフエースの少なくとも１つを経由して該デバイスの特定点のサンプルを外へ移植するようコンフイギュアされる。該サンプルは該デバイスのサンプルの履歴を実時間で得るよう該制御ユニット内に採取され、そして該制御ユニットは最も最近のサンプルの少なくとも部分集合を解析するため使用される。もし必要なら、テスト中のデバイスの動作は次の何れか又は全部を可能にするように停止される：
（ｉ）該デバイスのサンプルの履歴の検査、
（ｉｉ）該停止されたデバイスの瞬間的な現在の状態の検査、
（ｉｉｉ）該停止されたデバイスへの異なる状態のダウンロード、
（ｉｖ）該デバイスの実時間動作の継続、そして
（ｖ）該デバイスの実時間動作の再スタート。
【０２４６】
【単一開発環境】
同じ開発環境は該過程の始めから該製造段階まで使用される。該開発環境は高価なテスト機器に取って代わり得るが、それは標題”シミュレーション”の下で説明された様に該ピーシーソフトウエア環境（PC software environment）で”仮想”信号を操作することは非常に容易だからである。それはシミュレーター、エミュレーター、そしてインサーキットエミュレーターとして使用出来て、そしてそれは製造部門で該カードをチェックするプログラムとして使用出来る。
【０２４７】
【顧客のコードの品質】
応用品エンジニアは解決策、すなわち：各セル内に何がプログラムされるべきか、そして該セル間はどんな接続であるべきかを規定する。次いで、該セル用コードが書き込まれる。実時間に関しては、該コードの品質は、該デバイス内にロードされる”コード”の品質に対し重要でない。例えば、図１０で示す該カウンター実施品が次のコードを使用すると仮定する：
0004642304.tif 000021
そして次の様に変えられる：
0004642304.tif 000022
該第２の実施例のコードは遙かにゆっくりしているが、同一データは該デバイスにロードされる。かくして、最終顧客にレリースされる該製品は初心者プログラマーにより影響されない。
【０２４８】
上記特徴は、ソフトウエアエンジニアとハードウエアエンジニアと両者が該実施を行えるので、設計者の可用度（availability）を増すために役立つ。システムエンジニア−該解決策を開発する人−該シミュレーションを使用することにより容易にチェックされることが出来る。
【０２４９】
より貧弱なコードを有する”コンパイルドモード”では該シミュレーターはよりゆっくり作動するが、該”リアルモード”を利用するデバイスの部分では差が無いので組み合わされたモードでは該差は気付かれない（該テーブルを作る時間は無視され得るので）。
【０２５０】
図３７は所望機能を有する特定用途向けハードウエアデバイス（application-specific hardware device）を設計する方法に付随する主要な動作ステップを示す流れ図である。本発明のデバイスに連携して該所望機能を実現するデバイスアーキテキュチャーを形成するフオーマットされたデータが得られる。該デバイスアーキテクチャーのプログラム可能なマトリックス又は複数マトリックスは該プログラム可能なマトリックス又は複数マトリックスの接続を実現する固定接続部により置換され、そして該デバイスアーキテクチャーのセルの少なくとも幾つか内の記憶要素はその中に記憶されたデータを実現するためのそれぞれの固定ドライブレベルにより置換される。この様な手段により、該アーキテクチャーは該特定用途向けハードウエアデバイスの直接的実施に好適にされる。
【０２５１】
この様な方策は特定用途向け集積回路｛エイシックス（ASICs）｝の促成の開発を可能にし、該集積回路は多量生産されるよう意図されたハードウエア応用品用のチップ面積を減じるためにはプログラム可能なデバイスより好ましい。他方、本発明のデバイスは該エイシックを設計するそして所要のフオーマットされたデータを得るための作用体（agent）としてだけ使用され、そしてそれは次いで変型される。エイシックはそれ自身汎用ハードウエアデバイスでなくそしてプログラム可能でない。
【０２５２】
かくして、エイシック変換では、応用品ラムとして使用される各ラム内の各ビットは”１”又は”０”ドライバーで置き換えられる。これは該ラムのサイズを減らし、該ラムをプログラム不可能なテーブルへ変換する。記憶用に使われる何れのラムも手を付けられず残される。より多くの節約が達成出来るが、該特別の節約は”エイシックまでの時間（time to ASIC）”を延ばし、より高価になるので、上記の様にだけすることが通常勧められる。上記は自動的ツールとして実施されてもよい。
【０２５３】
下記は応用品の機能の１部を実施するためにエイシックとして使用することにより達成され得る特別の節約の例を示す。８つのフリップフロップと幾つかのロジックを用い、従来の方法を使用して８ビットアップ−ダウンカウンターが実施され得る。本発明の同じ８ビットアップ−ダウンカウンターは９ビットアドレスで実施されそして８ビットデータセルは４０９６ビットのラムを要する。本発明は、実際複雑な応用品では、メモリーを非常な無駄にすると表面的にはこの例から見える事実にも拘わらず、本発明により達成される実施品全体は”ダイ節約品（die saver）”であり、カウンター変換（counter conversion）は全体のエイシックダイサイズの約０．３％を節約する。例として、チャンネル毎の適合テーブル（adaptive tables）を保持する３２チャンネルの各１つ用にＴＸ及びＲＸアルゴリズムを実施する完全なイー１通信ライン（full E1 communication line）用に”ハフマンコード(Huffman Code)”が実施されることが評価された。この応用品は０．２５ミクロン技術で約２５０ｍｍ2のダイ上に実施される。もう１つの例は完全なデバイスの３より少ないパーセントを消費する８ビット、８タップのエフアイアールフイルター（FIR filter）である。本発明のエイシック変換方法は、上記カウンターの様な、該エイシックの幾つかの基本的機能が、ライブラリー形式での従来方法を使用して利用可能にされるよう拡張されてもよいことを、更に注意すべきである。この様な場合、予め変換された機能を使用することにより、ユーザーは該エイシックの回復不可能な消費｛エヌアールイー（NRE）｝時間を浪費することなくより良い変換を実施出来る。
【０２５４】
各々が種々の機能を有する１連の種々の回路基板上にエイシックが搭載されるべき時、該汎用ハードウエアデバイスの柔軟性をエイシックの利点と組み合わせることが望ましい。この場合、該デバイスアーキテクチャーの該プログラム可能なマトリックス又は複数マトリックスの１部のみが置換される接続部の接続を実施する固定接続により置き換えられ、そして該デバイスアーキテクチャーのセルの幾つかだけの記憶要素がその中に記憶されるデータを実現するためにそれぞれの固定ドライブレベルにより置換される。
【０２５５】
この様な技術は重要な部分（critical parts）の設計用又は実施品間の差の収容用に望ましい。例えば、種々の国の間で小さな差異のある電話通信システム信号動作（telephony signaling）が実施される場合である。
【０２５６】
【欠陥チップの利用】
チップの値段はダイのサイズに関係し、約２５０ｍｍ2は極めて大きいと考えられるので、下記の方法は該チップ価格を下げることが出来る。該デバイスはセルベースであり、それは何等かの与えられたタスクを実施するためにセルが選ばれる応用品には関係しないので、デバイステストは行われるであろう。もしセルが欠陥ありと見出されるなら該セルは使用されないように欠陥ありとマークされる。
【０２５７】
次いで該マトリックスはテストされる。もしリンクが欠陥ありと見出されるなら、そのリンクは使用されるべきでない。時には欠陥接続通路はセルの消失（loss of a cell）を引き起こし、そして時には該リンクは放棄（spared）され得ることは注意されるべきである。
【０２５８】
２，３百のセルしかなく、そして該マトリックスのスイッチは”マトリックス制御メモリー順”に記憶されるので、該欠陥部分をマーク付けするために小片のコードを作ることは全く簡単である。このコードはマトリックス制御メモリーの欠陥性アドレス及びデータと該欠陥性セル数から成る。
【０２５９】
もしタイミングが欠陥性であるなら、デバイス全体が欠陥性になる。該アイ／オーは同じ仕方でチェックされ得るが、もし該アイ／オーが欠陥性であれば該デバイスの使用は勧められない。
【０２６０】
【より高い信頼性を達成する利用法】
そのアイデアはそのデバイス内にスペアのセル又は２，３のスペアのセルを持ち、それらを欠陥性セルの代わりに使用することである。マトリックスは既に”スペアリンク（spare links）”を有する。例えば：
もしデバイスに接続されたホストがあれば、上記方法は応用品で使用され得る：
１．１つ又は幾つかのスペアセルが余される。
２．組み込まれたテストプログラム（Built-In Test program）がそれらの自由なセルをポートを経由してチェックする（ラムチェックと同様に）。
３．そのセルは該自由なセルと同じ接続を取ることが出来るもう１つのセルのタスクでロードされる。
４．該セルの入力は該もう１つのセルの同じ入力へルート付けする。
５．該セルの出力は該もう１つのセルの同じ出力へルート付けされる。今は両セルが並列で作動しているので衝突は起こらない（もし誤りがなければ）。
６．該もう１つのセルはスペアセルであるようルート付けされる。
【０２６１】
マトリックス誤りはセル誤りの”様に見える（look like）”。それをテストするために、もう１つのリンク通路が使用されてもよい。もし他のこの様なリンクが無ければ、該セルは”欠陥性”とマーク付けされる。タイムシェアリングコンフイギュレーション（time-sharing configuration）での”セル−ラム（Cell-RAM）”は全サイクルの後だけスイッチオフされ得る。
【０２６２】
図３８は、本発明のデバイスを使用してハードウエア応用品を実施する時の上記方法に付随する主要な動作ステップを抄録する流れ図である。該デバイスにフオーマットされたデータをダウンロードする前に、該フオーマットされたデータは、該フオーマットされたデータと何等かの欠陥性のセル及び／又は接続の欠陥リストとを含む、デバイス特定的で、拡張され、フーマットされたデータ（device-specific extended formatted data）を創るために使用される。テストをする前は、該欠陥リストは空である。かくして、空の欠陥リストは欠陥性セル又は接続の無いことを示すが、簡単には、該デバイスが未だテストされてなかったことを意味する。もし必要なら、該デバイス特定的で、拡張され、フオーマットされたデータは他のデバイス特定的情報を含んでもよい。該デバイス内のセルと接続はテストされ、従って欠陥リストは更新され、そして欠陥性と分かった何等かのテストされたセル又は接続を使用することを避けるよう、もし必要なら、該デバイス特定的で、拡張されフオーマットされたデータ内の該フオーマットされたデータは変更される。
【０２６３】
図３９は本発明のデバイスの実時間自動欠陥検出及び修正方法（method for real time automatic fault detection and correction）に付随する主要な動作ステップを示す流れ図である。図３８を参照して上記で説明された様に、デバイス特定的で、拡張され、フオーマットされたデータは、該欠陥リスト内にない未使用セルを位置検出するため使用される。もしこの様な未使用セルが位置検出されれば、該未使用セルとその接続はテストされそして、該未使用セル及び／又はその接続の何等かが欠陥性であるなら、該デバイス特定的で、拡張され、フオーマットされたデータは更新されそして欠陥性でない更に進んだ未使用セルが位置検出（located）される。テストされ動作すると分かった自由なセルが位置検出された時、該デバイス特定的で、拡張され、フオーマットされたデータは、該未使用セルと同じ接続を取ることが出来る、使用済みセルをテスト用に選択するために使用される。該デバイス特定的で、拡張され、フオーマットされたデータは該選択されたセルとその接続とを該動作する自由なセル上へ複製するため使用される。該選択されたセルは今度は遮断され、従って該デバイス特定的で、拡張され、フオーマットされたデータは更新される。この様な手段により、テストされるべき使用済みセルの規定は動作するものと確立された自由なセルにコピーされる。結果として、該自由なセルは、今は遮断された元の使用済みセルとして今や動作する。該遮断の前に、両セルは並列に作動するがこれが起こることを許される時間は無視可能である。もし該元のセル又はその接続の何等かが欠陥性であるなら、それらの機能を該自由なセルにコピーする動作は、該自由なセルが動作すると知られているので、該欠陥を修正する。該全サイクルは必要な様に繰り返される。
【０２６４】
図４０は、利用可能な予め設計されたカードが無い場合又は新インターフエースが必要な時に、本発明のハードウエアデバイスを帯びる回路カードの初めての生産用の過程を抄録する流れ図である。一旦インターフエースが準備完了すると、最終カードは多くの異なる応用品用に使用出来るので、応用品の規定（それは該カード開発過程の１部でもある）は該設計には稀にしか影響しない。
【０２６５】
かくして応用品の規定３００は該応用品を一般的用語で規定し、それにシミュレーション３０１が続く。該シミュレーション過程は図３３を参照して上記で詳細に説明された様に作られる応用品シミュレーションを要求する。該シミュレーションの目的は該アイデアが実行可能であることを確認し該デバイスを走らせ続けるためのコードを発生させることである。例えば、もし該デバイスが通信リンク上で音声を圧縮するよう設計されねばならないなら、”Ｃ＋＋”の様な高級言語を使用するか又は上記説明の様にこの目的で供給されるツールを使用して該圧縮アルゴリズムが書かれる。もし望むなら、これらのツールは上記で参照した”マットラブ（Matlab）”の様な既知のツールと組み合わせて使用されることが出来る。一旦該シミュレーションが充たされると、該デバイス用コードは準備完了である。該シミュレーションは”１対１”シミュレーションであり、それは該関数をシミュレートする能力の他に、該コードが該デバイス上で走る精確な仕方をそれがシミュレートすることを意味している。従って、もし該応用品が該シミュレーター上で作動するなら、該応用品は該基板上で作動するであろうし、もし該応用品が該シミュレーター上で作動しないなら、それは該基板上で作動しないであろう。
【０２６６】
該”１対１”のシミュレーション能力は該シミュレーションを行う該コンピユータ内に該デバイスの精確な仮想コピーを創生することを可能にする該デバイスアーキテクチャーに由来する（derives）。従って、該デバイスのコピーの入力を該コンピユータに入れる”人工の（sunthetic）”又は記録された”仮想の（virtual）”信号は該デバイスにより作られるであろう精確な”仮想の”出力を発生することになろう。これらの”仮想”信号は操作され、テストされることが可能である。
【０２６７】
該シミュレーターは次のモードで動作することが出来る：
・コンパイルドモード、すなわちそこでは該セルにより実施されるべき望まれるアルゴリズムを実行するために高級言語で書かれたサブルーチンを利用して該シミュレーションが実行される。
【０２６８】
・リアルモード、すなわちそこでは該セル内に記憶されるべきデータは該シミュレーションを走らせる前に計算され、そして該シミュレーション中、該セルにより実施されるべき望まれるアルゴリズムを実行するよう使われる。この様な手段により、該シミュレーションをもたらすに必要な演算コード数は大いに減らされ該シミュレーターは遙かに速く走る。
【０２６９】
・上記の組合せ。テスト中である該応用品の部分は高級言語のコンパイルドモードで走る、一方該残りはリアルモードにある。このモードはデバッグ用に最大速度を達成するよう意図されている。
【０２７０】
・エミュレーションモード：該シミュレーターはハードウエアデバイスにより加速される。該エミュレーションモードでは、該シミュレーターは該デバイス内のセルを使用し、ロジックアナライザーに似た能力を有する。換言すれば、該エミュレーションはどのロジックパターン又はシーケンス上でも停止出来て、該デバイス内の各接続部の結果をスクリーン上に示すことが出来る。それは単一ステップでも同様に作動出来る。これはデバッガーを使用してソフトウエアプログラム中を追跡する能力に似たハードウエアである。
【０２７１】
・”インサーキットエミュレーション（In Circuit Emulation）”｛アイシーイー（ICE）｝モードを使用して、該エミュレーションは入力信号をサンプルする能力と組み合わされる。該カードはそのインサーキットデバイス（in-circuit device）の処理能力を使用して実時間で作動する。
【０２７２】
該シミュレーターは”１対１”シミュレーションを実施するので、大抵のテストとデバッギングとは該シミュレーション段階で行われる。テストとデバッグ３０２は数時間又は数日続く真の長持続時間信号（real long duration signals）をテストするよう要求され、従って該アイシーイーモードが使われることを必要とする。これは上記で説明された様に、該シミュレーション速度に影響を与える。
【０２７３】
デバッギングは次の様に実行されるが、すなわち、該デバイスの１部は、それの原因が解析され、修正されるべき誤りを典型的に示す、何等かのロジック状態を取り込むようプログラムされる。同時に、該デバイスのもう１つの部分は入力の連続サンプルを環状バッフアー（circular buffer）内へ取り込む。誤りが検出されると、該エミュレーションは停止し、該誤りを引き起こした該記録された入力信号が、該問題を解くために該シミュレーター内に注入され得る。少なくとも１つは該環状バッフアーのカウンター用にそしてもう１つは該バッフアー用に、該入力信号を取り込むために１つより多いセルが必要になる。
【０２７４】
もう１つのデバッギング方法に依ると、該コンピユータ上の該仮想デバイスが該デバイス内にロードされたどんな望まれる状態をも発生させ、該テストはこの点から進むようエミュレーション又はアイシーイーモード内で続けられる。
【０２７５】
一旦テストとデバッグとが完了すると、アールアンドデーから生産へ（R&D to Production）の段階３０３が始まる。予め設計され、多目的の、デバイスベースのカードを使用する応用品発生過程の場合、該アールアンドデーから生産の過程は、該シミュレーター３０１により発生される該デバイスコードをアールアンドデーから生産部門へ発送するより多くは要求しない。
【０２７６】
カード生産３０４が続く。予め設計され、多目的の、デバイスベースのカードを使用した応用品発生過程の場合、カード生産は該応用品が仕上がる前にスタート出来る独立過程である。これは図４１で略図的に示されるが、それは図４１で該カード開発過程３０５が無いことを除けば他では図４０と同一である。カード生産３０４に続いて、検証過程３０６が行われる。カード検証は電子機器を用いて該カードをテストする過程である。該新しいデバイスアーキテクチャーは応用コード無しに該応用品がその上で走り得ることを保証するよう該カードがテストされ得る様なものである。従って、該アールアンドデーグループの作動の終了と該生産部門での該カード検証過程の開始／終了の間にリンクは無い。
【０２７７】
クライアントへのカード発送３０７は該応用品が準備完了する前に行われ得る。該応用品が準備完了する、より後の段階で、適合するようフオーマットされたデータの形式のデバイスコードが該デバイスへのダウンロード用に該顧客へ送られることが可能である。
【０２７８】
該発送段階の後で見出された何等かの誤りは上記説明のシミュレーション及びデバッギングツールを使用して固定され得て、新しいコードがその顧客に発送されることが可能である。増強（Enhancements）又はバグ（Bugs）段階３０８は該開発過程の１部として図４０で示され、開発者が、発送後に変更が行われることを斟酌して、どの段階で該製品が発送されるべきかを決定出来ることを示している。
【０２７９】
本発明の開発過程は、現在使われているより普通な”滝型（waterfall）”過程と相対する、いわゆる”螺旋型（spiral）”開発過程モデルである。該螺旋型モデルとその利点は例えばウエブサイトhttp://www.cstp.umkc.edu/personal/cjweber/spiral/htmlに説明されている。
【０２８０】
図４０に示される該”カード開発”段階３０５は図１を参照して上記で説明されたそれと同様である。唯の差は実施されるべき応用が無く、それでその実施はより容易であり、よい短い時間しか取らないことである。従って唯該インターフエース、そして該デバイス（複数を含む）のピンアウト（pin-out）が設計される必要があるだけである。大抵の場合、該カード創生過程は次の理由のために市販までの時間に影響しない筈である：
・インターフエース、デバイス数（通常は１つ）そして該ピンアウトが設計される必要がある（非標準型であるなら）のみなので、実施は簡単である。換言すれば、
・一旦カードが準備完了し、インターフエースが固定されると、既製品（ready-made）のカード（又は既製品のカード設計）がその新応用品に使用出来る。
【０２８１】
それにも拘わらず、新応用品が非標準のユニークなインターフエースを用いて作られることになるなら、そのカード製造過程はその実施過程より長くなり、市販までの時間（time-to-market）の節約は減じられることが予想されるべきである。従って、既知インターフエース用の、汎用で、多目的で、在庫式で、既製品型ののカードが種々の応用品に準備完了であるよう用意する努力が行われるべきである。
【０２８２】
本発明はかくして莫大な数の種々の応用品の実施を受け入れそして容易な拡張と混じり合ったアーキテクチャーを許容する、高度に柔軟で再プログラム可能なデバイスアーキテクチャーを提供する。設計の信頼性と簡便性は”１対１”シミュレーションにより保証されるが、そこでは該応用品を実施するために該デバイスにダウンロードされると同一なデータが応用品のコンピユータシミュレーション中使用される。シミュレーションとエミュレーションとは良く知られた高級プログラム言語を使う普通のパーソナルコンピユータを使用して実行され、高価な、専用ワークステーションのニーヅを解消する。ユニークなデバイスアーキテクチャーの結果として、該ハードウエア設計と応用は説明された様に並列動作用に部分分割され得て、モジュール型作業ブループ的方策にかなっている。この様な柔軟性は予め製作される構造とフオーマットされるデータのライブラリーへのアクセスの能力により高められる。
【０２８３】
種々の実施例が説明されたが、本発明の特に有利な特徴はその柔軟性とその使用法にあることは当業者には明らかであろう。かくして、該例は単に図解的であり、本発明の範囲は請求項の範囲内に入る全ての変型を含むよう意図されている。
【０２８４】
同様に、本発明は特にデジタル電子回路の設計に関連して説明されたが、本発明が、本発明の基本的部品、該セル及びプログラム可能なマトリックスが、適当な技術を使用して実施される、生物学的ハードウエア、空気圧的ハードウエア（pneumatic hardware）、機械的ハードウエアを創るためにも応用を見出してよいことは当業者には評価されるであろう。従って、請求項では、用語”ハードウエア”は、電子的ハードウエア、生物学的ハードウエア、空気圧的ハードウエア、機械的ハードウエアそしてデータ記憶能力を有するセルが実施され得てそしてプログラム可能なマトリックスが実施され得るどんな他のハードウエアも含むよう使用される。
【０２８５】
又、本発明のシステムは適当にプログラムされたコンピユータであってもよいことは理解されよう。同様に、本発明は本発明の方法を実行するためにコンピユータにより読み出し可能なコンピユータプログラムを考慮する（contemplates）。本発明は更に、本発明の方法を実行するために機械により実行可能な命令のプログラムを明白に具体化する機械読み出し可能なメモリーを考慮する。
【０２８６】
続く方法請求項では、請求項過程を呼称するため使用されるアルフアベット文字は利便性のためだけに提供され、過程を行う何等特定の順序を意味しない。
【０２８７】
本発明を理解し、それが実際に如何に実行されるかを見るために、ここでは好ましい実施例が、限定しない単なる例により、付属する図面を参照して説明される。
【図面の簡単な説明】
【図１】  電子的カード上でのアイシーチップのハードウエア実施品用の従来の過程を示す流れ図である。
【図２】  本発明によるデバイスアーキテクチャーを略図的に示す。
【図３及び４】  図２に示すデバイス内で使用するためのセルの代わりのコンフイギュレーションを略図的に示す。
【図５】  補助回路を有する、図４に示すセルの詳細を略図的に示す。
【図６】  より大きいアドレスバスを有するよう２つのセルから形成されたセルを創るに要する接続を略図的に示す。
【図７】  Ｄセル出力をＡセル入力に接続するマトリックスを略図的に示す。
【図８】  図８の回路で使用されてもよい飽和マトリックスを略図的示す。
【図９】  図７の回路で使用されてもよい不飽和マトリックスを略図的に示す。
【図１０】  図３で示す１つのセルを使用するカウンターを略図的示す。
【図１１】  図３で示す１つのセルを使用するアップダウンカウンターを略図的に示す。
【図１２】  図３で示す３つの相互接続されたセルを使用するシフトレジスターを略図的に示す。
【図１３】  図１２で示す該シフトレジスター内で使用される１つのセルのシフトレジスターの可能なトポロジーを略図的に示す。
【図１４】  図５に示す種類の２つのセルが如何にトライステートに接続されるかを略図的に示す。
【図１５】  図５に示す種類の２つのセルを使用する第１の実施例のラムサーバーを略図的に示す。
【図１６】  図１５に示すラムサーバー用の起こり得るタイミング線図を示す。
【図１７】  図５に示す種類の２つのセルを使用する第２の実施例へのラムサーバーを略図的示す。
【図１８】  図１７に示すラムサーバー用の起こり得るタイミング線図を示す。
【図１９】  時分割応用モードで動作するシフトレジスターを略図的に示す。
【図２０】  図１９で示すシフトレジスター用のタイミング動作を示すタイミング線図である。
【図２１】  時分割応用環境で動作するラムサーバー組合せを略図的に示す。
【図２２】  より大きいデータバスを有するよう２つのセルから形成されたセルを創るに要する接続を略図的に示す。
【図２３】  セルにデータをロードする間要する接続を略図的に示す。
【図２４】  ８ビットコマンドを行うようコンフイギュアされたデバイスを略図的に示す。
【図２５】  ラッチを有しないスタンドアロンのラムセルを示す。
【図２６】  図２５に示すセルを使用する非最適化加算器を略図的示す。
【図２７】  図２５に示すセルを使用した改良された加算器を略図的示す。
【図２８】  図２５に示す該ラムから独立に使用されてもよいラッチを略図的示す。
【図２９】  クロックイネーブル信号が有効クロック速度を調整するため使用されるデバイスを略図的に示す。
【図３０】  プログラム可能なマトリックスの種々の状態間を高速にスイッチすることを可能にする多数エムシーエムアーキテクチャーを略図的示す。
【図３１】  本発明のデバイスを実施するための構造データを引き出す第１の方法により使用される主要動作過程を示す流れ図である。
【図３２】  構造データを抽出し記憶するようライブラリーを使用するための第２の方法により使用される主要な動作過程を示す流れ図である。
【図３３】  本発明のデバイスを実施するために構造データを引き出す第３の方法により使用される主要な動作過程を示す流れ図である。
【図３４】  本発明のデバイスを実施する方法により使用される主要な動作過程を示す流れ図である。
【図３５】  本発明のデバイスを使用する応用品をシミュレートする方法により使用される主要な動作過程を示す流れ図である。
【図３６】  本発明のデバイスを使用する応用品をエミュレートする方法により使用される主要な動作過程を示す流れ図である。
【図３７】  エイシック設計を容易にするため本発明のデバイスを使用する方法により使用される主要な動作過程を示す流れ図である。
【図３８】  該デバイスを使用する応用品を実現する間該デバイス内の欠陥セルの使用を避ける方法に使用される主要な動作過程を示す流れ図である。
【図３９】  該デバイスを使用する応用品の実時間動作の間該デバイス内の欠陥セルの欠陥修正のための方法により使用される主要な動作過程を示す流れ図である。
【図４０及び４１】  電子的カード上でのアイシーチップのハードウエアでの実現用の本発明の過程を示す流れ図である。
【図１】
0004642304.tif 000023
【図２】
0004642304.tif 000024
【図３】
0004642304.tif 000025
【図４】
0004642304.tif 000026
【図５】
0004642304.tif 000027
【図６】
0004642304.tif 000028
【図７】
0004642304.tif 000029
【図８】
0004642304.tif 000030
【図９】
0004642304.tif 000031
【図１０】
0004642304.tif 000032
【図１１】
0004642304.tif 000033
【図１２】
0004642304.tif 000034
【図１３】
0004642304.tif 000035
【図１４】
0004642304.tif 000036
【図１５】
0004642304.tif 000037
【図１６】
0004642304.tif 000038
【図１７】
0004642304.tif 000039
【図１８】
0004642304.tif 000040
【図１９】
0004642304.tif 000041
【図２０】
0004642304.tif 000042
【図２１】
0004642304.tif 000043
【図２２】
0004642304.tif 000044
【図２３】
0004642304.tif 000045
【図２４】
0004642304.tif 000046
【図２５】
0004642304.tif 000047
【図２６】
0004642304.tif 000048
【図２７】
0004642304.tif 000049
【図２８】
0004642304.tif 000050
【図２９】
0004642304.tif 000051
【図３０】
0004642304.tif 000052
【図３１】
0004642304.tif 000053
【図３２】
0004642304.tif 000054
【図３３】
0004642304.tif 000055
【図３４】
0004642304.tif 000056
【図３５】
0004642304.tif 000057
【図３６】
0004642304.tif 000058
【図３７】
0004642304.tif 000059
【図３８】
0004642304.tif 000060
【図３９】
0004642304.tif 000061
【図４０】
0004642304.tif 000062
【図４１】
0004642304.tif 000063