(57)【要約】【課題】面積オーバーヘッドの少ない欠陥耐性技術を提案する。【解決手段】実施形態に係わる再構成可能な回路は、複数の行配線HL01〜HL12と、複数の列配線VL00〜VL12と、複数の行配線HL01〜HL12にそれぞれ接続される複数の出力インバータOUT_Inv01〜OUT_Inv12と、複数の列配線VL01〜VL12にそれぞれ接続される複数の入力インバータIN_Inv01〜IN_Inv12と、複数の行配線HL01〜HL12及び複数の列配線VL00〜VL12間にそれぞれ配置される複数の抵抗変化素子と、複数の抵抗変化素子のうちの1つをアクセスするドライバ1、 2と、不良行又は不良列を示すアドレスをスペア行又はスペア列を示すアドレスに置換するアドレス置換部3と、を備える。【選択図】図1
2016178229.tif 000002
【特許請求の範囲】
【請求項１】
A行B列に配置された回路ブロックの配列を備え、
各回路ブロックは、
M本の行配線を有する行配線群と、
前記M本の行配線に交差するN本の列配線を有する列配線群と、
前記行配線群に含まれる行配線に入力端子が接続される出力インバータと、
前記列配線群に含まれる列配線に出力端子が接続される入力インバータと、
前記M本の行配線と前記N本の列配線との交差領域に設けられた複数の抵抗変化素子であって、各抵抗変化素子は行配線に接続される第1端子および列配線に接続される第2端子を有しかつ前記第1端子および第2端子間に印加される電圧によって低抵抗状態および高抵抗状態のいずれか一方の状態から他方の状態に遷移可能である複数の抵抗変化素子と、を備え、
a行b列の位置の回路ブロックのm番目の行配線とn番目の列配線との交差領域にある抵抗変化素子は、アドレスabmn(1≦a≦A、1≦b≦B、1≦m≦M、1≦n≦N)を備え、
さらに、
1つの回路ブロックの行配線に接続される出力インバータの出力端子と、別の回路ブロックの列配線に接続される入力インバータの入力端子と、を接続する配線と、
aDbDmDnDの抵抗変化素子が不良素子で、aD行bD列の回路ブロックのmD番目の行配線の出力インバータの出力端子がaO行bO列の回路ブロックのqD番目の列配線の入力インバータの入力端子に接続され、aD行bD列の回路ブロックのmS番目の行配線の出力インバータの出力端子がaO行bO列の回路ブロックのnS番目の列配線の入力インバータの入力端子に接続される場合、∀を任意の数としてaDbDmD∀のアドレスをaDbDmS∀へ置換する行アドレス置換機構と、aObO∀qDのアドレスをaObO∀nSへ置換する列アドレス置換機構と、
を備える再構成可能な回路。
【請求項２】
A行B列に配置された回路ブロックの配列を備え、
各回路ブロックは、
M本の行配線を有する行配線群と、
前記M本の行配線に交差するN本の列配線を有する列配線群と、
前記行配線群に含まれる行配線に入力端子が接続される出力インバータと、
前記列配線群に含まれる列配線に出力端子が接続される入力インバータと、
前記M本の行配線と前記N本の列配線との交差領域に設けられた複数の抵抗変化素子であって、各抵抗変化素子は行配線に接続される第1端子および列配線に接続される第2端子を有しかつ前記第1端子および第2端子間に印加される電圧によって低抵抗状態および高抵抗状態のいずれか一方の状態から他方の状態に遷移可能である複数の抵抗変化素子と、を備え、
a行b列の位置の回路ブロックのm番目の行配線とn番目の列配線との交差領域にある抵抗変化素子は、アドレスabmn(1≦a≦A、1≦b≦B、1≦m≦M、1≦n≦N)を備え、
さらに、
1つの回路ブロックのk番目の行配線に接続される出力インバータの出力端子と、別の回路ブロックのk番目の列配線に接続される入力インバータの入力端子と、を接続する配線と、
aDbDmDnDの抵抗変化素子が不良素子で、aD行bD列の回路ブロックのmD番目とmS番目の行配線の出力インバータの出力端子が接続される回路ブロックのアドレスがaO行bO列であった場合、∀を任意の数としてaDbDmD∀のアドレスをaDbDmS∀へ置換する行アドレス置換機構と、aObO∀mDのアドレスをaObO∀mSへ置換する列アドレス置換機構と、
を備える再構成可能な回路。
【請求項３】
P個の不良素子のアドレスのリストaDibDimDinDi(1≦i≦P)と各回路ブロックの相互接続情報に基づき生成された、被置換行アドレスと置換後行アドレスのペアを含む行アドレス置換テーブル、並びに、被置換列アドレスと置換後列アドレスのペアを含む列アドレス置換テーブルを、さらに備える、請求項1又は2に記載の再構成可能な回路。
【請求項４】
前記アドレスが、回路ブロック配列の行アドレスa、回路ブロック配列の列アドレスb、回路ブロック内の行アドレスm、回路ブロック内の列アドレスnを示すビット列の連結で構成され、前記行アドレスおよび列アドレスの置換テーブルの被置換アドレスリストがビット昇順に並ぶ、請求項3に記載の再構成可能な回路。
【請求項５】
低抵抗状態にする抵抗変化素子のアドレスのリストを含む回路構成データを備え、
前記回路構成データに含まれるアドレスがビット昇順に並ぶ、
請求項3又は4に記載の再構成可能な回路。
【請求項６】
前記回路構成データに含まれるアドレスを前記行アドレスと列アドレスの置換テーブルに従って置換するアドレス置換機構を備える、請求項5に記載の再構成可能な回路。
【請求項７】
前記行アドレスと列アドレスの置換テーブルの情報を保持する不揮発メモリおよび前記アドレス置換機構を実現する論理回路をさらに備える、請求項6に記載の再構成可能な回路。
【請求項８】
複数の入力端子および1つの出力端子を有するプログラム可能な論理回路をさらに具備し、前記複数の入力端子の各々は、前記行配線に接続される出力インバータの出力端子の1つに接続され、前記出力端子は、前記列配線に接続される入力インバータの入力端子の1つに接続される、請求項1乃至7のいずれか1項に記載の再構成可能な回路。
【請求項９】
複数の行プログラム配線を有する行プログラム配線群と、
前記複数の行プログラム配線に交差する複数の列プログラム配線を有する列プログラム配線群と、
前記複数の行プログラム配線のそれぞれに印加する電圧を制御する行プログラム制御部と、
前記複数の列プログラム配線のそれぞれに印加する電圧を制御する列プログラム制御部と、
前記行配線と前記行プログラム配線との間、および、前記列配線と前記列プログラム配線との間、の少なくとも一方に設けられる選択素子と、
をさらに備える、請求項1乃至8のいずれか1項に記載の再構成可能な回路。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、再構成可能な回路（reconfigurable circuit）に関する。
【背景技術】
【０００２】
フィールドプログラマブルゲートアレイ（Field Programmable Gate Array: FPGA）に代表されるプログラマブルロジックデバイス（Programmable logic device: PLD）は、チップ製造後に回路構成を書き換えることができる半導体集積回路である。アイランドスタイル(Island-style)のPLDは、計算単位構造(Computational Unit)の2次元的な繰り返し構造を含む。計算単位構造は、プログラマブル配線資源(Programmable wiring resources)とプログラマブル論理資源(Programmable logic resources)から構成される。
【０００３】
プログラマブル配線資源は、複数の配線群と、それらと直交する複数の配線群、配線群同士の相互接続関係を切り替えるスイッチ、その相互接続関係を記録するメモリ、から構成されるプログラマブルクロスバ(Programmable crossbar)を含む。プログラマブルクロスバは、Programmable Interconnect、若しくは、Programmable Switch Matrixと呼ばれることもある。
【０００４】
プログラマブルクロスバを、複数の配線群と、それらと直交する複数の配線群、両配線群の交差領域に設けられた複数の抵抗変化素子で構成する技術が知られている。抵抗変化素子は、例えば、2端子の不揮発抵抗変化素子であり、これら端子間に所定の電圧を印加することにより低抵抗状態と高抵抗状態を切り替えることができる。2端子の不揮発抵抗変化素子を用いるプログラマブルクロスバは、小面積で高い経路選択能(routability)を有する。2端子の不揮発抵抗変化素子を用いるプログラマブルクロスバを導入することで、PLDのロジック密度を増大させることができる。
【０００５】
2端子の不揮発抵抗変化素子を用いるプログラマブルクロスバに応用可能な欠陥耐性技術(Fault-Tolerant Technique)が求められている。欠陥耐性技術は、抵抗変化素子の一部に不良素子が含まれていたとしても、その影響を回避し、システム全体としては正常な機能を実現する技術である。欠陥耐性技術は、何かしらの冗長性、即ち、面積オーバーヘッドを加えることにより実現される。PLDのロジック密度を増大させるためには、面積オーバーヘッドの少ない欠陥耐性技術が求められている。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開2005-101535号公報
【非特許文献】
【０００７】
【非特許文献１】M。 Tada、 T。 Sakamoto、 N。 Banno、 M。 Aono、 H。 Hada、 N。 Kasai、 "Nonvolatile Crossbar Switch Using TiOx/TaSiOy Solid Electrolyte"、 IEEE TRANSACTIONS ON ELECTRON DEVICES、 VOL。 57、 NO。 8、 AUGUST 2010、 p。1987
【発明の概要】
【発明が解決しようとする課題】
【０００８】
実施形態は、面積オーバーヘッドの少ない欠陥耐性技術を提案する。
【課題を解決するための手段】
【０００９】
実施形態によれば、再構成可能な回路は、A行B列に配置された回路ブロックの配列を備える。各回路ブロックは、M本の行配線を有する行配線群と、前記M本の行配線に交差するN本の列配線を有する列配線群と、前記行配線群に含まれる行配線に入力端子が接続される出力インバータと、前記列配線群に含まれる列配線に出力端子が接続される入力インバータと、前記M本の行配線と前記N本の列配線との交差領域に設けられた複数の抵抗変化素子であって、各抵抗変化素子は行配線に接続される第1端子および列配線に接続される第2端子を有しかつ前記第1端子および第2端子間に印加される電圧によって低抵抗状態および高抵抗状態のいずれか一方の状態から他方の状態に遷移可能である複数の抵抗変化素子と、を備える。a行b列の位置の回路ブロックのm番目の行配線とn番目の列配線との交差領域にある抵抗変化素子は、アドレスabmn(1≦a≦A、1≦b≦B、1≦m≦M、1≦n≦N)を備える。再構成可能な回路は、さらに、1つの回路ブロックの行配線に接続される出力インバータの出力端子と、別の回路ブロックの列配線に接続される入力インバータの入力端子と、を接続する配線と、aDbDmDnDの抵抗変化素子が不良素子で、aD行bD列の回路ブロックのmD番目の行配線の出力インバータの出力端子がaO行bO列の回路ブロックのqD番目の列配線の入力インバータの入力端子に接続され、aD行bD列の回路ブロックのmS番目の行配線の出力インバータの出力端子がaO行bO列の回路ブロックのnS番目の列配線の入力インバータの入力端子に接続される場合、∀を任意の数としてaDbDmD∀のアドレスをaDbDmS∀へ置換する行アドレス置換機構と、aObO∀qDのアドレスをaObO∀nSへ置換する列アドレス置換機構と、を備える。
【図面の簡単な説明】
【００１０】
【図１】Programmable computational unitの例を示す図。
【図２】Programmable computational unitsの相互接続関係の例を示す図。
【図３】プログラマブルクロスバの例を示す図。
【図４】図3の等価回路を示す図。
【図５】抵抗変化素子の例を示す図。
【図６】Bit stream dataを説明する図。
【図７】アドレス置換によるDefect cellの救済方法の例を示す図。
【図８】アドレス置換テーブルを作成するアルゴリズムの例を示す図。
【図９】Defect cellを回避可能な書き込みアルゴリズムを示す図。
【図１０】アドレス置換部を備えるPLDの例を示す図。
【図１１】アドレス置換部を備えるユーザーコンピュータの例を示す図。
【図１２】プログラマブルクロスバ及びプログラム制御回路を含むPLDの適用例を示す図。
【発明を実施するための形態】
【００１１】
以下、図面を参照しながら実施例を説明する。
【００１２】
1．  実施例  
以下、図面を参照しながら実施形態を説明する。
【００１３】
図1は、2端子の不揮発抵抗変化素子を用いるプログラマブルクロスバを含むプログラマブルComputational Unitを示す。
【００１４】
プログラマブルcomputational unit11は、プログラマブルクロスバ（本明細書では，これを回路ブロックとも参照する）11ａ及びプログラマブルロジック11ｂを含む。
【００１５】
プログラマブルクロスバ11ａは、M本の行配線（本例では、M＝16）HL01〜HL16を有する行配線群と、これらM本の行配線HL01〜HL16に交差するN本の列配線（本例では、N＝13）VL01〜VL13を有する列配線群と、M本の行配線HL01〜HL16に入力端子がそれぞれ接続される複数の出力インバータOUT_Inv01〜OUT_Inv15と、N本の列配線に出力端子がそれぞれ接続される複数の入力インバータIN_Inv01〜IN_Inv13と、を備える。
【００１６】
複数の入力インバータIN_Inv01〜IN_Inv12の入力端子には、他のプログラマブルcomputational unitからの入力信号が入力される。また、複数の出力インバータOUT_Inv01〜IN_Inv12の出力端子からは、他のプログラマブルcomputational unitへの出力信号が出力される。
【００１７】
複数の抵抗変化素子（Resistive switching device）は、M本の行配線HL01〜HL16とN本の列配線VL01〜VL13との交差領域に配置される。各抵抗変化素子は、行配線群に含まれる1本の行配線に接続される第1端子及び列配線群に含まれる1本の列配線に接続される第2端子を有し、かつ、第1端子及び第2端子間に印加される電圧によって低抵抗状態及び高抵抗状態のいずれか一方の状態から他方の状態に遷移可能である。
【００１８】
プログラマブルクロスバ11は、ある1つの入力インバータに入力された入力信号を、任意の出力インバータから出力することが可能な多入力多出力のマルチプレクサ機能を有する。
【００１９】
プログラマブルロジック11ｂは、K入力1出力ルックアップテーブルLUT（本例では、K=3）と、順序回路を構成するためのフリップフロップFFと、2入力1出力のマルチプレクサMUXと、を備える。
【００２０】
ルックアップテーブルLUTは、k入力1出力の任意の真理値表を実装できる。マルチプレクサMUXは、ルックアップテーブルLUTの出力とフリップフロップFFの出力のうちの1つを選んで出力する。
【００２１】
プログラマブルロジック11ｂは、プログラマブルクロスバ11ａから3つの入力信号が入力され、また、1つの出力信号を出力する。この1つの出力信号は、プログラマブルクロスバ11ａ内の13番目の入力インバータIN_Inv13の入力端子に入力される。
【００２２】
プログラマブルロジック11ｂは、さらに、ルックアップテーブルLUTとマルチプレクサMUXのコンフィグレーションメモリとして、複数本（本例では、10本）の行配線HL17〜HL26と、複数本（本例では、2本）の列配線VL14〜VL15と、これら行配線HL17〜HL26及び列配線VL14〜VL15間の交差領域に配置される複数の抵抗変化素子と、を備える。各抵抗変化素子は、プログラマブルクロスバ11ａ内の各抵抗変化素子と同様に、2端子の抵抗変化素子である。
【００２３】
プログラマブルロジック11ｂ内の複数の抵抗変化素子に関し、1本の行配線に接続される2個の抵抗変化素子の一方は、低抵抗状態に設定され、他方は、高抵抗状態に設定される。この場合、例えば、2本の列配線VL14、 VL15の一方に電源電圧VDDを印加し、他方に接地電位VSSを印加することによって、その1本の行配線の電位を電源電位VDD又は接地電位VSSの一方、即ち、低抵抗状態の抵抗変化素子が接続される列配線の電位に設定することができる。
【００２４】
本例のプログラマブルcomputational unit11は、shift redundancy回路を備える。
【００２５】
例えば、プログラマブルクロスバ11ａ内の4本の行配線HL13〜HL16のうちの3本がルックアップテーブルLUTの入力端子に接続され、残りの1本がスペア行配線となる。
【００２６】
また、プログラマブルロジック11ｂ内の10本の行配線HL17〜HL26のうちの９本がコンフィグレーションメモリの出力端子として、ルックアップテーブルLUTとマルチプレクサMUXに接続され、残りの1本がスペア行配線となる。
【００２７】
このshift redundancy回路により、4本の行配線HL13〜HL16のうちの1本に不良があったとしても、スペア行配線を使用することによって、正常な機能を維持することができる。同様に、10本の行配線HL17〜HL26のうちの1本に不良があったとしても、スペア行配線を使用することによって、正常な機能を維持することができる。
【００２８】
結局、本例のプログラマブルcomputational unitは、合計26本の行配線HL01〜HL26と、合計15本の列配線VL01〜VL15と、を備える。
【００２９】
A行B列のプログラマブルComputational Unitもしくはプログラマブルクロスバの配列を考えた場合、a行b列の位置のクロスバのm番目の行配線とn番目の列配線との交差領域にある抵抗変化素子のアドレスをabmn(1≦a≦A、1≦b≦B、1≦m≦M、1≦n≦N)と表す。
【００３０】
ここで、a、b、m、nは、それぞれ、クロスバ配列の行アドレス(ブロック行アドレス)、クロスバ配列の列アドレス(ブロック列アドレス)、クロスバ内の行アドレス(ローカル行アドレス)、クロスバ内の列アドレス(ローカル列アドレス)、を表すビット列である。本実施例では、フルアドレスabmnを、a、b、m、及び、nのビット列の連結で表す。
【００３１】
複数の抵抗変化素子に対するデータ書き込み時において、行ドライバ（HL_control）1及び列ドライバ（VL_control）2は、複数のプログラマブルcomputational unitのうちから、ブロック行アドレスａ及びブロック列アドレスｂにより指定されるプログラマブルcomputational unitを選択する。また、行ドライバ（HL_control）1及び列ドライバ（VL_control）2は、選択されたプログラマブルcomputational unit内の複数の抵抗変化素子のうちから、ローカル行アドレスｍ及びローカル列アドレスｎにより指定される抵抗変化素子を選択する。
【００３２】
アドレス置換部（address transition portion: ATP）3は、外部（例えば、ユーザーコンピュータ）から入力されるアドレスが、不良セルを含む不良行又は不良列を指定するとき、そのアドレスをスペア行又はスペア列を指定するアドレスに置換する。置換後のアドレスは、行ドライバ（HL_control）1及び列ドライバ（VL_control）2に転送され、これらドライバ（HL_control、 VL_control）1、2は、置換後のアドレスに基づき抵抗変化素子を選択する。
【００３３】
図2は、プログラマブルComputational Unitの配列と相互接続関係を示す。
【００３４】
各Computational Unit 01、10、11、12、21は、12の入力端子と、12の出力端子を持つ。Computational Unit同士は、それぞれの入力端子と出力端子とを接続する配線(Interconnect Wire、 IW)によって、相互に接続される。本実施例では、隣接するComputational Unit同士が相互接続される。
【００３５】
a行b列の位置のComputational Unit 11の1番から3番の出力端子（Nout）は、Northの位置に相当するa-1行b列の位置のComputational Unit 01の1番から3番の入力端子(Sin)に接続される。
【００３６】
a行b列の位置のComputational Unit 11の4番から6番の出力端子(Eout)は、Eastの位置に相当するa行b+1列の位置のComputational Unit 12の4番から6番の入力端子(Win)に接続される。
【００３７】
a行b列の位置のComputational Unit 11の7番から9番の出力端子(Wout)は、Westの位置に相当するa行b-1列の位置のComputational Unit 10の7番から9番の入力端子(Ein)に接続される。
【００３８】
a行b列の位置のComputational Unit 11の10番から12番の出力端子(Sout)は、Southの位置に相当するa+1行b列の位置のComputational Unit 21の10番から12番の入力端子(Nin)に接続される。
【００３９】
このように、本実施例では、1つのクロスバのk番目の行配線に接続される出力インバータの出力端子と、別のクロスバのk番目の列配線に接続される入力インバータの入力端子とが接続される。即ち、入力及び出力インバータを介して相互に接続される行配線と列配線のローカル行アドレスとローカル列アドレスとは一致する。
【００４０】
図3は、配線層間に抵抗変化素子を有するプログラマブルクロスバの例を示している。図4は、図3のプログラマブルクロスバの等価回路である。
【００４１】
この例のプログラマブルクロスバは、4×4のサイズであり、4本の行配線HL01、 HL02、 HL03、 HL04を含む行配線群と、4本の列配線VL01、 VL02、 VL03、 VL04を含む列配線群と、を備える。行配線群と列配線群の交差領域には、合計16個の抵抗変化素子RS11〜RS14、 RS21〜RS24、 RS31〜RS34、 RS41〜RS44が設けられる。例えば、1本の行配線HL01と、4本の列配線VL01、 VL02、 VL03、 VL04の交差領域には、抵抗変化素子RS11、 RS12、 RS13、 RS14が設けられる。
【００４２】
図5は、抵抗変化素子の例を示している。
【００４３】
抵抗変化素子は、同一極性の電圧により高抵抗状態と低抵抗状態とを制御可能なモノポーラ型であってもよいし、逆極性の電圧により高抵抗状態と低抵抗状態とを制御可能なバイポーラ型であってもよい。
【００４４】
例えば、抵抗変化素子が高抵抗状態(HRS: High Resistance State)であるとき、抵抗変化素子は、リセット状態にあるとし、抵抗変化素子が低抵抗状態(LRS: Low Resistance State)であるとき、抵抗変化素子は、セット状態にあるとする。
【００４５】
HRSでは、N1及びN2間の抵抗が高いため、抵抗変化素子は、それが接続される配線間の信号を遮断する。HRSにある抵抗変化素子は、セット電圧Vset以上の電圧パルスが印加されると、低抵抗状態(LRS: Low Resistance State)へ変化する。これをセット動作と呼ぶ。
【００４６】
LRSでは、N1及びN2間の抵抗が低いため、抵抗変化素子は、信号を伝達する。LRSにある抵抗変化素子は、リセット電圧Vrst以上の電圧パルスが印加されると、高抵抗状態(HRS)へ変化する。これをリセット動作と呼ぶ。
【００４７】
図6は、プログラマブルComputational Unitの配列の回路構成データ、若しくは、Bit stream(BS)データを説明する図である。
【００４８】
回路構成データは、低抵抗状態にする抵抗変化素子のアドレスのリスト(回路構成データテーブル)を含む。
【００４９】
本実施例では、回路構成データに含まれるアドレスはQ個であり、それらはビット昇順（in ascending order）に並ぶ。回路構成データの書き込みは、この順で実施する。回路構成データの書き込みの前には、すべての抵抗変化素子は高抵抗状態となっているものとする(全リセット状態)。
【００５０】
図7は、アドレス置換によるDefectの救済方法を示す。
【００５１】
プログラマブルComputational Unitの配列にP個のdefectが存在するとし、i番目のdefectのアドレスはaDibDimDinDiとする。
【００５２】
defectが存在するComputational Unitのdefectが存在する行配線、並びに、その行配線が入力と出力のインバータを介して接続される列配線、は使用不能となる。
【００５３】
図７の例では、∀を任意の数、若しくは、ドントケア(Don’t care)ビット列として、aDibDimDi∀で指定される行配線、並びにそれが接続されるaDi(bDi+1)∀mDiで指定される列配線、は使用不能となる。ここで、本実施例では、使用不要となった行と列の配線のローカル行アドレスとローカル列アドレスは一致している。
【００５４】
ここで、Defectが存在するComputational Unitと、defectが存在する行配線が接続される別のComputational Unitとに、それぞれ、スペアの行配線と、そのスペアの行配線と入力と出力のインバータを介して接続されるスペアの列配線と、が存在する場合、使用不能の行と列配線に代えてスペアの行と列配線を使用することで、defectを救済することができる。
【００５５】
図7の例では、defectが存在するa行b列のComputational Unitと、defectが存在する行配線が接続されるa行b+1列のComputational Unitとに、それぞれ、aDibDisE2W∀で指定されるスペア行配線とaDi(bDi+1)∀sE2Wで指定されるスペア列配線が存在し、両者は、相互接続されている。
【００５６】
回路構成データの書き込み時には、aDibDimDi∀からaDibDisE2W∀への置換を行う行アドレス置換、並びに、aDi(bDi+1)∀mDiからaDi(bDi+1)∀sE2Wへの置換を行う列アドレス置換を実施した上で、データの書き込みを実行する。このことによって、aDibDimDinDiのdefectによる誤動作を避けることができる。
【００５７】
本実施例の場合、defectを回避するために必要となるハードウェア資源は、スペアの行配線と列配線、並びに、それに接続される2端子の不揮発抵抗変化メモリ、並びに、それに接続される入力および出力のインバータ、である。スペアの行/列配線並びに抵抗変化メモリは配線層中に形成されるため、最良の場合シリコン面積を必要としない。本実施例の場合、shift redundancy法を適応した場合と比較してシリコン面積を小さく出来る。
【００５８】
図8は、defectのアドレスのリストとクロスバの相互接続情報とから、アドレス置換テーブルを作成するアルゴリズムを示す。
【００５９】
Defectのアドレスのリスト(Defect Table)に含まれる要素の数はP個であり、それらはビット昇順に並ぶ。クロスバの相互接続は、図2で説明したものとする。
【００６０】
スペア行配線は、North、East、West、Southの4つの隣接クロスバへ接続される行配線群毎に1本設け、その行アドレスは各配線群の中で最もアドレス番号が大きいものとする。また、その行アドレスを、sN2S、sE2W、sW2E、sS2Nと表記する。図2の例では、sN2S=3、sE2W=6、sW2E=9、sS2N=12である。
【００６１】
本実施例では、入力及び出力インバータを介して相互に接続される行配線と列配線のローカル行アドレスとローカル列アドレスは一致するから、スペア列配線は、次のようになる。スペア列配列は、South、West、East 、 Northの4つの隣接クロスバから接続される列配線群毎に1本あり、その列アドレスは各配線群の中で最もアドレス番号が大きいものとなる。また、そのローカル列アドレスは、sN2S、sE2W、sW2E、sS2Nと表記可能で、図2の例では、sN2S=3、sE2W=6、sW2E=9、sS2N=12である。
【００６２】
行アドレス置換テーブルは、被置換行アドレス(row address subject to replacement)、aRsbjbRsbjmRsbj∀と置換後行アドレス(row address after replacement)、 aRrplbRrplmRrpl∀のペアのリストとなる。
【００６３】
列アドレス置換テーブルは、被置換列アドレス(column address subject to replacement)、aCsbjbCsbj∀nCsbjと置換後列アドレス(column address after replacement)、 aCrplbCrpl∀nCrplのペアのリストとなる。
【００６４】
行アドレス置換テーブルの作成アルゴリズムは以下の通りである。
【００６５】
i番目のdefect(aDibDimDinDi)に対応する被置換行アドレス(aRsbjbRsbjmRsbj∀)は、i番目のdefectが存在する行のアドレス(aDibDimDi∀)を設定する。
【００６６】
i番目のdefect(aDibDimDinDi)に対応する置換後行アドレス(aRrplbRrplmRrpl∀)は、i番目のdefectが存在する行が、North、East、West、Southの4つの隣接クロスバへ接続される行配線群の何れかに属するのか判断し、その配線群に設けられたスペア行アドレス(aDibDi sOUT2IN∀)を設定する。ここで、sOUT2INはsN2S、sE2W、sW2E、sS2Nのうち何れか一つを示す。
【００６７】
列アドレス置換テーブルの作成アルゴリズムは以下の通りである。
【００６８】
i番目のdefect(aDibDimDinDi)に対応する被置換列アドレス(aCsbjbCsbj∀nCsbj)は、i番目のdefectが存在する行が入力及び出力インバータを介して相互に接続される列のアドレス(aDi’bDi’∀mDi)となる。ここで、aDi’ とbDi’は、 i番目のdefectが存在する行が入力及び出力インバータを介して接続されるブロックの行と列のアドレスを示す。
【００６９】
i番目のdefect(aDibDimDinDi)に対応する置換後列アドレスaCrplbCrpl∀nCrplは、i番目のdefectが存在する行が入力及び出力インバータを介して相互に接続される列が、South、West、East 、 Northの4つの隣接クロスバから接続される列配線群毎の何れかに属するのか判断し、その配線群に設けられたスペア列アドレス(aDi’bDi’∀sOUT2IN)を設定する。
【００７０】
本実施例のようなクロスバの相互接続関係とすることにより、アドレス置換テーブルを作成するアルゴリズムを、図８に示す通り、簡単なものとすることが出来る。ここで、本実施例のクロスバの相互接続関係の特徴は、(1)入力及び出力インバータを介して相互に接続される行配線と列配線のローカル行アドレスとローカル列アドレスとは一致する、(2)スペア行配線は、North、East、West、Southの4つの隣接クロスバへ接続される行配線群毎に1本設け、その行アドレスは各配線群の中で最もアドレス番号が大きいものとする、
(3)スペア列配列は、South、West、East 、 Northの4つの隣接クロスバから接続される列配線群毎に1本あり、その列アドレスは各配線群の中で最もアドレス番号が大きいものとする、などである。
【００７１】
行アドレス置換テーブルの被置換行アドレスは、本実施例の場合、Defect Tableがビット昇順であれば、ビット昇順となる。
【００７２】
列アドレス置換テーブルは、作成後にソーティング処理を施すことにより、被置換列アドレスについてビット昇順となるようにする。
【００７３】
図9は、defect回避可能な書き込みアルゴリズムを示す。
【００７４】
ここで、被置換行/列アドレスエントリとは、書き込みアドレスが被置換アドレスかどうかを判断するために、比較する必要があるアドレスのセットを言う。
【００７５】
ST1:  書き込みアドレスの更新  
ST2:  回路構成データテーブルの要素を、一つずつ書き込みアドレス(aWibWimWinWi)として取り出す。すべての書き込みアドレスを処理したら終了する。
【００７６】
ST3:  被置換行アドレスエントリの更新  
本実施例では、被置換行アドレスエントリは、書き込みアドレスよりもアドレス値が大きい被置換行アドレスを一つ保持すれば良い。もし書き込みアドレスが、現時点での被置換行アドレスエントリよりも大きい場合、行アドレス置換テーブルの次の要素を被置換行アドレスエントリに登録する。この手続きを、被置換行アドレスエントリが、書き込みアドレスと等しいか、大きくなるまで繰り返す。
【００７７】
ST4:  被置換列アドレスエントリの更新  
本実施例では、被置換列アドレスエントリは、書き込みアドレスのブロックアドレス(aWibWi)と等しいものを最大で4つ保持すればよい。もし書き込みアドレスのブロックアドレスが、現時点での被置換列アドレスのブロックアドレスよりも大きい場合、列アドレス置換テーブルの次の要素(ブロックアドレスが等しいものがあれば、それらすべて)を被置換列アドレスエントリに登録する。この手続きを、被置換列アドレスエントリのブロックアドレスが、書き込みアドレスのブロックアドレスと等しいか、大きくなるまで繰り返す。
【００７８】
ST5&ST6: 行アドレス置換判断と置換  
書き込みアドレス(aWibWimWinWi)と被置換行アドレスエントリ(aRsbjbRsbjmRsbj∀)を比較する。アドレスが一致する場合、ローカル行アドレスの置換を実施する。置換後の書き込みアドレスは、aWibWimRrplnWiとなる。ここで、書き込みアドレスのローカル列アドレス(nWi)は変化しない。
【００７９】
ST7&ST8: 列アドレス置換判断と置換  
書き込みアドレス(aWibWimWinWi)と被置換列アドレスエントリ(aCsbjjbCsbjj∀nCsbjj)を比較する。ここでは、もしST5で行アドレス置換を既に受けている場合、置換後の書き込みアドレスを(aWibWimWinWi)と記載する。アドレスが一致する場合、ローカル列アドレスの置換を実施する。置換後の書き込みアドレスは、aWibWimWinCrplとなる。ここで、書き込みアドレスのローカル行アドレス(mWi)は変化しない。被置換列アドレスエントリが複数あれば、すべてのエントリについて置換判断と置換の処理を実施する。
【００８０】
ST9: 書き込み  
書き込みアドレスに従って、書き込み動作を実施する。ST1に戻る。
【００８１】
本実施例に従えば、図９に示すように、簡単なアルゴリズムでdefectを回避可能である。ここで、本実施例のdefect回避可能な書き込みアルゴリズムの特長は、(1)アドレス置換テーブルを先立って作成すること、(2)回路構成データテーブルがビット昇順に並ぶこと、(3)行および列アドレス置換テーブルが被置換アドレスについてビット昇順に並ぶこと、である。既に述べたように、被置換行アドレスエントリは最大１つ、被置換列アドレスエントリは最大４つであるから、それを実装するためのハードウェアリソースは少ない。このため、アドレス置換部を少ないハードウェアリソース、即ち小さな面積オーバーヘッドで実現できる。
【００８２】
２．  適用例  
次に、上述の実施例の適用例を説明する。
【００８３】
図10は、アドレス置換部を備えるPLDの例を示している。
【００８４】
ドライバ（HL_control、 VL_control）1、2及びアドレス置換部3は、図1のドライバ（HL_control、 VL_control）1、2及びアドレス置換部3に対応する。プログラマブルcomputational unit 11、12、21、22の各々は、図1のプログラマブルcomputational unit 11に対応する。
【００８５】
記憶部4は、アドレス置換テーブルを記憶する。
【００８６】
例えば、図8の行アドレス置換テーブル及び列アドレス置換テーブルは、記憶部4内に記憶される。記憶部4は、e(electric)-fuse、OTP(One-Time-Programmable memory)や、埋め込みNORフラッシュ(Embedded NOR flash)など、の不揮発メモリを利用可能である。
【００８７】
アドレス置換部3は、アドレス置換テーブルを参照しつつ、例えば、図9のアルゴリズムに従い、アドレス置換を行う論理回路を備える。
【００８８】
本例では、回路構成データ（Bit Stream data）は、PLD 5の外部、例えば、ユーザーコンピュータ6から入力される。
【００８９】
また、本例では、アドレス置換部3がPLD 5の内部に配置される。この場合、ユーザーは、Defect情報を考慮することなく、Bit stream dataを作成／更新することができる。また、PLDの製造者は、ユーザーへのDefect情報を開示する必要が無い。
【００９０】
図11は、アドレス置換部を備えるユーザーコンピュータとPLDとのシステムの例を示している。
【００９１】
この例は、図10の例と比べると、ユーザーコンピュータ6がアドレス置換部3及び記憶部4を備えている点に特徴を有する。その他の点については、図10の例と同じであるため、図10と同じ要素には同じ符号を付すことにより、その詳細な説明を省略する。
【００９２】
このような構成によれば、PLD 5は、アドレス置換部や、アドレス置換テーブルを記憶するための記憶部を備えなくてよいため、PLD 5を簡易な回路とし、かつ、PLD 5としてのチップのサイズを小さくできる。
【００９３】
図12は、3端子セレクタを有するプログラマブルクロスバ及びプログラム制御回路を含むPLDの適用例を示している。
【００９４】
例えば、2×2配列のプログラマブルcomputational unit 11、12、21、22は、それぞれプログラマブルクロスバ(programmable crossbar)を含む。各プログラマブルクロスバは、例えば、4×4配列の抵抗変化素子を含む。例えば、プログラマブルクロスバ11は、4本の行配線（水平線）HL111、 HL112、 HL113、 HL114を備える行配線群と、4本の列配線（垂直線）VL111、 VL112、 VL113、 VL114を備える列配線群と、を含む。行配線群と列配線群の交差領域に2端子の抵抗変化素子が配置される。
【００９５】
プログラム制御回路は、行ドライバHL_Control、グローバル行配線群GHLij、列ドライバVL_Control、及び、グローバル列配線群GVLijを備える。但し、iは、1又は2であり、jは、1、2、3、4のうちの１つである。プログラム制御回路は、複数のプログラマブルcomputational unit 11、12、21、22により共有される。
【００９６】
例えば、プログラマブルクロスバ11とプログラマブルクロスバ12は、4本のグローバル行配線GHL11、 GHL12、 GHL13、 GHL14に共通に接続される。また、プログラマブルクロスバ11とプログラマブルクロスバ21は、4本のグローバル列配線GVL11、 GVL12、 GVL13、 GVL14に共通に接続される。
【００９７】
各グローバル行配線群と各プログラマブルクロスバ内の複数の行配線とは、3端子セレクタを介して互いに接続される。同様に、各グローバル列配線群と各プログラマブルクロスバ内の複数の列配線とは、3端子セレクタを介して互いに接続される。3端子セレクタは、例えば、FETなど、である。
【００９８】
例えば、4本のグローバル行配線GHL11、 GHL12、 GHL13、 GHL14は、3端子セレクタHS111、 HS112、 HS113、 HS114を介して、プログラマブルクロスバ11内の4本の行配線HL111、 HL112、 HL113、 HL114にそれぞれ接続される。また、4本のグローバル行配線GHL11、 GHL12、 GHL13、 GHL14は、3端子セレクタHS121、 HS122、 HS123、 HS124を介して、プログラマブルクロスバ12内の4本の行配線HL121、 HL122、 HL123、 HL124にそれぞれ接続される。
【００９９】
同様に、4本のグローバル列配線GVL11、 GVL12、 GVL13、 GVL14は、3端子セレクタVS111、 VS112、 VS113、 VS114を介して、プログラマブルクロスバ11内の4本の列配線VL111、 VL112、 VL113、 VL114にそれぞれ接続される。また、4本のグローバル列配線GVL11、 GVL12、 GVL13、 GVL14は、3端子セレクタVS211、 VS212、 VS213、 VS214を介して、プログラマブルクロスバ21内の4本の列配線VL211、 VL212、 VL213、 VL214にそれぞれ接続される。
【０１００】
ある1つのプログラマブルcomputational unit内のプログラマブルクロスバは、上述の実施例で説明したように、そのcomputational unit内のプログラマブル論理資源や、それとは異なる他のプログラマブルcomputational unit内のプログラマブルクロスバなど、に接続される。
【０１０１】
なお、本例において、3端子セレクタは、2端子セレクタ、例えば、ダイオード，非線形抵抗素子，閾値スイッチ素子，など、に置き換えてもよい。
【０１０２】
３．  むすび  
以上、実施例によれば、面積オーバーヘッドの少ない欠陥耐性技術を実現できる。
【０１０３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１０４】
1：  行ドライバ、  2：  列ドライバ、  3：  アドレス置換部、  4：  記憶部、  5：  PLD、  6：  ユーザーコンピュータ、  01、10、11、12、21、22：  プログラマブルcomputational unit、  11a：  プログラマブルクロスバ、  11b：  プログラマブルロジック。
【図１】
2016178229.tif 000003
【図２】
2016178229.tif 000004
【図３】
2016178229.tif 000005
【図４】
2016178229.tif 000006
【図５】
2016178229.tif 000007
【図６】
2016178229.tif 000008
【図７】
2016178229.tif 000009
【図８】
2016178229.tif 000010
【図９】
2016178229.tif 000011
【図１０】
2016178229.tif 000012
【図１１】
2016178229.tif 000013
【図１２】
2016178229.tif 000014