特許第6517626号(P6517626)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 太陽誘電株式会社の特許一覧

<>
  • 特許6517626-再構成可能な半導体装置 図000004
  • 特許6517626-再構成可能な半導体装置 図000005
  • 特許6517626-再構成可能な半導体装置 図000006
  • 特許6517626-再構成可能な半導体装置 図000007
  • 特許6517626-再構成可能な半導体装置 図000008
  • 特許6517626-再構成可能な半導体装置 図000009
  • 特許6517626-再構成可能な半導体装置 図000010
  • 特許6517626-再構成可能な半導体装置 図000011
  • 特許6517626-再構成可能な半導体装置 図000012
  • 特許6517626-再構成可能な半導体装置 図000013
  • 特許6517626-再構成可能な半導体装置 図000014
  • 特許6517626-再構成可能な半導体装置 図000015
  • 特許6517626-再構成可能な半導体装置 図000016
  • 特許6517626-再構成可能な半導体装置 図000017
  • 特許6517626-再構成可能な半導体装置 図000018
  • 特許6517626-再構成可能な半導体装置 図000019
  • 特許6517626-再構成可能な半導体装置 図000020
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6517626
(24)【登録日】2019年4月26日
(45)【発行日】2019年5月22日
(54)【発明の名称】再構成可能な半導体装置
(51)【国際特許分類】
   H03K 19/177 20060101AFI20190513BHJP
   H01L 21/82 20060101ALI20190513BHJP
【FI】
   H03K19/177
   H01L21/82 A
