(57)【要約】  再構成可能な論理演算部を再構成するコンフィグレーション情報を生成するネットリストコンバータ（２００）は、論理演算部において処理する仕様に基づき生成されたネットリスト（１３６）に含まれる各ノードに対する全てのカットの中から、カットした後のノードの数が整数ｋ以下のｋ−フィージブルカットを列挙するマッピングユニット（２１２）と、列挙されたｋ−フィージブルカットの中でエレメントに割り当てるカットを選択してエレメントを再構成するエレメント再構成情報（２３１）と、再構成されたエレメントを接続してネットリストを実現するようにデータ転送チャネルを再構成するチャネル再構成情報（２３２）とを含むコンフィグレーション情報（２３０）を生成する生成ユニット（２２０）とを有する。
2014132670.tif 000002
【特許請求の範囲】
【請求項１】
再構成可能な論理演算部を再構成する構成情報を生成する装置であって、
前記論理演算部は、再構成可能なエレメントであって、整数ｋの入力を含むエレメントと、
複数の前記エレメントの間で演算用のデータを転送するチャネルであって、再構成可能なデータ転送チャネルとを含み、
当該装置は、前記論理演算部において処理する仕様に基づき生成されたネットリストに含まれる各ノードに対する全てのカットの中から、カットした後のノードの数が前記整数ｋ以下のｋ−フィージブルカットを列挙するユニットと、
列挙されたｋ−フィージブルカットの中で前記エレメントに割り当てるカットを選択して前記エレメントを再構成するエレメント再構成情報と、再構成されたエレメントを接続して前記ネットリストを実現するように前記データ転送チャネルを再構成するチャネル再構成情報とを含む前記構成情報を生成する生成ユニットとを有する、装置。
【請求項２】
請求項１において、
前記生成ユニットは、前記エレメント再構成情報および前記チャネル再構成情報が時分割で前記論理演算部を再構成する単位に分割された前記構成情報を生成するユニットを含む、装置。
【請求項３】
請求項１または２において、前記列挙するユニットは、列挙されたｋ−フィージブルカットの重複を検出するユニットを含む、装置。
【請求項４】
ＣＰＵとメモリとを含むコンピュータにより、再構成可能な論理演算部を再構成する構成情報を生成する方法であって、
前記論理演算部は、再構成可能なエレメントであって、整数ｋの入力を含むエレメントと、
複数の前記エレメントの間で演算用のデータを転送するチャネルであって、再構成可能なデータ転送チャネルとを含み、
当該方法は、前記コンピュータが、前記論理演算部において処理する仕様に基づき生成されたネットリストに含まれる各ノードに対する全てのカットの中から、カットした後のノードの数が前記整数ｋ以下のｋ−フィージブルカットを列挙することと、
列挙されたｋ−フィージブルカットの中で前記エレメントに割り当てるカットを選択して前記エレメントを再構成するエレメント再構成情報と、再構成されたエレメントを接続して前記ネットリストを実現するように前記データ転送チャネルを再構成するチャネル再構成情報とを含む前記構成情報を生成することとを有する、方法。
【請求項５】
請求項４において、
前記生成することは、前記エレメント再構成情報および前記チャネル再構成情報が時分割で前記論理演算部を再構成する単位に分割された前記構成情報を生成することを含む、方法。
【請求項６】
請求項４または５において、列挙されたｋ−フィージブルカットの重複を検出することをさらに有する、方法。
【請求項７】
ＣＰＵとメモリとを含むコンピュータにより、再構成可能な論理演算部を再構成する構成情報を生成するプログラムであって、
前記論理演算部は、再構成可能なエレメントであって、整数ｋの入力を含むエレメントと、
複数の前記エレメントの間で演算用のデータを転送するチャネルであって、再構成可能なデータ転送チャネルとを含み、
当該プログラムは、前記コンピュータが、前記論理演算部において処理する仕様に基づき生成されたネットリストに含まれる各ノードに対する全てのカットの中から、カットした後のノードの数が前記整数ｋ以下のｋ−フィージブルカットを列挙することと、
列挙されたｋ−フィージブルカットの中で前記エレメントに割り当てるカットを選択して前記エレメントを再構成するエレメント再構成情報と、再構成されたエレメントを接続して前記ネットリストを実現するように前記データ転送チャネルを再構成するチャネル再構成情報とを含む前記構成情報を生成することとを実行する命令を含む、プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、再構成可能な論理演算部を再構成する情報を生成する装置および方法に関するものである。
【背景技術】
【０００２】
国際公開ＷＯ２００５／０２２３８０号公報には、アプリケーションを実行するための回路の少なくとも一部であるオブジェクト回路を動的に再構成可能な論理回路の一部にマッピングするためのオブジェクト回路情報と、オブジェクト回路に接するインタフェース回路を論理回路にマッピングするためのインタフェース回路情報と、インタフェース回路において実現する境界条件とを含むアーキテクチャコードを使用するデータ処理装置が記載されている。
【発明の概要】
【０００３】
回路を再構成可能な装置に実装するコンフィグレーション情報を生成する装置および方法が求められている。
【０００４】
本発明の態様の１つは、再構成可能な論理演算部を再構成する構成情報を生成する装置である。論理演算部は、再構成可能なエレメントであって、整数ｋの入力を含むエレメントと、複数のエレメントの間で演算用のデータを転送するチャネルであって、再構成可能なデータ転送チャネルとを含む。当該装置は、論理演算部において処理する仕様に基づき生成されたネットリストに含まれる各ノードに対する全てのカットの中から、カットした後のノードの数が整数ｋ以下のｋ−フィージブルカットを列挙するユニットと、列挙されたｋ−フィージブルカットの中でエレメントに割り当てるカットを選択してエレメントを再構成するエレメント再構成情報と、再構成されたエレメントを接続してネットリストを実現するようにデータ転送チャネルを再構成するチャネル再構成情報とを含む構成情報を生成する生成ユニットとを有する。
【０００５】
生成ユニットは、エレメント再構成情報およびチャネル再構成情報が時分割で論理演算部を再構成する単位に分割された構成情報を生成するユニットを含むことが望ましい。列挙するユニットは、列挙された複数のｋ−フィージブルカットの重複を検出するユニットを含むことが望ましい。
【０００６】
本発明の他の態様の１つは、ＣＰＵとメモリとを含むコンピュータにより、再構成可能な論理演算部を再構成する構成情報を生成する方法である。当該方法は、以下のステップを含む。
１．コンピュータが、論理演算部において処理する仕様に基づき生成されたネットリストに含まれる各ノードに対する全てのカットの中から、カットした後のノードの数が整数ｋ以下のｋ−フィージブルカットを列挙すること。
２．列挙されたｋ−フィージブルカットの中でエレメントに割り当てるカットを選択してエレメントを再構成するエレメント再構成情報と、再構成されたエレメントを接続してネットリストを実現するようにデータ転送チャネルを再構成するチャネル再構成情報とを含む構成情報を生成すること。
【０００７】
生成するステップは、エレメント再構成情報およびチャネル再構成情報が時分割で論理演算部を再構成する単位に分割された構成情報を生成するユニットを含むことが望ましい。さらに、この方法は、列挙されたｋ−フィージブルカットの重複を検出することを有することが望ましい。この方法は、ＣＰＵとメモリとを含むコンピュータにより、再構成可能な論理演算部を再構成する構成情報を生成するプログラム（プログラム製品）として提供できる。プログラムは、上記の各ステップを実行する命令を含む。
【図面の簡単な説明】
【０００８】
【図１】データ処理装置のブロック図。
【図２】ＤＲＰサブシステム（ＡＮＲ）の概略構成を順次拡大して示す図。
【図３】サイクル単位で回路が再構成される様子を示す図。
【図４】ＡＮＲのデータの流れを示す図。
【図５】異なるデータの流れを示す図。
【図６】ＡＮＲの配線チャネルが時分割で使われる様子を示す図。
【図７】ＡＮＲ−ＢＡＳＥモジュールの概要を示す図。
【図８】ＡＮＲ−Ｃ１×４モジュールの概要を示す図。
【図９】ＡＮＲ−Ｃ１モジュールの概要を示す図。
【図１０】配線チャネルセルの概要を示す図。
【図１１】配線チャネルセルを示す図。
【図１２】配線チャネルセルをワイヤードロジックで示す図。
【図１３】異なる配線チャネルセルを示す図。
【図１４】配線チャネルセルのネットワークを示す図。
【図１５】時分割でスライスして論理を実装する例。
【図１６】データ処理装置をプラットフォームとしてアプリケーションを実装する例。
【図１７】設計フローの例。
【図１８】ネットリストコンバータの概略構成を示すブロック図。
【図１９】ＬＵＴを用いて論理回路を実装する例。
【図２０】ネットリストをＡＮＲに実装する例。
【図２１】異なるネットリストを実装する例。
【図２２】ネットリストコンバータにおいてコンフィグレーション情報を生成する概略の過程を示すフローチャート。
【図２３】ブーリアンネットワークによる最適化の例。
【図２４】カット（ノードの組み合わせ）で分離した論理をＬＵＴに実装する様子を示す図。
【図２５】カットを探索する方法を示す図。
【図２６】ＲＴＬの例を示す図。
【図２７】ネットリストの例を示す図。
【図２８】データ・フロー・グラフの例を示す図。
【図２９】ノードのマッピング情報の例を示す図。
【図３０】パッキングアルゴリズムを示す図。
【図３１】最適化されたマッピング情報の例を示す図。
【発明の実施の形態】
【０００９】
図１に、再構成可能な回路（ＤＲＰサブシステム）１０を含むデータ処理装置１の概要を示している。この装置１は、ＯＳをフラッシュメモリからブートするタイプであり、メインメモリとしてＤＤＲ３−ＤＲＡＭ２ａを含む。この装置１は、たとえば、ＰＯＰ（Ｐａｃｋａｇｅ  Ｏｎ  Ｐａｃｋａｇｅ）あるいはその他の方式で量産できる。装置１は、ＡＭＢＡ３．０などの内部バスアーキテクチャを採用したバス（ＡＸＩバス）２ｃと、ＣＰＵ（ＣＰＵコア）２ｂと、バス２ｃによりＰＵＣ２ｂと接続されたＤＲＰサブシステム１０とを含む。ＤＲＰサブシステム１０は、再構成用の情報（コンフィグレーション情報）を格納するコンフィグレーションメモリ１０ｍを含む。
【００１０】
この装置１においては、ＤＲＰサブシステム１０として本願の出願人が新たに開発したシステム（ＡｘｉｏＮｉｐｅＲ）が採用されている。ＤＲＰサブシステム１０は、適当な数の入出力を含み論理演算をサイクル単位で変更（再構成）できる複数の論理エレメント（エレメント）を含み、部分的にサイクル単位で再構成が可能なものであれば良い。本例のＤＲＰサブシステム（ＡｘｉｏＮｉｐｅＲ）１０は、縦横にそれぞれ６４個のエレメントが配置されたマトリクス（アレイ）を備えている。
【００１１】
装置１は、さらに、ＵＳＢコントローラ２ｒ、高精細度メルチメディアインターフェースコントローラ２ｄ、セキュリティエンジンコントローラ２ｅ、ＬＡＮコントローラ２ｆ、ＤＭＡコントローラ２ｇ、ＰＣＩコントローラ２ｈ、ＳＤＸＣコントローラ２ｉ、ＳＡＴＡコントローラ２ｊ、ＭＩＰＩインターフェース・コントローラ２ｋ、ＬＣＤＣコントローラ２ｌ、ＮＡＮＤフラッシュコントローラ２ｍ、周辺機能２ｎ、周辺機能用レジスタ２ｏ、ＩＮＴＣコントローラ２ｓとを含み、これらは内部バス２ｃおよびブリッジ回路２ｐ、２ｑを介して接続されている。
【００１２】
本例のＤＲＰサブシステム（ＡｘｉｏＮｉｐｅＲ、以降ではＡＮＲ）１０は動的再構成可能なプロセサ（Ｄｙｎａｍｉｃ Ｒｅｃｏｎｆｉｇｕｒａｂｌｅ Ｐｒｏｃｅｓｓｏｒ）であり、細粒度（Ｆｉｎｅ Ｇｒａｉｎ）の構成を持つアレイを含む。装置１にＡＮＲ１０を実装することで、比較的規模の大きな並列データ処理が期待される化学物質分析のような分野では、分析処理の各ステージで纏まった並列データ処理を行うとともに、他の処理にも資源を時分割であるいは並列に使用できる。たとえば、ＡＮＲ１０として、最大実行性能の要求されるハードウェア面積を準備しておき、これを最大として、他の処理をある順序で並列処理するという手法は、極めて経済的である。並列データ処理が順次確定して進む場合は特に有用である。
【００１３】
また、将来的にシステム要求や性能ＵＰ要求があった場合に、ソフトウェア的修正や改良を行い、ハードウェア実装そのものを変更したような効果が得られる。実際に、将来的な変更を許容可能なＬＳＩのニーズは極めて大きくシステム実装リスクを極端に低減し、ハードウェア開発期間を実質的に短期化する。異なる処理あるいはアプリケーションを共通の演算装置で行おうとするプラットフォーム戦略において、開発の短期化と、顧客要求に柔軟に応えるという重要なメリットが得られる。
【００１４】
細粒度の構成を持つリコンフィギュラブルデバイスとして一般的にＦＰＧＡが知られているが、ＡＮＲ１０は、ＦＰＧＡが持つ効率の悪さと動作周波数の低さという問題を解決し、また、粗粒度の構成のリコンフィギュラブルデバイスの柔軟性の低さを解消する。
【００１５】
図２にＡＮＲ１０の概要を示している。図２は、装置１からＡＮＲ１０の一部であり、複数のセル１１を含む領域（タイル）１９を拡大し、さらに、セル１１の概略構成を拡大して示している。１つのセル１１は複数（最大８または１６）の再構成用の情報単位（コンフィギュレーション情報）を持ち、それらを１クロックで動的に切り替えながら回路を生成する。それぞれのセル１１は、１クロック、たとえば１ｎｓ後は、別の論理演算ユニット（論理演算回路）として動作可能であり、見かけ上、１つのセル１１が複数の多重化された回路モジュールとして機能する。
【００１６】
ＡＮＲ１０は、シンメトリックなネットワークトポロジをとり、隣接セル間接続チャネルおよび、離れたセル間のグローバル接続チャネル２０により、データはセル１１の上下、左右いずれの方向にも転送可能である。以下では２次元にセル１１が配置された例を説明するが、セル１１は３次元に配置されていてもよく、接続チャネル２０も３次元的な構造を備えていてもよい。さらに、接続チャネル２０は配線のように基板などに固定されたものであってもよく、可視光通信などの光通信のように空間を信号が伝搬するものであってもよく、さらに、接続チャネル２０は固定化された経路を持たず、セル１１の間をダイナミックに再構成可能に接続するものであってもよい。
【００１７】
グローバル接続チャネル２０は、時間分割による多重化で信号（データ）を伝送するシステムを含み、チャネル２０の使用率を上げるとともに配線コストをさげる。チャネル接続のスケジューリングは回路生成と同様に、以降で詳述するデータフロー解析により、プリスケジューリングされる。データ転送方式は、ラベルの付いたパケットデータ転送方式であってもよく、データ創出、受取タイミングの指示によるシンプルな構造のデータ転送方式でもよい。グローバス接続チャンネル２０は、動的イベントにより生成された回路のデータ転送のため帯域を確保することが望ましく、ＡＮＲ１０において動的イベントによる回路生成を可能とする。
【００１８】
ＡＮＲ１０の各セル（エレメント、論理演算エレメント）１１は多重化され、１クロック（１ｎｓ）単位でコンフィギュレーション可能な構成を持つ。必要なコンフィギュレーションを指定することで、あらかじめ設定されたコンフィギュレーションメモリ１０ｍを参照することで、任意の回路構成が可能となる。
【００１９】
図３に、実際のコンフィギュレーション変更による回路を再構成する例を示す。構成変更はセル１１の単位でも、複数のセル１１を含む単位でも可能である。再構成する機能モジュール（構成モジュール）に応じて、複数のセルを１個のモジュールの単位（タイル）１９として扱うことができる。
【００２０】
図３においては、タイル１９が、最初の１クロック目（ｎクロック）は加算回路１８ａとして機能し、２クロック目（ｎ＋１クロック）ではデコーダ回路１８ｂとして機能し、３クロック目（ｎ＋２クロック）ではシフタ回路１８ｃとして機能するように再構成される。たとえば、タイル１９の外部または内部に演算結果を格納するレジスタを設けることにより、各クロックで演算した入出力データ１８ｘは再構成される機能を超えて伝搬（入出力）することが可能であり、物理的に同一のタイル１９をシームレスに複数の論理機能で多重化することが可能である。したがって、多数の、あるいは複雑な論理演算を行うために要求される回路規模を削減できる。もちろん、物理的に同一でないタイル１９に複数の論理機能を時分割にあるいは並列に実装することも可能であり、また、物理的に一部重複するようなタイル１９や、実装するタイル１９の大きさを変えて再構成することも可能である。
【００２１】
ＡＮＲ１０においては図４、５および６に示すように、データ３１の流れも多重化されている。あるセル１１に入出力されるデータの方向は、セル１１同士およびセル１１とグローバル接続チャネル２０の間を接続する接続間チャネル２８により制御できる。接続間チャネル２８の一例はクロスバースイッチであり、内部クロスバースイッチにより、同時に２つのコンポーネント（セル１１、グローバル配線チャネル２０）への出力および入力の制御が可能である。グローバル配線チャネル２０は、セル１１間を跨いだデータ転送を行う配線チャネル２９を含む。配線チャネル２９は、縦方向２チャンネル、横方向２チャンネルを含む。グローバル配線チャネル２０はセル１１のコンフィギュレーション情報と同様に各セル１１の間で決められたタイムスロットを利用することで、複数のセル１１の間のデータ転送を１つのチャネルを多重化して行うことができる。
【００２２】
図４に示したタイル１９は、データ３１がセル１１の下方向かつ右方向に流れるように構成されている。図５に示したタイル１９は、データ３１がセル１１の左方向かつ上方向に流れるように構成されている。
【００２３】
図６はタイミングチャートを用いて、横方向の配線チャネルＸ６と、縦方向の配線チャネルＹ２において多重化されている様子を示している。図６（ａ）は、セルＣ３３とセルＣ１１との間でデータ交換が行われる処理（論理演算）と、セルＣ３２とセルＣ２１との間でデータ交換が行われる処理とを時分割で物理的に同じタイル１９に構成することを示している。図６（ｂ）は配線チャネルＸ６およびＹ２の占有を示すタイミングチャートであり、セルＣ３３とセルＣ１１との間でデータ交換が行われる処理（論理演算）が構成されるスロットＴＳ１と、セルＣ３２とセルＣ２１との間でデータ交換が行われる処理が構成されるスロットＴＳ３とにより、同一の配線チャネルＸ６およびＹ２が時分割で占有されることを示している。
【００２４】
論理演算部であるＡＮＲ１０は、論理演算動作（ファンクション動作）を規定するセル（エレメント、ファンクションセル）１１とセル１１間のデータ転送制御を行う配線チャネルセル２０とを含む。複数のセル１１を含むタイル１９あるいはマトリクスであるＡＮＲ１０に実装される論理演算は多くの場合、回路構成として認識される。しかしながら、ＡＮＲ１０においては、クロック単位で構成を変更できるので、意味のある、すなわち、論理演算が明確に把握できる回路が構成されている必要はなく、所定のクロックが経過した後（所定のレイテンシで）、所定の論理演算結果が得られるように、タイル１９またはＡＮＲ１０が構成されればよい。各セル１１は対称性を持っており、複数のセル１１をＮ個×Ｍ個という単位でタイル状（マトリクス状）に接続してＡＮＲ１０を構成できる。
【００２５】
個々のセル１１は、コンフィグレーション情報（再構成情報、ファンクションコンフィギュレーション情報）により、動的に回路動作が規定される。個々のセル１１が独立して再構成されてもよく、複数のセル１１が同期して再構成されてもよい。セル１１は、最小時間１クロック（１サイクル）で論理演算（回路構成）が再構成され、再構成された論理演算が使用可能となる。セル１１は、複数クロックにわたり同一の論理演算を行うように設定することも可能であるが、１クロックで同じ論理演算を行うように再構成されているというように理解してもよい。
【００２６】
図７、８および９にＡＮＲ１０に採用されているセル１１の階層的な構成を示している。図７（ａ）は、セル（エレメント）１１の構成を示す。セル１１は、ＡＮＲ−ＢＡＳＥモジュール１４とも称される。ＡＮＲ−ＢＡＳＥモジュール１４は、ＡＮＲ１０のファンクションセルのトップモジュールとなり、４つのＡＮＲ−Ｃ１ｘ４モジュール１３と、３種の固定補助論理モジュール１４ｂと、補助論理モジュール１４ｂの出力を選択するセレクタ１４ｃと、セレクタ１４ｃを制御することで補助演算の内容を制御（決定）する補助演算コンフィグレーション選択ユニット１４ａとを含む。補助論理モジュール１４ｂでサポートされる固定補助論理は特定されないが、加算演算のためのキャリールックアヘッド、デコーダの向けの補助論理が含まれる。
【００２７】
図７（ｂ）に、ＡＮＲ−ＢＡＳＥモジュール１４の端子表を示す。ＡＮＲ−ＢＡＳＥモジュール１４は４ビット×４入力、４ビット×４出力の論理動作を行うことができるモジュール（エレメント）である。再構成される論理動作は、コンフィグレーション指定アドレスＣＲＡで指定される。再構成するためのコンフィグレーション情報（コンフィグレーション設定情報）ＣＷＤは適当なタイミングで各ＡＮＲ−ＢＡＳＥモジュール１４に転送され、コンフィグレーション設定アドレスＣＷＡで指定されたコンフィグレーションメモリのアドレスに事前に書き込まれ、コンフィグレーション指定アドレスＣＲＡにより読み出される。
【００２８】
図８（ａ）にＡＮＲ−Ｃｘ４モジュール１３の構成を示す。ＡＮＲ−Ｃｘ４モジュール１３は、４個のＡＮＲ−Ｃ１モジュール１２から構成され、４ビット×１入力（１ビット４入力）、４ビット×１出力の論理動作を行う。図８（ｂ）はＡＮＲ−Ｃｘ４モジュール１３の端子表である。
【００２９】
図９（ａ）に、ＡＮＲ−Ｃ１モジュール１２の構成を示す。ＡＮＲ−Ｃ１モジュール１２は、３ビットのファンクションコンフィギュレーション情報ＣＷＡで規定された論理演算を行う１ビット×４入力−１ビット×１出力の論理演算エレメントである。ＡＮＲ−Ｃ１モジュール１２は１７ビット×１６ワードの容量のコンフィグレーションメモリ（コンフィグレーションＲＡＭ）１２ａと、コンフィグレーション指定アドレスＣＲＡが入力される読み出し側のアドレスデコーダ１２ｂと、コンフィグレーション設定アドレスＣＷＡが入力される書き込み側のアドレスデコーダ１２ｄと、コンフィグレーション設定情報ＣＷＤが入力されるデータ入力インタフェース１２ｃと、入力データＡをコンフィグレーション指定アドレスＣＲＡにより選択された論理により演算した結果が出力される出力側のセレクタ１２ｅと、演算結果の出力Ｘを組合せ回路出力とするか、ＦＦ１２ｇによりタイミングを切った順序回路として出力するかを選択するセレクタ１２ｆとを含む。
【００３０】
図９（ｂ）のタイミングチャートは、コンフィグレーション指定アドレスＣＲＡが供給されるタイミングと、入力Ａが供給されるタイミングと、それにより選択された論理演算結果Ｘが出力されるタイミングとを示している。図９（ｃ）は、ＡＮＲ−Ｃ１モジュール１２を端子表も示す。
【００３１】
ＡＮＲ−Ｃ１モジュール１２には、コンフィギュレーション情報として、４入力（４ビット入力）に対する１６種の「０／１」パターンからなる値を設定することで、任意の論理演算を行う組み合わせ回路が実現（実装）できる。ＡＮＲ−Ｃ１モジュール１２は、ファンクションコンフィギュレーション情報ＣＲＡで規定された４入力−１出力の回路構造を基本セルとし、組合せ回路として出力するか、ＦＦ１２ｇによりタイミングを切った順序回路として出力するかを選択できる。コンフィギュレーション情報ＣＷＤは最大１６種類までＲＡＭ（またはＦＦ）１２ａに格納でき、格納されたコンフィギュレーション情報ＣＷＤはコンフィグレーション指定アドレスＣＲＡにより１クロックで切り替え可能である。したがって、ＡＮＲ−Ｃ１モジュール１２は、１クロックで論理を動的再構成できる論理演算エレメントである。
【００３２】
図８（ａ）に示したＡＮＲ−Ｃｘ４モジュール１３は、同一入力信号（４本）ＡをもったセルＡＮＲ−Ｃモジュール１２を４個組み合わせて１エレメントとする。図７（ａ）に示したＡＮＲ−ＢＡＳＥモジュール１４は、図８（ａ）で示した、４つのＡＮＲ−Ｃｘ４モジュール１３で１つのファンクションセルを構成する。コンフィギュレーション情報ＣＷＤの切り替え制御は、コンフィグレーション指定アドレスＣＲＡをＣＰＵ２ｂなどの外部コントローラから外部イベント等に基づいて供給して行ってもよく、ＡＮＲ１０の内部でコンフィグレーション指定アドレスＣＲＡを発生させて自律的に行ってもよい。コンフィギュレーション情報ＣＷＤの切り替え制御は、ＡＮＲ−ＢＡＳＥモジュール１４、ＡＮＲ−Ｃｘ４モジュール１３および／またはＡＮＲ−Ｃ１モジュール１２の内部でコンフィグレーション指定アドレスＣＲＡを所定の順番で、または、イベントによりサイクリックに生成して切り替えてもよい。
【００３３】
ファンクションコンフィギュレーション情報ＣＷＤは所定のアプリケーション、機能、論理を実行する前に外部メモリより専用バスによりローディングされる。コンフィギュレーション情報ＣＷＤを配送する専用の配線を設けてもよく、データ転送配線チャネル２０を兼用してもよい。メモリ１２ａ内のコンフィギュレーション情報ＣＷＤも繰り返し使用することによりコンフィグレーション情報ＣＷＤの書換えに要するハードウェアおよび時間的なコストを削減できる。コンフィグレーション情報ＣＷＤの書換えは、２ポートＲＡＭなどを用いることによりファンクションセル１１の実行時およびアイドル時のいずれにおいても変更可能である。
【００３４】
図１０に配線チャネルセル（ＡＮＲ−ＣＯＲＥ）２１の接続構成を示す。ＡＮＲ−ＣＯＲＥ２１は、ファンクションセル１１（ＡＮＲ−ＢＡＳＥモジュール１４）と、セル１１の出力データを隣接するファンクションセル１１、もしくは１セル以上離れたファンクションセル１１に転送するための配線チャネル２７とを含む。ＡＮＲ−ＣＯＲＥ２１は、さらに、グローバル配線チャネル２０との接続回路を含む。配線チャネル２７およびグローバル配線チャネル２０による転送元の選択、転送タイミングの指定は配線コンフィギュレーション情報により、動的に変更され、最小１クロックで転送元の選択変更が可能となる。
【００３５】
配線チャネルセル（ＡＮＲ−ＣＯＲＥ）２１は、内部にファンクションセル１１（ＡＮＲ−ＢＡＳＥ１４）が含まれ、ＡＮＲ１０としては、配線チャネルセル２１をタイル状に接続して構成される。ＡＮＲ−ＣＯＲＥ２１の基本的な機能は以下の通りである。
【００３６】
・隣接する上下左右の４つのファンクションセル１１からの出力データ（各１６ビット）を取り込み、配線コンフィギュレーション情報によりそれらを選択して、自ファンクションセル１１の入力とする。
【００３７】
・セル１１の間をまたぐデータ転送のためにグローバル配線チャネル２０を設置する。ＡＮＲ−ＣＯＲＥ２１の単位で管理（接続）されるグローバル配チャネル２０は上下方向に２本２０ｄおよび２０ｕ、左右方向に２本２０ｌおよび２０ｒであり、それぞれのチャネル２０はデータ転送の方向性（上から下、下から上、右から左、左から右）を備えていてもよい。
【００３８】
・グローバル配線チャネル２０上のデータにはタグ情報等は含まれず、転送元のＡＮＲ−ＣＯＲＥ２１の送出タイミングと、転送先のＡＮＲ−ＣＯＲＥ２１の受取タイミングを合わせることでデータ転送を行う。グローバル配線チャネル２０の中で占有されることになる配線チャネルにデータを出力可能なファンクションセル１１は1つのタイムスロットに1個のみである。そのスケジューリングはコンフィギュレーション情報と連動して行われる。
【００３９】
・グローバル配線チャネル２０は複数のセル１１からドライブ可能であり、スケジューリングによりコンフィリクションを避ける。マルチプルドライブの物理的手段は実際に使用するプロセステクノロジー、セル仕様等により決定される。たとえば、ワイヤードＯＲ構成を採用できる。
【００４０】
・配線チャネルセル（ＡＮＲ−ＣＯＲＥ）２１は内部にグローバル配線チャネル２０同士を接続するブリッジ機構を持つ。これより、左右の配線チャネル２０ｌまたは２０ｒからのデータを、上下の配線チャネル２０ｄまたは２０ｕに転送でき、逆方向も可能となる。
【００４１】
配線チャネルセル２１には隣接するファンクションセル１１から４本、グローバル配線チャネル２０から４本が入力され、各入力は１６ビットバス方式である。したがって、ＡＮＲ−ＣＯＲＥ２１には計１２８本の入力信号が接続される。これを完全に自由に選択させると１２８：１のセレクタが１６本（それぞれ個別に選択）必要になる。このため、現状以下の２つの制約を加えることで回路規模を抑えている。
【００４２】
・エレメント単位（ＡＮＲ−Ｃｘ４）１３の出力は、対エレメントに対して固定入力とする。例えば各エレメント１３のビット０の出力はエレメント入力のビット０に、ビット１はビット１にしか接続されない。これにより、接続関係は３２：１になる。ただし、エレメントのビット位置関係は固定されるが、接続対象となっている位置のビットにコンフィギュレーションを移動することで、実質的な論理的制約にはならない。
【００４３】
・同一方向からの隣接配線チャネル２７とグローバル配線チャネル２０はエレメント単位で切り替える。
【００４４】
ＡＮＲ−ＢＡＳＥモジュール１４は、隣接モジュール１４からの入出力４本とグローバル配線チャネルの入出力４本とのインタフェースを持つ。ＡＮＲ−ＣＯＲＥ２１は内部にもつ配線コンフィギュレーション情報をもとに必要な転送元のデータが必要なタイミングで参照される。
【００４５】
図１１に配線チャネルセル（ＡＮＲ−ＣＯＲＥ）２１の接続構成を示す。ＡＮＲ−ＣＯＲＥ２１は、ＡＮＲ−ＢＡＳＥモジュール１４と、インタフェース２１ａとを含む。インタフェース２１ａは、ＡＮＲ−ＢＡＳＥモジュール１４に対して隣接モジュール１４から配線チャネル２７を経由した入出力４本のインタフェースと、グローバル配線チャネル２０の入出力４本のインタフェースとを含む。ＡＮＲ−ＣＯＲＥ２１内にもつ配線コンフィギュレーション情報をもとに必要な転送元のデータが必要なタイミングで参照される。ＡＮＲ−ＢＡＳＥ１４への入力１６本は、原則、１ビット単位で隣接モジュール１４からの信号およびグローバル配線チャネル２０からの信号から選択可能である。
【００４６】
図１２に配線チャンネルセル２１におけるＡＮＲ−ＢＡＳＥモジュール１４とグローバル配線チャネル２０との接続構成を示す。グローバル配線チャネル２０は配線チャネルセル２１に対して４方向から入力し、同一方向に出力する。グローバル配線チャネル２０との接続インタフェース２１ａは、複数の配線チャネルセル２１からデータが出力されるため、論理的にはワイヤードＯＲ形式の構成が採用される。接続インタフェース２１ａは、ＡＮＲ−ＢＡＳＥモジュール１４からの出力を選択する出力制御ユニット２１ｂと、出力制御ユニット２１ｂにより選択された出力とグローバル配線チャネル２０により伝達される信号とが入力されるＯＲゲート２１ｃとを含む。
【００４７】
出力制御ユニット２１ｂには、方向の異なるグローバル配線チャネル２０からの信号が入力されている。したがって、接続インタフェース２１ａは、自セルからの出力の他、上下方向のグローバル配線チャネル２０には左右方向からのデータの出力、左右方向のグローバル配線チャネル２０には上下方向からのデータを出力してドライブする機構を持つ。接続インタフェース２１ａは、コンフィギュレーション設定時に割り当てられたタイムスロットのみ自セル２１のデータまたは、異方向のグローバル配線チャネル２０のデータを出力する。コンフィギュレーション設定時にタイムスロットの割り当ても行われる。
【００４８】
ＡＮＲ１０の大きな特長の一つは配線チャネルの有効利用である。従来のＦＰＧＡでは、ポイントとポイントとの間のコネクションが必要であると、そのデータ転送の有無にかかわらず、配線チャネルを確保してワイヤリングコストを上げてしまう。ＡＮＲ１０は配線チャネルの時分割による多重利用が可能である。ファンクションセル１１の再構成により、柔軟性を高め、かつ論理量、配線量を下げることで、コストパフォーマンスの高いシステムを構築する。これを実現するには、ＡＮＲ１０のハードウェア（チップ）のみならず、アプリケーションのデータフロー解析による多重化プロセスの抽出や、緻密なデータ転送スケジューリングなど、高度なソフトウェア処理が要求される。
【００４９】
配線チャネルセル２１は、配線チャネルセル２１に含まれるＡＮＲ−ＢＡＳＥモジュール１４、接続インタフェース２１ａなどの構成を制御する構成制御ユニット５０を含む。構成制御ユニット５０は、コンフィグレーション情報２３０が格納されるコンフィグレーションメモリ１０ｍを含む。コンフィグレーション情報２３０は、後述するように、エレメント再構成情報２３１と、チャネル再構成情報２３２とを含む。
【００５０】
図１３（ａ）に配線チャネルセル２１の異なる例を示している。この配線チャネルセル２１の接続インタフェース２１ａはアンドゲート２１ｄをさらに含み、図１３（ｂ）に等価なゲート回路で示しているように、前段からの配線チャネルの出力が加わり、自セル２１からの出力、上下方向のグローバル配線チャネル２０には左右方向からのデータの出力、左右方向のグローバル配線チャネルには上下方向からのデータ出力の計４本から1つを選択してデータをドライブする機構を持つ。
【００５１】
図１０に示したように、ＡＮＲ１０は各セル（ＡＮＲ−ＢＡＳＥモジュール）１４の上下左右４方向に直接データ転送可能なローカル配線チャネル２７を含む。したがって、隣接するセル（ＡＮＲ−ＢＡＳＥモジュール）１４にデータ転送を行うケースにも容易に対応できる。さらに、データを出力したセル１４に対して、そのデータ演算結果を、ローカル配線チャネル２７を通して、折り返して転送できる。データが折り返されたセル１４（１１）は次のタイミングで別ファンクションに再構成された演算を行う。データの折り返しが可能になるため、ファンクションセル１４（１１）の物理的に、局所化した配置が可能となり、マッピングのグルーピング化が容易になる。
【００５２】
配線チャネルセル２１には隣接するファンクションセル１１からのローカル配線チャネル４本、グローバル配線チャネル２０から４本がそれぞれ、１６ビットバスで入力とすると、計１２８本の入力信号が接続される。これを完全に自由に選択させると１２８：１のセレクタが１６本（それぞれ個別に選択）必要になる。以下の２つの条件を加えることで回路規模を抑えてもよい。
【００５３】
・エレメント単位（ＡＮＲ−Ｃｘ４）１３の出力は、対エレメントに対して固定入力とする。例えば各エレメントのビット０の出力はエレメント入力のビット０に、ビット１はビット１にしか接続されない。これにより、接続関係は３２：１になる。これにより、エレメントのビット位置関係は固定されるが、接続対象となっている位置のビットにコンフィギュレーションを移動することで、実質的な論理的制約にはならない。
【００５４】
・同一方向からのローカル配線チャネル２７とグローバル配線チャネル２０はエレメント１３の単位で切り替える。データの局所性から、同一方向からのローカル配線チャネル２７とグローバル配線チャネル２０の混在の可能性は少ない。
【００５５】
図１４にＡＮＲ１０のネットワーク構成を示している。ＡＮＲ１０はファンクションセル１１を含む配線チャネルセル２１を基本構成とする。ＡＮＲネットワーク１０ａの構成は６４ｘ６４を基本とするが、これに限定されない。ＡＮＲ１０はデータ論理演算とデータ転送のコンビネーションが基本動作となる。そのため、ＡＮＲ１０には、入力データの供給回路と出力データの格納回路、及び、コンフィギュレーション情報の供給回路が必要となる。それら機能はＡＮＲインタフェースモジュール（ＡＮＲ−ＩＦ）１０ｂで実現する。また、ＡＮＲ−ＩＦ１０ｂはＡＸＩバスインタフェースモジュール（ＡＸＩ−ＡＮＲ−ＩＦ）１０ｃを経由してデジタルチップのメインバスであるＡＸＩバス２ｃを通じて、ＤＤＲ−ＲＡＭ２ａからデータおよびコンフィギュレーション情報の転送を行う。
【００５６】
ＡＮＲ−ＩＦ１０ｂはＡＮＲネットワーク１０ａの周辺部の配線チャネル２１とグローバル配線チャネル２０とに接続する。ＡＮＲ−ＩＦ１０ｂは外部に対しては、ＡＸＩバス１０ｃもしくは専用Ｉ／Ｏ経由でデータ転送を行う。コンフィギュレーション情報の転送はグローバル配線チャネル２０を共有して行うが、転送用の専用チャネルを設けてもよい。ＡＮＲ−ＩＦ１０ｂはモジュール内部に入出力用の２ｋバイトのバッファを持ち、最大で１６ビット（１ＧＨｚ）のバースト転送でＡＮＲ１０とデータの入出力を行う。
【００５７】
コンフィギュレーション情報はＤＤＲ−ＲＡＭ２ａに格納されたものを、グローバル配線チャネル２０を経由してファンクションセル２１（１１）と配線チャネル２０に供給する。コンフィギュレーション情報は起動開始前に各セル２１に転送してもよく、起動開始後、動作中に転送してもよい。アプリケーション全体で必要とされる論理回路、データフローの解析はソフトウェアにより最適化され、起動開始前に可能な限りコンフィギュレーション情報を各セル２１のコンフィグレーションメモリ転送しておき、起動開始後はコンフィギュレーション情報のデータ転送量を抑えることが望ましい。
【００５８】
図１５にＡＮＲ１０の基本動作を確認するモデルを示している。動作モデルは、４ビット入力２本、４ビット出力１本のモジュールで６つのコンフィギュレーションを変更することで、それぞれ加算器、減算器、デコーダなどとして動作させることを示している。このモデルは、加算器の部分を基本セル（ＡＮＲ−Ｃ１）１２にマッピングしたものである。今回のマッピングでは２段のスライス（スライス１およびスライス２）に分けたことにより、物理的に同一のセル１３を論理実行後に別の論理に再構成する。
【００５９】
図１６に、ＡＮＲ１０を備えたデータ処理装置１を含むシステム（ＯＬＰ）１００の一例を示している。このシステム１００は、ＦＡＩＭＳなどのセンサーから得られたデータ１０１を解析するシステムであり、ＡＮＲ１０に様々な機能を時分割または並列に実装することが可能である。このシステム１００は、様々なアプリケーションのプラットフォームとして使用できる。アプリケーションのいくつかの例は、ヘルスケアモニタリング１００ａ、プロセスモニタリング１００ｂ、セキュリティーモニタリング１００ｃ、コンシューマー向けの匂いビジネスアプリケーション１００ｄである。装置１には、ＦＡＩＭＳ（イオン移動度センサー）、ＭＳ（質量センサー）などのセンサーから得られるデータ１０１の他に、温度、湿度、圧力、周辺画像、ＧＰＳなどの補助センサーデータ１０２と、サンプリングシステムのデータ、たとえば、サンプリングタイム、サンプリング対象に関するデータ１０３が入力される。
【００６０】
ＡＮＲ１０には、たとえば、測定対象物のカテゴリーなどを判断して解析条件を設定するパーサ１１０と、ベースライン補正などのデータ補正を行うユニット１１１と、ピークを規格化したり、ノイズを低減するユニット１１３と、センサーデータ１０１に含まれるピークを検出したり分離するユニット１１４と、分離されたピークから種類（性質、属性）および量を判断する分析エンジン１１５と、ＳＯＭ（自己組織化写像）、ニューラルネットワークなどの手法を用いて分析エンジン１１５において得られた情報から測定元の化学物質を類推または分類するエンジン１１６と、装置内部のデータベースまたはネットワークを経由してデータベースサーチを行い、測定対象の化学物質を判断するユニット（機能）１１７が、時分割でマッピングされる。
【００６１】
ＣＰＵ２ｂは、ＡＮＲ１０の再構成を支援すると共に、ＡＮＲ１０における処理を支援するための機能を実現する。たとえば、ＣＰＵ２ｂは、参照データベースにアクセスする機能１２４、クラウド（ＬＡＮ）にアクセスする機能１２３、ユーザーインタフェース機能１２２、データ取得制御機能１２１を提供する。これらの機能は、ＡＮＲ１０の空きスペースや空き時間を用いてＡＮＲ１０に実装することも可能である。
【００６２】
リアルタイムで化学物質を検出および分析のためには大規模並列データ処理エンジンが要望される。リアルタイムで化学物質を検出および分析することにより、疾患検出のバイオマーカの同定や定量化、健康状態あるいは生体機能の監視、遠隔監視技術による管理医療の提供といった画期的なサービスをユーザーに提供することが可能となる。そのためのプラットフォームは、知的であり、拡張可能であり、さまざまなアプリケーションやパフォーマンスへの要求に答えられる必要がある。ＡＮＲ１０を含む装置１は、並列処理ハードウェアとしての機能に加え、動的にプログラム可能であり、上記の要求にマッチしたハードウェアである。
【００６３】
センサーの１つは、ＦＡＩＭＳ（Field Asymmetric ion mobility spectrometer）である。ＦＡＩＭＳは、空気などに含まれる微量な化学成分の検出に適しており、警備、環境モニタリング、ヘルスケア、産業プロセス、エネルギーなどの広範囲にわたるアプリケーションに適用されようとしている。ＦＡＩＭＳおよびＭＳ（質量センサー）はチップレベルの小型軽量なものが市場に提供され始めており、チップレベルで実現できるＡＮＲ１０を含む装置１を解析用のプラットフォームとして採用することにより、小型、軽量、機械的および熱的に堅牢で、低パワーの、チップレベルでのリアルタイム化学物質分析装置を提供できる。
【００６４】
図１７に、装置１において実現するアプリケーション（仕様）１３１から、高位合成１３２、ＲＴＬコーディング１３３、論理検証１３４、論理合成（ネットリスト合成）１３５の過程を経てネットリスト１３６を生成し、装置１へのマッピング１３７、ボードレベル評価１３８までの流れ（設計フロー）を示している。ＡＮＲ１０の設計フローの大部分は、標準的な設計フローを採用している。違いとしては、ＲＴＬ１３３がリミテッド・セル・ライブラリを有する構造的なゲート・レベルのネットリストに合成されることである。リミテッド・セル・ライブラリでサポートされるプリミティブは、２または３入力のＡＮＤゲート、ＯＲゲート、ＸＯＲゲート、インバータ、ＦＦ、ＭＵＸなどである。このライブラリは、性能への要求に応じて他のプリミティブを含むように進化させることができる。
【００６５】
図１８に、ＲＴＬ１８１からネットリスト１３６を介してＡＮＲ１０に実装する情報（コンフィグレーション情報）２３０を生成する装置（ネットリストコンバータ）２００の概略構成を示している。ネットリストコンバータ２００は、ＣＰＵおよびメモリを備えたコンピュータであり、以下に説明する機能を実行する命令を含むプログラム（プログラム製品）をインストールすることによりネットリストコンバータ２００として機能する。仕様１３１に基づいて生成および合成されたネットリスト（ゲートレベルネットリスト）１３６を、マッピングのターゲットとなるファンクションセル１１に実装する情報２３０に変換し、その際に、総面積もしくは遅延時間といった目的となる機能を最適化することである。本例においては、ターゲットセル１１は、上述したＡＮＲ−ＢＡＳＥ１４である。
【００６６】
デザインコンパイラ１９０が、ＲＴＬ１８１と、上述したリミテッド・セル・ライブラリ１８２を用い、ゲートレベルネットリスト１３６を生成する。このタスクは、サブジェクト・グラフと呼ばれるシンプルなゲートのグッド・イニシャル・マルチレベル・ネットワークとして、与えられたネットリストを表すことを含む。サブジェクト・グラフは、その後、サブジェクト・グラフ内の各ノードにマッチする異なるライブラリ・ゲートを列挙（マッチング・ステップ）し、最適な組み合わせを選択することによりライブラリ・ゲートのマルチレベル・ネットワークに変換可能である。
【００６７】
ネットリストコンバータ２００は、ネットリスト１３６から、ユーザーセル構成ライブラリ１９７と、Ａｘｉｏｎｉｐｅｒセルライブラリ（ＡＮＲセルライブラリ）１９８とを参照して、ＡＮＲ１０にマッピングされるコンフィグレーション情報２３０を生成する。コンフィグレーション情報２３０は、論理演算を実装する単位（エレメント、ブロック、セル）となるリソースを再構成するエレメント再構成情報２３１と、単位（エレメント）を接続するチャネルを再構成するチャネル再構成情報２３２とを含む。ネットリストコンバータ２００は、ネットリスト解析・最適化ユニット２１０と、コンフィグレーション情報生成ユニット２２０とを含む。ネットリスト解析・最適化ユニット２１０は、最適化ユニット２１１と、テクノロジーマッピングユニット（分析ユニット）２１２とを含む。テクノロジーマッピングユニット２１２は、ｋ−フィージブルカットを行うユニット２１３と、カットを解析するユニット２１４とを含む。
【００６８】
ＡＮＲ−ＢＡＳＥモジュール１４の基本構成であるＡＮＲ−Ｃ１モジュール１２は基本要素として４ビット入力のＬＵＴとＦＦとを含む構成と解釈される。４つのＡＮＲ−Ｃ１モジュール１２により構成されるＡＮＲ−Ｃ１ｘ４モジュール１３は、４つのＬＵＴと、４つのＦＦとを含む構成と解釈される。したがって、マッピングユニット２１２はＬＵＴベーステクノロジーマッピングユニットとしての機能を含む。
【００６９】
図１９（ａ）に組合せ論理の例として、フル・アダーのゲート回路１４１を示し、図１９（ｂ）に、その真理値表１４２を示し、図１９（ｃ）に真理値表１４２をＬＵＴ１４３に実装した様子を示している。組合せ論理は、同じ数の入力と出力を持つＬＵＴ１４３に実装される。ＬＵＴ１４３は、３入力１４３ｉと、２出力１４３ｏとを含む。
【００７０】
真理値表のサイズは、入力の数に基づいて指数関数的に大きくなる。３入力であれば８行、４入力であれば１６行、５入力であれば３２行である。真理値表とＬＵＴ内の行数とが同じであり、ＬＵＴは入力数に基づき指数関数的に大きくなる。ＬＵＴ内のＳＲＡＭのビット数は２ｉ×ｏで表される。ただし、ｉは入力数、ｏは出力数である。たとえば、６４入力、１出力の組合せ論理では、２６４（１．８４×１０１９）のＳＲＡＭのビットが必要となる。このような大きなＬＵＴを使用することは明らかに実現可能ではない。
【００７１】
ＡＮＲ１０は、階層的な構造のセル１２〜１４を含み、それぞれを単位としたとしてＬＵＴが構成でき、それら複数のＬＵＴ上に回路（論理演算）をマッピングできる。したがって、実装する回路を（入力と出力が同じ数の）ＬＴＵにフィットするように小さな回路に分割することでＬＵＴが膨大な大きさになることを抑制する。ＬＵＴベーステクノロジーマッピングユニット２１１はネットリスト１３６を、たとえば、３入力、２出力のＬＵＴにフィットするように分割する。
【００７２】
図２０（ａ）に、リミテッド・セル・ライブラリ１８２を用いたネットリスト１７１を、ＡＮＲ１０にマップするネットリスト１７２に変換した例を示している。ＡＮＲ１０にマップするためのネットリスト１７２は、エレメント再構成情報２３１と、チャネル再構成情報２３２とを含むコンフィグレーション情報２３０に対応する。この例では、ネットリスト１７１を、３入力、２出力のＬＵＴにフィットするように分解し、図２０（ｂ）に示す４入力、４出力のＡＮＲ−Ｃ１ｘ４モジュール１３をエレメントとしたネットリスト１７２を生成してＡＮＲ１０にマップしている。
【００７３】
図２１は、ネットリスト１４５を４入力のエレメント１４６に分解する例を示している。エレメントに分けて実装する論理回路に含まれるゲート数は、ＬＵＴへのマッピングに影響を及ぼさない。重要なことは、エレメントに分解する際の入力と出力の数である。２個または３個の入力しか持たない大規模回路は一般的ではないが、そのような大規模回路も小規模回路と同様に入力数が同じであれば、１つの３入力、１出力のＬＵＴに実装されうる。
【００７４】
図２２に、ネットリストコンバータ２００において、論理演算部であるＡＮＲ１０を再構成するコンフィグレーション情報２３０を生成する過程２５０をフローチャートにより示している。このコンフィグレーション情報を生成する過程（生成方法）２５０は、ＣＰＵ、メモリなどのハードウェア資源を含むコンピュータを動作させるプログラム（プログラム製品）として適当な記録媒体に記録された状態またはネットワークを介して提供される。
【００７５】
ステップ２５１でネットリスト１３６を読み込み、ステップ２５２でべリログ解析を行い、ステップ２５３でデータフローグラフ解析を行い、ステップ２５４で論理を最適化する。その後、ステップ２５５でｋ−フィージブルカットを含むテクノロジーマッピングを行い、ステップ２５６でカットされた結果を解析する。その解析結果に基づいて、ステップ２５７において、エレメント再構成情報２３１とチャネル再構成情報２３２とを含むコンフィグレーション情報２３０を生成する。
【００７６】
ステップ２５２のベリログ解析（Verilog Parser）においては、リミテッド・セルを持つ構造的なゲート・レベルのネットリスト１３６から中間の最適化されていないデータフローグラフが構築される。ステップ２５３のデータフローグラフ解析（Data flow graph analysis）においてはマルチ出力ＡＩＧ（And-Invert-Graph）が、回路の各プライマリ出力に対して構築される。データフローグラフ解析においては、ユーザ・セル構造ライブラリ１９７がパーサ（function cell parser）２６１を介して参照され、グラフ内の各ノードにマッチする異なるライブラリ・ゲートが列挙され、ライブラリ・ゲートのマルチレベル・ネットワークに変換される。
【００７７】
ステップ２５４の論理最適化（Logic Optimization）はデザイン・フローの中で重要なステップである。論理は、冗長な論理を削除するために最適化される。論理の最適化においては、まず、テクノロジー・インディペンデントな論理最適化を行う。１つは、単純化（簡素化）であり、機能が表現されている方法を変更する。次にネットワークを再構築する。たとえば、ノードを追加および削除する。さらに遅延時間を再構築する。たとえば、クリティカル・パスの高さを減少させる最適化を行う。また、コストに基づく回路の改善を行う。同じ機能性を維持させることが考えられる。さらに、ブーリアンネットワークを用いた最適化（ブール評価／分解）、単純ファクタリング、リテラルの最少化といった最適化を行う。以降の処理においては、Ａｘｉｏｎｉｐｅｒセル構造ライブラリ１９８がパーサ２６２を介して参照される。
【００７８】
図２３にブール評価の例を示している。図２３（ａ）は入力されたブーリアンネットアーク２６１の例を示す。図２３（ｂ）は、適当なコスト関数を用いて最適化した状態で複数のＬＵＴを用いてネットワークを実装した回路２６２を示す。
【００７９】
本例では、ステップ２５５において、ＡＮＲ−Ｃ１モジュール１２を再構成の最小要素（エレメント）として選択し、ＬＵＴベースのテクノロジーマッピングによりＡＮＲ−Ｃ１モジュール１２へテクノロジーマッピングを行う。ＬＵＴベーステクノロジーマッピングにおいては、面積および／または遅延が最少になるようにＬＵＴにネットリストをマッピングする。全体的なＬＵＴマッピング・アルゴリズムの中でレイテンシが最適化される。
【００８０】
ステップ２５５では、マッピングユニット２１２が、テクノロジーマッピングのためにノードの組み合わせでＡＩＧをカットする。マッピングユニット２１２のノードカットユニット２１３が、構造表現ＡＩＧを入力表現としてＡＩＧ内の各ノードに対する全てのカット（ｋ−フィーシブル・カット）を網羅的に列挙する。カットは論理を分離できるノードの組み合わせを示す。テクノロジーマッピングにおいては、最善のレイテンシ数となるカットを選択し、ヒューリスティックアプローチによりマッピングする。ｋ−フィーシブルカットは、カットした後のサイズが整数ｋ以下であることを意味する。
【００８１】
図２４にｋ−フィージブルカットの例を示す。本例のエレメントであるＡＮＲ−Ｃ１モジュール１２の入力数は４であり、４−フィージブルカットが探索されるが、簡単のため、以下では３−フィージブルカットを例に説明する。図２４（ａ）の構造表現ＡＩＧ２７０において、カット（ａ、ｂ、ｃ）２７２およびカット（ｐ、ｂ、ｃ）２７１は、ノードｒの３−フィーシブルカットである。ｋ−フィーシブルカットを行うことによりレイテンシを調整できる。また、ノードとそのカット内にあるノードとの間の論理は、図２４（ｂ）および（ｃ）に示すようにｋ−ＬＵＴ（本例では３入力ＬＵＴ）２７５および２７６によりそれぞれ置き換えられる。
【００８２】
ステップ２５５においては、ネットリスト１３６に含まれる各ノードに対する全てのカットの中から、カットした後のノードの数がテクノロジーマッピングを行うエレメント、本例では４入力のＡＮＲ−Ｃ１モジュール１２の入力数４以下のｋ−フィージブルカット（４−フィージブルカット）が列挙され、それぞれのカットについてテクノロジーマッピング処理が行われる。その際、最良のレイテンシと面積が得られるカットのセットが選択される。整数ｋは、１以上、エレメントの入力数以下の整数である。エレメントの入力数が数百になることは基本的にはなく、整数ｋは２５６以下であることが望ましく、３２以下であることがさらに好ましく、１６以下であることがさらに好ましい。
【００８３】
全てのｋ−フィーシブルカットのセットを網羅的に取得するためのアプローチの例は、ボトム・アップ・アプローチとトップ・ダウン・アプローチである。図２５に示したＡＩＧ２８０において、ボトム・アップ・アプローチ２８９では、カットの計算はボトムアップで行われ、ｋよりも大きいサイズのカットは破棄される。トップ・ダウン・アプローチ２８８においては、まず、ノードｔのカット（ｕ、ｙ）２８１を展開する。ノードｙをそのカット（ｒ、ｓ）で置き換えることにより、ノードｔの新しいカット（ｕ、ｒ、ｓ）２８２が展開される。以降、同様にしてカットが展開される。
【００８４】
網羅的にカットを列挙する際は、あまりにも多くの組み合わせが可能となる。このため、適当な数、たとえばｋが７以上のものは破棄するような処理を採用することが可能である。ただし、ファット・ベリーの問題があることを認識しなければならない。すなわち、トップ・ダウン・アプローチ２８８において、フィージブルカットの整数ｋが３の場合でも、ノードｔのカット（ａ、ｂ、ｃ）２８４を取得するために、ｋが４以上のファット・ベリーであるカット（ｐ、ｑ、ｒ、ｓ）２８３を越えて拡張しなければならない。したがって、ステップ２５５は、全てのｋ−フィーシブルカットを得るために整数ｋよりも大きな中間カットを生成する処理を含む。
【００８５】
ステップ２５５において、全てのｋ−フィーシブルカットを列挙する代わりに、サブセットＦ（ファクタ・カット）を列挙してもよい。サブセットＦから他のｋ−フィーシブルカットが簡単に生成できる。
【００８６】
ステップ２５６において、マッピングユニット２１２のカット解析ユニット２１４が、上記にて得られたｋ−フィージブルカットを網羅的に解析する。最も重要な着目点（ファクタリング）の１つは、カットの重複を検出することである。重複したカットは同一のＡＮＲ−Ｃ１モジュール１２に実装できる可能性がある。重複したカットは入力が一致するので、上位階層である同一のＡＮＲ−Ｃ１×４モジュール１３に含まれる他のＡＮＲ−Ｃ１モジュール１２に実装できる可能性がある。
【００８７】
着目点の他の１つは、列挙されたカットの圧縮である。ｋ個以下のノードを含むカットを複数集めてｋ個のノードのカットに圧縮することにより１つのＡＮＲ−Ｃ１モジュール１２に実装できる可能性がある。さらに異なる着目点はカットの支配や、ｋの最適化である。
【００８８】
ステップ２５７においては、生成ユニット２２０がカットの解析結果に基づいて、エレメントであるＡＮＲ−Ｃ１モジュール１２を再構成する情報２３１と、ＡＮＲ−Ｃ１モジュール１２の接続を、グローバルチャネル２０を含めて再構成する情報２３２とを含むコンフィグレーション情報２３０を生成する。このステップ２５７においては、エレメント再構成情報２３１およびチャネル再構成情報２３２が時分割で論理演算部であるＡＮＲ１０を再構成する単位に分割され、ＡＮＲ１０にローディングされるコンフィグレーション情報２３０が生成される。
【００８９】
図２６にＲＴＬの例として８ビットのエンコーダーのＲＴＬ表現２９１を示している。９つの入力と３つの出力がある。このＲＴＬ１８１がリミテッド・セル・ライブラリを持ったゲートレベルネットリスト１３６を得るために、デザイン・コンパイラ１９０または類似する合成ツールに送られる。
【００９０】
図２７は、リミテッド・セル・ライブラリ１８２を用いてデザイン・コンパイラ１９０により生成された等価なゲートレベルネットリスト１３６のコード２９２を表している。このコード２９２が、ネットリスト・コンバータ２００に入力として与えられる。
【００９１】
図２８に合成後のデータ・フロー・グラフ２９３を示している。ゲート・レベルのネットリストの入出力が図的な表現として三角形で示されている。各中間ノードは、円で表示されている。このグラフは、ネットワークの再構築、ブール評価および分解といった標準的な論理最適化ステップを用いて最適化された後のものであり、中間ノードが２９個から１２個に削減されている。
【００９２】
図２９に各ノードのマッピング情報２９４を示している。それぞれの式を１つのＡＮＲ−Ｃ１モジュール１２にマッピングできる。図３０にコア（ＡＮＲ−Ｃ１モジュール）１２へのパッキングのアルゴリズム２９５を示している。まず、ＡＮＲ−Ｃ１モジュール１２の入力が最も多くなる論理が選択され、次に、このモジュールとシェアする入力または出力が最も多くなる論理が選択され、入力数がオーバフローするまで繰り返される。そして、ＡＮＲ−Ｃ１モジュール１２の必要数が最小値になる組合せを見つける。たとえば、ＡＮＲ−Ｃ１ｘ４モジュール１３がＡＮＲ−ＢＡＳＥモジュール１４に含まれた状態で実装されるのに最適な数が得られるまで上記を繰り返す。
【００９３】
図２９に示すように、ノードｎ１４とノードｎ１５とは３つの入力をシェアしており、これらの２つのノード間での入力の最大数は４である。これらの２つのノードは、１つのノードを形成するために組み合わされる。同様にして、ノードｎ１９およびｎ２０が、ノードｎ１８を形成するために組み合わされる。
【００９４】
図３１に最適化後の各ノードのマッピング情報２９６を示している。最適なパッキングにより、１２個の方程式が１０個の方程式になる。各方程式（代入文）は、最大４つの入力と１つの出力を持つ。各文は、簡単にＡＮＲ−Ｃ１モジュール１２にマッピングすることができる。したがって、８ビットの符号化回路に１０個のＡＮＲ−Ｃ１モジュール１２が用いられる。
【図１】
2014132670.tif 000003
【図２】
2014132670.tif 000004
【図３】
2014132670.tif 000005
【図４】
2014132670.tif 000006
【図５】
2014132670.tif 000007
【図６】
2014132670.tif 000008
【図７】
2014132670.tif 000009
【図８】
2014132670.tif 000010
【図９】
2014132670.tif 000011
【図１０】
2014132670.tif 000012
【図１１】
2014132670.tif 000013
【図１２】
2014132670.tif 000014
【図１３】
2014132670.tif 000015
【図１４】
2014132670.tif 000016
【図１５】
2014132670.tif 000017
【図１６】
2014132670.tif 000018
【図１７】
2014132670.tif 000019
【図１８】
2014132670.tif 000020
【図１９】
2014132670.tif 000021
【図２０】
2014132670.tif 000022
【図２１】
2014132670.tif 000023
【図２２】
2014132670.tif 000024
【図２３】
2014132670.tif 000025
【図２４】
2014132670.tif 000026
【図２５】
2014132670.tif 000027
【図２６】
2014132670.tif 000028
【図２７】
2014132670.tif 000029
【図２８】
2014132670.tif 000030
【図２９】
2014132670.tif 000031
【図３０】
2014132670.tif 000032
【図３１】
2014132670.tif 000033
【国際調査報告】
2014132670.tif 000034
2014132670.tif 000035