(57)【要約】  プログラマブル論理集積回路において、不良素子の発生に備えてスペア回路を設けると、回路構成に無駄が生じてしまう。本発明に係るプログラマブル論理集積回路は、複数のロジックブロックと、行配線と列配線の接続をスイッチ用不揮発性スイッチ素子により切り換えるスイッチブロックと、入出力配線を上記スイッチブロックと接続するシフタブロックとを有し、上記シフタブロックは、冗長配線を含み、上記冗長配線及び上記行配線を構成する各配線の接続を制御するシフト用不揮発性スイッチ素子を備える。
2015141153.tif 000002
【特許請求の範囲】
【請求項１】
複数のロジックブロックと、
行配線と列配線の接続をスイッチ用不揮発性スイッチ素子により切り換えるスイッチブロックと、
入出力配線を前記スイッチブロックと接続するシフタブロックとを有し、
前記シフタブロックは、冗長配線を含み、
前記冗長配線及び前記行配線を構成する各配線の接続を制御するシフト用不揮発性スイッチ素子を備える、
プログラマブル論理集積回路。
【請求項２】
第１配線と、第２配線と、第３配線と、前記第１配線と前記第２配線の間に形成された第１の抵抗変化素子と、前記第１配線と前記第３配線の間に形成された第２の抵抗変化素子とを少なくとも含む抵抗網を備えたプログラマブル論理集積回路であって、
前記抵抗網の第１の利用状態では、前記第１の抵抗変化素子は第１のデータに対応した状態にプログラムされ、前記第２の抵抗変化素子はオフ状態にプログラムされ、
前記抵抗網の第２の利用状態では、前記第１の抵抗変化素子はオフ状態にプログラムされ、前記第２の抵抗変化素子を第１のデータに対応した状態にプログラムされる、
プログラマブル論理集積回路。
【請求項３】
Ｎを整数とし、Ｎ個の前記抵抗網が隣接して配置されたシフタブロックを含み、
ｉを１以上Ｎ−１以下の整数として、ｉ番目の抵抗網の第３配線と、ｉ＋１番目の抵抗網の第２配線が共通の配線であり、
ｊを１以上Ｎ以下のある整数として、
ｉがｊより小さい場合、
ｉ番目の抵抗網は前記第１の利用状態であり、ｉ番目の抵抗網の第１の抵抗変化素子を第ｉのデータに対応した状態にプログラムされ、ｉ番目の抵抗網の第２の抵抗変化素子をオフ状態にプログラムされ、
ｉがｊと等しい、若しくは大きい場合、
ｉ番目の抵抗網は前記第２の利用状態であり、ｉ番目の第１の抵抗変化素子をオフ状態にプログラムされ、ｉ番目の第２の抵抗変化素子を第ｉのデータに対応した状態にプログラムされことを特徴とするシフタブロックを含む、請求項２に記載のプログラマブル論理集積回路。
【請求項４】
複数のトラックと、前記複数のトラックの接続関係を規定するスイッチブロックと、論理演算を行うロジックブロックと、前記複数のトラックと前記ロジックブロックの接続関係を規定するコネクションブロックとをさらに含み、
前記シフタブロックの第１配線、第２配線、第３配線は前記トラックに接続され、
前記シフタブロックのｉ番目の抵抗網の第２配線と接続された第ｉのトラックにおいて、ｉがｊより小さい場合、
第ｉのトラックに接続された前記コネクションブロック又は前記スイッチブロックの抵抗変化素子セットを第ｉのデータセットに対応した状態にプログラムされる、請求項３に記載のプログラマブル論理集積回路。
【請求項５】
複数のトラックと、前記複数のトラックの接続関係を規定するスイッチブロックと、論理演算を行うロジックブロックと、前記複数のトラックと前記ロジックブロックの接続関係を規定するコネクションブロックとをさらに含み、
前記シフタブロックの第１配線、第２配線、及び第３配線は前記トラックに接続され、
前記シフタブロックのｉ番目の抵抗網の第２配線と接続された第ｉのトラックにおいて、ｉがｊと等しい場合、
第ｉのトラックに接続された前記コネクションブロック又は前記スイッチブロックの抵抗変化素子セットをオフ状態にプログラムされる、請求項３に記載のプログラマブル論理集積回路。
【請求項６】
複数のトラックと、前記複数のトラックの接続関係を規定するスイッチブロックと、論理演算を行うロジックブロックと、前記複数のトラックと前記ロジックブロックの接続関係を規定するコネクションブロックとをさらに含み、
前記シフタブロックの第１配線、第２配線、第３配線は前記トラックに接続され、
前記シフタブロックのｉ番目の抵抗網の第２配線と接続された第ｉのトラックにおいて、ｉがｊより大きい場合、
第ｉ＋１のトラックに接続された前記コネクションブロック又は前記スイッチブロックの抵抗変化素子セットを第ｉのデータセットに対応した状態にプログラムされる、請求項３に記載のプログラマブル論理集積回路。
【請求項７】
前記抵抗網の第１配線上の第１のトランジスタと、前記抵抗網の第２配線上の第２のトランジスタと、前記抵抗網の第３配線上の第３のトランジスタとを備え、
前記第１のトランジスタと前記第２のトランジスタがオン状態、前記第３のトランジスタがオフ状態に設定されて、前記第１の抵抗変化素子のデータを書き換え、
前記第１のトランジスタと前記第３のトランジスタがオン状態、前記第２のトランジスタがオフ状態に設定されて、前記第２の抵抗変化素子のデータを書き換える、請求項２乃至請求項６のいずれか一項に記載のプログラマブル論理集積回路。
【請求項８】
第１のモードと第２のモードを備え、
前記第１のモードは、
シフタブロックに接続された利用可能な配線数をＮとして、所望の回路を実現するための論理合成及び配置配線を行い、さらに、不良素子のアドレス情報に応じて、ｊの値を決定し、
前記第２のモードは、
シフタブロックに接続された利用可能な配線数をＮ＋１として、所望の回路を実現するための論理合成及び配置配線を行う、請求項２乃至請求項７のいずれか一項に記載のプログラマブル論理集積回路。
【請求項９】
前記論理合成及び前記配置配線を、不良素子のアドレス情報を考慮して行う、請求項８に記載のプログラマブル論理集積回路。
【請求項１０】
前記第１のモードと前記第２のモードは、
モード設定用の外部ピンの設定値の値、若しくはモード設定用のレジスタの値によってモードが決定される、請求項８又は請求項９に記載のプログラマブル論理集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブル論理集積回路に関し、特に、抵抗変化素子を用いたプログラマブル論理集積回路に関する。
【背景技術】
【０００２】
プログラマブル論理集積回路は、内部の設定情報を書き換えることにより、様々な論理回路を再構成可能であるという特徴をもつ。そのため、試作品の作成や、画像処理や通信などの広い分野で利用されている。【０００３】
特許文献１はプログラマブル論理集積回路に関するものであり、抵抗変化素子を用いて、メモリセルとスイッチ部分を置き換えることを提案している。特許文献１に記載のプログラマブル論理集積回路は、チップ面積や消費電力の低減が期待できることから有望な技術である。【０００４】
特許文献２や特許文献３はプログラマブル論理集積回路に関するものであり、スペア回路を形成しておき、不良回路が発生した場合には、不良回路をスペア回路に置き換えることを提案している。【０００５】
非特許文献１はプログラマブル論理集積回路に関するものであり、不良素子の位置の情報に基づき、構成データを計算し、不良個所を回避することを提案している。非特許文献１のプログラマブル論理集積回路は、チップ面積のオーバーヘッドなしに、チップの歩留りを向上できるため、有力である。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−１０１５３５号公報
【特許文献２】米国特許第４８９９０６７号明細書
【特許文献３】特開平６−２１６７５７号公報
【非特許文献】
【０００７】
【非特許文献１】W. H. Mangione-Smith, J. Lach, and M. Potkonjak, "Low Overhead Fault-Tolerant FPGA Systems", IEEE Transactions on Very Large Scale Integration (VLSI) Systems, vol. 6, no. 2, pp.212-221, June 1998
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した先行技術文献が提案するプログラマブル論理集積回路には、以下のような課題がある。【０００９】
特許文献２や特許文献３では、プログラマブル論理集積回路に不良がない場合には、スペア回路は利用されず、チップ面積、遅延時間、消費電力のオーバーヘッドが生じる。一方、不良素子の発生によりプログラマブル論理集積回路の品質のばらつきが生じたとしても、スペア回路を有効に利用してより多様な論理を実現することをユーザが望んだ場合、その要望に応えられるプログラマブル論理集積回路を提供できることが望ましい。【００１０】
非特許文献１のプログラマブル論理集積回路は、リソースの使用率が高くなり利用している配線が混雑してきた場合に、不良素子を回避して構成データを作成できなくなる懸念がある。その場合、チップ毎の不良素子の位置のばらつきに応じて、構成データを作成できるチップと、構成データを作成できないチップが生じてしまう。つまり、プログラマブル論理集積回路の品質を保つことが困難になる可能性がある。【００１１】
本発明の目的は、プログラマブル論理集積回路において、不良素子の発生に備えてスペア回路を設けると、回路構成に無駄が生じてしまう、という課題を解決するプログラマブル論理集積回路を提供することにある。
【課題を解決するための手段】
【００１２】
上記目的を達成するため、本発明に係るプログラマブル論理集積回路は、複数のロジックブロックと、行配線と列配線の接続をスイッチ用不揮発性スイッチ素子により切り換えるスイッチブロックと、入出力配線を上記スイッチブロックと接続するシフタブロックとを有し、
上記シフタブロックは、冗長配線を含み、上記冗長配線及び上記行配線を構成する各配線の接続を制御するシフト用不揮発性スイッチ素子を備える。
【発明の効果】
【００１３】
本発明によれば、不良素子が発生した場合であっても所望の動作を実現できると共に、回路構成を有効に使用することができる。
【図面の簡単な説明】
【００１４】
【図１】本発明の第１実施形態によるプログラマブル論理集積回路の構成を示すブロック図である。
【図２】本発明の第１実施形態によるプログラマブル論理集積回路を構成するコネクションブロックの構成の一例を示す回路図である。
【図３】本発明の第１実施形態によるプログラマブル論理集積回路を構成するスイッチブロックの構成の一例を示す回路図である。
【図４】本発明の第１実施形態によるプログラマブル論理集積回路を構成するシフタブロックの構成の一例を示す回路図である。
【図５】本発明の第１実施形態によるプログラマブル論理集積回路の第１のモードにおいて、不良素子がない状況の設定データと抵抗変化素子の関係を示す回路図である。
【図６】本発明の第１実施形態によるプログラマブル論理集積回路の第１のモードにおいて、不良素子がある状況の設定データと抵抗変化素子の関係を示す回路図である。
【図７】本発明の第１実施形態によるプログラマブル論理集積回路の第２のモードにおける、設定データと抵抗変化素子の関係を示す回路図である。
【図８】本発明の第１実施形態によるプログラマブル論理集積回路のシフタブロックの別の一例を示す回路図である。
【図９】本発明の第２実施形態によるプログラマブル論理集積回路の構成を示すブロック図である。
【図１０】関連するプログラマブル論理集積回路の構成を概略的に示すブロック図である。
【発明を実施するための形態】
【００１５】
本発明の好ましい実施形態について説明する前に、関連するプログラマブル論理集積回路について、図面を参照しながら説明する。関連技術のプログラマブル論理集積回路は図１０に示すように、ロジックブロック１１と、スイッチブロック１２と、コネクションブロック１３と、配線、若しくはトラック１４と、Ｉ／Ｏ(Input/Output)ブロック１５と、を有する。図１０は、ロジックブロック１１の数が３×３の場合を示している。ロジックブロック１１は、論理演算を行う。スイッチブロック１２は、配線１４間の接続を行う。コネクションブロック１３は、配線１４とロジックブロック１１の接続を行う。Ｉ／Ｏブロック１５は、外部との接続を行う。ロジックブロック１１の論理、スイッチブロック１２やコネクションブロック１３の接続関係は、設定情報として、スタティックランダムアクセスメモリ（ＳＲＡＭ）等のメモリセルに記憶される。メモリセルに構成データを書き込むことを、プログラムと呼ぶ。通常、メモリセルはシリアルに接続され、順次データが書き込まれる。
【００１６】
関連技術のプログラマブル論理集積回路では、メモリセルをプログラムすることにより、多様な回路機能を実現している。また、構成データを書き換えることにより回路機能の変更を実現している。本発明はプログラマブル論理集積回路において、回路使用の自由度を向上させ、回路機能変更の可能性を向上させるものである。以下、本発明の好ましい実施形態について説明する。
【００１７】
〔第１実施形態〕
本発明の第１実施形態によるプログラマブル論理集積回路について、説明する。図１は、本発明の第１実施形態におけるプログラマブル論理集積回路の構成を示すブロック図である。図２は、図１のコネクションブロックの一例を示す回路図である。図３は、図１のスイッチブロックの一例を示す回路図である。図４は、図１のシフタブロックの一例を示す回路図である。
【００１８】
本実施形態によるプログラマブル論理集積回路は図１に示すように、複数のロジックブロック１と、行配線と列配線の接続をスイッチ用不揮発性スイッチ素子により切り換えるスイッチブロック２と、を有する。さらに、本実施形態によるプログラマブル論理集積回路は、入出力配線を上記スイッチブロック２と接続するシフタブロック６を有する。さらに、上記シフタブロック６は、冗長配線を含み、冗長配線及び行配線を構成する各配線の接続を制御するシフト用不揮発性スイッチ素子を備えることを特徴とする。さらに本実施形態によるプログラマブル論理集積回路は図１に示すように、コネクションブロック３と、配線、若しくはトラックと、Ｉ／Ｏ(Input/Output)ブロック５と、を有する。配線、若しくはトラックを、以下では配線４を例に説明する。スイッチブロック２では、行配線と列配線との接続状態が、その交差した位置のスイッチ用不揮発性スイッチ素子をオン状態にすることで接続状態に設定でき、オフ状態にすることで非接続状態に設定できる。スイッチブロック２のスイッチ用不揮発性スイッチ素子の一例として、以下では抵抗変化素子を用いた場合で説明するが、本発明はこれに限られるものではない。シフタブロック６のシフト用不揮発性スイッチ素子の一例として、以下では抵抗変化素子を用いた場合で説明するが、本発明はこれに限られるものではない。
【００１９】
図１では、ロジックブロック１が３×３のマトリックス状に配置されている場合を例示している。配線４は、ロジックブロック１を囲うように配置されている。図１では、行方向の配線数は４であり、列方向の配線数は３である。行方向と列方向の配線が交差する位置に、スイッチブロック２が配置されている。スイッチブロック２は、上下に３つの配線、左右に４つの配線に接続されている。左右の４つの配線のうち、１つはスペアの配線である。行方向、若しくは列方向の配線上に、コネクションブロック３が配置されている。シフタブロック６は、行方向に走る配線４の両端に配置されている。ロジックブロック１は、論理演算を行う。スイッチブロック２は、配線４間の接続を行う。コネクションブロック３は、配線４とロジックブロック１の接続を行う。Ｉ／Ｏブロック５は、外部との接続を行う。シフタブロック６は、配線４間の接続を行う。関連技術のプログラマブル論理集積回路とは、シフタブロック６と、スペアの配線とをさらに有する点が本実施形態のプログラマブル論理集積回路は異なる。
【００２０】
図２は、図１のコネクションブロック３の構成の一例を示すもので、配線Ｈ１１、Ｈ１２、Ｈ１３、Ｈ０４、Ｖ１と、抵抗変化素子Ｒ１１、Ｒ１２、Ｒ１３、Ｒ１４と、を含む。ここで、配線Ｈ０４はスペアの配線であり、抵抗変化素子Ｒ１４はスペアの抵抗変化素子である。図２のコネクションブロック３は、４つの配線から１つのロジックブロック１の入力ポートへの接続を行う際、又は１つのロジックブロック１の出力ポートから４つの配線のうち選択された配線への接続を行う際に、用いることができる。
【００２１】
抵抗変化素子は、フェーズチェンジランダムアクセスメモリ（ＰＲＡＭ）、レジスタンスランダムアクセスメモリ（ＲｅＲＡＭ）、コンダクティブブリッジランダムアクセスメモリ（ＣＢＲＡＭ）などのメモリ素子が利用できる。抵抗変化素子は、低抵抗状態、高抵抗状態の２つのいずれかの状態をとる。ここで、低抵抗状態をオン状態と定義する。また、高抵抗状態をオフ状態と定義する。さらに、抵抗変化素子の状態を、プログラムデータと対応付ける。低抵抗状態を、データ１の状態と定義する。高抵抗状態を、データ０の状態と定義する。抵抗変化素子がオン状態の時、電圧レベルで与えられる信号は抵抗変化素子を通過する。一方、抵抗変化素子がオフ状態の時、信号は抵抗変化素子によって遮断され、通過しない。
【００２２】
図３は図１のスイッチブロック２の構成の一例を示すもので、配線Ｈ１１、Ｈ１２、Ｈ１３、Ｈ０４、Ｖ２、Ｖ３、Ｖ４と、抵抗変化素子Ｒ２１、Ｒ２２、Ｒ２３、Ｒ２４、Ｒ３１、Ｒ３２、Ｒ３３、Ｒ３４、Ｒ４１、Ｒ４２、Ｒ４３、Ｒ４４と、を含む。ここで、配線Ｈ０４はスペアの配線であり、抵抗変化素子Ｒ２４、Ｒ３４、Ｒ４４はスペアの抵抗変化素子である。行方向に延伸した配線と、列方向に延伸した配線とは、その交差した位置の抵抗変化素子をオン状態にすることで接続状態に設定でき、オフ状態にすることで非接続状態に設定できる。
【００２３】
図４は図１のシフタブロック６の構成の一例を示すもので、配線Ｈ０１、Ｈ０２、Ｈ０３、Ｈ０４、Ｈ１１、Ｈ１２、Ｈ１３と、抵抗変化素子Ｒ０１、Ｒ０２、Ｒ０３、Ｒ０１Ｓ、Ｒ０２Ｓ、Ｒ０３Ｓと、を含む。ここで、配線Ｈ０４はスペアの配線である。
【００２４】
シフタブロック６は図４に示すように、抵抗網ＲＮ１、ＲＮ２、ＲＮ３を含む。抵抗網ＲＮ１は、配線Ｈ０１と、配線Ｈ１１と、配線Ｈ１２と、配線Ｈ０１と配線Ｈ１１の間に形成される抵抗変化素子Ｒ０１と、配線Ｈ０１と配線Ｈ１２の間に形成される抵抗変化素子Ｒ０１Ｓと、を含む。抵抗網ＲＮ２は、配線Ｈ０２と、配線Ｈ１２と、配線Ｈ１３と、配線Ｈ０２と配線Ｈ１２の間に形成される抵抗変化素子Ｒ０２と、配線Ｈ０２と配線Ｈ１３の間に形成される抵抗変化素子Ｒ０２Ｓと、を含む。抵抗網ＲＮ３は、配線Ｈ０３と、配線Ｈ１３と、配線Ｈ０４と、配線Ｈ０３と配線Ｈ１３の間に形成される抵抗変化素子Ｒ０３と、配線Ｈ０３と配線Ｈ０４の間に形成される抵抗変化素子Ｒ０３Ｓと、を含む。
【００２５】
次に、本実施形態のプログラマブル論理集積回路の動作について説明する。第１実施形態におけるプログラマブル論理集積回路は２つのモードを有し、それぞれのモードにおいて、不良素子が存在する状況と不良素子が存在しない状況の合計４つの状況があり得る。第１のモードは、スペアの回路を不良素子の救済のみに利用するモードである。第２のモードは、スペアの回路を不良素子の救済のみならず、回路の柔軟性を高めるために利用するモードである。
【００２６】
図５は、本発明の第１実施形態における第１のモードにおいて、不良素子がない状況の設定データと抵抗変化素子の関係を示す回路図である。図５は、図１に示したプログラマブル論理集積回路の一部であり、行方向に延伸した配線上のコネクションブロック３と、スイッチブロック２と、２つのシフタブロックと、を示している。２つのシフタブロックは、第１のシフタブロック６１と第２のシフタブロック６２である。
【００２７】
第１のモードにおいて、論理合成、及び配置配線の結果、設定データが出力される。図５に抵抗変化素子Ｒｘｙに対応した設定データＤｘｙを示した。ここで、ｘは０以上５以下、ｙは１以上３以下の整数である。第１のモードでは、第１のシフタブロックの抵抗変化素子Ｒ０１Ｓ、Ｒ０２Ｓ、Ｒ０３Ｓをデータ０に対応した状態、つまり、オフ状態にプログラムする。また、第２のシフタブロックの抵抗変化素子Ｒ５１Ｓ、Ｒ５２Ｓ、Ｒ５３Ｓをデータ０に対応した、つまり、オフ状態にプログラムする。また、スペア配線Ｈ０４上の抵抗変化素子Ｒ１４、Ｒ２４、Ｒ３４、Ｒ４４をデータ０に対応した状態、つまり、オフ状態にプログラムする。以上のように抵抗変化素子を設定することで、スペア回路は利用せずに、所望の論理を実現することができる。
【００２８】
図６は、本発明の第１実施形態における第１のモードにおいて、不良素子が存在した状況の設定データと抵抗変化素子の関係を示す回路図である。図６は、図１に示したプログラマブル論理集積回路の一部であり、行方向に延伸した配線上のコネクションブロック３と、スイッチブロック２と、２つのシフタブロックを示している。２つのシフタブロックは、第１のシフタブロック６１と第２のシフタブロック６２である。図５と同じ論理を実現するように、論理合成、及び配置配線を行った結果、図５と同じ設定データが出力された場合について説明する。
【００２９】
図５の上から２行目の配線Ｈ１２上の抵抗変化素子Ｒ２２が不良であった場合を例にとって説明する。第１のシフタブロック６１の第１抵抗網の抵抗変化素子Ｒ０１をＤ０１のデータに対応した状態にプログラムし、第１抵抗網の抵抗変化素子Ｒ０１Ｓをデータ”０”に対応した状態、つまり、オフ状態にプログラムする。
【００３０】
さらに、第１のシフタブロック６１の第２抵抗網の抵抗変化素子Ｒ０２をデータ”０”に対応した状態、つまり、オフ状態にプログラムし、第２抵抗網の抵抗変化素子Ｒ０２ＳをデータＤ０２に対応した状態にプログラムする。
【００３１】
さらに、第１のシフタブロック６１の第３抵抗網の抵抗変化素子Ｒ０３をデータ”０”に対応した状態、つまり、オフ状態にプログラムし、第３抵抗網の抵抗変化素子Ｒ０３ＳをデータＤ０３に対応した状態にプログラムする。
【００３２】
さらに、第２のシフタブロック６２の第１抵抗網の抵抗変化素子Ｒ５１をＤ５１のデータに対応した状態にプログラムし、第１抵抗網の抵抗変化素子Ｒ５１Ｓをデータ”０”に対応した状態、つまり、オフ状態にプログラムする。
【００３３】
第２のシフタブロック６２の第２抵抗網の抵抗変化素子Ｒ５２をデータ”０”に対応した状態、つまり、オフ状態にプログラムし、第２抵抗網の抵抗変化素子Ｒ５２ＳをデータＤ５２に対応した状態にプログラムする。
【００３４】
第２のシフタブロック６２の第３抵抗網の抵抗変化素子Ｒ５３をデータ”０”に対応した状態、つまり、オフ状態にプログラムし、第３抵抗網の抵抗変化素子Ｒ０３ＳをデータＤ５３に対応した状態にプログラムする。
【００３５】
さらに、配線Ｈ１１に接続された抵抗変化素子Ｒｘ１（Ｒ１１、Ｒ２１、Ｒ３１、Ｒ４１）を、データＤｘ１（Ｄ１１、Ｄ２１、Ｄ３１、Ｄ４）に対応した状態にプログラムする。配線Ｈ１２に接続された抵抗変化素子Ｒｘ２（Ｒ１２、Ｒ２２、Ｒ３２、Ｒ４２）を、データ”０”に対応した状態、つまり、オフ状態にプログラムする。配線Ｈ１３に接続された抵抗変化素子Ｒｘ３（Ｒ１３、Ｒ２３、Ｒ３３、Ｒ４３）を、データＤｘ２（Ｄ１２、Ｄ２２、Ｄ３２、Ｄ４２）に対応した状態にプログラムする。配線Ｈ０４に接続された抵抗変化素子Ｒｘ４（Ｒ１４、Ｒ２４、Ｒ３４、Ｒ４４）を、データＤｘ３（Ｄ１３、Ｄ２３、Ｄ３３、Ｄ４３）に対応した状態にプログラムする。ここで、ｘは１以上４以下の整数である。
【００３６】
図５の上から２行目の配線Ｈ１２上の抵抗変化素子Ｒ２２が不良であった場合には、不良素子の接続した配線Ｈ１２を上記プログラムによって切り離す。さらに、配線Ｈ１２に接続された抵抗変化素子Ｒｘ２、配線Ｈ１３に接続された抵抗変化素子Ｒｘ３、配線Ｈ０４に接続された抵抗変化素子Ｒｘ４の設定データを上記プログラムによって、シフトする。このように、不良素子の接続した配線を切り離し、設定データをシフトすることで、不良素子を回避して所望の論理を実現することができる。
【００３７】
図７は、本発明の第１実施形態における第２のモードにおいて、設定データと抵抗変化素子の関係を示す回路図である。図７は、図２に示したプログラマブル論理集積回路の一部であり、行方向に延伸した配線上のコネクションブロック３と、スイッチブロック２と、２つのシフタブロックを示している。２つのシフタブロックは、第１のシフタブロック６１と第２のシフタブロック６２である。第２のモードは不良素子がない場合、シフタブロック、スペアの配線、及びスペアの抵抗変化素子を考慮して、配置配線を行い、より多様な論理を実現するモードである。尚、不良素子がある場合は不良素子のアドレス情報に基づき、不良素子を避けるように配置配線を行う。図７では、抵抗変化素子Ｒｘｙに対応した設定データＤｘｙを示している。ここで、ｘは０以上５以下、ｙは１以上４以下の整数である。また、図７では、第１のシフタブロック６１の抵抗変化素子Ｒ０ｙＳに対応した設定データＤ０ｙＳを示している。また、図７では、第２のシフタブロック６２の抵抗変化素子Ｒ５ｙＳに対応した設定データＤ５ｙＳを示している。
【００３８】
回路の柔軟性を高める例として、配線リソースの競合を避けるためにシフタブロックを利用する例について、説明する。たとえば、配置配線のある段階で、配線Ｈ１２が第１の信号を伝搬するために予約されたとする。このとき、たとえば第２の信号を配線Ｈ０２から抵抗変化素子Ｒ０２とＲ１２とを介して配線Ｖ１へ伝搬させたい場合に、配線Ｈ１２の配線リソースの競合が生じる。シフタブロックを利用できる第２のモードにおいては、第２の信号を配線Ｈ０２から抵抗変化素子Ｒ０２ＳとＲ１３とを介して配線Ｖ１へ伝搬させることができるので、配線リソースの競合を解消することができる。以上のようにスペア回路を利用することで、配線リソースの競合を低減し、より多様な回路を実現できる。
【００３９】
尚、第１のモード、及び第２のモードを選択するために、プログラマブル論理集積回路に設定用のピンを設けてもよい。若しくは、プログラマブル論理集積回路に設定用のレジスタを設けてもよい。
【００４０】
尚、第１実施形態におけるプログラマブル論理集積回路は、シフタブロックを行方向に延伸した配線の両端に配置したが、配線の両端でなく、配線に対し周期的に配置してもよい。また、列方向に延伸した配線上に、シフタブロックを配置してもよい。
【００４１】
尚、図４のシフタブロック６の代わりに、図８に示す巡回型のシフタ回路を用いてもよい。図８に示す巡回型のシフタ回路は、図４のシフタブロック６と比較して、抵抗変化素子Ｒ０４、抵抗変化素子Ｒ０４Ｓ、及び巡回用の配線Ｈ０が追加されている点が、異なる。図８に示すシフタ回路によれば、信号を配線Ｈ０４から抵抗変化素子Ｒ０４Ｓ及び巡回用の配線Ｈ０を介して配線Ｈ１１へ伝搬させることができる。
【００４２】
以上のように、本実施形態によれば、シフタブロック６（６１、６２）とスペア回路を用いて、不良素子を回避し、所望の論理回路を実現できる。さらに、第１のモードにおいて、プログラマブル論理集積回路の品質を一定に保つことができる。さらに、第２のモードにおいては、プログラマブル論理集積回路の品質がばらつくものの、より多様な回路を実現することができる。
【００４３】
〔第２実施形態〕
次に、本発明の第２実施形態によるプログラマブル論理集積回路について、説明する。図９は、本発明の第２実施形態によるプログラマブル論理集積回路の構成の一部を示すブロック図である。
【００４４】
本実施形態によるプログラマブル論理集積回路は、第１実施形態によるプログラマブル論理集積回路と同様に、スイッチブロック２、コネクションブロック３、及びシフタブロック６を有する。図９は、図１に示したプログラマブル論理集積回路の一部であり、行方向に延伸した配線上のコネクションブロック３と、スイッチブロック２と、シフタブロック６と、を示している。さらに本実施形態によるプログラマブル論理集積回路は図９に示すように、Ｘ側デコーダ９、Ｘ側ドライバ７、Ｙ側デコーダ１０、及びＹ側ドライバ８を有する。Ｘ側デコーダ９は行方向に延伸し、列方向に延伸したＸ選択線Ｘ１、Ｘ２、Ｘ３、Ｘ４を駆動する。Ｘ側ドライバ７は行方向に延伸し、列方向に延伸したＸドライバ線ＸＤ０、ＸＤ１を駆動する。Ｙ側デコーダ１０は列方向に延伸し、行方向に延伸したＹ選択線Ｙ１Ｏ、Ｙ１Ｅ、Ｙ２Ｏ、Ｙ２Ｅ、Ｙ３Ｏ、Ｙ３Ｅ、Ｙ４Ｏ、Ｙ４Ｅを駆動する。Ｙ側ドライバ８は列方向に延伸し、行方向に延伸したＹドライバ線ＹＤ０を駆動する。
【００４５】
さらに本実施形態によるプログラマブル論理集積回路は図９に示すように、トランジスタＴＹｙＥを有する。ｙを１以上３以下の整数として、トランジスタＴＹｙＥは、そのソースを配線Ｈ０ｙに接続され、そのドレインをＸドライバ線ＸＤ０に接続され、そのゲートをＹ選択線ＹｙＥに接続されている。
【００４６】
さらに本実施形態によるプログラマブル論理集積回路は図９に示すように、トランジスタＴＹｙОを有する。ｙを１以上３以下の整数として、トランジスタＴＹｙОは、そのソースを配線Ｈ１ｙに接続され、そのドレインをＸドライバ線ＸＤ１に接続され、そのゲートをＹ選択線ＹｙＯに接続されている。図９ではｙが４の場合、すなわちトランジスタＴＹ４Оは、そのソースを配線Ｈ０４に接続され、そのドレインをＸドライバ線ＸＤ１に接続され、そのゲートをＹ選択線Ｙ４Ｏに接続されている。
【００４７】
シフタブロック６の左右外側に位置するトランジスタ（ＴＹｙＥ、ＴＹｙО）で、Ｙ選択線ＹｙＥとＹｙＯを入れ替えることにより、シフタブロック６内の抵抗変化素子へのアクセスを実現している。
【００４８】
さらに本実施形態によるプログラマブル論理集積回路は図９に示すように、トランジスタＴＸｘを有する。ｘを１以上４以下の整数として、トランジスタＴＸｘは、そのソースを配線Ｖｘに接続され、そのドレインをＹドライバ線ＹＤ０に接続され、そのゲートをＸ選択線Ｘｘに接続される。コネクションブロック３、スイッチブロック２内の抵抗変化素子へのアクセスは、トランジスタＴＹｙＯとＴＸｘを利用して実現している。
【００４９】
抵抗変化素子の読み出しは、その両端に読み出し電圧Ｖｒを印加し、抵抗変化素子に流れる電流をセンスすることで、抵抗変化素子の状態を判別できる。抵抗変化素子のデータ０のプログラムは、その両端にプログラム電圧−Ｖｐを印加することで、オフ状態にできる。抵抗変化素子のデータ１のプログラムは、その両端にプログラム電圧＋Ｖｐを印加することで、オン状態にできる。
【００５０】
スタンバイ状態について説明する。スタンバイ状態においては、すべてのＸ選択線、Ｙ選択線はＬｏｗレベルに駆動される。すべてのＸ側ドライバ７、Ｙ側ドライバ８はＬｏｗレベルに駆動される。
【００５１】
シフタブロック６内の抵抗変化素子の読み出し動作について、説明する。抵抗変化素子Ｒ０２からの読み出しを例にとって説明する。スタンバイ状態に続き、読み出し動作が始まると、Ｙ選択線Ｙ２Ｅ、Ｙ２ＯはＨｉｇｈレベルに駆動され、Ｘドライバ線ＸＤ０、ＸＤ１は、一方がＬｏｗレベル、他方がＶｒの電圧に駆動される。トランジスタＴＹ２Ｅ、ＴＹ２Ｏがオン状態となる。その他のＸドライバ線、Ｙドライバ線はフローティングに設定される。抵抗変化素子Ｒ０２を流れる読み出し電流Ｉｒをセンスすることで、データを判別することができる。
【００５２】
シフタブロック６内の抵抗変化素子のプログラム動作について、説明する。抵抗変化素子Ｒ０２からの書き込みを例にとって、説明する。スタンバイ状態に続き、書き込み動作が始まると、すべてのＸ選択線、Ｙ選択線はＨｉｇｈレベルに駆動される。すべてのＸドライバ、ＹドライバはＶｐ／２レベルに駆動される。次に、Ｙ選択線Ｙ２Ｅ、Ｙ２Ｏは、Ｈｉｇｈレベルに駆動され、それ以外のＹ選択線、Ｘ選択線はＬｏｗレベルに駆動される。Ｘドライバ線ＸＤ０、ＸＤ１は、書き込みデータに応じて、一方がＬｏｗレベル、他方がＶｐの電圧に駆動される。トランジスタＴＹ２Ｅ、ＴＹ２Ｏがオン状態となる。その他のＸドライバ線、Ｙドライバ線は、フローティングに設定される。抵抗変化素子Ｒ０２に印加された電圧により、所望のデータをプログラムすることができる。
【００５３】
コネクションブロック３、又はスイッチブロック２内の抵抗変化素子の読み出し動作について、説明する。抵抗変化素子Ｒ１２からの読み出しを例にとって、説明する。スタンバイ状態に続き、読み出し動作が始まると、Ｙ選択線Ｙ２ＯはＨｉｇｈレベルに駆動され、Ｘ選択線Ｘ１はＨｉｇｈレベルに駆動され、Ｘドライバ線ＸＤ１と、Ｙドライバ線ＹＤ０は、一方がＬｏｗレベル、他方がＶｒの電圧に駆動される。トランジスタＴＹ２Ｏ、ＴＸ１がオン状態となる。その他のＸドライバ線、Ｙドライバ線はフローティングに設定される。抵抗変化素子Ｒ１２に流れる読み出し電流Ｉｒをセンスすることで、データを判別することができる。
【００５４】
コネクションブロック３、又はスイッチブロック２内の抵抗変化素子のプログラム動作について、説明する。抵抗変化素子Ｒ１２からの書き込みを例にとって説明する。スタンバイ状態に続き、書き込み動作が始まると、すべてのＸ選択線、Ｙ選択線はＨｉｇｈレベルに駆動される。すべてのＸドライバ、ＹドライバはＶｐ／２レベルに駆動される。Ｙ選択線Ｙ２ＯはＨｉｇｈレベルに駆動され、Ｘ選択線Ｘ１はＨｉｇｈレベルに駆動され、それ以外のＹ選択線、Ｘ選択線はＬｏｗレベルに駆動される。Ｘドライバ線ＸＤ１と、Ｙドライバ線ＹＤ０は、書き込みデータに応じて、一方がＬｏｗレベル、他方がＶｐの電圧に駆動される。トランジスタＴＹ２Ｏ、ＴＸ１がオン状態となる。その他のＸドライバ線、Ｙドライバ線はフローティングに設定される。抵抗変化素子Ｒ１２に印加された電圧により、所望のデータをプログラムすることができる。
【００５５】
尚、Ｘ側デコーダ９、Ｘ側ドライバ７、Ｙ側デコーダ１０、及びＹ側ドライバ８は不良素子のアドレス情報に応じて、本発明の第１実施形態で示したように、書き込むデータをシフトするように構成してもよい。
【００５６】
以上のように、本実施形態によれば、シフタブロック６、コネクションブロック３、スイッチブロック２の抵抗変化素子を所望の状態にプログラムすることができるので、不良素子を回避し、所望の論理回路を実現できる。
【００５７】
以上、本発明の好ましい実施形態を説明したが、本発明はこれに限定されるものではない。請求の範囲に記載した発明の範囲内で、種々の変形が可能であり、それらも本発明の範囲に含まれることはいうまでもない。
【００５８】
上記の実施形態の一部または全部は、以下の付記のようにも記載されうるが、以下には限られない。
（付記１）複数のロジックブロックと、
行配線と列配線の接続をスイッチ用不揮発性スイッチ素子により切り換えるスイッチブロックと、
入出力配線を前記スイッチブロックと接続するシフタブロックとを有し、
前記シフタブロックは、冗長配線を含み、
前記冗長配線及び前記行配線を構成する各配線の接続を制御するシフト用不揮発性スイッチ素子を備える、プログラマブル論理集積回路。
（付記２）第１配線と、第２配線と、第３配線と、前記第１配線と前記第２配線の間に形成された第１の抵抗変化素子と、前記第１配線と前記第３配線の間に形成された第２の抵抗変化素子とを少なくとも含む抵抗網を備えたプログラマブル論理集積回路であって、
前記抵抗網の第１の利用状態では、前記第１の抵抗変化素子は第１のデータに対応した状態にプログラムされ、前記第２の抵抗変化素子はオフ状態にプログラムされ、
前記抵抗網の第２の利用状態では、前記第１の抵抗変化素子はオフ状態にプログラムされ、前記第２の抵抗変化素子を第１のデータに対応した状態にプログラムされる、プログラマブル論理集積回路。
（付記３）第３の抵抗変化素子と、前記第１配線を含む複数の配線のうち、お互いに隣接していない配線同士を前記第３の抵抗変化素子を介して接続する巡回用の第４配線とをさらに含む、付記２に記載のプログラマブル論理集積回路。
（付記４）Ｎを整数とし、Ｎ個の前記抵抗網が隣接して配置されたシフタブロックを含み、
ｉを１以上Ｎ−１以下の整数として、ｉ番目の抵抗網の第３配線と、ｉ＋１番目の抵抗網の第２配線が共通の配線であり、
ｊを１以上Ｎ以下のある整数として、
ｉがｊより小さい場合、
ｉ番目の抵抗網は前記第１の利用状態であり、ｉ番目の抵抗網の第１の抵抗変化素子を第ｉのデータに対応した状態にプログラムされ、ｉ番目の抵抗網の第２の抵抗変化素子をオフ状態にプログラムされ、
ｉがｊと等しい、若しくは大きい場合、
ｉ番目の抵抗網は前記第２の利用状態であり、ｉ番目の第１の抵抗変化素子をオフ状態にプログラムされ、ｉ番目の第２の抵抗変化素子を第ｉのデータに対応した状態にプログラムされことを特徴とするシフタブロックを含む、付記２又は付記３に記載のプログラマブル論理集積回路。
（付記５）複数のトラックと、前記複数のトラックの接続関係を規定するスイッチブロックと、論理演算を行うロジックブロックと、前記複数のトラックと前記ロジックブロックの接続関係を規定するコネクションブロックとをさらに含み、
前記シフタブロックの第１配線、第２配線、第３配線は前記トラックに接続され、
前記シフタブロックのｉ番目の抵抗網の第２配線と接続された第ｉのトラックにおいて、ｉがｊより小さい場合、
第ｉのトラックに接続された前記コネクションブロック又は前記スイッチブロックの抵抗変化素子セットを第ｉのデータセットに対応した状態にプログラムされる、付記４に記載のプログラマブル論理集積回路。
（付記６）複数のトラックと、前記複数のトラックの接続関係を規定するスイッチブロックと、論理演算を行うロジックブロックと、前記複数のトラックと前記ロジックブロックの接続関係を規定するコネクションブロックとをさらに含み、
前記シフタブロックの第１配線、第２配線、及び第３配線は前記トラックに接続され、
前記シフタブロックのｉ番目の抵抗網の第２配線と接続された第ｉのトラックにおいて、ｉがｊと等しい場合、
第ｉのトラックに接続された前記コネクションブロック又は前記スイッチブロックの抵抗変化素子セットをオフ状態にプログラムされる、付記４に記載のプログラマブル論理集積回路。
（付記７）複数のトラックと、前記複数のトラックの接続関係を規定するスイッチブロックと、論理演算を行うロジックブロックと、前記複数のトラックと前記ロジックブロックの接続関係を規定するコネクションブロックとをさらに含み、
前記シフタブロックの第１配線、第２配線、第３配線は前記トラックに接続され、
前記シフタブロックのｉ番目の抵抗網の第２配線と接続された第ｉのトラックにおいて、ｉがｊより大きい場合、
第ｉ＋１のトラックに接続された前記コネクションブロック又は前記スイッチブロックの抵抗変化素子セットを第ｉのデータセットに対応した状態にプログラムされる、付記４に記載のプログラマブル論理集積回路。
（付記８）前記抵抗網の第１配線上の第１のトランジスタと、前記抵抗網の第２配線上の第２のトランジスタと、前記抵抗網の第３配線上の第３のトランジスタとを備え、
前記第１のトランジスタと前記第２のトランジスタがオン状態、前記第３のトランジスタがオフ状態に設定されて、前記第１の抵抗変化素子のデータを書き換え、
前記第１のトランジスタと前記第３のトランジスタがオン状態、前記第２のトランジスタがオフ状態に設定されて、前記第２の抵抗変化素子のデータを書き換える、付記２乃至付記７のいずれか一つに記載のプログラマブル論理集積回路。
（付記９）第１のモードと第２のモードを備え、
前記第１のモードは、
シフタブロックに接続された利用可能な配線数をＮとして、所望の回路を実現するための論理合成及び配置配線を行い、さらに、不良素子のアドレス情報に応じて、ｊの値を決定し、
前記第２のモードは、
シフタブロックに接続された利用可能な配線数をＮ＋１として、所望の回路を実現するための論理合成及び配置配線を行う、付記２乃至付記８のいずれか一つに記載のプログラマブル論理集積回路。
（付記１０）
前記論理合成及び前記配置配線を、不良素子のアドレス情報を考慮して行う、付記９に記載のプログラマブル論理集積回路。
（付記１１）前記第１のモードと前記第２のモードは、
モード設定用の外部ピンの設定値の値、若しくはモード設定用のレジスタの値によってモードが決定される、付記９又は付記１０に記載のプログラマブル論理集積回路。
【００５９】
この出願は、２０１４年３月１７日に出願された日本出願特願２０１４−５３３０２号を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【符号の説明】
【００６０】
１    ロジックブロック
２    スイッチブロック
３    コネクションブロック
４    配線
５    Ｉ／Ｏブロック
６、６１、６２    シフタブロック
７    Ｘ側ドライバ
８    Ｙ側ドライバ
９    Ｘ側デコーダ
１０    Ｙ側デコーダ
【図１】
2015141153.tif 000003
【図２】
2015141153.tif 000004
【図３】
2015141153.tif 000005
【図４】
2015141153.tif 000006
【図５】
2015141153.tif 000007
【図６】
2015141153.tif 000008
【図７】
2015141153.tif 000009
【図８】
2015141153.tif 000010
【図９】
2015141153.tif 000011
【図１０】
2015141153.tif 000012
【国際調査報告】
2015141153.tif 000013
2015141153.tif 000014
2015141153.tif 000015
2015141153.tif 000016