【請求項の数】11
【全頁数】21
(21)【出願番号】特願2015-158632(P2015-158632)
(22)【出願日】2015年8月11日
(65)【公開番号】特開2017-38247(P2017-38247A)
(43)【公開日】2017年2月16日
【審査請求日】2017年3月9日
【前置審査】
(73)【特許権者】
【識別番号】000204284
【氏名又は名称】太陽誘電株式会社
(74)【代理人】
【識別番号】100139583
【弁理士】
【氏名又は名称】高橋 真二
(72)【発明者】
【氏名】佐藤 正幸
(72)【発明者】
【氏名】志水 勲
【審査官】 白井 亮
(56)【参考文献】
【文献】 国際公開第2014/163098(WO,A2)
【文献】 米国特許出願公開第2012/119784(US,A1)
【文献】 特開平04−096421(JP,A)
【文献】 特開2007−156674(JP,A)
【文献】 特開平11−272353(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
H03K 19/177
H01L 21/82
(57)【特許請求の範囲】
【請求項1】
再構成可能な半導体装置であって、
互いにアドレス線又はデータ線で接続する複数の論理部と、
システムクロック信号を受け取るクロック信号線と、
前記システムクロック信号を遅延する遅延素子と、を備え、前記遅延素子は、前記複数の論理部のうち、論理演算を行う複数の互いに接続する論理部において生じる遅延に応じて遅延させた遅延クロック信号を生成し、
前記各論理部は、
前記遅延素子から出力される遅延クロック信号に同期して動作する第1メモリセルユニットと、
アドレス信号をデコードして、前記第1メモリセルユニットにデコード信号を出力する第1アドレスデコーダと、
前記第1メモリセルユニットの出力データを、前記遅延クロック信号に同期して読み込む第1出力バッファと、
前記システムクロック信号に同期して動作する第2メモリセルユニットと、
前記アドレス信号をデコードして、前記第2メモリセルユニットにデコード信号を出力する第2アドレスデコーダと、
前記第2メモリセルユニットの出力データを、前記システムクロック信号に同期して読み込み、次のクロックが加わるまでの期間中その値を保持する、第2出力バッファと、を有し、
前記遅延クロック信号は、前段の論理部の次に、後段の論理部に出力され、
前記システムクロック信号は、後段の論理部の次に、前段の論理部に出力される、半導体装置。
【請求項2】
前記第1メモリセルユニットに接続するデータ線と、前記第2メモリセルユニットに接続するデータ線は、互いに接続して、論理和を出力し、及び、
何れかのメモリセルユニットを使用しない場合、当該未使用のメモリセルユニットには、全て0が書き込まれるように構成される、請求項1に記載の半導体装置。
【請求項3】
前記遅延素子は、前記クロック信号線上に、2つ以上の論理部に対して1つ設けられ、その遅延量を固定値とする、請求項1または2に記載の半導体装置。
【請求項4】
前記各論理部はさらに、
前記遅延素子から出力される遅延クロック信号に同期して動作する前記第3メモリセルユニットと、
前記アドレス信号をデコードして、前記第3メモリセルユニットにデコード信号を出力する第3アドレスデコーダと、
前記システムクロック信号に同期して動作する第4メモリセルユニットと、
前記アドレス信号をデコードして、前記第4メモリセルユニットにデコード信号を出力する第4アドレスデコーダと、を備え、
前記第1及び第2アドレスデコーダは、前記複数のアドレス線の一部から入力されるアドレスをデコードし、
前記第3及び第4アドレスデコーダは、前記複数のアドレス線の他の一部から入力されるアドレスをデコードするように構成される、請求項1〜3の何れか1項に記載の再構成可能な半導体装置。
【請求項5】
前記メモリセルユニットは、配線要素及び/又は論理要素を構成する真理値表データを格納して、前記論理部はマルチルックアップテーブルとして動作する、請求項1〜4の何れか1項に記載の再構成可能な半導体装置。
【請求項6】
前記第1及び第3メモリセルユニットをまたがる論理演算を、禁止論理として生成しないように構成される真理値表データを格納する請求項4または5に記載の再構成可能な半導体装置。
【請求項7】
再構成可能な半導体装置の制御方法であって、
前記半導体装置は、
互いにアドレス線又はデータ線で接続する複数の論理部と、
システムクロック信号を受け取るクロック信号線と、
前記システムクロック信号を遅延する遅延素子と、を備え、前記遅延素子は、前記複数の論理部のうち、論理演算を行う複数の互いに接続する論理部において生じる遅延に応じて遅延させた遅延クロック信号を生成し、
前記各論理部は、
前記遅延素子から出力される遅延クロック信号に同期して動作する第1メモリセルユニットと、
アドレス信号をデコードして、前記第1メモリセルユニットにデコード信号を出力する第1アドレスデコーダと、
前記遅延素子から出力される遅延クロック信号に同期して動作する第1メモリセルユニットと、
前記第1メモリセルユニットの出力データを、前記遅延クロック信号に同期して読み込む第1出力バッファと、
前記システムクロック信号に同期して動作する第2メモリセルユニットと、
前記アドレス信号をデコードして、前記第2メモリセルユニットにデコード信号を出力する第2アドレスデコーダと、
前記第2メモリセルユニットの出力データを、前記システムクロック信号に同期して動作する第2出力バッファと、を有し、
前記第2出力バッファは、前記第2メモリセルユニットの出力データを、前記システムクロック信号に同期して読み込み、次のクロックが加わるまでの期間中その値を保持し、
前記遅延クロック信号は、前段の論理部の次に、後段の論理部に出力され、
前記システムクロック信号は、後段の論理部の次に、前段の論理部に出力される、制御方法。
【請求項8】
前記第1メモリセルユニットに接続するデータ線と、前記第2メモリセルユニットに接続するデータ線は、互いに接続して、論理和を出力し、及び、
何れかのメモリセルユニットを使用しない場合、当該未使用のメモリセルユニットには、全て0が書き込まれるように構成される、請求項7に記載の制御方法。
【請求項9】
前記遅延素子は、前記クロック信号線上に、2つ以上の論理部に対して1つ設けられ、その遅延量を固定値とする、請求項7または8に記載の制御方法。
【請求項10】
前記各論理部はさらに、
前記遅延素子から出力される遅延クロック信号に同期して動作する前記第3メモリセルユニットと、
前記アドレス信号をデコードして、前記第3メモリセルユニットにデコード信号を出力する第3アドレスデコーダと、
前記システムクロック信号に同期して動作する第4メモリセルユニットと、
前記アドレス信号をデコードして、前記第4メモリセルユニットにデコード信号を出力する第4アドレスデコーダと、をさらに備え、
前記第3メモリセルユニットは、前記遅延クロック信号に同期して動作し、前記第4メモリセルユニットは、前記システムクロック信号に同期して動作し、且つ、
前記第1及び第2アドレスデコーダは、前記複数のアドレス線の一部から入力されるアドレスをデコードし、
前記第3及び第4アドレスデコーダは、前記複数のアドレス線の他の一部から入力されるアドレスをデコードするように構成される、請求項7〜9の何れか1項に記載の制御方法。
【請求項11】
前記メモリセルユニットは、配線要素及び/又は論理要素を構成する真理値表データを格納して、マルチルックアップテーブルとして動作する、請求項7〜10の何れか1項に記載の制御方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、再構成可能な半導体装置に関する。
【背景技術】
【0002】
「MPLD(Memory−based Programmable Logic Device)」(登録商標)は、専用のスイッチ回路をメモリセルユニット毎に有するFPGA(Field Programmable Gate Array)と異なりメモリセルユニットを有し、さらに、標準CMOS(Complementary Metal Oxide Semiconductor)ロジックプロセスで製造可能であるので、低価格化が可能である。しかし、MPLDは同期型ではないため、同期メモリとして使用した場合、その性能が満たせない。そこで、出願人は、メモリセルユニットの標準製造プロセスで、同期型メモリとして使用可能な「MRLD(Memory based Reconfigurable Logic Device)」(登録商標)を、下記特許文献1において提案した。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開2013−219699号公報
【発明の概要】
【発明が解決しようとする課題】
【0004】
上記公報では、クロックと同期する同期型メモリと、クロックと非同期の非同期型メモリとから構成されるペアのメモリを、同期非同期切り替え可能なMLUT(Multi Look Up Table)として動作させていた。しかしながら、標準プロセスにおいては、同期型メモリの採用が好ましい。
【0005】
FPGAで配線や組み合わせ回路を構成する場合、LUT(Look Up Table)の遅延時間やスイッチの配線遅延や容量の関係で大きな遅延時間を持つ。MRLDも遅延に関しては同様に、配線も組み合わせ回路も大きな遅延時間を持っている。この遅延により、前段のMLUTにおける演算が終了する前に、クロックに同期する後段のMLUTが演算を開始すると、組合せ回路を構成するLUTに論理矛盾が生じる。
【0006】
このような論理矛盾を回避するために、所定のシステムクロックに基づき、CAD(Computer Aided Design)等によりシミュレーションを行い、バッファ回路を設けて、ある回路の出力信号のタイミングを、他の遅延した回路の出力信号に合わせる等のタイミング検証が必要になる。
【0007】
上記課題を解決する形態は、以下の項目セットにより示されるように、組合せ論理回路を構成する論理部は、前記遅延素子から出力される遅延クロック信号に同期して動作することで、タイミング検証不要な再構成可能な半導体装置を提供する。
【0008】
1.再構成可能な半導体装置であって、
互いにアドレス線又はデータ線で接続する複数の論理部を備え、
前記各論理部は、
複数のアドレス線と、
複数のデータ線と、
システムクロック信号を受け取るクロック信号線と、
前記システムクロック信号を遅延する遅延素子と、
クロック信号に同期して動作するメモリセルユニットと、
アドレス信号をデコードして、前記メモリセルユニットにデコード信号を出力するアドレスデコーダと、を備え、
組合せ論理回路を構成する論理部は、前記遅延素子から出力される遅延クロック信号に同期して動作する、再構成可能な半導体装置。
【0009】
組合せ論理回路を構成する論理部は、遅延素子から出力される遅延クロック信号に同期することで、FPGAのような、タイミング検証が不要になる。
【0010】
2.前記遅延クロック信号と、前記システムクロック信号を選択する選択部をさらに備え、
同期回路を構成する論理部は、前記システムクロック信号に同期して動作する、項目1に記載の半導体装置。
【0011】
論理部が、同期回路を構成するときはシステムクロックに従って、同期することで、回路の再構成性を担保する。
【0012】
3.前記論理部はさらに、
クロック信号に同期して動作する第2メモリセルユニットと、
アドレス信号をデコードして、前記第2メモリセルユニットにデコード信号を出力する第2アドレスデコーダと、をさらに備え、
前記第2メモリセルユニットは、前記システムクロック信号に同期して動作するとともに、
前記メモリセルユニットに接続するデータ線と、前記第2メモリセルユニットに接続するデータ線は、互いに接続して、論理和を出力し、及び、
何れかのメモリセルユニットを使用しない場合、当該未使用のメモリセルユニットには、全て0が書き込まれるように構成される、項目1に記載の半導体装置。
【0013】
論理部が、遅延クロック信号に同期するメモリセルユニットと、システムクロック信号に同期するメモリセルユニットを有して、構成データにより何れかを動作ことで、論理部の構成性を担保する。
【0014】
4.前記遅延クロック信号は、前段の論理部の次に、後段の論理部に出力され、
前記システムクロック信号は、後段の論理部の次に、前段の論理部に出力される、項目3に記載の半導体装置。
【0015】
システムクロック信号を、遅延クロック信号の向きと反対に流すことで、システムクロック信号の信号遅延を緩和する。
【0016】
5.前記遅延素子は、前記クロック信号線上に、2つ以上の論理部に対して1つ設けられ、その遅延量を固定値とする、項目1〜4の何れか1項に記載の半導体装置。
【0017】
遅延素子の回路規模を縮小することができる。
【0018】
6.クロック信号に同期して動作する第3及び第4のメモリセルユニットと、
アドレス信号をデコードして、前記第3メモリセルユニットにデコード信号を出力する第3アドレスデコーダと、
アドレス信号をデコードして、前記第4メモリセルユニットにデコード信号を出力する第4アドレスデコーダと、をさらに備え、
前記第3メモリセルユニットは、前記遅延クロック信号に同期して動作し、前記第4メモリセルユニットは、前記システムクロック信号に同期して動作し、且つ、
前記第1及び第2アドレスデコーダは、前記複数のアドレス線の一部から入力されるアドレスをデコードし、
前記第3及び第4アドレスデコーダは、前記複数のアドレス線の他の一部から入力されるアドレスをデコードするように構成される、項目3〜5の何れか1項に記載の再構成可能な半導体装置。
【0019】
7.前記メモリセルユニットは、配線要素及び/又は論理要素を構成する真理値表データを格納して、前記論理部はマルチルックアップテーブルとして動作する、項目1〜6の何れか1項に記載の再構成可能な半導体装置。
【0020】
8.前記第1及び第3メモリセルユニットをまたがる論理演算を、禁止論理として生成しないように構成される真理値表データを格納する項目3〜7の何れか1項に記載の再構成可能な半導体装置。
【0021】
9.再構成可能な半導体装置の制御方法であって、
前記半導体装置は、
互いにアドレス線又はデータ線で接続する複数の論理部を備え、
前記各論理部は、
複数のアドレス線と、
複数のデータ線と、
システムクロック信号を受け取るクロック信号線と、
前記システムクロック信号を遅延する遅延素子と、
アドレスデコーダと、
複数にメモリセルを有し、且つクロック信号に同期して動作するメモリセルユニットと、を備え、
組合せ論理回路を構成する論理部は、前記遅延素子から出力される遅延クロック信号に同期して動作する、制御方法。
【0022】
10.前記遅延クロック信号と、前記システムクロック信号を選択する選択部をさらに備え、
同期回路を構成する論理部は、前記システムクロック信号に同期して動作する、項目9に記載の制御方法。
【0023】
11.前記論理部はさらに、
クロック信号に同期して動作する第2メモリセルユニットと、
アドレス信号をデコードして、前記第2メモリセルユニットにデコード信号を出力する第2アドレスデコーダと、をさらに備え、
前記第2メモリセルユニットは、前記システムクロック信号に同期して動作するとともに、
前記メモリセルユニットに接続するデータ線と、前記第2メモリセルユニットに接続するデータ線は、互いに接続して、論理和を出力し、及び、
何れかのメモリセルユニットを使用しない場合、当該未使用のメモリセルユニットには、全て0が書き込まれるように構成される、項目9に記載の制御方法。
【0024】
12.前記遅延クロック信号は、前段の論理部の次に、後段の論理部に出力され、
前記システムクロック信号は、後段の論理部の次に、前段の論理部に出力される、項目11に記載の制御方法。
【0025】
13.前記遅延素子は、前記クロック信号線上に、2つ以上の論理部に対して1つ設けられ、その遅延量を固定値とする、項目9〜12の何れか1項に記載の制御方法。
【0026】
14.クロック信号に同期して動作する第3及び第4のメモリセルユニットと、
アドレス信号をデコードして、前記第3メモリユニットにデコード信号を出力する第3アドレスデコーダと、
アドレス信号をデコードして、前記第4メモリセルユニットにデコード信号を出力する第4アドレスデコーダと、をさらに備え、
前記第3メモリセルユニットは、前記遅延クロック信号に同期して動作し、前記第4メモリセルユニットは、前記システムクロック信号に同期して動作し、且つ、
前記第1及び第2アドレスデコーダは、前記複数のアドレス線の一部から入力されるアドレスをデコードし、
前記第3及び第4アドレスデコーダは、前記複数のアドレス線の他の一部から入力されるアドレスをデコードするように構成される、項目9〜13の何れか1項に記載の制御方法。
【0027】
15.前記メモリセルユニットは、配線要素及び/又は論理要素を構成する真理値表データを格納して、マルチルックアップテーブルとして動作する、項目9〜14の何れか1項に記載の制御方法。
【0028】
16.再構成可能な半導体装置を制御するためのプログラムにおいて、
前記半導体装置は、
互いにアドレス線又はデータ線で接続する複数の論理部を備え、
前記各論理部は、
複数のアドレス線と、
複数のデータ線と、
システムクロック信号を受け取るクロック信号線と、
前記システムクロック信号を遅延する遅延素子と、
第1アドレスデコーダと、
第2アドレスデコーダと、
複数にメモリセルを有し、且つクロック信号に同期して動作する第1メモリセルユニットと、
複数のメモリセルを有し、且つクロック信号に同期して動作する第2メモリセルユニットと、を備え、
前記第1アドレスデコーダは、前記アドレス信号をデコードして、前記第1メモリセルユニットにデコード信号を出力し、
前記第1アドレスデコーダは、前記アドレス信号をデコードして、前記第2メモリセルユニットにデコード信号を出力し、
前記第1メモリセルユニットは、前記遅延素子から出力される遅延クロック信号に同期して動作し、
前記第2メモリセルユニットは、前記システムクロック信号に同期して動作する処理、を実行させることを特徴とするプログラム。
【発明の効果】
【0029】
本発明に係る一実施形態は、組合せ論理回路を構成する論理部は、前記遅延素子から出力される遅延クロック信号に同期して動作することで、タイミング検証不要な再構成可能な半導体装置を提供する。
【図面の簡単な説明】
【0030】
図1】本実施形態に係る半導体装置の全体構成の一例を示す図である。
図2】MLUTを横積みして構成されるMLUTを概略的に示す図である。
図3】8ビットのデータ線幅をもつMLUTの一例を示す図である。
図4A】MLUTの一例を示す図である。
図4B】同期非同期切り替え可能なMLUTの第1例を示す図である。
図4C】同期非同期切り替え可能なMLUTの第2例を示す図である。
図5】遅延素子のタイミングチャートである。
図6】MRLDにおける遅延素子の配置を示す図である。
図7】同期回路を適用したMLUTの例である。
図8】MLUTの一例を示す図である。
図9】論理回路として動作するMLUTの一例を示す図である。
図10図9に示す論理回路の真理値表を示す図である。
図11】接続要素として動作するMLUTの一例を示す図である。
図12図11に示す接続要素の真理値表を示す図である。
図13】1つのMLUTが、論理要素及び接続要素として動作する一例を示す図である。
図14】論理要素及び接続要素の真理値表を示す。
図15】情報処理装置のハードウェア構成の一例を示す。
【発明を実施するための形態】
【0031】
以下、図面を参照して、以下の構成に基づき、再構成可能な半導体装置を説明する。
1.MRLD
1.1 MRLDの全体構成
1.2 MLUT配置
2.MLUT
3.MLUTの論理、接続、及び同期動作
4.真理値表データの生成方法
【0032】
1.MRLD
再構成可能な論理デバイスをMRLDと呼ぶ。MRLDは、メモリセルユニットで回路構成を実現するMPLDと同様に、各MLUT間が、配線要素を介在せずに直接接続する点で共通するが、メモリIPとして供給される同期メモリセルユニットの機能を有効に活用する点において、区別される。
【0033】
なお、本実施形態において、「メモリユニット」とは、複数のメモリセルからなるメモリセルユニットに加え、周辺回路のデコーダと出力バッファを含む。
【0034】
1.1 MRLDの全体構成
図1に示す20は、MRLDの一例である。MRLD20は、同期メモリユニットを利用したMLUT30を複数個、アレイ状に配置したMLUTアレイ60、MLUT30のメモリ読出し動作、書込み動作を特定する行デコーダ22、及び、列デコーダ24を有する。
【0035】
MLUTは、同期メモリユニットで構成される。メモリの記憶素子には、真理値表とみなされるデータがそれぞれ記憶されることで、MLUTは、論理要素、又は、接続要素、又は、論理要素及び接続要素として動作する論理動作を行う。
【0036】
MRLD20の論理動作では、実線で示される論理用アドレスLA、及び論理用データLDの信号を使用する。論理用アドレスLAは、論理回路の入力信号として使用される。そして、論理用データLDは、論理回路の出力信号として使用される。MRLDアレイ60において、論理用アドレスLAおよび論理用データLDは、MLUT同士を接続する信号線として使用され、例えば、MLUTの論理用アドレスLAは、隣接するMLUTの論理動作用データLDのデータ線と接続している。
【0037】
MRLD20の論理動作により実現される論理は、MLUTに記憶される真理値表データにより実現される。いくつかのMLUTは、AND回路、加算器などの組み合わせ回路としての論理要素として動作する。他のMLUTは、組み合わせ回路を実現するMLUT間を接続する接続要素として動作する。MLUTが、論理要素、及び接続要素を実現するための真理値表データの書き換えは、メモリへの書き込み動作によりなされる。
【0038】
MRLD20の書き込み動作は、メモリ動作用アドレスAD、及び書込用データWDによりなされ、読出し動作は、メモリ動作用アドレスAD、及び読出用データRDによりなされる。
【0039】
メモリ動作用アドレスADは、MLUT内のメモリセル(図4A等で後述)を特定するアドレスであり、メモリの読出し動作、書き込み動作、両方の場合で使用される。メモリ動作用アドレスADは、m本の信号線で、2のm乗の数nのメモリセルを特定する。行デコーダ22は、m本の信号線を介してMLUTアドレスを受け取るとともに、MLUTアドレスをデコードして、メモリ動作の対象となるMLUT内のメモリセルを特定する。なお本実施形態においては、後述するが、論理用アドレスLAのデコードは、MLUT内のデコーダにより行う。
【0040】
行デコーダ22は、リード・イネーブル信号re、ライト・イネーブル信号we等の制御信号に従って、メモリ動作用アドレスADのmビットのうちxビットをデコードし、デコードアドレスnをMLUT30に対して出力する。デコードアドレスnは、MLUT30内のメモリセルを特定するアドレスとして使用される。
【0041】
列デコーダ24は、メモリ動作用アドレスADのmビットのうちyビットをデコードし、行デコーダ22と同様の機能を有して、デコードアドレスnをMLUT30に対して出力するとともに、書込用データWDの出力、及び、読出用データRDを入力する。
【0042】
なお、MLUTのアレイがs行t列である場合、MLUTアレイ60からはn×tビットのデータが列デコーダ24に入力される。ここで、各行毎のMLUTを選択するために行デコーダ22はo行分のre,weを出力する。つまり、o行は、MLUTのs行に相当する。ここでoビットのうち、1ビットだけをアクティブにすることで、特定のメモリセルのワード線が選択される。そしてt個のMLUTがnビットのデータを出力するため、n×tビットのデータがMLUTアレイ60から選択され、そのうち1列を選択するのに列デコーダ24が使われる。
【0043】
1.2 双方向MLUT配置
図2は、MLUT30を横積みして構成されるMLUTアレイ60を概略的に示す図である。MLUTアレイ60は、図示されるように、MLUT30をアレイ状に配置したものである。MLUT30として用いるメモリはアドレス線の幅とデータ線の幅が等しい。アドレス線とデータ線の1ビットずつを対にして、擬似的な双方向線を定義する。この擬似的な双方向線を「AD対」と呼ぶ。図2では、4ビットのデータ線幅の例が示される。アドレス線の幅とデータ線の幅がNビットのメモリを用いることで、AD対をN本もつMLUTが実現される。
【0044】
なお、図2に示すMLUT30A〜30Dは、図5において参照される。
【0045】
図3は、8ビットのデータ線幅をもつMLUTの一例を示す図である。図2に示すMLUT30は、左方向から図3に示すアドレスA0L〜A7L(論理用アドレスLAの例である。以下同じ。)の入力があり、及び、右方向から図3に示すアドレスA0R〜A7Rの入力があり、また、左方向へ図3に示すデータD0L〜D7L(論理用データLDの例である。以下同じ。)の出力があり、右方向へ図3に示すデータD0R〜D7Rの出力がある。n値=8のMLUTは従来方式では1MビットとなりCLB(Configurable Logic Blocks)相当が4Mビットと大規模化してしまう。それに対して本実施形態に係るMLUTは、後述するように、4K(256ワード×16ビット)ビット×2で構成される。
【0046】
なお、n値とは、隣接するMLUT30に向かい合う1辺から出るアドレス線又はデータ線の数を言う。図2に示す4ビット長型MLUTは、複数ビット伝送を要件としているので、1辺からでるアドレス線又はデータ線は「4」であり、n値は「4」である。図2に示すように、双方向型MLUTでは、隣接するMLUTとの関係で、データ伝送量がn値の半分となり、且つ、信号パスが1段ずれるので、最長信号パスを実現するには信号パスを(n値/2)で割った段数だけ必要である。なお、「段数」とは、回路において、接続する素子の数を示す。MLUTの「段数」も、通常の回路の段数のように、接続するMLUTの数を示す。MLUT論理段数は、以下の式で示される。
式1: MLUT論理段数 = m/(n値/2)
なお、ここでmは、信号バスであり、論理コーンにする入力信号線を示す。
図2に示す例では、n値は「4」であるが、隣接するMLUTは、一方向に2つあるので、n値/2は「2」となる。C言語の論理演算が、8ビットで演算されており、論理コーンの入力信号線mが8本であった場合、MLUT論理段数は、「8/(4/2)=4」となる。つまり、8ビット演算をMLUTで行う場合、4つの段数を構成するMLUTが必要になる。尚、本MLUTは双方向性であるので、折り返しをすることで、段数を少なくすることが出来る。
【0047】
このように、上記のMLUTを有するMRLDは、隣接するMLUTに対して複数ビットのデータ処理を行うとともに、複数のメモリセルユニットで論理部を構成する。メモリセルユニットは、アドレス線の二乗に比例して増えるので、データ線の数は同じであっても、各メモリセルユニットのアドレス数を少なくすれば、トータルに必要なメモリセルの数を少なくすることができる。
【0048】
あるメモリユニットは、第1の方向からのアドレス入力に対して、第1の方向に、又は、第1の方向と反対の第2の方向にデータを出力するデータ線と接続し、及び、他のメモリユニットは、第2の方向からのアドレス入力に対して、第2の方向に、又は、第1の方向にデータを出力するデータ線と接続し、2つのメモリユニットは、真理値表データに従って、データの出力方向を変える。このように、データ出力の方向を制限することで、論理部の再構成性は制限されるものの、必要なメモリセルの数を少なくすることができる。
【0049】
2.MLUT
(第1例)
図4Aは、MLUTの回路図の一例を示す図である。MLUT30は、メモリセルユニット31Aおよび31Cを有する。なお、図4Aでは、MLUTの論理動作を説明するため、アドレスA0〜A7(論理用アドレスLA)、出力データD0〜D7(論理用データLD)を示しているが、メモリ動作用のメモリ動作用アドレスAD、書込用データWD、メモリ動作用アドレスAD、及び読出用データRDは示していない。図4B、および図4Cも同様である。
【0050】
MLUT30はさらに、アドレスデコーダ11Aおよび11C、出力バッファ13Aおよび13C、遅延素子35A、35Bを有する。なお、図示しないが、アドレスデコーダ11A、11Cの前段に、論理用アドレスLA及びメモリ動作用アドレスADを切り替えるための選択回路を有する。出力バッファ13Aおよび13Cは、出力データD0〜D7、又は、読出用データRDを切り替える選択回路であるとともに、出力データを、クロック(CLK)に従い一時的に保持するバッファとして動作する。
【0051】
2.1 遅延素子
遅延素子は、非同期用MLUTのクロック信号線に設けられる。遅延素子35A、35Bは、前段のMLUTのクロックと接続しており、一定の遅延時間を持たせてクロックを出力する。遅延素子35A及び35Bは、構成する非同期用MLUT全体のデータ遅延を考慮した遅延量を設定する。遅延素子は、例えば、ゲート・チェーンによる遅延素子である。MLUT30は、同期メモリユニットを利用して、製造されるため、外部から供給されるクロックに同期して動作する。
【0052】
遅延素子を用いた非同期動作
MRLDは、他の半導体装置と同様に、配線や回路動作において遅延時間が生じている。例えば、前段のMLUTにおける演算が終了する前に、後段のMLUTが演算を開始すると、MLUTにより構成される論理回路に、論理矛盾が生じる。
【0053】
図5は、遅延素子のタイミングチャートである。図5に示す、MLUT30A〜30Dは、図2に示すMLUT30A〜30Dのように配置される。この例では、MLUT30A〜Dは、時刻T1と時刻T2との間の時間(I3)の回路遅延が生じる。
【0054】
MLUTにアドレス信号が入力し、データが出力するために遅延時間(I3)が生じる。クロック信号の立ち上がり時の時刻T1に注目すると、MLUT30Aのデータ出力(Data0)を、MLUT30Bは、アドレス入力(Address0)として使用しており、この場合、論理矛盾は生じない。また、MLUT30Bのデータ出力(Data0)を、MLUT30Cは、アドレス入力(Address0)として使用しており、この場合も、論理矛盾は生じない。
【0055】
しかし、MLUT30Dは、時刻T1では、アドレス入力(Address0)が入力されておらず、この時点で、同じクロック信号で、論理演算できていないことになる。そのため、遅延素子により、時間(I3)を各MLUT30A〜30Dで遅延させることで、全て同期した処理が可能になる。
【0056】
FPGAは、回路規模に従って一意的に必要なCLB数が決まらないため、CLBで構成される論理時間遅延を考慮して可変な遅延量でクロックさせる必要がある。しかし、MRLDは搭載する回路規模によらず、式1にあるように信号数により必要なMLUTの数が決まるので、FPGAでの非同期設計のように、遅延量を、バッファ回路により緩和させることで対応する必要はなく、遅延量は、MLUT毎に固定値とすることができる。
【0057】
以上説明したように、本実施形態に係るMRLDは、論理動作において、遅延による論理矛盾が生じないように、クロック信号線に遅延素子を設ける。これにより、システムクロックが、遅延素子により遅延し、前段のMLUTが論理演算を終了して、後段のMLUTにデータを伝送するので、論理矛盾が生じない。
【0058】
2.3 出力バッファ
出力バッファ13Aおよび13C(後述する第2例では、13A〜13Dである。以下同じ)は、クロックに同期して、メモリセルユニットのデータ線からデータを読み出し、それを保持することで、FF(フリップフロップ)の機能を提供している。つまり、FFのQ出力を、I/Oバッファに維持し、その前段の論理回路と接続関係を、真理値表データで実現することで、同期メモリユニットから構成されるMLUTがFF機能を提供できる。なお、出力バッファ13Aおよび13Cは、メモリセルのビット線から出力される電圧を増幅するセンスアンプを含んでいる。なお、遅延素子から出力されるクロックを受け取る非同期MLUTも同様に、I/Oバッファを有する。しかし、非同期MLUTは、組合せ論理回路用に使用されるため、FFを構成しないように使用される。同期動作については、「3.MLUTの論理、接続、及び同期動作」で説明される。
【0059】
出力バッファを用いた同期動作
同期設計では、その遅延時間を包括的にクロック期間に収まるように最大のクロック時間で同期させ、このようなタイミング制約内で、回路構成されるので、配線やLUTの遅延時間が影響しないように見えている。このようにすると、FPGAを構成するLU(Logic Unit)単位で、クロックへの同期待ちが生じ、各同期待ち時間が、FPGA全体として直列的に付加されることで、FPGAの動作速度が遅くなる。
【0060】
MRLDの同期設計では、同期用のメモリユニットに、非同期のメモリユニットと逆の向き(バックフォワードともいう)にクロックを入れて、配線遅延による誤動作を回避している。メモリIPのスペックから算出して、メモリデータがアクセスされる最大時間を遅延量としている。
【0061】
図4Bは、同期動作、非同期動作切り替え可能なMLUTの回路図の第1例を示す図である。図4Bに示すMLUT30は、図4Aに示すMLUT30と、選択部36を有する点が異なり、その他の構成は同じであるので、説明を省略する。選択部36は、遅延クロック信号と、システムクロック信号を選択することで、MLUTを同期動作、非同期動作の切り替える機能を提供する。
【0062】
このようにすることで、MLUTアレイ60の中間に位置するMLUTで、遅延クロックを選択することができる。
【0063】
図4Cは、同期非同期切り替え可能なMLUTの回路図の第2例を示す図である。MLUT30は、メモリセルユニット31A〜31Dを有し、上段のメモリセルユニット31A、31Cは、非同期動作用のメモリセルユニットであり、下段のメモリセルユニット31B、31Dは、同期動作用のメモリセルユニットである。図4Aに示すMLUT30と、メモリセルユニット31B、31Dを有する点が異なり、その他の構成は同じである。
【0064】
MLUT30はさらに、アドレスデコーダ11A〜11D、出力バッファ13A〜13D、遅延素子35A、35Bを有する。出力バッファ13A、13Cが、遅延素子35A、35Bで遅延された遅延クロックに同期して動作する。出力バッファ13B、13Dは、バックフォワードで入力するクロック(CLK)に同期して動作する。このように、出力バッファ13A〜13Dが動作することで、上段のメモリセルユニット31A、31Cは、非同期動作し、下段のメモリセルユニット31B、31Dは、同期動作する。
【0065】
このようにすることで、MLUT内のメモリセルユニットは増えるものの、第2例と同様に、同期動作、非同期動作切り替え可能なMLUTが実現される。ただし、以下に示すように、第1例とは、真理値表データが異なる。
【0066】
2.4 同期非同期切り替え可能なMLUT第2例用の真理値表データ
メモリセルユニット31A(31B)は、一辺からのアドレスA0〜A3により特定されて、アドレスA0〜A3の2倍の数の第1出力データD0〜D7を出力する複数のメモリセルを有し、メモリセルユニット31C(31D)は、他辺からのアドレスA4〜A7により特定されて、アドレスA4〜A7の2倍の数の第2出力データD0〜D7を出力する複数のメモリセルを有する。MLUT30はさらに、第1データ及び第2データの一部を、一辺へ出力するとともに、第1データ及び第2データの他の一部を、他辺へ出力する。各メモリセルユニットは、一方向毎に真理値表データをメモリセルに記憶する。そのため、メモリセルユニット31A及び31Bの各々には、左から左方向用の真理値表データ、及び、左から右方向用の真理値表データを記憶する。すなわち、MLUTは、それぞれが特定のデータ出力方向を規定する2つの真理値表データを記憶する。
【0067】
本実施形態に係るMLUTは、双方向配置MLUTであり、同期動作用のメモリセルユニット31B、31Dと、非同期動作用のメモリセルユニット31A、31Cを備える。同期動作用のメモリセルユニット又は非同期動作用のメモリセルユニットは、ペアを構成するが、図4Cにおいて、隣接するMLUT30と入出力して、論理要素及び/又は接続要素として動作するメモリセルユニット31A、31B(又は、31C、31D)は、上段又は下段にあるメモリセルユニットのうちの何れか1つである。そのため、メモリセルユニット31A、31B(又は、31C、31D)のデータ出力を、ワイヤードオア接続、又は、OR回路で接続して、動作しないメモリセルユニットには、全て「0」のデータが格納される。
【0068】
なお、メモリセルユニットのデータ出力は、図示のように、ワイヤードORとしてもよいし、OR論理回路を設けてもよい。
【0069】
また、双方向型MLUTの特性として、禁止論理構成がある。表1に示す2つの真理値表を用いて、禁止論理の必要性を説明する。
【0070】
【表1】
【0071】
真理値表1では、A0,A1を使用してAND回路を構成し、D0に出力する真理値表が示される。真理値表2では、A0,A4を使用してAND回路を構成し、D0に出力する真理値表が示される。真理値表1の場合の論理は、A3−A0使用のメモリセルユニット31Aだけで論理演算可能なので、他のメモリセルユニットに“0”を書き込んでいれば、OR演算により、他のメモリセルユニットの出力値の影響を受けないので、禁止論理の問題は生じない。
【0072】
一方、真理値表2の論理の場合、A3−A0使用のメモリセルユニットはc,dの識別ができない。A7−A4使用のメモリセルユニットは、b,dの識別ができない。このように、2つのメモリセルユニットをまたがる論理演算は、2つの真理値表では正しい値を得られないため、2つのメモリセルユニットを跨ぐ論理演算を、禁止論理としている。よって、論理構成する場合、各メモリセルユニット内部で、論理を実現する必要がある。そのため、本実施形態に係る真理値表データでは、上記禁止論理を生じないように生成される。但し、禁止された論理は、他のMLUTで実現可能である。
【0073】
図6は、MRLDにおける遅延素子の配置を示す図である。図示されるMRLDは、図4Cに示すMLUT30が、2×3で配置されたMLUTブロック61を構成し、さらに、その構成が上下に設けられている。なお、図6では、図4Cに示すMLUTを用いているが、図4A又は図4Bに示すMLUTであってもよい。MLUTブロック61の左右にクロック・ツリーを設けて、上下でのクロック時間を補正する。クロック信号線上には、信号電圧を維持するためにバッファ回路34A〜34Eが設けられる。MLUTブロック61の左右のクロック・ツリーを同時間でクロックするために、メインのクロック・ツリーを構築する。非同期用のメモリユニット(メモリセルユニット31A、31Cおよびその周辺回路)は、左右のクロック・ツリーから出力されるクロックを、遅延素子35により遅延させた信号をクロックとして利用する。
【0074】
遅延素子35A〜35Lは、所定の遅延量とするために、各々が非同期用のメモリユニット毎に配置されている。例えば、遅延素子35Aは、メモリセルユニット31A用に設けられている。さらに、クロック信号の入力が、非同期用のメモリユニットは、フィードフォワード、同期用のメモリユニットは、その逆向きのバックフォワードで入力されている。フィードフォワードは、遅延素子により遅延させた遅延クロックでクロックして行くことを意味し、MLUTの遅延量を考慮して、データ出力の方向と同じ方向に、本例では、左から右へ(または右から左へ)クロックを伝搬させることを指す。それによりMLUTの論理値を確定させてから出力して論理動作をさせる。このことにより組み合わせ回路や配線動作を行わせることが可能となる。
【0075】
バックフォワードはこの逆で、論理確定しなくとも出力させてその状態の論理値を確定させる。そのために、クロックを遅延させず、データ出力の方向と反対方向で、本例では、右から左へ(または左から右へ)クロックを伝搬させる。言い換えれば、クロックをアドレス信号の流れと同じ方向から伝搬させる。このように構成すると、クロックの配線遅延が、生じるという課題があるため、信号の流れと逆方向でクロックを伝搬させる。
【0076】
図7は、同期回路を適用したMLUTアレイの例である。なお、メモリセルユニットの同期動作は、「3.MLUTの論理、接続、及び同期動作」で説明する。
【0077】
なお、ATD(Address Transition Detector)回路により、システムクロックより高周波のクロックを生成し、高周波クロックで動作させるとともに、アドレス遷移が無い場合、出力バッファに保持するビットを出力し、アドレス遷移がある場合、デコーダを動作させて、出力バッファを書き換える動作により、非同期用のMLUTを提供することも可能である。しかし、アドレス遷移回路により出力ばらつきが生じるため、「動作禁止時間」を設ける必要があり、加えて、回路規模が、信号遅延素子遅延と比して大きく、近年の回路の微細化の観点では好ましくないため、本実施形態では、ATD回路を採用していない。
【0078】
3.MLUTの論理、接続、及び同期動作
以下、MLUTの論理、接続、及び同期動作を、例を用いて説明する。なお、上記においては、MLUT30のアドレスはA0〜A7、および、出力データは、D0〜D7でそれぞれ、8つのアドレス又はデータがあったが、ここでは、説明の簡易化のために、4つのアドレス又はデータで説明する。
【0079】
図8は、MLUTの一例を示す図である。図8に示すMLUT30a、30bは、4つのアドレスA0〜A3と、4つの出力データD0〜D3に接続される。MLUT30aのアドレスA2は、隣接するMLUT30bの出力データD0と接続しており、MLUT30aは、MLUT30bから出力される論理用データを、論理用アドレス入力として受け取る。また、MLUT30aの出力データD2は、MLUT30bのアドレスA0と接続しており、MLUT30aが出力する論理用データは、MLUT30bで論理用アドレス入力として受け取られる。
以下に示す回路構成をMLUTで実現するための構成データ(真理値表データ)は、図8に示すMLUT30a又は30bのものである。
【0080】
A.論理回路を構成する真理値表データ
図9は、論理回路として動作するMLUTの一例を示す図である。本例では、アドレスA0及びA1を2入力NOR回路701の入力とし、アドレスA2及びA3を2入力NAND回路702の入力とする。そして、2入力NOR回路701の出力と、2入力NAND回路702の出力を、2入力NAND回路703に入力し、2入力NAND回路703の出力を出力データD0に出力する論理回路を構成する。
【0081】
図10は、図9に示す論理回路の真理値表を示す図である。図9の論理回路は、4入力のため、入力A0〜A3の全ての入力を入力として使用する。一方、出力は、1つのみなので、出力D0のみを出力として使用する。真理値表の出力D1〜D3の欄には「*」が記載されている。これは、「0」又は「1」のいずれの値でもよいことを示す。しかしながら、実際に再構成のために真理値表データをMLUTに書き込むときには、これらの欄には、「0」又は「1」のいずれかの値を書き込む必要がある。
【0082】
B.接続回路を構成する真理値表データ
図11は、接続回路として動作するMLUTの一例を示す図である。図11では、接続回路としてのMLUTは、アドレスA0の信号を出力データD1に出力し、アドレスA1の信号を出力データD2に出力し、アドレスA2の信号を出力データD3に出力するように動作する。接続回路としてのMLUTはさらに、アドレスA3の信号を出力データD0に出力するように動作する。
【0083】
図12は、図11に示す接続回路の真理値表を示す図である。図11に示す接続回路は、4入力4出力である。したがって、アドレスA0〜A3の全ての入力と、出力データD0〜D3の全ての出力が使用される。図12に示す真理値表によって、MLUTは、アドレスA0の信号を出力データD1に出力し、アドレスA1の信号を出力データD2に出力し、アドレスA2の信号を出力データD3に出力し、アドレスA3の信号を出力データD0に出力する接続回路として動作する。
【0084】
C.論理回路と接続回路を構成する真理値表データ
図13は、1つのMLUTが、論理回路及び接続回路として動作する一例を示す図である。図13に示す例では、アドレスA0及びA1を2入力NOR回路171の入力とし、2入力NOR回路171の出力と、アドレスA2とを2入力NAND回路172の入力とし、2入力NAND回路172の出力を出力データD0に出力する論理回路を構成する。また同時に、アドレスA3の信号を出力データD2に出力する接続回路を構成する。
【0085】
図14に、図13に示す論理回路及び接続回路の真理値表を示す。図13の論理回路は、アドレスA0〜A3の3つの入力を使用し、1つの出力データD0を出力として使用する。一方、アドレスA3の信号を出力データD2に出力する接続回路が構成される。
【0086】
D.順序回路機能
順序回路は、組合せ回路のように、構成メモリに保持される真理値表データそのもので、その動作を記述できない。本実施形態では、順序回路は、出力バッファ13の機能を用いて実現する。D型フリップフロップは、同期動作するメモリセルユニットの出力に対して、以下のような真理値表を構成する。
【0087】
【表2】
【0088】
4.真理値表データの生成方法
本実施形態を用いて説明した再構成可能な半導体装置に適用される真理値表データは、論理構成用のソフトウェアプログラムを実行する情報処理装置によって生成される。
【0089】
図15に、情報処理装置のハードウェア構成の一例を示す。情報処理装置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に格納する。
【0090】
真理値表データがMRLD20に読み込まれることにより、プログラムとしての真理値表データとハードウェア資源とが協働した具体的手段によって、論理要素及び/又は接続要素としての機能が構築される。また、真理値表データは、真理値表という論理的構造を示す構造を有するデータともいえる。
【0091】
以上説明した実施形態は典型例として挙げたに過ぎず、その各実施形態の構成要素の組合せ、変形及びバリエーションは当業者にとって明らかであり、当業者であれば本発明の原理及び請求の範囲に記載した発明の範囲を逸脱することなく上述の実施形態の種々の変形を行えることは明らかである。特に、MRLDの論理又は接続動作において、双方向MLUTを、多方向MLUTの動作とすることは実施形態の変更として可能である。
【符号の説明】
【0092】
11 アドレスデコーダ
13 出力バッファ
20 MRLD
22 行デコーダ
24 列デコーダ
30 MLUT
31 メモリセルユニット
34 バッファ回路
35 遅延素子
60 MLUTアレイ
LA 論理用アドレス
LD 論理用データ
AD メモリ動作用アドレス
WD 書込用データ
RD 読出用データ
図1
図2
図3
図4A
図4B
図4C
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15