(57)【特許請求の範囲】
【請求項１】
再構成可能な半導体装置の配置配線方法であって、
前記半導体装置は、アレイを構成するとともに互いに接続する複数のメモリセルユニットを備え、前記メモリセルユニットは、複数のアドレスで特定された入力値の論理演算を、データ線に出力するように構成される真理値表データを書き込むと、論理要素として動作し、及び／又は、あるアドレスで特定された入力値を、他のメモリセルユニットのアドレスに接続するデータ線に出力するように構成される真理値表データを書き込むと、接続要素として動作し、
プロセッサが、回路構成を記述した回路記述に基づいて、ネットリストを生成し、
前記プロセッサが、前記ネットリストから、スキャン化すべき順序回路データセットを抽出し、
前記プロセッサが、前記スキャン化すべき順序回路データセットから、前記複数のメモリセルユニットのうち第１セットに書き込むための第１真理値表データセットを生成し、
前記プロセッサが、前記ネットリストの組合せ論理回路データセットから、前記複数のメモリセルユニットのうち第２セットに書き込むための第２真理値表データセットを生成することを特徴とする再構成可能な半導体装置の配置配線方法。
【請求項２】
前記プロセッサが、前記第１真理値表データセットが割り当てられるメモリセルユニットを、クロックに同期させた実行をシミュレーションし、及び／又は、
前記プロセッサが、前記複数の第２真理値表データセットを、クロックに非同期で実行をシミュレーションして、前記半導体装置が所定の動作速度を実現するか評価する、請求項１に記載の配置配線方法。
【請求項３】
前記半導体装置は、Ｎ本（Ｎは２以上の整数）のアドレス線から入力されるアドレスをデコードしてワード線にワード選択信号を出力するアドレスデコーダを各メモリセルユニット毎に有し、
前記メモリセルユニットは、前記ワード線とデータ線に接続し、真理値表を構成するデータをそれぞれ記憶し、前記ワード線から入力される前記ワード選択信号により、前記データを前記データ線に入出力する複数の記憶素子を有し、
前記メモリセルユニットのＮ本のアドレス線は、前記メモリセルユニットの他のＮ個のメモリセルユニットのデータ線に、それぞれ接続する、請求項１又は２に記載の配置配線方法。
【請求項４】
再構成可能な半導体装置の配置配線を行う配置配線装置であって、
前記半導体装置は、アレイを構成する複数のメモリセルユニットを備え、前記メモリセルユニットは、複数のアドレスで特定された入力値の論理演算を、データ線に出力するように構成される真理値表データを書き込むと、論理要素として動作し、及び／又は、あるアドレスで特定された入力値を、他のメモリセルユニットのアドレスに接続するデータ線に出力するように構成される真理値表データを書き込むと、接続要素として動作し、
前記配置配線装置は、プロセッサを備え、
前記プロセッサは、
回路構成を記述した回路記述に基づいて、ネットリストを生成し、
前記ネットリストから、スキャン化すべき順序回路データセットを抽出し、
前記スキャン化すべき順序回路データセットから、前記複数のメモリセルユニットのうち第１セットに書き込むための第１真理値表データセットを生成し、
前記ネットリストの組合せ論理回路データセットから、前記複数のメモリセルユニットのうち第２セットに書き込むための第２真理値表データセットを生成することを特徴とする配置配線装置。
【請求項５】
前記プロセッサは、前記第１真理値表データセットが割り当てられるメモリセルユニットを、クロックに同期させた実行をシミュレーションし、及び／又は、前記複数の第２真理値表データセットを、クロックに非同期で実行をシミュレーションして、前記半導体装置が所定の動作速度を実現するか評価するように構成される、請求項４に記載の配置配線装置。
【請求項６】
再構成可能な半導体装置を配置配線するためのプログラムであって、前記半導体装置は、アレイを構成する複数のメモリセルユニットを備え、前記メモリセルユニットは、複数のアドレスで特定された入力値の論理演算を、データ線に出力するように構成される真理値表データを書き込むと、論理要素として動作し、及び／又は、あるアドレスで特定された入力値を、他のメモリセルユニットのアドレスに接続するデータ線に出力するように構成される真理値表データを書き込むと、接続要素として動作し、
プロセッサに、
回路構成を記述した回路記述に基づいて、ネットリストを生成する処理、
前記ネットリストから、スキャン化すべき順序回路データセットを抽出する処理、
前記スキャン化すべき順序回路データセットから、前記複数のメモリセルユニットのうち第１セットに書き込むための第１真理値表データセットを生成する処理、
前記ネットリストの組合せ論理回路データセットから、前記複数のメモリセルユニットのうち第２セットに書き込むための第２真理値表データセットを生成する処理を、実行させることを特徴とするプログラム。
【請求項７】
前記第１真理値表データセットが割り当てられるメモリセルユニットを、クロックに同期させた実行をシミュレーションし、及び／又は、前記複数の第２真理値表データセットを、クロックに非同期で実行をシミュレーションして、前記半導体装置が所定の動作速度を実現するか評価する処理をプロセッサに実行させる請求項６に記載のプログラム。
【請求項８】
前記半導体装置は、Ｎ本（Ｎは２以上の整数）のアドレス線から入力されるアドレスをデコードしてワード線にワード選択信号を出力するアドレスデコーダを各メモリセルユニット毎に有し、
前記メモリセルユニットは、前記ワード線とデータ線に接続し、真理値表を構成するデータをそれぞれ記憶し、前記ワード線から入力される前記ワード選択信号により、前記データを前記データ線に入出力する複数の記憶素子を有し、
前記メモリセルユニットのＮ本のアドレス線は、前記メモリセルユニットの他のＮ個のメモリセルユニットのデータ線に、それぞれ接続する、請求項６又は７に記載のプログラム。
【請求項９】
請求項６〜８の何れか１項に示すプログラムを格納するコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、再構成可能な半導体装置の配置配線方法、そのプログラム、及び配置配線装置に関する。
【背景技術】
【０００２】
ＦＰＧＡ（Ｆｉｅｌｄ−Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）など、回路構成を切り替え可能なＰＬＤ（Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）が広く使用されている。出願人又は発明者は、メモリセルユニットで回路構成を実現する「ＭＰＬＤ（Ｍｅｍｏｒｙ−ｂａｓｅｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｌｏｇｉｃ  Ｄｅｖｉｃｅ）」（登録商標）を開発している。ＭＰＬＤは、例えば、下記特許文献１に示される。ＭＰＬＤは、ＭＬＵＴ（Ｍｕｌｔｉ  Ｌｏｏｋ−Ｕｐ−Ｔａｂｌｅ）と呼ぶメモリアレイを相互に接続する。ＭＬＵＴは真理値データを格納して、配線要素と論理要素を構成する。ＭＰＬＤは、このＭＬＵＴをアレイ状に並べ、相互接続することによってＦＰＧＡとほぼ同等の機能を実現している。
【０００３】
また、ＭＰＬＤは、ＭＬＵＴを論理要素と配線要素の双方として使用することによって、論理領域と配線領域に柔軟性をもたせたデバイスであり、メモリセルユニット間の接続に専用の切り替え回路を有するＦＰＧＡと異なる。
【０００４】
ＦＰＧＡについての最適配置、配線方法については既に検討されている（特許文献２）。ＭＰＬＤの配置配線の場合、ＭＬＵＴは論理要素及び／又は接続要素として動作するので、ＭＬＵＴへの真理値表データの書込が、論理動作の配置、及び／又は、ＭＬＵＴ間の配線を意味する。そのため、ＭＬＵＴに書き込むための真理値表データの生成が、ＭＰＬＤの「配置・配線」に相当するが、ＭＰＬＤについての最適配置、配線方法は開示していなかった。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１０−２３９３２５号公報
【特許文献２】特開平８−８７５３７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ＭＰＬＤは、配線要素と論理要素を同じＭＬＵＴで実現することから、回路を構成する際に論理セルの配置を工夫することで、配線要素として使用するＭＬＵＴ数を減らすことができる。つまり、論理要素として用いるＭＬＵＴ数が増えることになるので、より小規模なＭＰＬＤで所望の機能を実現できる。しかし、ＭＰＬＤは配線要素と論理要素を同じメモリセルユニットであるＭＬＵＴで実現することから、論理と、配線が異なる回路ユニットにより実現されるＦＰＧＡの配置配線ツールのアルゴリズムは使用できない。このような状況から、ＭＰＬＤ向けの配置配線手法が必要になる。
【０００７】
本実施形態に係る配置配線方法は、メモリセルユニットから構成される再構成可能な半導体装置に対して、配線論理に使用されるメモリセルユニットの数を減らして、配置配線効率を高くすることを目的とする。
【課題を解決するための手段】
【０００８】
上記課題を解決する形態は、以下の項目により示される。
１．再構成可能な半導体装置の配置配線方法であって、
前記半導体装置は、アレイを構成するとともに互いに接続する複数のメモリセルユニットを備え、前記メモリセルユニットは、複数のアドレスで特定された入力値の論理演算を、データ線に出力するように構成される真理値表データを書き込むと、論理要素として動作し、及び／又は、あるアドレスで特定された入力値を、他のメモリセルユニットのアドレスに接続するデータ線に出力するように構成される真理値表データを書き込むと、接続要素として動作し、
回路構成を記述した回路記述に基づいて、ネットリストを生成し、
前記ネットリストから、スキャン化すべき順序回路データセットを抽出し、
前記スキャン化すべき順序回路データセットから、前記複数のメモリセルユニットのうち第１セットに書き込むための第１真理値表データセットを生成し、
前記ネットリストの組合せ論理回路データセットから、前記複数のメモリセルユニットのうち第２セットに書き込むための第２真理値表データセットを生成することを特徴とする再構成可能な半導体装置の配置配線方法。
２．前記第１真理値表データセットが割り当てられるメモリセルユニットを、クロックに同期させた実行をシミュレーションし、及び／又は、前記複数の第２真理値表データセットを、クロックに非同期で実行をシミュレーションして、前記半導体装置が所定の動作速度を実現するか評価する、項目１に記載の配置配線方法。
３．前記半導体装置は、Ｎ本（Ｎは２以上の整数）のアドレス線から入力されるアドレスをデコードしてワード線にワード選択信号を出力するアドレスデコーダを各メモリセルユニット毎に有し、
前記メモリセルユニットは、前記ワード線とデータ線に接続し、真理値表を構成するデータをそれぞれ記憶し、前記ワード線から入力される前記ワード選択信号により、前記データを前記データ線に入出力する複数の記憶素子を有し、
前記メモリセルユニットのＮ本のアドレス線は、前記メモリセルユニットの他のＮ個のメモリセルユニットのデータ線に、それぞれ接続する、項目１又は２に記載の配置配線方法。
４．再構成可能な半導体装置の配置配線を行う配置配線装置であって、
前記半導体装置は、アレイを構成する複数のメモリセルユニットを備え、前記メモリセルユニットは、複数のアドレスで特定された入力値の論理演算を、データ線に出力するように構成される真理値表データを書き込むと、論理要素として動作し、及び／又は、あるアドレスで特定された入力値を、他のメモリセルユニットのアドレスに接続するデータ線に出力するように構成される真理値表データを書き込むと、接続要素として動作すし、
前記配置配線装置は、プロセッサを備え、
前記プロセッサは、
回路構成を記述した回路記述に基づいて、ネットリストを生成し、
前記ネットリストから、スキャン化すべき順序回路データセットを抽出し、
前記スキャン化すべき順序回路データセットから、前記複数のメモリセルユニットのうち第１セットに書き込むための第１真理値表データセットを生成し、
前記ネットリストの組合せ論理回路データセットから、前記複数のメモリセルユニットのうち第２セットに書き込むための第２真理値表データセットを生成することを特徴とする配置配線装置。
５．前記プロセッサは、前記第１真理値表データセットが割り当てられるメモリセルユニットを、クロックに同期させた実行をシミュレーションし、及び／又は、前記複数の第２真理値表データセットを、クロックに非同期で実行をシミュレーションして、前記半導体装置が所定の動作速度を実現するか評価するように構成される、項目４に記載の配置配線装置。
６．再構成可能な半導体装置を配置配線するためのプログラムであって、前記半導体装置は、アレイを構成する複数のメモリセルユニットを備え、前記メモリセルユニットは、複数のアドレスで特定された入力値の論理演算を、データ線に出力するように構成される真理値表データを書き込むと、論理要素として動作し、及び／又は、あるアドレスで特定された入力値を、他のメモリセルユニットのアドレスに接続するデータ線に出力するように構成される真理値表データを書き込むと、接続要素として動作し、
プロセッサに、
回路構成を記述した回路記述に基づいて、ネットリストを生成する処理、
前記ネットリストから、スキャン化すべき順序回路データセットを抽出する処理、
前記スキャン化すべき順序回路データセットから、前記複数のメモリセルユニットのうち第１セットに書き込むための第１真理値表データセットを生成する処理、
前記ネットリストの組合せ論理回路データセットから、前記複数のメモリセルユニットのうち第２セットに書き込むための第２真理値表データセットを生成する処理を、実行させることを特徴とするプログラム。
７．前記第１真理値表データセットが割り当てられるメモリセルユニットを、クロックに同期させた実行をシミュレーションし、及び／又は、前記複数の第２真理値表データセットを、クロックに非同期で実行をシミュレーションして、前記半導体装置が所定の動作速度を実現するか評価する処理をプロセッサに実行させる項目６に記載のプログラム。
８．前記半導体装置は、Ｎ本（Ｎは２以上の整数）のアドレス線から入力されるアドレスをデコードしてワード線にワード選択信号を出力するアドレスデコーダを各メモリセルユニット毎に有し、
前記メモリセルユニットは、前記ワード線とデータ線に接続し、真理値表を構成するデータをそれぞれ記憶し、前記ワード線から入力される前記ワード選択信号により、前記データを前記データ線に入出力する複数の記憶素子を有し、
前記メモリセルユニットのＮ本のアドレス線は、前記メモリセルユニットの他のＮ個のメモリセルユニットのデータ線に、それぞれ接続する、項目６又は７に記載のプログラム。
【発明の効果】
【０００９】
本実施形態に係る配置配線方法は、メモリセルユニットから構成される再構成可能な半導体装置に対して、配線論理に使用されるメモリセルユニットの数を減らして、配置配線効率を高くできる。
【図面の簡単な説明】
【００１０】
【図１】同期／非同期切替可能なＭＬＵＴの第１例である。
【図２】ＭＬＵＴの第１例を示す図である。
【図３】記憶素子の詳細例である。
【図４】アドレスデコーダの詳細例である。
【図５】ＭＬＵＴの詳細例を示す図である。
【図６】プリチャージ回路の詳細例を示す図である。
【図７Ａ】ＡＴＤ回路の詳細例である。
【図７Ｂ】ＡＴＤ回路を流れる信号のタイムチャートである。
【図８】同期／非同期切替可能なＭＬＵＴの第２例である。
【図９】同期／非同期切替可能なＭＬＵＴを用いたＭＰＬＤの一例を示す図である。
【図１０】情報処理装置のハードウェア構成の一例を示す図である。
【図１１】配置配線処理の一例を示すフローチャートである。
【図１２】論理合成により生成された実際の回路図であるグルーロジックとＦ／Ｆの概略を示す。
【図１３】スキャン化により新たに生成されたグルーロジックと、スキャンＦ／Ｆの概略を示す。
【図１４】ＭＬＵＴ割り当ての評価方法の一例を示すフローチャートである。
【図１５】ＭＬＵＴ割り当て評価の例を示す概念図である。
【図１６】論理要素として動作するＭＬＵＴの一例を示す図である。
【図１７】論理回路として動作するＭＬＵＴの一例を示す図である。
【図１８】図１７に示す論理回路の真理値表を示す図である。
【図１９】接続要素として動作するＭＬＵＴの一例を示す図である。
【図２０】図１９に示す接続要素の真理値表を示す図である。
【図２１】４つのＡＤ対を有するＭＬＵＴによって実現される接続要素の一例を示す図である。
【図２２】１つのＭＬＵＴが、論理要素及び接続要素として動作する一例を示す図である。
【図２３】図２２に示す論理要素及び接続要素の真理値表を示す。
【図２４】ＡＤ対を有するＭＬＵＴによって実現される論理動作及び接続要素の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下、図面を参照して、〔１〕再構成可能な半導体装置、〔２〕配置配線手法、〔３〕ＭＬＵＴを論理要素及び／又は接続要素として動作させる真理値表の例について順に説明する。
【００１２】
〔１〕再構成可能な半導体装置
以下、同期又は非同期切替可能なＭＬＵＴを有する再構成可能な半導体装置について、２つの例を用いて説明する。
【００１３】
〔１．１〕同期／非同期切替可能なＭＬＵＴの第１例
図１は、同期／非同期切替可能なＭＬＵＴの第１例である。再構成可能な半導体装置としてのＭＰＬＤ２０は、ＭＬＵＴと呼ぶ配線要素と論理要素の双方を実現するメモリ回路を相互に接続することにより論理を構成する。ＭＰＬＤ２０は、図１のようにＭＬＵＴをアレイ状に敷き詰め、アドレス線ＬＡとデータ線ＬＤの対を用いてＭＬＵＴ同士を相互接続させた構成になっている。メモリセルユニットから構成されるＭＬＵＴ３０を複数有するとともに、ＭＬＵＴを特定するアドレスをデコードして、動作対象となるＭＬＵＴを特定するＭＬＵＴデコーダ１２を有する。ＭＰＬＤ２０は、ＭＬＵＴ３０の記憶素子に、真理値表を構成するデータがそれぞれ記憶することで、論理要素、又は、接続要素、又は、論理要素及び接続要素として動作する論理動作を行う。
【００１４】
ＭＰＬＤ２０はさらに、メモリ動作を行う。メモリ動作とは、ＭＬＵＴ３０に含まれるメモリセルユニットへのデータの書込みＷＤや読み出しＲＤをいう。ＭＬＵＴ３０へのデータの書込みは、真理値表データの書き換えにもなるため、メモリ動作は、真理値表データの再構成を生じる。
【００１５】
図２は、ＭＬＵＴの第１例を示す図である。図２に示されるＭＬＵＴ３０は、各々がデータを記憶するメモリセルからなるメモリセルアレイ１１０と、アドレスデコーダ１２０と、外部から供給される外部クロックを選択する選択部１３０と、外部クロックの選択の有無に応じて、メモリセルアレイ１１０へのデータ読出し又はデータ書き込みを行うデータ入出力部１４０を有する。
【００１６】
メモリセルアレイは、ｎ×２ｍ個の記憶素子を有し、ｎ×２ｎ個の記憶素子は、２のｎ乗本のワード線と、ｎ本のビット線の接続部分に配置される。なお、ビットライン数は、必要に応じてｎ本より増やしてもよい。図３は、記憶素子の詳細例である。図３に示される記憶素子４０では、ｐＭＯＳトランジスタ１６１、１６２、及び、ｎＭＯＳトランジスタ１６３、１６４、１６５、１６６を備える。ｐＭＯＳトランジスタ１６１のソースと、ｐＭＯＳトランジスタ１６２のソースとは、ＶＤＤ（電源電圧端）に接続する。ｎＭＯＳトランジスタ１６３のドレーンと、ｎＭＯＳトランジスタ１６４のドレーンは、ＶＳＳ（接地電圧端）に接続される。
【００１７】
ｎＭＯＳトランジスタ１６５のドレーンは、ビット線ｂに接続される。ｎＭＯＳトランジスタ１６５のゲートは、ワード線ＷＬに接続される。ｎＭＯＳトランジスタ１６６のドレーンは、ビット線/ｂに接続される。ｎＭＯＳトランジスタ１６６のゲートは、ワード線ＷＬに接続される。
【００１８】
上記構成により、書き込み動作では、記憶素子４０は、ワード線ＷＬの信号レベル「Ｈ（Ｈｉｇｈ）」により、ビット線ｂ及びビット線/ｂから伝えられた信号レベルを、ｐＭＯＳトランジスタ１６１、１６２、ｎＭＯＳトランジスタ１６３、１６４に保持する。読み出し動作では、記憶素子４０は、ワード線ＷＬの信号レベル「Ｈ」により、ｐＭＯＳトランジスタ１６１、１６２、ｎＭＯＳトランジスタ１６３、１６４に保持された信号レベルを、ビット線ｂ、及び、ビット線/ｂに伝える。
【００１９】
図４は、アドレスデコーダの詳細例を示す図である。図４に示されるアドレスデコーダ１２０は、インバータ回路１２０−１、ＡＮＤ回路１２０−２、及びＡＮＤ回路１２０−３を有する。インバータ回路１２０−１は、ｎ本のアドレス信号線毎に、ｎ個ある。ＡＮＤ回路１２０−２、１２０−３は、それぞれ２のｎ乗個ある。
【００２０】
インバータ回路１２０−１は、ｎ本のアドレス信号線から受け取ったアドレス信号の論理を反転し、反転したアドレス信号を、ＡＮＤ回路１２０−２に出力する。ＡＮＤ回路１２０−２は、アドレス信号、及び、反転アドレス信号を入力信号として受け取り、全ての入力値の信号レベルが「Ｈ」のとき、論理積演算により、信号レベル「Ｈ」の出力を第２ＡＮＤ回路に出力する。ＡＮＤ回路１２０−３は、ＡＮＤ回路１２０−２の出力と、内部クロック（後述）を入力信号として受け取り、全ての入力値の信号レベルが「Ｈ」のとき、論理積演算により、信号レベル「Ｈ」の出力を出力する。
【００２１】
ワード線選択信号は、信号レベルが「Ｈ」であり、ワード線非選択信号は、信号レベル「Ｌ（Ｌｏｗ）」である。このようにして、アドレスデコーダ１２０は、２のｎ乗本のワード線のうち１つのワード線に、信号レベル「Ｈ」のワード線選択信号を出力するように構成される。
【００２２】
なお、図４の例では、内部クロックを用いる例を示したが、内部クロックに同期しないデコーダであってもよい。その場合、ＡＮＤ回路１２０−３は不要となり、ＡＮＤ回路１２０−２の出力が、メモリセルのワード線と接続する。
【００２３】
図２を参照すると、アドレスデコーダ１２０は、ｎ本のアドレス信号線から受け取ったアドレス信号をデコードし、２のｎ乗本のワード線ＷＬにデコード信号であるワード線選択信号を出力する。
【００２４】
選択部１３０は、外部から供給される選択データに基いて、外部から供給される外部クロックを、データ入出力部１４０に伝える選択回路である。選択部１３０は、データ出力線毎に個々に設けられる複数の選択回路であり、選択回路は、それぞれ外部から供給される選択データを保持する。選択データは、メモリセルアレイ１１０から供給されてもよい。その場合、各選択回路は、メモリセルアレイ１１０内の特定のメモリセル（選択データ用メモリセル）に各々接続しており、選択データ用メモリセルの信号レベル「Ｈ」の場合、選択データの信号レベルも「Ｈ」になり、選択データ用メモリセルの信号レベル「Ｌ」の場合、選択データの信号レベルも「Ｌ」になる。選択回路は、選択データの信号レベル「Ｌ」の場合、外部クロックをデータ入出力部１４０に伝え、その選択回路に対応する読出データＱは、外部クロックに同期して、読み出される。選択回路は、選択データの信号レベル「Ｈ」の場合、外部クロックをデータ入出力部１４０に伝えず、その選択回路に対応する読出データＱは外部クロックに非同期で、読み出される。
【００２５】
データ入出力部１４０は、外部からライトイネーブル（ＷＥ）のエッジタイミング及び書込データを受け取ると、ｎ本のビット線ｂ、/ｂにその書込データの信号レベルを伝えて、メモリセルに書込データを書き込む。また、データ入出力部１４０は、ｎ本のビット線ｂ、/ｂの信号レベルを外部に出力することで、読出データを出力する。
【００２６】
図５は、ＭＬＵＴの詳細例を示す図である。図４に示す半導体メモリ装置１００Ａは、メモリセル１１０、アドレスデコーダ１２０Ａ、１２０Ｂ、選択部１３０Ａ、ビットプリチャージ回路１３５、データ入出力部１４０Ａを備える。
【００２７】
図５に示す例では、メモリセルユニット１１０において、Ｘ列が、２の５乗本のワード線と、Ｙ列が、読出し用と、書込み用にそれぞれ用意される２の２乗×７本と１本のビット線が縦横に格子状に形成され、メモリセルは、ワード線とビット線の交差点に配置されている。よって、２の７乗×（７個＋１個）のメモリセルを有し、そのうち７個のメモリセルは、上記した選択データ用メモリセルである。
【００２８】
図２で説明したアドレスデコーダ１２０は、図５では、Ｘ列用のＸアドレスデコーダ１２０Ａ及びＹ列用のＹアドレスデコーダ１２０Ｂからなり、Ｘアドレスデコーダ１２０Ａ及びＹアドレスデコーダ１２０Ｂは、アドレス信号線Ａ０〜Ａ４、及び、アドレス信号線Ａ５〜Ａ６にそれぞれ接続する。アドレス信号線の数が増える場合、図５に示すように、Ｘ列と、Ｙ列のデコーダに分けることで、メモリセル形状をＸ軸方向に伸ばすことができる。
【００２９】
選択データ用メモリセルは、選択データを保持し、選択データの信号を、Ｓ０，Ｓ１、・・・、Ｓ６として選択回路の制御信号とする。
【００３０】
Ｘアドレスデコーダ１２０Ａは、アドレス変化検出部としてのＡＴＤ回路(Address Transition Detect)１２１を備える。ＡＴＤ回路は、アドレス入力端子に設けられ、アドレス入力端子に印加されるアドレス入力信号の変化を検知して、変化したアドレス信号を出力する回路である。ＡＴＤ回路の詳細例は、図６及び図７を用いて後述する。
【００３１】
ＡＴＤ回路はアドレス信号の変化を検出したときだけ、変化したアドレス信号を、Ｘアドレスデコーダ１２０Ａに出力するので、Ｘアドレスデコーダ１２０Ａは、アドレス信号が変化したときだけワード選択信号を出力し、アドレス信号が変化しないときはワード線選択信号を出力しない。このようにすることで、アドレス変化がない時は、ワード線選択信号が出力されないので、外乱ノイズによる書き込み誤動作を防止することができる。また、Ｘアドレスデコーダ１２０Ａは、図２に示すアドレスデコーダ１２０より、ワード線を活性化するアドレス線の数を減らすので、アドレス変異が生じた場合にメモリセルへのワード線を介したノイズ混入の可能性を減らすことができる。
【００３２】
さらに、Ｘアドレスデコーダ１２０Ａは、内部クロックを発生させるためのクロック回路１２２を有する。後述されるように、内部クロックは、データ入出力部１４０のフリップフロップ及びＡＴＤ回路１２１の同期信号にも利用される。アドレスデコーダにおいてこの内部クロックに同期して、ワード選択信号の出力バラツキを抑制することもできる。一方、内部クロック周期を、外部クロック周期より短くすることで、非同期ＳＲＡＭの高速性も両立させることができる。
【００３３】
内部クロックは、外部クロックと異なる周期としてもよく、非同期ＳＲＡＭとして外部クロックに同期せずに、アクセス可能という非同期ＳＲＡＭの高速性を得るために、内部クロックは、外部クロックより短周期であることが好ましい。
【００３４】
なお、上記説明では、Ｘアドレスデコーダ１２０Ａ内にＡＴＤ回路１２１及びクロック回路１２２を設ける例を説明したが、ＡＴＤ回路１２１及びクロック回路１２２は、Ｘアドレスデコーダ１２０Ａと別個に設けてもよい。ただし、ＡＴＤ回路１２１は、アドレスの変遷を検出するために、Ｘアドレスデコーダ１２０Ａの上段に設ける必要がある。  
【００３５】
Ｙアドレスデコーダ１２０Ｂは、複数の選択回路であり、各々は７本のデータ線毎に複数個設けられてもよい。その場合、各々の選択回路は、４つのビット対から、アドレス信号Ａ５、Ａ６に従って、１つのビット対ｂ、／ｂを、出力用又は入力用データ線として選択する。
【００３６】
ビットラインプリチャージ回路１３５は、ビット線ｂ及びビット線／ｂを共に「１」にプリチャージする。
【００３７】
図６は、１ビット線対のためのビットラインプリチャージ回路の詳細例を示す。１ビット線対のためのビットラインプリチャージ回路１３５ａは、２つのＰＭＯＳを有し、ビットラインプリチャージ回路１３５ａの入力は、ビット線ｂ及びビット線／ｂを介して、メモリセルと接続する。そして、ビットラインプリチャージ回路１３５ａの出力は、ビット線ｂ及びビット線／ｂを介してＹアドレスデコーダと接続する。また、ビットラインプリチャージ回路１３５ａは、内部クロックに従ってビット線対ｂ、／ｂの信号レベルを「Ｈ」にプリチャージする。このような、１ビット線対のためのビットラインプリチャージ回路１３５ａが、メモリセルアレイ１１０の各ビット線対ｂ、／ｂ毎に設けられる。
【００３８】
クロックが入り、信号レベルが「Ｈ」になると、ＰＭＯＳがオフになるので、ＶＤＤとの接続も切れて、ビット線はメモリセルの情報でレベルを出力する。クロックの信号レベルが「Ｌ」になるとＰＭＯＳがオンになり、ビット線はＶＤＤの電位に引き上げられる。このように、クロックが入るときだけ、ビット線がメモリセルと接続することで、メモリセルへの外乱ノイズによる書き込み誤動作を防ぐ。
【００３９】
再び、図５に戻ると、選択部１３０Ａは、図２に示した選択部１３０と同様に、データ出力線毎に個々に設けられる複数の選択回路であり、選択回路は、それぞれ選択データを保持する。選択部１３０Ａは、選択回路が選択データの信号レベル「Ｈ」の場合、外部クロックをデータ入出力部１４０に伝えず、内部クロックをデータ入出力部１４０に伝える点において、選択部１３０と異なる。メモリセルアレイ１１０には、１ビットラインを追加してＤ７とする。Ｄ７の１番地のメモリセルの内部信号をＳ０、２番地のメモリセルの内部信号をＳ１として、７番地のメモリセルの内部信号Ｓ７までの信号を、出力ラッチのクロックの内部クロック及び外部クロックの選択信号とする。
【００４０】
１ビット内に、選択データを保持できるので、メモリセルアレイ１１０の小型化できる。また、新たに選択データ格納用のメモリセルを設けることなく、既存のメモリセルを選択データを格納するために使用してもよい。
【００４１】
なお、外部から、選択データにデータを直接書き込むためには、外部データを受けるためのレジスタが必要になる。さらに、外部は、レジスタ用の書き込み制御が要求される。選択データをメモリセルに書き込みようにすれば、新たな書き込み制御を要することなく、外部から選択回路を制御可能になる。
【００４２】
外部クロックは一定の周期で入ってくるので、アドレスが変わっても出力は変わらないが、非同期はアドレスが変われば内部クロックに従って動作する。このように、内部クロックが外部クロックよりも短周期であれば、より高い即時性でデータアクセスが可能になる。したがって、非同期ＳＲＡＭと同様に、外部クロックと同期させないときの高速性が要求される場合は、内部クロックは、外部クロックより短周期にする必要がある。
【００４３】
データ入出力部１４０は、出力データ線毎に設けられる複数のフリップフロップ（Ｆ／Ｆ）を有し（図４に示す例では、Ｄ型フリップフロップ）、C(CLOCK)端子の立ち上がりエッジでD入力の値がQ出力として保持される。つまり、クロック時のみ出力変化をさせて、それ以外は情報を保持する。このことにより、ビット線を「Ｈ」状態にでき、デバイスの低電圧化におけるマージン確保を図ることができる。
【００４４】
上記の例では、ワード線が３２本であり、信号レベルの劣化が少ないので、センスアンプは、示していないが、アドレス、及びメモリセルの増加により、ワード線が増える場合は、ビットプリチャージ回路１３５と、Ｙアドレスデコーダ１２０Ｂの間に、センスアンプやライトアンプを設けてもよい。
【００４５】
また、図３に示したメモリセルは、シングルポートのものであるが、読出し及び書込みを同時に行う高速型のメモリセルを使用する場合は、マルチポートのメモリセルであってもよい。
【００４６】
以上説明したように、半導体メモリ装置１００Ａは、アドレス変化がない時は、ワード線選択信号が出力されないので、外乱ノイズによる書き込み誤動作を防止することができるとともに、データ線毎に外部クロック及び内部クロックの切り替えを行うことができる。
【００４７】
図７Ａは、ＡＴＤ回路の一例を示す図である。図７Ａに示すＡＴＤ回路１２１は、１２１−１に示されるように、フリップフロップ（Ｆ／Ｆ）、遅延回路（ＤＣ）、論理積演算を行うＡＮＤ回路、排他的論理和演算を行うＸＯＲ回路、論理和演算を行うＯＲ回路、トランスミッションゲート（ＴＧ）から構成される。ＡＮＤ回路、ＸＯＲ回路及びＯＲ回路は、ＭＩＬ記号で示される。
【００４８】
ＸＯＲ回路の入力は、アドレス信号と、そのアドレス信号を遅延させた信号であるので、遅延させている間に、アドレス信号に変化があれば、アドレス信号の変化を検出し、信号レベル「Ｈ」を出力する。このように、ＡＴＤ回路１２１は、ＸＯＲ回路と遅延回路の組み合わせでアドレス変化を検出する。
【００４９】
図７Ｂは、図７Ａに示すＡＴＤ回路のタイムチャートを示す。図７Ａ及び図７ＢのＡｉは、外部からのアドレス信号入力に相当し、ａｉは図４に示すインバータ回路１２０−１の上段から分岐する信号入力に相当し、オーバーライン付きａｉは、図４に示すインバータ回路１２０−１の出力信号、φ１は、ＴＧからフロップフロップのクロックに入力する帰還信号、φ２は、ＡＮＤ回路に入力する帰還信号である。
【００５０】
フリップフロップは、内部クロックに同期したφ１をクロックとして受け取り、クロックのエッジの立ち上がりで、アドレス信号を保持する。
【００５１】
ＸＯＲ回路は、前サイクルのアドレスと現在サイクルのアドレスが相違する場合、信号レベル「Ｈ」の信号を出力し、その信号が、φ２として、ＴＧから出力される。φ２をクロックとして受け取るフリップフロップは、φ１のサイクルで保持していたアドレスを出力する。ＡＮＤ回路は、φ２のサイクルでフロップフロップから出力されたφ１サイクルのアドレスの信号レベルと、φ２の信号レベルが同じである場合、φ１サイクルのアドレスを、アドレスａｉとして出力する。このように、ＡＴＤ回路は、アドレス変化を検出したときだけ、変化したアドレス信号をアドレスデコーダに出力する。
【００５２】
〔１．２〕同期／非同期切替可能なＭＬＵＴの第２例
図８は、同期／非同期切替可能なＭＬＵＴの第２例である。図８に示すＭＬＵＴは、非同期用のメモリセルユニット４０ａと、同期用のメモリセルユニット４０ｂのペアから構成され、同期用のメモリセルユニット４０ｂの後段には、クロックＣＬＫと同期するＦ／Ｆ４１を有する。非同期用のメモリセルユニット４０ａ及び同期用のメモリセルユニット４０ｂには、それぞれ、アドレスデコーダ９ａ及び９ｂが設けられ、さらに、動作切替信号によって、メモリ動作か、論理動作かを選択するアドレス切替回路１０、及び、動作切替信号によって、読み出しデータＲＤか論理動作用データＬＤかを選択する出力データ切替回路１１が設けられる。
【００５３】
ＭＰＬＤ２０を構成するメモリセルユニット及びその周辺回路からなる回路ユニットを、ＭＬＵＴと言う。メモリセルユニットには、真理値表を構成するデータを格納することで、ＭＬＵＴは、再構成可能デバイスであるＭＰＬＤの構成要素として動作する。ＭＰＬＤが再構成可能デバイスとして使用される技術的根拠は、後述する。
【００５４】
ＭＬＵＴは、図２に示すように、２つのメモリセルユニットを必ずしも必要としないが、各ＭＬＵＴが、同期／非同期のどちらでも使えるため、同期メモリ、順序回路の論理要素、非同期メモリ、組合せ論理回路の論理要素と、様々な使い方が可能になる。  
【００５５】
図８に示すＭＬＵＴ３０は、動作切替信号が論理動作を示す場合、論理動作用アドレスＬＡに従って、論理動作用データＬＤを出力する。また、ＭＬＵＴ３０は、動作切替信号がメモリ動作を示す場合、メモリ動作用アドレスに従って、書込みデータＷＤを受け入れ、又は、読み出しデータＲＤを出力する。
【００５６】
アドレス切替回路１０は、メモリ動作用アドレスが入力されるｎ本のメモリ動作用アドレス信号線と、論理動作用アドレス信号が入力されるｎ本の論理動作用アドレス入力信号線と、動作切替信号が入力される動作切替信号線とを接続する。アドレス切替回路１０ａは、動作切替信号に基づいて、メモリ動作用アドレス、又は論理動作用アドレスのいずれかをｎ本の選択アドレス信号線に出力するように動作する。このように、アドレス切替回路１０ａが、アドレス信号線を選択するのは、記憶素子４０が読み出し動作と書込み動作の何れかを受け付ける１ポート型の記憶素子であるからである。論理動作的にはＣＥ（Chip Enable）０、ＣＥ１を同時にアクティブにして、同期メモリ出力と非同期メモリ出力の論理和を出力する。そうすることにより、組み合わせ回路と順序回路を表現できる。メモリ動作のときは、交互にアクティブにして所定の記憶動作をさせる。
【００５７】
例えば、配線や組み合わせ回路を行わせるＡＤ対（ＭＬＵＴの論理動作用アドレス線と、それと接続する論理動作用データ線の対をいう）では、同期用のメモリには真理値0を記憶し、非同期用のメモリには所定の真理値を記憶させて、非同期用メモリのデータで信号伝播を行わせる。このことにより、メモリにおけるクロック遅延がなく論理回路を構成できる。また、順序回路では、同期用メモリに所定の真理値を記憶させ、非同期用メモリでは真理値0とする。このことによりクロック動作の順序回路が構成できる。このことは、順序回路構成での特別なF/Fをもさせなくてよく効率的である。
【００５８】
アドレスデコーダ９ａ、９ｂは、アドレス切替回路１０から供給されるｎ本のアドレス信号線から受け取った選択アドレス信号をデコードし、２のｎ乗本のワード線にデコード信号を出力する。
【００５９】
メモリセルユニットのｎ×２ｎ個の記憶素子は、２のｎ乗本のワード線と、ｎ本の書込データ線と、ｎ個の出力データ線の接続部分に配置される。
【００６０】
出力データ切替回路１１は、ｎ本の出力データ線から信号を受け取ると、入力される動作切替信号に従って、読み出しデータをｎ本の読み出しデータ信号線に出力し、又は、読み出しデータを論理動作用信号線に出力するように動作する。
【００６１】
〔１．３〕同期／非同期切替可能なＭＬＵＴを用いたＭＰＬＤ
図９は、同期／非同期切替可能なＭＬＵＴを用いたＭＰＬＤの一例を示す図である。図９に示すＭＰＬＤ２０は、複数のＭＬＵＴ３０を有する。ＭＬＵＴ３０内の矩形は、半導体メモリ装置で説明した選択信号で切り替え可能なデータ出力線毎に設けられるＦ／Ｆである。この、Ｆ／Ｆは、データ入出力部１４０のＦ／Ｆに相当する。
【００６２】
６方向配置のＭＬＵＴ（１つのＭＬＵＴの周囲に、６つのＭＬＵＴが配置され、中心にあるＭＬＵＴと周囲にある６つのＭＬＵＴが、それぞれ１つのＡＤ対で接続される。言い換えれば、ＭＬＵＴの６本のアドレス線は、周囲に配置されるの他の６個のＭＬＵＴのデータ線に、それぞれ接続され、ＭＬＵＴの６本のデータ線は、ＭＬＵＴの他の６個のＭＬＵＴのアドレス線に、それぞれ接続する）は、ＡＤ対に対して均一な接続を持たせることが出来るが、乗算回路などのようにＣＬＡ（キャリア・ルック・アヘッド）回路を２つ持つ回路では、自ＭＬＵＴ内で回路を実現できず、ＭＬＵＴをひとつ多く使用するので論理構成効率が悪い。一方、交互配置（１つのＭＬＵＴの周囲に、８つのＭＬＵＴが配置され、周囲にある４つのＭＬＵＴとＡＤ対と接続し、そのうち２つのＭＬＵＴとは２つのＡＤ対で接続する。例えば、特開２０１０−２３９３２５号公報に開示されている）は隣接するＭＬＵＴに２つのＡＤ対を持たせ得るのでこの場合は交互配置が優位である。
【００６３】
しかしながら、交互配置のＭＬＵＴは、接続要素として動作するＭＬＵＴの数を減らすことができるので、所望の論理回路を構成する記憶素子ブロックの総量を減らすことができるため、交互配置のＭＬＵＴを可能な限り用いるのが好ましい。
【００６４】
また、従来方式のＭＬＵＴ間接続では、離間配線（離間配線は、近距離配線でないＭＬＵＴ間を結線するＡＤ対の配線をいう。例えば、特開２０１０−２３９３２５号公報に開示されている）が、ＡＤ対７でＭＬＵＴを飛んで配線させているので、長距離の配線においてＭＬＵＴを節約できる。ＡＤ対７を使い順序回路に必要なＦ／Ｆを接続すると、Ｆ／Ｆは自分のＭＬＵＴに戻る構造を持っている。また、離間配線とＦ／Ｆはある程度の比率で混在させている。この関係で順序回路を構成すると接続要素としてのＭＬＵＴが必要になり、論理構成効率が悪い。
【００６５】
図９に示すように、ＭＬＵＴ自体が、Ｆ／Ｆを持っており、外部にあるＦ／Ｆと接続するためにＡＤ対を使用する必要がないので、ＡＤ対７は全て離間配線に使うことができる。
【００６６】
同期／非同期切替可能なＭＬＵＴを用いることで、ＭＬＵＴが実現する回路も、同期が必要な回路と、同期が不要な回路に、ＭＬＵＴ内部で分けたり、１つのＭＬＵＴを動的に同期が必要な回路と、同期が不要な回路に使い分けることができる。例えば、組み合わせ回路や配線ロジックで非同期が必要な時は内部クロックとしてデータ線毎に非同期化して、順序回路のときは外部クロックでデータ線毎に同期化するように、ＭＬＵＴをデータ線毎に設定することができる。
【００６７】
〔２〕配置配線手法
ＭＰＬＤの配置配線を行うには、抽象的な回路の動作に関するハードウェア記述言語からネットリスト（素子間を接続する配線情報）を生成し、それを、実際のデジタル回路に割り当てる（以下「論理合成」と言う）配置配線方法が必要である。ＭＰＬＤの機能搭載例として、論理合成された回路群を選択して入力ピンから逐次配置する方法が考えられる。しかし、配置についてはその後の回路の配置エリアを確保して配置しなければならない。また、組み合わせ回路と順序回路を仕分けせず行なうと、Ｆ／ＦのないＭＬＵＴに配置した場合は配置失敗となって再度配置検討しなければならない。その時、Ｆ／Ｆを有したＭＬＵＴに行き着くまでは配線論理となり、ＭＬＵＴを多く使い配置配線効率が悪い状態になる。
【００６８】
本実施形態に係る配置配線手法では、Ｆ／Ｆをスキャン化した真理値表を生成して、ＭＬＵＴによりＦ／Ｆを構成する。このために、所望の論理を実現する組合せ回路と、Ｆ／Ｆ間の配線要素が減り、ＭＰＬＤの配置配線効率が高くなる。
【００６９】
Ｃ言語ではレジスタとその間の演算が主動作となるが、レジスタはＦ／Ｆであり、演算は組み合わせ論理であることから、基本的にＣ言語から論理合成が可能となる。レジスタ宣言からＦ／Ｆの配置を決め、演算の動作から真理値データが生成されるので、論理回路合成を経なくても論理合成が可能になる。従来、再構成デバイスの論理合成、特にＣ言語からの合成は、一度RTL記述（Ｖｅｒｉｌｏｇ，ＶＨＤＬ）に変換して、その後、論理回路生成をして配置配線をしなければならなかった。そのために、何度かの情報処理を必要としており、煩雑であった。本実施形態に係る配置配線手法では、Ｃ言語からの論理合成が可能となり、簡便な手法が産業界に提供できる。
【００７０】
ＭＰＬＤにとって、真理値表の作成と、その真理値表をＭＬＵＴに書き込む作業が、ＦＰＧＡの配置配線に相当する。以下、図１１〜１５を用いて、本実施形態に係る配置配線方法を説明する。
【００７１】
なお、配置配線方法は、本実施形態に係る配置配線用のソフトウェアプログラムを実行する情報処理装置によって実現される。図１０に、情報処理装置のハードウェア構成の一例を示す。情報処理装置２１０は、プロセッサ２１１と、入力部２１２と、出力部２１３と、記憶部２１４とドライブ装置２１５を有する。プロセッサ２１１は、入力部２１２に入力された配置・配線用のソフトウェア、集積回路を設計するためのＣ言語記述またはハードウェア記述言語（ＨＤＬ）などの回路記述言語、及び、上記ソフトウェアを実行することによって生成される真理値表データを記憶部２１４に記憶する。また、プロセッサ２１１は、配置・配線用のソフトウェアを実行して、記憶部２１４に記憶された回路記述に対して以下に示す配置・配線の処理を行い、出力部２１３に、真理値表データを出力する。出力部２１３には、半導体装置１００（図示せず）を接続することができ、プロセッサ２１１が配置配線処理を実行して、生成した真理値表データを、出力部２１３を介して半導体装置１００に書き込む。出力部２１３は、外部ネットワークと接続していてもよい。この場合、配置配線用のソフトウェアプログラムは、ネットワークを介して送受信される。ドライブ装置２１５は、例えば、ＤＶＤ（Ｄｉｇｉｔａｌ  Ｖｅｒｓａｔｉｌｅ  Ｄｉｓｃ）、フラッシュメモリなどの記憶媒体２１７を読み書きする装置である。ドライブ装置２１５は、記憶媒体２１７を回転させるモータや記憶媒体２１７上でデータを読み書きするヘッド等を含む。なお、記憶媒体２１７は、配置配線用のプログラムを格納することができる。ドライブ装置２１５は、セットされた記憶媒体２１７からプログラムを読み出す。プロセッサ２１１は、ドライブ装置２１５により読み出されたプログラムを、記憶部２１４に格納する。なお、情報処置装置２１０は、本実施形態に係る配置配線方法を実行する配置配線装置として動作する。
【００７２】
図１１は、配置配線処理の一例を示すフローチャートである。図１１に示す配置配線処理は、図１０に示す情報処理装置が実行する。まず、論理合成（Ｓ１０１）を行う。論理合成とは、広義では論理動作を生成することを言うが、本実施形態では、狭義の意味で、回路記述言語から、ネットリスト（素子間を接続する配線の一覧を記述したゲート・レベルの設計データの表現形式）を生成することを示す。図１２には、論理合成により生成された実際の回路図であるグルーロジック１０００ＡとＦ／Ｆの概略を示す。論理回路には組合せ回路と順序回路があるが、組合せ論理回路はグルー・ロジックと言う。
【００７３】
次に、論理合成により生成された回路に対して、スキャン化すべきＦ／Ｆを抽出する（Ｓ１０２）。スキャン化とは、論理回路内のレジスタを、論理合成された回路の内部のＦ／Ｆを、スキャン機能付きＦ／Ｆ（スキャンＦ／Ｆ）に置き換えることにより、Ｆ／Ｆを最適配置する。なお、Ｆ／Ｆがランダムにスキャン化されると配線が混線して有効で短いチェーン配線が構成できないため、論理状態を見て最適最短のチェーンを形成するように、抽出する。スキャン化すべきＦ／Ｆの抽出は、ネットリストからＦ／Ｆを抽出することにより行う。抽出処理により、ネットリストにおいて、スキャン化すべきＦ／Ｆが特定される。
【００７４】
図１３は、スキャン化により新たに生成されたグルーロジックと、スキャンＦ／Ｆの概略を示す。スキャン化により、図１２のグルー・ロジック１０００Ａを、スキャンＦ／Ｆ１１００と接続するグルーロジック１０００Ｂに構成し、図１２に示す回路内のＦ／Ｆを、スキャンＦ／Ｆ１１００に置き換える。また、このようにすることで、スキャンＦ／Ｆ１１００は、グルーロジック１０００Ｂを挟む形で配置される。図１２と、図１３を比較すると、グルーロジックとＦ／Ｆ間の接続関係が、図１２に示す接続関係の方が簡略化されていることがわかる。このような簡略化により、Ｆ／Ｆとグルーロジック間の接続に必要となる配線論理を大幅に減らすことができる。
【００７５】
配置配線については、今までのＭＰＬＤの配置配線は組み合わせ回路と順序回路とを区別せず、回路をＭＬＵＴに配置して配線していた。ＭＰＬＤはＭＬＵＴでの組み合わせ回路や配線がメモリの記憶情報で構成されることから、図１２に示すように、グルーロジックとＦ／Ｆが混在し、このまま配置配線すると、Ｆ／Ｆと組合せ論理回路を接続する配線論理が必要になるので、配線論理が増えて合成効率が下がる。しかし、順序回路を先に配置すれば、Ｆ／Ｆと組合せ論理回路を接続する配線論理の量が相対的に減少するので、組み合わせ回路間の配線論理が削減できる。
【００７６】
抽出処理により特定されたスキャン化すべきＦ／Ｆから、真理値表のデータセットを生成する（Ｓ１０３）。スキャンＦ／Ｆ１１００を抽出する。そして、論理合成したＦ／Ｆ間には複数のＭＬＵＴが必要になるので、これを組み合わせ回路を表現する真理値表データを生成する。当然、Ｆ／Ｆなので、配線論理も含まれるので、生成する真理値表データには、Ｆ／Ｆ間の論理状態を配線論理で表真理値も含まれる。ここで生成される複数のＭＬＵＴにそれぞれ書き込むための複数の真理値表データは、Ｆ／Ｆ間の接続状態を表現するので、図１２に示すグルーロジックとＦ／Ｆ間の配線論理は生成されない。
【００７７】
次に、Ｆ／Ｆの配置を行う（Ｓ１０４）。このステップでは、同期選択したＭＬＵＴにＦ／Ｆ用の真理値データを割り当てる処理が行われる。当該処理も、シミュレートしたＭＬＵＴに真理値表を割り当てる処理である。なお、当該ＭＬＵＴのシミュレーションでは、回路記述を実現する真理値表をＭＬＵＴに書き込んだ場合、動作速度を計るタイミング分析を少なくとも行う。そのため、当該シミュレーション環境では、所望の回路記述を実現するＭＬＵＴ数に相当する配線長を計算し、さらに配線帳による信号遅延を計算し、クロック同期などのタイミング分析を行う。
【００７８】
そして、グルーロジックの配置を行う（Ｓ１０５）。このステップでは、非同期選択したＭＬＵＴにグルーロジックの真理値データを割り当てる処理が行われる。当該処理も、シミュレートしたＭＬＵＴに真理値表を割り当てる処理である。
【００７９】
なお、Ｓ１０５では、必要に応じて、ＭＬＵＴ分割又は結合を行ってもよい。ＭＬＵＴ分割又は結合とは、ネットリストを、ＭＬＵＴに適当なネットリストとすることである。分割ステップでは、１つのＭＬＵＴに割り当てる１つの真理値表に所定の論理回路を包含できるように、論理回路の入力及び出力数を所定のＡＤ対の数以下にするステップである。結合は、ＭＬＵＴに構成される真理値表の数を最適化するために、１つのＭＬＵＴに包含できる２つ以上の真理値表を１つの真理値表にまとめる。このようなＭＬＵＴ分割又は結合により、ＭＬＵＴに構成される真理値表の数を最適化することができる。
【００８０】
次に、真理値表を割り当てられたＭＬＵＴが所定のＭＬＵＴ数や、動作速度などの条件を満たすか評価する（Ｓ１０６）。評価が条件を満たせば（Ｓ１０６  Ｙｅｓ）、実際の真理値表データを生成し、記憶部２１４に格納、及び／又は、出力部２１３を介して、ＭＰＬＤに書き込み、動作させる処理を行う。このとき、生成された真理値表は、ステップＳ１０３で抽出されたスキャン化すべき順序回路データセット（つまりスキャンＦ／Ｆ）から、複数のＭＬＵＴのうちの第１セットに書き込むための第１真理値表データセットと、ネットリストの組合せ論理回路データセットから、複数のＭＬＵＴのうちの第２セットに書き込むための第２真理値表データセットが生成される。条件を満たさない場合（Ｓ１０６  Ｎｏ）、Ｓ１０４に戻り、Ｆ／Ｆ及びグルーロジックのＭＬＵＴへの再配置を再度行うことを繰り返す。
【００８１】
図１４は、ＭＬＵＴ割り当ての評価方法の一例を示すフローチャートである。図１５は、ＭＬＵＴ割り当て評価の例を示す概念図である。当該処理も、図１０に示すような、記憶部に記憶されるソフトウェアプログラムを実行する情報処理装置によって実現される。
【００８２】
まず、ＭＬＵＴ全てに優先順位をつける（Ｓ２０１）。優先順位が高いＭＬＵＴを配置対象ＭＬＵＴとする（Ｓ２０２）。配置対象ＭＬＵＴに関して自身の入力信号を生成しているＭＬＵＴまたは外部入力が置かれているＭＬＵＴを探索対象ＭＬＵＴとする（Ｓ２０３）。探索基点ＭＬＵＴより、図１５に示す半径Ｒの円内にあるＭＬＵＴ全てを配置先ＭＬＵＴの候補とする（Ｓ２０４）。候補の中からランダムに１つのＭＬＵＴを選ぶ（Ｓ２０５）。選んだＭＬＵＴへ配置対象ＭＬＵＴが配置可能か判断し（Ｓ２０６）、配線する（Ｓ２０７）。そして、配置対象ＭＬＵＴの出力が外部に繋がっているか判断する（Ｓ２０８）。配置対象ＭＬＵＴの出力が外部に繋がっている場合（Ｓ２０８、Ｙｅｓ）、全てのＭＬＵＴが配置されているか判断し（Ｓ２０９）、全てのＭＬＵＴが配置されている場合（Ｓ２０９、Ｙｅｓ）、処理を修了する。ステップＳ２０８の例を、図１５で説明すると、ＭＬＵＴ２が、外部ｎ１０１と繋がっているか判断し、つながっている場合、全てのＭＬＵＴ０〜２が配置されているか判断し、配置されている場合、処理を終了する。
【００８３】
配置対象ＭＬＵＴの出力が外部に繋がっていない場合（Ｓ２０８、Ｎｏ）、出力先のＭＬＵＴを注目ＭＬＵＴとする（Ｓ２１０）。例えば、図１５では、ＭＬＵＴ０やＭＬＵＴ１にとって、出力先のＭＬＵＴは、ＭＬＵＴ２となる。次に、配置対象ＭＬＵＴの入力先のＭＬＵＴが全て配置済みか判断する（Ｓ２１１）。全て配置済みの場合（Ｓ２１１、Ｙｅｓ）、Ｓ２０３に戻る。配置対象ＭＬＵＴの入力先のＭＬＵＴが全て配置済みでない場合（Ｓ２１１、Ｎｏ）、Ｓ２０２に戻る。
【００８４】
〔３〕ＭＬＵＴを論理要素及び／又は接続要素として動作させる真理値表の例
Ａ．論理要素
図１６は、論理要素として動作するＭＬＵＴの一例を示す図である。図１６に示すＭＬＵＴ３０ａ、３０ｂは、４つの論理動作用アドレス線Ａ０〜Ａ３と、４つの論理動作用データ線Ｄ０〜Ｄ３と、４×１６＝６４個の記憶素子４０と、アドレスデコーダ９とをそれぞれ有する。論理動作用データ線Ｄ０〜Ｄ３は、２４個の記憶素子４０をそれぞれ直列に接続する。アドレスデコーダ９は、論理動作用アドレス線Ａ０〜Ａ３に入力される信号に基づき、２４本のワード線のいずれかに接続される４つの記憶素子を選択するように構成される。この４つの記憶素子はそれぞれ、論理動作用データ線Ｄ０〜Ｄ３に接続され、記憶素子に記憶されるデータを論理動作用データ線Ｄ０〜Ｄ３に出力する。例えば、論理動作用アドレス線Ａ０〜Ａ３に適当な信号が入力される場合は、４つの記憶素子４０ａ、４０ｂ、４０ｃ、及び４０ｄを選択するように構成することができる。ここで、記憶素子４０ａは、論理動作用データ線Ｄ０に接続され、記憶素子４０ｂは、論理動作用データ線Ｄ１に接続され、記憶素子４０ｄは、論理動作用データ線Ｄ２に接続され、記憶素子４０ｄは、論理動作用データ線Ｄ３に接続される。そして、論理動作用データ線Ｄ０〜Ｄ３には、記憶素子４０ａ〜４０ｄに記憶される信号が出力される。このように、ＭＬＵＴ３０ａ、３０ｂは、論理動作用アドレス線Ａ０〜Ａ３から論理動作用アドレスを受け取り、その論理動作用アドレスによってアドレスデコーダ９が選択する４つの記憶素子４０に記憶される値を、論理動作用データ線Ｄ０〜Ｄ３に論理動作用データとしてそれぞれ出力する。なお、ＭＬＵＴ３０ａの論理動作用アドレス線Ａ２は、隣接するＭＬＵＴ３０ｂの論理動作用データ線Ｄ０と接続しており、ＭＬＵＴ３０ａは、ＭＬＵＴ３０ｂから出力される論理動作用データを、論理動作用アドレスとして受け取る。また、ＭＬＵＴ３０ａの論理動作用データ線Ｄ２は、ＭＬＵＴ３０ｂの論理動作用アドレス線Ａ０と接続しており、ＭＬＵＴ３０ａが出力する論理動作用データは、ＭＬＵＴ３０ｂで論理動作用アドレスとして受け取られる。例えば、ＭＬＵＴ３０ａの論理動作用データ線Ｄ２は、ＭＬＵＴ３０ａの論理動作用アドレス線Ａ０〜Ａ３に入力される信号に基づき、論理動作用データ線Ｄ２に接続される２４個の記憶素子のいずれか１つに記憶される信号をＭＬＵＴ３０ｂの論理動作用アドレスＡ０に出力する。同様に、ＭＬＵＴ３０ｂの論理動作用データ線Ｄ０は、ＭＬＵＴ３０ｂの論理動作用アドレス線Ａ０〜Ａ３に入力される信号に基づき、論理動作用データ線Ｄ０に接続される２４個の記憶素子のいずれか１つに記憶される信号をＭＬＵＴ３０ａの論理動作用アドレスＡ２に出力する。このように、ＭＰＬＤ同士の連結は、１対のアドレス線とデータ線とを用いる。
【００８５】
なお、図１６では、ＭＬＵＴ３０ａ、３０ｂが有するＡＤ対は４であるが、ＡＤ対の数は、この数に限定されない。
【００８６】
図１７は、論理回路として動作するＭＬＵＴの一例を示す図である。本例では、論理動作用アドレス線Ａ０及びＡ１を２入力ＮＯＲ回路７０１の入力とし、論理動作用アドレス線Ａ２及びＡ３を２入力ＮＡＮＤ回路７０２の入力とする。そして、２入力ＮＯＲ回路の出力と、２入力ＮＡＮＤ回路７０２の出力を、２入力ＮＡＮＤ回路７０３に入力し、２入力ＮＡＮＤ回路７０３の出力を論理動作用データ線Ｄ０に出力する論理回路を構成する。
【００８７】
図１８は、図１７に示す論理回路の真理値表を示す図である。図１７の論理回路は、４入力のため、入力Ａ０〜Ａ３の全ての入力を入力として使用する。一方、出力は、１つのみなので、出力Ｄ０のみを出力として使用する。そしてこの出力Ｄ０は、図１７に示す複数のアドレスで特定された入力値の論理演算（図１７に示すように、論理和、又は、論理積）した値が記載されている。図１８に示す真理値表の出力Ｄ１〜Ｄ３の欄には「＊」が記載されている。これは、「０」又は「１」のいずれの値でもよいことを示す。例のためこのように示したが、実際に再構成のために真理値表データをＭＬＵＴに書き込むときには、これらの欄には、「０」又は「１」のいずれかの値を書き込む必要がある。
【００８８】
Ｂ．接続要素
図１９は、接続要素として動作するＭＬＵＴの一例を示す図である。図１９では、接続要素としてのＭＬＵＴは、論理動作用アドレス線Ａ０の信号を論理動作用データ線Ｄ１に出力し、論理動作用アドレス線Ａ１の信号を論理動作用データ線Ｄ２に出力し、論理動作用アドレス線Ａ２の信号を論理動作用データ線Ｄ３に出力するように動作する。接続要素としてのＭＬＵＴはさらに、論理動作用アドレス線Ａ３の信号を論理動作用データ線Ｄ１に出力するように動作する。
【００８９】
図２０は、図１９に示す接続要素の真理値表を示す図である。図１９に示す接続要素は、４入力４出力である。したがって、入力Ａ０〜Ａ３の全ての入力と、出力Ｄ０〜Ｄ３の全ての出力が使用される。図２０に示す真理値表によって、ＭＬＵＴは、入力Ａ０の信号を出力Ｄ１に出力し、入力Ａ１の信号を出力Ｄ２に出力し、入力Ａ２の信号を出力Ｄ３に出力し、入力Ａ３の信号を出力Ｄ０に出力する接続要素として動作する。
【００９０】
図２１は、ＡＤ０、ＡＤ１、ＡＤ２、及びＡＤ３の４つのＡＤ対を有するＭＬＵＴによって実現される接続要素の一例を示す図である。ＡＤ０は、論理動作用アドレス線Ａ０と論理動作用データ線Ｄ０とを有する。ＡＤ１は、論理動作用アドレス線Ａ１と論理動作用データ線Ｄ１とを有する。ＡＤ２は、論理動作用アドレス線Ａ２と論理動作用データ線Ｄ２とを有する。そして、ＡＤ３は、論理動作用アドレス線Ａ３と論理動作用データ線Ｄ３とを有する。図２１において、１点鎖線は、ＡＤ対０の論理動作用アドレス線Ａ０に入力された信号がＡＤ対１の論理動作用データ線Ｄ１に出力される信号の流れを示す。２点鎖線は、第２のＡＤ対１の論理動作用アドレス線Ａ１に入力された信号がＡＤ対２の論理動作用データ線Ｄ２に出力される信号の流れを示す。破線は、ＡＤ対２の論理動作用アドレス線Ａ２に入力された信号がＡＤ対３の論理動作用データ線Ｄ３に出力される信号の流れを示す。実線は、ＡＤ対３の論理動作用アドレス線Ａ３に入力された信号がＡＤ対０の論理動作用データ線Ｄ０に出力される信号の流れを示す。
【００９１】
なお、図２１では、ＭＬＵＴ３０が有するＡＤ対は４であるが、ＡＤ対の数は、特に４に限定されない。
【００９２】
Ｃ．論理要素と接続要素の組合せ機能
図２２は、１つのＭＬＵＴが、論理要素及び接続要素として動作する一例を示す図である。図２２に示す例では、論理動作用アドレス線Ａ０及びＡ１を２入力ＮＯＲ回路１２１の入力とし、２入力ＮＯＲ回路１２１の出力と、論理動作用アドレス線Ａ２とを２入力ＮＡＮＤ回路１２２の入力とし、２入力ＮＡＮＤ回路１２２の出力を論理動作用データ線Ｄ０に出力する論理回路を構成する。また同時に、論理動作用アドレス線Ａ３の信号を論理動作用データ線Ｄ２に出力する接続要素を構成する。
【００９３】
図２３に、図２２に示す論理要素及び接続要素の真理値表を示す。図２２の論理動作は、入力Ｄ０〜Ｄ３の３つの入力を使用し、１つの出力Ｄ０を出力として使用する。一方、図２３の接続要素は、入力Ａ３の信号を出力Ｄ２に出力する接続要素が構成される。
【００９４】
図２４は、ＡＤ０、ＡＤ１、ＡＤ２、及びＡＤ３の４つのＡＤ対を有するＭＬＵＴによって実現される論理動作及び接続要素の一例を示す図である。図２１に示すＭＬＵＴと同様に、ＡＤ０は、論理動作用アドレス線Ａ０と論理動作用データ線Ｄ０とを有する。ＡＤ１は、論理動作用アドレス線Ａ１と論理動作用データ線Ｄ１とを有する。ＡＤ２は、論理動作用アドレス線Ａ２と論理動作用データ線Ｄ２とを有する。そして、ＡＤ３は、論理動作用アドレス線Ａ３と論理動作用データ線Ｄ３とを有する。上述のように、ＭＬＵＴ３０は、３入力１出力の論理動作と、１入力１出力の接続要素との２つの動作を１つのＭＬＵＴ３０で実現する。具体的には、論理動作は、ＡＤ対０の論理動作用アドレス線Ａ０と、ＡＤ対１の論理動作用アドレス線Ａ１と、ＡＤ対２の論理動作用アドレス線Ａ２とを入力として使用する。そして、ＡＤ対０の論理動作用データ線Ｄ０のアドレス線を出力と使用する。また、接続要素は、破線で示すようにＡＤ対３の論理動作用アドレス線Ａ３に入力された信号をＡＤ対２の論理動作用データ線Ｄ２に出力する。
【００９５】
以上説明した実施形態は典型例として挙げたに過ぎず、その各実施形態の構成要素の組合せ、変形及びバリエーションは当業者にとって明らかであり、当業者であれば本発明の原理及び請求の範囲に記載した発明の範囲を逸脱することなく上述の実施形態の種々の変形を行えることは明らかである。
【符号の説明】
【００９６】
２０    ＭＰＬＤ
３０    ＭＬＵＴ
１００    半導体装置
【図１】
0005890733.tif 000002
【図２】
0005890733.tif 000003
【図３】
0005890733.tif 000004
【図４】
0005890733.tif 000005
【図５】
0005890733.tif 000006
【図６】
0005890733.tif 000007
【図７Ａ】
0005890733.tif 000008
【図７Ｂ】
0005890733.tif 000009
【図８】
0005890733.tif 000010
【図９】
0005890733.tif 000011
【図１０】
0005890733.tif 000012
【図１１】
0005890733.tif 000013
【図１２】
0005890733.tif 000014
【図１３】
0005890733.tif 000015
【図１４】
0005890733.tif 000016
【図１５】
0005890733.tif 000017
【図１６】
0005890733.tif 000018
【図１７】
0005890733.tif 000019
【図１８】
0005890733.tif 000020
【図１９】
0005890733.tif 000021
【図２０】
0005890733.tif 000022
【図２１】
0005890733.tif 000023
【図２２】
0005890733.tif 000024
【図２３】
0005890733.tif 000025
【図２４】
0005890733.tif 000026