(57)【要約】【課題】より面積効率の良い再構成可能な半導体集積回路および電子機器を提供する。【解決手段】実施形態の再構成可能な半導体集積回路は、第１のブロックと第２のブロックとを含む。第１のブロックは、並列に接続された第１の複数のメモリと、並列に接続された第２の複数のメモリと、第１の複数のメモリからのうち選択されたメモリから読み出したデータに応じて論理が決定される第１のロジック回路と、第２の複数のメモリのうち選択されたメモリから読み出したデータに応じて第１のロジック回路に対してデータが入出力される経路を切り替える第１のスイッチ回路とを備える。第２のブロックは、第３のメモリから読み出したデータに応じて論理が決定される第２のロジック回路と、第４のメモリから読み出したデータに応じて第２のロジック回路に対してデータが入出力される経路を切り替える第２のスイッチ回路とを備える。【選択図】図１４
2016063490.tif 000002
【特許請求の範囲】
【請求項１】
第１のブロックと第２のブロックとを含む再構成可能な半導体集積回路であって、
前記第１のブロックは、
並列に接続された第１の複数のメモリと、
並列に接続された第２の複数のメモリと、
前記第１の複数のメモリおよび前記第２の複数のメモリからそれぞれ１のメモリを選択する選択部と、
前記第１の複数のメモリのうち前記選択部により選択されたメモリから読み出したデータに応じて論理が決定される第１のロジック回路と、
前記第２の複数のメモリのうち前記選択部により選択されたメモリから読み出したデータに応じて前記第１のロジック回路に対してデータが入出力される経路を切り替える第１のスイッチ回路と
を備え、
前記第２のブロックは、
第３のメモリから読み出したデータに応じて論理が決定される第２のロジック回路と、
第４のメモリから読み出したデータに応じて前記第２のロジック回路に対してデータが入出力される経路を切り替える第２のスイッチ回路と
を備える再構成可能な半導体集積回路。
【請求項２】
前記第１のブロックおよび前記第２のブロックは、
１以上の前記第１のブロックと１以上の前記第２のブロックとを含むタイル毎に配置される請求項１に記載の再構成可能な半導体集積回路。
【請求項３】
前記タイルと、前記第１のブロックおよび前記第２のブロックのうち少なくとも一方とが混在して配置される請求項２に記載の再構成可能な半導体集積回路。
【請求項４】
複数の前記第１のブロックを含む第１の領域と、複数の前記第２のブロックを含む第２の領域とを備える請求項１に記載の再構成可能な半導体集積回路。
【請求項５】
前記第１の領域および前記第２の領域は、水平方向および垂直方向それぞれに対して交互に繰り返して配置される請求項４に記載の再構成可能な半導体集積回路。
【請求項６】
前記第１の領域および前記第２の領域は、それぞれ帯状に配置される請求項４に記載の再構成可能な半導体集積回路。
【請求項７】
第１のブロックと第２のブロックとを含む再構成可能な半導体集積回路であって、
前記第１のブロックは、
並列に接続された第１の複数のメモリと、
並列に接続された第２の複数のメモリと、
前記第１の複数のメモリから読み出した値に応じて論理が決定される第１のロジック回路と、
前記第２の複数のメモリから読み出した値に応じて前記第１のロジック回路に対してデータが入出力される経路を切り替える第１のスイッチ回路と
を備え、
前記第２のブロックは、
第３のメモリから読み出した値に応じて論理が決定される第２のロジック回路と、
第４のメモリから読み出した値に応じて前記第２のロジック回路に対してデータが入出力される経路を切り替える第２のスイッチ回路と
を備え、
前記第１の複数のメモリ、前記第２の複数のメモリ、前記第３のメモリおよび前記第４のメモリは、カラム方向に整列して配置され、
前記カラム方向に整列して配置された前記第１の複数のメモリ、前記第２の複数のメモリ、前記第３のメモリおよび前記第４のメモリを含む複数のメモリ列が、前記カラム方向に対するロー方向に各メモリを整列させて配置される再構成可能な半導体集積回路。
【請求項８】
前記第１の複数のメモリ、前記第２の複数のメモリ、前記第３のメモリおよび前記第４のメモリそれぞれにデータを書き込む書き込み部をさらに備え、
前記書き込み部は、
前記複数のメモリ列における各メモリが前記ロー方向に整列して配置された複数のメモリ行のうち所定のメモリ行を選択するとともに、前記複数のメモリ列のうち所定のメモリ列を選択し、
それぞれ選択した前記メモリ行および前記メモリ列に共通して含まれるメモリにデータを書き込む請求項７に記載の再構成可能な半導体集積回路。
【請求項９】
請求項１乃至請求項８の何れか１項に記載の再構成可能な半導体集積回路と、
プログラムを記憶する記憶部と、
前記記憶部に記憶される前記プログラムに従い、前記再構成可能な半導体集積回路に対して予め定められた処理を実行させるプロセッサと
を有する
ことを特徴とする電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、再構成可能な半導体集積回路および電子機器に関する。
【背景技術】
【０００２】
ＦＰＧＡ(Field-Programmable  Gate  Array)は、任意の論理機能を、再構成可能に実現することができる集積回路（ＩＣ：Integrated  Circuit）である。一般的には、ＦＰＧＡは、基本的な論理情報を出力するロジックブロック（ＬＢ）と、各ＬＢを任意に接続するスイッチブロック（ＳＢ）とを含む基本タイルが配置されて構成される。また、ＬＢおよびＳＢの各ブロックを構成する回路は、コンフィギュレーションメモリが含まれており、このコンフィギュレーションメモリの内容を書き換えることで、ＦＰＧＡ全体で所望の論理を実現することができる。
【０００３】
ここで、このコンフィギュレーションメモリの書き換えをＦＰＧＡの動作周波数よりも高速に行うダイナミックリコンフィグができれば、本来複数のＦＰＧＡを用いて計算される大きな論理を、１つのＦＰＧＡにより計算することが可能となる。実際には、メモリ素子に対する書き込み速度やメモリ素子の消費電力の制約から、上述のようなコンフィギュレーションメモリの高速な書き換えは困難である。
【０００４】
既存のダイナミックリコンフィギャラブルＦＰＧＡは、予め書き込みがなされた複数のコンフィギュレーションメモリ（マルチコンテキストメモリ）を実装し、このマルチコンテキストメモリの読み出しＦＰＧＡの動作周波数よりも高速に切り替えることで、ダイナミックリコンフィグと同等の機能を実現している。以下、コンフィギュレーションメモリの数をコンテキスト数、切り替えるコンフィギュレーションメモリの番号をコンテキストと呼ぶ。また、予め書き込みがなされた複数のコンフィギュレーションメモリを実装したダイナミックリコンフィギャラブルＦＰＧＡを、マルチコンテキスト型ダイナミックリコンフィギャラブルＦＰＧＡ（ＭＣ−ＤＰＧＡ）と呼ぶ。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第７１９３４３７号明細書
【特許文献２】米国特許第７３１７３３１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＭＣ−ＤＰＧＡは、機能の実装に関して、通常のＦＰＧＡとは異なる制約が生じる。順序回路を実装する場合、各回路の計算の順序が適切になるように、ＦＰＧＡにおける各ブロックを実装する必要がある。しかしながら、各ブロックを計算順序が適切になるように実装した場合に、各ブロックの使用頻度にばらつきが生じ、ＭＣ−ＤＰＧＡの効果が十分に得られないおそれがある。また、リング発振器などのように各回路間でフィードバックが発生し非同期回路になっている回路は、ダイナミックリコンフィグに適用できない。
【０００７】
このような回路が複数存在する論理回路では、ＭＣ−ＤＰＧＡのメリットを得ることが難しい。一方、マルチコンテキストメモリのみで構成された基本タイルは、追加メモリや制御回路の増加によって通常のメモリのみで構成された基本タイルに対して面積が大きくなっている。そのため、ダイナミックリコンフィグのメリットが得られなければ、逆に面積が大きくなってしまう可能性もある。
【０００８】
本発明が解決しようとする課題は、より面積効率の良い再構成可能な半導体集積回路および電子機器を提供することにある。
【課題を解決するための手段】
【０００９】
実施形態の再構成可能な半導体集積回路は、第１のブロックと第２のブロックとを含む。第１のブロックは、並列に接続された第１の複数のメモリと、並列に接続された第２の複数のメモリと、第１の複数のメモリのうち選択されたメモリから読み出したデータに応じて論理が決定される第１のロジック回路と、第２の複数のメモリのうち選択されたメモリから読み出したデータに応じて第１のロジック回路に対してデータが入出力される経路を切り替える第１のスイッチ回路とを備える。第２のブロックは、第３のメモリから読み出したデータに応じて論理が決定される第２のロジック回路と、第４のメモリから読み出したデータに応じて第２のロジック回路に対してデータが入出力される経路を切り替える第２のスイッチ回路とを備える。
【図面の簡単な説明】
【００１０】
【図１】図１は、ＦＰＧＡの構成例を概略的に示す図である。
【図２】図２は、各基本タイルの一例の構成を示すブロック図である。
【図３】図３は、スイッチブロックの一例の構成を示す回路図である。
【図４】図４は、ロジックブロックの一例の構成を示す回路図である。
【図５】図５は、マルチコンフィギュレーションメモリの一例の構成を示す回路図である。
【図６】図６は、マルチコンフィギュレーションメモリを用いた基本タイルの例を示すブロック図である。
【図７】図７は、基本タイルが選択信号を生成するコントロール回路を含む例を示すブロック図である。
【図８】図８は、コントロール回路の一例の構成を示す回路図である。
【図９】図９は、マルチコンフィギュレーションメモリの一例の構成を示す図である。
【図１０】図１０は、マルチコンテキスト型ダイナミックリコンフィグのＦＰＧＡに機能を実装する際の制約について説明するための図である。
【図１１】図１１は、マルチコンテキスト型ダイナミックリコンフィグのＦＰＧＡに関する動作シミュレートの一例の結果を示す図である。
【図１２】図１２は、回路間にフィードバック経路を有する場合の例を示す図である。
【図１３】図１３は、第１の実施形態に係るＦＰＧＡの一例の構成を示すブロック図である。
【図１４】図１４は、第１の実施形態に係る基本タイルの一例の構成をより詳細に示すブロック図である。
【図１５】図１５は、第１の実施形態に係る、使用ブロック数の多いコンテキストをシングルコンテキストブロックによる基本ブロックに割り当てることを説明するための図である。
【図１６】図１６は、第１の実施形態に係るＦＰＧＡにおけるマルチコンテキストブロックとシングルコンテキストブロックとの接続について説明するための図である。
【図１７】図１７は、シミュレートに用いたベンチマーク回路に対して第１の実施形態による構成を適用した結果の例を示す図である。
【図１８】図１８は、既存技術による配置と第１の実施形態に係る配置の例を示す図である。
【図１９】図１９は、第１の実施形態に係る、第１および第２の領域を市松模様状に配置したＦＰＧＡの例を示す図である。
【図２０】図２０は、第１の実施形態に係る、第１および第２の領域を帯状に交互に配置したＦＰＧＡの例を示す図である。
【図２１】図２１は、第２の実施形態に係るＦＰＧＡの一例の構成を示す図である。
【図２２】図２２は、第２の実施形態に係るＦＰＧＡのメモリ配列をより詳細に示す図である。
【図２３】図２３は、第３の実施形態に係る電子機器の一例の構成を示すブロック図である。
【発明を実施するための形態】
【００１１】
以下、実施形態に係る、再構成可能な半導体集積回路および電子機器について説明する。図１は、再構成可能な半導体集積回路としてのＦＰＧＡ(Field-Programmable  Gate  Array)の構成例を概略的に示す。図１において、ＦＰＧＡ１は、１以上の基本タイル１０、１０、…と、各基本タイル１０、１０、…とＦＰＧＡ１外部とを接続するためのＩ／Ｏ(Input/Output)１１、１１、…とを含む。
【００１２】
図２は、各基本タイル１０の一例の構成を示す。各基本タイル１０、１０、…は、スイッチブロック２０（以下、ＳＢ２０と記述する）と、ロジックブロック２１（以下、ＬＢ２１と記述する）とを含む。ＬＢ２１は、メモリＭ３０21、３０22、…、３０2nに記憶される値に応じて決定される、基本的な論理回路を実現する。ＳＢ２０は、メモリＭ３０11、３０12、…、３０1nに記憶される値に応じて、各ＬＢ２１、２１、…に対する入出力の経路を接続する。すなわち、ＳＢ２０は、それぞれ隣接するタイル１０に対する配線束４０および４１、４２および４３、４４および４５、ならびに、４６および４７間の接続と、ＳＢ２０およびＬＢ２１間の配線束４８および４９との間の接続を、メモリＭ３０11、３０12、…、３０1nの値に応じて切り替える。
【００１３】
ここで、ＳＢ２０の動作を決定する値が記憶されるメモリＭ３０11、３０12、…、３０1n、および、ＬＢ２１の論理回路を決定する値が記憶されるメモリＭ３０21、３０22、…、３０2nは、それぞれコンフィギュレーションメモリと呼ばれる。以下では、特に記載のない限り、コンフィギュレーションメモリを単にメモリとして記述する。
【００１４】
図３は、ＳＢ２０の一例の構成を示す。ＳＢ２０は、入力された信号を通過させるか否かを決定する。図３の例では、ＳＢ２０は、スイッチ素子２００と、マルチプレクサ２０１ａ〜２０１ｃを用い、メモリＭ３０11、３０12、…、３０1nからそれぞれのメモリ入力線を介して入力された各値２０２に応じて、配線束２０３から入力された各信号を通過させるか否か、通過させる場合、配線束２０４の何れに出力するかを決定する。なお、図３では、ＳＢ２０がスイッチ素子２００とマルチプレクサ２０１ａ〜２０１ｃとを混在して用いているが、これはこの例に限定されない。すなわち、ＳＢ２０は、信号の通過、接続の決定をスイッチ素子のみを用いて行ってもよいし、マルチプレクサのみを用いて行ってもよいし、さらに別の切り替え手段を用いてもよい。
【００１５】
図４は、ＬＢ２１の一例の構成を示す。図４の例では、ＬＢ２１は、マルチプレクサ２１０および２１２と、フリップフロップ（ＦＦ）回路２１１とを有している。ＬＢ２１は、配線束２１５から入力された信号に従い、メモリＭ３０21、３０22、…、３０2nから入力された各値２１３のうち１つを選択して出力するという方法により、入力に応じて任意の出力を行う。なお、ＬＢ２１の構成は、この例に限定されない。
【００１６】
ここで、各メモリＭ３０11、３０12、…、３０1n、および、メモリＭ３０21、３０22、…、３０2nを、ＦＰＧＡ１の動作周波数より速く書き換えるダイナミックリコンフィグに対応可能な構成とすることで、通常は複数のＦＰＧＡ１を使用して計算するような大きな論理を、１つのＦＰＧＡ１により計算することができるようになる。このダイナミックリコンフィグは、例え書き換えが高速なＳＲＡＭ(Static  Random  Access  Memory)を用いても、書き込み速度や電力を考えると困難である。
【００１７】
このため、図５に例示されるように、それぞれ上述のメモリＭ３０11、３０12、…、３０1nやメモリＭ３０21、３０22、…、３０2nに対応する、並列に接続された複数のメモリＭ５１1、５１2、…を含むマルチコンテキストメモリ５０（以下、ＭＣＭ５０）を構成し、ＭＣＭ５０に含まれる複数のメモリＭ５１1、５１2、…を選択信号ＱnによりＦＰＧＡ１の動作周波数より高速に切り替える手法が知られている。
【００１８】
図６は、ＭＣＭ５０を用いた基本タイル１０’の例を示す。なお、図６および以下の同様の図において、上述した図２と共通する部分には同一の符号を付して、詳細な説明を省略する。図６において、ＳＢ２０に対して、上述のメモリＭ３０11、３０12、…、３０1nの代わりにＭＣＭ５０11、５０12、…、５０1nが接続されている。また、ＬＢ２１に対して、上述のメモリＭ３０21、３０22、…、３０2nの代わりにＭＣＭ５０21、５０22、…、５０2nが接続されている。ＭＣＭ５０11、５０12、…、５０1n、および、ＭＣＭ５０21、５０22、…、５０2nに対して選択信号Ｑnが供給される。ＭＣＭ５０11、５０12、…、５０1n、および、ＭＣＭ５０21、５０22、…、５０2nは、それぞれ選択信号Ｑnに従い内部のメモリＭ５１1、５１2、…のうち１つが選択される。ＳＢ２０およびＬＢ２１は、それぞれＭＣＭ５０11、５０12、…、５０1n、および、ＭＣＭ５０21、５０22、…、５０2nにおいて選択されたメモリＭ５１から読み出した値に従い、上述したような経路の切り替え、出力などを行う。
【００１９】
このように、ＭＣＭ５０を用いることで、ダイナミックリコンフィグと同じ機能を実現する、マルチコンテキスト型ダイナミックリコンフィギャラブル集積回路が実現可能である。
【００２０】
以下では、ＭＣＭ５０に含まれるメモリＭ５１1、５１2、…の数をコンテキスト数と呼ぶ。また、ＭＣＭ５０内の各メモリＭ５１1、５１1、…に順次番号を割り当てた時、切り替えるメモリＭ５１1、５１2、…の番号をコンテキストと呼ぶ。
【００２１】
さらに、図２に示した、ＳＢ２０およびＬＢ２１に、それぞれ１つのメモリからなるメモリＭ３０11、３０12、…、３０1nおよびメモリＭ３０21、３０22、…、３０2nが接続される基本タイル１０をシングルコンテキストブロックと呼び、シングルコンテキストブロックにより構成されるＦＰＧＡをシングルコンテキスト型ＦＰＧＡと呼ぶ。また、図６に示した。ＳＢ２０およびＬＢ２１にそれぞれ複数のメモリを含むＭＣＭ５０11、５０12、…、５０1n、および、ＭＣＭ５０21、５０22、…、５０2nが接続される基本タイル１０’をマルチコンテキストブロックと呼び、マルチコンテキストブロックにより構成されるＦＰＧＡをマルチコンテキスト型ダイナミックリコンフィギャラブルＦＰＧＡ（ＭＣ−ＤＰＧＡ）と呼ぶ。
【００２２】
図７は、基本タイル１０’が選択信号Ｑnを生成するコントロール回路６０を含む例である。コントロール回路６０は、入力されたクロックＣＬＫに基づき、選択信号Ｑnを生成する。このクロックＣＬＫがＦＰＧＡ１の動作に使用するユーザクロックであれば、コントロール回路６０は、周波数逓倍回路を持つ。選択信号Ｑnは、ＭＣＭ５０11、５０12、…、５０1n、および、ＭＣＭ５０21、５０22、…、５０2n内のコンフィグレーションメモリ（メモリＭ５１1、５１2、…）を選択するために用いられる。選択信号Ｑnは、ＭＣＭ５０11、５０12、…、５０1nを含むＭＣＭブロック５００1と、ＭＣＭ５０21、５０22、…、５０2nを含むＭＣＭブロック５００2とに入力され、ＭＣＭ５０11、５０12、…、５０1n、および、ＭＣＭ５０21、５０22、…、５０2nにそれぞれ供給される。
【００２３】
図８は、コントロール回路６０の一例の構成を示す。図８の例では、コントロール回路６０は、周波数逓倍回路６１と、複数のフリップフロップ回路６２1、６２2、…からなるシフトレジスタとを備える。この例では、コントロール回路６０が４個のフリップフロップ回路６２1〜６２4を備えているものとして示している。周波数逓倍回路６１は、供給されたクロックＣＬＫから、クロックＣＬＫよりも高速のクロックＱCLKを生成する。クロックＱCLKは、シフトレジスタを構成する各フリップフロップ回路６２1〜６２4に供給される。各フリップフロップ回路６２1〜６２4のうちフリップフロップ回路６２２〜６２4、…は、リセット信号Ｒｓｔによりリセットされ、フリップフロップ回路６２１のみリセット信号Ｒｓｔにより値「１」にセットされる。このセットされた値「１」が信号ＱCLKに従い、選択信号Ｑ1〜Ｑ4として巡回的に出力される。
【００２４】
図９は、ＳＢ２０に接続されるＭＣＭブロック５００1を例として、各ＭＣＭ５０11、５０12、…、５０1nの構成について説明する。なお、ＭＣＭブロック５００2は、ＭＣＭブロック５００1と同様の構成となるため、ここでの説明を省略する。この例では、説明のため、例えばＭＣＭ５０11は、それぞれ選択信号Ｑ1〜Ｑ4により選択される４個の記憶部Ｍ５３11、５３21、５３31および５３41を備える。さらに、各記憶部Ｍ５３11、５３21、５３31および５３41は、選択信号Ｑnに従い開閉が制御されるスイッチ５２11、５２21、５２31および５２41が接続される。例ではスイッチ５２11、５２21、５２31および５２41はｎ型ＭＯＳトランジスタとしているが、ｐ型ＭＯＳトランジスタでも良いし、どちらも用いたトランスファーゲートでも良い。
【００２５】
ここで、選択信号Ｑ1〜Ｑ4は、各ＭＣＭ５０11、５０12、…、５０1nに共通して入力される。すなわち、各記憶部Ｍ５３11、５３12、…、５３1nに対して、それぞれ選択信号Ｑ1に従い開閉が共通に制御されるスイッチ５２11、５２12、…、５２1nが接続される。同様に、各記憶部Ｍ５３21、５３22、…、５３2nに対して、それぞれ選択信号Ｑ2に従い開閉が共通に制御されるスイッチ５２21、５２22、…、５２2nが接続され、各記憶部Ｍ５３31、５３32、…、５３3nに対して、それぞれ選択信号Ｑ3に従い開閉が共通に制御されるスイッチ５２31、５２32、…、５２3nが接続される。さらに、各記憶部Ｍ５３41、５３42、…、５３4nに対して、それぞれ選択信号Ｑ4に従い開閉が共通に制御されるスイッチ５２41、５２42、…、５２4nが接続される。
【００２６】
なお、上述した図５における例えばメモリＭ５１1は、例えば記憶部Ｍ５３11とスイッチ５２11とを含む構成と考えることができる。
【００２７】
ＭＣＭ５０11の各スイッチ５２11、５２21、５２31および５２41の各出力は、例えば１番目のメモリ入力線を介してＳＢ２０に共通に入力される。また、ＭＣＭ５０12の各スイッチ５２12、５２22、５２32および５２42の各出力は、例えば２番目のメモリ入力線を介してＳＢ２０に共通に入力される。同様に、ＭＣＭ５０1nの各スイッチ５２1n、５２2n、５２3nおよび５２4nの各出力は、例えばｎ番目のメモリ入力線を介してＳＢ２０に共通に入力される。
【００２８】
このような構成において、図８のコントロール回路６０から出力された例えば選択信号Ｑ4がＭＣＭブロック５００1に入力されると、ＭＣＭ５０11、５０12、…、５０1nに含まれる各スイッチ５２41、５２42、…、５２4nがオンすなわち閉状態になり、各記憶部Ｍ５３41、５３42、…、５３4nに記憶される各データが、１番目、２番目、…、ｎ番目のメモリ入力線をそれぞれ介してＳＢ２０に供給される。次に選択信号Ｑ1がＭＣＭブロック５００1に入力されると、ＭＣＭ５０11、５０12、…、５０1nに含まれる各スイッチ５２11、５２12、…、５２1nがオン状態になり、各記憶部Ｍ５３11、５３12、…、５３1nに記憶される各データが、１番目、２番目、…、ｎ番目のメモリ入力線をそれぞれ介してＳＢ２０に供給される。
【００２９】
このように、各ＭＣＭ５０11〜５０1nに対して図８のコントロール回路６０から出力される各選択信号Ｑ1〜Ｑ4を入力することで、例えばＭＣＭ５０11の場合、各記憶部Ｍ５３11、５３21、５３31および５３41に記憶される各データを、ＳＢ２０に対して順次巡回的に供給することができる。
【００３０】
以上のようなマルチコンテキスト型ダイナミックリコンフィギャラブルＦＰＧＡに機能を実装する際は、図２に例示した基本タイル１０により構成される通常のＦＰＧＡとは異なる制約が生じる。この制約について、図１０を用いて説明する。図１０は、マルチコンテキスト型ダイナミックリコンフィギャラブルＦＰＧＡ１ｘにおいて構成される組合せ論理回路の例を概念的に示す。図１０の例では、ある回路Ａの出力を回路Ｂが入力し、その回路Ｂの出力と回路Ａの出力とが回路Ｃに入力されている。これら回路Ａ、ＢおよびＣは、１つの基本タイル１０’において、各ＭＣＭ５０11、５０12、…、５０1n、および、ＭＣＭ５０21、５０22、…、５０2nのコンテキストが切り替えられることにより形成される回路であるものとする。
【００３１】
ここで、ＦＰＧＡ１ｘは、クロックＣＬＫに従いデータの入出力が行われる。一方、各組み合わせ回路Ａ、ＢおよびＣは、クロックＣＬＫより高速のクロックＱCLKに従い切り替えられる。したがって、例えばあるクロックＣＬＫのタイミングの入力に対して回路Ａ、ＢおよびＣによる演算が順次実行された後、クロックＣＬＫの次のタイミングの入力よりも先にコンテキストが切り替えられ、回路Ｃが構成されてしまう可能性がある。このように、回路Ｂの計算の前に回路Ｃの計算が行われる可能性があると、回路Ｃにとっては入力である回路Ｂの出力結果が不明であるため、正しい答えにならない場合が発生する。したがって、正しい答えを得るためには論理回路の計算の順番が正しくなるように実装する必要がある。
【００３２】
図１１は、マルチコンテキスト型ダイナミックリコンフィギャラブルＦＰＧＡに関し、複数の論理回路のある組み合わせからなるベンチマーク回路に対して配置配線を行った結果を示す。この配置配線は、上述した論理回路の計算の順序を十分考慮し、計算順序に矛盾が発生しないように構成されている。また、図１１の例では、当該ＦＰＧＡの各基本タイル１０’に含まれる各ＭＣＭ５０11、５０12、…、５０1n、および、ＭＣＭ５０21、５０22、…、５０2nのコンテキスト数がそれぞれ８であるものとしている。図１１において、縦軸は、コンテキストを示し、横軸は、通常のＦＰＧＡ（シングルコンテキスト型ＦＰＧＡ）の使用ブロック数を１００とした場合の使用ブロック数の比率を示す。
【００３３】
図１１に示されるように、マルチコンテキスト型ダイナミックリコンフィギャラブルＦＰＧＡにおいては、各コンテキストで使用ブロック数にバラツキが発生する場合があることが分かる。図１１の例では、コンテキスト「８」が突出して使用ブロック数が多く、各コンテキストで使用ブロック数に偏りが生じている。これは、例えば８コンテキスト分切り替えられるマルチコンテキストブロックであっても、１つのコンテキストしか使用されないブロックが発生する可能性があることを示している。図１１の例でいえば、コンテキスト「８」しか使用されないブロックが多数、存在している可能性がある。この場合、マルチコンテキスト化の効果が十分に得られないおそれがある。
【００３４】
さらに、図１２に例示するように、回路間にフィードバック経路７００が発生する場合も、マルチコンテキスト化の効果が小さくなる。例えば、リング発振器がこのような構成となる。リング発振器は、いわば非同期回路であり、クロックＣＬＫに関わらず動作していなければならない。
【００３５】
上述のマルチコンテキストブロックでは、コンテキストすなわちＭＣＭ５０内の各メモリＭ５１1、５１2、…の切り替えは、外部から入力されたクロックＣＬＫに対応して行う。そのため、フィードバック経路７００により非同期回路となっている回路Ａ、ＢおよびＣは、マルチコンテキスト化できない。具体的には、この回路Ａ、ＢおよびＣには、各ＭＣＭ５０の全てのメモリＭ５１1、５１2、…に同一のデータを書き込み、コンテキスト切り替えとは独立して動作させる必要がある。
【００３６】
このような回路が複数存在する論理回路は、マルチコンテキスト化のメリットを得ることが難しい。一方で、図５〜図７を用いて説明したように、マルチコンテキストブロックである基本タイル１０’は、シングルコンテキストブロックによる基本タイル１０に対して、追加メモリ（ＭＣＭ５０の各メモリ５１1、５１2、…）や制御回路（コントロール回路６０）の増加によって面積が大きくなっている。そのため、マルチコンテキスト化のメリットが得られなければ、面積が大きくなってしまうデメリットの方が強調されてしまう可能性もある。
【００３７】
（第１の実施形態）
次に、図１３および図１４を用いて第１の実施形態について説明する。なお、図１３および図１４において、上述した図１、図２および図７に対応する部分には共通する符号を付して、詳細な説明を省略する。
【００３８】
図１３は、第１の実施形態に係るＦＰＧＡ１ａの一例の構成を示す。図１３において、第１の実施形態に係るＦＰＧＡ１ａは、１以上のマルチコンテキストブロック１００と１以上のシングルコンテキストブロック１０１とを含む基本タイル１０ａ、１０ａ、…を備える。以下、マルチコンテキストブロック１００をＭＣ１００、シングルコンテキストブロック１０１をＳＣ１０１とそれぞれ略称する。
【００３９】
図１４は、第１の実施形態に係る基本タイル１０ａの一例の構成をより詳細に示す。ＳＣ１０１は、図２に示した基本タイル１０と同一の構成を備え、ＳＢ２０およびＬＢ２１と、これらＳＢ２０およびＬＢ２１にそれぞれ接続されるメモリＭ３０11、３０12、…、３０1n、および、メモリＭ３０21、３０22、…、３０2nとを含む。なお、図１４では、メモリＭ３０11、３０12、…、３０1n、および、メモリＭ３０21、３０22、…、３０2nを、それぞれシングルコンテキストメモリブロック（ＳＣＭＢ）３００1および３００2として纏めて示している。
【００４０】
ＭＣ１００は、上述の図７に示した基本タイル１０’の構成に対応し、ＳＢ２０およびＬＢ２１と、これらＳＢ２０およびＬＢ２１にそれぞれ接続されるＭＣＭ５０11、５０12、…、５０1n、および、ＭＣＭ５０12、５０22、…、５０2nと、外部から入力されるクロックＣＬＫに基づきこれらＭＣＭ５０11、５０12、…、５０1n、および、ＭＣＭ５０12、５０22、…、５０2nに供給するクロックＱCLKを生成するコントロール回路６０とを含む。なお、図１４では、ＭＣＭ５０11、５０12、…、５０1n、および、ＭＣＭ５０12、５０22、…、５０2nを、それぞれマルチコンテキストメモリブロック（ＭＣＭＢ）５００1および５００2として纏めて示している。
【００４１】
なお、図１３では、ＦＰＧＡ１ａの備える全ての基本タイルが、ＭＣ１００およびＳＣ１０１を含む基本タイル１０ａであるように示しているが、これはこの例に限定されない。第１の実施形態に係るＦＰＧＡ１ａは、基本タイル１０ａと、ＳＣ１０１による基本タイル１０と、マルチコンテキストブロックによる基本タイル１０’とを混在させて構成することができる。
【００４２】
例えば、図１１を用いて説明した、コンテキストの使用ブロック数の偏りに従い、より使用ブロック数の多いコンテキストをシングルコンテキストブロックによる基本タイル１０に割り当てることが考えられる。例えば、図１１を再掲する図１５に例示されるように、各コンテキストにおける使用ブロック数が所定数（図中に線Ａで示す）以上の部分を、それぞれシングルコンテキストブロックによる基本タイル１０に割り当てる。
【００４３】
すなわち、図１５において、線Ａよりも左側の部分は、複数のコンテキストで使用されるブロックを示している。一方、線Ａよりも右の部分は、コンテキスト「８」でしか使用されないブロックを示している。このコンテキスト「８」でしか使用されないブロックは、ＳＣ１０１のみを含む基本タイル１０を用いて構成することが可能である。
【００４４】
実際には、ＦＰＧＡの全ての基本タイルをマルチコンテキストブロックによる基本タイル１０’で構成した際に、全基本タイル１０ａにおける各コンテキストの使用ブロック数がどれ程になるかは、そのＦＰＧＡで実現させたい回路構成によって異なる。そのため、実際の製品としては、第１の実施形態に係る基本タイル１０ａと、シングルコンテキストブロックによる基本タイル１０との割合が異なる数種類のＦＰＧＡを用意しておくことが考えられる。
【００４５】
図１６を用いて、第１の実施形態に係るＦＰＧＡ１ａにおけるＭＣ１００とＳＣ１０１との接続について、概略的に説明する。ここでは、ＭＣ１００1および１００2と、ＳＣ１０１1とを用い、ＭＣ１００1からＳＣ１０１1を介してＭＣ１００2に接続可能とした例について説明する。
【００４６】
既に説明したように、ＳＢ２０に関し、ＳＣ１０１1は、メモリ３０1に一度書き込みを行った後、動作中は、メモリ３０1および３０2の値が固定されＳＢ２０による接続も固定される。一方、マルチコンテキストブロック１００1および１００2は、ＭＣＭ５０11〜５０1n内においてメモリＭ５１1、５１2、…の切り替えを行うことで、各ＳＢ２０による接続を変更することができる。
【００４７】
ここで、例えば、あるコンテキスト＃ｎにおいてＭＣ１００1からＳＣ１０１1に接続し、ＳＣ１０１1からさらにＭＣ１００2に接続する場合について考える。この場合、ＳＣ１０１1は、コンテキスト＃ｎでＭＣ１００1および１００2と接続されるように、予めメモリ３０11〜３０1nの値を設定しておく。
【００４８】
さらに、ＭＣ１００1および１００2は、コンテキスト＃ｎにおいてその配線の位置にマルチコンテキストブロック側が接続されるよう、各ＭＣＭ５０11〜５０1n内のコンテキスト＃ｎのメモリＭ５１nの値を設定しておく。こうすることで、図１６（ａ）に示されるように、コンテキスト＃ｎ以外、例えばコンテキスト＃１では、ＭＣ１００1および１００2側により、ＳＣ１０１1への接続が行われず、ＳＣ１０１1が使用されない。また、コンテキスト＃ｎでは、図１６（ｂ）に示されるように、ＭＣ１００1および１００2側からＳＣ１０１1に対する接続がなされ、ＳＣ１０１1が使用される。
【００４９】
より具体的には、図１６（ａ）の例において、コンテキスト＃１では、ＭＣ１００1内のＳＢ２０M1は、同ＬＢ２１M1の例えば出力をＳＣ１０１1のＳＢ２０S1に接続しない。同様に、コンテキスト＃１では、ＭＣ１００2内のＳＢ２０M2は、同ＬＢ２１M2の例えば入力をＳＣ１０１1のＳＢ２０S1に接続しない。したがって、ＳＣ１０１1は、データの入出力がなされず、使用されない。
【００５０】
一方、図１６（ｂ）の例において、コンテキスト＃ｎでは、ＭＣ１００1内のＳＢ２０M1は、ＬＢ２１M1の出力を、ＳＣ１０１1内のＳＢ２０S1に接続する。ＳＢ２０S1は、このＬＢ２１M1の出力をＬＢ２１S1に接続する。また、ＭＣ１００2内のＳＢ２０M2は、同ＬＢ２１M2の入力を、ＳＣ１０１1内のＳＢ２０S1の出力に接続する。したがって、ＳＣ１０１1は、ＭＣ１００1からの出力に対してＬＢ２１S1での論理演算を行い、論理演算結果をＭＣ１００2に出力することができる。
【００５１】
図１７は、図１１および図１５のシミュレートに用いたベンチマーク回路に対して、第１の実施形態による構成を適用した結果の例を示す。図１７において、縦軸は、棒線Ａを１００としたときの実装面積比を示す。棒線Ａは、通常のＦＰＧＡによる面積を示す。棒線Ｂは、ＭＣ１００による基本タイル１０’のみから構成されたＦＰＧＡにおける面積を示す。この場合、基本タイル１０’は、８コンテキストとされ、各ＭＣＭ５０1および５０2は、それぞれ８個のメモリ５１、５１、…を含む。また、棒線Ｃは、第１の実施形態を適用し、ＭＣ１００とＳＣ１０１とを含む基本タイル１０ａから構成されたＦＰＧＡ１ａによる面積を示す。ここでも、ＭＣ１００は、８コンテキストとされ、各ＭＣＭ５０11〜５０1nおよびＭＣＭ５０21〜５０2nがそれぞれ８個のメモリ５１1、５１2、…を含む。
【００５２】
なお、図１７の結果に関連し、ＭＣ１００は、ＳＣ１０１に対して２倍以上の面積を有する見積となっている。したがって、図１１に示したように、ＭＣ１００の使用ブロック数がＳＣ１０１の使用ブロック数の半分程度であると、図１７の棒線Ｂに示されるように、マルチコンテキスト化により、通常のＦＰＧＡに対して実装面積が増加してしまうことになる。一方、上述もしたように、各コンテキストにおける使用ブロック数の偏りをＳＣ１０１部に配置することで、図１７の棒線Ｃに示されるように、通常のＦＰＧＡに対して実装面積を縮小することが可能である。
【００５３】
このように、第１の実施形態を適用することで、通常のシングルコンテキストブロックのみで構成されたＦＰＧＡや、従来のマルチコンテキストブロックのみで構成されたＦＰＧＡに対してより省面積なＦＰＧＡを構成することが可能である。
【００５４】
次に、第１の実施形態に係る、ＭＣ１００の配置について説明する。図１８は、既存技術による配置と第１の実施形態に係る配置の例を示す。図１８（ａ）は、上述した図１に対応し、既存技術による、ＳＣ１０１を含む基本タイル１０、１０、…が配置されたＦＰＧＡ１の例を示す。ここでは、ＦＰＧＡ１は、それぞれ１個のＳＣ１０１（図では「Ｓ」と表示）を含む１６個の基本タイル１０が配置されている。
【００５５】
図１８（ｂ）は、図１３で示したＦＰＧＡ１ａに対応し、第１の実施形態に係る、ＭＣ１００とＳＣ１０１とを含む基本タイル１０ａが４個配置された例である。ここでは、ＦＰＧＡ１ａは、ＭＣ１００が備えるＭＣＭ５０11、５０12、…、５０1n、および、ＭＣＭ５０21、５０22、…、５０2nがそれぞれ４個のメモリＭ５１1、５１2、…を含む、４コンテキスト型のマルチコンテキストブロックであるものとする。したがって、図１８（ｂ）のＦＰＧＡ１ａは、ＭＣ１００をＭＣＭ５０11、５０12、…、５０1n、および、ＭＣＭ５０21、５０22、…、５０2n内のメモリ数により単純な加算でＳＣ１０１に換算すると、２０個分のＳＣ１０１が含まれることになる。
【００５６】
図１８（ｂ）では、それぞれ１以上のＭＣ１００とＳＣ１０１とを含む基本タイル１０ａを基本構成として説明したが、これはこの例に限定されない。例えば、図１８（ｃ）に示されるように、ＳＣ１０１を含む４個の基本タイル１０と、ＭＣ１００を含む４個の基本タイル１０’とを混在して配置してＦＰＧＡ１ｂを構成してもよい。この場合でも、図１８（ｂ）と同様に、単純な換算では２０個分のＳＣ１０１が含まれることになる。また、１つのＦＰＧＡに含まれるＭＣ１００の数とＳＣ１０１の数は、必ずしも同一である必要はない。さらに、上述では、１つの基本タイル１０ａがＭＣ１００およびＳＣ１０１を１つずつ含むように説明したが、これはこの例に限定されず、基本タイルが含むＭＣ１００の数とＳＣ１０１の数は、必ずしも同一である必要はない。
【００５７】
また例えば、複数のＭＣ１００を含む第１の領域と、複数のＳＣ１０１を含む第２の領域とを形成してもよい。図１９は、第１の実施形態に係る、第１の領域および第２の領域を市松模様状に配置したＦＰＧＡ１ｃの例を示す。すなわち、図１９の例では、ＦＰＧＡ１ｃは、第１の領域１１０および第２の領域１１１が、水平方向および垂直方向それぞれに対して交互に繰り返して配置されて構成される。
【００５８】
この図１９に例示される市松模様状の構成の場合、例えば全ての回路をマルチコンテキスト化可能である場合、もしくは全てをシングルコンテキストとして使用しなければならない場合に、ＭＣ１００とＳＣ１０１とを混載する場合に比べてブロック間の距離が短いため、クリティカルパス遅延が小さくなるというメリットがある。
【００５９】
また、図２０は、第１の領域１１０と第２の領域１１１とを帯状に交互に配置したＦＰＧＡ１ｄの例を示す。すなわち、図２０の例では、ＦＰＧＡ１ｄは、複数の第１の領域１１０のそれぞれ、ならびに、複数の第２の領域１１１のそれぞれが互いに隣接しないように、第１の領域１１０のそれぞれ、および、第２の領域１１１のそれぞれが帯状に配置されて構成される。
【００６０】
この図２０に例示される帯状の配置の場合、例えば図において水平方向は、メモリ３０およびＭＣＭ５０のうち同じタイプのメモリが配置されるため、メモリを書き込むためのデコーダ回路が構築しやすい、ＭＣＭ５０の制御が容易であるなどのメリットがある。
【００６１】
勿論、図１９および図２０において、第１の領域１１０および第２の領域がそれぞれＦＰＧＡ１ｃおよび１ｄに占める割合は固定ではない。
【００６２】
（第２の実施形態）
次に、第２の実施形態について説明する、第２の実施形態では、１つのマルチコンテキスト型ダイナミックリコンフィギャラブルＦＰＧＡ上にＭＣ１００およびＳＣ１０１を混在させた場合の、各メモリＭ３０11〜３０1n、および、メモリＭ３０21〜３０2n（図２参照）、ならびに、各ＭＣＭ５０11〜５０1n、および、ＭＣＭ５０21〜５０2n（図６等参照）の適切な配置を提供する。
【００６３】
図２１において、垂直方向をカラム(Column)、水平方向をロー(Row)とする。例えば、ＦＰＧＡ１ａ’は、それぞれ１つのＭＣ１００およびＳＣ１０１を含む基本タイル１０ａにおいて、それぞれのＳＢ２０に接続されるＭＣＭ５０11、５０12、…、５０1n、および、メモリＭ３０11、３０12、…、３０1n、ならびに、それぞれのＬＢ２１に接続されるＭＣＭ５０21、５０22、…、５０2n、および、メモリＭ３０21、３０22、…、３０2nを、カラム方向に沿って並列に配置する。
【００６４】
図２２は、第２の実施形態に係るＦＰＧＡ１ａ’のメモリ配置のより具体的な例を示す。なお、以下では、各ＭＣＭ５０11〜５０1nに含まれる各記憶部Ｍ５３11〜５３4n、および、各ＭＣＭ21〜５０2nなどに含まれる同様の構成を、適宜、記憶部Ｍとして説明する。同様に、各メモリＭ３０11〜３０1n、および、メモリＭ３０21〜３０2nなど同様の構成を、適宜、メモリＭとして説明する。また、図２２において、各記憶部Ｍに接続されるスイッチは、省略されている。
【００６５】
図２２に示されるように、ＭＣＭＢ５００1においてＭＣＭ５０11に含まれる、それぞれ選択信号Ｑ1〜Ｑ4の配線が各スイッチを介して接続される各記憶部Ｍ５３11、５３21、５３31および５３41と、ＳＣＭＢ３００1に含まれるメモリＭ３０11とを、カラム方向に整列して配置する。ＭＣＭＢ５００2およびＳＣＭＢ３００2においても、同様に、ＭＣＭＢ５００2において、１つのＭＣＭ（例えばＭＣＭ５０21）に含まれる、それぞれ選択信号Ｑ1〜Ｑ4の配線が各スイッチを介して接続される各記憶部Ｍと、ＳＣＭＢ３００2に含まれるメモリ３０21とを、カラム方向に整列して配置する。同一のカラム上に整列して配置された各記憶部Ｍおよび各メモリＭにより、メモリ列が形成される。
【００６６】
ＭＣＭＢ５００1に含まれる他のＭＣＭ５０12〜５０1n、および、ＳＣＭＢ３００1に含まれる他のメモリＭ３０12〜３０1n、ならびに、ＭＣＭＢ５００2に含まれる他のＭＣＭ５０22〜５０2n、および、ＳＣＭＢ３００2に含まれる他のメモリＭ３０22〜３０2nについても同様に、ＭＣＭに含まれる、異なる選択信号Ｑnの配線が各スイッチを介して接続される各記憶部Ｍと、シングルコンテキストメモリを構成するメモリＭとを、カラム方向に整列して配置する。
【００６７】
このように、第２の実施形態では、ある基本タイル１０ａ内のＭＣ１００において例えばＳＢ２０に接続される複数のＭＣＭ５０11、５０12、…、５０1nにおいて、異なる選択信号Ｑnの配線が各スイッチを介して接続される各記憶部Ｍ（図９を参照し、ＭＣＭ５０11の場合、記憶部Ｍ５３11、５３21、５３31および５３41）を、同一カラム上に整列して配置する。このカラム上に、さらに、ＬＢ２１に接続される複数のＭＣＭ５０21、５０22、…、５０2nにおいても同様に、異なる選択信号Ｑnの配線が各スイッチを介して接続される各記憶部Ｍを、整列して配置する。
【００６８】
さらにまた、上述と同一のカラム上に、当該基本タイル１０ａ内のＳＣ１０１において例えばＳＢ２０に接続される複数のメモリＭ３０11、３０12、…、３０1nのうち１つを配置し、ＬＢ２１に接続される複数のメモリＭ３０21、３０22、…、３０2nのうち１つをそれぞれ配置する。
【００６９】
また、例えばＳＢ２０に接続される複数のＭＣＭ５０11、５０12、…、５０1nにおいて、同一の選択信号Ｑnの配線が各スイッチを介して接続される各記憶部Ｍを、同一のロー上に整列して配置する。図９の例では、選択信号Ｑ1の配線が各スイッチを介して接続される各記憶部Ｍ５３11、５３12、…、５３1nを同一のロー上に配置する。なお、メモリＭ３０11、３０12、…、３０1n、および、メモリＭ３０21、３０22、…、３０2nは、それぞれ同一のロー上に配置する。同一のロー上に整列して配置された各記憶部Ｍおよび各メモリＭにより、メモリ行が形成される。
【００７０】
このように、各記憶部Ｍおよび各メモリＭによるメモリ行およびメモリ列が形成される。他の基本タイル１０ａ内のＭＣ１００についても同様にして、各記憶部Ｍおよび各メモリＭをカラムおよびロー上に整列して配置し、各記憶部Ｍおよび各メモリＭによるメモリ行およびメモリ列を形成する。
【００７１】
このように、各記憶部Ｍおよび各メモリＭを、選択信号Ｑnの配線に応じてカラムおよびロー上に整列して配置することで、ＦＰＧＡの面積効率を向上できる。
【００７２】
説明は図２１に戻り、ＦＰＧＡは、各コンフィギュレーションメモリに対してデータを書き込むためのライトデコーダを備えることが一般的である。図２１の例では、ＦＰＧＡ１ａ’は、ロー側ライトデコーダ７０と、カラム側ライトデコーダ７１とを備える。ロー側ライトデコーダ７０およびカラム側ライトデコーダ７１は、ＦＰＧＡ１ａ’の外部からの指示に従い、各記憶部Ｍおよび各メモリＭが整列して配置された各カラムおよび各ローから、データを書き込む対象のローおよびカラムをそれぞれ選択する。
【００７３】
カラム側ライトデコーダ７１は、カラム側ライトデコーダ７１とロー側ライトデコーダ７０とで共通して選択された記憶部ＭまたはメモリＭにデータを書き込む。例えば、カラム側ライトデコーダ７１は、選択したロー上に配置された各記憶部Ｍまたは各メモリＭのうち、ロー側ライトデコーダ７０により選択されたカラム上の記憶部ＭまたはメモリＭにデータを書き込む。
【００７４】
図２２を例としてより具体的に説明すると、ロー側ライトデコーダ７０が、例えば記憶部Ｍ５３41が含まれるローを選択したものとする。図２２の例では、選択されたロー上には、記憶部Ｍ５３41、５３42、…、５３4nが配置されている。この状態において、カラム側ライトデコーダ７１が、例えば記憶部Ｍ５３11が含まれるカラムと、記憶部Ｍ５３12が含まれるカラムとを選択したものとする。この場合、記憶部Ｍ５３41および５３42がロー側ライトデコーダ７０およびカラム側ライトデコーダ７１に共通して選択されており、カラム側ライトデコーダ７１は、これら記憶部Ｍ５３41および５３42にデータを書き込むことができる。
【００７５】
このように、第２の実施形態によれば、基本タイル１０ａの各記憶部Ｍおよび各メモリＭを、カラムおよびロー上に整列させて配置しているため、各記憶部Ｍおよび各メモリＭに対するロー側ライトデコーダ７０およびカラム側ライトデコーダ７１によるデータの書き込み処理を容易に実行することが可能となる。
【００７６】
（第３の実施形態）
次に、第３の実施形態について説明する。第３の実施形態は、上述した第１および第２の実施形態によるＦＰＧＡ１’、ＦＰＧＡ１ａ、ＦＰＧＡ１ａ’、ＦＰＧＡ１ｂ、ＦＰＧＡ１ｃ、ＦＰＧＡ１ｄを電子機器に適用した例である。
【００７７】
図２３は、第３の実施形態に係る電子機器の一例の構成を示す。図２３において、電子機器６００は、バス６１０に対してＩＣ(Integrated  Circuit)６２０と、ＭＰＵ(Micro-Processing  Unit)５２１と、メモリ５２２と、インターフェイス（Ｉ／Ｆ）５２３とを含む。
【００７８】
ＩＣ６２０は、上述した第１および第２の実施形態による各ＦＰＧＡである。ここでは、ＩＣ６２０は、ＦＰＧＡ１ａ’であるものとする。ＦＰＧＡ１ａ’は、図１３および図１４を用いて説明したように、それぞれＭＣ１００およびＳＣ１０１を含む複数の基本タイル１０ａ、１０ａ、…を備えると共に、外部とのデータの受け渡しを行う複数のＩ／Ｏ１１、１１、…を備える。また、ＦＰＧＡ１ａ’は、図２１で示したように、ロー側ライトデコーダ７０とカラム側ライトデコーダ７１とを備える。
【００７９】
ＭＰＵ６２１は、プログラムに従い動作する。メモリ６２２は、ＭＰＵ６２１が動作するためのプログラムが予め記憶される。また、メモリ６２２は、ＭＰＵ６２１が動作する際のワークメモリとしても用いられる。インターフェイス６２３は、ＭＰＵ６２１の制御に従い外部の機器と通信を行う。
【００８０】
ＩＣ６２０は、例えば製品出荷時やユーザ使用時に、各基本タイル１０ａ内のＭＣ１００およびＳＣ１０１にそれぞれ含まれる各メモリ、すなわち、メモリＭ３０11〜３０1n、および、メモリＭ３０21〜３０2n、ならびに、各ＭＣＭ５０11〜５０1n、および、ＭＣＭ５０21〜５０2nの各記憶部Ｍ５３11〜５３4nにデータが書き込まれる。例えば、外部の機器からＦＰＧＡ１ａ’に対して、書き込みデータと書き込み指示とが供給される。ＦＰＧＡ１ａ’において、ロー側ライトデコーダ７０およびカラム側ライトデコーダ７１は、書き込み指示に従い、書き込みデータを上述の各基本タイル１０ａ内の各メモリに順次書き込む。
【００８１】
ＭＰＵ６２１は、例えば、実行されるプログラムにおいてＩＣ６２０における演算処理が必要な場合、ＩＣ６２０に対してバス６１０を介してコマンドおよびデータを転送し、ＩＣ６２０に当該演算処理を実行させる。ＩＣ６２０による演算結果は、バス６１０を介してＭＰＵ６２１に転送される。ＭＰＵ６２１は、プログラムの実行結果などを、例えばインターフェイス６２３を介して外部に出力する。
【００８２】
第３の実施形態に係る電子機器６００は、上述したように、ＦＰＧＡが省面積化され、ＩＣ６２０が小型化可能であるため、筐体の小型化や配線の容易化などが可能である。
【００８３】
なお、本発明は上述した各実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、各実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、各実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【符号の説明】
【００８４】
１，１’，１ａ，１ａ’，１ｂ，１ｃ，１ｄ，１ｘ  ＦＰＧＡ
１０，１０’，１０ａ  基本タイル
２０，２０M1，２０M2，２０S1  スイッチブロック
２１，２１M1，２１M2，２１S1  ロジックブロック
３０11〜３０1n，３０21〜３０2n  メモリＭ
５０，５０11〜５０1n，５０21〜５０2n  マルチコンフィギュレーションメモリ
５３11〜５３41，５３12〜５３42，５３1n〜５３4n  記憶部Ｍ
６０  コントロール回路
７０  ロー側ライトデコーダ
７１  カラム側ライトデコーダ
１００，１００1，１００2  マルチコンテキストブロック
１０１，１０１1  シングルコンテキストブロック
１１０  第１の領域
１１１  第２の領域
【図１】
2016063490.tif 000003
【図２】
2016063490.tif 000004
【図３】
2016063490.tif 000005
【図４】
2016063490.tif 000006
【図５】
2016063490.tif 000007
【図６】
2016063490.tif 000008
【図７】
2016063490.tif 000009
【図８】
2016063490.tif 000010
【図９】
2016063490.tif 000011
【図１０】
2016063490.tif 000012
【図１１】
2016063490.tif 000013
【図１２】
2016063490.tif 000014
【図１３】
2016063490.tif 000015
【図１４】
2016063490.tif 000016
【図１５】
2016063490.tif 000017
【図１６】
2016063490.tif 000018
【図１７】
2016063490.tif 000019
【図１８】
2016063490.tif 000020
【図１９】
2016063490.tif 000021
【図２０】
2016063490.tif 000022
【図２１】
2016063490.tif 000023
【図２２】
2016063490.tif 000024
【図２３】
2016063490.tif 000025