リコンフィギュラブルロジックブロック、並びに、これを用いたプログラマブル論理回路装置、及び、テクノロジマッピング方法
【課題】デバイスの小面積化と低消費電力化を実現することが可能なリコンフィギュラブルロジックブロック、並びにこれを用いたプログラマブル論理回路装置、及び、テクノロジマッピング方法を提供する。
【解決手段】最大K入力(x[0]〜x[K−1])のリコンフィギュラブルロジックブロック(K−A2LUT)は、m入力(y[0]〜y[m−1]、ただしmはKよりも小さくyはxに属する)の第1ルックアップテーブル1と、n入力(z[0]〜z[n−1]、ただしnはKよりも小さくzはxに属する)の第2ルックアップテーブル2と、p入力(c[0]〜c[p−1]、ただしpはKよりも小さくcはxに属する)の組み合わせ回路3と、組み合わせ回路3の出力に応じて第1ルックアップテーブル1と第2ルックアップテーブル2のいずれか一方を選択するセレクタ4と、を有する。
【解決手段】最大K入力(x[0]〜x[K−1])のリコンフィギュラブルロジックブロック(K−A2LUT)は、m入力(y[0]〜y[m−1]、ただしmはKよりも小さくyはxに属する)の第1ルックアップテーブル1と、n入力(z[0]〜z[n−1]、ただしnはKよりも小さくzはxに属する)の第2ルックアップテーブル2と、p入力(c[0]〜c[p−1]、ただしpはKよりも小さくcはxに属する)の組み合わせ回路3と、組み合わせ回路3の出力に応じて第1ルックアップテーブル1と第2ルックアップテーブル2のいずれか一方を選択するセレクタ4と、を有する。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、リコンフィギュラブルロジックブロック(以下、RLB[Reconfigurable Logic Block]と呼ぶ)、並びに、これを用いたプログラマブル論理回路装置、及び、テクノロジマッピング方法に関するものである。
【背景技術】
【0002】
近年、ハードウェア記述言語 (HDL[Hardware Description Language])を用いたプログラミングにより、半導体装置に集積化された内部論理回路を現場で自由に再構築することが可能なプログラマブル論理回路装置(PLD[Programmable Logic Device]、FPGA[Field Programmable Gate Array]、DAP/DNA[Digital Application Processor/Distributed Network Architecture]、DRP[Dynamically Reconfigurable Processor]など)が種々実用化されている。
【0003】
なお、上記に関連する従来技術の一例としては、特許文献1〜特許文献7、及び、非特許文献1を挙げることができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第4,706,216号明細書
【特許文献2】米国特許第4,870,302号明細書
【特許文献3】米国特許第6,998,872号明細書
【特許文献4】米国特許出願公開第2007/0222477号明細書
【特許文献5】特開2003−18000号公報
【特許文献6】特開2004−248293号公報
【特許文献7】特開2007−166579号公報
【0005】
【非特許文献1】(Vaughn Betz, Jonathan Rose, and Alexander Marquardt)著、「Architecture and CAD for Deep-Submicron FPGAs (The Springer International Series in Engineering and Computer Science) 」、Springer出版
【発明の概要】
【発明が解決しようとする課題】
【0006】
FPGAなどのプログラマブル論理回路装置では、所望の論理回路を実現するための基本素子としてルックアップテーブル(以下、LUT[Look-Up Table]と呼ぶ)が用いられている。LUTは、真理値表の出力値をコンフィギュレーションメモリに1対1で保持しており、それらを複数のマルチプレクサによりデコードすることで、所望の論理回路を実現することが可能である。K入力のLUT(以下、K−LUTと呼ぶ)を用いれば、K入力以下の論理回路を全て実装することができる。しかしながら、従来のLUTでは、入力数を増やすほど遅延性能が高くなる(遅延が小さくなる)が、使用されないメモリ数が増えて実装面積(LUTのサイズ)が大きくなる、言い換えれば、LUTの使用メモリ数(LUTのサイズ)と遅延性能がトレードオフの関係にある、という問題があった(例えば、特許文献1や特許文献2を参照)。
【0007】
なお、従来より、LUTの使用メモリ数を減らす工夫として、図27で示すようなアダプティブLUTが提案されている(例えば、特許文献3や特許文献4を参照)。これは、入力数の多いLUTを分割することで、入力数の少ないLUTを複数個使用できるようにし、メモリ数を削減する技術である。確かに、入力数の多いアダプティブLUTを使用して論理回路を実装すれば、入力数の少ないLUTを多数使用して論理回路を実装する場合よりも、遅延性能を高めることが可能である。しかしながら、従来のアダプティブLUTでは、入力数の多いLUTを分割せずに用いた場合、LUTの使用メモリ数(消費電力)が多くなる、という問題があった。
【0008】
また、従来より、図28で示すようなクラスタベース論理ブロックの構成手法が提案されている(例えば、非特許文献1を参照)。これば、入力数の少ないLUTを多数クラスタリングすることにより、LUTのメモリ使用率を下げずに性能を改善する技術である。しかしながら、従来のクラスタベース論理ブロックでは、論理ブロック内でLUT同士を接続するためにマルチプレクサとメモリが多数必要となるため、配線に必要なハードウェアリソースが増加する、という問題があった。
【0009】
図29は、上記した従来技術の特徴をまとめた一覧表である。従来のLUT(例えば、4−LUT)は、論理ブロックのサイズが小さいので、構成メモリ数は少なくて済むが、遅延性能は低く、また、同一回路を実装したときの論理ブロックの使用数は多くなる。これに対して、従来のアダプティブLUT(例えば、アダプティブ6−LUT)やクラスタベース論理ブロック(例えば、4−LUT×8)は、遅延性能が高く、また、同一回路を実装したときの論理ブロックの使用数は少なくて済むが、論理ブロックのサイズが大きいので、構成メモリ数が多くなる。
【0010】
また、その他の従来技術として、特許文献5では、M入力N出力のルックアップテーブルであって、複数のLUTユニットと、前記複数のLUTユニットによる内部構成を制御する内部構成制御手段と、を備えるルックアップテーブルが開示されている。この従来技術によれば、例えば、6入力3出力の場合、2−LUTを3つ、3LUT−を2つ、または、6−LUTを1つといったように、モードを切り替えることで面積効率を向上させることが可能である。しかしながら、この従来技術では、6入力の論理回路を実装するためには64ビットのメモリが必要であるため、テクノロジマッピングで6入力の論理回路が多数出てきた場合には、使用メモリ数が多くなっていた。また、出力線が従来のLUTよりも多いので、配線領域が増加するという懸念もあった。
【0011】
また、特許文献6では、6つの2−LUTから構成されており、完全な4−LUTと、一般的に用いられる6入力の論理関数を比較的高い割合で実装することが可能な不完全ルックアップテーブルが提案されている。この従来技術によれば、構成可能論理回路は6入力全ての論理関数のサブセットしか実行できないため、構成可能論理回路がFPGA内で占めるシリコン領域を大幅に減少することが可能である。しかしながら、この従来技術では、論理セルからの出力線が2本あるので、6入力のサブセットとして使用した場合、配線領域が増加してしまう。また、セル内のコンフィギュレーションメモリ数については、さらなる削減の余地があった。
【0012】
また、特許文献7では、演算回路を構成する第1の回路、および、該演算回路外の回路を構成する第2の回路を備えるリコンフィギュラブルロジックブロックであって、前記第1および第2の回路における所定の信号の設定を変化させることにより、異なる回路を構成するようにしたリコンフィギュラブルロジックブロックが提案されている。この従来技術によれば、算術演算と論理演算を効率良く実装し、また、論理演算においては、少ないBLE[Basic Logic Element]数で一部の論理回路を実装することが可能である。しかしながら、この従来技術において、実装可能な一部の論理回路は、その出現確率を考慮したものではなく、効率的な論理回路の実装については、さらなる改善の余地があった。
【0013】
本発明は、本願の発明者らにより見出された上記の問題点に鑑み、デバイスの小面積化と低消費電力化を実現することが可能なリコンフィギュラブルロジックブロック、並びにこれを用いたプログラマブル論理回路装置、及び、テクノロジマッピング方法を提供することを目的とする。
【課題を解決するための手段】
【0014】
上記目的を達成するために、本発明に係るリコンフィギュラブルロジックブロックは、最大K入力(x[0]〜x[K−1])のリコンフィギュラブルロジックブロックであって、m入力(y[0]〜y[m−1]、ただしmはKよりも小さくyはxに属する)の第1ルックアップテーブルと、n入力(z[0]〜z[n−1]、ただしnはKよりも小さくzはxに属する)の第2ルックアップテーブルと、p入力(c[0]〜c[p−1]、ただしpはKよりも小さくcはxに属する)の組み合わせ回路と、前記組み合わせ回路の出力に応じて前記第1ルックアップテーブルと前記第2ルックアップテーブルのいずれか一方を選択するセレクタと、を有する構成(第1の構成)とされている。
【0015】
なお、上記第1の構成から成るリコンフィギュラブルロジックブロックは、複数の論理回路を各々表現した真理値表を比較して、同一パターンが連続している部分を前記第2ルックアップテーブルで実装し、残りの部分を前記第1ルックアップテーブルで実装する構成(第2の構成)にするとよい。
【0016】
また、上記第2の構成から成るリコンフィギュラブルロジックブロックにおいて、前記複数の論理回路は、K入力のルックアップテーブルでマッピングされた論理回路のうち、出現確率の高いものを含む構成(第3の構成)にするとよい。
【0017】
また、本発明に係るプログラマブル論理回路装置は、上記第3の構成から成るリコンフィギュラブルロジックブロックを有する構成(第4の構成)とされている。
【0018】
また、本発明に係るテクノロジマッピング方法は、上記第4の構成から成るプログラマブル論理回路装置を対象としたものであって、入力数jとして前記リコンフィギュラブルロジックブロックの最大入力数Kを設定してフローを第2ステップに進める第1ステップと;カバリングされていないノードを探索してフローを第3ステップに進める第2ステップと;j入力のカットがあるか否かを判定し、カットがあればフローを第4ステップに進め、カットがなければフローを第10ステップに進める第3ステップと;j入力の部分回路にカットしてフローを第5ステップに進める第4ステップと;jがmよりも大きいか否かを判定し、大きければフローを第6ステップに進め、大きくなければフローを第8ステップに進める第5ステップと;前記部分回路のP代表元を算出してフローを第7ステップに進める第6ステップと;前記P代表元に基づいて前記部分回路が前記リコンフィギュラブルロジックブロックで実装可能か否かを判定し、実装可能であればフローを第8ステップに進め、実装不可能であればフローを第3ステップに進める第7ステップと;前記リコンフィギュラブルロジックブロックでノードのカバリングを行い、フローを第9ステップに進める第8ステップと;全てのノードがカバリング済みであるか否かを判定し、カバリング済みであれば一連のフローを終了させ、カバリング済みでなければフローを第2ステップに進める第9ステップと;入力数jを一つデクリメントさせてフローを第2ステップに進める第10ステップと;を有する構成(第5の構成)とされている。
【発明の効果】
【0019】
本発明によれば、デバイスの小面積化と低消費電力化を実現することが可能なリコンフィギュラブルロジックブロック、並びに、これを用いたプログラマブル論理回路装置、及び、テクノロジマッピング方法を提供することが可能となる。
【図面の簡単な説明】
【0020】
【図1】本発明に係るプログラマブル論理回路装置の全体構成例を示すブロック図
【図2】3入力論理回路の一実装例を示す図
【図3】本発明に係るリコンフィギュラブルロジックブロックの概念的構成を示す図
【図4】メモリの一使用例を示す真理値表
【図5】リコンフィギュラブルロジックブロックの第1構成例を示す図
【図6】第1構成例における入力条件とメモリとの関係を示す図
【図7】6−LUTでマッピングした回路のメモリパターン(P同値類)を示す図
【図8】6入力のテクノロジマッピング方法を示すフローチャート
【図9】本発明に係るテクノロジマッピング方法の全体像を示すフローチャート
【図10】リコンフィギュラブルロジックブロックの第2構成例を示す図
【図11】リコンフィギュラブルロジックブロックの第3構成例を示す図
【図12】リコンフィギュラブルロジックブロックの第4構成例を示す図
【図13】リコンフィギュラブルロジックブロックの第5構成例を示す図
【図14】リコンフィギュラブルロジックブロックの第6構成例を示す図
【図15】リコンフィギュラブルロジックブロックの第7構成例を示す図
【図16】リコンフィギュラブルロジックブロックの第8構成例を示す図
【図17】リコンフィギュラブルロジックブロックの第9構成例を示す図
【図18】リコンフィギュラブルロジックブロックの第10構成例を示す図
【図19】リコンフィギュラブルロジックブロックの第11構成例を示す図
【図20】リコンフィギュラブルロジックブロックの第12構成例を示す図
【図21】リコンフィギュラブルロジックブロックの第13構成例を示す図
【図22】リコンフィギュラブルロジックブロックの第14構成例を示す図
【図23】リコンフィギュラブルロジックブロックの第15構成例を示す図
【図24】リコンフィギュラブルロジックブロックの第16構成例を示す図
【図25】各構成例におけるLUTの形成方法とメモリの集約状態を示す図
【図26】各構成例における論理回路のカバー率を示す図
【図27】アダプティブLUTの一従来例を示すブロック図
【図28】クラスタベース論理ブロックの一従来例を示すブロック図
【図29】従来技術の特徴をまとめた一覧表
【発明を実施するための形態】
【0021】
<プログラマブル論理回路装置>
図1は、本発明に係るプログラマブル論理回路装置の全体構成例を示すブロック図である。本構成例のプログラマブル論理回路装置100は、I/Oブロック101と、リコンフィギュラブルロジックブロック102(以下、RLB[Reconfigurable Logic Block]102と略称する)と、コネクションブロック103(以下、CB[Connection Block]103と略称する)と、スイッチブロック104(以下、SW[Switch Block]104と略称する)と、配線105と、を有する。
【0022】
I/Oブロック101は、外部との信号授受を行う。RLB102は、マトリクス状に複数配列されており、論理回路を実現するための演算素子として使用される。CB103は、RLB102と配線105とを結合する。SB104は、配線105のクロスポイントとなる。
【0023】
プログラマブル論理回路装置100の性能を改善するためには、新しいRLB102が必要であり、本発明は、主としてRLB102の新規な構成に関するものである。
【0024】
<本発明に至った経緯>
論理回路を従来のLUTで表現する場合、同じ論理関数を異なるLUTのメモリパターン(構成情報)で実現しているものが多く見られる。また、LUTのメモリパターンには同じデータの繰り返し部分が多数存在する。すなわち、一般に用いられている従来のLUTによる回路表現は、真理値表をそのままコンフィギュレーションデータとして表現したものであり、同じ論理回路でも複数の実装が存在する。そのため、入力信号の入れ替えによって得られる論理回路を同一とみなせば、LUTによる回路表現は本質的に冗長であると言える。以下では、LUTの冗長性について、3入力の論理回路を例示して説明する。
【0025】
図2は、3入力論理回路の一実装例を示す図である。図2に示すように、関数fと関数gの真理値表は、一部のパターンが異なっているが、入力bと入力cを入れ替えれば、関数fと関数gを同一とみなすことができる。このとき、関数fを実現するための論理回路と、関数gを実現するための論理回路は、同じP[Permutation]同値類に属する。すなわち、関数fが関数gの入力順序を入れ替えることによって得られるならば、関数fと関数gは、同じP同値類に属すると言える。
【0026】
本願の発明者らは、上記考察から、LUTによる回路表現の冗長性を除くことにより、従来のLUTより少ないコンフィギュレーションメモリ数でも、従来と同等の論理回路を実装可能な論理セルを実現することができる、との着想を得て本発明に至った。
【0027】
<リコンフィギュラブルロジックブロック>
図3は、本発明に係るリコンフィギュラブルロジックブロックの概念的構成を示す図である。本発明に係る最大K入力(x[0]〜x[K−1])のリコンフィギュラブルロジックブロック(K−A2LUT)は、m入力(y[0]〜y[m−1]、ただし、mはKよりも小さくyはxに属する)の第1ルックアップテーブル1と、n入力(z[0]〜z[n−1]、ただし、nはKよりも小さくzはxに属する)の第2ルックアップテーブル2と、p入力(c[0]〜c[p−1]、ただし、pはKよりも小さくcはxに属する)の組み合わせ回路3と、組み合わせ回路3の出力に応じて第1ルックアップテーブル1と第2ルックアップテーブル2のいずれか一方を選択するセレクタ4と、を有する。
【0028】
また、本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)は、アプリケーションの実装に必要な複数の論理回路を各々表現した真理値表を比較したとき、同一パターンが連続している部分(例えば、図4の破線で囲まれた部分を参照)については第2ルックアップテーブル2で実装し、残りの部分(例えば、図4の実線で囲まれた部分を参照)については第1ルックアップテーブル1で実装している。
【0029】
また、本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)において、前記複数の論理回路としては、K−LUTでマッピングされた論理回路のうち、出現確率の高いものが含まれている。なお、上記マッピングに際しては、同一パターンが多く出現するように(できるだけ同じ値の出力値が並ぶように)、入力変数の入れ替えを行うことが望ましい。
【0030】
上記の構成を採用することにより、アプリケーションの実装に必要な論理回路を従来のK−LUTよりも少ないコンフィギュレーションメモリ数で実現することが可能となる。より具体的に述べると、K入力の論理回路を実装する場合、従来のK−LUTでは2K個のメモリ数が必要であるのに対して、本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)であれば(2m+2n)個のメモリ数で足りる。
【0031】
このように、本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)であれば、より少ないメモリ数で従来のK−LUTと同程度の機能を維持することができるので、プログラマブル論理回路装置の小面積化と低消費電力化を実現することが可能となる。また、本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)であれば、従来のK−LUTと入出力線の本数が変わらないので、配線領域の増加を防ぐことも可能となる。
【0032】
なお、本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)は、複数の出力値を少ないメモリに集約し、様々な入力数(最大K入力)の論理回路に対応可能であることから、本明細書中では、K−A2LUT[Abridged Adaptive LUT]と名付けられている。
【0033】
<本発明のポイント>
本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)のポイントをまとめて述べる。まず、第1のポイントは、入力数がmよりも大きい論理回路(最大K入力)の一部を実装することが可能であり、入力数がm以下である論理回路の全てを実装することが可能な構造とされている点である。第2のポイントは、入力数がmよりも大きい論理回路のうち、実装可能な一部の論理回路としては、出現確率の高いものが優先的に含まれている点、言い換えれば、実装可能な一部の論理回路の数を効率良く制限することで構成メモリ数が削減されている点である。第3のポイントは、入力の入れ替えによって互いに置換可能な論理回路が同一(P同値類)とみなされている点である。
【0034】
<第1構成例>
図5は、本発明に係るリコンフィギュラブルロジックブロックの第1構成例を示す図であり、最大入力数K=6とした場合の回路構成を示している。
【0035】
第1構成例のリコンフィギュラブルロジックブロック(6−A2LUT)は、第1ブロックA(メモリ[0]〜[7]を用いた3−LUT(A))と、第2ブロックB(メモリ[10]〜[17]を用いた3−LUT(B))と、2ビットのメモリ[8]及び[9]と、セレクタSEL0〜SEL2と、組み合わせ回路CMBと、を有する。
【0036】
第1ブロックAは、入力信号in1〜in3に応じてメモリ[0]〜[7]の格納データのいずれか一つを出力する。第2ブロックBは、入力信号in1〜in3に応じてメモリ[10]〜[17]の格納データのいずれか一つを出力する。セレクタSEL0は入力信号in0に応じてセレクタSEL1の出力データとセレクタSEL2の出力データの一方を出力信号outとして選択する。セレクタSEL1は、組み合わせ回路CMBの出力に応じて第1ブロックAの出力データとメモリ[8]の格納データの一方を選択する。セレクタSEL2は、組み合わせ回路CMBの出力に応じて第2ブロックBの出力データとメモリ[9]の格納データの一方を選択する。
【0037】
組み合わせ回路CMBは、入力信号in3〜in5に応じてセレクタSEL1及びSEL2の切替信号を生成する。第1構成例において、組み合わせ回路CMBは、入力信号in3〜in5の否定論理和演算を行うNORゲートG1と、入力信号in3〜in5の論理積演算を行うANDゲートG2と、NORゲートG1の出力とANDゲートG2の出力との論理和演算を行うORゲートG3と、を有する。
【0038】
なお、第1ブロックA、第2ブロックB、及び、セレクタSEL0によって4入力(in0〜in3)のルックアップテーブルが形成されており、これは図3の第1ルックアップテーブル1(m=4)に相当する。また、2ビットのメモリ[8]及び[9]とセレクタSEL0によって1入力(in0)のルックアップテーブルが形成されており、これは図3の第2ルックアップテーブル2(n=1)に相当する。また、組み合わせ回路CMBは、図3の組み合わせ回路3に相当する。また、セレクタSEL1及びSEL2は、図3のセレクタ4に相当する。
【0039】
従来の6−LUTでは、26=64ビットのメモリが必要であるのに対して、第1構成例のリコンフィギュラブルロジックブロック(6−A2LUT)は、24+21=18ビットのメモリで構成されている。
【0040】
図6は、第1構成例における入力条件とメモリとの関係を示す図であり、図7は、6−LUTでマッピングした論理回路のメモリパターン(P同値類)を出現確率の高い順に第1位〜第7位まで示した図である。なお、図7のメモリパターンは、6−LUTの出力データO0〜O63を64ビットの2進数値として表記したものである。
【0041】
図7から分かるように、第1位〜第7位のメモリパターン全てにおいて、第5ビット目〜第28ビット目(O4〜O27)と、第37ビット目〜第60ビット目(O36〜O59)は全て0か1の連続である。そこで、第1構成例では、同一値が連続している上記部分のうち、前者が1ビットのメモリ[8]に集約され、後者が1ビットのメモリ[9]に集約されている。また、残りの部分のうち、第1ビット目〜第4ビット目(O0〜O3)と第29ビット目〜第32ビット目(O28〜O31)が第1ブロックAで実現されており、第33ビット目〜第36ビット目(O32〜O35)と第61ビット目〜第64ビット目(O60〜O63)が第2ブロックBで実現されている。
【0042】
具体的に述べると、第1構成例では、{in0,in1,in2,in3,in4,in5}={0,−,−,0,0,0}及び{0,−,−,1,1,1}(ただし「−」は0または1)に対応する出力データO0〜O3及びO28〜O31が第1ブロックAのメモリ[0]〜[7]に保持されており、{in0,in1,in2,in3,in4,in5}={1,−,−,0,0,0}及び{1,−,−,1,1,1}に対応する出力データO32〜O35及びO60〜O63が第2ブロックBのメモリ[10]〜[17]に保持されている。また、上記以外の出力データO4〜O27及びO36〜O59がメモリ[8]及び[9]に集約されている。
【0043】
そして、図6に示した通り、{in0,in1,in2,in3,in4,in5}={0,−,−,0,0,0}及び{0,−,−,1,1,1}のときには第1ブロックAの出力データが出力信号outとして用いられ、{in0,in1,in2,in3,in4,in5}={1,−,−,0,0,0}及び{1,−,−,1,1,1}のときには第2ブロックBの出力データが出力信号outとして用いられる。また、入力信号の組み合わせが上記以外であるときには、メモリ[8]または[9]の格納データが出力信号outとして用いられる。
【0044】
ネットリストを6−A2LUT(18ビット)で実装すれば、従来の6−LUT(64ビット)で実装する場合と比べて、1セル当たりのメモリ数を46ビット削減することが可能となる。また、第1構成例の6−A2LUTであれば、6−LUTで利用されるメモリパターンの約52%、5−LUTで利用されるメモリパターンの約47%を実現することができるので、従来よりも少ないメモリ数で論理回路を実装することが可能となる。また、従来の4−LUTで実装する場合と比べて、より少ないセル数で論理回路を実装することが可能となる。
【0045】
<テクノロジマッピング方法>
図8は、6入力のテクノロジマッピング方法を示すフローチャートである。
【0046】
ステップS101では、入力となるネットリストに対してカバリングされていないノードの探索が行われて、フローがステップS102に進められる。
【0047】
ステップS102では、6入力のカットがあるか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS102に進められ、ノー判定が下された場合にはフローがステップS108に進められる。
【0048】
ステップS103では、6入力のカットが部分回路として切り出されて、フローがステップS104に進められる。
【0049】
ステップS104では、ステップS103でカットされた部分回路のP代表元が算出されて、フローがステップS105に進められる。なお、P代表元とは、P同値類中の関数を2進数値とみなした場合に最小のものを言う。
【0050】
ステップS105では、ステップS104で算出されたP代表元に基づいて、ステップS103でカットされた部分回路が6−A2LUTで実装可能か否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS106に進められ、ノー判定が下された場合にはフローがステップS102が戻されて、別のカットが探索される。
【0051】
ステップS106では、6−A2LUTでノードのカバリングが行われて、フローがステップS107に進められる。
【0052】
ステップS107では、全てのノードがカバリング済みが否かの判定が行われる。ここで、イエス判定が下された場合には上記一連のフローが終了され、ノー判定が下された場合にはフローがステップS101に戻される。
【0053】
ステップS108では、6−A2LUTで実装可能な6入力の部分回路を全てカバリングしても、未だ全てのノードがカバリングされていないことから、入力数が1つ下げられて、5入力のテクノロジマッピングが行われる。5入力のテクノロジマッピングについては、上記で説明した入力数をいずれも「6」から「5」に読み替えれば足りる。
【0054】
その後、6−A2LUTで実装可能な5入力の部分回路を全てカバリングしても、未だ全てのノードがカバリングされていない場合、残りのノードについては、いずれも4入力以下の部分回路にカットされてノードのカバリングが行われる。なお、6−A2LUTは4入力以下の論理回路を全て実装することができるので、P代表元の算出を行うためのステップS104や6−A2LUTによる実装可能性を検証するためのステップS105はもはや必要なくなる。
【0055】
図9は、本発明に係るテクノロジマッピング方法の全体像を示すフローチャートであって、先出の図8で説明したフローチャートをより一般化したものである。なお、本フローチャートは、K−A2LUTでm入力以下の論理回路を全て実装することが可能であること、及び、K入力以下に分解されたゲートレベルのブーリアンネットワークを入力とすることを前提とする。
【0056】
ステップS201では、入力数jとしてK−A2LUTの最大入力数Kが設定されて、フローがステップS202に進められる。
【0057】
ステップS202では、入力となるネットリストに対してカバリングされていないノードの探索が行われて、フローがステップS203に進められる。
【0058】
ステップS203では、j入力のカットがあるか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS204に進められ、ノー判定が下された場合にはフローがステップS210に進められる。
【0059】
ステップS204では、j入力のカットが部分回路として切り出されて、フローがステップS205に進められる。
【0060】
ステップS205では、jがmよりも大きいか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS206に進められ、ノー判定が下された場合にはフローがステップS208に進められる。
【0061】
ステップS206では、ステップS204でカットされた部分回路のP代表元が算出されて、フローがステップS207に進められる。
【0062】
ステップS207では、ステップS206で算出されたP代表元に基づいて、ステップS204でカットされた部分回路が6−A2LUTで実装可能か否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS208に進められ、ノー判定が下された場合にはフローがステップS203が戻されて、別のカットが探索される。
【0063】
ステップS208では、6−A2LUTでノードのカバリングが行われて、フローがステップS209に進められる。
【0064】
ステップS209では、全てのノードがカバリング済みが否かの判定が行われる。ここで、イエス判定が下された場合には上記一連のフローが終了され、ノー判定が下された場合にはフローがステップS202に戻される。
【0065】
ステップS108では、6−A2LUTで実装可能なj入力の部分回路を全てカバリングしても、未だ全てのノードがカバリングされていないことから、入力数jを一つデクリメントさせて、フローがステップS202に戻される。
【0066】
上記のように入力数jを一つずつデクリメントさせながらノードのカバリングを繰り返し、6−A2LUTで実装可能な(m+1)入力の部分回路を全てカバリングしても、未だ全てのノードがカバリングされていない場合、残りのノードについては、いずれもm入力以下の部分回路にカットされてノードのカバリングが行われる。なお、6−A2LUTはm入力以下の論理回路を全て実装することができるので、P代表元の算出を行うためのステップS206や6−A2LUTによる実装可能性を検証するためのステップS207はもはや必要なくなる。そこで、j=mとなりステップS205でノー判定が下された場合には、フローがステップS208にジャンプされる。
【0067】
先出の図3で示したように、本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)は、m入力の第1ルックアップテーブル1とn入力の第2ルックアップテーブル2によって構成されており、m>nとしたときには、m入力以下の論理回路を全て実装することが可能である。従って、本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)であれば、与えられたブーリアンネットワークをK−LUTよりも少ないメモリ数でテクノロジマッピングすることが可能である。
【0068】
<第2構成例〜第16構成例>
出現確率の高いP代表元について、先出の第1構成例(図5を参照)とは異なる入力の入れ替えを行い、それぞれP同値類に変換した結果、0または1が連続している部分を2ビットのメモリ[8]及び[9]に集約し、残りの部分を第1ブロックA及び第2ブロックBで実現した下記の第2構成例〜第16構成例では、組み合わせ回路CMBが第1構成例と異なる回路構造となる。
【0069】
図10は、リコンフィギュラブルロジックブロックの第2構成例を示す図である。第2構成例では、O4〜O15とO20〜O31がメモリ[8]に集約され、O36〜O47とO52〜O63がメモリ[9]に集約されている。また、O0〜O3とO16〜O19が第1ブロックAで実現されており、O32〜O35とO48〜O51が第2ブロックBで実現されている。なお、第2構成例において、組み合わせ回路CMBは、入力信号in4及びin5の否定論理和演算を行うNORゲートG4のみを有する。
【0070】
図11は、リコンフィギュラブルロジックブロックの第3構成例を示す図である。第3構成例では、O4〜O23とO28〜O31がメモリ[8]に集約され、O36〜O55とO60〜O63がメモリ[9]に集約されている。また、O0〜O3とO24〜O27が第1ブロックAで実現されており、O32〜O35とO56〜O59が第2ブロックBで実現されている。なお、第3構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in3及びin4については反転入力)の否定論理和演算を行うNORゲートG5と、入力信号in3〜in5の否定論理和演算を行うNORゲートG6と、NORゲートG5の出力とNORゲートG6の出力との論理和演算を行うORゲートG7と、を有する。
【0071】
図12は、リコンフィギュラブルロジックブロックの第4構成例を示す図である。第4構成例では、O4〜O19とO24〜O31がメモリ[8]に集約され、O36〜O51とO56〜O63がメモリ[9]に集約されている。また、O0〜O3とO20〜O23が第1ブロックAで実現されており、O32〜O35とO52〜O55が第2ブロックBで実現されている。なお、第4構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in3については反転入力)の論理積演算を行うANDゲートG8と、入力信号in3〜in5の否定論理和演算を行うNORゲートG9と、ANDゲートG8の出力とNORゲートG9の出力との論理和演算を行うORゲートG10とを有する。
【0072】
図13は、リコンフィギュラブルロジックブロックの第5構成例を示す図である。第5構成例では、O0〜O7、O12〜O15、及び、O20〜O31がメモリ[8]に集約され、O32〜O39、O44〜O47、及び、O52〜O63がメモリ[9]に集約されている。また、O8〜O11とO16〜O19が第1ブロックAで実現されており、O40〜O43とO48〜O51が第2ブロックBで実現されている。なお、第5構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in4については反転入力)の否定論理和演算を行うNORゲートG11と、入力信号in3〜in5(ただし、入力信号in3については反転入力)の否定論理和演算を行うNORゲートG12と、NORゲートG11の出力とNORゲートG12の出力との論理和演算を行うORゲートG13と、を有する。
【0073】
図14は、リコンフィギュラブルロジックブロックの第6構成例を示す図である。第6構成例では、O0〜O3、O8〜O15、及び、O20〜O31がメモリ[8]に集約され、O32〜O35、O40〜O47、及び、O52〜O63がメモリ[9]に集約されている。また、O4〜O7とO16〜O19が第1ブロックAで実現されており、O36〜O39とO48〜O51が第2ブロックBで実現されている。なお、第6構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in5については反転入力)の否定論理和演算を行うNORゲートG14と、入力信号in3〜in5(ただし、入力信号in3については反転入力)の否定論理和演算を行うNORゲートG15と、NORゲートG14の出力とNORゲートG15の出力との論理和演算を行うORゲートG16と、を有する。
【0074】
図15は、リコンフィギュラブルロジックブロックの第7構成例を示す図である。第7構成例では、O0〜O11とO20〜O31がメモリ[8]に集約され、O32〜O43とO52〜O63がメモリ[9]に集約されている。また、O12〜O19が第1ブロックAで実現されており、O44〜O51が第2ブロックBで実現されている。なお、第7構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in4及びin5については反転入力)の否定論理和演算を行うNORゲートG17と、入力信号in3〜in5(ただし、入力信号in3については反転入力)の否定論理和演算を行うNORゲートG18と、NORゲートG17の出力とNORゲートG18の出力との論理和演算を行うORゲートG19と、を有する。
【0075】
図16は、リコンフィギュラブルロジックブロックの第8構成例を示す図である。第8構成例では、O0〜O7、O12〜O23、及び、O28〜O31がメモリ[8]に集約され、O32〜O39、O44〜O55、及び、O60〜O63がメモリ[9]に集約されている。また、O8〜O11とO24〜O27が第1ブロックAで実現されており、O40〜O43とO56〜O59が第2ブロックBで実現されている。なお、第8構成例において、組み合わせ回路CMBは、入力信号in4及びin5(ただし、入力信号in5については反転入力)の論理積演算を行うANDゲートG20のみを有する。
【0076】
図17は、リコンフィギュラブルロジックブロックの第9構成例を示す図である。第9構成例では、O0〜O7、O12〜O19、及び、O24〜O31がメモリ[8]に集約され、O32〜O39、O44〜O51、及び、O56〜O63がメモリ[9]に集約されている。また、O8〜O11とO20〜O23が第1ブロックAで実現されており、O40〜O43とO52〜O55が第2ブロックBで実現されている。なお、第9構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in3及びin5については反転入力)の否定論理和演算を行うNORゲートG21と、入力信号in3〜in5(ただし、入力信号in4については反転入力)の否定論理和演算を行うNORゲートG22と、NORゲートG21の出力とNORゲートG22の出力との論理和演算を行うORゲートG23と、を有する。
【0077】
図18は、リコンフィギュラブルロジックブロックの第10構成例を示す図である。第10構成例では、O0〜O7とO12〜O27がメモリ[8]に集約され、O32〜O39とO44〜O59がメモリ[9]に集約されている。また、O8〜O11とO28〜O31が第1ブロックAで実現されており、O40〜O43とO60〜O63が第2ブロックBで実現されている。なお、第10構成例において、組み合わせ回路CMBは、入力信号in3〜in5の論理積演算を行うANDゲートG24と、入力信号in3〜in5(ただし、入力信号in4については反転入力)の否定論理和演算を行うNORゲートG25と、ANDゲートG24の出力とNORゲートG25の出力との論理和演算を行うORゲートG26と、を有する。
【0078】
図19は、リコンフィギュラブルロジックブロックの第11構成例を示す図である。第11構成例では、O0〜O3、O8〜O23、及び、O28〜O31がメモリ[8]に集約され、O32〜O35、O40〜O55、及び、O60〜O63がメモリ[9]に集約されている。また、O4〜O7とO24〜O27が第1ブロックAで実現されており、O36〜O39とO56〜O59が第2ブロックBで実現されている。なお、第11構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in5については反転入力)の否定論理和演算を行うNORゲートG27と、入力信号in3〜in5(ただし、入力信号in5については反転入力)の論理積演算を行うANDゲートG28と、NORゲートG27の出力とANDゲートG28の出力との論理和演算を行うORゲートG29と、を有する。
【0079】
図20は、リコンフィギュラブルロジックブロックの第12構成例を示す図である。第12構成例では、O0〜O11、O16〜O23、及び、O28〜O31がメモリ[8]に集約され、O32〜O43、O48〜O55、及び、O60〜O63がメモリ[9]に集約されている。また、O12〜O15とO24〜O27が第1ブロックAで実現されており、O44〜O47とO56〜O59が第2ブロックBで実現されている。なお、第12構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in4及びin5については反転入力)の否定論理和演算を行うNORゲートG30と、入力信号in3〜in5(ただし、入力信号in3及びin4については反転入力)の否定論理和演算を行うNORゲートG31と、NORゲートG30の出力とNORゲートG31の出力との論理和演算を行うORゲートG32と、を有する。
【0080】
図21は、リコンフィギュラブルロジックブロックの第13構成例を示す図である。第13構成例では、O0〜O3、O8〜O19、及び、O24〜O31がメモリ[8]に集約され、O32〜O35、O40〜O51、及び、O56〜O63がメモリ[9]に集約されている。また、O4〜O7とO20〜O23が第1ブロックAで実現されており、O36〜O39とO52〜O55が第2ブロックBで実現されている。なお、第13構成例において、組み合わせ回路CMBは、入力信号in4及びin5(ただし、入力信号in4については反転入力)の論理積演算を行うANDゲートG33のみを有する。
【0081】
図22は、リコンフィギュラブルロジックブロックの第14構成例を示す図である。第14構成例では、O0〜O3とO8〜O27がメモリ[8]に集約され、O32〜O35とO40〜O59がメモリ[9]に集約されている。また、O4〜O7とO28〜O31が第1ブロックAで実現されており、O36〜O39とO60〜O63が第2ブロックBで実現されている。なお、第14構成例において、組み合わせ回路CMBは、入力信号in3〜in5の論理積演算を行うANDゲートG34と、入力信号in3〜in5(ただし、入力信号in5については反転入力)の否定論理和演算を行うNORゲートG35と、ANDゲートG34の出力とNORゲートG35の出力との論理和演算を行うORゲートG36と、を有する。
【0082】
図23は、リコンフィギュラブルロジックブロックの第15構成例を示す図である。第15構成例では、O0〜O11、O16〜O19、及び、O24〜O31がメモリ[8]に集約され、O32〜O43、O48〜O51、及び、O56〜O63がメモリ[9]に集約されている。また、O12〜O15とO20〜O23が第1ブロックAで実現されており、O44〜O47とO52〜O55が第2ブロックBで実現されている。なお、第15構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in4及びin5については反転入力)の否定論理和演算を行うNORゲートG37と、入力信号in3〜in5(ただし、入力信号in3及びin5については反転入力)の否定論理和演算を行うNORゲートG38と、NORゲートG37の出力とNORゲートG38の出力との論理和演算を行うORゲートG39と、を有する。
【0083】
図24は、リコンフィギュラブルロジックブロックの第16構成例を示す図である。第16構成例では、O0〜O11とO16〜O27がメモリ[8]に集約され、O32〜O43とO48〜O59がメモリ[9]に集約されている。また、O12〜O15とO28〜O31が第1ブロックAで実現されており、O44〜O47とO60〜O63が第2ブロックBで実現されている。なお、第16構成例において、組み合わせ回路CMBは、入力信号in4及びin5の論理積演算を行うANDゲートG40のみを有する。
【0084】
図25は、第1〜第16構成例におけるLUTの形成方法とメモリの集約状態を示す図である。なお、符号「A」は出力データが第1ブロックA(メモリ[0]〜[7])に各々保持されていることを示しており、符号「B」は出力データが第2ブロックB(メモリ[10]〜[17])に各々保持されていることを示している。また、符号「8」は出力データがメモリ[8]に集約されていることを示しており、符号「9」は出力データがメモリ[9]に集約されていることを示している。
【0085】
例えば、第2構成例の場合、{in0,in1,in2,in3,in4,in5}={0,−,−,0,0,0}及び{0,−,−,1,0,0}のときには第1ブロックAの出力データが出力信号outとして用いられ、{in0,in1,in2,in3,in4,in5}={1,−,−,0,0,0}及び{1,−,−,1,0,0}のときには第2ブロックBの出力データが出力信号outとして用いられる。また、入力信号の組み合わせが上記以外であるときには、メモリ[8]または[9]の格納データが出力信号outとして用いられる。
【0086】
図26は、第1〜第16構成例における論理回路のカバー率(6入力論理回路のカバー率、5入力論理回路のカバー率、及び、4入力以下も含めた全ての論理回路のカバー率)を示す図である。この表は、MCNC[Microelectronics Center of North Carolina] ベンチマーク回路(117種類)をEMapによってテクノロジマッピングを行った場合において、使用された論理回路のうち、本発明に係るリコンフィギュラブルロジックブロック(6−A2LUT)で実装可能であったものの割合を示している。なお、EMapとは、UBC[University of British Columbia]で開発された電力最適化を目的としたテクノロジマッピングツールである。
【0087】
本発明に係るリコンフィギュラブルロジックブロック(6−A2LUT)であれば、従来の6−LUTと比較して、約3分の1のメモリ数で図26に示したカバー率を実現することが可能である。
【0088】
<その他の変形例>
なお、本発明の構成は、上記実施形態のほか、発明の主旨を逸脱しない範囲で種々の変更を加えることが可能である。すなわち、上記実施形態は、全ての点で例示であって、制限的なものではないと考えられるべきであり、本発明の技術的範囲は、上記実施形態の説明ではなく、特許請求の範囲によって示されるものであり、特許請求の範囲と均等の意味及び範囲内に属する全ての変更が含まれると理解されるべきである。
【産業上の利用可能性】
【0089】
本発明は、例えば、FPGAの小面積化と低消費電力化を実現する上で有用に利用することが可能な技術である。
【符号の説明】
【0090】
100 プログラマブル論理回路装置(FPGA)
101 I/Oブロック
102 リコンフィギュラブルロジックブロック(RLB)
103 コネクションブロック(CB)
104 スイッチブロック(SB)
105 配線
1 第1ルックアップテーブル(m−LUT)
2 第2ルックアップテーブル(n−LUT)
3 組み合わせ回路
4 セレクタ
A 第1ブロック(3−LUT)
B 第2ブロック(3−LUT)
SEL0、SEL1、SEL2 セレクタ
CMB 組み合わせ回路
G(1、4、5、6、9、11、12、14、15、17、18、21、22、25、27、30、31、35、37、38) NORゲート
G(2、8、20、24、28、33、34、40) ANDゲート
G(3、7、10、13、16、19、23、26、29、32、36、39) ORゲート
【技術分野】
【0001】
本発明は、リコンフィギュラブルロジックブロック(以下、RLB[Reconfigurable Logic Block]と呼ぶ)、並びに、これを用いたプログラマブル論理回路装置、及び、テクノロジマッピング方法に関するものである。
【背景技術】
【0002】
近年、ハードウェア記述言語 (HDL[Hardware Description Language])を用いたプログラミングにより、半導体装置に集積化された内部論理回路を現場で自由に再構築することが可能なプログラマブル論理回路装置(PLD[Programmable Logic Device]、FPGA[Field Programmable Gate Array]、DAP/DNA[Digital Application Processor/Distributed Network Architecture]、DRP[Dynamically Reconfigurable Processor]など)が種々実用化されている。
【0003】
なお、上記に関連する従来技術の一例としては、特許文献1〜特許文献7、及び、非特許文献1を挙げることができる。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】米国特許第4,706,216号明細書
【特許文献2】米国特許第4,870,302号明細書
【特許文献3】米国特許第6,998,872号明細書
【特許文献4】米国特許出願公開第2007/0222477号明細書
【特許文献5】特開2003−18000号公報
【特許文献6】特開2004−248293号公報
【特許文献7】特開2007−166579号公報
【0005】
【非特許文献1】(Vaughn Betz, Jonathan Rose, and Alexander Marquardt)著、「Architecture and CAD for Deep-Submicron FPGAs (The Springer International Series in Engineering and Computer Science) 」、Springer出版
【発明の概要】
【発明が解決しようとする課題】
【0006】
FPGAなどのプログラマブル論理回路装置では、所望の論理回路を実現するための基本素子としてルックアップテーブル(以下、LUT[Look-Up Table]と呼ぶ)が用いられている。LUTは、真理値表の出力値をコンフィギュレーションメモリに1対1で保持しており、それらを複数のマルチプレクサによりデコードすることで、所望の論理回路を実現することが可能である。K入力のLUT(以下、K−LUTと呼ぶ)を用いれば、K入力以下の論理回路を全て実装することができる。しかしながら、従来のLUTでは、入力数を増やすほど遅延性能が高くなる(遅延が小さくなる)が、使用されないメモリ数が増えて実装面積(LUTのサイズ)が大きくなる、言い換えれば、LUTの使用メモリ数(LUTのサイズ)と遅延性能がトレードオフの関係にある、という問題があった(例えば、特許文献1や特許文献2を参照)。
【0007】
なお、従来より、LUTの使用メモリ数を減らす工夫として、図27で示すようなアダプティブLUTが提案されている(例えば、特許文献3や特許文献4を参照)。これは、入力数の多いLUTを分割することで、入力数の少ないLUTを複数個使用できるようにし、メモリ数を削減する技術である。確かに、入力数の多いアダプティブLUTを使用して論理回路を実装すれば、入力数の少ないLUTを多数使用して論理回路を実装する場合よりも、遅延性能を高めることが可能である。しかしながら、従来のアダプティブLUTでは、入力数の多いLUTを分割せずに用いた場合、LUTの使用メモリ数(消費電力)が多くなる、という問題があった。
【0008】
また、従来より、図28で示すようなクラスタベース論理ブロックの構成手法が提案されている(例えば、非特許文献1を参照)。これば、入力数の少ないLUTを多数クラスタリングすることにより、LUTのメモリ使用率を下げずに性能を改善する技術である。しかしながら、従来のクラスタベース論理ブロックでは、論理ブロック内でLUT同士を接続するためにマルチプレクサとメモリが多数必要となるため、配線に必要なハードウェアリソースが増加する、という問題があった。
【0009】
図29は、上記した従来技術の特徴をまとめた一覧表である。従来のLUT(例えば、4−LUT)は、論理ブロックのサイズが小さいので、構成メモリ数は少なくて済むが、遅延性能は低く、また、同一回路を実装したときの論理ブロックの使用数は多くなる。これに対して、従来のアダプティブLUT(例えば、アダプティブ6−LUT)やクラスタベース論理ブロック(例えば、4−LUT×8)は、遅延性能が高く、また、同一回路を実装したときの論理ブロックの使用数は少なくて済むが、論理ブロックのサイズが大きいので、構成メモリ数が多くなる。
【0010】
また、その他の従来技術として、特許文献5では、M入力N出力のルックアップテーブルであって、複数のLUTユニットと、前記複数のLUTユニットによる内部構成を制御する内部構成制御手段と、を備えるルックアップテーブルが開示されている。この従来技術によれば、例えば、6入力3出力の場合、2−LUTを3つ、3LUT−を2つ、または、6−LUTを1つといったように、モードを切り替えることで面積効率を向上させることが可能である。しかしながら、この従来技術では、6入力の論理回路を実装するためには64ビットのメモリが必要であるため、テクノロジマッピングで6入力の論理回路が多数出てきた場合には、使用メモリ数が多くなっていた。また、出力線が従来のLUTよりも多いので、配線領域が増加するという懸念もあった。
【0011】
また、特許文献6では、6つの2−LUTから構成されており、完全な4−LUTと、一般的に用いられる6入力の論理関数を比較的高い割合で実装することが可能な不完全ルックアップテーブルが提案されている。この従来技術によれば、構成可能論理回路は6入力全ての論理関数のサブセットしか実行できないため、構成可能論理回路がFPGA内で占めるシリコン領域を大幅に減少することが可能である。しかしながら、この従来技術では、論理セルからの出力線が2本あるので、6入力のサブセットとして使用した場合、配線領域が増加してしまう。また、セル内のコンフィギュレーションメモリ数については、さらなる削減の余地があった。
【0012】
また、特許文献7では、演算回路を構成する第1の回路、および、該演算回路外の回路を構成する第2の回路を備えるリコンフィギュラブルロジックブロックであって、前記第1および第2の回路における所定の信号の設定を変化させることにより、異なる回路を構成するようにしたリコンフィギュラブルロジックブロックが提案されている。この従来技術によれば、算術演算と論理演算を効率良く実装し、また、論理演算においては、少ないBLE[Basic Logic Element]数で一部の論理回路を実装することが可能である。しかしながら、この従来技術において、実装可能な一部の論理回路は、その出現確率を考慮したものではなく、効率的な論理回路の実装については、さらなる改善の余地があった。
【0013】
本発明は、本願の発明者らにより見出された上記の問題点に鑑み、デバイスの小面積化と低消費電力化を実現することが可能なリコンフィギュラブルロジックブロック、並びにこれを用いたプログラマブル論理回路装置、及び、テクノロジマッピング方法を提供することを目的とする。
【課題を解決するための手段】
【0014】
上記目的を達成するために、本発明に係るリコンフィギュラブルロジックブロックは、最大K入力(x[0]〜x[K−1])のリコンフィギュラブルロジックブロックであって、m入力(y[0]〜y[m−1]、ただしmはKよりも小さくyはxに属する)の第1ルックアップテーブルと、n入力(z[0]〜z[n−1]、ただしnはKよりも小さくzはxに属する)の第2ルックアップテーブルと、p入力(c[0]〜c[p−1]、ただしpはKよりも小さくcはxに属する)の組み合わせ回路と、前記組み合わせ回路の出力に応じて前記第1ルックアップテーブルと前記第2ルックアップテーブルのいずれか一方を選択するセレクタと、を有する構成(第1の構成)とされている。
【0015】
なお、上記第1の構成から成るリコンフィギュラブルロジックブロックは、複数の論理回路を各々表現した真理値表を比較して、同一パターンが連続している部分を前記第2ルックアップテーブルで実装し、残りの部分を前記第1ルックアップテーブルで実装する構成(第2の構成)にするとよい。
【0016】
また、上記第2の構成から成るリコンフィギュラブルロジックブロックにおいて、前記複数の論理回路は、K入力のルックアップテーブルでマッピングされた論理回路のうち、出現確率の高いものを含む構成(第3の構成)にするとよい。
【0017】
また、本発明に係るプログラマブル論理回路装置は、上記第3の構成から成るリコンフィギュラブルロジックブロックを有する構成(第4の構成)とされている。
【0018】
また、本発明に係るテクノロジマッピング方法は、上記第4の構成から成るプログラマブル論理回路装置を対象としたものであって、入力数jとして前記リコンフィギュラブルロジックブロックの最大入力数Kを設定してフローを第2ステップに進める第1ステップと;カバリングされていないノードを探索してフローを第3ステップに進める第2ステップと;j入力のカットがあるか否かを判定し、カットがあればフローを第4ステップに進め、カットがなければフローを第10ステップに進める第3ステップと;j入力の部分回路にカットしてフローを第5ステップに進める第4ステップと;jがmよりも大きいか否かを判定し、大きければフローを第6ステップに進め、大きくなければフローを第8ステップに進める第5ステップと;前記部分回路のP代表元を算出してフローを第7ステップに進める第6ステップと;前記P代表元に基づいて前記部分回路が前記リコンフィギュラブルロジックブロックで実装可能か否かを判定し、実装可能であればフローを第8ステップに進め、実装不可能であればフローを第3ステップに進める第7ステップと;前記リコンフィギュラブルロジックブロックでノードのカバリングを行い、フローを第9ステップに進める第8ステップと;全てのノードがカバリング済みであるか否かを判定し、カバリング済みであれば一連のフローを終了させ、カバリング済みでなければフローを第2ステップに進める第9ステップと;入力数jを一つデクリメントさせてフローを第2ステップに進める第10ステップと;を有する構成(第5の構成)とされている。
【発明の効果】
【0019】
本発明によれば、デバイスの小面積化と低消費電力化を実現することが可能なリコンフィギュラブルロジックブロック、並びに、これを用いたプログラマブル論理回路装置、及び、テクノロジマッピング方法を提供することが可能となる。
【図面の簡単な説明】
【0020】
【図1】本発明に係るプログラマブル論理回路装置の全体構成例を示すブロック図
【図2】3入力論理回路の一実装例を示す図
【図3】本発明に係るリコンフィギュラブルロジックブロックの概念的構成を示す図
【図4】メモリの一使用例を示す真理値表
【図5】リコンフィギュラブルロジックブロックの第1構成例を示す図
【図6】第1構成例における入力条件とメモリとの関係を示す図
【図7】6−LUTでマッピングした回路のメモリパターン(P同値類)を示す図
【図8】6入力のテクノロジマッピング方法を示すフローチャート
【図9】本発明に係るテクノロジマッピング方法の全体像を示すフローチャート
【図10】リコンフィギュラブルロジックブロックの第2構成例を示す図
【図11】リコンフィギュラブルロジックブロックの第3構成例を示す図
【図12】リコンフィギュラブルロジックブロックの第4構成例を示す図
【図13】リコンフィギュラブルロジックブロックの第5構成例を示す図
【図14】リコンフィギュラブルロジックブロックの第6構成例を示す図
【図15】リコンフィギュラブルロジックブロックの第7構成例を示す図
【図16】リコンフィギュラブルロジックブロックの第8構成例を示す図
【図17】リコンフィギュラブルロジックブロックの第9構成例を示す図
【図18】リコンフィギュラブルロジックブロックの第10構成例を示す図
【図19】リコンフィギュラブルロジックブロックの第11構成例を示す図
【図20】リコンフィギュラブルロジックブロックの第12構成例を示す図
【図21】リコンフィギュラブルロジックブロックの第13構成例を示す図
【図22】リコンフィギュラブルロジックブロックの第14構成例を示す図
【図23】リコンフィギュラブルロジックブロックの第15構成例を示す図
【図24】リコンフィギュラブルロジックブロックの第16構成例を示す図
【図25】各構成例におけるLUTの形成方法とメモリの集約状態を示す図
【図26】各構成例における論理回路のカバー率を示す図
【図27】アダプティブLUTの一従来例を示すブロック図
【図28】クラスタベース論理ブロックの一従来例を示すブロック図
【図29】従来技術の特徴をまとめた一覧表
【発明を実施するための形態】
【0021】
<プログラマブル論理回路装置>
図1は、本発明に係るプログラマブル論理回路装置の全体構成例を示すブロック図である。本構成例のプログラマブル論理回路装置100は、I/Oブロック101と、リコンフィギュラブルロジックブロック102(以下、RLB[Reconfigurable Logic Block]102と略称する)と、コネクションブロック103(以下、CB[Connection Block]103と略称する)と、スイッチブロック104(以下、SW[Switch Block]104と略称する)と、配線105と、を有する。
【0022】
I/Oブロック101は、外部との信号授受を行う。RLB102は、マトリクス状に複数配列されており、論理回路を実現するための演算素子として使用される。CB103は、RLB102と配線105とを結合する。SB104は、配線105のクロスポイントとなる。
【0023】
プログラマブル論理回路装置100の性能を改善するためには、新しいRLB102が必要であり、本発明は、主としてRLB102の新規な構成に関するものである。
【0024】
<本発明に至った経緯>
論理回路を従来のLUTで表現する場合、同じ論理関数を異なるLUTのメモリパターン(構成情報)で実現しているものが多く見られる。また、LUTのメモリパターンには同じデータの繰り返し部分が多数存在する。すなわち、一般に用いられている従来のLUTによる回路表現は、真理値表をそのままコンフィギュレーションデータとして表現したものであり、同じ論理回路でも複数の実装が存在する。そのため、入力信号の入れ替えによって得られる論理回路を同一とみなせば、LUTによる回路表現は本質的に冗長であると言える。以下では、LUTの冗長性について、3入力の論理回路を例示して説明する。
【0025】
図2は、3入力論理回路の一実装例を示す図である。図2に示すように、関数fと関数gの真理値表は、一部のパターンが異なっているが、入力bと入力cを入れ替えれば、関数fと関数gを同一とみなすことができる。このとき、関数fを実現するための論理回路と、関数gを実現するための論理回路は、同じP[Permutation]同値類に属する。すなわち、関数fが関数gの入力順序を入れ替えることによって得られるならば、関数fと関数gは、同じP同値類に属すると言える。
【0026】
本願の発明者らは、上記考察から、LUTによる回路表現の冗長性を除くことにより、従来のLUTより少ないコンフィギュレーションメモリ数でも、従来と同等の論理回路を実装可能な論理セルを実現することができる、との着想を得て本発明に至った。
【0027】
<リコンフィギュラブルロジックブロック>
図3は、本発明に係るリコンフィギュラブルロジックブロックの概念的構成を示す図である。本発明に係る最大K入力(x[0]〜x[K−1])のリコンフィギュラブルロジックブロック(K−A2LUT)は、m入力(y[0]〜y[m−1]、ただし、mはKよりも小さくyはxに属する)の第1ルックアップテーブル1と、n入力(z[0]〜z[n−1]、ただし、nはKよりも小さくzはxに属する)の第2ルックアップテーブル2と、p入力(c[0]〜c[p−1]、ただし、pはKよりも小さくcはxに属する)の組み合わせ回路3と、組み合わせ回路3の出力に応じて第1ルックアップテーブル1と第2ルックアップテーブル2のいずれか一方を選択するセレクタ4と、を有する。
【0028】
また、本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)は、アプリケーションの実装に必要な複数の論理回路を各々表現した真理値表を比較したとき、同一パターンが連続している部分(例えば、図4の破線で囲まれた部分を参照)については第2ルックアップテーブル2で実装し、残りの部分(例えば、図4の実線で囲まれた部分を参照)については第1ルックアップテーブル1で実装している。
【0029】
また、本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)において、前記複数の論理回路としては、K−LUTでマッピングされた論理回路のうち、出現確率の高いものが含まれている。なお、上記マッピングに際しては、同一パターンが多く出現するように(できるだけ同じ値の出力値が並ぶように)、入力変数の入れ替えを行うことが望ましい。
【0030】
上記の構成を採用することにより、アプリケーションの実装に必要な論理回路を従来のK−LUTよりも少ないコンフィギュレーションメモリ数で実現することが可能となる。より具体的に述べると、K入力の論理回路を実装する場合、従来のK−LUTでは2K個のメモリ数が必要であるのに対して、本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)であれば(2m+2n)個のメモリ数で足りる。
【0031】
このように、本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)であれば、より少ないメモリ数で従来のK−LUTと同程度の機能を維持することができるので、プログラマブル論理回路装置の小面積化と低消費電力化を実現することが可能となる。また、本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)であれば、従来のK−LUTと入出力線の本数が変わらないので、配線領域の増加を防ぐことも可能となる。
【0032】
なお、本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)は、複数の出力値を少ないメモリに集約し、様々な入力数(最大K入力)の論理回路に対応可能であることから、本明細書中では、K−A2LUT[Abridged Adaptive LUT]と名付けられている。
【0033】
<本発明のポイント>
本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)のポイントをまとめて述べる。まず、第1のポイントは、入力数がmよりも大きい論理回路(最大K入力)の一部を実装することが可能であり、入力数がm以下である論理回路の全てを実装することが可能な構造とされている点である。第2のポイントは、入力数がmよりも大きい論理回路のうち、実装可能な一部の論理回路としては、出現確率の高いものが優先的に含まれている点、言い換えれば、実装可能な一部の論理回路の数を効率良く制限することで構成メモリ数が削減されている点である。第3のポイントは、入力の入れ替えによって互いに置換可能な論理回路が同一(P同値類)とみなされている点である。
【0034】
<第1構成例>
図5は、本発明に係るリコンフィギュラブルロジックブロックの第1構成例を示す図であり、最大入力数K=6とした場合の回路構成を示している。
【0035】
第1構成例のリコンフィギュラブルロジックブロック(6−A2LUT)は、第1ブロックA(メモリ[0]〜[7]を用いた3−LUT(A))と、第2ブロックB(メモリ[10]〜[17]を用いた3−LUT(B))と、2ビットのメモリ[8]及び[9]と、セレクタSEL0〜SEL2と、組み合わせ回路CMBと、を有する。
【0036】
第1ブロックAは、入力信号in1〜in3に応じてメモリ[0]〜[7]の格納データのいずれか一つを出力する。第2ブロックBは、入力信号in1〜in3に応じてメモリ[10]〜[17]の格納データのいずれか一つを出力する。セレクタSEL0は入力信号in0に応じてセレクタSEL1の出力データとセレクタSEL2の出力データの一方を出力信号outとして選択する。セレクタSEL1は、組み合わせ回路CMBの出力に応じて第1ブロックAの出力データとメモリ[8]の格納データの一方を選択する。セレクタSEL2は、組み合わせ回路CMBの出力に応じて第2ブロックBの出力データとメモリ[9]の格納データの一方を選択する。
【0037】
組み合わせ回路CMBは、入力信号in3〜in5に応じてセレクタSEL1及びSEL2の切替信号を生成する。第1構成例において、組み合わせ回路CMBは、入力信号in3〜in5の否定論理和演算を行うNORゲートG1と、入力信号in3〜in5の論理積演算を行うANDゲートG2と、NORゲートG1の出力とANDゲートG2の出力との論理和演算を行うORゲートG3と、を有する。
【0038】
なお、第1ブロックA、第2ブロックB、及び、セレクタSEL0によって4入力(in0〜in3)のルックアップテーブルが形成されており、これは図3の第1ルックアップテーブル1(m=4)に相当する。また、2ビットのメモリ[8]及び[9]とセレクタSEL0によって1入力(in0)のルックアップテーブルが形成されており、これは図3の第2ルックアップテーブル2(n=1)に相当する。また、組み合わせ回路CMBは、図3の組み合わせ回路3に相当する。また、セレクタSEL1及びSEL2は、図3のセレクタ4に相当する。
【0039】
従来の6−LUTでは、26=64ビットのメモリが必要であるのに対して、第1構成例のリコンフィギュラブルロジックブロック(6−A2LUT)は、24+21=18ビットのメモリで構成されている。
【0040】
図6は、第1構成例における入力条件とメモリとの関係を示す図であり、図7は、6−LUTでマッピングした論理回路のメモリパターン(P同値類)を出現確率の高い順に第1位〜第7位まで示した図である。なお、図7のメモリパターンは、6−LUTの出力データO0〜O63を64ビットの2進数値として表記したものである。
【0041】
図7から分かるように、第1位〜第7位のメモリパターン全てにおいて、第5ビット目〜第28ビット目(O4〜O27)と、第37ビット目〜第60ビット目(O36〜O59)は全て0か1の連続である。そこで、第1構成例では、同一値が連続している上記部分のうち、前者が1ビットのメモリ[8]に集約され、後者が1ビットのメモリ[9]に集約されている。また、残りの部分のうち、第1ビット目〜第4ビット目(O0〜O3)と第29ビット目〜第32ビット目(O28〜O31)が第1ブロックAで実現されており、第33ビット目〜第36ビット目(O32〜O35)と第61ビット目〜第64ビット目(O60〜O63)が第2ブロックBで実現されている。
【0042】
具体的に述べると、第1構成例では、{in0,in1,in2,in3,in4,in5}={0,−,−,0,0,0}及び{0,−,−,1,1,1}(ただし「−」は0または1)に対応する出力データO0〜O3及びO28〜O31が第1ブロックAのメモリ[0]〜[7]に保持されており、{in0,in1,in2,in3,in4,in5}={1,−,−,0,0,0}及び{1,−,−,1,1,1}に対応する出力データO32〜O35及びO60〜O63が第2ブロックBのメモリ[10]〜[17]に保持されている。また、上記以外の出力データO4〜O27及びO36〜O59がメモリ[8]及び[9]に集約されている。
【0043】
そして、図6に示した通り、{in0,in1,in2,in3,in4,in5}={0,−,−,0,0,0}及び{0,−,−,1,1,1}のときには第1ブロックAの出力データが出力信号outとして用いられ、{in0,in1,in2,in3,in4,in5}={1,−,−,0,0,0}及び{1,−,−,1,1,1}のときには第2ブロックBの出力データが出力信号outとして用いられる。また、入力信号の組み合わせが上記以外であるときには、メモリ[8]または[9]の格納データが出力信号outとして用いられる。
【0044】
ネットリストを6−A2LUT(18ビット)で実装すれば、従来の6−LUT(64ビット)で実装する場合と比べて、1セル当たりのメモリ数を46ビット削減することが可能となる。また、第1構成例の6−A2LUTであれば、6−LUTで利用されるメモリパターンの約52%、5−LUTで利用されるメモリパターンの約47%を実現することができるので、従来よりも少ないメモリ数で論理回路を実装することが可能となる。また、従来の4−LUTで実装する場合と比べて、より少ないセル数で論理回路を実装することが可能となる。
【0045】
<テクノロジマッピング方法>
図8は、6入力のテクノロジマッピング方法を示すフローチャートである。
【0046】
ステップS101では、入力となるネットリストに対してカバリングされていないノードの探索が行われて、フローがステップS102に進められる。
【0047】
ステップS102では、6入力のカットがあるか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS102に進められ、ノー判定が下された場合にはフローがステップS108に進められる。
【0048】
ステップS103では、6入力のカットが部分回路として切り出されて、フローがステップS104に進められる。
【0049】
ステップS104では、ステップS103でカットされた部分回路のP代表元が算出されて、フローがステップS105に進められる。なお、P代表元とは、P同値類中の関数を2進数値とみなした場合に最小のものを言う。
【0050】
ステップS105では、ステップS104で算出されたP代表元に基づいて、ステップS103でカットされた部分回路が6−A2LUTで実装可能か否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS106に進められ、ノー判定が下された場合にはフローがステップS102が戻されて、別のカットが探索される。
【0051】
ステップS106では、6−A2LUTでノードのカバリングが行われて、フローがステップS107に進められる。
【0052】
ステップS107では、全てのノードがカバリング済みが否かの判定が行われる。ここで、イエス判定が下された場合には上記一連のフローが終了され、ノー判定が下された場合にはフローがステップS101に戻される。
【0053】
ステップS108では、6−A2LUTで実装可能な6入力の部分回路を全てカバリングしても、未だ全てのノードがカバリングされていないことから、入力数が1つ下げられて、5入力のテクノロジマッピングが行われる。5入力のテクノロジマッピングについては、上記で説明した入力数をいずれも「6」から「5」に読み替えれば足りる。
【0054】
その後、6−A2LUTで実装可能な5入力の部分回路を全てカバリングしても、未だ全てのノードがカバリングされていない場合、残りのノードについては、いずれも4入力以下の部分回路にカットされてノードのカバリングが行われる。なお、6−A2LUTは4入力以下の論理回路を全て実装することができるので、P代表元の算出を行うためのステップS104や6−A2LUTによる実装可能性を検証するためのステップS105はもはや必要なくなる。
【0055】
図9は、本発明に係るテクノロジマッピング方法の全体像を示すフローチャートであって、先出の図8で説明したフローチャートをより一般化したものである。なお、本フローチャートは、K−A2LUTでm入力以下の論理回路を全て実装することが可能であること、及び、K入力以下に分解されたゲートレベルのブーリアンネットワークを入力とすることを前提とする。
【0056】
ステップS201では、入力数jとしてK−A2LUTの最大入力数Kが設定されて、フローがステップS202に進められる。
【0057】
ステップS202では、入力となるネットリストに対してカバリングされていないノードの探索が行われて、フローがステップS203に進められる。
【0058】
ステップS203では、j入力のカットがあるか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS204に進められ、ノー判定が下された場合にはフローがステップS210に進められる。
【0059】
ステップS204では、j入力のカットが部分回路として切り出されて、フローがステップS205に進められる。
【0060】
ステップS205では、jがmよりも大きいか否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS206に進められ、ノー判定が下された場合にはフローがステップS208に進められる。
【0061】
ステップS206では、ステップS204でカットされた部分回路のP代表元が算出されて、フローがステップS207に進められる。
【0062】
ステップS207では、ステップS206で算出されたP代表元に基づいて、ステップS204でカットされた部分回路が6−A2LUTで実装可能か否かの判定が行われる。ここで、イエス判定が下された場合にはフローがステップS208に進められ、ノー判定が下された場合にはフローがステップS203が戻されて、別のカットが探索される。
【0063】
ステップS208では、6−A2LUTでノードのカバリングが行われて、フローがステップS209に進められる。
【0064】
ステップS209では、全てのノードがカバリング済みが否かの判定が行われる。ここで、イエス判定が下された場合には上記一連のフローが終了され、ノー判定が下された場合にはフローがステップS202に戻される。
【0065】
ステップS108では、6−A2LUTで実装可能なj入力の部分回路を全てカバリングしても、未だ全てのノードがカバリングされていないことから、入力数jを一つデクリメントさせて、フローがステップS202に戻される。
【0066】
上記のように入力数jを一つずつデクリメントさせながらノードのカバリングを繰り返し、6−A2LUTで実装可能な(m+1)入力の部分回路を全てカバリングしても、未だ全てのノードがカバリングされていない場合、残りのノードについては、いずれもm入力以下の部分回路にカットされてノードのカバリングが行われる。なお、6−A2LUTはm入力以下の論理回路を全て実装することができるので、P代表元の算出を行うためのステップS206や6−A2LUTによる実装可能性を検証するためのステップS207はもはや必要なくなる。そこで、j=mとなりステップS205でノー判定が下された場合には、フローがステップS208にジャンプされる。
【0067】
先出の図3で示したように、本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)は、m入力の第1ルックアップテーブル1とn入力の第2ルックアップテーブル2によって構成されており、m>nとしたときには、m入力以下の論理回路を全て実装することが可能である。従って、本発明に係るリコンフィギュラブルロジックブロック(K−A2LUT)であれば、与えられたブーリアンネットワークをK−LUTよりも少ないメモリ数でテクノロジマッピングすることが可能である。
【0068】
<第2構成例〜第16構成例>
出現確率の高いP代表元について、先出の第1構成例(図5を参照)とは異なる入力の入れ替えを行い、それぞれP同値類に変換した結果、0または1が連続している部分を2ビットのメモリ[8]及び[9]に集約し、残りの部分を第1ブロックA及び第2ブロックBで実現した下記の第2構成例〜第16構成例では、組み合わせ回路CMBが第1構成例と異なる回路構造となる。
【0069】
図10は、リコンフィギュラブルロジックブロックの第2構成例を示す図である。第2構成例では、O4〜O15とO20〜O31がメモリ[8]に集約され、O36〜O47とO52〜O63がメモリ[9]に集約されている。また、O0〜O3とO16〜O19が第1ブロックAで実現されており、O32〜O35とO48〜O51が第2ブロックBで実現されている。なお、第2構成例において、組み合わせ回路CMBは、入力信号in4及びin5の否定論理和演算を行うNORゲートG4のみを有する。
【0070】
図11は、リコンフィギュラブルロジックブロックの第3構成例を示す図である。第3構成例では、O4〜O23とO28〜O31がメモリ[8]に集約され、O36〜O55とO60〜O63がメモリ[9]に集約されている。また、O0〜O3とO24〜O27が第1ブロックAで実現されており、O32〜O35とO56〜O59が第2ブロックBで実現されている。なお、第3構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in3及びin4については反転入力)の否定論理和演算を行うNORゲートG5と、入力信号in3〜in5の否定論理和演算を行うNORゲートG6と、NORゲートG5の出力とNORゲートG6の出力との論理和演算を行うORゲートG7と、を有する。
【0071】
図12は、リコンフィギュラブルロジックブロックの第4構成例を示す図である。第4構成例では、O4〜O19とO24〜O31がメモリ[8]に集約され、O36〜O51とO56〜O63がメモリ[9]に集約されている。また、O0〜O3とO20〜O23が第1ブロックAで実現されており、O32〜O35とO52〜O55が第2ブロックBで実現されている。なお、第4構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in3については反転入力)の論理積演算を行うANDゲートG8と、入力信号in3〜in5の否定論理和演算を行うNORゲートG9と、ANDゲートG8の出力とNORゲートG9の出力との論理和演算を行うORゲートG10とを有する。
【0072】
図13は、リコンフィギュラブルロジックブロックの第5構成例を示す図である。第5構成例では、O0〜O7、O12〜O15、及び、O20〜O31がメモリ[8]に集約され、O32〜O39、O44〜O47、及び、O52〜O63がメモリ[9]に集約されている。また、O8〜O11とO16〜O19が第1ブロックAで実現されており、O40〜O43とO48〜O51が第2ブロックBで実現されている。なお、第5構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in4については反転入力)の否定論理和演算を行うNORゲートG11と、入力信号in3〜in5(ただし、入力信号in3については反転入力)の否定論理和演算を行うNORゲートG12と、NORゲートG11の出力とNORゲートG12の出力との論理和演算を行うORゲートG13と、を有する。
【0073】
図14は、リコンフィギュラブルロジックブロックの第6構成例を示す図である。第6構成例では、O0〜O3、O8〜O15、及び、O20〜O31がメモリ[8]に集約され、O32〜O35、O40〜O47、及び、O52〜O63がメモリ[9]に集約されている。また、O4〜O7とO16〜O19が第1ブロックAで実現されており、O36〜O39とO48〜O51が第2ブロックBで実現されている。なお、第6構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in5については反転入力)の否定論理和演算を行うNORゲートG14と、入力信号in3〜in5(ただし、入力信号in3については反転入力)の否定論理和演算を行うNORゲートG15と、NORゲートG14の出力とNORゲートG15の出力との論理和演算を行うORゲートG16と、を有する。
【0074】
図15は、リコンフィギュラブルロジックブロックの第7構成例を示す図である。第7構成例では、O0〜O11とO20〜O31がメモリ[8]に集約され、O32〜O43とO52〜O63がメモリ[9]に集約されている。また、O12〜O19が第1ブロックAで実現されており、O44〜O51が第2ブロックBで実現されている。なお、第7構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in4及びin5については反転入力)の否定論理和演算を行うNORゲートG17と、入力信号in3〜in5(ただし、入力信号in3については反転入力)の否定論理和演算を行うNORゲートG18と、NORゲートG17の出力とNORゲートG18の出力との論理和演算を行うORゲートG19と、を有する。
【0075】
図16は、リコンフィギュラブルロジックブロックの第8構成例を示す図である。第8構成例では、O0〜O7、O12〜O23、及び、O28〜O31がメモリ[8]に集約され、O32〜O39、O44〜O55、及び、O60〜O63がメモリ[9]に集約されている。また、O8〜O11とO24〜O27が第1ブロックAで実現されており、O40〜O43とO56〜O59が第2ブロックBで実現されている。なお、第8構成例において、組み合わせ回路CMBは、入力信号in4及びin5(ただし、入力信号in5については反転入力)の論理積演算を行うANDゲートG20のみを有する。
【0076】
図17は、リコンフィギュラブルロジックブロックの第9構成例を示す図である。第9構成例では、O0〜O7、O12〜O19、及び、O24〜O31がメモリ[8]に集約され、O32〜O39、O44〜O51、及び、O56〜O63がメモリ[9]に集約されている。また、O8〜O11とO20〜O23が第1ブロックAで実現されており、O40〜O43とO52〜O55が第2ブロックBで実現されている。なお、第9構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in3及びin5については反転入力)の否定論理和演算を行うNORゲートG21と、入力信号in3〜in5(ただし、入力信号in4については反転入力)の否定論理和演算を行うNORゲートG22と、NORゲートG21の出力とNORゲートG22の出力との論理和演算を行うORゲートG23と、を有する。
【0077】
図18は、リコンフィギュラブルロジックブロックの第10構成例を示す図である。第10構成例では、O0〜O7とO12〜O27がメモリ[8]に集約され、O32〜O39とO44〜O59がメモリ[9]に集約されている。また、O8〜O11とO28〜O31が第1ブロックAで実現されており、O40〜O43とO60〜O63が第2ブロックBで実現されている。なお、第10構成例において、組み合わせ回路CMBは、入力信号in3〜in5の論理積演算を行うANDゲートG24と、入力信号in3〜in5(ただし、入力信号in4については反転入力)の否定論理和演算を行うNORゲートG25と、ANDゲートG24の出力とNORゲートG25の出力との論理和演算を行うORゲートG26と、を有する。
【0078】
図19は、リコンフィギュラブルロジックブロックの第11構成例を示す図である。第11構成例では、O0〜O3、O8〜O23、及び、O28〜O31がメモリ[8]に集約され、O32〜O35、O40〜O55、及び、O60〜O63がメモリ[9]に集約されている。また、O4〜O7とO24〜O27が第1ブロックAで実現されており、O36〜O39とO56〜O59が第2ブロックBで実現されている。なお、第11構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in5については反転入力)の否定論理和演算を行うNORゲートG27と、入力信号in3〜in5(ただし、入力信号in5については反転入力)の論理積演算を行うANDゲートG28と、NORゲートG27の出力とANDゲートG28の出力との論理和演算を行うORゲートG29と、を有する。
【0079】
図20は、リコンフィギュラブルロジックブロックの第12構成例を示す図である。第12構成例では、O0〜O11、O16〜O23、及び、O28〜O31がメモリ[8]に集約され、O32〜O43、O48〜O55、及び、O60〜O63がメモリ[9]に集約されている。また、O12〜O15とO24〜O27が第1ブロックAで実現されており、O44〜O47とO56〜O59が第2ブロックBで実現されている。なお、第12構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in4及びin5については反転入力)の否定論理和演算を行うNORゲートG30と、入力信号in3〜in5(ただし、入力信号in3及びin4については反転入力)の否定論理和演算を行うNORゲートG31と、NORゲートG30の出力とNORゲートG31の出力との論理和演算を行うORゲートG32と、を有する。
【0080】
図21は、リコンフィギュラブルロジックブロックの第13構成例を示す図である。第13構成例では、O0〜O3、O8〜O19、及び、O24〜O31がメモリ[8]に集約され、O32〜O35、O40〜O51、及び、O56〜O63がメモリ[9]に集約されている。また、O4〜O7とO20〜O23が第1ブロックAで実現されており、O36〜O39とO52〜O55が第2ブロックBで実現されている。なお、第13構成例において、組み合わせ回路CMBは、入力信号in4及びin5(ただし、入力信号in4については反転入力)の論理積演算を行うANDゲートG33のみを有する。
【0081】
図22は、リコンフィギュラブルロジックブロックの第14構成例を示す図である。第14構成例では、O0〜O3とO8〜O27がメモリ[8]に集約され、O32〜O35とO40〜O59がメモリ[9]に集約されている。また、O4〜O7とO28〜O31が第1ブロックAで実現されており、O36〜O39とO60〜O63が第2ブロックBで実現されている。なお、第14構成例において、組み合わせ回路CMBは、入力信号in3〜in5の論理積演算を行うANDゲートG34と、入力信号in3〜in5(ただし、入力信号in5については反転入力)の否定論理和演算を行うNORゲートG35と、ANDゲートG34の出力とNORゲートG35の出力との論理和演算を行うORゲートG36と、を有する。
【0082】
図23は、リコンフィギュラブルロジックブロックの第15構成例を示す図である。第15構成例では、O0〜O11、O16〜O19、及び、O24〜O31がメモリ[8]に集約され、O32〜O43、O48〜O51、及び、O56〜O63がメモリ[9]に集約されている。また、O12〜O15とO20〜O23が第1ブロックAで実現されており、O44〜O47とO52〜O55が第2ブロックBで実現されている。なお、第15構成例において、組み合わせ回路CMBは、入力信号in3〜in5(ただし、入力信号in4及びin5については反転入力)の否定論理和演算を行うNORゲートG37と、入力信号in3〜in5(ただし、入力信号in3及びin5については反転入力)の否定論理和演算を行うNORゲートG38と、NORゲートG37の出力とNORゲートG38の出力との論理和演算を行うORゲートG39と、を有する。
【0083】
図24は、リコンフィギュラブルロジックブロックの第16構成例を示す図である。第16構成例では、O0〜O11とO16〜O27がメモリ[8]に集約され、O32〜O43とO48〜O59がメモリ[9]に集約されている。また、O12〜O15とO28〜O31が第1ブロックAで実現されており、O44〜O47とO60〜O63が第2ブロックBで実現されている。なお、第16構成例において、組み合わせ回路CMBは、入力信号in4及びin5の論理積演算を行うANDゲートG40のみを有する。
【0084】
図25は、第1〜第16構成例におけるLUTの形成方法とメモリの集約状態を示す図である。なお、符号「A」は出力データが第1ブロックA(メモリ[0]〜[7])に各々保持されていることを示しており、符号「B」は出力データが第2ブロックB(メモリ[10]〜[17])に各々保持されていることを示している。また、符号「8」は出力データがメモリ[8]に集約されていることを示しており、符号「9」は出力データがメモリ[9]に集約されていることを示している。
【0085】
例えば、第2構成例の場合、{in0,in1,in2,in3,in4,in5}={0,−,−,0,0,0}及び{0,−,−,1,0,0}のときには第1ブロックAの出力データが出力信号outとして用いられ、{in0,in1,in2,in3,in4,in5}={1,−,−,0,0,0}及び{1,−,−,1,0,0}のときには第2ブロックBの出力データが出力信号outとして用いられる。また、入力信号の組み合わせが上記以外であるときには、メモリ[8]または[9]の格納データが出力信号outとして用いられる。
【0086】
図26は、第1〜第16構成例における論理回路のカバー率(6入力論理回路のカバー率、5入力論理回路のカバー率、及び、4入力以下も含めた全ての論理回路のカバー率)を示す図である。この表は、MCNC[Microelectronics Center of North Carolina] ベンチマーク回路(117種類)をEMapによってテクノロジマッピングを行った場合において、使用された論理回路のうち、本発明に係るリコンフィギュラブルロジックブロック(6−A2LUT)で実装可能であったものの割合を示している。なお、EMapとは、UBC[University of British Columbia]で開発された電力最適化を目的としたテクノロジマッピングツールである。
【0087】
本発明に係るリコンフィギュラブルロジックブロック(6−A2LUT)であれば、従来の6−LUTと比較して、約3分の1のメモリ数で図26に示したカバー率を実現することが可能である。
【0088】
<その他の変形例>
なお、本発明の構成は、上記実施形態のほか、発明の主旨を逸脱しない範囲で種々の変更を加えることが可能である。すなわち、上記実施形態は、全ての点で例示であって、制限的なものではないと考えられるべきであり、本発明の技術的範囲は、上記実施形態の説明ではなく、特許請求の範囲によって示されるものであり、特許請求の範囲と均等の意味及び範囲内に属する全ての変更が含まれると理解されるべきである。
【産業上の利用可能性】
【0089】
本発明は、例えば、FPGAの小面積化と低消費電力化を実現する上で有用に利用することが可能な技術である。
【符号の説明】
【0090】
100 プログラマブル論理回路装置(FPGA)
101 I/Oブロック
102 リコンフィギュラブルロジックブロック(RLB)
103 コネクションブロック(CB)
104 スイッチブロック(SB)
105 配線
1 第1ルックアップテーブル(m−LUT)
2 第2ルックアップテーブル(n−LUT)
3 組み合わせ回路
4 セレクタ
A 第1ブロック(3−LUT)
B 第2ブロック(3−LUT)
SEL0、SEL1、SEL2 セレクタ
CMB 組み合わせ回路
G(1、4、5、6、9、11、12、14、15、17、18、21、22、25、27、30、31、35、37、38) NORゲート
G(2、8、20、24、28、33、34、40) ANDゲート
G(3、7、10、13、16、19、23、26、29、32、36、39) ORゲート
【特許請求の範囲】
【請求項1】
最大K入力(x[0]〜x[K−1])のリコンフィギュラブルロジックブロックであって、
m入力(y[0]〜y[m−1]、ただしmはKよりも小さくyはxに属する)の第1ルックアップテーブルと、
n入力(z[0]〜z[n−1]、ただしnはKよりも小さくzはxに属する)の第2ルックアップテーブルと、
p入力(c[0]〜c[p−1]、ただしpはKよりも小さくcはxに属する)の組み合わせ回路と、
前記組み合わせ回路の出力に応じて前記第1ルックアップテーブルと前記第2ルックアップテーブルのいずれか一方を選択するセレクタと、
を有することを特徴とするリコンフィギュラブルロジックブロック。
【請求項2】
複数の論理回路を各々表現した真理値表を比較して、同一パターンが連続している部分を前記第2ルックアップテーブルで実装し、残りの部分を前記第1ルックアップテーブルで実装することを特徴とする請求項1に記載のリコンフィギュラブルロジックブロック。
【請求項3】
前記複数の論理回路は、K入力のルックアップテーブルでマッピングされた論理回路のうち出現確率の高いものを含むことを特徴とする請求項2に記載のリコンフィギュラブルロジックブロック。
【請求項4】
請求項3に記載のリコンフィギュラブルロジックブロックを有することを特徴とするプログラマブル論理回路装置。
【請求項5】
請求項4に記載のプログラマブル論理回路装置を対象としたテクノロジマッピング方法であって、
入力数jとして前記リコンフィギュラブルロジックブロックの最大入力数Kを設定してフローを第2ステップに進める第1ステップと;
カバリングされていないノードを探索してフローを第3ステップに進める第2ステップと;
j入力のカットがあるか否かを判定し、カットがあればフローを第4ステップに進め、カットがなければフローを第10ステップに進める第3ステップと;
j入力の部分回路にカットしてフローを第5ステップに進める第4ステップと;
jがmよりも大きいか否かを判定し、大きければフローを第6ステップに進め、大きくなければフローを第8ステップに進める第5ステップと;
前記部分回路のP代表元を算出してフローを第7ステップに進める第6ステップと;
前記P代表元に基づいて前記部分回路が前記リコンフィギュラブルロジックブロックで実装可能か否かを判定し、実装可能であればフローを第8ステップに進め、実装不可能であればフローを第3ステップに進める第7ステップと;
前記リコンフィギュラブルロジックブロックでノードのカバリングを行い、フローを第9ステップに進める第8ステップと;
全てのノードがカバリング済みであるか否かを判定し、カバリング済みであれば一連のフローを終了させ、カバリング済みでなければフローを第2ステップに進める第9ステップと;
入力数jを一つデクリメントさせてフローを第2ステップに進める第10ステップと;
を有することを特徴とするテクノロジマッピング方法。
【請求項1】
最大K入力(x[0]〜x[K−1])のリコンフィギュラブルロジックブロックであって、
m入力(y[0]〜y[m−1]、ただしmはKよりも小さくyはxに属する)の第1ルックアップテーブルと、
n入力(z[0]〜z[n−1]、ただしnはKよりも小さくzはxに属する)の第2ルックアップテーブルと、
p入力(c[0]〜c[p−1]、ただしpはKよりも小さくcはxに属する)の組み合わせ回路と、
前記組み合わせ回路の出力に応じて前記第1ルックアップテーブルと前記第2ルックアップテーブルのいずれか一方を選択するセレクタと、
を有することを特徴とするリコンフィギュラブルロジックブロック。
【請求項2】
複数の論理回路を各々表現した真理値表を比較して、同一パターンが連続している部分を前記第2ルックアップテーブルで実装し、残りの部分を前記第1ルックアップテーブルで実装することを特徴とする請求項1に記載のリコンフィギュラブルロジックブロック。
【請求項3】
前記複数の論理回路は、K入力のルックアップテーブルでマッピングされた論理回路のうち出現確率の高いものを含むことを特徴とする請求項2に記載のリコンフィギュラブルロジックブロック。
【請求項4】
請求項3に記載のリコンフィギュラブルロジックブロックを有することを特徴とするプログラマブル論理回路装置。
【請求項5】
請求項4に記載のプログラマブル論理回路装置を対象としたテクノロジマッピング方法であって、
入力数jとして前記リコンフィギュラブルロジックブロックの最大入力数Kを設定してフローを第2ステップに進める第1ステップと;
カバリングされていないノードを探索してフローを第3ステップに進める第2ステップと;
j入力のカットがあるか否かを判定し、カットがあればフローを第4ステップに進め、カットがなければフローを第10ステップに進める第3ステップと;
j入力の部分回路にカットしてフローを第5ステップに進める第4ステップと;
jがmよりも大きいか否かを判定し、大きければフローを第6ステップに進め、大きくなければフローを第8ステップに進める第5ステップと;
前記部分回路のP代表元を算出してフローを第7ステップに進める第6ステップと;
前記P代表元に基づいて前記部分回路が前記リコンフィギュラブルロジックブロックで実装可能か否かを判定し、実装可能であればフローを第8ステップに進め、実装不可能であればフローを第3ステップに進める第7ステップと;
前記リコンフィギュラブルロジックブロックでノードのカバリングを行い、フローを第9ステップに進める第8ステップと;
全てのノードがカバリング済みであるか否かを判定し、カバリング済みであれば一連のフローを終了させ、カバリング済みでなければフローを第2ステップに進める第9ステップと;
入力数jを一つデクリメントさせてフローを第2ステップに進める第10ステップと;
を有することを特徴とするテクノロジマッピング方法。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図18】
【図19】
【図20】
【図21】
【図22】
【図23】
【図24】
【図25】
【図26】
【図27】
【図28】
【図29】
【公開番号】特開2012−142662(P2012−142662A)
【公開日】平成24年7月26日(2012.7.26)
【国際特許分類】
【出願番号】特願2010−292024(P2010−292024)
【出願日】平成22年12月28日(2010.12.28)
【出願人】(504159235)国立大学法人 熊本大学 (314)
【出願人】(000116024)ローム株式会社 (3,539)
【Fターム(参考)】
【公開日】平成24年7月26日(2012.7.26)
【国際特許分類】
【出願日】平成22年12月28日(2010.12.28)
【出願人】(504159235)国立大学法人 熊本大学 (314)
【出願人】(000116024)ローム株式会社 (3,539)
【Fターム(参考)】
[ Back to top ]