(57)【要約】本半導体集積回路は、複数個のメモリブロック（１１）から構成されている。各メモリブロック（１１）は、四辺（１２ａ〜１２ｄ）で囲まれ、各辺（１２ａ〜１２ｄ）毎にアドレス入力端子（Ａ０〜Ａ１１）およびデータ入出力端子（Ｄ０〜Ｄ１１）が設けられている。隣接する２つのメモリブロック（１１）を第１および第２のメモリブロック（１１）とすると、第１のメモリブロック（１１）の辺（１２ａ）に設けられたアドレス入力端子（Ａ０〜Ａ２）が、第２のメモリブロック（１１）の対向する辺のデータ入出力端子（Ｄ８〜Ｄ６）にそれぞれ接続されている。第１のメモリブロック（１１）の辺（１２ａ）に設けられたデータ入出力端子（Ｄ０〜Ｄ２）は、第２のメモリブロック（１１）の対向する辺のアドレス入力端子（Ａ８〜Ａ６）にそれぞれ接続されている。各メモリブロック（１１）は、フレキシブルな可変論理セルを構成する。これらの可変論理セルによって所望の論理回路が形成される。
2005008893.tif 000002
【特許請求の範囲】
【請求項１】
複数の辺で囲まれた領域毎に形成された複数のメモリブロックと、
前記辺毎に設けられた複数のアドレス入力端子およびデータ入出力端子と、
前記複数のメモリブロックのうち第１のメモリブロックの第１の辺に隣接する第２のメモリブロックとの間で、前記第１の辺の少なくとも１つのアドレス入力端子を、前記第２のメモリブロックの対向する辺のデータ入出力端子に接続し、前記第１の辺の少なくとも１つのデータ入出力端子を、前記第２のメモリブロックの対向する辺のアドレス入力端子に接続する接続手段と、から論理回路を構成することを特徴とする半導体集積回路。
【請求項２】
前記メモリブロックは、外部装置により予め書き込まれたデータによって、前記アドレス入力端子に入力される内部アドレス信号と前記データ入出力端子から出力される内部データ信号との関係を論理変換することを特徴とする請求項１記載の半導体集積回路。
【請求項３】
前記メモリブロックは、スイッチ回路として動作することを特徴とする請求項２記載の半導体集積回路。
【請求項４】
前記メモリブロックは、組み合わせ論理回路として動作することを特徴とする請求項２記載の半導体集積回路。
【請求項５】
複数個の前記メモリブロックは、その一部で帰還経路を形成することにより、全体として順序論理回路として動作することを特徴とする請求項２記載の半導体集積回路。
【請求項６】
前記接続手段は、外部装置から送られる外部入力アドレス信号および外部入力データ信号をそれぞれ切り換え選択可能に前記メモリブロックに入力するためのセレクタをさらに備えていることを特徴とする請求項１ないし５いずれかに記載の半導体集積回路。
【請求項７】
前記接続手段は、外部装置から送られる外部入力アドレス信号および外部入力データ信号をスキャンパスを介し、シフト動作によってシリアルに前記メモリブロックに入力するためのシフタブルレジスタをさらに備えていることを特徴とする請求項１ないし５いずれかに記載の半導体集積回路。
【請求項８】
前記各シフタブルレジスタは、前記スキャンパスにより直列に連結されていることを特徴とする請求項７記載の半導体集積回路。
【請求項９】
前記各メモリブロック内の不良ビットは、前記スキャンパスを介して検出されることを特徴とする請求項９記載の半導体集積回路。
【請求項１０】
前記接続手段は、第１のメモリブロックのデータ入出力端子から出力される内部データ信号を自己のアドレス入力端子に帰還するか、または、この内部データ信号を隣接する第２のメモリブロックへ転送するかを選択可能とするマルチプレクサをさらに備えていることを特徴とする請求項１ないし９のいずれかに記載の半導体集積回路。
【請求項１１】
前記複数のアドレス入力端子およびデータ入出力端子のうち、前記論理変換に用いられていないアドレス入力端子およびデータ入出力端子を前記マルチプレクサの選択制御に用いることで、前記メモリブロックに搭載される論理の圧縮を行うことを特徴とする請求項１０記載の半導体集積回路。
【請求項１２】
前記各メモリブロックは、３辺で囲まれた三角形をしていることを特徴とする請求項１ないし１１いずれかに記載の半導体集積回路。
【請求項１３】
前記各メモリブロックは、複数のアドレス入力端子およびデータ入出力端子が設けられた上面および下面をさらに備えており、前記接続手段は、第１のメモリブロックの上面のアドレス入力端子をその上面に隣接するメモリブロックの下面のデータ入出力端子に接続し、前記第１のメモリブロックの上面のデータ入出力端子をその上面に隣接する前記メモリブロックの下面のアドレス入力端子に接続することを特徴とする請求項１ないし１２のいずれかに記載の半導体集積回路。
【発明の詳細な説明】
【技術分野】  本発明は、任意の論理をプログラム可能とする複数のメモリブロックにより構成された半導体集積回路に関するものである。
技術背景
ＩＣの製造完成後にフィールドでユーザがＩＣ内部の回路を電気的にプログラム（書き込み）することにより、様々な論理構成を実現することのできる汎用のロジックＩＣとしてＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）が知られている。
第２５図（Ａ）に示すようにＦＰＧＡ１００は、任意の論理を構成可能とされた複数の可変論理ブロックＣＬＢ１０１と、各論理ブロックＣＬＢ１０１を結ぶ配線群の接続状態をプログラマブルに切り換えるスイッチ回路１０２とによって構成されている。可変論理ブロックＣＬＢ１０１は、第２５図（Ｂ）に示すように、組み合わせ論理回路を表現するブロックであるＬＵＴ（Ｌｏｏｋ  Ｕｐ  Ｔａｂｌｅ）１０１ａと、論理情報を一時的に記憶・保持するフリップフロップ（ＦＦ）１０１ｂとからなる。ＬＵＴ１０１ａには、一般的に微小なＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）が用いられる。
また、スイッチ回路１０２は、第２５図（Ｃ）に示すようにＭＯＳスイッチ１０２ａのゲート電極に１ビットの情報が記憶されたＳＲＡＭ１０２ｂが接続されてなる。ＭＯＳスイッチ１０２ａのオン／オフは、ＳＲＡＭ１０２ｂに記憶された情報（“０”または“１”）によって制御される。このように構成されたＦＰＧＡ１００は「ＳＲＡＭベースのＦＰＧＡ」と呼ばれる。ＦＰＧＡ１００は、ＣＬＢ１０１とスイッチ回路１０２を構成要素としてプログラマブルに論理を構成することのできるロジックＩＣである。
このＦＰＧＡ１００のユーザは、まず実現しようとする所望の論理機能をＨＤＬ（Ｈａｒｄｗａｒｅ  Ｄｅｓｃｒｉｐｔｉｏｎ  Ｌａｎｇｕａｇｅ）で記述し、この記述を論値合成ツールと呼ばれるプログラムによりＬＵＴ１０１ａの論理値やスイッチ回路１０２のオン／オフ情報を表わす論理ゲートレベルの設計データに変換する。そして、この設計データをフィールドでＦＰＧＡ１００に書き込むことによって、当該論理機能がＦＰＧＡ１００上に構成される。
本発明者らは、上記のＦＰＧＡとは異なる技術として、ＳＲＡＭやＤＲＡＭ（Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）などの汎用メモリに類似した構成を有するメモリブロック（メモリ回路）を利用し、このメモリブロックのアドレス入力とデータ出力との関係が所望する論理回路の入力と出力との関係に対応するように、メモリブロックに論理データを格納することを可能とし、ユーザがフィールドで論理をプログラムすることのできるデバイスに関する技術を提案しており、これは例えば、国際公開ＷＯ／５２７３５号公報または特開２００３−１４９３００号公報に開示されている。この技術によると、デバイスの構成が単純であり、メモリブロックに所望の論理機能を実現するための論理データを書き込むことで、所望の論理機能を有する回路が容易に得られるので、設計工数および開発期間が大幅に短縮される。
しかしながら、上記の先願発明は、ＦＰＧＡ１００の論理ブロックＣＬＢ１０１をメモリブロックによって構成したものであり、少なくとも各メモリブロック間を任意に接続するために配線群の接続状態を切り換えるスイッチ回路が要される。そのため、回路が大規模になるにしたがい、スイッチ回路に含まれオン／オフ情報を記憶するための記憶回路の記憶容量およびその占有面積が増大する。また、組み合わせ論理を記憶させる領域と、それらの組み合わせ論理の接続状態を記憶する領域とが別々に構成されるため、論理データを効率よく格納することができない。
【発明の開示】
本発明は、論理ブロックとスイッチ回路との区別をなくしたフレキシブルな可変論理セルにより構成された半導体集積回路を提供するものである。
上記目的を達成するために、本発明の半導体集積回路は、複数の辺で囲まれた領域毎に形成された複数のメモリブロックと、前記辺毎に設けられた複数のアドレス入力端子およびデータ入出力端子と、前記複数のメモリブロックのうち第１のメモリブロックの第１の辺に隣接する第２のメモリブロックとの間で、前記第１の辺の少なくとも１つのアドレス入力端子を、前記第２のメモリブロックの対向する辺のデータ入出力端子に接続し、前記第１の辺の少なくとも１つのデータ入出力端子を、前記第２のメモリブロックの対向する辺のアドレス入力端子に接続する接続手段と、から論理回路を構成することを特徴とするものである。
前記メモリブロックは、外部装置により予め書き込まれたデータによって、前記アドレス入力端子に入力される内部アドレス信号と前記データ入出力端子から出力される内部データ信号との関係を論理変換することを特徴とするものである。
前記メモリブロックは、スイッチ回路として動作することを特徴とするものである。
前記メモリブロックは、組み合わせ論理回路として動作することを特徴とするものである。
複数個の前記メモリブロックは、その一部で帰還経路を形成することにより、全体として順序論理回路として動作することを特徴とするものである。
前記接続手段は、外部装置から送られる外部入力アドレス信号および外部入力データ信号をそれぞれ切り換え選択可能に前記メモリブロックに入力するためのセレクタをさらに備えてもよい。
前記接続手段は、外部装置から送られる外部入力アドレス信号および外部入力データ信号をスキャンパスを介し、シフト動作によってシリアルに前記メモリブロックに入力するためのシフタブルレジスタをさらに備えてもよい。
前記各シフタブルレジスタは、前記スキャンパスにより直列に連結されていることが好ましい。
前記各メモリブロック内の不良ビットは、前記スキャンパスを介して検出されることが好ましい。
前記接続手段は、第１のメモリブロックのデータ入出力端子から出力される内部データ信号を自己のアドレス入力端子に帰還するか、または、この内部データ信号を隣接する第２のメモリブロックへ転送するかを選択可能とするマルチプレクサをさらに備えるようにしてもよい。
前記複数のアドレス入力端子およびデータ入出力端子のうち、前記論理変換に用いられていないアドレス入力端子およびデータ入出力端子を前記マルチプレクサの選択制御に用いることで、前記メモリブロックに搭載される論理の圧縮を行うことが好ましい。
前記各メモリブロックは、３辺で囲まれた三角形をしていてもよい。
前記各メモリブロックは、複数のアドレス入力端子およびデータ入出力端子が設けられた上面および下面をさらに備えており、前記接続手段は、第１のメモリブロックの上面のアドレス入力端子をその上面に隣接するメモリブロックの下面のデータ入出力端子に接続し、前記第１のメモリブロックの上面のデータ入出力端子をその上面に隣接する前記メモリブロックの下面のアドレス入力端子に接続してもよい。
【図面の簡単な説明】  第１図は可変論理セルの構成を示す図であり、
第２図（Ａ）および（Ｂ）はデータセレクタの構成および動作を説明する回路図であり、
第３図（Ａ）および（Ｂ）はアドレスセレクタの構成および動作を説明する回路図であり、
第４図はトライステートバッファの真理値を示す図であり、
第５図はマトリクス状に２次元配列された可変論理セルを示す図であり、
第６図は隣接する可変論理セル間の接続手段を示す図であり、
第７図はスイッチ回路を構成するためにメモリブロック内に格納すべき論理データの一例を示す図であり、
第８図は組み合わせ論理回路を構成するためにメモリブロック内に格納すべき論理データの一例を示す図であり、
第９図は第２の可変論理セルの構成を示す図であり、
第１０図はシフタブルレジスタの構成を示す回路図であり、
第１１図は可変論理ＬＳＩに所望の論理機能を構成するための手順を説明するフローチャートであり、
第１２図は第３の可変論理セルの構成を示す図であり、
第１３図はマルチプレクサの構成を示す回路図であり、
第１４図（Ａ）は、２つの論理段数を持つ回路の一例を示す図であり、第１４図（Ｂ）は第１４図（Ａ）の回路を構成するためにメモリブロック内に格納すべき論理データの一例を示す図であり、
第１５図は第４の可変論理セルの構成を示す図であり、
第１６図（Ａ）は４入力１出力の回路の一例を示す図であり、第１６図（Ｂ）は第１６図（Ａ）の回路を構成するためにメモリブロック内に格納すべき論理データの一例を示す図であり、
第１７図は第５の可変論理セルの構成を示す図であり、
第１８図は２次元の初源メモリ論理空間が圧縮されるイメージを示す図であり、
第１９図はメモリブロックの端子配列の別の例を示す図であり、
第２０図（Ａ）は三角形のメモリブロックを示す図であり、第２０図（Ｂ）は三角形の可変論理セルが配列された２次元平面を示す図であり、
第２１図（Ａ）は上面および下面に端子が配置されたメモリブロックを示す図であり、第２１図（Ｂ）は可変論理セルが３次元的に配置された様子を示す図であり、
第２２図は３次元的に配置された可変論理セルの上下方向の断面を示す図であり、
第２３図はＳＯＣのテストを説明するフローチャートであり、
第２４図はＳＯＣの構成を示す図であり、
第２５図（Ａ）〜（Ｃ）はＦＰＧＡの構成を示す図である。
【発明を実施するための最良の形態】  第１図において、可変論理セル１０は、四辺１２ａ〜１２ｄで囲まれた領域に形成された方形のメモリブロック１１と、メモリブロック１１の四辺１２ａ〜１２ｄに沿って配置され、メモリブロック１１に対するデータ信号の入出力を切り換えるためのデータセレクタ（ＤＳＥＬ）１６ａ〜１６ｄと、ＤＳＥＬ１６ａ〜１６ｄの外側に配置され、メモリブロック１１に対するアドレス信号の入力を選択するためのアドレスセレクタ（ＡＳＥＬ）１７ａ〜１７ｄと、ＤＳＥＬ１６ａ〜１６ｄとＡＳＥＬ１７ａ〜１７ｄとの間に配線され、ＤＳＥＬ１６ａ〜１６ｄに外部入力データ信号ｅｄ０〜ｅｄ１１を供給するための外部データバス１３と、同じくＤＳＥＬ１６ａ〜１６ｄとＡＳＥＬ１７ａ〜１７ｄとの間に配線され、ＡＳＥＬ１７ａ〜１７ｄに外部入力アドレス信号ｅａ０〜ｅａ１１を供給するための外部アドレスバス１４とからなる。外部入力データ信号ｅｄ０〜ｅｄ１１および外部入力アドレス信号ｅａ０〜ｅａ１１は、データ書き込み時やテストモード時に外部から入力される信号である。
メモリブロック１１は、図示しないが、複数のメモリセルトランジスタがマトリクス状に配置されるとともに、複数のワード線と複数のビット線が格子状に配置されてなる公知のＳＲＡＭであり、アドレス信号のデコーダ回路やメモリセルトランジスタからビット線に読み出された電位を増幅するセンスアンプ回路などを備えている。なお、このデコーダ回路を、配線により構成されたワイヤードＡＮＤワイヤードＯＲなどの論理回路を用いて構成し、回路規模を削減するようにしてもよい。
メモリブロック１１は、１２個のアドレス入力端子Ａ０〜Ａ１１と、１２個のデータ入出力端子Ｄ０〜Ｄ１１とが設けられており、各辺にアドレス入力端子とデータ入出力端子とが混在し、Ａ０，Ｄ０，Ａ１，Ｄ１，Ａ２，Ｄ２，・・・，Ａ１１，Ｄ１１と、それぞれ交互に並ぶように配列されている。また、辺１２ａには端子Ａ０〜Ａ２および端子Ｄ０〜Ｄ２が、辺１２ｂには端子Ａ３〜Ａ５および端子Ｄ３〜Ｄ５が、辺１２ｃには端子Ａ６〜Ａ８および端子Ｄ６〜Ｄ８が、辺１２ｄには端子Ａ９〜Ａ１１および端子Ｄ９〜Ｄ１１が各々配置されている。なお、アドレス入力端子およびデータ入出力端子の数を各々１２個としたが、この数は任意であり、例えば各々８個や１６個としてもよい。また、メモリブロック１１はＳＲＡＭに限られず、ＤＲＡＭ等のメモリを用いてもよい。
ＤＳＥＬ１６ａは、外部データバス１３から入力される外部入力データ信号ｅｄ０〜ｅｄ２をメモリブロック１１に向けて出力するか、若しくはメモリブロック１１から入力される内部データ信号ｉｄ０〜ｉｄ２をメモリブロック１１から離反する方向に出力する。なお、その他のＤＳＥＬ１６ｂ〜１６ｄについても同様である。また、信号線１５がＤＳＥＬ１６ａ〜１６ｄを直列に結ぶように配線され、この信号線１５を介して切り換え信号ＴＳが各ＤＳＥＬ１６ａ〜１６ｄに入力されている。
ＡＳＥＬ１７ａは、外部アドレスバス１４から入力される外部入力アドレス信号ｅａ０〜ｅａ２をメモリブロック１１に向けて出力するか、若しくは他のメモリブロック１１から送られる内部アドレス信号ｉａ０〜ｉａ２をメモリブロック１１に向けて出力する。なお、その他のＡＳＥＬ１７ｂ〜１７ｄについても同様である。また、信号線１５はＡＳＥＬ１７ａ〜１７ｄをも直列に結ぶように配線され、信号線１５を介して切り換え信号ＴＳが各ＡＳＥＬ１７ａ〜１７ｄに入力されている。
第２図（Ａ）および（Ｂ）は、ＤＳＥＬ１６ａの構成およびその機能について説明する図であり、データ入出力端子Ｄ０に連結される部分のみを示す。ＤＳＥＬ１６ａは、１つの端子Ｄ０に対してトライステートバッファ（ＴＲＢＵＦ）１８ａ，１８ｂを備え、ＴＲＢＵＦ１８ａの出力にフリップフロップ（ＦＦ）１８ｃが接続されている。なお、このＦＦ１８ｃはデータを一時的に保持するものであるが、これは必須ではないため設けなくてもよい。
ＴＲＢＵＦ１８ａ，１８ｂは、第４図に示す真理値をとる論理回路である。ＴＲＢＵＦ１８ａには切り換え信号ＴＳが第４図の“ｅｎａｂｌｅ”信号として入力され、ＴＲＢＵＦ１８ｂには切り換え信号ＴＳの反転信号が第４図の“ｅｎａｂｌｅ”信号として入力される。“ｅｎａｂｌｅ”信号が“１”であれば、“ｉｎ”に入力されたデータは“ｏｕｔ”にそのまま出力され、“ｅｎａｂｌｅ”信号が“０”であれば“ｉｎ”に入力されたデータに係わらず“ｏｕｔ”は不定値（ハイインピーダンス）“ｚ”となる。
第２図（Ａ）は、切り換え信号ＴＳが“０”の場合であり、ＴＲＢＵＦ１８ａには“０”、ＴＲＢＵＦ１８ｂには“１”が“ｅｎａｂｌｅ”信号として入力されるので、ＴＲＢＵＦ１８ｂの入出力のみが有効となる。このとき、外部データバス１３からＤＳＥＬ１６ａに入力された外部入力データ信号ｅｄ０がＴＲＢＵＦ１８ｂを介してメモリブロック１１のデータ入出力端子Ｄ０に入力される。
第２図（Ｂ）は、切り換え信号ＴＳが“１”の場合であり、ＴＲＢＵＦ１８ａには“１”、ＴＲＢＵＦ１８ｂには“０”が“ｅｎａｂｌｅ”信号として入力されるので、ＴＲＢＵＦ１８ａの入出力のみが有効となる。このとき、メモリブロック１１から出力されＤＳＥＬ１６ａに入力された内部データ信号ｉｄ０がＴＲＢＵＦ１８ａを介してＦＦ１８ｃにラッチされるとともに、メモリブロック１１から離反する方向に向けて（後述する隣接するメモリブロックに向けて）出力される。なお、ＤＳＥＬ１６ａ内のその他のデータ入出力端子Ｄ１，Ｄ２に連結される部分についても同様であり、さらに、他のＤＳＥＬ１６ｂ〜１６ｄの構成についても同様である。
第３図（Ａ）および（Ｂ）は、ＡＳＥＬ１７ａの構成およびその機能について説明する図であり、アドレス入力端子Ａ０に連結される部分のみを示す。ＡＳＥＬ１７ａは、１つの端子Ａ０に対してトライステートバッファ（ＴＲＢＵＦ）１９ａ，１９ｂを備え、ＴＲＢＵＦ１９ａ，１９ｂの出力にフリップフロップ（ＦＦ）１９ｃが接続されている。なお、このＦＦ１９ｃはデータを一時的に保持するものであるが、これは必須ではないため設けなくてもよい。
このＴＲＢＵＦ１９ａ，１９ｂも第４図に示す真理値をとる論理回路である。ＴＲＢＵＦ１９ａには切り換え信号ＴＳが“ｅｎａｂｌｅ”信号として入力され、ＴＲＢＵＦ１９ｂには切り換え信号ＴＳの反転信号が“ｅｎａｂｌｅ”信号として入力される。
第３図（Ａ）は、切り換え信号ＴＳが“０”の場合であり、ＴＲＢＵＦ１９ａには“０”、ＴＲＢＵＦ１９ｂには“１”が“ｅｎａｂｌｅ”信号として入力されるので、ＴＲＢＵＦ１９ｂの入出力のみが有効となる。このとき、外部アドレスバス１４からＡＳＥＬ１７ａに入力された外部入力アドレス信号ｅａ０がＴＲＢＵＦ１９ｂを介してＦＦ１９ｃにラッチされるとともに、メモリブロック１１のアドレス入力端子Ａ０に入力される。
第３図（Ｂ）は、切り換え信号ＴＳが“１”の場合であり、ＴＲＢＵＦ１９ａには“１”、ＴＲＢＵＦ１９ｂには“０”が“ｅｎａｂｌｅ”信号として入力されるので、ＴＲＢＵＦ１９ａの入出力のみが有効となる。このとき、後述する隣接するメモリブロック１１から入力された内部アドレス信号ｉａ０がＴＲＢＵＦ１９ａを介してＦＦ１９ｃにラッチされるとともに、メモリブロック１１のアドレス入力端子Ａ０に入力される。なお、ＡＳＥＬ１７ａ内のその他のアドレス入力端子Ａ１，Ａ２に連結される部分についても同様であり、さらに、他のＡＳＥＬ１７ｂ〜１７ｄの構成についても同様である。
なお、切り換え信号ＴＳの論理を上記とは逆にし、切り換え信号ＴＳが“１”の場合に外部入力データ信号ｅａ０〜ｅａ１１および外部入力アドレス信号ｅａ０〜ｅａ１１を選択し、切り換え信号ＴＳが“０”の場合に外部入力データ信号ｅａ０〜ｅａ１１および内部アドレス信号ｅａ０〜ｅａ１１を選択するようにＤＳＥＬ１６ａ〜１６ｄおよびＡＳＥＬ１７ａ〜１７ｄを構成してもよい。
第５図は、以上のように構成された可変論理セル１０を平面内に２次元マトリクス状に並べ、隣接する可変論理セル１０間を相互に接続することにより構成した可変論理ＬＳＩ（半導体集積回路）を示す。外部アドレスバス１４は各メモリブロック１１に共通に接続されており、一方、外部データバス１３は各メモリブロック１１に独立に接続されている。
第６図に隣接するメモリブロック１１間の接続手段の詳細を示すように、接続手段は、あるメモリブロック１１のデータ入出力端子Ｄｎ（ｎ＝０〜１１）から出力された内部データ信号ｉｄｎ（ｎ＝０〜１１）を、隣接するメモリブロック１１のアドレス指定を行う内部アドレス信号ｉａｍ（ｍ＝０〜１１）としてアドレス入力端子Ａｍ（ｍ＝０〜１１）に入力するように構成されている。
具体的には、あるメモリブロック１１の辺１２ａのデータ入出力端子Ｄ０〜Ｄ２は、隣接するメモリブロック１１の辺１２ｃのアドレス入力端子Ａ８〜Ａ６に、ＤＳＥＬ１６ａおよびＡＳＥＬ１７ｃを介してそれぞれ接続されている。切り換え信号ＴＳが“１”の場合には、データ入出力端子Ｄ０〜Ｄ２からＤＳＥＬ１６ａを介して出力された内部データ信号ｉｄ０〜ｉｄ２は、隣接するメモリブロック１１の内部アドレス信号ｉａ８〜ｉａ６となって、ＡＳＥＬ１７ｃを介してアドレス入力端子Ａ８〜Ａ６にそれぞれ入力される。
また、あるメモリブロック１１の辺１２ｃのデータ入出力端子Ｄ６〜Ｄ８は、隣接するメモリブロック１１の辺１２ａのアドレス入力端子Ａ２〜Ａ０に、ＤＳＥＬ１６ｃおよびＡＳＥＬ１７ａを介してそれぞれ接続されている。切り換え信号ＴＳが“１”の場合には、データ入出力端子Ｄ６〜Ｄ８からＤＳＥＬ１６ｃを介して出力された内部データ信号ｉｄ６〜ｉｄ８は、隣接するメモリブロック１１の内部アドレス信号ｉａ２〜ｉａ０となって、ＡＳＥＬ１７ａを介してアドレス入力端子Ａ２〜Ａ０にそれぞれ入力される。
縦方向に隣接するメモリブロック１１間の接続手段に関しても同様であり、辺１２ｂのデータ入出力端子Ｄ３〜Ｄ５は、隣接するメモリブロック１１の辺１２ｄのアドレス入力端子Ａ１１〜Ａ９に、ＤＳＥＬ１６ｂおよびＡＳＥＬ１７ｄを介してそれぞれ接続され、内部データ信号ｉｄ３〜ｉｄ５は、それぞれ隣接するメモリブロック１１のアドレス指定を行う内部アドレス信号ｉａ１１〜ｉａ９となっている。また、辺１２ｄのデータ入出力端子Ｄ９〜Ｄ１１は、隣接するメモリブロック１１の辺１２ｂのアドレス入力端子Ａ５〜Ａ３に、ＤＳＥＬ１６ｄおよびＡＳＥＬ１７ｂを介してそれぞれ接続され、内部データ信号ｉｄ９〜ｉｄ１１は、それぞれ隣接するメモリブロック１１のアドレス指定を行う内部アドレス信号ｉａ５〜ｉａ３となっている。
このように、隣接する２つのメモリブロック１１の対向する２辺１２ａ，１２ｃまたは１２ｂ，１２ｄにおいて、一方のメモリブロック１１のアドレス入力端子が他方のメモリブロック１１のデータ入出力端子に相互に接続されている。
第７図は、メモリブロック１１に論理データを書き込み、可変論理セル１０をスイッチ回路（接続変換器）として機能させるために、アドレス入力端子Ａ０〜Ａ１１とデータ入出力端子Ｄ０〜Ｄ１１とに与える信号の論理の一例を示す。この書き込みは、外部データバス１３、外部アドレスバス１４、および信号線１５に接続された図示しないパーソナルコンピュータ等の外部装置により制御される。このとき、前述したように切り換え信号ＴＳが“０”とされて、外部入力アドレス信号ｅａ０〜ｅａ１１および外部入力データ信号ｅｄ０〜ｅｄ１１が、アドレス入力端子Ａ０〜Ａ１１およびデータ入出力端子Ｄ０〜Ｄ１１に入力される。例えば、同図に示すように、端子Ｄ３〜Ｄ５には、端子Ａ０〜Ａ２と同一論理の信号が与えられる。同図中の“Ｘ”は、論理が“０”と“１”のどちらであっても良いことを意味し、端子Ｄ０〜Ｄ２，Ｄ６〜Ｄ１１に与えられる論理は任意である。
このような論理データがメモリブロック１１に格納され、切り換え信号ＴＳが“１”とされると、左方に隣接する可変論理セル１０から左辺１２ａのアドレス入力端子Ａ０〜Ａ２に入力された信号は、同一論理のまま、下辺１２ｂのデータ入出力端子Ｄ３〜Ｄ５から下方に隣接する可変論理セル１０に向けて出力されることとなる。なお、アドレス入力端子とデータ入出力端子との対応を変えるように格納する論理データを変更することで、ある１つの辺に入力された信号を辺１２ａ〜１２ｄのいずれの辺からでも出力することができる。例えば、左辺１２ａに入力された信号を反射するように、同じく左辺１２ａから出力するといったことも可能となる。このように、可変論理セル１０は、メモリブロック１１に格納された論理データに基づいて信号の流れを切り換えることのできるスイッチ回路として機能する。
第８図は、メモリブロック１１に論理データを書き込み、可変論理セル１０を組み合わせ論理回路として機能させるために、アドレス入力端子Ａ０〜Ａ１１とデータ入出力端子Ｄ０〜Ｄ１１とに与える信号の論理の一例を示す。書き込み制御に関しては上記と同様である。例えば、同図に示すように、端子Ｄ６には端子Ａ０，Ａ１の論理の論理積（ＡＮＤ）が与えられ、端子Ｄ７には端子Ａ１，Ａ２の論理の論理和（ＯＲ）が与えられ、端子Ｄ８には端子Ａ０，Ａ２の論理の排他論理和（ＥＯＲ）が与えられる。
このような論理データがメモリブロック１１に格納され、切り換え信号ＴＳが“１”とされると、左方に隣接する可変論理セル１０から左辺１２ａのアドレス入力端子Ａ０〜Ａ２に入力された信号は、上記の論理演算が行われて、右辺１２ｃのデータ入出力端子Ｄ６〜Ｄ８から右方に隣接する可変論理セル１０に向けて出力されることとなる。なお、格納する論理データを変更することでＮＡＮＤ、ＮＯＲ、ＥＮＯＲなどの組み合わせ論理演算も行うことができ、アドレス入力端子とデータ入出力端子との対応関係を変えることで、同時に信号の入出力の方向を変えることができることは言うまでもない。このように、２つ以上の異なる入力信号に応じた論理データをメモリブロック１１に格納することによって、可変論理セル１０は組み合わせ論理回路として機能する。
また、例えば、アドレス入力端子Ａ０またはＡ１に入力されたいずれかの信号と同一論理の信号を、アドレス入力端子Ａ２に入力される信号（選択信号）に応じて、データ入出力端子Ｄ６から出力させるように論理データを生成し、その論理データをメモリブロック１１に格納することにより、可変論理セル１０を、複数の入力信号から１つを選んで出力端子から出力する入力選択型のマルチプレクサとして機能させることも可能である。
さらに、例えば、アドレス入力端子Ａ０に入力された信号と同一論理の信号を、アドレス入力端子Ａ１に入力される信号（選択信号）に応じて、データ入出力端子Ｄ６またはＤ７のいずれかから出力させるように論理データを生成し、その論理データをメモリブロック１１に格納することにより、可変論理セル１０を、入力信号を複数の出力端子から１つを選んで出力する出力選択型のマルチプレクサとして機能させることも可能である。
また、その他、可変論理セル１０に格納する論理データにより、１入力他出力の回路等も構成することが可能である。
このように、可変論理セル１０は、メモリブロック１１に格納する論理データによって、スイッチ回路、組み合わせ論理回路、マルチプレクサなどとして機能するように論理変換を行う。
第９図は、上記とは別の形態の可変論理セル２０の構成を示す。可変論理セル２０は、前述の可変論理セル１０のＤＳＥＬ１６ａ〜１６ｄおよびＡＳＥＬ１７ａ〜１７ｄの代わりに、データレジスタ（ＤＲＥＧ）２１ａ〜２１ｄおよびアドレスレジスタ（ＡＲＥＧ）２２ａ〜２２ｄを用いたものである。このＤＲＥＧ２１ａ〜２１ｄとＡＲＥＧ２２ａ〜２２ｄには、例えばＪＴＡＧ（Ｊｏｉｎｔ  Ｔｅｓｔ  Ａｃｔｉｏｎ  Ｇｒｏｕｐ）により提唱されているような、２つの回路ブロック間に設けられて２つの回路ブロック間の信号の並列転送を可能にするとともに、スキャンパス２３を介してスキャンインされたデータをラッチして、シフト動作でデータをスキャンアウトさせることが可能な境界スキャン回路で構成される。
ＤＲＥＧ２１ａ〜２１ｄは、メモリブロック１１から読み出される内部データ信号ｉｄ０〜ｉｄ１１を隣接するメモリブロック１１に並列に出力する、ＡＲＥＧ２２ａ〜２２ｄは、隣接するメモリブロック１１から出力された内部データ信号ｉｄ０〜ｉｄ１１を内部アドレス信号ｉａ０〜ｉａ１１としてメモリブロック１１に並列に入力する。このパラレル動作の他に、ＤＲＥＧ２１ａ〜２１ｄは、スキャンパス２３を介して外部からスキャンインされるシリアルな外部入力データ信号ｅｄ０〜ｅｄ１１をシフトさせて順次スキャンアウトし、ＡＲＥＧ２２ａ〜２２ｄは、同じくスキャンパス２３を介して外部からスキャンインされるシリアルな外部入力アドレス信号ｅａ０〜ｅａ１１をシフトさせて順次スキャンアウトするシフトレジスタの機能を有するように構成されている。スキャンパス２３を介して外部装置から外部アドレス信号入力、外部データ信号入力が行われるので、第１図に示した外部データバス１３および外部アドレスバス１４を設ける必要がなく、可変論理セル２０のサイズを可変論理セル１０より小さくできることが期待される。
第１０図は、ＤＲＥＧ２１ａ〜２１ｄおよびＡＲＥＧ２２ａ〜２２ｄの具体例としてシフト動作と双方向入出力が可能なレジスタを示す。このシフタブルレジスタは、３つのフリップフロップＦＦ０〜ＦＦ２を備え、各フリップフロップＦＦ０〜ＦＦ２のデータ入力端子の前段には、マルチプレクサＭＵＸ０〜ＭＵＸ２が設けられている。マルチプレクサＭＵＸ０〜ＭＵＸ２は、制御信号ＭＵＸ＿ＳＥＬに応じて、スキャンインデータＳＣＡＮ＿ＩＮ、または、データ端子Ｉ／Ｏ−０〜Ｉ／０−２若しくはＩ／Ｏ−３〜Ｉ／Ｏ−５のデータのうちいずれかを選択する。また、制御信号ＤＩＲＥＣＴＩＯＮによって信号の入出力の方向が切り換えられる。なお、シフト動作は各フリップフロップＦＦ０〜ＦＦ２に入力されるクロック信号ＦＦＣＬＫによって制御される。スキャンインデータＳＣＡＮ＿ＩＮは、クロック信号ＦＦＣＬＫに応じてＦＦ０→ＦＦ１→ＦＦ２の順にシフトされ、スキャンアウトデータＳＣＡＮ＿ＯＵＴとして出力される。
さらに、ＤＲＥＧ２１ａ〜２１ｄのフリップフロップＦＦ０〜ＦＦ２は、後述するカウンタ回路等の順序論理回路を構成する際に用いられる他、メモリブロック１１としてＤＲＡＭが使用された場合に、このＤＲＡＭが行うリフレッシュ（電気的な記憶保持動作）期間にデータを保持して行うアドレス動作にも用いられる。
可変論理セル２０は、前述の可変論理セル１０と同様に平面内に２次元マトリクス状に並べられ、隣接する可変論理セル２０間が相互に接続されることにより可変論理ＬＳＩが構成される。また、隣接する可変論理セル２０間のデータ入出力端子Ｄ０〜Ｄ１１とアドレス入力端子Ａ０〜Ａ１１とは、第６図と同様に隣接する可変論理セル２０間で対向するデータ入出力端子とアドレス入力端子とがデータレジスタおよびアドレスレジスタを介して接続される。さらに、可変論理セル２０は、メモリブロック１１に格納する論理データによってスイッチ回路、組み合わせ論理回路、またはマルチプレクサのいずれかとして機能して論理変換を行う。
また、可変論理セル２０のスキャンアウトデータが、隣接する可変論理セル２０のスキャンインデータとなるようにスキャンパス２３が順に接続されている。これにより、メモリブロック１１のテストモードにおいて、メモリブロック１１から読み出された内部データ信号ｉｄ０〜ｉｄ１１をＤＲＥＧ２１ａ〜２１ｄに取り込んでシフトし、スキャンアウトさせることでメモリブロック１１内の不良ビットが容易に検出される。そして、この不良ビットを有するメモリブロック１１が明らかになれば、その可変論理セル２０を除いて正常な可変論理セル２０のみを用いて論理回路を構成するようにすればよい。
以上のように、可変論理セル１０または可変論理セル２０で構成された可変論理ＬＳＩは、さらに、可変論理セルで構成される組み合わせ論理回路の出力から入力に、他の可変論理セルで構成される複数のスイッチ回路によって信号経路を生成して帰還をかけることによって、カウンタ回路等の順序論理回路が構成され、その結果、任意の論理回路を実現することができる。従って、スイッチ回路を他の論理回路と区別せず、任意の可変論理セルで構成できるため、所望の論理機能を有する論理回路を可変論理セルのマトリクス平面内のどの場所にでも自由に構成することができ、信号の経路や方向性も自由に定めることができる。
第１１図は、可変論理セル２０で構成された可変論理ＬＳＩにおいて、所望の論理回路を構成するための具体的な手順を示す。まず、従来と同様に所望の論理機能をＣ言語で記述した設計データを作成し、この設計データをＨＤＬなどの言語で記述されたデータに変換する。ここで、Ｃ言語による機能設計を省略して直接ＨＤＬで記述して設計データを作成してもよい。次に、ＨＤＬで記述された設計データから論理合成を行って、ゲートレベルで表現したデータに変換する。そして、ゲートレベルの設計データを順序論理回路と組み合わせ論理回路に分離する。
続いて、順序論理回路に使用する可変論理セル２０を決定する。組み合わせ論理回路については、所望の論理を構成する可変論理セル２０を決定する。そして、決定された上記可変論理セル２０間を接続するのに使用するスイッチ回路としての可変論理セル２０を決定する。その後、各セル内のメモリブロック１１に格納するための論理データを生成し、生成された論理データと、メモリブロック１１の所定の番地に書き込むためのアドレス信号とを、スキャンパス２３を介して各メモリブロック１１に転送するのに適したビットストリームに変換する。そして、そのビットストリームをスキャンパス２３から転送し、対応するメモリブロック１１に格納する。これによって、所望の論理機能を有する論理回路が構築される。
ただし、可変論理セル１０で構成された可変論理ＬＳＩの場合には、スキャンパス２３は設けられていないので、上記のビットストリームを生成せずに、論理データを外部データバス１３および外部アドレスバス１４を介して各メモリブロック１１に書き込むこととなる。
次に、第１２図は、搭載される論理の圧縮を可能とする可変論理セル３０を示す。この可変論理セル３０には、ＡＲＥＧ２２ａ〜２２ｄの外側に沿ってマルチプレクサ（ＭＵＸ）３１ａ〜３１ｄが設けられている。メモリブロック１１を挟むように横方向に配置されたＭＵＸ３１ａとＭＵＸ３１ｃとは帰還信号線３２ａ〜３２ｆにより互いに出力と入力の間で帰還がかけられ、メモリブロック１１を挟むように縦方向に配置されたＭＵＸ３１ｂとＭＵＸ３１ｄとは帰還信号線３３ａ〜３３ｆにより互いに出力と入力の間で帰還がかけられている。なお、この可変論理セル３０は、第１図に示した可変論理セル１０を用いて構成することもできる。この場合には、可変論理セル３０のＤＲＥＧ２１ａ〜２１ｄはＤＳＥＬ１６ａ〜１６ｄによって置き換えられ、ＡＲＥＧ２２ａ〜２２ｄはＡＳＥＬ１７ａ〜１７ｄによって置き換えられる。
第１３図は、メモリブロック１１を横方向に挟むＭＵＸ３１ａ，３１ｃの構成を示す。ＭＵＸ３１ａ，３１ｃは、それぞれ２つのＡＮＤ回路と１つのＯＲ回路とからなる回路部３４ａ，３４ｃと、２つのＡＮＤ回路からなる回路部３５ａ，３５ｃとを有する。回路部３４ａ，３４ｃは、各アドレス入力端子毎に１つずつ設けられており、回路部３４ａ，３４ｃの出力部は、ＡＲＥＧ２２ａ，２２ｃを介してアドレス入力端子Ａ０〜Ａ２，Ａ６〜Ａ８にそれぞれ接続されている。また、回路部３５ａ，３５ｃは、各データ入出力端子毎に１つずつ設けられており、データ入出力端子Ｄ０〜Ｄ２，Ｄ６〜Ｄ８は、ＤＲＥＧ２１ａ，２１ｃを介して回路部３５ａ，３５ｃの入力部に接続されている。
ただし、辺１２ａのアドレス入力端Ａ０〜Ａ２のうち１つ（例えば端子Ａ２）は、ＡＲＥＧ２２ａを介してＭＵＸ３１ａ内の制御信号線３６ａに接続されている。この制御信号線３６ａは、各回路部３４ａ，３５ａの２つのＡＮＤ回路の入力端子に接続されており、一方のＡＮＤ回路には論理が反転されるようにして接続されている。また、辺１２ａのデータ入出力端子Ｄ６〜Ｄ８のうち１つ（例えば端子Ｄ６）は、ＤＲＥＧ２１ｃを介してＭＵＸ３１ｃ内の制御信号線３６ｃに接続されている。この制御信号線３６ｃは、各回路部３４ｃ，３５ｃの２つのＡＮＤ回路の入力端子に接続されており、一方のＡＮＤ回路には論理が反転されるようにして接続されている。
回路部３５ｃは、制御信号線３６ｃの論理が“１”のときにはデータ入出力端子Ｄ８から読み出された内部データ信号ｉｄ８をそのまま向きを変えずに隣接する他の可変論理セル３０に転送し、制御信号線３６ｃの論理が“０”のときには内部データ信号ｉｄ８を帰還信号線３２ａを介してＭＵＸ３１ａに転送する。この帰還信号線３２ａを介して転送された内部データ信号ｉｄ８は、回路部３４ａに入力される。このとき制御信号３６ａの論理が“０”であれば、内部データ信号ｉｄ８はそのメモリブロック１１の自己のアドレス入力端子Ａ０に帰還される。一方、制御信号線３６ａの論理が“１”であれば、隣接する他の可変論理セル３０から転送された内部アドレス信号ｉａ０がアドレス入力端子Ａ０に転送される。
なお、回路部３５ａ，３４ｃに関しても同様であり、制御信号線３６ａ，３６ｃの論理が“０”のときには、データ入出力端子Ｄ０から読み出された内部データ信号ｉｄ０は帰還信号線３２ｂを介して自己のアドレス入力端子Ａ８に帰還され、制御信号線３６ａ，３６ｃの論理が“１”のときには、隣接する可変論理セル３０との間で内部データ信号ｉｄ０または内部アドレス信号ｉａ８が転送される。図示しないが、その他の端子に接続される回路部についても同様である。また、図示しないが、メモリブロック１１を縦方向に挟むＭＵＸ３１ｂ，３１ｄの構成はＭＵＸ３１ａ，３１ｃと同様である。
可変論理セル３０は、前述の可変論理セル１０と同様に平面内に２次元マトリクス状に並べられ、隣接する可変論理セル３０間が相互に接続されることにより論理の圧縮を可能とする可変論理ＬＳＩが構成される。第１４図（Ａ）は、論理段数α，βで構成される２段の論理回路の一例を示す。論理段数αにおいて、入力された内部アドレス信号ｉａ０，ｉａ１がそれぞれＮＡＮＤ回路３７ａおよびＮＯＲ回路３７ｂによって論理演算され、フリップフロップ３７ｃにラッチされる。そして、論理段数βにおいて、フリップフロップ３７ｃにラッチされたデータのうちＮＡＮＤ回路３７ａの出力データはインバータ３８ａによって反転されてフリップフロップ３８ｂにラッチされ、ＮＯＲ回路３７ｂの出力データはそのままの論理でフリップフロップ３８ｂにラッチされ、それぞれ内部データ信号ｉｄ８，ｉｄ７として出力される。
このような２つの論理段数を有する回路の論理を表現するには、可変論理セル１０または２０を用いた場合には２つの可変論理セルを組み合わせる必要があるが、上記の様に構成された可変論理セル３０を用いた場合には１つの可変論理セルで表現することができる。第１４図（Ｂ）は、第１４図（Ａ）の回路の論理を表現するために可変論理セル３０内のメモリブロック１１に書き込まれるべき論理データを示す。制御信号線３６ａ，３６ｃを同一の論理とするために、データ入出力端子Ｄ６にはアドレス入力端子Ａ２と同一論理の信号が与えられる。すなわち、端子Ａ２の論理が“０”の場合には論理段数αの演算がなされるとともに、データ入出力端子からアドレス入力端子に帰還がかかり、そして端子Ａ２の論理が“１”となると論理段数βの演算がなされて出力が行われる。このように、端子Ａ２，Ｄ６は、論理演算には用いられず、ＭＵＸ３１ａ，３１ｃの切り換え制御に用いられている。
メモリブロック１１に所望の論理を搭載する場合、全ての端子が論理変換に使用されれば論理の搭載効率は良いが、全ての端子が使用されるとは限らず、いくつかの端子は未使用で余分となることがある。この未使用の端子を上記の端子Ａ２，Ｄ６のようにして用いれば、複数の論理段数を１つの可変論理セル３０で表現することができ、１つの可変論理セルへの論理搭載効率を上げることができる。なお、横方向の論理圧縮について説明を行ったが、ＭＵＸ３１ｂ，３１ｄを用いることにより縦方向の論理圧縮も同様に行うことができる。
次に、第１５図は、アドレス入力端子とデータ入出力端子とが各々２段のフリップフロップに接続された可変論理セル４０を示す。この可変論理セル４０は、可変論理セル２０のＡＲＥＧ２２ａ〜２２ｄの外側に沿って、内部データ信号ｉｄ０〜ｉｄ８をラッチするためのフリップフロップ（ＤＦＦ）４１ａ〜４１ｄが配置され、さらにその外側に沿って内部アドレス信号ｉａ０〜ｉａ８をラッチするためのフリップフロップ（ＡＦＦ）４２ａ〜４２ｄが配置されたものである。ＤＲＥＧ２１ａ〜２１ｄおよびＡＲＥＧ２２ａ〜２２ｄは、シフト動作を行わない場合は、信号を並列転送させる通常のフリップフロップとなるので、ＤＲＥＧ２１ａ〜２１ｄとＤＦＦ４１ａ〜４１ｄは、セル間で内部データ信号ｉｄ０〜ｉｄ８を並列に転送する２段のフリップフロップとして機能し、ＡＲＥＧ２２ａ〜２２ｄとＡＦＦ４２ａ〜４２ｄは、セル間で内部アドレス信号ａｄ０〜ａｄ８を並列に転送する２段のフリップフロップとして機能する。なお、各フリップフロップには、クロック信号が入力されているが図示を省略している。また、この可変論理セル４０は、第１図に示した可変論理セル１０を用いて構成することもできる。この場合、ＤＲＥＧ２１ａ〜２１ｄはＤＳＥＬ１６ａ〜１６ｄによって置き換えられ、ＡＲＥＧ２２ａ〜２２ｄはＡＳＥＬ１７ａ〜１７ｄによって置き換えられる。
このように構成された可変論理セル４０は、前述の可変論理セル１０と同様に平面内に２次元マトリクス状に並べられ、隣接する可変論理セル４０間が相互に接続されることにより、使用する端子数を削減することが可能な可変論理ＬＳＩが構成される。第１６図（Ａ）は、２入力ｉｎ１，ｉｎ２のＮＡＮＤ回路４３ａと、２入力ｉｎ３，ｉｎ４のＡＮＤ回路４３ｂと、ＮＡＮＤ回路４３ａおよびＡＮＤ回路４３ｂの出力データｏｕｔ１，ｏｕｔ２をラッチするフリップフロップ４３ｃとからなる４入力２出力の回路を示す。可変論理セル１０または２０を用いてこの回路を構成しようとすると、各辺１２ａ〜１２ｄにはアドレス入力端子が各々３つずつしか設けられていないため、４入力を実現するためには少なくとも２つの辺のアドレス入力端子を同時に使用するか、または２つの可変論理セル１０または２０を用いる必要がある。
上記のように構成された可変論理セル４０を用い、第１６図（Ｂ）に示す論理データをメモリブロック１１内に書き込むことにより、１つの可変論理セル４０で第１６図（Ａ）の回路を実現することができる。第１６図（Ｂ）の論理データによると、可変論理セル４０は、端子Ａ２に与えられた内部アドレス信号ｉａ０の論理が“０”の場合には、端子Ａ０，Ａ１に与えられた内部アドレス信号ｉａ０，ｉａ１（上記ｉｎ１，ｉｎ２）のＮＡＮＤ論理演算を行い、演算結果を端子Ｄ８から内部データ信号ｉｄ８（上記ｏｕｔ１）として出力する。端子Ａ２に与えられた内部アドレス信号ｉａ０の論理が“１”の場合には、端子Ａ０，Ａ１に与えられた内部アドレス信号ｉａ０，ｉａ１（上記ｉｎ３，ｉｎ４）のＮＯＲ論理演算を行い、演算結果を端子Ｄ８から内部データ信号ｉｄ８（上記ｏｕｔ２）として出力する。
従って、内部アドレス信号ｉａ２が“０”と“１”のそれぞれの場合において、内部アドレス信号ｉａ０〜ｉａ２をＡＦＦ４２ａおよびＡＲＥＧ２２ａに順次入力してラッチさせるとともに、メモリブロック１１の一辺１２ａに配列された端子Ａ０〜Ａ２に入力し、辺１２ｃの端子Ｄ８から演算結果を示す内部データ信号ｉｄ８を順次出力してＤＲＥＧ２１ｃおよびＤＦＦ４１ｃにラッチさせるとともに、順にデータｏｕｔ１，ｏｕｔ２がシリアルに出力される。このように、可変論理セル４０を用いると、３入力１出力の端子数で第１６図（Ａ）の回路を実現することができる。
第１７図に示した可変論理セル５０は、可変論理セル３０と可変論理セル４０の構成を兼ね備えており、アドレス入力端子とデータ入出力端子とがそれぞれ２段のフリップフロップに接続され、自己のアドレス入力端子とデータ入出力端子との間で帰還がかけられる。この可変論理セル５０を用いると、論理の搭載効率をさらに高めることができる。
第１８図は、データ入出力端子とアドレス入力端子との間に帰還経路を有する可変論理セル３０または５０で作られる２次元の初源メモリ論理空間が圧縮されるイメージを示す。初源メモリ空間は、上記の自己のアドレス入力端子とデータ入出力端子との間での帰還により、横方向および縦方向へと折り畳まれ、圧縮されたメモリ論理空間となる。
なお、上記実施形態では、メモリブロック１１の各辺１２ａ〜１２ｄにアドレス入力端子とデータ入出力端子とが交互に並ぶように配置したが、必ずしも１端子毎に交互に並べる必要はなく、各辺にアドレス入力端子とデータ入出力端子とが共に設けられていればよい。例えば、第１９図（Ａ）に示すように、アドレス入力端子とデータ入出力端子を各々２端子ずつセットにして各辺１２ａ〜１２ｄに配置してもよいし、第１９図（Ｂ）に示すように、各辺１２ａ〜１２ｄにおいてアドレス入力端子とデータ入出力端子を２つにグループ分けして配置するようにしてもよい。このとき、各端子は隣接するメモリブロック１１間でアドレス入力端子とデータ入出力端子とが対向するように配置されればよい。
また、上記実施形態では、メモリブロック１１を四辺１２ａ〜１２ｄで囲まれた方形としたが、これに代えて、メモリブロック１１を第２０図（Ａ）に示すような３辺で囲まれた三角形としてもよい。このメモリブロック１１を備えた可変論理セル１０，２０，３０，４０，５０のいずれかを三角形にして、第２０図（Ｂ）のように２次元平面状にセルを敷き詰めると、可変論理ＬＳＩが構成される。この三角形のメモリブロック１１は、メモリ容量が小さい場合、すなわち端子数が少ない場合に各辺へ端子を効率よく配置することができる。また、その三角形の形状により斜め方向への信号伝達を短い経路で効率よく行うことができる。さらには、メモリブロック１１を五角形以上の多角形とすることができることは言うまでもない。このように、メモリ容量を考慮してメモリブロック１１の形状およびその配置を決定することにより、論理の搭載効率をさらに高めることができる。
また、上記実施形態では、可変論理セルを２次元平面内に配置するように相互に端子間を接続したが、これに代えて、可変論理セルを３次元的に配置するようにしてもよい。例えば、第２１図（Ａ）に示すように、アドレス入力端子およびデータ入出力端子をメモリブロック１１の四辺１２ａ〜１２ｄの他、メモリブロック１１が備える上面１２ｅおよび下面１２ｆにも配置する。そして、第２１図（Ｂ）に示すように、このメモリブロック１１を備えた可変論理セル１０，２０，３０，４０，５０のいずれかを２次元平面状に敷き詰め、メモリブロック１１間の辺１２ａ〜１２ｄを相互に配線し、この２次元平面状の可変論理セルを複数個積層するようにして上下に隣接するメモリブロック１１間の上面１２ｅと下面１２ｆの間を配線する。
第２２図の断面図に示すように、対向する端子Ａ４，Ｄ５間、および端子Ａ５，Ｄ４間の接続が行われる。図示しないが、これらの端子間に前述のデータセレクタおよびアドレスセレクタ、または、前述のデータレジスタおよびアドレスレジスタが介装され、さらには前述のマルチプレクサやフリップフロップが介装される。これにより、上下方向（積層方向）への論理の圧縮も可能となる。
さらに、上記実施形態では、１つの可変論理セル３０内にデータ入出力端子から自己のアドレス入力端子に帰還をかけるためのＭＵＸ３１ａ〜３１ｄを設けたが、このＭＵＸ３１ａ〜３１ｄは、複数の可変論理セル１０（または２０）を用いて構成されるようにしてもよい。可変論理セル１０（または２０）では、各端子に１つのフリップフロップが接続されているため、少なくとも５つの可変論理セル１０（または２０）を用いることで、第１７図に示した、各端子に２段のフリップフロップが接続され、かつデータ入出力端子から自己のアドレス入力端子に帰還経路を有する可変論理セル５０を構成することができる。
以上の可変論理ＬＳＩは、ＬＳＩチップの自己テストに利用可能である。つまり、最近のＳＯＣ（Ｓｙｓｔｅｍ  ｏｎ  Ｃｈｉｐ）では、内蔵メモリがチップ全体の５０〜８０％を占めているため、ＬＳＩチップに内蔵されるメモリを利用することで効率よく自己テストを行うことが期待できる。
第２３図のフローチャートを用いて第２４図に示すＳＯＣ６０のテスト方法を説明する。ＳＯＣ６０には、内蔵メモリ６１を構成するＳＲＡＭ６１ａとして上記の可変論理セル１０，２０，３０，４０，５０のいずれかが用いられている。
まず、一部のＳＲＡＭ６１ａを用いて他のＳＲＡＭ６１ａをテストするためのテストパターンを発生するＡＬＰＧ（Ａｌｇｏｒｉｔｈｍｉｃ  Ｐａｔｔｅｒｎ  Ｇｅｎｅｒａｔｏｒ）をＨＤＬ記述によって構成する。これにより、他のＳＲＡＭ６１ａをテストし、テスト結果を判定する。テスト結果がフェイルであれば、フェイル信号を発生してテストを終了する。一方、テスト結果がパスと判定された場合には、このテストされたＳＲＡＭ６１ａを含めたＳＲＡＭ６１ａにより、ロジック回路部分をテストするためのテスト回路をＨＤＬ記述によって構成するとともに、そのテストパターンを格納するメモリを上記テストをパスしたＳＲＡＭ６１ａで構成する。このメモリにテストパターンを記述して、ユーザロジック回路６２やＣＰＵ６３をテストする。このテストにフェイルすると、フェイル信号を発生してテストを終了する。
このテストをパスした場合には、一部のＳＲＡＭ６１ａにＤＲＡＭ６４のテストパターンを生成するＡＬＰＧを構成し、かつ他のＳＲＡＭ６１ａを用いてそのテスト結果を格納するフェイルメモリを構成する。そして、ＣＰＵ６３にＤＲＡＭ６４の救済アルゴリズムをロードして、ＡＬＰＧでＤＲＡＭ６４をテストするとともに、救済ビット線６４ａによる不良ビットのビット救済を実施する。ＤＲＡＭがこのテストをフェイルし、かつ救済不可能であれば、フェイル信号を発生してテストを終了する。一方、テストをパスした場合には、テスト回路を構成したＳＲＡＭ６１ａを通常のメモリとし、ＳＯＣ６０の記憶装置として動作させる。
以上はテストにおける可変論理セルの活用であるが、可変論理セル１０，２０，３０，４０，５０のいずれかで構成された内蔵メモリ６１を、テスト時以外の通常動作時もプログラマブルデバイスとして使用し、ＳＯＣ６０をプログラマブルデバイス内蔵のＬＳＩチップとすることもできる。また、複数のＣＰＵをこの可変論理セルで連結して構成したＳＯＣも考えられ、これにより並列演算等の処理を高速化することができる。さらに、本発明をＳＩＰ（Ｓｙｓｔｅｍ  Ｉｎ  Ｐａｃｋａｇｅ）などへ応用することもできる。
また、この可変論理ＬＳＩは、コンピュータの記憶装置や演算装置に利用できる。現在の一般のコンピュータは、入力装置（キーボード）、出力装置（ＣＲＴディスプレイ）、記憶装置（主メモリやキャッシュメモリやレジスタ）、演算装置（ＡＬＵ）などで構成されている。このコンピュータでは、主メモリとＡＬＵとの間に高速のキャッシュメモリとレジスタを配置して、その間のデータ転送を高速に行わせ、演算処理の高速化を図っている。これは、ＡＬＵの演算処理以外に各記憶装置間のアドレス演算が必要であることを意味し、高速処理に対する弊害となっている。そこで、この可変論理ＬＳＩをコンピュータに適用すると、上記の記憶装置と演算装置を一体に構成することができ、各記憶装置間のアドレス演算の必要がなくなるので、演算処理の高速化を期待することができる。
本発明の半導体集積回路は、第１のメモリブロックの第１辺の少なくとも１つのアドレス入力端子を、隣接する第２のメモリブロックの対向する辺のデータ入出力端子に接続し、第１のメモリブロックの第１辺の少なくとも１つのデータ入出力端子を、第２のメモリブロックの対向する辺のアドレス入力端子に接続するようにしたので、１つのメモリブロックは、外部装置により書き込まれる論理データにより、スイッチ回路や組み合わせ論理回路として動作し、また複数のメモリブロックは順序論理回路として動作することもできる。これにより、本発明の半導体集積回路は、論理ブロックとスイッチ回路の区別をなくしたフレキシブルな可変論理セルにより構成され、所望の論理回路を効率よく構成することができる。
また、メモリブロックの自己のデータ入出力端子からアドレス入力端子へ内部データ信号の帰還を行うようにしたことにより、搭載される論理の圧縮を行うことができ、各メモリブロックの容量を節約することが可能となる。
さらに、本発明の半導体集積回路は、大部分がメモリブロックによって構成されるため、従来のメモリデバイスと同様な２層配線程度のプロセスで製造することが可能となり、少なくとも５層配線を要したＦＰＧＡに比して製造コストが安価であるという利点がある。
【産業上の利用可能性】  本発明の半導体装置は、ＦＰＧＡのようなフィードで論理をプログラム可能なロジックＩＣとして利用できる他に、ＳＯＣなどの内蔵メモリやコンピュータの記憶装置や演算装置にも利用できる。
【図１】
2005008893.tif 000003
2005008893.tif 000004
2005008893.tif 000005
【図４】
2005008893.tif 000006
【図５】
2005008893.tif 000007
【図６】
2005008893.tif 000008
【図７】
2005008893.tif 000009
【図８】
2005008893.tif 000010
【図９】
2005008893.tif 000011
【図１０】
2005008893.tif 000012
【図１１】
2005008893.tif 000013
【図１２】
2005008893.tif 000014
【図１３】
2005008893.tif 000015
2005008893.tif 000016
【図１５】
2005008893.tif 000017
2005008893.tif 000018
【図１７】
2005008893.tif 000019
【図１８】
2005008893.tif 000020
2005008893.tif 000021
2005008893.tif 000022
2005008893.tif 000023
【図２２】
2005008893.tif 000024
【図２３】
2005008893.tif 000025
【図２４】
2005008893.tif 000026
2005008893.tif 000027
【国際調査報告】
2005008893.tif 000028
2005008893.tif 000029
2005008893.tif 000030
2005008893.tif 000031