(57)【要約】【課題】大規模なＬＳＩを短期間で設計および製造できるアーキテクチャを提供する。【解決手段】下位配線層２２により、デバッグ機能を備えたＦＢ１１をアレイ状に配置すると共に、それらにマクロ機能ユニットＦＵを割り付け、上位配線層２１によりＦＵをカスタマイズすることにより集積回路モジュール１０を製造する。ＦＵとしては、多入力真理値表、積和演算器などの大規模な論理機能を搭載可能なので、論理設計を取り扱う基本単位が大きくなり、論理設計期間をいっそう短縮することができる。また、ＦＢ１１をアドレス指定してモジュールの内部状態をモニター出力するデバッグ機能を備えた集積回路装置を提供できる。【選択図】　　　　図２
2004129188.tif 000002
【特許請求の範囲】
【請求項１】
多層配線により所望の機能が実現される集積回路モジュールであって、
カスタマイズ要素を含んだ上部配線層が積層される下部配線層であって、前記カスタマイズ要素により最終回路が決定される基本回路要素の少なくとも一部を実現する下部配線層を有し、
前記基本回路要素により、前記カスタマイズ要素により内部論理が決定される少なくとも１種類のマクロ機能ユニットであって、多入力論理をサポートするマクロ機能ユニットが複数、前記カスタマイズ要素により接続可能なように配置される集積回路モジュール。
【請求項２】
請求項１において、前記マクロ機能ユニットは、多入力真理値テーブルであり、前記カスタマイズ要素により、真理値テーブルがセットされる集積回路モジュール。
【請求項３】
請求項１において、前記マクロ機能ユニットは、デコーダユニットと、そのデコーダユニットのデコード結果により入力値のいずれかを選択して出力するセレクタユニットとを備えており、前記カスタマイズ要素により、前記セレクタユニットの入力側が配線される集積回路モジュール。
【請求項４】
請求項３において、前記カスタマイズ要素により、前記セレクタユニットの入力側がセットされる集積回路モジュール。
【請求項５】
請求項３において、前記カスタマイズ要素により、前記セレクタの入力側が、他の前記マクロ機能ユニットの出力、または、当該マクロ機能ユニットの内部ユニットの出力に接続される集積回路モジュール。
【請求項６】
請求項３において、前記デコーダユニットは、入出力ビット数の異なる複数種類のサブデコーダユニットを備えており、前記カスタマイズ要素により、前記サブデコーダユニット間が配線される集積回路モジュール。
【請求項７】
請求項３において、前記デコーダユニットは、２つの１入力２出力サブデコーダユニットと、２つの２入力４出力サブデコーダユニットと、２つの６入力８出力サブデコーダユニットとを備えて、前記２つの６入力８出力サブデコーダユニットの出力は前記セレクタユニットの選択信号となるように前記基本回路要素により接続されており、前記カスタマイズ要素により、前記サブデコーダユニット間が配線される集積回路モジュール。
【請求項８】
請求項７において、前記マクロ機能ユニットは、４つの１６入力１出力のセレクタユニットを備えている集積回路モジュール。
【請求項９】
請求項７において、前記マクロ機能ユニットは、１６入力１出力のセレクタユニットを備えており、この１６入力１出力のセレクタユニットは、少なくとも８入力１出力に分割可能な複数のサブセレクタユニットを含み、これらサブセレクタユニットが前記カスタマイズ要素により連結される集積回路モジュール。
【請求項１０】
請求項９において、前記サブセレクタユニットの少なくとも１つは、選択信号を前記６入力８出力サブデコーダユニット以外の他のサブデコーダユニットまたは外部からの入力信号に切り替える手段を備えている集積回路モジュール。
【請求項１１】
請求項１において、前記マクロ機能ユニットは、デコーダユニットと、そのデコーダユニットのデコード結果の一方の極性の信号の論理和を演算可能な演算ユニットとを備えており、前記カスタマイズ要素により、前記デコーダユニットと演算ユニットが接続される集積回路モジュール。
【請求項１２】
請求項１において、前記マクロ機能ユニットは、複数の演算回路を含んだ演算器であり、前記カスタマイズ要素により、前記複数の演算回路の一部が選択される集積回路モジュール。
【請求項１３】
請求項１において、前記マクロ機能ユニットは、複数の演算要素を含んだ演算器であり、前記カスタマイズ要素により、前記複数の演算要素のデータパスが決定される集積回路モジュール。
【請求項１４】
請求項１において、前記マクロ機能ユニットは、ＲＡＭであり、入出力データのビットサイズおよびワードサイズが選択される集積回路モジュール。
【請求項１５】
請求項１４において、前記マクロ機能ユニットは、多ビットの入力および／または出力用の入出力端子を備えたＲＡＭ本体と、前記入出力端子に対する入力数および／または出力数を減数可能なセレクタ回路部とを備えている集積回路モジュール。
【請求項１６】
請求項１５において、前記セレクタ回路部は、選択数の異なる複数種類のセレクタを具備しており、前記ＲＡＭ本体の入出力端子と前記セレクタ回路部が前記カスタマイズ要素により接続される集積回路モジュール。
【請求項１７】
請求項１５において、前記ＲＡＭ本体は、少なくともビット方向に分割可能な複数のＲＡＭセルと、入力または出力の対象となった前記ＲＡＭセルのみを活性化する手段とを具備している集積回路モジュール。
【請求項１８】
請求項１７において、前記活性化する手段は、前記ＲＡＭセルの内部の各ビットセルとデータ線との間の各接続を前記ＲＡＭセルの単位でオンオフ可能なスイッチである集積回路モジュール。
【請求項１９】
請求項１において、前記基本回路要素により、少なくとも１つの前記マクロ機能ユニットを割り当て可能な回路ブロックであって、前記マクロ機能ユニットの出力を第１のビット数単位でラッチ可能な出力インターフェイスを備えた回路ブロックが複数、アドレス情報で選択可能なように配置される集積回路モジュール。
【請求項２０】
請求項１９において、前記出力インターフェイスは、前記マクロ機能ユニットの出力をラッチする回路と、そのラッチする回路と並列にスルー出力する回路とを備えている集積回路モジュール。
【請求項２１】
請求項２０において、前記スルー出力する回路はバッファ用の回路素子を備えている集積回路モジュール。
【請求項２２】
請求項２１において、前記バッファ用の回路素子は、当該出力インターフェイスが対応していない他のマクロ機能ユニットまたは他の回路ブロックからの信号を中継可能である集積回路モジュール。
【請求項２３】
請求項１において、前記上部配線層を有する集積回路モジュール。
【請求項２４】
請求項２３に記載の集積回路モジュールと、前記集積回路モジュールを制御可能な基本プロセッサとを有する集積回路装置。
【請求項２５】
請求項２４において、前記集積回路モジュールは、前記基本回路要素により、前記マクロ機能ユニットを割り付け可能な回路ブロックであって、前記マクロ機能ユニットの出力を第１のビット数単位でラッチ可能な出力インターフェイスを備えた回路ブロックが複数、アドレス情報で選択可能なように配置され、
前記基本プロセッサは、各々の前記回路ブロックを指定するアドレス情報を出力し、前記集積回路モジュールから各々の前記回路ブロックの出力をモニター可能とする集積回路装置。
【請求項２６】
請求項２５において、モニター用に出力された前記回路ブロックの出力を比較用データと比較する比較ユニットを有する集積回路装置。
【請求項２７】
請求項２６において、前記比較ユニットは、モニター用に出力された前記回路ブロックの出力をマスクして前記比較用データと比較する機能を備えている集積回路装置。
【請求項２８】
請求項２６において、前記比較用データを外部機器より設定可能なデバッグユニットを有する集積回路装置。
【請求項２９】
多層配線により所望の機能が実現される集積回路モジュールであって、
カスタマイズ要素を含んだ上部配線層が積層される下部配線層であって、前記カスタマイズ要素により最終回路が決定される基本回路要素の少なくとも一部を実現する下部配線層を有し、
前記基本回路要素により、前記カスタマイズ要素により内部論理が決定される機能ユニットを割り付け可能な回路ブロックであって、前記機能ユニットの出力を第１のビット数単位でラッチ可能な出力インターフェイスを備えた回路ブロックが複数、アドレス情報で選択可能なように配置される集積回路モジュール。
【請求項３０】
請求項２９において、前記上部配線層を有する集積回路モジュール。
【請求項３１】
請求項３０に記載の集積回路モジュールと、各々の前記回路ブロックを指定するアドレス情報を出力し、前記集積回路モジュールの前記回路ブロックの出力をモニター可能とする基本プロセッサとを有する集積回路装置。
【請求項３２】
請求項３１において、モニター用に出力された前記回路ブロックの出力を比較用データと比較する比較ユニットを有する集積回路装置。
【請求項３３】
請求項３２において、前記比較用データを外部機器より設定可能なデバッグユニットを有する集積回路装置。
【請求項３４】
カスタマイズ要素により内部論理が決定される機能ユニットを割り付け可能な回路ブロックであって、前記機能ユニットの出力を第１のビット数単位でラッチ可能な出力インターフェイスを備えた回路ブロックが複数、アドレス情報で選択可能なように配置された集積回路モジュール。
【請求項３５】
請求項３４に記載の集積回路モジュールと、各々の前記回路ブロックを指定するアドレス情報を出力し、前記集積回路モジュールから各々の前記回路ブロックの出力をモニター可能とする基本プロセッサとを有する集積回路装置。
【請求項３６】
請求項３５において、モニター用に出力された前記回路ブロックの出力を比較用データと比較する比較ユニットを有する集積回路装置。
【請求項３７】
請求項３６において、前記比較用データを外部機器より設定可能なデバッグユニットを有する集積回路装置。
【請求項３８】
カスタマイズ要素により内部論理が決定される機能ユニットを割り付け可能な回路ブロックであって、前記機能ユニットの出力を第１のビット数単位でラッチ可能な出力インターフェイスを備えた回路ブロックが複数、アドレス情報で選択可能なように配置された集積回路モジュールのデバッグ方法であって、
各々の前記回路ブロックを指定するアドレス情報を出力し、前記集積回路モジュールから各々の前記回路ブロックの出力をモニター可能とする工程を有するデバッグ方法。
【請求項３９】
請求項３８において、モニター用に出力された前記回路ブロックの出力を比較用データと比較する工程をさらに有するデバッグ方法。
【請求項４０】
多層配線により所望の機能が実現される集積回路モジュールの設計方法であって、
カスタマイズ要素を含んだ上部配線層が積層される下部配線層であって、前記カスタマイズ要素により最終回路が決定される基本回路要素の少なくとも一部を実現する下部配線層を設計する第１の工程を有し、
この第１の工程では、前記基本回路要素により、前記カスタマイズ要素により内部論理が決定される少なくとも１種類のマクロ機能ユニットであって、多入力論理をサポートするマクロ機能ユニットが複数、前記カスタマイズ要素により接続可能なように配置されるようにする集積回路モジュールの設計方法。
【請求項４１】
多層配線により所望の機能が実現される集積回路モジュールの製造方法であって、
カスタマイズ要素を含んだ上部配線層が積層される下部配線層であって、前記カスタマイズ要素により最終回路が決定される基本回路要素の少なくとも一部を実現する下部配線層を製造する第１の工程を有し、
この第１の工程では、前記基本回路要素により、前記カスタマイズ要素により内部論理が決定される少なくとも１種類のマクロ機能ユニットであって、多入力論理をサポートするマクロ機能ユニットが複数、前記カスタマイズ要素により接続可能なように配置されるようにする集積回路モジュールの製造方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、集積回路装置に関するものである。
【０００２】
【従来の技術】
ユーザ固有の論理を実現するＬＳＩあるいはシステムＬＳＩとして設計・製造されたものはカスタムＬＳＩあるいはＡＳＩＣと称されている。システムＬＳＩには、ロジックだけではなく、メモリなど様々な機能の集積化が要求される。短期間に、このようなカスタムＬＳＩを実現する手法としてスタンダードセル方式が知られている。スタンダードセル方式では、よく使われる基本的な回路ブロック（マクロセル）をあらかじめ設計して、コンピュータ内のデータベースとして蓄えておき、ユーザの要求に応じてこれらの回路ブロックを自動配置することによりシステムＬＳＩを短期間で設計しようというものである。
【０００３】
【特許文献１】
特開平９−１９９５９８号公報
【０００４】
【発明が解決しようとする課題】
一方、ユニフォームなハードウェアを提供して、プログラミングにより回路を選択できるようにしたフィールドプログラマブルゲートアレイ（ＦＰＧＡ）が知られている。このＦＰＧＡは、トランジスタレベルで接続可能な配線をあらかじめ用意し、多数のパストランジスタ・スイッチを介して埋め込んで、フィールド、すなわちユーザサイドでカスタマイズ可能（配線経路選択可能）とし、システムＬＳＩを短期間で提供可能にしようとするものである。
【０００５】
半導体技術の進展に伴い、チップ上に搭載可能なゲート数は増大する一方である。ユーザ固有の論理ＬＳＩを具現するＡＳＩＣやＦＰＧＡについても、ゲート数の増大に伴い、種々の問題や課題に直面している。
【０００６】
まず第１に、チップに搭載可能なデート数が飛躍的に増加した結果、配線層数も５層または６層が標準となり、微細化マスクの製造費が極めて大きな負担となりつつあることである。すなわち、１つのチップに膨大なゲート数のシステムを搭載可能な環境にはなっているが、そのようなカスタムチップは簡単に発注できる価格ではなく、最先端の技術の恩恵を簡単に受けられる状況にない。
【０００７】
また、発注できたとしても製造期間は配線マスク層の数に比例するのでますます長期化の傾向にあり、タイムツーマーケットを困難なものとしている。この問題は、サンプル製造価格と製造期間に関する問題であり、システムＬＳＩを大規模化した結果、配線層数を増加させねばチップとして完結しない状況から発生することである。特に、スタンダードセル方式ＬＳＩの場合、多層化のために再合成したり、試作をシリコン基板の状態から行なわないといけないために顕著な問題である。
【０００８】
第２の課題として、配線微細化に伴うタイミング問題がある。配線幅と高さを縮小させ微細化させるため、単位長当たりの抵抗値は増加の一方でありＲＣによる配線遅延が処理の高速化の障壁となっている。その結果、タイミング設計が困難で、タイミングの解決のために費やされる時間が問題となりつつある。さらに、タイミング設計では、クロストーク等の信号カップリングに関連する見かけ上の容量増加現象問題も解決しなくてはならない。また、遅延だけではなく、配線微細化によるＩＲドロップは誤動作の原因となり、これも深刻な問題の１つとなりつつある。配線微細化がもたらす、これらの問題はすべてのＬＳＩに共通であるが、特に、多数のパストランジスタ・スイッチを介して膨大な配線をあらかじめ埋め込んでおく必要があるＦＰＧＡに顕著な問題である。
【０００９】
第３の課題として、第２の課題にも関連するが、その他の要素も含めてシステムＬＳＩの設計に時間がかかりすぎるという事実がある。ＬＳＩの設計は大きく分けて論理設計と、レイアウト設計に分けられるが、どちらもシリコンテクノロジーの進展に設計技術が追いついていない。レイアウトに関しては大規模化してデータ量が増えていることに加え、上記のタイミング問題が大きな原因となっている。すなわち、外部要因による困難さが解決できていない。
【００１０】
一方、論理設計に関しては、設計規模が飛躍的に増大しているにも関わらず、設計の抽象度がなかなか上がらない、という設計方式に内在する課題があると言える。抽象度を上げるには、論理設計の基本要素をＡＮＤ／ＯＲ／ＦＦのみでなく、ＡＬＵ／Ｍｕｌｔｉｐｌｙ／積和演算といった演算機能までを基本要素に取り込んでゆく必要がある。
【００１１】
第４の課題として、これはカスタムＬＳＩに顕著な課題であるが、ＬＳＩは急速に大規模化しているのに対してデバッグ機能が提供されていない、という事実がある。プロセッサには一般的にデバッグ機能が標準として提供されているのに対し、ＡＳＩＣでは内部信号モニターの機能が極めて乏しい。これは、内部信号をモニターするためにプローブ機能を導入しようとすれば、膨大な量のスイッチを組み込む必要があり、モニターする位置も含めて設計しようとすると、膨大な時間が費やされることになるからである。しかしながら、内部信号モニターもない状態では、数百万ゲートのＬＳＩといっても内部はブラックボックスになってしまっており、ＬＳＩ完成後のシステムデバッグにかかる時間が予測できないものとなっている。また、システムＬＳＩが商品として市場に出てから障害解析を行なう必要が発生すると、それに膨大な時間がかかってしまうという問題も生ずる。ＦＰＧＡにおいても、内部信号をモニタするためにはあらかじめモニタ用の論理を組んでユーザ論理として構築しなければならい。このため、ユーザがプログラムを設計する負担が大きく実際的でないという問題がある。
【００１２】
このように、現状では、ＡＳＩＣ、システムＬＳＩ、ＦＰＧＡといった集積回路装置を、さらに高集積化し、高性能化することができる製造技術の進展はあるが、それに対応した開発および設計技術は提供されていない。そこで、本発明においては、上記の第１から第４の課題を解決することが可能な新規なＡＳＩＣ構造（アーキテクチャ）を提示することを目的としている。そして、処理速度が速く、信頼性も高いシステムＬＳＩを短期間に開発および設計することができる集積回路装置を提供することを目的としている。
【００１３】
【課題を解決するための手段】
本発明においては、多層配線により所望の機能が実現される集積回路モジュールを提供する。この集積回路モジュールは、カスタマイズ要素を含んだ上部配線層が積層される下部配線層であって、カスタマイズ要素により最終回路が決定される基本回路要素の少なくとも一部を実現する下部配線層を有する。さらに、基本回路要素により、カスタマイズ要素により内部論理が決定される少なくとも１種類のマクロ機能ユニットであって、多入力論理をサポートするマクロ機能ユニットが複数、カスタマイズ要素により接続可能なように配置される。この集積回路モジュールを開発または設計する場合は、下部配線層を開発または設計する第１の工程と、それに重ねて上部配線層を開発または設計する第２の工程を有し、少なくとも配線を設計する段階が２段階に分かれる。また、集積回路モジュールを半導体集積回路装置の一部として製造する場合も、下部配線層を製造する第１の工程と、それに重ねて上部配線層を製造する第２の工程を有し、これらの工程が実際には連続して実行されるにしても２つの工程に分かれる。したがって、本発明の集積回路モジュールは、基本回路要素の部分をカスタマイズ要素の部分とは切り離して先行して開発、設計さらには経済的であれば製造することが可能であり、カスタマイズされたシステムＬＳＩ（カスタムＬＳＩ）の開発・設計期間、さらには、製造期間も短縮できる。
【００１４】
さらに、本発明の集積回路モジュールにおいては、カスタマイズ要素が上部配線層で実現され、下部配線層により主に実現される基本回路要素により、多入力論理をサポートするマクロ機能ユニットが複数、それらカスタマイズ要素により接続可能なように配置される。なお、このことは、基本回路要素の一部が上部配線層で実現されることを除くものではない。したがって、本発明の集積回路モジュールは、配線またはメタルコンフィグラブルであり、コンフィグラブルとされる基本要素は、多入力論理をサポートするマクロ機能ユニットである。このマクロ機能ユニットは、以降では、ファンクションユニットまたはファンクショナルユニットあるいはＦＵと称される。基本回路要素によりマクロ機能ユニットをサポートすることにより、ＦＰＧＡのようにトランジスタレベルの結合をカスタマイズする装置と異なり、設計の抽象度は上がり、さらに、基本回路要素として先行して用意できる回路の範囲、論理規模あるいは回路速度が大幅に向上する。したがって、システムを設計する期間は短くなり、また、カスタマイズ要素も削減されるので、設計期間もＦＰＧＡやスタンダードセル方式より短縮される。
【００１５】
さらに、カスタマイズ要素を配線で実現するので、ユーザ論理に関する配線は専用に設計を最適化することができる。したがって、配線設計も含めて、遅延時間やクロストークなどのタイミング問題の回避を図ることが可能となり、この点でも設計時間を大幅に短縮することが可能となる。ＦＰＧＡにおいてはすべての配線が共通部分としてあらかじめ埋め込まれており、クロックに関してはあらかじめタイミング問題を生じない様に工夫を加えることができても、ユーザ配線は予め埋め込まれた配線を用いるので、クロストーク等のタイミング問題が生じた場合には回避が極めて困難である。これに対し、本発明においては、ユーザ論理は上位層の配線を用いて自由に最適な配線部位を選べるのでタイミング問題が生じたとしても極めて回避しやすい。
【００１６】
すなわち、本発明の集積回路モジュール、その設計および製造方法では、あらかじめ埋め込まれたＦＵの基本機能には多数の論理機能を具現化できるメタル・コンフィグラブル（コンフィギャラブル）な機能を持たせておき、そこまでを共通した部分として基本回路要素で実現する。その後、ＦＵが有する多機能の中から詳細仕様を、カスタマイズ要素として、以下で説明する０／１方式、データフロー方式、ビット長指定方式のいずれかのメタル・コンフィギャラブルな方法を提供し、ユーザがカスタマイズ要素を選択あるいは決定することによりユーザ論理を実現させることができるという新規なＡＳＩＣあるいはシステムＬＳＩのアーキテクチャである。
【００１７】
さらに、基本回路要素では、ある程度の回路規模を備えた多入力論理をサポートする１つまたは複数種類のマクロ機能ユニット（ＦＵ）を複数、カスタマイズ要素により接続可能なように配置する。したがって、基本回路要素では、ある程度の規模の同一の回路要素がマトリクスあるいはアレイ状に配置されることを意味し、それらＦＵからの出力をモニターすることにより、意味のある内部データをモニタリングできる。したがって、本発明においては、それらのＦＵを、ＦＵの出力をモニタリングする機能を備えた構成に割り付けることにより、基本回路要素により内部データのモニター機能もサポートするようにしている。
【００１８】
すなわち、本発明の集積回路モジュールにおいては、基本回路要素により、少なくとも１つのマクロ機能ユニットを割り当て可能な回路ブロックであって、マクロ機能ユニットの出力を第１のビット数単位でラッチ可能な出力インターフェイスを備えた回路ブロックが複数、アドレス情報で選択可能なように配置される。したがって、上記のＦＵが論理的な機能境界を有しているのに対し、回路ブロック（以降ではファンクションブロック（ＦＢ）と称する）は物理的な境界を指定しているものである。回路ブロックは、以降ではファンクションブロック（ＦＢ）と称する。
【００１９】
したがって、カスタマイズ要素を含んだ上位配線層が形成された集積回路モジュールを、それを制御可能な基本プロセッサと共に搭載した集積回路装置においては、基本プロセッサから各々の回路ブロックを指定するアドレス情報を出力することにより、集積回路モジュールから各々の回路ブロックの出力、すなわち第１のビット数単位（たとえば８ビット）の値を、バスを介して取得することができる。したがって、アドレスを指定するだけで、集積回路モジュールの内部データをモニターすることが可能となる。このため、本発明により、デバッグ機能が予め標準として組み込まれた集積回路モジュールを提供することができる。したがって、ユーザはデバッグのために余分な設計時間や配線を費やす必要はない。そして、アドレス指定するだけで、ＦＵが稼動中の内部データを簡単に出力できるデバッグ機能を得ることが可能となる。
【００２０】
アドレス指定することによりモニター用に読み出された回路ブロックの出力を比較用データと比較する比較ユニットを設け、比較用データと一致したときは一時的に停止することができる。そして、プロセスが実行されたタイミングを検証したり、他のテスト回路、たとえば、バウンダリースキャンや内部レジスタスキャンなどによりさらに詳しいデバッグ用のデータを取得したりすることが可能となる。
【００２１】
ＦＢとＦＵとは一対一に対応するとは限らないので、比較ユニットは、モニター用に出力された回路ブロックの出力をマスクして比較用データと比較する機能を備えていることが望ましい。また、比較用データを外部機器、すなわち、デバッグソフトが動くコンピュータなどにより設定可能なデバッグユニットを設けることにより、デバッグソフトとの連携を図ることも可能となる。
【００２２】
本発明において、ＦＵとして提供するマクロ機能ユニットの１つは、多入力真理値テーブルであり、カスタマイズ要素により、真理値テーブルがセットされる。たとえば、最小では４ビット入力１ビット出力の真理値表であり、標準で４ビット入力４ビット出力の真理値表であり、最大では８ビット入力８ビット出力の真理値表である。もちろん、複数のＦＵにより、さらに大きな真理値テーブルを構成することも可能である。そして、４入力４出力のＦＵでは、各出力に対する１６ビットの真理値表をカスタマイズ要素によりオンオフあるいは１／０の信号を与えることにより、４種類（４出力分）定義できる。本明細書では、ＦＵとして用意されている機能をカスタマイズ要素の配線（上位配線）により選択（オンオフあるいは１／０）し、各ＦＵの機能を確定あるいは定義するメタル・コンフィギャラブルな方式を０／１方式メタル・コンフィギャラブルと称する。すなわち、０／１方式メタル・コンフィギャラブルでは、カスタマイズ要素により、電源線Ｖｓｓ／Ｖｃｃより生成された０信号または１信号が各ＦＵへ供給され、各ＦＵの機能が決定される。
【００２３】
真理値表の具体的な回路を実現するＦＵの１つ形態は、デコーダユニットと、そのデコーダユニットのデコード結果により入力値のいずれかを選択して出力するセレクタユニットとを備えており、カスタマイズ要素により、セレクタユニットの入力側が配線されるものである。カスタマイズ要素により、セレクタユニットの入力側が０／１にセットされれば真理値表として機能する。また、セレクタユニットを本来の多入力１出力のセレクタとして機能させることも可能である。そして、カスタマイズ要素により、セレクタの入力側を、他のマクロ機能ユニットの出力、または、当該マクロ機能ユニットの内部ユニットの出力に接続することにより、１つまたは複数のＦＵにより数多くのファンクションを実現できる。
【００２４】
デコーダユニットが、入出力ビット数の異なる複数種類のサブデコーダユニットを備えており、カスタマイズ要素により、サブデコーダユニット間が配線されるようにすれば、１つの多入力多出力のデコーダにより複数の機能を実現できる。たとえば、デコーダユニットが、２つの１入力２出力サブデコーダユニットと、２つの２入力４出力サブデコーダユニットと、２つの６入力８出力サブデコーダユニットとを備えて、２つの６入力８出力サブデコーダユニットの出力はセレクタユニットの選択信号となるように基本回路要素により接続されており、カスタマイズ要素により、サブデコーダユニット間が配線されるマクロ機能ユニットを提供できる。このＦＵにおいては、２つの２入力４出力サブデコーダユニットと２つの６入力８出力サブデコーダユニットを組み合わせて４入力１６出力のデコーダユニットを構成でき、４つのセレクタユニットと組み合わせることにより４入力４出力のファンクションユニット、たとえば、真理値表を構成できる。
【００２５】
一方、１つの１入力２出力サブデコーダユニット、１つの２入力４出力サブデコーダユニットおよび６入力８出力のサブデコーダユニットを組み合わせることにより３入力８出力デコーダを構成できる。したがって、上記のデコーダユニットは、２つの３入力８出力デコーダ機能を備えたユニットとして機能させることができる。また、２入力４出力デコーダとして機能させるなど、カスタマイズ要素により多用なロジックを実現できる。
【００２６】
１６入力１出力のセレクタユニットは、少なくとも８入力１出力に分割可能な複数のサブセレクタユニットを含み、これらのサブセレクタユニットがカスタマイズ要素により連結されるようにすることができる。デコーダユニットの構成を考慮してセレクタユニットの構成をカスタマイズ要素により選択することにより、無用なスイッチを駆動させずに済み、動作スピードの改善と、消費電力の低減を図ることができる。また、サブセレクタユニットの少なくとも１つに、選択信号を６入力８出力のサブデコーダユニット以外の他のサブデコーダユニットまたは外部からの入力信号に切り替える手段を設けることにより、セレクタユニットで実現可能な機能も増大する。したがって、１つまたは複数のＦＵにより、多ビット加算器、多ビットのコンパレータなどの演算回路を構成することができる。
【００２７】
真理値表の具体的な回路を実現するＦＵの異なる形態は、デコーダユニットと、そのデコーダユニットのデコード結果の一方の極性の信号の論理和を演算可能な演算ユニットとを備えているものである。カスタマイズ要素により、デコーダユニットと演算ユニットを接続することにより、真理値表の出力を決定できる。さらに、論理和を演算する演算ユニットは、デコーダユニットの出力の半分の数の入力値を演算できるものであれば良い。たとえば、４入力１６出力のデコーダユニットに対しては、８入力のＯＲゲート回路を用意すれば良い。デコーダユニットから出力される予定の「１」または「０」のいずれか一方の数の少ない方の出力をＯＲゲート回路にカスタマイズ要素により接続し、必要であればＯＲゲート回路の出力を反転することで真理値表の出力を決定できる。
【００２８】
また、ＦＵとして提供する他のマクロ機能ユニットの１として、複数の演算回路を含んだ演算器を提供することができ、カスタマイズ要素により、複数の演算回路の一部が選択される。演算器の大規模なものは、入力が４ビット２入力＋８ビット（＋ｃａｒｒｙ（キャリー））１入力で出力が８ビットの積和演算器、もしくは入力が８ビット２入力＋１６ビット（＋ｃａｒｒｙ）１入力で出力が１６ビットの積和演算器である。これは積和演算器の他、含まれている演算回路をセレクタなどにより選択可能にすることにより、乗算器、加算器、減算器、シフター等としても使用できる機能を有する。したがって、このケースでは、ＦＵは、０／１方式メタル・コンフィギャラブルな演算器である。
【００２９】
また、ＦＵの積和演算器に含まれている演算要素をカスタマイズ要素、すなわち、上位配線により接続してデータパスを形成することによっても所望の機能を有するＦＵを実現することも可能である。このように、ＦＵの詳細機能を決定するデータフロー信号経路を一部オープンとしておき、カスタマイズ要素にてユーザがデータフローの経路を決定することにより、ＦＵの詳細機能を決定するメタル・コンフィギャラブルな方式を本明細書においては、データフロー方式メタル・コンフィギャラブルと称する。セレクタによる遅延がタイミング設計などの点から望ましくない場合には、データフローの信号結線定義を一部オープンとしておき、カスタマイズ要素にてユーザロジックにより結線するデータフロー方式メタル・コンフィギャラブルが望ましい。
【００３０】
さらに、ＦＵとして提供されるマクロ機能ユニットの異なる一例は、ＲＡＭ（ＳＲＡＭ）である。ＳＲＡＭのビット・ワードをカスタマイズ要素により選択することが可能であり、本明細書においては、ビット長指定方式メタル・コンフィギャラブルと称する。このＦＵでは、カスタマイズ要素により、ＲＡＭに対して入力および／または出力する入出力データのビットサイズおよびワードサイズが選択できる。ビット長が可変なＲＡＭとして機能するＦＵの１つの形態は、多ビットの入力および／または出力用の入出力端子を備えたＲＡＭ本体と、入出力端子に対する入力数および／または出力数を減数可能なセレクタ回路部とを備えているものである。
【００３１】
セレクタ回路部は、選択数が同じ複数のセレクタを予めＲＡＭ本体の入出力端子と配線しておき、カスタマイズ要素によりセレクタの設定を変更するようにすることができる。また、セレクタ回路部としては、必要なビット長に対応して選択数の異なる複数種類のセレクタを用意しておき、ＲＡＭ本体の入出力端子とセレクタ回路部とをカスタマイズ要素により接続しても良い。多入力のセレクタの数を削減できるので、ゲート数を減らし、作動速度を向上できる。たとえば、ビット長を２ビットから１６ビットの間で可変とするのであれば、セレクタ回路部に、４つの２入力セレクタと、２つの４入力セレクタと、２つの８入力セレクタを用意しておくことで対応できる。
【００３２】
また、ＲＡＭ本体は、少なくともビット方向に分割可能な複数のＲＡＭセルで構成し、入力または出力の対象となったＲＡＭセルのみを活性化する手段を設けておくことが望ましい。ＲＡＭ本体にアクセスするビット長を可変としたときに、アクセス対象となっていないＲＡＭセルの消費電力を削減できる。活性化する手段は、アクセス対象となっているＲＡＭセルに対するクロックの供給をオンオフするような手段であっても良い。また、ＲＡＭセルの内部の各ビットセルと読み出しを行うデータ線（ビット線）との間の各接続をＲＡＭセルの単位でオンオフ可能なスイッチを設け、活性化する手段として用いることも可能である。
【００３３】
本発明に含まれるＦＵは多機能な論理マクロであれば良く、上記の３つのタイプに限定されるものではないが、上記の３つのタイプのＦＵはシステムＬＳＩを実現する上でメジャーなものであり、多少の冗長な部分があるとしても、システムＬＳＩが必要とするほとんどの機能を実現することができる。
【００３４】
また、いずれのＦＵも多論理入力端子を備えているが、ユーザがすべてを使用するとは限らない。その場合に、未使用の入力端子が論理に不都合を与えないように、オープン信号または固定入力信号とすることが可能であり、この処理もカスタマイズ要素として上位配線層により処理できる。すなわち、上位配線層を経由するＶｓｓ／Ｖｃｃから生成された１信号もしくは０信号を供給して冗長なビット入力の値を固定させる。たとえば、４入力の論理機能に対し、３入力しか使用しない場合には、残る１入力をＡＮＤであれば１、ＯＲであれば０にスタックすることができる。このようにカスタマイズ要素を含む上位配線層は、ＦＵの機能を決定する他にも、ＦＵの入力の冗長ビットを固定するために利用することができる。
【００３５】
これらのＦＵを割り付ける回路ブロック（ＦＢ）の一例は、出力インターフェイスとして８ビット分のレジスタを備えた、あるいは８ビット分のレジスタを境界とするブロックである。たとえば、４ビット入出力真理値表ＦＵであれば、２つのＦＵが１つのＦＢにマッピングされる。８ビット入出力真理値表ＦＵであれば、１つのＦＵが１つのＦＢにマッピングされる。また、キャリーも含めて９ビット出力の積和演算器ＦＵであれば、２つのＦＢをもって１つのＦＵがマッピングされる。１６ビットのデュアルポートＲＡＭであれば、４つのＦＢをもって１つのＦＵがマッピングされる。マッピングされるＦＵがＳＲＡＭであれば、出力はレジスタを経由したものだけであっても良い。しかしながら、ＦＵが真理値テーブルであったり、演算器の場合は、タイミング設計上、出力がスルーであることが望ましい場合がある。したがって、ＦＢの出力インターフェイスは、ＦＵの出力をラッチする回路、すなわちレジスタと、そのラッチする回路と並列にスルー出力する回路とを備えていることが望ましい。さらに、出力に接続される配線量によっては容量が大きくなるので、複数のスルー出力する回路を備えていることが望ましい。
【００３６】
さらに、スルー出力する回路はバッファ用の回路素子を備えていることが望ましい。出力インターフェイスに接続される配線が長くなっても、ＦＵを構成するゲートの駆動能力を高くすることなく対処できる。さらに、バッファ用の回路素子は、当該出力インターフェイスが対応していない他のマクロ機能ユニットまたは他の回路ブロックからの信号を中継可能であることが望ましい。長い配線が原因となる遅延を短縮する必要が生じた場合に、個々の出力インターフェイスのバッファの駆動能力を変更するのではなく、カスタマイズ要素により他の出力インターフェイスのバッファを中継バッファとして使用する。このようなユーザ配線により、各々のゲートの負荷容量を減少し、遅延の総和を減少できる。この点でも、出力インターフェイスには余分にバッファ用の回路素子を設けておくことが望ましい。本発明において１つの好ましい出力インターフェイスは、１つのＦＢあたり、レジスタ８個分とバッファ１６個分を備えている。
【００３７】
本明細書においては、マトリックス状に形成された複数のＦＢの上に複数のＦＵがマッピングされた行列をファンクションユニット＆ブロックアレイ（ＦＵ＆ＢＡ）と称する。例えば、デバッグ目的の基本プロセッサが、コードＲＡＭとデータＲＡＭを分離して保有するハーバード・アーキテクチャの１６ビットプロセッサであった場合、１６ビット分、即ち２５６×２５６のアドレス空間を利用できる。これらの内、データＲＡＭとしても使用するものを除いた、２５６×２２５がＦＵ＆ＢＡのデバッグのために利用可能であるとすると、５７，６００個のＦＢを有する本発明の集積回路モジュールがオンラインでデバッグ可能となる。
【００３８】
【発明の実施の形態】
以下に図面を参照してさらに本発明について説明する。図１に本発明に係る集積回路装置（システムＬＳＩ）の概略構成を示してある。本例のシステムＬＳＩ１は、８ビット単位に分離され、各々がモニター可能な回路ブロック（ファンクションブロック、ＦＢ）をアレイ状に配置した構成のファンクションブロックアレイ（ＦＢＡ）と、デバッグ機能を備えたプロセッサからアクセス可能としたプロセッサとを備えた新規のＡＳＩＣである。さらに、ＦＢＡには、マクロ機能ユニット（ファンクションユニット、ＦＵ）がマッピングされ、ＦＵがアレイ状に配置された集積回路モジュール（以降ではＦＵ＆ＢＡ）１０が構成され、さらに、システムＬＳＩ１は、ＦＵ＆ＢＡ１０を制御する１６ビットプロセッサ本体（基本プロセッサ、以降ではこれをＰＵと称する）２とを備えている。このＬＳＩ１のデバッグ機能を強化するために、ＬＳＩ１は、さらに、ＦＵ＆ＢＡ１０の各ＦＢからのモニター出力と比較対象のデータとを対比し、その結果により各ＦＢの状態を制御するためにＦＵ＆ＢＡ１０とＰＵ２の間に存在する比較及び制御回路（比較ユニット、以降ではＶＵ）３と、ＦＵ＆ＢＡ１０をデータＲＡＭとしてアクセスするＰＵ２とＦＵ＆ＢＡ１０の間に存在するＲＡＭインターフェイス回路４と、ＬＳＩ１の外部のホストＰＣ９にて動作するデバッガソフト８とＰＵ２をインターフェイスするデバッグユニット（以降ではＤＵ）５を備えている。そして、これらのユニットに対してクロック信号φｃが供給されている。
【００３９】
図２に、アドレスデータにより内部のＦＢを指定できるアドレッシング方式のＦＵ＆ＢＡ１０の内部構成を示してある。ＦＵ＆ＢＡ１０は、マトリクス状あるいはアレイ状に配置された複数のＦＢ１１と、モニタリング用のアドレスデータφｍａをデコードする行選択デコード回路１２および列選択デコード回路１３と、モニタリング用のデータφｍｄを出力するデータバス１７とを備えている。また、各ＦＢ１１には、ＶＵ３からの状態制御信号φｓｃが入力される。したがって、各ＦＢ１１には、行選択信号線１４、列選択信号線１５、状態制御信号線１６、クロック信号φｃが入力され、モニタリング用のデータφｍｄがデータバス１７を介して出力される。本例のＦＵ＆ＢＡ１０は、アドレスデータφｍａが１６ビット、モニタリング用の出力データφｍｄが１６ビットに設計されている。したがって、アドレスデータφｍａは行選択デコード回路１２と列選択デコード回路１３とにより８ビットにてデコードされるが、列に関しては２２５本の信号線１５までとして使用している。ＦＢ１１のひとつのゲート数は、以下で説明する４入力４出力真理値表が２つ割り付けられたケース（出力用のレジスタ８個を含む）の場合で少なくとも１００ゲート程度と見なして良い。したがって、１つのＦＵ＆ＢＡ１０として、２５６×２２５個、すなわち５７，６００個分のＦＢ１１が実装可能であり、これにより約６００万ゲートを搭載した集積回路モジュールを提供することが可能となる。この程度のゲート数が搭載できれば、システムＬＳＩとして充分な大きさの集積回路装置を提供できる。
【００４０】
したがって、図１に示したＰＵ２は、１６ビットのプロセッサで、大規模回路のＦＵ＆ＢＡ１０のデバッグは十分にカバーできる。ＰＵ２からＦＵ＆ＢＡ１０をアクセスするためのＲＡＭインターフェイス回路４は、ＰＵ２から出力されるＲＡＭアドレスデータを保持してＦＵ＆ＢＡ１０にモニター用のアドレスデータφｍａとして出力するアドレスレジスタ４ａと、モニター用の出力データφｍｄを保持するデータレジスタ４ｄと、ＰＵ２からのＲＡＭ制御信号φｒｃに対応する機能をと備えている。したがって、ＲＡＭインターフェイス回路４により、ＰＵ２からはデータＲＡＭとしてＦＵ＆ＢＡ１０が見え、プロセッサ側から見ればＣプログラムからアクセスする方式で各ＦＢ１１のアドレスが指定でき、その結果、ＦＢ１１のレジスタに対し読出・書込が可能になっている。
【００４１】
比較ユニットであるＶＵ３は、ＦＵ＆ＢＡ１０のモニター出力φｍｄを格納するモニタレジスタ３１に加え、ＰＵ２よりアクセス可能な２つのインターフェイスレジスタである比較データレジスタ３２と、マスクデータレジスタ３３とを備えている。ＦＢ１１の出力が格納されるモニタレジスタ３１をＰＵ２よりアクセス可能にしてもよい。モニタレジスタ３１にはアドレスφｍａにより指定されたＦＢ１１の出力φｍｄの内容（最大８ビットデータ）が格納され、比較器３４により、比較データレジスタ３２のデータと比較される。比較データレジスタ３２には外部デバッガソフト８からＤＵ５およびＰＵ２を経由して一致比較を取るためのデータが格納される。マスクデータレジスタ３３は比較させたくないビット（ドントケア・ビット）を指定するレジスタであり、やはり外部デバッガソフト８からＤＵ５およびＰＵ２を経由して設定される。比較器３４はこれら３つのレジスタを入力し、マスクデータレジスタ３３のデータにて指定されたドント・ケアビットを比較対照としない比較を比較データレジスタ３２のデータとモニタデータレジスタ３１のデータφｍｄの間で行う。
【００４２】
ＶＵ３の比較処理は比較命令がＰＵ２よりＶＵ３に発効されるのがＶＵＰＵ型のプロセッサでは通常であるが、制御レジスタ３５に比較モードを設定して比較動作を開始させる方法もある。本例のＶＵ３は、比較データレジスタ３２とモニタレジスタ３１とのデータが一致した場合は、比較器３４からＰＵ２の側に一致が取れたことが通知され、それと同時にＦＵ＆ＢＡ１０の動作を停止すべくＶＵ３の制御回路３９が状態制御信号φｓｃをＦＵ＆ＢＡ１０に供給する。これらのさらに詳しい動作については、以下で説明することにする。
【００４３】
これらのデバッグ操作は、ＦＵ＆ＢＡ１０とＬＳＩ外部のデバッガソフト８の間にプロセッサであるＰＵ２を介在させることにより可能となるが、デバッグユニット（ＤＵ）５は、デバッガソフト８とＰＵ２との間のデータの仲介をインターフェイスするハードウェアである。このため、ＤＵ５はインターフェイスレジスタ５ｒを備えており、ＰＵ２の汎用レジスタ２ｇに対してデータを転送できるようになっている。また、ＬＳＩ１は、ＰＵ２、ＶＵ３およびＤＵ５をデバッグモードで使用するためのデバッグ制御信号φｄの入力端子７が設けられている。
【００４４】
図３に、ＦＵ＆ＢＡ１０の断面構成の一例を示してある。この図は、集積回路モジュールのＰチャネル・トランジスタ１９ｐが作りこまれた基板１９の断面をメタル配線層２０まで含めて図示している。本図からわかるように、本例のＦＵ＆ＢＡ１０は、多層配線２０により所望の機能が実現される集積回路モジュールである。多層配線２０のうち、上位配線層２１がカスタマイズ要素を含んだ配線層であり、下位配線層２２がカスタマイズ要素により最終回路が決定される基本回路要素の少なくとも一部を実現する配線層である。そして、下位配線層２２により主に実現される基本回路要素により、図２に示したＦＵ＆ＢＡ１０のカスタマイズされる前の状態が形成される。
【００４５】
後述するＦＵも含めて多機能な基本回路を構成するには、メタル１層２０ａおよび２層２０ｂを使用するのが通常であり、本例では、下位配線層（下層配線層あるいは共通メタル層）２２とは１層目のメタル層２０ａと２層目のメタル層２０ｂを言う。しかしながら、回路要素によって、１層および２層では配線数が不十分な場合は、さらに上位の層、たとえば、３層目のメタル層２０ｃあるいはそれ以上の配線層までが下層配線層２２として使用されるケースもあり、そのような場合も本発明に含まれる。もちろん、配線微細化により、配線数が十分になれば、１層目のメタル層２０ａだけで下層配線層２２を構成することも可能である。
【００４６】
したがって、本例においては、ユーザ配線層あるいはカスタマイズ配線層となるのは、３層目のメタル層２０ｃより上位の配線層２１であり、多くのケースでは２層分または３層分が使用される。もちろん、上位配線層２１の数は１層でも良く、４層以上であっても良い。本発明に係る集積回路モジュールでは、下位配線層２２は、基本回路要素を生成するのに、必要ではあるが、十分である必要はない。すなわち、基本回路要素の大半あるいは一部を下位配線層２２で形成し、残りの基本回路要素の一部をカスタマイズ要素と共に上位配線層２１により実現することが可能であり、本発明を実現あるいは実施する上において、そのような構成を採用しても不都合はないからである。しかしながら、本発明の説明を簡単にするために、以降においては、下位配線層２２を基本回路要素を実現するための配線層とし、上位配線層２１をカスタマイズ要素を実現するための配線層として説明する。
【００４７】
したがって、本例のＦＵ＆ＢＡ１０においては、下位配線層２２により、カスタマイズ前のＦＵ＆ＢＡ（プレカスタマイズドＦＵ＆ＢＡ）２９、すなわち、カスタマイズ要素（上位配線層）２１により内部論理が決定される機能ユニットＦＵを割り付け可能な回路ブロックであって、ＦＵの出力を第１のビット数単位（本例では８ビット）でラッチ可能な出力インターフェイスを備えたＦＢ１１が複数、アドレス情報φｍａで選択可能なように配置された集積回路モジュールが形成される。また、同時に、下位配線層２２により、上位配線層２１により内部論理が決定される少なくとも１種類のマクロ機能ユニットＦＵであって、多入力論理をサポートするマクロ機能ユニットＦＵが複数、上位配線層２１により接続可能なように配置された、カスタマイズ前のＦＵ＆ＢＡ２９が形成される。
【００４８】
カスタマイズ前のＦＵ＆ＢＡ２９は、ＦＢ１１がアレイ状に配置されたＦＢＡ２８と、そのＦＢＡ２８にＦＵが割り付けられたＦＵ＆ＢＡ２９という状態に分けて考えることも可能であり、その状態を配線層により実現することも可能である。たとえば、下位の配線層２２のうち、下層の配線層２２ａによりＦＢ１１としての基本的な構成を実現可能とし、それらをアレイ状に配置したＦＢＡ２８を形成することができる。そして、下位配線２２のうち、上層の配線層２２ｂにより、ＦＢ１１に対してＦＵとしての機能を割り付けることが可能であり、複数種類のＦＵを１つのＦＵ＆ＢＡ２９に形成する場合に、そのプラットフォームとなるユニフォームな構成のＦＢＡ２８を先行して製造したり、設計することが可能となる。
【００４９】
なお、以降においては、下位配線層２２の上に上位配線層２１が形成された、カスタマイズされた状態の集積回路モジュールを原則としてＦＵ＆ＢＡ１０と称するが、カスタマイズ前と後と厳密に説明する必要がない場合は、カスタマイズされる前、すなわち、下位配線層２２までが形成された状態も含めてＦＵ＆ＢＡ１０と称することがある。また、カスタマイズ要素である上位配線層２１は、ＦＢ１１の機能を決定するだけではなく、ＦＢ１１の入力と出力とを接続する配線の内、カスタマイズが必要な部分も形成する。ＦＢ１１の入出力をすべてカスタマイズ要素として配線することも可能である。
【００５０】
図４に、ＦＢ１１にＦＵとして機能を割り付けた様子を示してある。ＦＢ１１は最大８ビットのレジスタを持つ出力インターフェイス４０を境界とする箱であり、その８ビットの出力インターフェイス４０が外部モニタリングの単位となる。また、図４（ｂ）に示すように、出力インターフェイス４０には、ひとつのレジスタ４１と並列に、２つのスルーバッファ４２ａおよび４２ｂが配備されている。図４（ａ）は、ＦＢ１１に、４ビット入力４ビット出力の真理値表５１が機能ユニット（ＦＵ）５０としてアサインされている。４ビット入力４ビット出力の真理値表５１は出力が４ビットであるので、２つのＦＵ５０が１つのＦＢ１１にアサインされる。
【００５１】
図４（ｃ）は、ＦＢ１１に、乗算器５２をＦＵ５０としてアサインした状態を示してある。乗算器５２は８ビット入力８ビット出力であるので、１つのＦＵ５０が１つのＦＢ１１に割り付けられる。また、図５は、ＦＢ１１に、積和演算器５３をＦＵ５０としてアサインした状態を示してある。積和演算器５３は、１７ビット入力９ビット出力なので、１つのＦＵ５０が２つのＦＢ１１にアサインされる。したがって、一方のＦＢ１１の残り７ビット４９は空き状態となり、基本的には使用されない。
【００５２】
図６は、ＦＢ１１に２ポートのＳＲＡＭ５４をＦＵ５０として割り付けた状態を示してある。このＳＲＡＭ５４はａポートおよびｂポート各々１６ビット出力が最大である。したがって、１つのＦＵ５０が４つのＦＢ１１にアサインされることになる。
【００５３】
図７に、ＦＢ１１に、４ビット入力４ビット出力の真理値表５１を機能ユニット（ＦＵ）５０としてアサインした状態を、ＦＵ５０を中心に示してある。すなわち、図７は、ＦＢ１１の半分の構成を示しており、４ビットの入力ｉｎ０〜ｉｎ３に対して４ビットの出力ｏｕｔ０〜ｏｕｔ３を出力するＦＵ５０の機能回路（真理値表）５１と、各々の出力ｏｕｔ０〜ｏｕｔ３を出力インターフェイス４０のレジスタ４１およびスルーバッファ４２を介して出力する構成を示してある。入出力のビット数は異なるが、４ビット入力４ビット出力の真理値表５１と同様に、８ビット入力８ビット出力などの多入力多出力真理値表、乗算器５２、積和演算器５３およびＳＲＡＭ５４の多入力のマクロ機能をＦＢ１１にアサインできる。
【００５４】
下位配線層２２によりＦＵ５０としての機能が割り付けられたＦＢ１１には、上位配線層２１が積層されて、ＦＵ５０としての最終的な機能が決定される。ＦＵ５０の機能を決定する代表的な上位配線層２１は、電源Ｖｓｓ（低電位）／Ｖｃｃ（高電位）より生成された０信号と１信号を供給する信号線２５ａおよび２５ｂである。上位配線層２１は、電源線を含めて配線しても良く、あるいは、基本回路要素２２として配線された電源線から、各々のＦＵ５０の機能を決定する回路要素までの接続配線だけ上位配線２１として配線しても良い。０信号と１信号とを各々供給する信号線２５ａおよび２５ｂが上位カスタマイズ層２１を経由して接続され、真理値表５１、乗算器５２、積和演算器５３、ＳＡＲＭ５４の機能を決定する方式を、本明細書においては、０／１方式メタル・コンフィギャラブルと称する。その他として、乗算器５２あるいは積和演算器５３に適用される所の、信号経路設定領域が上位カスタマイズ層２１に設置されているデータフロー方式メタル・コンフィギャラブルと、ＳＲＡＭ５４に適用されるビット長指定方式メタル・コンフィギャラブルとを例として挙げることができるが、それらについては追って説明する。
【００５５】
各ＦＢ１１の出力インターフェイス４０は、１つのレジスタ４１につき、バッファ４２が２個用意されている。ＳＲＡＭ５４がＦＵ５０の場合にはレジスタ出力４１が選択でき、真理値表５１、乗算器５２および積和演算器５３がＦＵ５０の場合にはスルー出力４２またはレジスタ出力４１が選択できる。スルーバッファ４２を用意することにより、出力インターフェイス４０に接続される配線が長くなっても、ＦＵ５０を構成するゲートの駆動能力を高くすることなく対処できる。また、多数のバッファ４２を用意することで、多ファンアウト・ドライブをする場合において２分岐あるいは多分岐させて出力させることができる。もちろん、出力インターフェイス４０の構成はこれに限定されるものではなく、レジスタ出力をバッファを通じて２分岐させて多ファンアウト対応させることも可能であるし、バッファ４２を１つだけ用意しても良く、３つ以上用意しても良い。
【００５６】
出力インターフェイス４０のレジスタ４１およびバッファ４２に対するＦＵ５０からの書き込み制御は、出力インターフェイス４０に対応するＦＵ５０から行うことが可能であり、それと同様に、他のＦＵ５０から行うことも可能である。したがって、出力インターフェイス４０のレジスタ出力４１を利用して、自他のＦＵで論理を組むことも可能である。また、スルーバッファ４２は、出力インターフェイス４０が対応していない他のＦＵ５０または他の回路ブロックＦＢ１１からの信号を中継することができる。長い配線が原因となる遅延を短縮する必要が生じた場合に、個々の出力インターフェイス４０のバッファ４２の駆動能力を変更しようとすると、そのような能力の異なるバッファ４２を基本回路要素として予め用意することは不可能になる。これに対し、カスタマイズ要素により他の出力インターフェイス４０のバッファ４２を中継バッファとして使用することにより、各々の出力インターフェイス４０のスルーバッファの負荷容量を減少することが可能である。また、中継バッファを挿入することにより、遅延の総和を減少できる。この点でも、出力インターフェイス４０に、多数のスルーバッファ４２を設けておくことは有効である。
【００５７】
図８は多入力多出力真理値表のうち４入力４出力の真理値テーブル５１をＦＵ５０として搭載した例を示してある。なお、以降のＦＵ５０の説明においては、上方から下方に向かってデータフローが流れる図により説明する。この真理値テーブル５１は、４ビットの入力ｉｎ０からｉｎ３に与えたれた１６ビットのデータを、１６ビットあるいは１６本の選択信号線（選択線）５５にデコードするデコーダ５６と、出力ｏｕｔ０〜ｏｕｔ３に対応して各々１６個のトライステート論理素子５７が配列された４列の出力回路５８とを備えており、４列の出力回路５８が真理値表５９を構成している。すなわち、本例の真理値テーブル５１の機能を備えたＦＵ５０においては、デコードされた１６本の信号線、選択線５５を行とし、４つの出力回路５８が列となって、１６個のトライステート論理素子５７が４列配列された面（真理値表）５９が構成され、総計１６行×４列（６４個）のトライステート論理素子５７が配列されたＦＵ５０となっている。各選択線５５は各行に相当するトライステート論理素子５７の制御信号入力端子（制御端子）５７ｇに接続されている。各列のトライステート論理素子５７の出力端子５７ｏはひとつのレジスタ４１に接続させるために共有接続されている。
【００５８】
基本回路要素、すなわち、下位配線層２２により形成された状態のトライステート論理素子５７の入力端子５７ｃは未定義オープンとなっており、ユーザ定義にしたがって、カスタマイズ層である上位配線層２１のＶｓｓ／Ｖｃｃから生成された０信号２５ａまたは１信号２５ｂに接続され、デコードされた信号線５５に対する機能が決定される。１６個のトライステート論理素子５７の共通出力（列に相当）はユーザ定義に従ってスルーとしてバッファ４２を通ってＦＵ５０の外部に接続されるか、出力レジスタ４１に接続されるか、その両方かの選択が決定される。出力レジスタ４１に接続される場合には、レジスタ４１のデータ入力、クロックイネーブル入力、セット入力、リセット入力を制御することが可能である。これらレジスタ４１の制御も含め、ＦＵ５０の入出力の内、ＦＵ５０の入力のいずれかが使用されなかった場合、出力レジスタ４１のいずれかが使用されなかった場合、他のＦＵ５０の出力に関連付けられないオープンな論理入力が存在した場合などには、所定の論理が得られるように、上位配線層２１により、０信号または１信号によりカスタマイズされる。
【００５９】
図９に、４入力１レジスタ出力の真理値テーブル５１ａとしての機能をＦＵ５０としてＦＢ１１に割り付けた様子を示してある。本例では、ＦＢ１１の出力インターフェイス４０として、通常のレジスタ４１に加えて、高ドライブ付レジスタ４１ａと、高ドライブ付スルー出力４２ａと、通常出力のスルー出力４２とが用意されている。大規模化が進むＬＳＩにおいては、タイミング設計のために、長距離ドライブ型と近距離ドライブ型に分けて、同一論理とはいえ分離して出力できるようにすることも有効である。また、レジスタ出力４１とスルー出力４２は真理値表５１ａの出力から共通メタル部分、すなわち下位配線層２２で配線しても良く、上位のカスタマイズ配線層２１で配線することも可能である。また、これらを組み合わせても良い。さらに、図８に示した、４ビット入力４ビット出力の真理値テーブル５１を用いて、本図のように１論理出力から４論理出力までをカバーすることも可能であり、基本回路要素として４ビット入力４ビット出力のＦＵ５１を多数用意しておくことにより、カスタマイズ配線層２１により多種多様な論理回路を構成することができる。
【００６０】
図１０は、トライステート論理素子５７のトランジスタ構成の幾つかの例を示してある。図１０（ａ）〜（ｃ）に示したトライステート論理素子５７はいずれも１組のＮチャネルトランジスタ５７ｎとＰチャネルトランジスタ５７ｐとの組み合わせにより構成されている。これらのトランジスタ５７ｎおよび５７ｐのソース側またはドレイン側の一方は、両方のトランジスタ５７ｎおよび５７ｐが実線で示すように下位配線層２２により接続されている。そして、破線で示すトランジスタ５７ｎおよび５７ｐのソース側またはドレイン側の他方は、いずれかのトランジスタ５７ｎまたは５７ｐが上位配線層２１により接続され、選択線５５により選択される論理が決定される。したがって、行に相当するデコードされた結果の選択線５５はインバータ５７ｉにより０と１の両信号が生成されてＰチャネルトランジスタ５７ｐとＮチャネルトランジスタ５７ｎのゲート部に接続され、上位配線層２１により選択された０または１の信号が出力される。これらの例では、選択線信号５５が１の場合に、上位配線層２１により接続された１または０が選択され、出力される。トライステート論理素子５７としては、破線のいずれの側も接続されないケースがあるが、複数のトライステート論理素子５７により構成される出力回路５８としては、いずれかの選択線５５により出力される値が１または０に定まるようになっている。
【００６１】
図１１に示したトライステート論理素子５７は、Ｐチャネルトランジスタ５７ｐとＮチャネルトランジスタ５７ｎのドレインおよびソースは下位配線層２２により接続しておき、それぞれのトランジスタ５７ｐおよび５７ｎのゲートの配線を上位配線層２１によりカスタマイズすることにより、ユーザ論理を実現するものである。図１１の左側のトライステート論理素子５７ｘは、選択線信号５５が１で０が出力されるように結線され、右側のトライステート論理素子５７ｙは、選択線信号５５が１で１が出力されるように結線されている。
【００６２】
図１２には、異なる構成の４入力４出力の真理値テーブル５１ｂをＦＵ５０として搭載した例を示してある。図１２に示した真理値表５１ｂはトライステートの代わりにＡＮＤ／ＯＲ回路６０により出力回路５８を構成している。ここでは、２入力ＡＮＤゲート６０ａを１６個ならべ、２入力の片側に上位配線層２１により０／１固定信号線を供給し、残る一方に４入力の入力信号をデコードした１６ビット信号線（選択線）５５の１本を供給している。そして、２入力ＡＮＤ６０ａの出力が６入力のＯＲ回路６０ｂに入力され、ＯＲ回路６０ｂの出力がＦＵ５１ｂのスルー出力となる。そして、ＡＮＤ／ＯＲ回路６０により構成される出力回路５８を４回路並列に並べたものが４入力４出力の真理値表表現５９となっている。この回路例は、上述したトライステート方式に比べ、ゲートの段数を必要とする分の遅延は増えるが、配線が短くすむメリットがある。
【００６３】
図１３に、図９に示した真理値５９と、１６入力１出力のセレクタ１４０とを構成可能なマルチファンクション回路（ＭＦＣ）１５０をＦＵ５０としてＦＢ１１に搭載した例を示してある。図９に示した１６個のトライステート論理素子５７が配列された出力回路５８は、各々の論理素子５７の入力側５７ｃを上位配線層２１により０または１にセットすることにより真理値表５９として機能する。それと共に、出力回路５８の各々の論理素子５７の入力側５７ｃを上位配線層２１により１６ビットのユーザ入力信号ＵＣ［０：１５］の各々と接続すると、出力回路５８はセレクタユニット１４０として機能する。したがって、論理素子５７であるトライステートバッファの入力をカスタマイズ配線２１に開放することにより、出力回路５８は、１６ビットの真理値表としても構成できるし、デコーダユニット５６を加えて１６ビット入力４選択信号入力のセレクタ１４０としても構成できる。図８に示したような複数の出力回路５８を有するＦＵ５０においては、同じ選択信号を有する多出力のセレクタを構成することが可能であり、また、セレクタ出力と真理値表出力とが混成された回路も構築できる。
【００６４】
図１４に、図８に示した４入力４出力の真理値表とセレクタ回路とを構成可能なマルチファンクション回路（ＭＦＣ）１５１がＦＵ５０としてＦＢ１１に搭載した例を示してある。真理値テーブルとしての利用は上述したので、以下では、その他のファンクションを、このＭＦＣ１５１により構成する例を説明する。本例のＭＦＣ１５１は、４入力１６出力のデコーダユニット１５２と、真理値表５９としても機能するセレクタ回路１４１を備えている。セレクタ回路１４１は、４つの１６入力１出力のセレクタユニット１４０ａ〜１４０ｄを備えており、各々のセレクタユニット１４０からの出力（ＯＵＴ０〜３またはＴｏ［０：３］）がＦＢ１１の出力インターフェイス４０を介して出力される。各々のセレクタユニット１４０ａ〜１４０ｄには、カスタマイズ配線２１により接続可能な入力端子ＵＣ０［１５：０］〜ＵＣ３［１５：０］が用意されている。また、各々のセレクタユニット１４０ａ〜１４０ｄには選択信号としてデコーダユニット１５２からの出力ＳＥＬ［１５：０］が基本回路配線２２により供給されている。本例のデコーダユニット１５２は、４つの入力（ｉｎ０〜３またはＴｉ［０：３］）から１６の出力（ＳＥＬ［０：１５］）を生成する４入力１６出力のデコーダであるが、さらに補助入力としてカスタマイズ配線２１により接続可能な２入力（Ｘｉ［０：１］）を備えている。また、以下で説明するように、他にもカスタマイズ配線２１を接続可能な幾つかの補助端子が用意されている。
【００６５】
図１５にデコーダユニット１５２の基本構成、すなわち、カスタマイズ配線２１によりカスタマイズされる前の状態を示してある。このデコーダユニット１５２は、基本的な４入力１６出力のデコーダとしての機能をサポートする２つの２入力４出力サブデコーダユニット１５３ａおよび１５３ｂと、６入力８出力サブデコーダユニット１５４ａおよび１５４ｂとを備えている。サブデコードユニット１５３ａおよび１５３ｂは、２進の入力信号Ｔｉ［０：１］およびＴｉ［２：３］をデコードして出力信号Ｌｏ０〜Ｌｏ３およびＨｏ０〜Ｈｏ３を出力する機能を備えている。さらに、出力信号Ｌｏ０、Ｌｏ３、Ｈｏ０およびＨｏ３の反転信号を出力する補助出力Ｌｅ０、Ｌｅ１、Ｈｅ０およびＨｅ１を備えている。
【００６６】
６入力８出力サブデコーダユニット１５４ａおよび１５４ｂは、入力信号Ｌｉ０〜Ｌｉ３およびＨｉ０〜Ｈｉ３の入力をＬｉ４、５およびＨｉ４、５により選択してＳＥＬ［０：７］およびＳＥＬ［８：１５」として出力する機能を備えている。さらに、ＳＥＬ［７］とＳＥＬ［１５］の反転信号を出力する補助出力Ｓｅ［０］およびＳｅ［１］を備えている。
【００６７】
さらに、デコーダユニット１５２は、その機能を拡張するための２つの１入力２出力サブデコーダユニット１５５ａおよび１５５ｂとを備えている。これらのサブデコーダユニット１５５ａおよび１５５ｂは、２進の入力信号Ｘｉ［０］およびＸｉ［１］をデコードして出力信号Ｌｏ４、５およびＨｏ４、５として出力する機能を備えている。また、補助入力として入力信号Ｘｉ［０］およびＸｉ［１］とＮＯＲゲートの入力となり、その出力として出力信号Ｌｏ４およびＨｏ４を形成する補助入力Ｘｅ［０］およびＸｅ［１］を備えている。図１５には各々のサブデコードユニットの機能をアンドゲートあるいはオアゲートを用いて構成した例を示してあるが、上述した機能が実現される論理回路であれば良い。
【００６８】
図１６に、デコーダユニット１５２のサブデコーダユニットをカスタマイズ配線２１により接続して４入力１６出力のデコーダとして使用する例を示してある。本図に示すように、カスタマイズ配線２１により、サブデコーダユニット１５３ａの出力Ｌｏ０〜Ｌｏ３をサブデコーダユニット１５４ａおよび１５４ｂの入力Ｌｉ０〜Ｌｉ３およびＨｉ０〜Ｈｉ３に接続し、サブデコーダユニット１５３ｂの出力Ｈｏ０およびＨｏ１をサブデコーダユニット１５４ａの入力をＬｉ４およびＬｉ５に接続し、出力Ｈｏ２およびＨｏ３をサブデコーダユニット１５４ｂの入力をＨｉ４およびＨｉ５に接続する。これにより、図１７に示すように、入力信号Ｔｉ［３：０］がデコードされ、対応するＳＥＬ信号のビットが選択された（高レベル）になったＳＥＬ信号が出力される。
【００６９】
図１８に、デコーダユニット１５２のサブデコーダユニットをカスタマイズ配線２１により接続して３入力８出力の機能を２つ内蔵したデコーダとして使用する例を示してある。本図に示すように、カスタマイズ配線２１により、サブデコーダユニット１５３ａの出力Ｌｏ０〜Ｌｏ３をサブデコーダユニット１５４ａの入力Ｌｉ０〜Ｌｉ３に接続し、サブデコーダユニット１５５ａの出力Ｌｏ４およびＬｏ５をサブデコーダユニット１５４ａの入力Ｌｉ４およびＬｉ５に接続する。これにより１つの３入力８出力のデコーダが構成できる。さらに、サブデコーダユニット１５３ｂ、１５５ｂおよび１５４ｂをカスタマイズ配線２１により同様に接続することにより、もう１つの３入力８出力のデコーダを構成できる。これにより、図１９に示すように、入力信号（Ｘｉ［０］、Ｔｉ［１：０］）（Ｘｉ［１］、Ｔｉ［３：２］）がデコードされ、対応するＳＥＬ信号のビットが選択された（高レベル）になった２組のＳＥＬ信号（ＳＥＬ［０：７］およびＳＥＬ［８：１５］）が出力される。
【００７０】
このように、本例のユーザコンフィグラブルなデコーダユニット１５２は、４入力１６出力のデコーダとしてのみではなく、２つの３入力８出力のデコーダとしても利用できる。このようなユーザコンフィグラブルなデコーダでなければ、２つの３入力８出力のデコーダを実現するために２つのＦＵ５０が消費されるはずであるが、本例の構成を採用することにより２つのデコーダユニットを必要とする機能を１つのＦＵ５０に割り付けることが可能となり、スペース効率が大きく改善される。さらに、このユーザコンフィグラブル１５２においては、カスタマイズ配線２１により、各々のサブデコーダユニット１５３ａ〜１５５ｂを単独でも、他のサブデコーダユニットといかなる組み合わせでも利用することが可能である。さらに、デコーダユニット１５２の一部により、デコーダに限らず、他の多種多様な論理回路を実現することができ、マルチロジック回路としても利用できる。また、図１６および図１８にカスタマイズ配線２１として示した配線のうち、サブデコーダユニット１５３ａおよび１５４ａを接続する配線が常に使用されるのであれば基本回路要素２２として結線しておくことも可能である。
【００７１】
図２０に、カスタマイズ可能なデコーダユニット１５２をロジック回路とし利用した例を示してある。この例では、カスタマイズ配線２１により、サブデコーダユニット１５３ａの補助出力Ｌｅ０と出力Ｌｏ３がサブデコーダユニット１５４ｂの入力Ｈｉ０とサブデコーダユニット１５４ａの入力Ｌｉ３とそれぞれ接続される。また、サブデコーダユニット１５３ｂの補助出力Ｈｅ０がサブデコーダユニット１５４ａの入力Ｌｉ５とサブデコーダユニット１５４ｂの入力Ｈｉ４に接続され、出力Ｈｏ３がサブデコーダユニット１５４ｂの入力Ｈｉ５に接続される。さらに、サブデコーダユニット１５４ａの補助出力Ｓｅ０がサブデコーダユニット１５４ｂの入力Ｈｉ３に接続される。このようはカスタマイズ配線２１により、図２１に示す論理が演算され、ＳＥＬ［８］およびＳＥＬ［１５］に出力される。この論理は後述するように、アダーのキャリーの演算として利用されるものである。
【００７２】
図２２に、ＭＦＣ１５２のセレクタ回路１４１に採用されているユーザコンフィグラブルなセレクタユニット１４０ａの一例を示してある。セレクタ回路１４１に設けられているセレクタユニット１４０ａ〜１４０ｄは同一の構成であり、以下ではセレクタユニット１４０ａとそれに対する入力信号ＵＣ０［１５：０］により構成を説明する。このセレクタユニット１４０は、１６個のトライステート論理素子５７を備えており、それぞれの制御入力５７ｇにＳＥＬ［１５：０］の対応するビット信号が接続され、入力端子５７ｃに入力信号ＵＣ［１５：０］の対応するビット信号が接続されている。そして、ＳＥＬ［１５：０］で選択された入力信号ＵＣ０［１５：０］のいずれかのビット信号が、対応する論理素子５７の出力５７ｏから出力用のインバータ１４２を介してセレクタ出力Ｔｏ［０］として出力される。
【００７３】
１６個の論理素子５７の出力５７ｏは、入力信号ＵＣ０［１５：８］、ＵＣ０［７：６］、ＵＣ０［５：４］およびＵＣ０［３：０］でグループ化されており、カスタマイズ配線２１１〜２１４により結線できるようになっている。したがって、このセレクタユニット１４０ａは、配線２１１〜２１４を全て接続することにより１６入力１出力のセレクタとして機能し、配線２１１また２１２を接続しないことにより８入力１出力のセレクタとして機能する。このため、上述したようにデコーダユニット１５２が３入力８出力のデコーダとして機能する場合は、配線２１１または２１２を接続しないことにより、セレクタとして使用されない他の論理素子が駆動されず、余分な論理素子を駆動することによる消費電力の増加や、セレクタ信号の伝達速度の低下を防止できる。使用されない入力信号ＵＣ０［ｉ］は電源ＶｃｃまたはＶｓｓに接続して固定することが望ましい。
【００７４】
さらに、セレクタユニット１４０ａは、配線２１２および２１３を接続し、配線２１１および２１４を接続しないことにより、４入力１出力のセレクタとして機能する。また、配線２１２を接続し、配線２１１、２１３および２１４を接続しないことにより、２入力１出力のセレクタとして機能する。いずれの状態もデコーダユニット１５２から適当なＳＥＬ信号を供給することによりセレクタとして利用できる。また、ＵＣｏ［７：４］に対応する論理素子５７の制御入力５７ｇには、デコーダユニット１５２から基本回路配線２２により供給されるＳＥＬ信号に代わり、カスタマイズ配線２１５により４ビットの補助選択信号ＸＳＥＬ［３：０］を入力できるようになっている。したがって、カスタマイズ配線２２によりＦＵ５０への入力信号Ｔｉ［３：０］を接続して選択信号として利用できる。また、カスタマイズ配線２２により、サブデコーダユニット１５３ｂの出力Ｈｏ０〜Ｈｏ３を接続することにより、ＳＥＬ信号とは独立してサブデコーダユニット１５３ｂにより動作する４入力１出力のセレクタとして利用することも可能である。
【００７５】
図２３に、ＭＦＣ１５１が割り付けられたＦＵ５０を上位配線層２１によりカスタマイズして２ビット加算器１６０を構成した例を示してある。図２３（ａ）は加算器１６０として機能させるためのカスタマイズ配線２１の概要を示してある。まず、加算の対象となるデータＡ［１：０］およびＢ［１：０］のうち、Ａ［０］、Ｂ［０］、Ａ［１］およびＢ［１］をデコーダ１５２の入力Ｔｉ［０：３］にそれぞれ接続する。また、キャリー入力Ｃｉｎを補助入力Ｘｉ［０］に接続する。デコーダユニット１５２は、カスタマイズ配線２１により図１８に示したように２つの３入力８出力のデコーダとして機能するように配線する。セレクタユニット１４０ａは、カスタマイズ配線２１１を接続せず、配線２１２、２１３および２１４を接続し、ＵＣ０［１５：８］を電源配線Ｖｓｓで固定する。さらに、ＵＣ０［７：０］はカスタマイズ配線２１により［１００１０１１０］にセットする。これにより、セレクタユニット１４０ａの出力Ｔｉ［０］は加算後のデータの下位ビットＳＵＭ［０］を出力する。
【００７６】
セレクタユニット１４０ｂは、カスタマイズ配線２１１、２１３および２１４を接続せず、カスタマイズ配線２１２を接続し、４入力セレクタとして機能させる。さらに、カスタマイズ配線２１５を補助選択信号ＸＳＥＬ［３：０］が選択されるように配線し、デコーダユニット１５２のサブデコーダユニット１５３ａの出力Ｌｏ０〜Ｌｏ３をカスタマイズ配線２１により接続する。そして、ＵＣ１［７：４］に、キャリー入力Ｃｉｎを使い［０、Ｃｉｎ、Ｃｉｎ、１］をカスタマイズ配線２１により入力する。この結果、セレクタユニット１４０ｂの出力Ｔｉ［１］は上位ビットへのキャリー信号Ｃ０となり、カスタマイズ配線２１によりセレクタユニット１４０ｄの入力ＵＣ３に供給される。
【００７７】
セレクタユニット１４０ｃは、カスタマイズ配線２１２を接続せず配線２１１を接続し、ＵＣ０［７：０］を電源配線Ｖｓｓで固定する。さらに、ＵＣ０［１５：８］はカスタマイズ配線２１により［１００１０１１０］にセットする。これにより、セレクタユニット１４０ｂの出力Ｔｉ［２］は加算後のデータの上位ビットＳＵＭ［１］を出力する。
【００７８】
セレクタユニット１４０ｄは、カスタマイズ配線２１１、２１３および２１４を接続せず、カスタマイズ配線２１２を接続し、４入力セレクタとして機能させる。さらに、カスタマイズ配線２１５を補助選択信号ＸＳＥＬ［３：０］が選択されるように配線し、デコーダユニット１５２のサブデコーダユニット１５３ｂの出力Ｈｏ０〜Ｈｏ３をカスタマイズ配線２１により接続する。そして、ＵＣ１［７：４］に、セレクタユニット１４０ｂの出力Ｃ０を使い、［０、Ｃ０、Ｃ０、１］をカスタマイズ配線２１により入力する。この結果、セレクタユニット１４０ｄの出力Ｔｉ［３］はキャリー出力Ｃｏｕｔとなる。
【００７９】
以上の配線により、図２３（ｂ）に等価回路で示すようにＦＵ５０は２ビット加算器１６０として機能する。また、セレクタユニット１４０ｂおよび１４０ｄにおいては図２３（ｃ）に示すように入力信号Ａ［１：０］およびＢ［１：０］の組み合わせによりキャリー信号が選択される。その結果、デコーダユニットに入るキャリー入力により８入力１出力のセレクタによりキャリー出力を作るより高速なキャリー伝播が可能となる。
【００８０】
図２４に、加算器１６０としてカスタマイズされたｎ個のＦＵ５０を並列に並べてカスタマイズ配線２１で接続しｎビットのリップル・キャリー加算器１６１を構成した例を示してある。
【００８１】
図２５（ａ）に、加算器１６０としてカスタマイズされた４つのＦＵ５０と、デコーダユニット１５２がロジック回路として利用された２つのＦＵ５０とをカスタマイズ配線２１により接続し、８ビットコンパレータ１６２を構成した例を示してある。本例においては、加算器１６０の入力信号の一方を反転することで、加算器と同様の減算器として利用する。また、キャリー出力Ｃｏｕｔを出力するためのセレクタユニットの入力は図２５（ｂ）に示すように変更され、ＳＵＭ［３］を出力するセレクタユニットの入力は図２５（ｃ）に示すように変更される。２つのＦＵ５０のデコーダユニット１５２がコンパレータ１６２のロジックを構成するために多出力ゲート回路として使用され、それらのＦＵ５０のセレクタユニットは利用されない。図２５（ａ）に示したロジックは、デコーダユニット１６２にサブデコーダユニット１５３ａ〜１５５ｂを利用することにより構成できる。
【００８２】
図２６（ａ）に、加算器１６０としてカスタマイズされた４つのＦＵ５０と、多出力ゲートとしてデコーダユニット１５２がカスタマイズされた４つのＦＵ５０とをカスタマイズ配線２１により接続し、８ビットのキャリー・ルックアヘッド加算器１６３を構成した例を示してある。この加算器１６３においては、加算器１６０とは別に、高速でキャリー出力Ｃｏｕｔを演算するためのロジックが４つのデコーダユニット１５２により構成されている。各々のデコーダユニット１５２により実現されるロジックは、図２６（ｂ）に示す通りである。
【００８３】
図２７（ａ）に、加算器１６０としてカスタマイズされた４つのＦＵ５０と、多出力ゲートとしてデコーダユニット１５２がカスタマイズされた７つのＦＵ５０とをカスタマイズ配線２１により接続し、８ビットのキャリー・ルックアヘッド加算器１６４を構成した例を示してある。この加算器１６４においては、加算器１６０とは完全に独立して、高速でキャリー出力Ｃｏｕｔを演算するためのロジックが７つのデコーダユニット１５２により構成されている。各々のデコーダユニット１５２ａ、１５２ｂおよび１５２ｃにより実現されるロジックは、図２７（ｂ）に示す通りである。
【００８４】
図２８に、加算器１６０としてカスタマイズされた９つのＦＵ５０をカスタマイズ配線２１により接続し、４ビット（Ａ［３：０］）×４ビット（Ｂ［３：０］）のアレー型乗算器１６５を構成した例を示してある。この乗算器１６５からは８ビットの出力Ｘ［７：０］が得られる。また、この乗算器１６５においては、加算器１６０としてカスタマイズされた９つのＦＵ５０のうち、５つについては、デコーダユニット１５２の一部が１ビットの加算器として利用され、他の一部が多出力ゲートとして利用されている。多出力ゲートのロジックは簡易であり、たとえば、サブデコーダユニット１５４ａまたは１５４ｂの一部を利用して形成できる。
【００８５】
図２９に、異なる構成の４入力４出力の真理値テーブルとして機能するＭＦＣ１７０をＦＵ５０として搭載した例を示してある。本例のＭＦＣ１７０は、４入力１６出力のデコーダユニット１５２と、真理値表５９として機能するＯＲ回路１７１を備えている。ＯＲ回路１７１は、４つのＯＲユニット１７２を備えており、各々のＯＲユニット１７２は、８入力ＯＲゲート１７３と、出力極性を決定する極性変換用のインバータ１７４を備えている。８入力ＯＲゲート１７３の入力側は、カスタマイズ配線２１により、デコーダユニット１５２の出力ＳＥＬ［０：１５］と接続することができる。また、ＯＲユニット１７２の出力の極性を反転可能なインバータ１７４と、ＯＲユニット１７２の出力のいずれかをカスタマイズ配線２１９により選択できるようになっている。
【００８６】
このＭＦＣ１７０においては、デコーダユニット１５２の出力ＳＥＬ［０：１５］とＯＲユニット１７２とを接続するカスタマイズ配線２１により、それぞれの出力端子ＯＵＴ０〜３から出力される真理値表出力が決定される。その際、ＯＲユニット１７２には、デコーダユニット１５２の出力のうち、「０」または「１」のいずれか組み合わせパターンの少ない方の極性の信号がカスタマイズ配線２１により接続される。デコーダユニット１５２の出力ＳＥＬ［０：１５］は２値なので、いずれか一方の極性の信号は８以下になる。したがって、８入力のＯＲゲート１７３により真理値表出力を決定できる。「０」の値を出す組み合わせの方の数が少ない場合は、ＯＲゲート１７３の出力をカスタマイズ配線２１９により反転させてＯＲユニット１７２から「０」を出力する。また、ＯＲゲート１７３に入力する信号の数が８未満の場合は、８入力ＯＲゲート１７３の残りの入力はカスタマイズ配線２１により「０」に固定する。
【００８７】
図３０は、８入力ＯＲゲート１７３として機能する演算回路１７５の例である。この演算回路１７５は、入力側に４つの２入力ＡＮＤゲート１７６と、４入力ＯＲゲート１７７が配置され、それらの出力の論理和を順番に演算して出力するようになっている。この演算回路１７５は、ＡＮＤゲート１７６の一方の入力をＳＥＬｉｎ［０：３］、他の入力をＯＲｉｎ［０：７］としたときに、ＳＥＬｉｎ［０：３］をカスタマイズ配線により「１」に固定することにより８入力ＯＲゲートとして動作する。また、ＯＲｉｎ［４：７］をカスタマイズ配線により「０」に固定し、ＯＲｉｎ［０：３］をデコーダユニット１５２とカスタマイズ配線２１により接続することにより、４入力１出力セレクタとして機能する。さらに、ＯＲｉｎ［０：１］とＳＥＬｉｎ［０：１］とをカスタマイズ配線２１で接続しＳＥＬＯＵＴを利用することにより２入力１出力セレクタとしても機能する。
【００８８】
以上ではＦＵ５０にセレクタ機能を備えたＭＦＣ１５１を割り付けた回路例を幾つか説明したが、他の回路をＦＵ５０に割り付けることも可能である。図３１に、２系統の４ビット入力ＡおよびＢと、８ビット出力Ｘとを有する乗算器５２をＦＵ５０としてＦＢ１１に割り付けた例を示してある。この乗算器５２としての機能を実現するＦＵ５０は、アダー６８、アンドゲート６９、符号拡張や０拡張などの機能を備えたデコーダ７０などの回路要素の他に、これらの回路要素の接続を選択できるセレクタ６３、６４、６５および６７、さらに、符号条件つきのデータとして理解するかどうかの選択ができるデコーダ６２を備えている。そして、ＳＥＬ２、３、４、５および７の上位配線層２１により、セレクタ６３、６４、６５および６７、さらに、デコーダ６２を制御することができ、乗算器５２のＦＵ５０を、符号付の乗算（ＭＵＬ（ｓｉｇｎｅｄ））と符号なしの乗算（ＭＵＬ（ｕｎｓｉｇｎｅｄ））の２つの演算のいずれかを実行させるようにカスタマイズすることができる。上位配線層２１によりカスタマイズする条件（ＳＥＬ２、３、４、５および７）は、図３３に、以下に示す積和演算器５３の条件と同一である。
【００８９】
図３２に、２系統の４ビット入力ＡおよびＢと、その他の８ビットの加算入力Ｃと、１ビットのキャリー入力Ｃｉｎとを有し、合計１７ビット入力を備えた積和演算器５３をＦＵ５０としてＦＢ１１に割り付けた例を示してある。この積和演算器５３は、８ビットの積和演算結果Ｘと、１ビットのキャリー出力Ｃｏｕｔの合計９ビットの出力を有するＦＵ５０となる。この積和演算器５３として機能するＦＵ５０も、アダー（ＡＬＵ）６８、アンドゲート６９、符号拡張や０拡張などの機能を備えたデコーダ７０などの回路要素の他に、これらの回路要素の接続を選択できるセレクタ６３、６４、６５、６６および６７、さらに、アダー６８の機能選択を指定できる設定回路６１、符号条件つきのデータとして理解するかどうかの選択ができるデコーダ６２を備えている。そして、ＳＥＬ１〜７の上位配線層２１により、それらの回路要素を特定の条件にセットすることができる。その結果、図３３（ａ）に示すように、積和演算器５３のＦＵ５０を、符号付の乗算（ＭＵＬ（ｓｉｇｎｅｄ））、符号なしの乗算（ＭＵＬ（ｕｎｓｉｇｎｅｄ））、積和演算（ＭＡＣ）、加算器（Ａ＋Ｂ）、減算器（Ａ−Ｂ）、１ビットから３ビットの固定シフタの８種類の機能のいずれかを備えたＦＵとしてカスタマイズすることができる。
【００９０】
カスタマイズ可能な回路要素６１〜６７は、上位配線層２１（ＳＥＬ１〜７）により電源配線Ｖｓｓ／Ｖｃｃより供給された０／１信号により選択され、上位配線層２１が形成された段階で確定する。カスタマイズ可能な条件（ＳＥＬ１〜７）の詳細は図３３（ｂ）に示した通りである。
【００９１】
図３４に、異なる構成の積和演算器５３ａをＦＵ５０としてＦＢ１１に割り付けた例を示してある。この積和演算器５３ａは、全体の構成は、図３２に示した積和演算器５３とほぼ同様であるが、セレクタ６３〜６７の部分が、下位配線層２２の段階では、上位配線層２１により配線可能なようにオープンあるいはターミナル出力状態７３〜７７になっている。したがって、上位配線層２１により接続を選択することで、ＦＵ５０の最終的な信号経路が設定されるデータフロー方式メタル・コンフィギャラブルなＦＵ５０となっている。上位配線層２１の設計は複雑になる可能性があるが、セレクタの遅延を排除することが可能となる。
【００９２】
図３５は、１６ビットのａポートおよびｂポートを持つデュアルポートＲＡＭ５４をＦＵ５０としてＦＢ１１に割り付けた例を示してある。このＳＲＡＭ５４は、合計３２ビット出力であり、４つのＦＢ１１を用いて割り付けられ、ハードウェア的に１６ビット×２５６ワード、合計４，０９６ビットのＳＲＡＭプレーン８０を備えたＳＲＡＭ５４が構成されている。そして、本例のＳＲＡＭ５４としての機能を備えたＦＵ５０は、１６ビット×２５６ワード、８ビット×５１２ワード、４ビット×１０２４ワード、および２ビット×２０４８ワードの構成のいずれかにてユーザがアクセスできるようにカスタマイズすることができる。
【００９３】
このため、ＳＲＡＭ５４としての機能を備えたＦＵ５０は、２群のアドレスデータ８１ａ（ａａ０〜ａａ７）および８１ｂ（ａｂ０〜ａｂ７）と、２群の入力データ８２ａ（ｉｎｄａ０〜ｄａ１５）および８２ｂ（ｉｎｄｂ０〜ｄｂ１５）と、２群の出力データ８３ａ（ｄａ０〜ｄａ１５）および８３ｂ（ｄｂ０〜ｄｂ１５）とをハンドリングできる構成となっている。２群の各１６ビットの出力データ８３ａおよび８３ｂは、出力インターフェイス４０を介して出力される。さらに、パーシャルライト制御回路８４ａおよび８４ｂと出力制御回路８５ａおよび８５ｂとを備えている。また、２群のアドレスデータ８１ａおよび８１ｂは、２０４８ワードをカバーできるように１１ビット（ａａ０〜ａａ１０およびａｂ０〜ａｂ１０）が入力されるようになっており、これらの内、９ビットから１１ビット（ａａ８〜ａａ１０およびａｂ８〜ａｂ１０）までが、カスタマイズすることによりユーザが定義可能となる領域である。
【００９４】
アドレスデータ８１ａおよび８１ｂの８ビット（ａａ０〜ａａ７およびａｂ０〜ａｂ７）までは直接ＳＲＡＭプレーン８０のアドレス入力端子に接続され、９ビットから１１ビット（ａａ８〜ａａ１０およびａｂ８〜ａｂ１０）まではパーシャルライト制御回路８４ａおよび８４ｂと出力制御回路８５ａおよび８５ｂにそれぞれ入力される。そして、出力制御回路８５ａおよび８５ｂが上位配線層８１によりカスタマイズされることにより、ビット長を指定することができる。このＦＵ５０においても、上位配線層２１により電源配線Ｖｓｓ／Ｖｃｃより供給された０／１により出力制御回路８５ａおよび８５ｂで出力データを選択するので、０／１方式メタル・コンフィギャラブルであり、同時にＳＲＡＭ５４のビット長をカスタマイズするビット長指定方式メタル・コンフィギャラブルでもある。
【００９５】
図３６に片側分のＳＲＡＭ５４の構成をさらに詳細に示してある。出力制御回路は８ビット入力３ビット制御信号セレクタ８６を１６個備えている。図中に「Ｅ」と示されるセレクタ８６には、ＳＲＡＭプレーン８０の出力データ８７（ｏｕｔ１〜ｏｕｔ１５）のうち、０ビットから１４ビットまでの偶数ビットの出力データが８ビット入力され、「Ｏ」と示されるセレクタ８６には出力データ８７の１ビットから１５ビットまでの奇数ビットが８ビット入力されている。そして、カスタマイズ用の上位配線層２１により、各セレクタ８６に入力される選択信号３ビットが、電源配線Ｖｓｓ／Ｖｃｃより供給された０／１信号と、アドレスデータ８１ａの９ビットから１１ビット（ａａ８〜ａａ１０）により生成されるように結線され、出力信号８３のビット幅が１６ビット、８ビット、４ビットおよび２ビットのいずれかとなるようにカスタマイズされる。
【００９６】
図３７に、カスタマイズ配線によりセレクタ８６を用いてビット幅を選択する詳細を示してある。図３７（ａ）は、１６ビットの出力が選択されるケースである。上位配線層２１により電源配線Ｖｓｓ／Ｖｃｃから供給された０／１信号により、各々のセレクタ８６が「Ｅ」および「Ｏ」毎に、「０００」から「１１１」まで固定される。したがって、図３８（ａ）に示すように、各々のセレクタ８６からは、出力ｏｕｔ０からｏｕｔ１５までのデータが出力され、ＦＵ５０の出力８３ａとして１６ビット（ｄ０〜ｄ１５）それぞれ出力される。
【００９７】
図３７（ｂ）は、８ビットの出力が選択されるケースである。上位配線層２１により電源配線Ｖｓｓ／Ｖｃｃから供給された０／１信号により、各々のセレクタ８６が「Ｅ」および「Ｏ」毎に、下位２ビットが「００」から「１１」まで固定され、上位１ビットにアドレスデータ８１の９ビット目（ａ８）が入力されるように結線される。したがって、アドレスデータ８１の９ビット目（ａ８）により、２５６ワードのＳＲＡＭプレーン８０は２つに分けて、５１２ワードのＳＲＡＭとして使用することができる。このため、図３８（ｂ）に示すように、各々のセレクタ８６からは、出力ｏｕｔ０からｏｕｔ７またはｏｕｔ８からｏｕｔ１５までの８ビットのデータが出力される。したがって、ＦＵ５０の出力８３ａとして８ビット（ｄ０〜ｄ７）が得られる。
【００９８】
図３７（ｃ）は、４ビットの出力が選択されるケースである。上位配線層２１により電源配線Ｖｓｓ／Ｖｃｃから供給された０／１信号により、各々のセレクタ８６が「Ｅ」および「Ｏ」毎に、下位１ビットが「０」から「１」に固定され、上位２ビットにアドレスデータ８１の９ビット目（ａ８）および１０ビット目（ａ９）が入力されるように結線される。したがって、アドレスデータ８１の９および１０ビット目（ａ８、ａ９）により、２５６ワードのＳＲＡＭプレーン８０は４つに分けて、１０２４ワードのＳＲＡＭとして使用することができる。このため、図３８（ｃ）に示すように、各々のセレクタ８６からは、出力ｏｕｔ０からｏｕｔ３またはｏｕｔ４からｏｕｔ７までといった４ビットのデータが出力される。したがって、ＦＵ５０の出力８３ａとして４ビット（ｄ０〜ｄ３）が得られる。
【００９９】
図３７（ｄ）は、２ビットの出力が選択されるケースである。上位配線層２１各々のセレクタ８６が「Ｅ」および「Ｏ」毎に、アドレスデータ８１の９〜１１ビット目（ａ８〜１０）が入力されるように配線される。したがって、アドレスデータ８１の９〜１１ビット目（ａ８〜ａ１０）により、２５６ワードのＳＲＡＭプレーン８０は８つに分けて、２０４８ワードのＳＲＡＭとして使用することができる。このため、図３８（ｄ）に示すように、各々のセレクタ８６からは、出力ｏｕｔ０からｏｕｔ１またはｏｕｔ２からｏｕｔ３までといった２ビットのデータが出力される。したがって、ＦＵ５０の出力８３ａとして２ビット（ｄ０〜ｄ１）が得られる。
【０１００】
一方、パーシャルライト制御回路８４ａは、アドレスデータ８１の９〜１１ビット目（ａ８〜ａ１０）の９ビット、９および１０ビット目、さらに９〜１１ビット目を他の０〜８ビット目とそれぞれ組み合わせるように上位配線層２１により結線することにより、８ビット、４ビット、２ビットまでが選択可能となる。このため、パーシャルライト制御回路８４ａをカスタマイズすることにより、実際は１６ビットのＳＲＡＭプレーン８０に部分書き込みが可能となり、１６ビットから２ビットまで、ＳＲＡＭプレーン８０の書き込みビット幅を使い分けることが可能となる。
【０１０１】
図３９は、上記と異なるデュアルポートＲＡＭ１８０をＦＵ５０としてＦＢ１１に割り付けた例を示してある。このＳＲＡＭ１８０は、ＲＷ／Ｒ同期ＳＲＡＭであり、ＡポートがＲＷ、ＢポートがＲに設定されている。このＳＲＡＭ１８０も１６ビット×２５６ワードのＳＲＡＭプレーン（ＲＡＭ本体）８０を備えており、１６ビット×２５６ワード、８ビット×５１２ワード、４ビット×１０２４ワード、および２ビット×２０４８ワードの構成のいずれかでユーザがアクセスできるようにカスタマイズできる。
【０１０２】
このＳＲＡＭ１８０は、パーシャルライト制御回路および出力制御回路として機能するセレクタ回路部１８１ａおよび１８１ｂを備えており、２群のアドレスデータ８１ａおよび８１ｂの内、上位３ビット（ａａ０〜ａａ２およびａｂ０〜ａｂ２）によりパーシャルライト制御が行われる例を示してある。たとえば、Ａポートからはセレクタ回路部１８１ａを介して、１６ビット入出力のときは１６ビット幅（ＷＤ［１５：０］、ＤＡ［１５：０］）で入力データ８２ａおよび出力データ８３ａを接続できる。また、８ビット入出力のときは、８ビット幅（ＷＤ［７：０］、ＤＡ［７：０］）、４ビット入出力のときは、４ビット幅（ＷＤ［３：０］、ＤＡ［３：０］）、２ビット入出力のときは、２ビット幅（ＷＤ［１：０］、ＤＡ［１：０］）へ減縮される。さらに、本例のセレクタ回路部１８１ａおよび１８１ｂは、ＳＲＡＭ本体のポートに予め接続された８ビット入力３ビット制御信号セレクタを１６個並べる代わりに、ＳＲＡＭ本体８０とセレクタ回路部１８１ａおよび１８１ｂとの間をカスタマイズ配線２１で接続することにより、入力ビット幅のセレクタによりパーシャルライトを実現している。したがって、パーシャルライトに対応するためのゲート数を削減でき、最小限の配線でパーシャルライトを実現できる。また、配線およびゲート数を削減することにより負荷容量が減少するので、高速な回路を実現できる。
【０１０３】
図４０にセレクタ回路部１８１ａを示してある。セレクタ回路部１８１ａは、２つの８入力３ビット制御信号セレクタ１８２と、２つの４入力２ビット制御信号セレクタ１８３と、４つの２入力１ビット制御信号セレクタ１８４と、これらのセレクタ１８２〜１８４に制御信号を供給するラッチ回路１８５と、上位のアドレスから制御信号を生成するデコーダ１８６とを備えている。図４０は、ＳＲＡＭ１８０が１６ビット幅で使用されるときのセレクタ回路部１８１ａの接続状態を示してある。セレクタ１８２〜１８４は使用されておらず、全ての入力がＶｓｓに固定されている。また、ＲＡＭ本体８０の入力端子ＤＩ［１５：０］はセレクタ回路部１８１ａの入力端子ＷＤ［１５：０］と１対１で接続され、出力端子ＤＯ［１５：０］はセレクタ回路部１８１ａの出力端子ＤＡ［１５：０］と１対１で接続されている。さらに、パーシャルライト制御端子ＥＢ［１５：０］はＶｃｃに固定されて全ての端子が有効になっている。
【０１０４】
図４１に、ＳＲＡＭ１８０が８ビット幅で使用されるときのセレクタ回路部１８１ａの接続状態を示してある。ＲＡＭ本体８０の出力端子ＤＯ［１５：０］は合計８つのセレクタ１８２〜１８４と２対１になるように接続され、各々のセレクタ１８２〜１８４がセレクタ回路部１８１ａの出力端子ＤＡ［７：０］と１対１で接続されている。このケースでは、８入力セレクタ１８２および４入力セレクタ１８３は２入力として使用されており、他の入力端子はカスタマイズ配線２１によりＶｓｓに固定されている。また、ＲＡＭ本体８０の入力端子ＤＩ［１５：０］はセレクタ回路部１８１ａの入力端子ＷＤ［７：０］と２対１で接続されている。パーシャルライト制御端子ＥＢ［１５：０］の内、偶数番目の端子にはデコーダ１８６の制御信号ＤＥＣ［０］が供給され、奇数番目の端子には制御信号ＤＥＣ［１］が供給されている。デコーダ１８６には、上位３番目のアドレスＡ［８］が入力され、セレクタ１８２〜１８４に供給されている信号１８７およびパーシャルライト制御端子に供給されている制御信号ＤＥＣにより、２対１で接続された一方の端子が選択されるようになっている。セレクタ１８２〜１８４に対する制御信号１８７はラッチ回路１８５でラッチされており、同期ＲＡＭにおいてデータ出力中に次のアドレスが入力された場合であってもデータを適正に維持できるようにしている。
【０１０５】
図４２に、ＳＲＡＭ１８０が４ビット幅で使用されるときのセレクタ回路部１８１ａの接続状態を示してある。ＲＡＭ本体８０の出力端子ＤＯ［１５：０］は合計４つのセレクタ１８２〜１８３と４対１になるように接続され、各々のセレクタ１８２〜１８３がセレクタ回路部１８１ａの出力端子ＤＡ［３：０］と１対１で接続されている。このケースでは、２入力セレクタ１８４は使用されない。また、８入力セレクタ１８２は４入力として使用されており、他の入力端子はカスタマイズ配線２１によりＶｓｓに固定されている。ＲＡＭ本体８０の入力端子ＤＩ［１５：０］はセレクタ回路部１８１ａの入力端子ＷＤ［３：０］と４対１で接続されている。パーシャルライト制御端子ＥＢ［１５：０］には４つ間隔で順番にデコーダ１８６の制御信号ＤＥＣ［０］〜［３］が供給されている。デコーダ１８６には、上位２および３番目のアドレスＡ［９：８］が入力され、セレクタ１８２〜１８３に供給されている信号１８７およびパーシャルライト制御端子に供給されている制御信号ＤＥＣにより、４対１で接続された１つの端子が選択されるようになっている。
【０１０６】
図４３に、ＳＲＡＭ１８０が２ビット幅で使用されるときのセレクタ回路部１８１ａの接続状態を示してある。ＲＡＭ本体８０の出力端子ＤＯ［１５：０］は２つのセレクタ１８２と８対１になるように接続され、各々のセレクタ１８２がセレクタ回路部１８１ａの出力端子ＤＡ［１：０］と１対１で接続されている。このケースでは、８入力セレクタ１８２のみが使用され、他のセレクタ１８３および１８４は使用されない。ＲＡＭ本体８０の入力端子ＤＩ［１５：０］はセレクタ回路部１８１ａの入力端子ＷＤ［１：０］と８対１で接続されている。パーシャルライト制御端子ＥＢ［１５：０］には１つおきに、デコーダ１８６の制御信号ＤＥＣ［０］〜［７］が供給されている。デコーダ１８６には、上位１〜３番目のアドレスＡ［１０：８］が入力され、セレクタ１８２に供給されている信号１８７およびパーシャルライト制御端子に供給されている制御信号ＤＥＣにより、８対１で接続された１つの端子が選択されるようになっている。
【０１０７】
図４４は、上記とさらに異なるデュアルポートＲＡＭ１９０をＦＵ５０としてＦＢ１１に割り付けた例を示してある。このＳＲＡＭ１９０は、１６ビット２５６ワードのＲＷ／Ｒ同期ＳＲＡＭであり、上記と同様に１６ビットから２ビットの範囲でビット幅を可変できるようになっている。このＳＲＡＭ１９０のＲＡＭ本体８０は８つの２ビット単位のＲＡＭセル１９２により構成されている。そして、８つのＲＡＭセル１９２に対して作動用のクロックを無効にする８ビットのクロック無効制御信号ＩＮＨＡ［７：０］およびＩＮＨＢ［７：０］がセレクタ回路部１９１ａおよび１９１ｂから出力されている。各々のセレクタ回路部１９１ａおよび１９１ｂのビット幅を選択する構成は、上記のいずれの構成であっても良い。
【０１０８】
このファンクションマクロユニット５０には、ビット幅などの構成はユーザがカスタマイズ可能なＳＲＡＭ１９０が割り当てられているので、使用されないエレメントがある。たとえば、１１ビット幅のＲＡＭが必要な場合には、カスタマイズされることにより、残りの５ビット幅のＲＡＭセル、センスアンプ、データ入出力セレクタなどのエレメントは無用であり、これらに対するクロックを停止させることにより消費電力の浪費を避けることができる。また、このＳＲＡＭ１９０を２ビット幅で使用するときは、アクセスされるビット行は全体の２／１６であるから、１つのＲＡＭセル１９２が活性化されていれば良く、他のＲＡＭセル１９２に対するクロックを無効にして消費電力をさらに下げることが可能となる。
【０１０９】
ＳＲＡＭ１９０のセレクタ回路部１９１ａおよび１９１ｂからは、使用しないビット行のＲＡＭセル１９２に対するビットが「０」になったクロック無効制御信号ＩＮＨＡおよびＩＮＨＢが出力される。カスタマイズにより使用されなくなったＲＡＭセル１９２が判明している場合は、カスタマイズ配線によりクロック無効制御信号ＩＮＨＡおよびＩＮＨＢを生成することが可能である。一方、ＳＲＡＭ１９０が８ビット以下のビット幅にカスタマイズされる場合は、セレクタ回路部１９１ａおよび１９１ｂにおいて、アドレスの上位３ビットをデコードした信号をクロック無効制御信号ＩＮＨＡおよびＩＮＨＢとして出力することにより必要なＲＡＭセル１９２のみを活性化して消費電力を下げることができる。
【０１１０】
このＳＲＡＭ１９０は、ＲＡＭ本体８０がＲＡＭセル１９２にすでに分割されているのでパーシャルライト信号は不要であり、クロック無効制御信号ＩＮＨＡおよびＩＮＨＢをアクセス対象となるＲＡＭセル１９２を選択する信号として利用することにより適切なＲＡＭセル１９２にアクセスすることができる。本例では２ビット幅のＲＡＭセル１９２を用いているが、１ビット幅のＲＡＭセルであっても良く、４あるいは８ビット幅のＲＡＭセルであっても本発明を適用することにより消費電力を低減できる。本例のように、カスタマイズ可能な最小ビット幅に合わせて２ビット幅のＲＡＭセルを採用すると、アドレスデコード部などのハードウェアを必要以上に増加させずに、最も効率良く消費電力を低減できる。
【０１１１】
図４５は、上記とさらに異なるデュアルポートＲＡＭ２００をＦＵ５０としてＦＢ１１に割り付けた例を示してある。このＳＲＡＭ２００は、上記のＳＲＡＭ１９０と同様に１６ビット２５６ワードのＲＷ／Ｒ同期ＳＲＡＭであり、１６ビットから２ビットの範囲でビット幅を可変できるものである。図４５は、ＳＲＡＭ２００のＡポートおよびビット［１５：１４］の部分を拡大して示してある。ＳＲＡＭ２００のＲＡＭ本体８０は１６の１ビット×２５６ワードのＲＡＭセル２０２により構成されている。さらに、各々のＲＡＭセル２０２は、４つの１ビット×６４ワードのサブセル２０５とデータセレクタ２０６を備えている。アドレス信号８１ａの上位３ビットのデータＡ［１０：８］がセレクタ回路部２０１ａによりデコードされ、ビットセレクト信号ＢＳが出力されて該当するＲＡＭセル２０２が選択される。ＲＡＭセル２０２においては、アドレス信号８１ａの下位８ビットのデータＡ［７：０］の上位２ビットのデータＡ［７：６］がデコードされ、データを入出力するサブセル２０５が選択される。
【０１１２】
図４６に、サブセル２０５の概略構成を示してある。各々のサブセル２０５は６４個のビットセル２０７を備えている。ビットセル２０７は、アドレスデコーダ２０３から供給されるワード線ＷＬ０〜ＷＬ６３により選択され、選択されたビット線ＢＬ０〜ＢＬ３を介してデータセレクタ２０６との間でデータが入出力されることによりデータを書き込んだり読み出したりすることができる。ビットセル２０７は、さらに、サブセル（カラム）２０５毎に、各ビットセル２０７とビット線（データ線）ＢＬ０〜ＢＬ３との間の各接続を、サブセル２０５の単位でビット線ＢＬ０〜ＢＬ３から分離可能なスイッチ２０９を備えており、データセレクタ２０６から供給されるカラム選択信号ＣＳにより選択されたサブセル２０５のみがビット線（データ線）ＢＬに接続されるようになっている。したがって、クロック信号のタイミングでプリチャージするビット線プリチャージユニット２０８によりビット線ＢＬ０〜ＢＬ３がプリチャージされた後に、アクセスの対象となるサブセル２０５だけがビット線ＢＬに対してオープンする。このため、ワード線ＷＬにより選択されたビットセル２０７がデータ線であるビット線に反映される。他のビット線ＢＬに対しては、チャージスイッチ２０９はオフになっているので、ビットセル２０７が接続されず、活性化対象のビット線ＢＬ以外のビット線ＢＬにはプリチャージされた電圧が残る。この結果、ビット線プリチャージユニット２０８で消費される電力が低減され、ＳＲＡＭ２００の消費電力を削減できる。
【０１１３】
なお、他のＲＡＭセル２０２においては、全てのサブセル２０５が選択されないことで消費電力を低減しても良く、クロックを停止してプリチャージを行わないことで消費電力を低減しても良い。ＳＲＡＭ２００は最小で２ビット単位のアクセスになるが、本例においては、１ビットをワード方向にさらに分割したサブセル２０５の単位で消費電力を低減できる。したがって、アクセス対象となるビット幅単位より小さな単位で消費電力を低減することができるので、アクセス対象のビット幅が一定で可変ではないＲＡＭユニットにおいても本発明は有効である。
【０１１４】
このように、本例のＳＲＡＭ２００においては、ワード線ＷＬにＡＮＤ条件でビット線に対してオンオフするスイッチ２０９を設けることにより、アクセスされるビットを持つサブセル２０５だけが活性化される手段を提供できる。したがって、ビット単位よりさらに小さな単位でＳＲＡＭ２００の内部回路を活性化することが可能となり、消費電力を低減できる。
【０１１５】
ＡＳＩＣ用のＲＡＭは、設計の段階で使用するビット幅が確定しているので、不必要なビット行を持つことはなく、ビット行単位で動作を止め、消費電力を削減するような制御機構を持っていない。したがって、ビット幅を可変にするために、ビット幅の小さなＲＡＭユニットを複数個並べても、本例のようなビット単位以下の単位で消費電力を低減することはできない。これに対し、図４５に示したＳＲＡＭ２００は、アドレスデコーダ２０３が複数のＲＡＭセル２０２に共通となる新しい設計を採用し、さらに、ＲＡＭセル２０２を構成するサブセル２０５の単位で消費電力を低減できるようにしている。このため、占有面積が小さくなる点でも消費電力の低減に有効であり、ＳＲＡＭ２００を１６ビット幅で使用する場合でも消費電力を低減することができる。
【０１１６】
図４７に、以上に説明したＦＵ＆ＢＡ１０の設計工程の概要を示してある。まず、ステップ９１において、以下でさらに詳しく説明するアドレス指定によるデバッグ機能を備えたＦＢ１１をアレイ状に配置したＦＢＡ２８を設計する。そして、ステップ９２において、ＦＢＡ２８に上述した１つまたは複数種類のＦＵ５０を割り付け、カスタマイズ前のＦＵ＆ＢＡ２９を設計する。そして、用意されたＦＵ５０をユーザ論理にしたがってカスタマイズすることにより、所望の処理を実行可能なＦＵ＆ＢＡ１０を設計できる。さらに大きく分けると、ステップ９１および９２を含むカスタマイズ前のＦＵ＆ＢＡ２９は、基本回路要素をサポートする下位配線層２２を設計することにより実現され、カスタマイズのステップ９４は上位配線層２１を設計することにより実現される。いずれの場合でも、予め下位メタル層までが設計が完了しているので、毎回トランジスタレベルの設計からスタートするスタンダードセル方式の集積回路装置に比べ、上位メタル層のみの設計を行うことで製造できるので、設計および製造期間を大幅に短縮できる。
【０１１７】
また、図４７に示したこれらの工程は、製造プロセスとして実行することも可能である。すなわち、すべての設計が済んでから製造しても良く、各々の工程毎に集積回路モジュール１０あるいはそれを含んだ集積回路装置１を製造することが可能だからである。特に、ＦＢＡ２８を主に製造するメタル層と、ＦＵ５０を割り付けるメタル層とがセパレート可能であれば、本例のＦＵ＆ＢＡ１０の製造段階は３つ分けることが可能である。すなわち、ほぼユニフォームな構成のＦＢＡ２８が製造された段階（ステップ９１に対応）と、集積回路装置１の大まかな目的に応じて適当な種類および数のＦＵ５０がＦＢ１１に割り付けられた段階（ステップ９２に対応）と、ユーザ論理に従ってカスタマイズされた集積回路装置１が製造された段階（ステプ９３に対応）とに分けて製造することが可能である。また、ＦＢＡ２８を形成するためのメタル層とＦＵ５０を割り付けるためのメタル層との分離が難しいまたは経済的ない場合は、各用途を予想した種類および数量のＦＵ５０を予め割り付けたプレカスタマイズのＦＵ＆ＢＡ２９までを製造しておくことも有効である（ステップ９３に対応）。いずれの場合も、予め下位メタル層までを製造しておき、ユーザ論理が決定したらカスタマイズ層２１を製造してカスタムＬＳＩ１として完成させる本発明の方式は、毎回トランジスタから製造するスタンダードセル方式の集積回路装置に比べ、上位メタル層のみの工程で製造できるので、製造期間の短縮に効果がある。したがって、先に説明した第１の課題は、本発明により十分にクリアできる。
【０１１８】
また、カスタマイズを配線層２１で行えることも本発明のＦＵ＆ＢＡの大きなメリットである。配線微細化に伴うタイミング問題の解決もカスタマイズ用の上位配線層２１の設計に織り込むことが可能であり、カスタマイズ可能な代表的なＬＳＩであるＦＰＧＡのように予め配線が埋め込まれている集積回路装置と異なり、カスタマイズするユーザ論理に適したタイミング設計が可能となる。すなわち、先に説明した第２の課題も、本発明によりクリアできる。
【０１１９】
さらに、本発明は、多入力の複数の論理を実現可能なマクロ機能ユニットＦＵ５０を基本回路として予め割り付けておき、カスタマイズは、そのＦＵ５０によりサポートされる機能を上位配線層２１により選択する設計および製造方法である。したがって、下位配線層２２によりサポートされる基本回路要素の設計も、上位配線層２１によりサポートされるカスタマイズ要素の設計も、ＡＮＤ／ＯＲ／ＦＦといった数個のトランジスタにより実現される微小な論理単位ではなく、ＡＬＵ／Ｍｕｌｔｉｐｌｙ／積和演算といった演算機能を実現可能な大きな論理単位を基本要素としている。このため、本発明の集積回路装置の設計の抽象度は高く、開発および設計に費やされる時間を短縮することができる。したがって、先に説明した第３の課題も十分にクリアできる。
【０１２０】
さらに、第４の課題として挙げられている、大規模化したカスタムＬＳＩに対してのデバッグ機能の提供については、アドレス呼び出しができるデバッグ機能を備えたＦＢ１１を提供することにより解決している。以下では、デバッグ機能についてさらに詳しく説明する。
【０１２１】
図４８に、ＦＢ１１における、出力インターフェイス４０のレジスタ４１をモニターするための構成を示してある。この図は、図２に示したＦＢ１１のデバッグに係る構成を抜き出して示したものである。ＦＢ１１は、ＦＵ５０を構成する回路が割り当てられるデータパス部１０１と、ＦＢ１１の状態を制御する状態制御回路１０２と、出力インターフェイス４０の８ビットのレジスタ出力をモニタリング用のデータバス１７に出力する出力回路１０３とを備えている。状態制御回路１０２は、図１に示した比較ユニットＶＵ３を介してデバッグモードのプロセッサ２から供給される状態制御信号φｓｃにより、自己のＦＢ１１に割り当てられたＦＵ５０の動作を制御する。
【０１２２】
本例においては、状態制御回路１０２は、ＦＵ５０の状態を、システム動作モードと、ＦＢ選択モード（デバッグモード）と、ＦＢ／ＦＦ読み出しモード（デバッグモード）と、クロック停止モードとに制御することができる。システム動作モードのＦＢ１１では、モニタリングなしでクロック信号φｃの速度でＦＵ５０が稼動する。ＦＢ選択モードのＦＢ１１では、自己のＦＢ１１を示すモニタリング用のアドレスデータφｍａが出力され行信号線１４および列信号線１５で選択されているか否かを常に判断する。そして、行信号線１４および列信号線１５で選択されると、ＦＢ／ＦＦ読み出しモードに移行し、出力インターフェイス４０のレジスタ出力を、出力回路１０３を通してモニタリング用のデータバス１７に出力する。さらに、モニタリング用に出力されたデータφｍｄがＶＵ３で比較データレジスタ３２に格納された比較用のデータと一致すると、ＶＵ３から状態制御信号φｓｃがＦＵ＆ＢＡ１０に出力され、クロック停止モードに移行してＦＵ＆ＢＡ１０が処理を停止する。デバッグモードのＦＢ選択モードおよびＦＢ／ＦＦ読み出しモードにおいては、自己のＦＢ１１が選択されているか否かを判断する時間と、出力インターフェイス４０のレジスタ出力をモニタリング用に出力する時間を確保するためにＦＵ５０の実行速度あるいはクロックレートを下げることも可能である。
【０１２３】
したがって、本例のＦＵ＆ＢＡ１０においては、デバッグモードで稼動中は、ＰＵ２からＦＢ１１がアドレス情報φｍａにより指定されると、そのときにＦＢ１１の出力インターフェイス４０のレジスタ４１に格納されているデータがモニタリング用のデータバス１７を介してＦＵ＆ＢＡ１０から外部のＶＵ３およびＰＵ２に出力される。このため、ＦＢ１１に割り付けられたＦＵ５０において、入力信号１０５に対して、どのよう出力信号１０６が出力されたかを外部からモニタリングすることができる。多くのケースでは、ＦＵ５０からの出力信号１０６は他のＦＵ５０の入力信号１０６となるので、本例のＦＵ＆ＢＡ１０においては、ユーザ論理に従って構成されたシステムＬＳＩの内部状態を外部から自由にモニタリングできることを意味する。
【０１２４】
さらに、ＦＵ＆ＢＡ１０においては、ＦＢ１１の出力インターフェイス４０の単位で内部データをモニターすることができ、ＦＢ１１にはＦＵ５０が割り付けられている。したがって、出力インターフェイス４０を介してモニターできるデータは、ＦＵ５０の出力の全部か、あるいは、ＦＵ５０の出力の一部分ということになる。すなわち、ＦＵ５０が８ビット以下のデータを出力するマクロ機能であればＦＢ１１の出力インターフェイス４０に用意された８ビットのレジスタ４１の内容をモニターすることにより、ＦＵ５０の出力をその都度把握できる。一方、ＦＵ５０が９ビット以上のデータを出力するマクロ機能であれば、そのＦＵ５０の出力は複数のＦＢ１１の出力インターフェイス４０に分かれるので、複数のＦＢ１１をアドレス指定してアクセスして出力レジスタ４１のデータを取得することによりＦＵ５０の出力を把握できる。いずれの場合も重要なことは、ＦＢ１１をアドレス情報φｍａで指定して、その出力レジスタ４１に格納あるいはラッチされているデータφｍｄを読み出すと、そのデータφｍｄは、ＦＢ１１に割り付けられたマクロ機能、すなわち、真理値表、積和演算、あるいはＳＲＡＭの出力あるいはその一部である。したがって、ＦＵ＆ＢＡ１０をカスタマイズすることにより搭載されたユーザ論理をモニタリングする上で意味のある内部データであり、その内部データをデバッグ対象とすることによりユーザ論理が正常に実行されているか否かを判断することも容易となる。
【０１２５】
内部状態をモニターし、ある条件になったらＬＳＩを停止させて内部を観測するのがデバッグの基本である。これが従来のＡＳＩＣでは何らかの理由で回路が停止したら、ユーザロジックと共に作りこまれたＦＦのスキャンチェインを読み出して解析する程度のことしか出来なかった。すなわち、ＡＳＩＣの内部状態をダイナミックにモニターできるのではなく、外部出力などから内部状態を予想して停止条件を作りだしているに過ぎない。これでは、デバッグのためにＡＳＩＣを停止させる機構として不十分である。また、ＦＰＧＡではロジックアナライザ型の観測機構が提供されているが、これも停止機構はない。停止させようとすればユーザ自身が作成する論理で停止条件を記述必要があり、これではユーザ負担が多すぎる。
【０１２６】
これに対し、本発明のＦＵ＆ＢＡ１０では、観測するＦＢ１１に属する８ビットのレジスタ４１の内容を、アドレスを指定するだけで随時読み出すことができる。したがって、比較ユニットＶＵ３を用意し、ＦＢ１１の出力と比較する内容を専用のレジスタ３２に設定しておき、コンパレータ３４による比較結果が同一となったらクロックを停止する機構を設けることができる。すなわち、図４９に示すように、ＦＵ＆ＢＡ１０は、ステップ１１１でＦＢ１１のアドレスφｍａを出力することにより、そのＦＢ１１のレジスタ４１にラッチされていたＦＵ５０の出力φｍｄをモニター用のデータバス１７に出力させることができる。したがって、ステップ１１２でデータバス１７に現れたデータφｍｄを比較用データと比較し、ステップ１１３で一致したら、ステップ１１４でＦＵ＆ＢＡ１０を一端停止し、ステップ１１５で、さらにＦＵ＆ＢＡ１０の他の内部状態を検証するなどのデバッグ作業を行なうことができる。
【０１２７】
本例では、ステップ１１４で、ＶＵ３の状態制御回路３９が状態制御信号φｓｃを出力してＦＵＢＵ１０をクロック停止モードにすることができる。ＦＵ＆ＢＡ１０を停止させたら、後は観測したいＦＢ１１のアドレス情報φｍａを指定してデータφｍｄを読み出すことにより、他のＦＵ５０の出力も随時読み出し、デバッグを行うことが可能である。また、ユーザは、内部状態でＦＵ＆ＢＡ１０を停止させた後、ステップ実行させつつＦＵ＆ＢＡ１０の全ＦＢ１１のレジスタ４１を観測でき、各ＦＢ１１のレジスタ４１の内容を書き換えて再実行させる事も可能である。さらには、ＦＵ＆ＢＡ１０を停止させた後は、図２に示したようにアレイ状に配列されている列部分のＦＢ１１のレジスタをスキャンレジスタとして直列接続させて列単位のスキャンチェインを構成して内部データを読み出すことも可能である。この方法により、スキャン型ＡＴＰＧやＢＩＳＴ型組込みテストを容易にＦＵ＆ＢＡ上に構築できる。
【０１２８】
このように、本発明のＦＵ＆ＢＡ１０は、ユーザに対してプログラマブルな条件付停止機構を提供する。さらに、図１に示した本例のＬＳＩ１においては、ＦＵ＆ＢＡ１０とＬＳＩ外部のデバッガソフト８の間にＰＵ２とＤＵ５を介在させることにより、ホスト装置９で稼動するデバッガソフト８からＦＵ＆ＢＡ１０をデバッグできる環境を提供している。ＤＵ５の機能はＰＵ２と外部デバッグソフト８とのデータの仲介をインターフェイスレジスタにより行うことであり、同時にＰＵ本体を停止させるブレーク機能も提供される。このようなＤＵ５はプロセッサ本体に含まれるケースもあるが、通常のプロセッサであれば提供されている機能である。
【０１２９】
ＤＵ５およびＰＵ２からモニターしたいＦＢ１１のアドレス情報φｍａを出力することができる。また、ＰＵ２からＶＵ３に供給されるデータφｃｄによりＶＵ３の比較データレジスタ３２のデータをセットでき、モニターして停止する値を設定することができる。さらに、データφｃｄによりＶＵ３のマスクデータ３３をセットでき、ＦＢ１１の出力レジスタ４１がＦＵ５０で使い切られていない場合などには、ＦＢ１１のモニター出力φｍｄをマスクすることができる。ＰＵ２からＶＵ３の比較器３４に対して制御信号φｃ１を送ることによりＶＵ３が比較動作を開始し、それにより停止命令を発行させたり、発行されている停止命令を無効にしたりすることができる。また、比較器３４の比較結果は信号φｃ２を介してＰＵ２に入力され、ＤＵ５を介してデバッガソフト８でモニターすることができる。さらに、ＶＵ３からＦＵ＆ＢＡ１０に供給される状態制御信号φｓｃをＰＵ２からＭＯＶＥ命令φｉによりダイレクトにセットすることも可能であり、ＲＡＭインターフェイス回路４を介してアドレスデータφｍａをＦＵ＆ＢＡ１０に供給することにより、特定のＦＢ１１の状態をＰＵ２から制御することも可能である。また、停止中のＦＢ１１のレジスタ４１の内容を書き換えて再実行させることも可能である。
【０１３０】
このようにＦＢ１１の８ビット出力単位のレジスタ４１をモニター可能かつ制御可能なプロセッサ構造をＦＵ＆ＢＡ１０と共にＬＳＩ１に内蔵させることにより、従来のＡＳＩＣやＦＰＧＡに比べデバッグ効率が飛躍的に改善され、先に述べた第４の課題である、大規模システムＬＳＩに対する充分なデバッグ機能の要求に応えた解を本発明により提供することができる。
【０１３１】
図５０に、ＰＵ２とＦＵ＆ＢＡ１０との間に存在するＲＡＭインターフェイス４を介してＦＢ１１を指定する方式を説明している。ＰＵ２が、コードとデータを分けて持つハーバード・アーキテクチャの１６ビットプロセッサであるとする。１６ビットとはアドレスの届く範囲が１６ビット（６５、５３６ワード）であり、１ワード１６ビットを想定する。本発明ではＦＢ１１の出力は８ビットであるから、データとしては１ワードのうち８ビット分は余剰となる。しかしながら、アドレスは６５，５３６ワードアクセス可能であるから、これを１対１に分離すれば２５６×２５６のメッシュをアドレスできることになる。実際には、図４９に示すように、プロセッサＰＵ２のデータＲＡＭ領域１１０を確保する必要もあるので、２５６×２２５（＝５７，６００）メッシュを各ＦＢ１１のアドレスに割り当てている。したがって、ＰＵ２のプログラムからは通常のデータＲＡＭアクセスと全く同じにしてＦＢ１１がアクセスできる。読み出しアドレスφｍａが設定されると、その読み出し結果φｍｄは、読み出しレジスタ４ｄに格納され、ＰＵ２の汎用レジスタとＤＵ５のインターフェイスレジスタを経由してデバッガソフト８の上に表示され、デバッグ目的に使用される。この方式は、ＰＵ２にとってのデータ空間の大部分をＦＵ＆ＢＡ１０にアサインする方式であり、この結果、ＦＵ＆ＢＡは８ビットデータ長のＲＡＭに見えるのである。
【０１３２】
図５１に、ＰＵ２からＦＵ＆ＢＡ１０をアクセスするときに、８ビットのオフセットアドレスを使用する例を示してある。すなわち、ＲＡＭインターフェイス回路４にアドレスオフセットレジスタ４ｓを設け、ＰＵ２から８ビット（２５６）のオフセット設定を予めすることにより、ＰＵ２から８ビット分のアドレスを出力することによりＦＵ＆ＢＡ１０の全ＦＢ１１にアクセス可能とする。この場合には、ＰＵ２のデータ空間の内、８ビット分だけをＦＵ＆ＢＡ１０に割り当てることになるので、ＲＡＭデータ１１０として確保できるアドレスは大きくなる。また、８ビットのオフセットアドレスを使用することにより、ＰＵ２からは２５６ワードのアドレスデータφｍａにより、２５６×２５６ＦＢがアドレス可能となる。ただし、インターフェイス回路４が多少複雑になり、オフセットアドレスを変える必要があるケースでは、ＦＢ１１へのアクセススピードが低下する。また、ＦＵ＆ＢＡ１０に対するアクセス方法はこれに限定されることはなく、１２８ワードにて上位・下位８ビットにて割り付ける事も勿論可能である。
【０１３３】
このように、ＦＵ＆ＢＡ１０は、ＦＢ１１あるいはそれをアレイ状に配置したＦＢＡ２８というシステムで基本回路要素としてデバッグ機構が実現されている。したがって、ユーザは、新たにデバッグ用の回路を設計したり、ユーザ論理の中にデバッグ用の論理回路を含める必要はなく、短期間に、内部状態を自由にモニタリングできるデバッグ機能を備えたシステムＬＳＩを設計および製造できる。本例のＦＵ＆ＢＡ１０では、ＦＢ１１を単位とする設計および製造によりデバッグ機能が導入されるので、必ずしもＦＢ１１に対してＦＵ５０を割り付けずに、ＦＢ１１をベースとして、そのデータパス部１０１を用いてユーザ論理を実現したＡＳＩＣあるいはシステムＬＳＩであっても、ＦＢ１１をアドレスで指定して出力をモニターできるデバッグ機能を備えた集積回路装置を提供できる。もちろん、ＦＵ５０を割り付ける本例のＦＵ＆ＢＡ１０であれば、ユーザ論理を搭載した集積回路装置の設計および製造期間は大幅に短縮することは可能となる。
【０１３４】
【発明の効果】
以上に説明したように、本発明においては、基本的に下位配線層で提供される基本回路要素により、多出力の真理値表、積和演算器およびＳＲＡＭなどのカスタマイズ可能な複数のマクロ機能ユニットを形成し、上位配線層で提供されるカスタマイズ要素により、これらのマクロ機能ユニットをカスタマイズすることによりユーザ論理が搭載された集積回路モジュールおよびそれを含めたシステムＬＳＩなどの集積回路装置を実現するようにしている。したがって、下層配線層の部分までを事前に設計あるいは製造しておくことが可能であり、集積回路装置の製造期間を大幅に短縮できる。
【０１３５】
本発明の集積回路モジュールは、単に多数配列せしめたトランジスタアレイを共通な回路要素としてメタル層によりカスタマイズするのとは異なる。従来のゲートアレイやＦＰＧＡに比べ、あらかじめ埋め込まれている機能が多入力真理値表、積和演算器などの大規模論理機能なので、論理設計を取り扱う基本単位が大きくなり、論理設計期間の短縮に寄与する。このような大規模論理機能を埋め込んでおき、その機能を上位配線層であるカスタマイズ層からプログラム可能または機能選択可能とする本発明の方式は、小さな面積において複数の機能をひとつのＦＵに持たせることを可能とする新規なＡＳＩＣであると言える。
【０１３６】
さらに、上記で説明した０／１方式メタル・コンフィギャラブルなどのように、上位配線層を通じて配線のみにより集積回路装置の最終論理をユーザ論理にしたがって決定できるので、ＦＰＧＡに見られるレジスタに真理値表を格納する方式に比較すると面積上優れており、コンパクトで低消費電力の集積回路装置を提供できるというメリットもある。
【０１３７】
さらに、本発明においては、基本回路要素により、アドレス指定することにより集積回路装置の内部状態を自由にモニタリングできるデバッグ機能をサポートするＦＢあるいはＦＢＡという構成を提供する。したがって、内部状態をモニターして、内部状態がある条件になったら集積回路装置を停止させて内部を観測するという基本的なデバッグ機能を予め作り込んでおける。このため、ユーザは、デバッグのための回路やロジックの設計に時間を費やす必要はなく、短期間に所望の機能を備えた集積回路装置を開発することができ、さらに、その機能を本発明により提供されるデバッグ機能により検証することができる。
【０１３８】
したがって、本発明により、先に説明した大規模集積回路装置に伴う幾つかの課題をすべて解決することが可能となり、短期間で、信頼性が高く高性能の集積回路装置を提供することが可能となる。
【図面の簡単な説明】
【図１】本発明に係る集積回路モジュールを搭載した集積回路装置の一例を示すブロック図である。
【図２】図１に示す集積回路モジュール（ＦＵ＆ＢＡ）の概要を示すブロック図である。
【図３】図２に示す集積回路モジュールの断面構成を説明する図である。
【図４】図２に示す集積回路モジュールを構成するＦＢにＦＵを割り付けた例を示す図である。
【図５】図２に示す集積回路モジュールを構成するＦＢに異なるＦＵを割り付けた例を示す図である。
【図６】図２に示す集積回路モジュールを構成するＦＢにさらに異なるＦＵを割り付けた例を示す図である。
【図７】ＦＢにＦＵを割り付けた状態をＦＵの単位で示す図である。
【図８】真理値テーブルをＦＵとして割り付けた状態を示す図である。
【図９】異なる真理値テーブルをＦＵとして割り付けた状態を示す図である。
【図１０】トライステート論理素子の例を示す図である。
【図１１】さらに異なるトライステート論理素子の例を示す図である。
【図１２】さらに異なる真理値テーブルをＦＵとして割り付けた状態を示す図である。
【図１３】マルチファンクション回路をＦＵとして割り付けた状態を示す図である。
【図１４】異なるマルチファンクション回路をＦＵとして割り付けた状態を示す図である。
【図１５】図１４に示すデコーダユニットの構成を示す図である。
【図１６】図１５に示すデコーダユニットをカスタマイズした例を示す図である。
【図１７】図１６のデコーダユニットで実現される論理を示す図である。
【図１８】図１５に示すデコーダユニットを異なる論理にカスタマイズした例を示す図である。
【図１９】図１８に示すデコーダユニットで実現される論理を示す図である。
【図２０】図１５に示すデコーダユニットをさらに異なる論理にカスタマイズした例を示す図である。
【図２１】図２０に示すデコーダユニットで実現される論理を示す図である。
【図２２】図１４に示すセレクタユニットの構成を示す図である。
【図２３】図１４に示すマルチファンクション回路により加算器を構成した例を示す図である。
【図２４】図２３に示す加算器を用いて、ｎビットのリップル・キャリー加算器を構成した例を示す図である。
【図２５】図２３に示す加算器を用いて、８ビットコンパレータを構成した例を示す図である。
【図２６】図２３に示す加算器を用いて、キャリー・ルックアヘッド加算器を構成した例を示す図である。
【図２７】図２３に示す加算器を用いて、異なるキャリー・ルックアヘッド加算器を構成した例を示す図である。
【図２８】図２３に示す加算器を用いて、アレー型乗算器を構成した例を示す図である。
【図２９】さらに異なるマルチファンクション回路をＦＵとして割り付けた状態を示す図である。
【図３０】ＯＲゲートとして機能する演算回路の例を示す図である。
【図３１】乗算器をＦＵとして割り付けた状態を示す図である。
【図３２】積和演算器をＦＵとして割り付けた状態を示す図である。
【図３３】図３２に示すＦＵのカスタマイズの条件を示す図である。
【図３４】異なる積和演算器をＦＵとして割り付けた状態を示す図である。
【図３５】ＳＲＡＭをＦＵとして割り付けた状態を示す図である。
【図３６】ＳＲＡＭをカスタマイズする回路例を示す図である。
【図３７】ＳＲＡＭのビット幅をカスタマイズする例を示す図である。
【図３８】ＳＲＡＭのビット幅をカスタマイズした出力を示す図である。
【図３９】異なるＳＲＡＭをＦＵとして割り付けた状態を示す図である。
【図４０】図３９に示すＳＲＡＭのセレクタ回路部の構成を示す図であり、１６ビット幅となるように接続された状態を示す図である。
【図４１】図４０のセレクタ回路部を８ビット幅となるように接続された状態を示す図である。
【図４２】図４０のセレクタ回路部の構成を４ビット幅となるように接続された状態を示す図である。
【図４３】図４０のセレクタ回路部を２ビット幅となるように接続された状態を示す図である。
【図４４】さらに異なるＳＲＡＭをＦＵとして割り付けた状態を示す図である。
【図４５】さらに異なるＳＲＡＭをＦＵとして割り付けた状態を示す図である。
【図４６】図４５に示すＳＲＡＭのＲＡＭセルのさらに詳しい構成を示す図である。
【図４７】集積回路装置を設計および製造する工程を示す図である。
【図４８】ＦＢのデバッグに係る構成を示すブロック図である。
【図４９】デバッグの工程を示すフローチャートである。
【図５０】ＦＢをアドレス指定する様子を説明する図である。
【図５１】上記と異なる方法でＦＢをアドレス指定する様子を説明する図である。
【符号の説明】
１　　システムＬＳＩ（ＡＳＩＣまたは集積回路装置）
２　　基本プロセッサ（ＰＵ）
３　　比較ユニット（ＶＵ）
４　　ＲＡＭインターフェイス
５　　デバッグユニット（ＤＵ）
１０　　集積回路モジュール（ＦＵ＆ＢＡ）
１１　　ＦＢ
４０　　出力インターフェイス
４１　　レジスタ
５０　　ＦＵ
【図１】
2004129188.tif 000003
【図２】
2004129188.tif 000004
【図３】
2004129188.tif 000005
【図４】
2004129188.tif 000006
【図５】
2004129188.tif 000007
【図６】
2004129188.tif 000008
【図７】
2004129188.tif 000009
【図８】
2004129188.tif 000010
【図９】
2004129188.tif 000011
【図１０】
2004129188.tif 000012
【図１１】
2004129188.tif 000013
【図１２】
2004129188.tif 000014
【図１３】
2004129188.tif 000015
【図１４】
2004129188.tif 000016
【図１５】
2004129188.tif 000017
【図１６】
2004129188.tif 000018
【図１７】
2004129188.tif 000019
【図１８】
2004129188.tif 000020
【図１９】
2004129188.tif 000021
【図２０】
2004129188.tif 000022
【図２１】
2004129188.tif 000023
【図２２】
2004129188.tif 000024
【図２３】
2004129188.tif 000025
【図２４】
2004129188.tif 000026
【図２５】
2004129188.tif 000027
【図２６】
2004129188.tif 000028
【図２７】
2004129188.tif 000029
【図２８】
2004129188.tif 000030
【図２９】
2004129188.tif 000031
【図３０】
2004129188.tif 000032
【図３１】
2004129188.tif 000033
【図３２】
2004129188.tif 000034
【図３３】
2004129188.tif 000035
【図３４】
2004129188.tif 000036
【図３５】
2004129188.tif 000037
【図３６】
2004129188.tif 000038
【図３７】
2004129188.tif 000039
【図３８】
2004129188.tif 000040
【図３９】
2004129188.tif 000041
【図４０】
2004129188.tif 000042
【図４１】
2004129188.tif 000043
【図４２】
2004129188.tif 000044
【図４３】
2004129188.tif 000045
【図４４】
2004129188.tif 000046
【図４５】
2004129188.tif 000047
【図４６】
2004129188.tif 000048
【図４７】
2004129188.tif 000049
【図４８】
2004129188.tif 000050
【図４９】
2004129188.tif 000051
【図５０】
2004129188.tif 000052
【図５１】
2004129188.tif 000053