JP6250548B2 - 再構成可能な半導体装置の論理構成方法 - Google Patents

再構成可能な半導体装置の論理構成方法 Download PDF

Info

Publication number
JP6250548B2
JP6250548B2 JP2014548558A JP2014548558A JP6250548B2 JP 6250548 B2 JP6250548 B2 JP 6250548B2 JP 2014548558 A JP2014548558 A JP 2014548558A JP 2014548558 A JP2014548558 A JP 2014548558A JP 6250548 B2 JP6250548 B2 JP 6250548B2
Authority
JP
Japan
Prior art keywords
logic
data
netlist
circuit
truth table
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2014548558A
Other languages
English (en)
Other versions
JPWO2014080872A1 (ja
Inventor
佐藤 正幸
正幸 佐藤
勲 志水
勲 志水
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Taiyo Yuden Co Ltd
Original Assignee
Taiyo Yuden Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Taiyo Yuden Co Ltd filed Critical Taiyo Yuden Co Ltd
Publication of JPWO2014080872A1 publication Critical patent/JPWO2014080872A1/ja
Application granted granted Critical
Publication of JP6250548B2 publication Critical patent/JP6250548B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • G06F30/343Logical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/327Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/34Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • G06F30/394Routing
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17724Structural details of logic blocks
    • H03K19/17728Reconfigurable logic blocks, e.g. lookup tables
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17736Structural details of routing resources
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
    • H03K19/17748Structural details of configuration resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • General Physics & Mathematics (AREA)
  • Geometry (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Logic Circuits (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)

Description

本発明は、再構成可能な半導体装置の論理構成方法、そのプログラム、及び論理構成装置に関する。
FPGA(Field−Programmable Gate Array)などの再構成可能(プログラム可能、又は、書込み可能)な半導体装置(「再構成デバイス」ともいう)は、その再書込み可能性によって与えられる柔軟性のため、広く使用されている(例えば、特許文献1)。
一般的なアイランドスタイルFPGAは、論理要素CLB(Configurable Logic Blocks)、スイッチ要素SB、CB、入出力要素IOBから構成されている。
論理要素CLBは、組み合わせ回路を実現するプログラマブルな要素であり、CLBの各々は、データフリップフロップ(DFF)や、LUT(Look Up Table)等から構成される。k入力のLUT(k−LUT)は2のk乗個のSRAM(Static Random Access Memory)セルが使われ、k変数の関数を実現する。例えば、任意の論理関数の真理値表をSRAMに保持し、入力に応じて真理値表を参照して出力を行う方式である。
また、論理機能部分をリンクさせるCLB間に信号経路を発生させるため、CLB間には、信号経路を切り替え可能なスイッチ要素CB、SBが配置される。スイッチ要素CBは、論理ブロックLBと配線チャネルとの間に設定する要素であり、スイッチ要素SBは、縦方向と横方向の配線が交差する部分において縦横の配線間の設定を行う要素である。
入出力要素IOBとは、デバイスの入出力と論理要素LBとの間のインターフェースの役割を担う構成要素である。
出願人又は発明者は、メモリセルユニットで回路構成を実現する「MPLD(Memory−based Programmable Logic Device)」(登録商標)を開発している。MPLDは、例えば、下記特許文献1に示される。MPLDは、MLUT(Multi Look−Up−Table)と呼ぶメモリアレイを相互に接続する。MLUTは真理値データを格納して、配線要素と論理要素を構成する。MPLDは、このMLUTをアレイ状に並べ、相互接続することによってFPGAとほぼ同等の機能を実現している。また、MPLDは、真理値表データにより、MLUTを論理要素と配線要素の双方として使用することによって、論理領域と配線領域に柔軟性をもたせたデバイスであり(例えば、特許文献2)、メモリセルユニット間の接続に専用の切り替え回路を有するFPGAと異なる。
FPGAについての最適配置、配線方法については既に検討されている(特許文献3)。MPLDの論理構成の場合、MLUTは論理要素及び/又は接続要素として動作するので、MLUTへの真理値表データの書込が、論理動作の配置、及び/又は、MLUT間の配線を意味する。そのため、MLUTに書き込むための真理値表データの生成が、MPLDの「配置・配線」に相当する。
MPLDの論理構成方法は、開示されている(特許文献4、図43)。しかしながら、開示の記載は、MLUTの入出力数を、AD対(MLUT同士を連結するとともに、1対のアドレス線と、データ線)の数未満にすること等、一般的な記載にとどまる。
国際公開第2002/538652号 国際公開第2007/060763号 特開2010−239325号公報 国際公開第2011/162116号
上記のように、FPGA、及びMPLDについての最適配置、配線方法は全く開示されていない。MPLDは、配線要素と論理要素を同じMLUTで実現することから、回路を構成する際に論理セルの配置を工夫することで、配線要素として使用するMLUT数を減らすことができる。つまり、最適配置、配線できていない場合、使用するMLUT数が増えるので、最適配置、配線により、小規模なMPLDで所望の機能を実現できる。しかし、MPLDは配線要素と論理要素を同じメモリセルユニットであるMLUTで実現することから、論理と、配線が異なる回路ユニットにより実現されるFPGAの論理構成ツールのアルゴリズムは使用できない。このような状況から、MPLD向けの論理構成手法が必要になる。
上記課題を解決する形態は、以下の項目により示される。
1.データを記憶するメモリセルを複数備えた記憶部を複数有する再構成可能な半導体装置の論理構成方法であって、
それぞれの前記記憶部は、アドレス入力に対して論理値を出力するための真理値表データをそのメモリセルに記憶し、論理回路として動作するように構成され、
前記記憶部は、入力線および出力線の対を少なくとも2のn倍(nは2以上の整数)本有し、
前記記憶部同士は、1つの記憶部からの2のn倍本の出力線が、他の2つの記憶部のn本の入力線に接続され、
前記論理構成方法は、
回路構成を記述した回路記述に基づいて、回路の接続情報を有するネットリストを生成し、
前記ネットリストから、順序回路を含んで成る論理コーンを抽出し、
前記論理コーンに対する入力線の数を2分のnで除算した数に相当する前記記憶部の段数で、前記論理コーンを構成する複数の前記記憶部のための前記真理値表データを、生成することを特徴とする再構成可能な半導体装置の論理構成方法。
2.前記ネットリストの生成は、高級言語で記述されたプログラムの中の変数ビットを、より小さいビットに型変換するステップを含む、項目1に記載の論理構成方法。
3.前記記憶部は、一辺と、前記一辺と反対側の他辺で他の記憶部に接続するとともに、複数のメモリセルユニットを有し、且つ、
前記複数のメモリセルユニットの少なくとも1つが有する複数のメモリセルは、前記一辺におけるアドレス入力に対して、前記一辺から論理値を出力するための第1真理値表データと前記他辺から論理値を出力するための第2真理値表データとを記憶し、
前記真理値表データを生成するステップは、前記第1真理値表データと、前記第2真理値表データを生成するステップを含む、項目1又は2に記載の論理構成方法。
4.前記ネットリストの生成は、高級言語で記述されたプログラムに対して、ループ展開、及び/又は、並列化処理するステップを含む、項目1〜3の何れか1項に記載の論理構成方法。
5.前記ネットリストから、スキャン化可能な順序回路データセットを抽出して、スキャン化された順序回路データセットを生成し、
前記スキャン化できる順序回路データセットから、前記複数のメモリセルユニットのうち第1セットに書き込むための第1真理値表データセットを生成し、
前記ネットリストの組合せ論理回路データセットから、前記複数のメモリセルユニットのうち第2セットに書き込むための第2真理値表データセットを生成する、項目1〜4の何れか1項に記載の論理構成方法。
特許文献3に示されるように、通常、配置配線では、論理回路の構造から、ゲート・レベルに展開して、展開したゲート素子をランダムに配置し、配置した複数のゲート素子を接続する。そして、ゲート展開によって、使用CLB数や動作速度が操作変数とする繰り返しの最適化処理により、論理要素CLBの数を最小化する。
論理回路ミュレーションではネットリストのようなデバイスとデバイスをノードの結線情報で表示するのではなく端子名を使い結線情報を表示する手法を使用している。本実施形態に係る論理構成方法は、端子に基づく結線で配置配線するのではなく、論理回路及び順序回路の接続情報などを論理素子やFFなどのデバイスレベルでネットリスト情報を持たせ配置配線することで、端子名とノードを対応させたデータを保持し、変更後の確認が容易になり、また、デバイスによる回路の簡略化や回路ブロックの再構成が容易になる。
上記課題を解決する形態は、以下の項目により示される。
6.前記半導体装置は、前記記憶部とともに、順序回路要素を有する論理部を、複数個有し、 前記論理構成方法は、
回路構成を記述した回路記述から、論理回路データ、順序回路データ、及び、前記論理回路データと順序回路データの接続情報を記述するネットリストを生成し、
前記生成したネットリストから、前記接続情報に従って、前記論理回路データと前記順序回路データをそれぞれ前記メモリセル及び論理回路要素に割り当てる、項目1〜5の何れか1項に記載の論理構成方法。
これにより、端子に基づく結線で配置配線するのではなく、論理回路及び順序回路の接続情報などのデバイスレベルで配置配線することで、デバイスによる回路の簡略化や回路ブロックの再構成が容易にすることができる。
7.前記半導体装置は、前記論理部の外部に、スイッチ要素を有し、
前記スイッチ要素に前記ネットリストの接続情報を割り当てることをさらに有する、項目6の論理構成方法。
8.前記記憶部のメモリセルは、あるアドレスで特定された入力値を、他の論理部の記憶部に出力するように構成される真理値表データを書き込むと、接続要素として動作し、
前記記憶部に前記ネットリストの接続情報を割り当てることをさらに有する、項目6又は7に記載の論理構成方法。
9.前記ネットリストを生成した後に、順序回路データを削除し、
前記生成したネットリストから、前記接続情報に従って、前記論理回路データを前記メモリセルに割り当てた後に、前記順序回路データを論理回路要素に割り当てる、項目6〜8の何れか1項に記載の論理構成方法。
10.前記ネットリスト生成ステップは、論理回路データ、順序回路データ、及び、前記論理回路データを含む並列入力直列出力形のシフトレジスタを生成することを含む、項目6〜9の何れか1項に記載の論理構成方法。
11.前記順序回路要素は、前記記憶部から読み出したデータを保持するとともに、クロックに同期して保持したデータを出力する順序回路である、項目6〜10の何れか1項に記載の論理構成方法。
12.データを記憶するメモリセルを複数備えた記憶部を複数有する再構成可能な半導体装置の論理構成を行う論理構成装置であって、
前記半導体装置は、それぞれの前記記憶部は、アドレス入力に対して論理値を出力するための真理値表データをそのメモリセルに記憶し、論理回路として動作するように構成され、
前記記憶部は、入力線および出力線の対を少なくとも2のn倍(nは2以上の整数)本有し、
前記記憶部同士は、1つの記憶部からの2のn倍本の出力線が、他の2つの記憶部のn本の入力線に接続され、
前記論理構成装置は、プロセッサを備え、
前記プロセッサは、
回路構成を記述した回路記述に基づいて、回路の接続情報を有するネットリストを生成し、
前記ネットリストから、順序回路を含んで成る論理コーンを抽出し、
前記論理コーンに対する入力線の数を2分のnで除算した数に相当する記憶部の段数で、前記論理コーンを構成する複数の前記記憶部のための前記真理値表データを、生成するように構成される、ことを特徴とする論理構成装置。
13.前記ネットリストの生成は、高級言語で記述されたプログラムの中の変数ビットを、より小さいビットに型変換することを含む、項目12に記載の論理構成装置。
14.前記記憶部は、一辺と、前記一辺と反対側の他辺で他の記憶部に接続するとともに、複数のメモリセルユニットを有し、且つ、
前記複数のメモリセルユニットの少なくとも1つが有する複数のメモリセルは、前記一辺におけるアドレス入力に対して、前記一辺から論理値を出力するための第1真理値表データと前記他辺から論理値を出力するための第2真理値表データとを記憶し、
前記真理値表データを生成することは、前記第1真理値表データと、前記第2真理値表データを生成することを含む、項目12又は13に記載の論理構成装置。
15.前記ネットリストの生成は、高級言語で記述されたプログラムに対して、ループ展開、及び/又は、並列化処理することを含む、項目12〜14の何れか1項に記載の論理構成装置。
16.前記プロセッサは、前記ネットリストから、スキャン化可能な順序回路データセットを抽出して、スキャン化された順序回路データセットを生成し、
前記スキャン化できる順序回路データセットから、前記複数のメモリセルユニットのうち第1セットに書き込むための第1真理値表データセットを生成し、
前記ネットリストの組合せ論理回路データセットから、前記複数のメモリセルユニットのうち第2セットに書き込むための第2真理値表データセットを生成するように構成される、項目12〜15の何れか1項に記載の論理構成装置。
17.前記半導体装置は、前記記憶部とともに、順序回路要素を有する論理部を、複数個有し、
前記プロセッサは、
回路構成を記述した回路記述から、論理回路データ、順序回路データ、及び、前記論理回路データと順序回路データの接続情報を記述するネットリストを生成し、
前記生成したネットリストから、前記接続情報に従って、前記論理回路データと前記順序回路データをそれぞれ前記メモリセル及び論理回路要素に割り当てる、項目12〜16の何れか1項に記載の論理構成装置。
18.前記半導体装置は、論理部の外部に、スイッチ要素を有し、
前記スイッチ要素に前記ネットリストの接続情報を割り当てることをさらに有する、項目17の論理構成装置。
19.前記記憶部のメモリセルは、あるアドレスで特定された入力値を、他の論理部の記憶部に出力するように構成される真理値表データを書き込むと、接続要素として動作し、
前記プロセッサは、前記記憶部に前記ネットリストの接続情報を割り当てるように構成される、項目17又は18に記載の論理構成方法。
20.前記プロセッサは、
前記ネットリストを生成した後に、順序回路データを削除し、
前記生成したネットリストから、前記接続情報に従って、前記論理回路データを前記メモリセルに割り当てた後に、前記順序回路データを論理回路要素に割り当てるように構成される、項目17〜19の何れか1項に記載の論理構成方法。
21.前記ネットリスト生成は、論理回路データ、順序回路データ、及び、前記論理回路データを含む並列入力直列出力形のシフトレジスタを生成することを含む、項目17〜20の何れか1項に記載の論理構成装置。
22.前記順序回路要素は、前記記憶部から読み出したデータを保持するとともに、クロックに同期して保持したデータを出力する順序回路である、項目17〜21の何れか1項に記載の論理構成装置。
23.データを記憶するメモリセルを複数備えた記憶部を複数有する再構成可能な半導体装置の論理構成を行うのためのプログラムであって、
前記半導体装置は、それぞれの前記記憶部は、アドレス入力に対して論理値を出力するための真理値表データをそのメモリセルに記憶し、論理回路として動作するように構成され、
前記記憶部は、入力線および出力線の対を少なくとも2のn倍(nは2以上の整数)本有し、
前記記憶部同士は、1つの記憶部からの2のn倍本の出力線が、他の2つの記憶部のn本の入力線に接続され、
前記プロセッサに、
回路構成を記述した回路記述に基づいて、回路の接続情報を有するネットリストを生成する処理、
前記ネットリストから、順序回路を含んで成る論理コーンを抽出する処理、
前記論理コーンに対する入力線の数を2分のnで除算した数に相当する前記記憶部の段数で、前記論理コーンを構成する複数の前記記憶部のための前記真理値表データを、生成する処理を実行させることを特徴とするプログラム。
24.前記ネットリストの生成は、高級言語で記述されたプログラムの中の変数ビットを、より小さいビットに型変換することを含む、項目23に記載のプログラム。
25.前記記憶部は、一辺と、前記一辺と反対側の他辺で他の記憶部に接続するとともに、複数のメモリセルユニットを有し、且つ、
前記複数のメモリセルユニットの少なくとも1つが有する複数のメモリセルは、前記一辺におけるアドレス入力に対して、前記一辺から論理値を出力するための第1真理値表データと前記他辺から論理値を出力するための第2真理値表データとを記憶し、
前記真理値表データを生成する処理は、前記第1真理値表データと、前記第2真理値表データを生成する処理を含む、項目23又は24に記載のプログラム。
26.前記ネットリストの生成は、高級言語で記述されたプログラムに対して、ループ展開、及び/又は、並列化処理することを含む、項目23〜25の何れか1項に記載のプログラム。
27.前記ネットリストから、スキャン化可能な順序回路データセットを抽出して、スキャン化された順序回路データセットを生成する処理、
前記スキャン化できる順序回路データセットから、前記複数のメモリセルユニットのうち第1セットに書き込むための第1真理値表データセットを生成する処理、
前記ネットリストの組合せ論理回路データセットから、前記複数のメモリセルユニットのうち第2セットに書き込むための第2真理値表データセットを生成する処理、を実行させる項目23〜26の何れか1項に記載のプログラム。
28.前記半導体装置は、前記記憶部とともに、順序回路要素を有する論理部を、複数個有し、
前記プロセッサに、
回路構成を記述した回路記述から、論理回路データ、順序回路データ、及び、前記論理回路データと順序回路データの接続情報を記述するネットリストを生成する処理、
前記生成したネットリストから、前記接続情報に従って、前記論理回路データと前記順序回路データをそれぞれ前記メモリセル及び論理回路要素に割り当てる処理を実行させる、項目23〜27プログラム。
29.前記半導体装置は、論理部の外部に、スイッチ要素を有し、
前記プログラムは、前記スイッチ要素に前記ネットリストの接続情報を割り当てる処理を実行させる、項目28に記載のプログラム。
30.前記記憶部のメモリセルは、あるアドレスで特定された入力値を、他の論理部の記憶部に出力するように構成される真理値表データを書き込むと、接続要素として動作し、
前記プロセッサは、前記記憶部に前記ネットリストの接続情報を割り当てる処理を実行させる、項目28又は29に記載のプログラム。
31.前記プロセッサに、
前記ネットリストを生成した後に、順序回路データを削除し、
前記生成したネットリストから、前記接続情報に従って、前記論理回路データを前記メモリセルに割り当てた後に、前記順序回路データを論理回路要素に割り当てる、処理を実行させる項目28〜30の何れか1項に記載の論理構成方法。
32.前記ネットリスト生成は、論理回路データ、順序回路データ、及び、前記論理回路データを含む並列入力直列出力形のシフトレジスタを生成する処理を含む、項目28〜31の何れか1項に記載のプログラム。
33.前記順序回路要素は、前記記憶部から読み出したデータを保持するとともに、クロックに同期して保持したデータを出力する順序回路である、項目23〜32の何れか1項に記載のプログラム。
34.項目23〜33の何れか1項に示すプログラムを格納する記憶媒体。
本実施形態に係る論理構成方法は、メモリセルユニットから構成される再構成可能な半導体装置に対して、配線論理に使用されるメモリセルユニットの数を減らして、配置配線効率を高くできる。
また、本実施形態に係る論理構成方法は、端子に基づく結線で配置配線するのではなく、論理回路及び順序回路の接続情報などのデバイスレベルで配置配線することで、デバイスによる回路の簡略化や回路ブロックの再構成が容易にすることができる。
MLUT同士の接続が1つのアドレス又はデータ線で接続される構成例を示す図である。 論理部アレイの一例を示す図である。 MLUTの回路例を示す図である。 シングルポートのメモリセルの一例を示す図である。 2メモリセルユニット型のMLUTの一例を示す図である。 MLUTの回路例を示す図である。 MLUT同士の接続が1つのアドレス又はデータ線で接続される構成例を示す図である。 論理コーンの一例を示す図である。 FPGAにおけるC言語による論理合成の一例を示す図である。 MLUT間の接続が複数のアドレス又はデータ線で接続される構成例を示す図である。 n値を説明する図である。 論理コーンを形成する回路の一例を示す図である。 図11Aで示した論理コーンを実現する複数のMLUTを示す図である。 双方向型MLUT分割の例を示す図である。 双方向型MLUT分割の例を示す図である。 双方向型MLUT分割の例を示す図である。 双方向型MLUTにおけるFFの使用の例を示す図である。 情報処理装置のハードウェア構成の一例を示す。 回路記述と、デバイスレベルのネットリストの相違を説明する図である。 再構成可能な半導体装置が実現するパラレルシリアル変換シフトレジスタの一例である。 図18の回路を再構成するための回路記述の一例である。 図18の回路を再構成するための回路記述の別な一例である。 論理構成処理の一例を示すフローチャートである。 FFが論理コーン末端に収まる例を示す図である。 FFが論理コーン末端に収まる例を示す図である。 折り返しをするために、MLUTを追加する一例である。 双方向MLUTを使って折り返し処理した例である。 C言語等の高級言語に基づいて、ネットリストを生成する処理の一例を示す。 生成されたネットリストで示されるグルーロジック1000AとFFの概略を示す。 スキャン化された順序回路データセットと分けたグルーロジックから論理コーンを抽出する処理を示すフローチャートである。 スキャン化により新たに生成されたグルーロジックと、スキャンFFの概略を示す。 論理要素として動作するMLUTの一例を示す図である。 論理回路として動作するMLUTの一例を示す図である。 図31に示す論理回路の真理値表を示す図である。 接続要素として動作するMLUTの一例を示す図である。 図33に示す接続要素の真理値表を示す図である。 4つのAD対を有するMLUTによって実現される接続要素の一例を示す図である。 1つのMLUTが、論理要素及び接続要素として動作する一例を示す図である。 図36に示す論理要素及び接続要素の真理値表を示す。 AD対を有するMLUTによって実現される論理動作及び接続要素の一例を示す図である。
以下、図面を参照して、[1]MRLDの構成、[2]多方向型MLUT、[3]双方向型MLUT、[4]論理構成手法、[5]MLUTを論理要素及び/又は接続要素として動作させる真理値表の例について順に説明する。
[1]MRLDの構成
図1は、本実施形態に係る再構成可能な半導体装置の全体構成の一例を示す図である。以下、当該再構成可能な論理デバイスをMRLD(Memory based Reconfigurable Logic Device)と呼ぶ。MRLDは、FPGA同様の機能を備えているデバイスであるが、その構造が異なる。FPGAはLUTとスイッチブロック、コネクションブロックなどによって構成され、論理資源と配線資源の割合は固定である。これに対し、MRLDは、MLUTと呼ばれる論理素子、配線素子の双方として利用可能な素子を並べた構成となっている。この構成により、全体の面積における論理領域の割合を高めることができる。
なお、以下では、再構成可能な半導体装置の例として、MRLDを例に説明するが、本実施形態に係る論理構成方法は、MRLDのみを対象とするものではなく、FPGAを対象としたものであってもよい。その場合、複数のメモリセルを有する記憶部と、順序回路要素とを有する論理部としてのMLUT(後述)は論理要素として動作する場合、論理要素CLBであり、MLUTが配線要素として動作する場合、スイッチ要素SB、CBに相当する。
図1に示す20は、再構成可能な半導体装置としてのMRLDである。MRLD20は、後述する論理部をアレイ状に配置した論理部アレイ60、論理部の記憶部に対するメモリ読出し動作又は書込み動作用のアドレスを特定するデコーダ12、及び、書込用データWD又は読出用データRDを入出力する入出力部14を有する。
論理部アレイ60は、MLUTが、アレイ状に配置したものである。記憶部のメモリセルに、真理値表とみなされるデータがそれぞれ記憶され、アドレス入力に対する論理値(「0」と「1」の何れかの値となり、アドレス入力に対する否定、論理和、論理積、排他的論理和等の論理演算の結果)を出力することで、論理部は、論理要素、又は、接続要素、又は、論理要素及び接続要素として動作する論理動作を行う。論理部が、論理要素、及び/又は、接続要素として動作する例は、[5]で説明し、記憶素子の構成例は、図3Bを用いて後述する。
MRLD20の論理動作では、実線で示される論理動作用アドレスLA、及び論理動作用データLDの信号を使用する。論理動作用アドレスLAは、論理回路の入力信号として使用される。そして、論理動作用データLDは、論理回路の出力信号として使用される。論理部への論理動作用アドレスLAは、隣接する論理部への論理動作用データLDのデータ線と接続している。
MRLD20の論理動作により実現される論理は、記憶部に記憶される真理値表データにより実現される。いくつかの論理部は、AND回路、加算器などの組み合わせ回路としての論理要素として動作する。他の論理部は、組み合わせ回路を実現する論理部間を接続する接続要素として動作することも可能である。論理部が、論理要素、及び接続要素を実現するための真理値表データの書き換えは、メモリへの書き込み動作によりなされる。真理値表データにより実現される論理要素、及び、接続要素の例は、図30〜図38を用いて後述する。
MRLD20の書き込み動作は、書込用アドレスAD、及び書込用データWDによりなされ、読出し動作は、書込用アドレスAD、及び読出用データRDによりなされる。
書込用アドレスADは、記憶部内のメモリセルを特定するアドレスである。書込用アドレスADは、m本の信号線で、2のm乗の数nのメモリセルを特定する。書込用アドレスADは、メモリの読出し動作、書き込み動作、両方の場合で使用され、m本の信号線を介して、デコーダ12でデコードされて、対象となるメモリセルを選択する。なお本実施形態においては、後述するが、論理動作用アドレスLAのデコードは、記憶部内のデコーダにより行う。
デコーダ12は、リード・イネーブル信号re、ライト・イネーブル信号we等の制御信号に従って、書込用アドレスADをデコードし、デコードアドレスnをMLUT30に対して出力する。デコードアドレスnは、記憶部内のメモリセルを特定するアドレスとして使用される。
入出力部14は、ライト・イネーブル信号weに従って、書込用データWDを書込み、リード・イネーブル信号reに従って、読出用データRDを出力する。
図2は、論理部アレイの一例を示す図である。なお、図2では、論理部30間を繋ぐ、アドレス線とデータ線の接続は明示しておらず、後述する図3A等を用いてアドレス線とデータ線を説明する。論理部アレイ30は、図示されるように、MLUT30をアレイ状に配置したものである。各MLUTは、書込用アドレスAD、ライト・イネーブル信号we、リード・イネーブル信号re、書込用データWD、および読出用データRDの各信号線に接続する。
[1.1]MLUT
図3Aは、MLUTの回路例を示す図である。図3Aに示すMLUT30は、メモリセルユニット31、アドレスデコーダ9、アドレスセレクタ11、I/O(入出力)バッファ12、及び、データセレクタ13を有する。
メモリセルユニット31は、データを記憶するn×2個のメモリセルを有する。メモリセルは、2のn乗本のワード線と、n本のビット線の接続部分に配置される。なお、ビット線の数は、必要に応じてn本より増やしてもよい。「ビット線」は、メモリセルユニットの出力後は、「データ線」とよばれる。本実施例では、記憶素子に関する説明において、「ビット線」という用語を用いる。メモリセルの詳細は、図3Bを用いて後述する。
アドレスデコーダ9は、入力されるアドレス信号A0〜A7をデコードして、ワード線にデコード信号(「ワード線選択信号」とも言う)を出力する。デコード信号は、信号レベルが「H」であり、デコード信号が流れないワード線は、信号レベル「L(Low)」である。アドレスデコーダ9は、2のn乗本のワード線のうち1つのワード線に、信号レベル「H」のデコード信号を出力するように構成される。ワード線を流れるデコード信号で選択されたメモリセルは、記憶するデータをビット線に出力する。
アドレスセレクタ11は、書込用アドレスAD及び論理アドレスA0〜A7の何れかを選択する。この例では、書込み動作と、論理動作の何れかのみを行うシングルポートメモリセル(図3B)である。デュアルポートメモリを使用する場合、メモリセルへの読出し及び書込みが同時にできるので、アドレスセレクタ11は不要となる。
I/Oバッファ12は、外部クロック(OCrock)と内部クロック(ICrock)の何れかに同期して、メモリセルユニットのデータ線からデータを読み出すことで、順序回路要素としてのFF(フリップフロップ)の機能を提供する。なお、外部クロック(OCrock)と内部クロック(ICrock)は、例えば、内部クロックの周期を短周期とすることで、内部クロック同期時に動作を早めるなどの作用が得られる。外部クロックと内部クロックの切り替えは、メモリセルユニット31にクロック制御用のデータを記憶する1ビット列を設けて、真理値表データによりそのビット列を外部から書き換え可能としている。
データセレクタ13は、読出用データRD、又は、書込用データWDを切り替える選択回路である。
[1.2]メモリセル
図3Bは、シングルポートのメモリセルの一例を示す図である。メモリセル(「記憶素子」とも言う)は、デコード信号の信号線であるワード線と、ビット線の交差点に配置される。図3Bに示される記憶素子40では、pMOS(Metal Oxide Semiconductor)トランジスタ161、162、及び、nMOSトランジスタ163、164、165、166を備える。pMOSトランジスタ161のソースと、pMOSトランジスタ162のソースとは、VDD(電源電圧端)に接続する。nMOSトランジスタ163のドレーンと、nMOSトランジスタ164のドレーンは、VSS(接地電圧端)に接続される。
nMOSトランジスタ165のドレーンは、ビット線BLに接続される。nMOSトランジスタ165のゲートは、ワード線WLに接続される。nMOSトランジスタ166のドレーンは、ビット線qBLに接続される。nMOSトランジスタ166のゲートは、ワード線WLに接続される。
上記構成により、書き込み動作では、記憶素子40は、ワード線WLの信号レベル「H(High)」により、ビット線BL及びビット線qBLから伝えられた信号レベルを、pMOSトランジスタ161、162、nMOSトランジスタ163、164に保持する。読み出し動作では、記憶素子40は、ワード線WLの信号レベル「H」により、pMOSトランジスタ161、162、nMOSトランジスタ163、164に保持された信号レベルを、ビット線BL、及び、ビット線qBLに伝える
[1.3]2メモリセルユニット型MLUT
図4は、2メモリセルユニット型のMLUTの一例を示す図である。図4に示すMLUT30は、矩形状であり、後述する双方向のアドレス線又はデータ線接続に限定される双方向型MLUTである。MLUTは、一辺において複数のアドレス線又は複数のデータ線で他の記憶部に接続し、及び、前記一辺と反対側の他辺において複数のアドレス線又は複数のデータ線で他の記憶部に接続するとともに、複数のメモリセルユニット31A、31Bを有する。
メモリセルユニット31A、31Bの各々は、あるアドレス線で特定されたメモリセルに記憶される値の論理演算を、データ線に出力するための真理値表データを記憶して、論理回路として動作し、及び/又は、あるアドレス線で特定されたメモリセルに記憶される値を、他のMLUTのアドレス線に接続するデータ線に出力するための真理値表データを記憶して、接続回路として動作するように構成される。
図4に示すように、AD対は、MLUT30の左右2方向に入力又は出力する。メモリセルユニット31A、31Bが有する複数のメモリセルは、一辺から入力されるアドレスのデコード信号で選択されて、一辺における第1複数データ線に出力する第1真理値表データ及び他辺における第2複数データ線に出力する第2真理値表データを記憶する。
メモリセルユニット31Aは、左側(一辺)から入力されるアドレス信号A0〜A3の出力データD0〜D7を、左側への出力D0〜D3(「第1複数データ線」に相当)に出力し、及び、他のメモリセルユニット31B側(他辺)への出力D4〜D7(「第2複数データ線」に相当)に出力する。なお、出力D0〜D3のように、信号入力方向に、出力を戻す接続構成を、以下で「帰還」と言う。
メモリセルユニット31Aの出力D0〜D3用のメモリセルは、帰還方向の真理値表データ(第1真理値表データ)を記憶し、出力データD0〜D7用のメモリセルは、右側から左方向の真理値表データ(第2真理値表データ)を記憶する。メモリセルユニット31Bも同様に、入力されるアドレス信号A4〜A7の出力データD0〜D7を出力し、入力アドレス側への出力D4〜D7、及び、他のメモリセルユニット側への出力D0〜D3に出力する。
両メモリセルユニットの出力信号の接続部分は、ワイヤードORを構成する、又は、論理和(OR)回路で接続されているので所定のデータを転送できる。
MLUT30は、双方向型MLUTであるが、原則として、往路方向(左から右への方向)では、アドレスA0〜A3を使い、復路方向(右から左への方向)では、アドレスA4〜A7を使う。往路方向に使う真理値表データと、復路方向に使う真理値表データはそれぞれ用意される。
なお、帰還処理を行わない場合、真理値表データは、メモリセルユニット31AのD0〜D3およびメモリセルユニット31BのD4〜D7のデータを「0」とする。また、逆に帰還処理をする場合は、メモリセルユニット31AのD4〜D7およびメモリセルユニットB31のD0〜D3を「0」にする。
なお、図4では、2つのメモリセルユニット31A、31Bが、一方向へのデータ接続と、帰還方向へのデータ接続を有しているが、何れか1つのメモリセルユニットが、帰還方向へのデータ接続をなくすことでメモリセルの量を減らしてもよい。その場合、1つのメモリセルユニットは、左右両方向へのデータ流れをもち、他のメモリセルユニットは、左方向のみのデータ流れをもつ。
図5は、MLUTの回路例を示す図である。図5に示すMLUT30は、メモリセルユニット31A、31B、アドレスデコーダ9A、9B、アドレスセレクタ11A、11B、I/O(入出力)バッファ12A、12B、及び、データセレクタ13A、13Bを有する。メモリセルユニット31A、31Bは、それぞれ、アドレスデコーダ、アドレスセレクタ、I/Oバッファ、及び、データセレクタを有する。
メモリセルユニット31A、31Bはそれぞれ、左方向および右方向(折り返し方向)へ接続するための真理値表データを記憶する。アドレスデコーダ9Aは、左側から入力されるアドレスA0〜A3をデコードする。アドレスデコーダ9Bは、右側から入力されるアドレスA4〜A7をデコードする。
アドレスセレクタ11A、11Bは、書込用アドレスAD及び論理アドレスA0〜A3、A4〜A7を選択する。この例では、書込み動作と、論理動作の何れかのみを行うシングルポートメモリセル(図3B)である。デュアルポートメモリを使用する場合、メモリセルへの読出し及び書込みが同時にできるので、アドレスセレクタ11A、11Bは不要となる。
I/Oバッファ12A、12Bは、外部クロック(OCrock)と内部クロック(ICrock)の何れかに同期して、メモリセルユニットのデータ線からデータを読み出すことで、FFの機能を提供している。なお、外部クロック(OCrock)と内部クロック(ICrock)は、例えば、内部クロックの周期を短周期とすることで、内部クロック同期時に動作を早めるなどの作用が得られる。外部クロックと内部クロックの切り替えは、メモリセルユニットにクロック制御用のデータを記憶する1ビット列を設けて、真理値表データにより、そのビット列を外部から書き換え可能としている。なお、I/Oバッファ12A、12Bは、メモリセルのビット線から出力される電圧を増幅するセンスアンプを含んでいる。
データセレクタ13A、13Bは、出力データRD、又は、書込みデータWDを切り替える選択回路である。
このように、上記MLUTを有するMRLDは、隣接するMLUTに対して複数ビットのデータ処理を行うとともに、複数のメモリセルユニットで記憶部を構成する。メモリセルユニットは、アドレス線の二乗に比例して増えるので、データ線の数は同じであっても、各メモリセルユニットのアドレス数を少なくすれば、トータルに必要なメモリセルの数を少なくすることができる。
[2]多方向型MLUT
図6は、MLUT同士の接続が1つのアドレス又はデータ線で接続される構成例を示す図である。図6に示されるMRLD20は、MLUT同士の接続が1つのアドレス又はデータ線で接続するように構成されるMLUT30a〜30fが示される。このような構成は、隣接するMLUTが1つのAD対で接続するので、隣接するMLUTと送信するデータは、1ビットとなる。このように、隣接するMLUTと、多方向で接続し、伝送ビット幅が1ビットであるMLUTを「多方向型MLUT」と呼ぶ。特許文献4の図31A〜図31Dでは、“be_adder”等単純な回路構成をMRLDで実現する場合に、MLUTの使用数が最も少なくなることが開示される。
なお、図6に示すように、双方向の矢印は、AD対を示し、図4のように一方向の矢印を示す場合、アドレス線およびデータ線の何れかを示す。
図7は、論理コーンの一例である。論理コーンを用いて、多方向型MLUTの適用が困難なケースを説明する。論理コーンとは、FF等で構成されるレジスタ、又は、入出力によって囲まれる組合せ回路のグループを言う。図7に示される論理コーンには、図示しないが、同一クロックで動く複数のFFがあり、FFの出力とFFの入力の間を、組合せ論理回路が繋いでいる。C言語合成では演算において、変数をFF表現して入出力に配置して回路データを、FF間に生成する。入力端子列1010にあるクロックがFFに入ると、全FFが値を更新して、FFの値が更新されたら全組み合わせ回路が動作し、次のクロックが来るまでの間に、影響範囲が下段の回路に広がり、出力端子列1020にあるFFの入力が確定する。このようにして、1つのFF出力に影響を与える全ての入力及び論理回路素子によって定義される集合である論理コーン1000が形成される。図7に示すMLUT段数については後述する。
[2.1] 多方向型MLUTの問題 接続使用のMLUTの増加
多方向型MLUTでは、1つのMLUTが所望の論理コーンを構成可能である場合、接続要素として使用されるMLUTが減り、結果としてMLUT使用数が減る。しかしながら、複数のMLUTに論理コーンが渡る場合、MLUT間のデータ伝送幅が1ビットであるので、MLUT同士の接続において、データの行き分れが生じて、接続要素として使用されるメモリ領域が増える。このように、所望の論理コーンを構成するために、複数のMLUTが必要になり、各MLUTに、論理回路が分割して構成される場合を、「MLUT分割(「クラスタリング」ともいう)」と呼ぶ。また、C言語等の高位言語ではビット数は複数ビットになる。C言語等でコーディングした機能を、「多方向型MLUT」で実現する場合、複数のビットをビット分割して演算し、演算後のデータを合成するなどのデータの流れが生じるので、接続要素として使用するMLUTが増えて、MLUT使用数は増えてしまう。
MLUTが接続するデータ線及びアドレス線を増やして、それに伴いメモリセルユニットを大型化すると、MLUT間のデータ伝送がなくなり、接続要素として使用するMLUTは減る。しかしながら、このようにデータ線及びアドレス線を増加すると、隣接するMLUTの接続数も増え、各々のMLUTが、様々な方向に入出力が増えるので、構成が困難になる。
FPGAの論理合成手法として、C言語から機能を構築する高位合成手法が発表されており、実用化されている。図8は、FPGAにおけるC言語による論理合成の一例を示す図である。910は、C言語記述の例を示す。920は、FPGAにおけるC言語高位合成の例である。930は、ASICにおけるC言語高位合成の例である。C言語高位合成920では、C言語の変数をレジスタとしてその間の演算を組合せ回路で表現して機能を構築する。この例はFPGAに実装する例であるが、FPGAの論理表現に併せて論理を分解して動作させる。C言語高位合成930では、FPGAでなくASICで実装した例であるが、ASICでは論理表現が自由なので一括で処理してレジスタで変数データを処理する。このように、C言語の処理はデータ列を処理してレジスタに蓄え次の処理(データパス処理)をするのが一般的である。
図8に示したように、C言語はデータの流れを記述して、それを制御して動作を構築するので、データの流れは一方向になる。そして、そのデータ・ビットは8ビットや16ビットなどのデータ列になっている。C言語合成ツールではこのデータ列の長さを選択できるが、少なくとも3ビット以上のデータ列で記述するのが一般的である。
MRLDも同様に、C言語等の高位言語から論理合成する手法の開発が考えられる。一般的にC言語合成では最終的な組み合わせ表現を取るのに、対象となるデバイスの論理ライブラリを構築しておき、そのライブラリを参照しながら組み合わせ回路を構成していく。MRLDのMLUTに合った論理ライブラリを求めれば原理的に実施できるのであるが、多方向型MLUTでは、どの方向のアドレスを入力にして、どの方向のデータ線を出力にするかが自由なので、確定的な論理ライブラリが作成できない。
以上のように、多方向型MLUTは、論理コーンの実現や、マルチビット処理で生じる組合せ回路のMLUT分割と、それに伴うMLUT使用量の増加、及び、論理ライブラリの構築が困難である等の問題がある。
[3]双方向型MLUT
図9は、MLUT間の接続が複数のアドレス又はデータ線で接続される構成例を示す図である。図9に示すMLUT30A〜30Eは、データの出力端にあるFF(図3Aで説明したI/Oバッファ)を有している。図2に示される論理部アレイ60では、MLUT30Aは、隣接する他のMLUT30B〜30Eと2本のペアを構成するアドレス線又はデータ線で接続されており、つまり、MLUT同士の接続が複数ペアのアドレス又はデータ線で接続するように構成される。このような構成は、隣接するMLUTが複数のAD対で接続することになるので、隣接するMLUTと送信するデータは、複数ビット(図2の例では、4ビット)となる。
また、図9に示すように、それぞれのMLUTは、矩形状をしており、アレイ状の配置から少なくとも一部をずらして配置することで、1つのMLUTの出力線(「データ線」とも言う)が、2つのMLUTの入力線(「アドレス線」とも言う)として接続されている。
それぞれのMLUTが複数の入力線を有しており、さらに、その出力線が2つのMLUTの入力に接続されている。つまり、MLUTは、入力線および出力線の対を少なくとも2のn倍(nは2以上の整数)本有する場合、MLUT同士は、1つのMLUTからの2のn倍本の出力線が、他の2つのMLUTのn本の入力線に接続される。
さらに、アドレス線及びデータ線は、多方向ではなく、双方向での接続に限定されている。また、双方向とするものの、隣接するMLUTを2つに限定せず、それ以上として、構成可能性を上げるために、入力方向及び出力方向に、それぞれ複数のMLUTと接続可能となっている(「交互配置」と言う)。例えば、MLUT30Aは、右側方向でMLUT30B及び30Cと、左側方向でMLUT30D及び30Eと接続している。このようなMLUTを「双方向型MLUT」とも言う。
多方向型MLUTと異なり、双方向型MLUTは、データ線及びアドレス線を複数本とすることで、マルチビットのデータ処理が可能になり、さらに、入力及び出力方向のデータの流れの方向が限定できるので、論理ライブラリの作成も容易になる。
つまり、隣接するMLUTに対して複数ビットのデータ処理が可能になるので、複数ビット演算を行うプログラム(例えば、上記のC言語)から構成させるデータ処理において、使用するMLUTの数を減らすことができる。
[3.1] 必要な双方向型MLUTの数の論理段数
以下では、論理コーンに対して必要になる双方向型MLUTの決定方法について、n値という定義を用いて説明する。図10は、n値を説明する図であり、図9で説明したMLUT30A及び30Cを用いてn値を説明する。隣接するMLUT30A及び30Cに向かい合う1辺から出るアドレス線又はデータ線の数1030を「n値」と定義する。図1の多方向型MLUTでは、隣接するMLUTの分だけ辺があるので、1辺から出るアドレス線又はデータ線は「1」であり、n値は「1」である。図4及び図5の4ビット長型MLUTは、矩形であるが、複数ビット伝送を要件としているので、1辺からでるアドレス線又はデータ線は「4」であり、n値は「4」である。双方向型MLUTでは、隣接するMLUTとの関係で、データ伝送量がn値の半分となり、且つ、信号パスが1段ずれるので、最長信号パスを実現するには信号パスを(n値/2)で割った段数だけ必要である。なお、「段数」とは、回路において、接続する素子の数を示す。MLUTの「段数」も、通常の回路の段数のように、接続するMLUTの数を示す。しかし、図9に示されるように、MLUTは、前段にそれぞれ接続する2つのMLUT、後段にそれぞれ接続する2つのMLUTがあるので、直線的な接続ではなく、左右、上下などの方向に接続するMLUTの数を示す。これらの具体的な構成については、図11Bで説明する。
MLUT論理段数は、以下の式で示される。
式1: MLUT論理段数 = m/(n値/2)
なお、ここでmは、信号バスであり、論理コーンにする入力信号線を示す。
図10に示す例では、n値は「4」であるが、隣接するMLUTは、一方向に2つあるので、(n値/2)は「2」となる。C言語の論理演算が、8ビットで演算されており、論理コーンの入力信号線mが8本であった場合、MLUT論理段数は、「8/(4/2)=4」となる。つまり、8ビット演算をMLUTで行う場合、4つの段数を構成するMLUTが必要になる。
図11Aは、論理コーンを形成する回路の一例を示す図である。図11Aに示す回路1050Aは、9本のデータ線である信号パス(X0,Y1〜X3,Y3,C−1)に対して下記式に示す論理演算を行い、論理値C3を出力する。つまり、図11Aに示す回路は、9ビット演算を行う論理コーンである。
式2:C3=G3+G2・P3+P2・P3・G1+P1・P2・P3・G0+P3・P2・P1・P0・(C−1)
図11Bは、図11Aで示した論理コーンを実現する複数のMLUTである。なお、図11Bでは、MLUTのn値は、4である。論理コーンの信号パスは「9」であるため、MLUT論理段数は、「9/(4/2)=4.5」であるので、「4.5」に相当する「5」の段数を構成するMLUTが必要になる。図11Bでは、図11Aで説明した論理コーンを構成する複数のMLUTが示されるが、左右、上下などの方向を問わず互いに接続するMLUTの数は「5」である。ここで、論理コーンを構成する各MLUT30の接続、及び、論理演算が明確になるので、MLUTの真理値表データの生成が可能になる。
[2.2] 双方向型MLUTの分割例
図12〜図14は、双方向型MLUT分割の例を示す図である。図12は、右方向へのデータ接続を示すMLUTの図である。図12の1040は、8ビットの入力に対して必要なMLUT論理段数を示す。図12に示されるように、論理コーンを構成する組み合わせ回路を、MLUT論理段数で分割することによりMLUT分割が出来る。MLUT分割された組み合わせ回路に対して、入力の全ての組み合わせ(n値の場合は2になる)に対して論理演算を実施し、その真理値データを求めることができる。
図13及び図14は、双方向型MLUTによるデータの折り返し接続を示す図である。MLUTは双方向に接続されているため、複数のMLUTを使用することでデータを、右方向から、左方向へ戻す折り返しデータ接続が可能である。点線で示す例は、折り返されたデータ接続を示す。なお、右方向の流れは図示していないが、図12の1040で示す右方向の流れを維持したまま、折り返しにより、左方向のデータの流れがある。図13では、MLUT30B及び30Cが、データの折り返し接続を行う例を示し、図14では、MLUT30Aが論理演算とデータの折り返し接続を行う例を示している。
なお、折り返しは、回路構成において既に規定されている、2メモリセルユニット型MLUTを使用した方が、未使用のメモリセルを少なくすることができ、効果的である。
図13に示すように、双方向型MLUTにおいて、MLUT端に信号を帰還する真理値データを書き込ませれば、折り返しが実施できる。また、この例では、往路方向の真理値データに加えて、復路方向の真理値データは別に設ける必要があるので、1つのMLUTは、往路用の真理値データに加えて、復路用の真理値データを記憶する必要があるので、MLUT数を下げることができる。従前、双方向型のMLUTは、図13及び図14に示すように、折り返し処理ができる構成であった。しかし、本実施形態に係るMLUTは、1つのMLUTで、両方向のデータ流れを実現する2つの真理値表データを記憶するように構成される点で、両者は、明確に区別される。
[2.3] 双方向型MLUTにおけるビット分割
また、C言語からの直接真理値データを求める論理構成手法について述べる。C言語でのint演算では、例えば、16ビットである。そのため、16ビットに相当するレジスタを生成して、そのレジスタに保持されるビット値の演算により組み合わせ回路を実現する。16ビットのn値を持つMLUTがあればその結果を真理値データにして動作を構成できるが、n値を16とするMLUTは、16本のアドレスを用いて、2の16乗のメモリセルが必要になるので、MLUTのような構成ユニットとして使用する場合、未使用メモリ領域が多くなり現実的でない。そこで、ビットを分割してMLUTにあった演算手法に記述変換をする。n値が4のMLUTであれば、16ビットを4分割したC言語記述をする。このようなことはC言語記述では一般的である。例えば、32ビット演算はflotを使い記述するが、intを使い記述することはある。
図15は、双方向型MLUTにおけるFFの使用の例を示す図である。4ビットに分割した記述をC言語合成に掛ければ、1040A及び1040Bに示すような、MLUT論理段数が決まる。60Aは、論理回路において、MLUTの各FFを使用する例であり、60Bは、論理回路において、FFを禁止する例である。各MLUTにFFがあることはクロック遅延を起こすので、中間のMLUTのFFを禁止し60Bに示すように、FFの使用を停止することにより動作を高速化できる。
[3]論理構成装置
MRLDの論理構成を行うには、抽象的な回路の動作に関するハードウェア記述言語からネットリストを生成し、それを、実際のデジタル回路に割り当てる(以下「論理合成」と言う)論理構成方法が必要である。なお、「ネットリスト」とは、電子回路における端子間の接続情報のデータのことである。電子回路の分野では、各端子間を結んだ信号線や端子間のつながりを指して「ネット」と呼んでいる。MRLDの機能搭載例として、論理合成された回路群を選択して入力ピンから逐次配置する方法が考えられる。しかし、配置についてはその後の回路の配置エリアを確保して配置しなければならない。
C言語ではレジスタとその間の演算が主動作となるが、レジスタはFFであり、演算は組み合わせ論理であることから、基本的にC言語から論理合成が可能となる。レジスタ宣言からFFの配置を決め、演算の動作から真理値データが生成されるので、論理回路合成を経なくても論理合成が可能になる。従来、再構成可能な半導体装置の論理合成、特にC言語からの合成は、一度RTL記述(Verilog,VHDL)に変換して、その後、論理回路生成をして論理構成をしなければならなかった。そのために、何度かの情報処理を必要としており、煩雑であった。本実施形態に係る論理構成手法では、C言語からの論理合成が可能となり、簡便である。
MRLDにとって、真理値表の作成と、その真理値表をMLUTに書き込む作業が、FPGAの論理構成に相当する。
論理構成装置は、本実施形態に係る論理構成用のソフトウェアプログラムを実行する情報処理装置によって実現される。図16に、情報処理装置のハードウェア構成の一例を示す。情報処理装置210は、プロセッサ211と、入力部212と、出力部213と、記憶部214とドライブ装置215を有する。プロセッサ211は、入力部212に入力された配置・配線用のソフトウェア、集積回路を設計するためのC言語記述またはハードウェア記述言語(HDL)などの回路記述言語、及び、上記ソフトウェアを実行することによって生成される真理値表データを記憶部214に記憶する。また、プロセッサ211は、配置・配線用のソフトウェアを実行して、記憶部214に記憶された回路記述に対して以下に示す配置・配線の処理を行い、出力部213に、真理値表データを出力する。出力部213には、MRLD20(図16には示さず)を接続することができ、プロセッサ211が論理構成処理を実行して、生成した真理値表データを、出力部213を介してMRLD20に書き込む。出力部213は、外部ネットワークと接続していてもよい。この場合、論理構成用のソフトウェアプログラムは、ネットワークを介して送受信される。ドライブ装置215は、例えば、DVD(Digital Versatile Disc)、フラッシュメモリなどの記録メディア217を読み書きする装置である。ドライブ装置215は、記録メディア217を回転させるモータや記録メディア217上でデータを読み書きするヘッド等を含む。なお、記録メディア217は、論理構成用のプログラムを格納することができる。ドライブ装置215は、セットされた記憶媒体217からプログラムを読み出す。プロセッサ211は、ドライブ装置215により読み出されたプログラムを、記憶部214に格納する。なお、情報処置装置210は、本実施形態に係る論理構成方法を実行する論理構成装置として動作する。
[4]論理構成方法
本実施形態に係る論理構成方法は、回路構成を記述した回路記述(HDLなど)から、論理回路データ、順序回路データ、及び、前記論理回路データと順序回路データの接続情報を記述するネットリストを生成し、生成したネットリストから、前記接続情報に従って、前記論理回路データと前記順序回路データをそれぞれ前記メモリセル及び論理回路要素に割り当てる。
前記ネットリスト生成ステップは、論理回路データ、順序回路データ、及び、前記論理回路データを含む並列入力直列出力形のシフトレジスタ(「パラレルシリアル変換シフトレジスタ」)を生成することを含む。
論理回路ミュレーションではデバイスとノードの結線情報で表示するのではなく端子名を使い結線情報を表示する手法を使用している。本実施形態に係る論理構成方法は、論理素子とFFなどの論理回路レベルでネットリスト情報を持たせる。端子名とノードを対応させたデータを保持し、変更後の確認が容易になり、また、デバイスによる回路の簡略化や回路ブロックの再構成が容易になる。
図17は、回路記述と、デバイスレベルのネットリストの相違を説明する図である。図17に示す940Aは、FFの回路ブロック、940Bは、FFの回路記号、940Cは、FFのトランジスタレベルの回路図をそれぞれあらわす。
940Aでは、記述例としては、「FF1,FF2,FF3,FF4」と示される。940Bでは回路記述は以下のように示される。
Module dff(q,d, clk);
input SET, RST, clk,d;
output q,q(-);
wire SET,RST,clk,d;
wire n1o, n2o, n3o, n4o;
nand n1(n1o,SET,n4o,n2o);
nand n2(n2o,RST,n1o,clk);
nand n3(n3o,n4o,n2o,clk);
nand n4(n4o,d,RST,n3o);
nand n5(q,SET,n2o,q(-));
nand n6(q(-),RST,n3o,q);
endmodule
940Cでは回路記述は以下のように示される。
NAND(VDD:3, A:1, B:2, Y:4, GND:0)
⇒* A CMOS NAND gate
MP3 4 1 3 3 CMOSP W=28.0U L=2.0U AS=252P
AD=252P
MP4 4 2 3 3 CMOSP W=28.0U L=2.0U AS=252P
AD=252P
MN1 4 1 5 0 CMOSN W=10.0U L=2.0U AS=90P AD=90P
MN2 5 2 0 0 CMOSN W=10.0U L=2.0U AS=90P AD=90P
.MODEL CMOSN NMOS(〜)
.MODEL CMOSN PMOS(〜)
図17に示すように、本実施形態に係る論理構成方法は、回路記述言語から、トランジスタレベル940Cのネットリストではなく、論理回路レベル940Bのネットリストを生成する。
図18は、再構成可能な半導体装置が実現するパラレルシリアル変換シフトレジスタの一例である。図示されるパラレルシリアル変換シフトレジスタの回路図950Aは、MLUT30が機能的に実現する順序回路であり、物理的には、図3Aに示すI/Oバッファ12によって実現される。950Bは、図18に示すパラレルシリアル変換シフトレジスタのタイムチャートである。
図19は、図18の回路を再構成するための回路記述の一例である。図19の回路記述は、Verilog-HDLであるが、素子レベルではなく、論理回路レベルで記述されている。FFの内部構造も回路記述されている。
図20は、図18の回路を再構成するための回路記述の別な一例である。図20の回路記述は、FFは、ゲートで実現されている。
さらに、ネットリストから、図11A及び図11Bで説召したように、順序回路を含んで成る論理コーンを抽出し、論理コーンに対する入力線の数を、2分のnで除算した数に合わせて、前記論理コーンの一部を構成するとともに、メモリセルユニットに記憶するための真理値表データを生成する。
図21は、論理構成処理の一例を示すフローチャートである。論理構成処理は、図16に示す情報処理装置が実行する。まず、論理合成(S101)を行うことにより、回路構成を記述した回路記述に基づいて、回路の接続情報を有するネットリストを生成する(S102)。これらの処理は、一実施例によれば、C言語等の高級言語に基づいて、ネットリストを生成するが、当該処理の詳細は、図26で説明する。
次に、ネットリストから、帰還ネット及びFFを削除して、バッファに置き換える(S103)。このとき、接続情報を保持し、後のS109で削除した帰還ネットとFFを適用可能にする。
順序回路を含んで成る論理コーンを抽出する(S104)。論理コーンの抽出は、生成したネットリストから直接論理コーンを生成する処理と、ネットリストからスキャン化された順序回路データセットと、グルーロジックに分けて、そのグルーロジックから論理コーンを抽出する処理の2つの方法があるが、後者は、図28を用いて後述する。
次に生成した論理コーンにおいて、FFが論理コーン末端に収まるか判断する(S105)。図22は、FFが論理コーン末端に収まる例を示す図である。フリップフロップ出力Sが、論理コーンを形成するMLUTから出力されるため、FFが論理コーン末端に収まる。
図23は、FFが論理コーン末端に収まる例を示す図である。論理コーンの末端にあるMLUT30は、4入力1出力である必要があり、図示されるように、その入出力要件を満たしている。
図24は、折り返しをするために、MLUTを追加する一例である。図22で折り返すと交互でMLUTが重ならないのでまた1段MLUを追加している。その場合、MLUT段数を増やして(S106)、FFが論理コーンの末端にあるようになる。
図25は、双方向MLUTを使って折り返し処理した例である。折り返し処理でも同様に、FFが論理コーン末端に収まるか判断し(S107)、末端にFFがなければ、MLUT段数を追加する(S108)。
論理コーンの割り当てができれば、ステップS103で削除した帰還ネット及びFFを、MLUTに割り当てる(S109)。
次に、MLUT論理段数(論理コーンに対する入力線の数を、2分のnで除算した数に相当するMLUTの段数)で、論理コーンを構成する複数のMLUTのための真理値表データを生成する(S110)。真理値表データの生成では、2メモリセルユニット型MLUTの折り返し処理をするための第1及び第2真理値表データの生成を含む。言い換えれば、当該ステップは、一辺におけるアドレス入力に対して、一辺から論理値を出力するための第1真理値表データと他辺から論理値を出力するための第2真理値表データとを生成する。第1真理値データは、記憶部の一辺から入力されるアドレスのデコード信号で選択されて、一辺における第1複数データ線に出力する真理値表データであり、第2真理値表データは、記憶部の他辺における第2複数データ線に出力する真理値表データである。
次に、真理値表データをMRLDに出力して(S111)、処理を終了する。なお、S111の代わりに、論理構成装置がシミュレーションしたMRLDに真理値表データを割り当ててすることで、動作検証をしてもよい。
[4.1]高級言語からのネットリストの生成
図26は、C言語等の高級言語に基づいて、ネットリストを生成する処理の一例を示す。双方向型MLUTは、複数のアドレス入力を有するが、C言語などの高級言語の場合、32ビットの演算処理などがあり、それらをMLUTのアドレス入力数にビット分割する必要がある。
まず、高級言語で記述されたプログラムの中の変数ビットを、より小さいビットに型変換する(S201)。例えば、Float型の変数ビットを、よりビットの小さいInt型の変数ビットに変換する。これにより、MLUTの入力数に比較的近い演算となり、論理コーンを小さくすることができる。次に、ループ展開する(S202)。ループ展開により、毎回の繰り返しごとに発生する「ループの終了」条件のテストを減少させるので、真理値表データの数を少なくすることができる。次に、並列化処理を行う(S203)。並列化処理は、処理をいくつかの小さな処理に分割し、それらの小さな処理を同調させて並列実行し、最終結果を得る処理である。MRLDは、多入力多出力が可能なので、並列化処理が容易である。これにより、MRLDの処理能力が向上する。
[4.2]スキャン化
図27には、生成されたネットリストで示されるグルーロジック1000AとFFの概略を示す。論理回路には組合せ回路と順序回路があるが、組合せ論理回路はグルー・ロジックと言う。図28は、スキャン化された順序回路データセットと分けたグルーロジックから論理コーンを抽出する処理を示すフローチャートである。
生成されたネットリストに対して、スキャン化可能なFFを抽出する(S301)。スキャン化とは、論理回路内のレジスタを、論理合成された回路の内部のFFを、スキャン機能付きFF(スキャンFF)に置き換えることにより、FFを最適配置することである。なお、FFがランダムにスキャン化されると配線が混線して有効で短いチェーン配線が構成できないため、論理状態を見て最適最短のチェーンを形成するように、抽出する。
図29は、スキャン化により新たに生成されたグルーロジックと、スキャンFFの概略を示す。スキャン化により、図27のグルー・ロジック1000Aを、スキャンFF1100と接続するグルーロジック1000Bに構成し、図27に示す回路内のFFを、スキャンFF1100に置き換える。また、このようにすることで、スキャンFF1100は、グルーロジック1000Bを挟む形で配置される。図27と、図29を比較すると、グルーロジックとFF間の接続関係が、図27に示す接続関係の方が簡略化されていることがわかる。このような簡略化により、FFとグルーロジック間の接続に必要となる配線論理を大幅に減らすことができる。
論理構成については、今までのMRLDの論理構成は組み合わせ回路と順序回路とを区別せず、回路をMLUTに配置して配線していた。MRLDはMLUTでの組み合わせ回路や配線がメモリの記憶情報で構成されることから、図27に示すように、グルーロジックとFFが混在し、このまま論理構成すると、FFと組合せ論理回路を接続する配線論理が必要になるので、配線論理が増えて合成効率が下がる。しかし、順序回路を先に配置すれば、FFと組合せ論理回路を接続する配線論理の量が相対的に減少するので、組み合わせ回路間の配線論理が削減できる。
抽出処理により特定されたスキャン化可能なFFから、真理値表のデータセットを生成する(S302)。スキャンFF1100を抽出する。そして、論理合成したFF間には複数のMLUTが必要になるので、これを組み合わせ回路を表現する真理値表データを生成する。当然、FFなので、配線論理も含まれるので、生成する真理値表データには、FF間の論理状態を配線論理で表真理値も含まれる。ここで生成される複数のMLUTにそれぞれ書き込むための複数の真理値表データは、FF間の接続状態を表現するので、図27に示すグルーロジックとFF間の配線論理は生成されない。
次に、FFの配置を行う(S303)。このステップでは、同期選択したMLUTにFF用の真理値データを割り当てる処理が行われる。当該処理も、シミュレートしたMLUTに真理値表を割り当てる処理である。なお、当該MLUTのシミュレーションでは、回路記述を実現する真理値表をMLUTに書き込んだ場合、動作速度を計るタイミング分析を少なくとも行う。そのため、当該シミュレーション環境では、所望の回路記述を実現するMLUT数に相当する配線長を計算し、さらに配線帳による信号遅延を計算し、クロック同期などのタイミング分析を行う。
そして、グルーロジックの配置を行う(S304)。このステップでは、非同期選択したMLUTにグルーロジックの真理値データを割り当てる処理が行われる。当該処理も、シミュレートしたMLUTに真理値表を割り当てる処理である。
なお、S304では、必要に応じて、図12〜図14で説明したMLUT分割又は結合を行ってもよい。MLUT分割又は結合とは、ネットリストを、MLUTに適当なネットリストとすることである。分割ステップでは、1つのMLUTに割り当てる1つの真理値表に所定の論理回路を包含できるように、論理回路の入力及び出力数を所定のAD対の数以下にするステップである。結合は、MLUTに構成される真理値表の数を最適化するために、1つのMLUTに包含できる2つ以上の真理値表を1つの真理値表にまとめる。このようなMLUT分割又は結合により、MLUTに構成される真理値表の数を最適化することができる。
次に、真理値表を割り当てられたMLUTが所定のMLUT数や、動作速度などの条件を満たすか評価する(S305)。評価が条件を満たせば(S305 Yes)、実際の真理値表データを生成し、記憶部214に格納、及び/又は、出力部213を介して、MRLDに書き込み、動作させる処理を行う。このとき、生成された真理値表は、ステップS302で抽出されたスキャン化すべき順序回路データセット(つまりスキャンFF)から、複数のMLUTのうちの第1セットに書き込むための第1真理値表データセットと、ネットリストの組合せ論理回路データセットから、複数のMLUTのうちの第2セットに書き込むための第2真理値表データセットが生成される。条件を満たさない場合(S305 No)、S303に戻り、FF及びグルーロジックのMLUTへの再配置を再度行うことを繰り返す。
[5]MLUTを論理又は接続動作
MRLDでの論理又は接続動作の説明を以下にする。なお、説明としては多方向MLUTの例で行う。
A.論理要素
図30は、論理要素として動作するMLUTの一例を示す図である。図30では、説明を簡単にするために、アドレスセレクタ、データセレクタ、及びI/Oバッファの記載は、省略される。図30に示すMLUT30a、30bは、4つの論理用アドレス入力LA線A0〜A3と、4つの論理動作用データ線D0〜D3と、4×16=64個の記憶素子40と、アドレスデコーダ9とをそれぞれ有する。論理動作用データ線D0〜D3は、24個の記憶素子40をそれぞれ直列に接続する。アドレスデコーダ9は、論理用アドレス入力LA線A0〜A3に入力される信号に基づき、16本のワード線のいずれかに接続される4つの記憶素子を選択するように構成される。この4つの記憶素子はそれぞれ、論理動作用データ線D0〜D3に接続され、記憶素子に記憶されるデータを論理動作用データ線D0〜D3に出力する。例えば、論理用アドレス入力LA線A0〜A3に適当な信号が入力される場合は、4つの記憶素子40a、40b、40c、及び40dを選択するように構成することができる。ここで、記憶素子40aは、論理動作用データ線D0に接続され、記憶素子40bは、論理動作用データ線D1に接続され、記憶素子40cは、論理動作用データ線D2に接続され、記憶素子40dは、論理動作用データ線D3に接続される。そして、論理動作用データ線D0〜D3には、記憶素子40a〜40dに記憶される信号が出力される。このように、MLUT30a、30bは、論理用アドレス入力LA線A0〜A3から論理用アドレス入力LAを受け取り、その論理用アドレス入力LAによってアドレスデコーダ9が選択する4つの記憶素子40に記憶される値を、論理動作用データ線D0〜D3に論理動作用データとしてそれぞれ出力する。なお、MLUT30aの論理用アドレス入力LA線A2は、隣接するMLUT30bの論理動作用データ線D0と接続しており、MLUT30aは、MLUT30bから出力される論理動作用データを、論理用アドレス入力LAとして受け取る。また、MLUT30aの論理動作用データ線D2は、MLUT30bの論理用アドレス入力LA線A0と接続しており、MLUT30aが出力する論理動作用データは、MLUT30bで論理用アドレス入力LAとして受け取られる。例えば、MLUT30aの論理動作用データ線D2は、MLUT30aの論理用アドレス入力LA線A0〜A3に入力される信号に基づき、論理動作用データ線D2に接続される16個の記憶素子のいずれか1つに記憶される信号をMLUT30bの論理用アドレス入力LA線A0に出力する。同様に、MLUT30bの論理動作用データ線D0は、MLUT30bの論理用アドレス入力LA線A0〜A3に入力される信号に基づき、論理動作用データ線D0に接続される16個の記憶素子のいずれか1つに記憶される信号をMLUT30aの論理用アドレス入力LA線A2に出力する。このように、MRLD同士の連結は、1対のアドレス線とデータ線とを用いる。
なお、図30では、MLUT30a、30bが有するAD対は4であるが、AD対の数は、特に後述するように4に限定されない。
図31は、論理回路として動作するMLUTの一例を示す図である。本例では、論理用アドレス入力LA線A0及びA1を2入力NOR回路701の入力とし、論理用アドレス入力LA線A2及びA3を2入力NAND回路702の入力とする。そして、2入力NOR回路701の出力と、2入力NAND回路702の出力を、2入力NAND回路703に入力し、2入力NAND回路703の出力を論理動作用データ線D0に出力する論理回路を構成する。
図32は、図31に示す論理回路の真理値表を示す図である。図31の論理回路は、4入力のため、入力A0〜A3の全ての入力を入力として使用する。一方、出力は、1つのみなので、出力D0のみを出力として使用する。真理値表の出力D1〜D3の欄には「*」が記載されている。これは、「0」又は「1」のいずれの値でもよいことを示す。しかしながら、実際に再構成のために真理値表データをMLUTに書き込むときには、これらの欄には、「0」又は「1」のいずれかの値を書き込む必要がある。少なくとも図4に示すメモリセルユニット31Aとメモリセルユニット31Bとの関係で不必要なデータは0データにする。
B.接続要素
図33は、接続要素として動作するMLUTの一例を示す図である。図33では、接続要素としてのMLUTは、論理用アドレス入力LA線A0の信号を論理動作用データ線D1に出力し、論理用アドレス入力LA線A1の信号を論理動作用データ線D2に出力し、論理用アドレス入力LA線A2の信号を論理動作用データ線D3に出力するように動作する。接続要素としてのMLUTはさらに、論理用アドレス入力LA線A3の信号を論理動作用データ線D0に出力するように動作する。
図34は、図33に示す接続要素の真理値表を示す図である。図33に示す接続要素は、4入力4出力である。したがって、入力A0〜A3の全ての入力と、出力D0〜D3の全ての出力が使用される。図34に示す真理値表によって、MLUTは、入力A0の信号を出力D1に出力し、入力A1の信号を出力D2に出力し、入力A2の信号を出力D3に出力し、入力A3の信号を出力D0に出力する接続要素として動作する。
図35は、AD対0、AD対1、AD対2、及びAD対3の4つのAD対を有するMLUTによって実現される接続要素の一例を示す図である。AD0は、論理用アドレス入力LA線A0と論理動作用データ線D0とを有する。AD対1は、論理用アドレス入力LA線A1と論理動作用データ線D1とを有する。AD対2は、論理用アドレス入力LA線A2と論理動作用データ線D2とを有する。そして、AD対3は、論理用アドレス入力LA線A3と論理動作用データ線D3とを有する。図35において、2点鎖線は、AD対0の論理用アドレス入力LA線A0に入力された信号がAD対1の論理動作用データ線D1に出力される信号の流れを示す。破線は、第2のAD対1の論理用アドレス入力LA線A1に入力された信号がAD対2の論理動作用データ線D2に出力される信号の流れを示す。実線は、AD対2の論理用アドレス入力LA線A2に入力された信号がAD対3の論理動作用データ線D3に出力される信号の流れを示す。一点鎖線は、AD対3の論理用アドレス入力LA線A3に入力された信号がAD対0の論理動作用データ線D0に出力される信号の流れを示す。
なお、図35では、MLUT30が有するAD対は4であるが、AD対の数は、特に4に限定されない。
C.論理要素と接続要素の組合せ機能
図36は、1つのMLUTが、論理要素及び接続要素として動作する一例を示す図である。図36に示す例では、論理用アドレス入力LA線A0及びA1を2入力NOR回路171の入力とし、2入力NOR回路171の出力と、論理用アドレス入力LA線A2とを2入力NAND回路172の入力とし、2入力NAND回路172の出力を論理動作用データ線D0に出力する論理回路を構成する。また同時に、論理用アドレス入力LA線A3の信号を論理動作用データ線D2に出力する接続要素を構成する。
図37に、図36に示す論理要素及び接続要素の真理値表を示す。図36の論理動作は、入力A0〜A2の3つの入力を使用し、1つの出力D0を出力として使用する。一方、図37の接続要素は、入力A3の信号を出力D2に出力する接続要素が構成される。
図38は、AD対0、AD対1、AD対2、及びAD対3の4つのAD対を有するMLUTによって実現される論理動作及び接続要素の一例を示す図である。図35に示すMLUTと同様に、AD対0は、論理用アドレス入力LA線A0と論理動作用データ線D0とを有する。AD1対は、論理用アドレス入力LA線A1と論理動作用データ線D1とを有する。AD対2は、論理用アドレス入力LA線A2と論理動作用データ線D2とを有する。そして、AD対3は、論理用アドレス入力LA線A3と論理動作用データ線D3とを有する。上述のように、MLUT30は、3入力1出力の論理動作と、1入力1出力の接続要素との2つの動作を1つのMLUT30で実現する。具体的には、論理動作は、AD対0の論理用アドレス入力LA線A0と、AD対1の論理用アドレス入力LA線A1と、AD対2の論理用アドレス入力LA線A2とを入力として使用する。そして、AD対0の論理動作用データ線D0のアドレス線を出力と使用する。また、接続要素は、破線で示すようにAD対2の論理用アドレス入力LA線A2に入力された信号をAD対1の論理動作用データ線D1に出力する。
以上説明した実施形態は典型例として挙げたに過ぎず、その各実施形態の構成要素の組合せ、変形及びバリエーションは当業者にとって明らかであり、当業者であれば本発明の原理及び請求の範囲に記載した発明の範囲を逸脱することなく上述の実施形態の種々の変形を行えることは明らかである。特に、MRLDの論理又は接続動作において、双方向MLUTを、多方向MLUTの動作とすることは実施形態の変更として可能である。
20 MRLD
30 MLUT
60 論理部アレイ
100 再構成可能な半導体装置

Claims (34)

  1. データを記憶するメモリセルを複数備えた記憶部を複数有する半導体装置の論理構成方法であって、
    それぞれの前記記憶部は、アドレス入力に対して論理値を出力するための真理値表データをそのメモリセルに記憶し、論理回路として動作するように構成され、
    前記記憶部は、入力線および出力線の対を少なくとも2のn倍(nは2以上の整数)本有し、
    前記記憶部同士は、1つの記憶部からの2のn倍本の出力線が、他の2つの記憶部のn本の入力線に接続され、
    前記論理構成方法は、
    回路構成を記述した回路記述に基づいて、回路の接続情報を有するネットリストを生成し、
    前記ネットリストから、順序回路を含んで成る論理コーンを抽出し、
    前記論理コーンに対する入力線の数を2分のnで除算した数に相当する前記記憶部の段数で、前記論理コーンを構成する複数の前記記憶部のための前記真理値表データを、生成することを特徴とする再構成可能な半導体装置の論理構成方法。
  2. 前記ネットリストの生成は、高級言語で記述されたプログラムの中の変数ビットを、より小さいビットに型変換するステップを含む、請求項1に記載の論理構成方法。
  3. 前記記憶部は、一辺と、前記一辺と反対側の他辺で他の記憶部に接続するとともに、複数のメモリセルユニットを有し、且つ、
    前記複数のメモリセルユニットの少なくとも1つが有する複数のメモリセルは、前記一辺におけるアドレス入力に対して、前記一辺から論理値を出力するための第1真理値表データと前記他辺から論理値を出力するための第2真理値表データとを記憶し、
    前記真理値表データを生成するステップは、前記第1真理値表データと、前記第2真理値表データを生成するステップを含む、請求項1又は2に記載の論理構成方法。
  4. 前記ネットリストの生成は、高級言語で記述されたプログラムに対して、ループ展開、及び/又は、並列化処理するステップを含む、請求項1〜3の何れか1項に記載の論理構成方法。
  5. 前記ネットリストから、スキャン化可能な順序回路データセットを抽出して、スキャン化された順序回路データセットを生成し、
    前記スキャン化できる順序回路データセットから、前記複数のメモリセルユニットのうち第1セットに書き込むための第1真理値表データセットを生成し、
    前記ネットリストの組合せ論理回路データセットから、前記複数のメモリセルユニットのうち第2セットに書き込むための第2真理値表データセットを生成する、請求項1〜4の何れか1項に記載の論理構成方法。
  6. 前記半導体装置は、前記記憶部とともに、順序回路要素を有する論理部を、複数個有し、 前記論理構成方法は、
    回路構成を記述した回路記述から、論理回路データ、順序回路データ、及び、前記論理回路データと順序回路データの接続情報を記述するネットリストを生成し、
    前記生成したネットリストから、前記接続情報に従って、前記論理回路データと前記順序回路データをそれぞれ前記メモリセル及び論理回路要素に割り当てる、請求項1〜5の何れか1項に記載の論理構成方法。
  7. 前記半導体装置は、前記論理部の外部に、スイッチ要素を有し、
    前記スイッチ要素に前記ネットリストの接続情報を割り当てることをさらに有する、請求項6に記載の論理構成方法。
  8. 前記記憶部のメモリセルは、あるアドレスで特定された入力値を、他の論理部の記憶部に出力するように構成される真理値表データを書き込むと、接続要素として動作し、
    前記記憶部に前記ネットリストの接続情報を割り当てることをさらに有する、請求項6又は7に記載の論理構成方法。
  9. 前記ネットリストを生成した後に、順序回路データを削除し、
    前記生成したネットリストから、前記接続情報に従って、前記論理回路データを前記メモリセルに割り当てた後に、前記順序回路データを論理回路要素に割り当てる、請求項6〜8の何れか1項に記載の論理構成方法。
  10. 前記ネットリスト生成ステップは、論理回路データ、順序回路データ、及び、前記論理回路データを含む並列入力直列出力形のシフトレジスタを生成することを含む、請求項6〜9の何れか1項に記載の論理構成方法。
  11. 前記順序回路要素は、前記記憶部から読み出したデータを保持するとともに、クロックに同期して保持したデータを出力する順序回路である、請求項6〜10の何れか1項に記載の論理構成方法。
  12. データを記憶するメモリセルを複数備えた記憶部を複数有する半導体装置の論理構成を行う論理構成装置であって、
    前記半導体装置は、それぞれの前記記憶部は、アドレス入力に対して論理値を出力するための真理値表データをそのメモリセルに記憶し、論理回路として動作するように構成され、
    前記記憶部は、入力線および出力線の対を少なくとも2のn倍(nは2以上の整数)本有し、
    前記記憶部同士は、1つの記憶部からの2のn倍本の出力線が、他の2つの記憶部のn本の入力線に接続され、
    前記論理構成装置は、プロセッサを備え、
    前記プロセッサは、
    回路構成を記述した回路記述に基づいて、回路の接続情報を有するネットリストを生成し、
    前記ネットリストから、順序回路を含んで成る論理コーンを抽出し、
    前記論理コーンに対する入力線の数を2分のnで除算した数に相当する記憶部の段数で、前記論理コーンを構成する複数の前記記憶部のための前記真理値表データを、生成するように構成される、ことを特徴とする論理構成装置。
  13. 前記ネットリストの生成は、高級言語で記述されたプログラムの中の変数ビットを、より小さいビットに型変換することを含む、請求項12に記載の論理構成装置。
  14. 前記記憶部は、一辺と、前記一辺と反対側の他辺で他の記憶部に接続するとともに、複数のメモリセルユニットを有し、且つ、
    前記複数のメモリセルユニットの少なくとも1つが有する複数のメモリセルは、前記一辺におけるアドレス入力に対して、前記一辺から論理値を出力するための第1真理値表データと前記他辺から論理値を出力するための第2真理値表データとを記憶し、
    前記真理値表データを生成することは、前記第1真理値表データと、前記第2真理値表データを生成することを含む、請求項12又は13に記載の論理構成装置。
  15. 前記ネットリストの生成は、高級言語で記述されたプログラムに対して、ループ展開、及び/又は、並列化処理することを含む、請求項12〜14の何れか1項に記載の論理構成装置。
  16. 前記プロセッサは、前記ネットリストから、スキャン化可能な順序回路データセットを抽出して、スキャン化された順序回路データセットを生成し、
    前記スキャン化できる順序回路データセットから、前記複数のメモリセルユニットのうち第1セットに書き込むための第1真理値表データセットを生成し、
    前記ネットリストの組合せ論理回路データセットから、前記複数のメモリセルユニットのうち第2セットに書き込むための第2真理値表データセットを生成するように構成される、請求項12〜15の何れか1項に記載の論理構成装置。
  17. 前記半導体装置は、前記記憶部とともに、順序回路要素を有する論理部を、複数個有し、
    前記プロセッサは、
    回路構成を記述した回路記述から、論理回路データ、順序回路データ、及び、前記論理回路データと順序回路データの接続情報を記述するネットリストを生成し、
    前記生成したネットリストから、前記接続情報に従って、前記論理回路データと前記順序回路データをそれぞれ前記メモリセル及び論理回路要素に割り当てる、請求項12〜16の何れか1項に記載の論理構成装置。
  18. 前記半導体装置は、論理部の外部に、スイッチ要素を有し、
    前記スイッチ要素に前記ネットリストの接続情報を割り当てることをさらに有する、請求項17に記載の論理構成装置。
  19. 前記記憶部のメモリセルは、あるアドレスで特定された入力値を、他の論理部の記憶部に出力するように構成される真理値表データを書き込むと、接続要素として動作し、
    前記プロセッサは、前記記憶部に前記ネットリストの接続情報を割り当てるように構成される、請求項17又は18に記載の論理構成装置
  20. 前記プロセッサは、
    前記ネットリストを生成した後に、順序回路データを削除し、
    前記生成したネットリストから、前記接続情報に従って、前記論理回路データを前記メモリセルに割り当てた後に、前記順序回路データを論理回路要素に割り当てるように構成される、請求項17〜19の何れか1項に記載の論理構成装置
  21. 前記ネットリスト生成は、論理回路データ、順序回路データ、及び、前記論理回路データを含む並列入力直列出力形のシフトレジスタを生成することを含む、請求項17〜20の何れか1項に記載の論理構成装置。
  22. 前記順序回路要素は、前記記憶部から読み出したデータを保持するとともに、クロックに同期して保持したデータを出力する順序回路である、請求項17〜21の何れか1項に記載の論理構成装置。
  23. データを記憶するメモリセルを複数備えた記憶部を複数有する半導体装置の論理構成を行うためのプログラムであって、
    前記半導体装置は、それぞれの前記記憶部は、アドレス入力に対して論理値を出力するための真理値表データをそのメモリセルに記憶し、論理回路として動作するように構成され、
    前記記憶部は、入力線および出力線の対を少なくとも2のn倍(nは2以上の整数)本有し、
    前記記憶部同士は、1つの記憶部からの2のn倍本の出力線が、他の2つの記憶部のn本の入力線に接続され、
    前記プロセッサに、
    回路構成を記述した回路記述に基づいて、回路の接続情報を有するネットリストを生成する処理、
    前記ネットリストから、順序回路を含んで成る論理コーンを抽出する処理、
    前記論理コーンに対する入力線の数を2分のnで除算した数に相当する前記記憶部の段数で、前記論理コーンを構成する複数の前記記憶部のための前記真理値表データを、生成する処理を実行させることを特徴とするプログラム。
  24. 前記ネットリストの生成は、高級言語で記述されたプログラムの中の変数ビットを、より小さいビットに型変換することを含む、請求項23に記載のプログラム。
  25. 前記記憶部は、一辺と、前記一辺と反対側の他辺で他の記憶部に接続するとともに、複数のメモリセルユニットを有し、且つ、
    前記複数のメモリセルユニットの少なくとも1つが有する複数のメモリセルは、前記一辺におけるアドレス入力に対して、前記一辺から論理値を出力するための第1真理値表データと前記他辺から論理値を出力するための第2真理値表データとを記憶し、
    前記真理値表データを生成する処理は、前記第1真理値表データと、前記第2真理値表データを生成する処理を含む、請求項23又は24に記載のプログラム。
  26. 前記ネットリストの生成は、高級言語で記述されたプログラムに対して、ループ展開、及び/又は、並列化処理することを含む、請求項23〜25の何れか1項に記載のプログラム。
  27. 前記ネットリストから、スキャン化可能な順序回路データセットを抽出して、スキャン化された順序回路データセットを生成する処理、
    前記スキャン化できる順序回路データセットから、前記複数のメモリセルユニットのうち第1セットに書き込むための第1真理値表データセットを生成する処理、
    前記ネットリストの組合せ論理回路データセットから、前記複数のメモリセルユニットのうち第2セットに書き込むための第2真理値表データセットを生成する処理、を実行させる請求項23〜26の何れか1項に記載のプログラム。
  28. 前記半導体装置は、前記記憶部とともに、順序回路要素を有する論理部を、複数個有し、
    前記プロセッサに、
    回路構成を記述した回路記述から、論理回路データ、順序回路データ、及び、前記論理回路データと順序回路データの接続情報を記述するネットリストを生成する処理、
    前記生成したネットリストから、前記接続情報に従って、前記論理回路データと前記順序回路データをそれぞれ前記メモリセル及び論理回路要素に割り当てる処理を実行させる、請求項23〜27の何れか1項に記載のプログラム。
  29. 前記半導体装置は、論理部の外部に、スイッチ要素を有し、
    前記プログラムは、前記スイッチ要素に前記ネットリストの接続情報を割り当てる処理を実行させる、請求項28に記載のプログラム。
  30. 前記記憶部のメモリセルは、あるアドレスで特定された入力値を、他の論理部の記憶部に出力するように構成される真理値表データを書き込むと、接続要素として動作し、
    前記プロセッサは、前記記憶部に前記ネットリストの接続情報を割り当てる処理を実行させる、請求項28又は29に記載のプログラム。
  31. 前記プロセッサに、
    前記ネットリストを生成した後に、順序回路データを削除し、
    前記生成したネットリストから、前記接続情報に従って、前記論理回路データを前記メモリセルに割り当てた後に、前記順序回路データを論理回路要素に割り当てる、処理を実行させる請求項28〜30の何れか1項に記載のプログラム
  32. 前記ネットリスト生成は、論理回路データ、順序回路データ、及び、前記論理回路データを含む並列入力直列出力形のシフトレジスタを生成する処理を含む、請求項28〜31の何れか1項に記載のプログラム。
  33. 前記順序回路要素は、前記記憶部から読み出したデータを保持するとともに、クロックに同期して保持したデータを出力する順序回路である、請求項23〜32の何れか1項に記載のプログラム。
  34. 請求項23〜33の何れか1項に示すプログラムを格納する記憶媒体。
JP2014548558A 2012-11-20 2013-11-19 再構成可能な半導体装置の論理構成方法 Expired - Fee Related JP6250548B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
JP2012253780 2012-11-20
JP2012253780 2012-11-20
JP2013117418 2013-06-04
JP2013117418 2013-06-04
PCT/JP2013/081087 WO2014080872A2 (ja) 2012-11-20 2013-11-19 再構成可能な半導体装置の論理構成方法

Publications (2)

Publication Number Publication Date
JPWO2014080872A1 JPWO2014080872A1 (ja) 2017-01-05
JP6250548B2 true JP6250548B2 (ja) 2017-12-20

Family

ID=50776645

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014548558A Expired - Fee Related JP6250548B2 (ja) 2012-11-20 2013-11-19 再構成可能な半導体装置の論理構成方法

Country Status (3)

Country Link
US (1) US9514259B2 (ja)
JP (1) JP6250548B2 (ja)
WO (1) WO2014080872A2 (ja)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2014065424A1 (ja) * 2012-10-28 2014-05-01 太陽誘電株式会社 再構成可能な半導体装置
JPWO2014163099A1 (ja) * 2013-04-02 2017-02-16 太陽誘電株式会社 再構成可能な論理デバイス
CN107078740A (zh) * 2014-10-22 2017-08-18 太阳诱电株式会社 可重构设备
US9954533B2 (en) * 2014-12-16 2018-04-24 Samsung Electronics Co., Ltd. DRAM-based reconfigurable logic
CN104530024B (zh) 2015-02-04 2017-08-08 上海迪赛诺药业有限公司 1‑(β‑D‑吡喃葡糖基)‑4‑甲基‑3‑[5‑(4‑氟苯基)‑2‑噻吩基甲基]苯的晶型及其制备方法
US20190013811A1 (en) * 2016-01-20 2019-01-10 Nec Corporation Reconfigurable circuit, reconfigurable circuit system, and method for operating reconfigurable circuit
JP6407181B2 (ja) * 2016-03-04 2018-10-17 三菱電機株式会社 設計支援装置、設計支援方法及び設計支援プログラム
US10430534B2 (en) 2016-11-30 2019-10-01 Numem Inc. Resistance-based memory compiler
US10489338B1 (en) * 2018-09-05 2019-11-26 Quanta Computer Inc. Method and system for streamlined server design
WO2021060059A1 (ja) * 2019-09-27 2021-04-01 太陽誘電株式会社 生成装置、生成方法およびプログラム
CN114519321A (zh) * 2020-11-18 2022-05-20 上海复旦微电子集团股份有限公司 查找表电路及其配置方法
TWI792754B (zh) 2021-12-09 2023-02-11 力晶積成電子製造股份有限公司 具有高資料頻寬的記憶體裝置

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6138266A (en) * 1997-06-16 2000-10-24 Tharas Systems Inc. Functional verification of integrated circuit designs
US6150838A (en) 1999-02-25 2000-11-21 Xilinx, Inc. FPGA configurable logic block with multi-purpose logic/memory circuit
JP4216087B2 (ja) 2003-02-10 2009-01-28 パナソニック株式会社 論理回路最適化方法、論理回路最適化装置、及び、論理回路合成装置
WO2004088500A1 (ja) * 2003-03-31 2004-10-14 Kitakyushu Foundation For The Advancement Of Industry Science And Technology プログラマブル論理デバイス
JP4011015B2 (ja) * 2003-12-01 2007-11-21 財団法人北九州産業学術推進機構 Lut符号化方法及びlut符号化装置並びにlutカスケード論理回路
US7509618B1 (en) * 2004-05-12 2009-03-24 Altera Corporation Method and apparatus for facilitating an adaptive electronic design automation tool
JP4703655B2 (ja) 2005-11-28 2011-06-15 太陽誘電株式会社 半導体装置
JP5140029B2 (ja) 2009-03-30 2013-02-06 太陽誘電株式会社 半導体装置
CN104617944B (zh) 2010-06-24 2018-03-16 太阳诱电株式会社 半导体装置
JP5678609B2 (ja) * 2010-11-26 2015-03-04 セイコーエプソン株式会社 誤相関判定方法及び誤相関判定装置

Also Published As

Publication number Publication date
WO2014080872A2 (ja) 2014-05-30
US9514259B2 (en) 2016-12-06
JPWO2014080872A1 (ja) 2017-01-05
WO2014080872A3 (ja) 2014-07-17
US20150286762A1 (en) 2015-10-08

Similar Documents

Publication Publication Date Title
JP6250548B2 (ja) 再構成可能な半導体装置の論理構成方法
US7667486B2 (en) Non-sequentially configurable IC
US7532032B2 (en) Configurable circuits, IC's, and systems
JP6564186B2 (ja) 再構成可能な半導体装置
US6130551A (en) Synthesis-friendly FPGA architecture with variable length and variable timing interconnect
US7587537B1 (en) Serializer-deserializer circuits formed from input-output circuit registers
US7157933B1 (en) Configurable circuits, IC's, and systems
EP1603240A2 (en) Switch methodology for mask-programmable logic devices
US20090031106A1 (en) Reconfigurable device
JP6517626B2 (ja) 再構成可能な半導体装置
US7408382B2 (en) Configurable circuits, IC's, and systems
US7126373B1 (en) Configurable logic circuits with commutative properties
JP5890733B2 (ja) 再構成可能な半導体装置の配置配線方法、そのプログラム、及び配置配線装置
WO2014163099A2 (ja) 再構成可能な論理デバイス
Tian et al. A field programmable transistor array featuring single-cycle partial/full dynamic reconfiguration
US7439766B2 (en) Configurable logic circuits with commutative properties
US8159266B1 (en) Metal configurable integrated circuits
US7800404B2 (en) Field programmable application specific integrated circuit with programmable logic array and method of designing and programming the programmable logic array
US6051031A (en) Module-based logic architecture and design flow for VLSI implementation
US20160086640A1 (en) Reconfigurable semiconductor integrated circuit and electronic device
US7071731B1 (en) Programmable Logic with Pipelined Memory Operation
Růžička et al. Technology Mapping for PAIG Optimised Polymorphic Circuits
WO2018207801A1 (ja) プログラム可能なデバイス、その論理構成方法、及びそのプログラム
WO2019107234A1 (ja) 設計支援システム、設計支援方法およびプログラム記録媒体
JP2002016489A (ja) プログラマブル論理回路装置、及び情報処理システム

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20170920

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20171017

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20171108

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20171122

R150 Certificate of patent or registration of utility model

Ref document number: 6250548

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees