(57)【要約】【課題】消費電力をなるべく低減できるように断熱リサイクル論理回路を設計する。【解決手段】断熱リサイクル論理回路の論理セルをそれぞれの論理深さに応じてＭ個（Ｍ≧Ｎ）の論理セル部分集合にグルーピングし、Ｍ個の論理セル部分集合のうちの少なくとも一の論理セル部分集合に属する論理セルの数が増加するように、グルーピングされた複数の論理セルのうちの少なくとも一の論理セルを移動して少なくとも一の論理セルが属する論理セル部分集合を変更する。更に、論理セル集合のそれぞれが、Ｍ個の論理セル部分集合のうちの一の論理セル部分集合又は２以上の論理セル部分集合の和集合として決定される。決定されたＮ個の論理セル集合にＮ個の電源クロック信号を割り当てる。更に、論理セル集合のそれぞれは、論理セルの数が増加された前記少なくとも一の論理セル部分集合に属する論理セルが、論理セル集合回路の第１段の論理セルになるように決定される。【選択図】図６
2013149122.tif 000002
【特許請求の範囲】
【請求項１】
断熱リサイクル論理回路に含まれる複数の論理セルをＮ個（Ｎ≧３）の論理セル集合にグルーピングする工程と、
前記Ｎ個の論理セル集合にＮ個の電源クロック信号を割り当てる工程と、
前記複数の論理セル集合のそれぞれに割り当てられた前記電源クロック信号が、それぞれに属する論理セルで構成される論理セル集合回路に供給されるように、前記断熱リサイクル論理回路のネットリストである出力ネットリストを生成する工程
とを具備し、
前記グルーピングする工程では、前記Ｎ個の論理セル集合のうちの一であるフリップフロップ論理セル集合がフリップフロップで構成されるように前記複数の論理セルが前記論理セル集合に割り当てられ、
前記グルーピングする工程では、前記複数の論理セルのうち前記フリップフロップ論理セル集合に割り当てられていない論理セルをそれぞれの論理深さに応じてＭ個（Ｍ≧Ｎ）の論理セル部分集合にグルーピングし、前記Ｍ個の論理セル部分集合のうちの少なくとも一の論理セル部分集合に属する論理セルの数が増加するようにグルーピングされた前記複数の論理セルのうちの少なくとも一の論理セルを移動して前記少なくとも一の論理セルが属する論理セル部分集合を変更し、更に、前記Ｎ個の論理セル集合のうちのフリップフロップ論理セル集合以外の論理セル集合のそれぞれを、前記Ｍ個の論理セル部分集合のうちの一の論理セル部分集合又は２以上の論理セル部分集合の和集合として決定し、
前記Ｎ個の論理セル集合のうちのフリップフロップ論理セル集合以外の論理セル集合のそれぞれは、論理セルの数が増加された前記少なくとも一の論理セル部分集合に属する論理セルが、前記論理セル集合回路の第１段の論理セルになるように決定される
集積回路設計方法。
【請求項２】
請求項１に記載の集積回路設計方法であって、
前記グルーピングする工程では、前記Ｎ個の論理セル集合のうちの前記フリップフロップ論理セル集合でない論理セル集合に対応する前記論理セル集合回路において第１段となる論理セルの数の総和が最大になるように、前記少なくとも一の論理セルが属する論理セル部分集合を変更する
集積回路設計方法。
【請求項３】
請求項１又は２に記載の集積回路設計方法であって、
前記少なくとも一の論理セルが属する論理セル部分集合の変更は、前記Ｍ個の論理セル部分集合のそれぞれは、配線で直接に接続される２つの論理セルを含んではならず、前記Ｍ個の論理セル部分集合の接続関係を有向グラフにしたときに帰還ループが存在しないという条件で行われる
集積回路設計方法。
【請求項４】
請求項３に記載の集積回路設計方法であって、
前記グルーピングする工程では、前記少なくとも一の論理セルが属する論理セル部分集合の変更において、前記複数の論理セルのうち前記フリップフロップ論理セル集合に割り当てられていない論理セルのそれぞれについて、前記Ｍ個の論理セル部分集合のうちから移動先となり得る論理セル部分集合を算出し、更に、前記Ｍ個の論理セル部分集合のそれぞれについて、所属可能な論理セルの数を算出し、前記少なくとも一の論理セルの移動先を前記Ｍ個の論理セル部分集合のうち所属可能な論理セルの数が１番目からＮ−１番目に多い論理セル部分集合に選択する
集積回路設計方法。
【請求項５】
請求項１乃至４のいずれかに記載の集積回路設計方法であって、
更に、前記断熱リサイクル論理回路のネットリストである入力ネットリストを生成する工程を具備し、
前記入力ネットリストを生成する工程は、前記断熱リサイクル論理回路の組合せ論理回路が所定の論理深さ以下になるように中間フリップフロップを配置する工程を含む
集積回路設計方法。
【請求項６】
請求項１乃至４のいずれかに記載の集積回路設計方法であって、
更に、前記断熱リサイクル論理回路のネットリストである入力ネットリストを生成する工程を具備し、
前記入力ネットリストの生成においては、前記断熱リサイクル論理回路に使用する論理セルが負論理関数を実現する論理セルに限定される
集積回路設計方法。
【請求項７】
請求項１乃至４のいずれかに記載の集積回路設計方法であって、
更に、前記断熱リサイクル論理回路のネットリストである入力ネットリストを生成する工程を具備し、
前記入力ネットリストを生成する工程は、論理合成で生成されたネットリストの一部を論理的に等価な部分回路と置き換えることで前記断熱リサイクル論理回路の組合せ論理回路の論理深さを低減する工程を含む
集積回路設計方法。
【請求項８】
請求項１乃至４のいずれかに記載の集積回路設計方法であって、
更に、前記断熱リサイクル論理回路のネットリストである入力ネットリストを生成する工程を具備し、
前記入力ネットリストは、前記複数の論理セルそれぞれの遅延を示す遅延情報を含み、
前記複数の論理セルのうち前記フリップフロップ論理セル集合に割り当てられていない論理セルのうち遅延が所定値より大きいセルを、遅延に応じて複数段として扱いながら論理深さを算出する
集積回路設計方法。
【請求項９】
断熱リサイクル論理回路に含まれる複数の論理セルをＮ個（Ｎ≧３）の論理セル集合にグルーピングするグルーピング手段と、
前記Ｎ個の論理セル集合にＮ個の電源クロック信号を割り当てる割当手段と、
前記複数の論理セル集合のそれぞれに割り当てられた前記電源クロック信号が、それぞれに属する論理セルで構成される論理セル集合回路に供給されるように、前記断熱リサイクル論理回路のネットリストを生成するネットリスト生成手段
とを具備し、
前記グルーピング手段は、前記Ｎ個の論理セル集合のうちの一であるフリップフロップ論理セル集合がフリップフロップで構成されるように前記複数の論理セルを前記論理セル集合に割り当て、
前記グルーピング手段は、前記複数の論理セルのうち前記フリップフロップ論理セル集合に割り当てられていない論理セルをそれぞれの論理深さに応じてＭ個（Ｍ≧Ｎ）の論理セル部分集合にグルーピングし、前記Ｍ個の論理セル部分集合のうちの少なくとも一の論理セル部分集合に属する論理セルの数が増加するように、グルーピングされた前記複数の論理セルのうちの少なくとも一の論理セルを移動して前記少なくとも一の論理セルが属する論理セル部分集合を変更し、更に、前記Ｎ個の論理セル集合のうちのフリップフロップ論理セル集合以外の論理セル集合のそれぞれを、前記Ｍ個の論理セル部分集合のうちの一の論理セル部分集合又は２以上の論理セル部分集合の和集合として決定し、
前記Ｎ個の論理セル集合のうちのフリップフロップ論理セル集合以外の論理セル集合のそれぞれは、論理セルの数が増加された前記少なくとも一の論理セル部分集合に属する論理セルが、前記論理セル集合回路の第１段の論理セルになるように決定される
集積回路設計装置。
【請求項１０】
請求項９に記載の集積回路設計装置であって、
前記グルーピング手段は、前記Ｎ個の論理セル集合のうちの前記フリップフロップ論理セル集合でない論理セル集合に対応する前記論理セル集合回路において第１段となる論理セルの数の総和が最大になるように、前記少なくとも一の論理セルが属する論理セル部分集合を変更する
集積回路設計装置。
【請求項１１】
請求項９又は１０に記載の集積回路設計装置であって、
前記少なくとも一の論理セルが属する論理セル部分集合の変更は、前記Ｍ個の論理セル部分集合のそれぞれは、配線で直接に接続される２つの論理セルを含んではならず、前記Ｍ個の論理セル部分集合の接続関係を有向グラフにしたときに帰還ループが存在しないという条件で行われる
集積回路設計装置。
【請求項１２】
請求項１１に記載の集積回路設計装置であって、
前記グルーピング手段は、前記少なくとも一の論理セルが属する論理セル部分集合の変更において、前記複数の論理セルのうち前記フリップフロップ論理セル集合に割り当てられていない論理セルのそれぞれについて、前記Ｍ個の論理セル部分集合のうちから移動先となり得る論理セル部分集合を算出し、更に、前記Ｍ個の論理セル部分集合のそれぞれについて、所属可能な論理セルの数を算出し、前記少なくとも一の論理セルの移動先を前記Ｍ個の論理セル部分集合のうち所属可能な論理セルの数が１番目からＮ−１番目に多い論理セル部分集合に選択する
集積回路設計装置。
【請求項１３】
コンピュータに
断熱リサイクル論理回路に含まれる複数の論理セルをＮ個（Ｎ≧３）の論理セル集合にグルーピングする工程と、
前記Ｎ個の論理セル集合にＮ個の電源クロック信号を割り当てる工程と、
前記複数の論理セル集合のそれぞれに割り当てられた前記電源クロック信号が、それぞれに属する論理セルで構成される論理セル集合回路に供給されるように、前記断熱リサイクル論理回路のネットリストである出力ネットリストを生成する工程
とを実行させる集積回路設計用プログラムであって、
前記グルーピングする工程では、前記Ｎ個の論理セル集合のうちの一であるフリップフロップ論理セル集合がフリップフロップで構成されるように前記複数の論理セルが前記論理セル集合に割り当てられ、
前記グルーピングする工程では、前記複数の論理セルのうち前記フリップフロップ論理セル集合に割り当てられていない論理セルをそれぞれの論理深さに応じてＭ個（Ｍ≧Ｎ）の論理セル部分集合にグルーピングし、前記Ｍ個の論理セル部分集合のうちの少なくとも一の論理セル部分集合に属する論理セルの数が増加するように、グルーピングされた前記複数の論理セルのうちの少なくとも一の論理セルを移動して前記少なくとも一の論理セルが属する論理セル部分集合を変更し、更に、前記Ｎ個の論理セル集合のうちのフリップフロップ論理セル集合以外の論理セル集合のそれぞれを、前記Ｍ個の論理セル部分集合のうちの一の論理セル部分集合又は２以上の論理セル部分集合の和集合として決定し、
前記Ｎ個の論理セル集合のうちのフリップフロップ論理セル集合以外の論理セル集合のそれぞれは、論理セルの数が増加された前記少なくとも一の論理セル部分集合に属する論理セルが、前記論理セル集合回路の第１段の論理セルになるように決定される
集積回路設計用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、集積回路の設計方法、設計装置、及びプログラムに関し、特に、断熱リサイクル動作に対応した構成を有する集積回路の設計に関する。
【背景技術】
【０００２】
あらゆるロジックＬＳＩ（large scale integrated circuit）で消費電力の低減が求められている。スタティックＣＭＯＳ回路技術においても、既に、消費電力の低減のための様々な手法が提案されているが、ＣＭＯＳ論理の動作原理が低電力化の大きな壁として立ちはだかっている。ＣＭＯＳ論理は、原理的に、論理セルの出力の値が変化するときに電源からの充電と接地への放電とが行われるため、電源から接地へ静電エネルギーを放出してしまうという性質がある。加えて、充電及び放電に伴い素子や配線に電流が流れ、抵抗成分によってジュール熱という形でエネルギーを放出してしまうという性質がある。
【０００３】
以上の課題を解決する手法として、断熱リサイクル動作が提案されている。断熱リサイクル動作とは、入力信号を確定させてから電源端子と接地端子に供給される信号を徐々に変化させ、また、出力信号が確定している状態で当該信号を徐々に変化させることで消費電力を低減させる手法である。断熱リサイクル動作では、電源端子や接地端子の電位の変化を緩やかにすることで素子や配線に流れる電流を抑えることが可能となり、ジュール熱によるエネルギー放出を抑えることが可能になっている（このような動作は、断熱動作と呼ばれる）。また、出力信号が確定している状態で電源端子と接地端子に供給される信号を変化させることで、電源に電荷を回収し、再利用することが可能になっている（このような動作は、リサイクル動作と呼ばれる）。断熱リサイクル動作では、電源端子と接地端子に与えられる信号は交流（非直流）である。この交流信号は電源とクロックを兼ねているため、電源クロック信号とよばれる。
【０００４】
なお、断熱リサイクル動作については、例えば、特開平１０−３０８６６２号公報（特許文献１）、及び、特開平７−２２１６３１号公報（特許文献２）、特開２０１１−１２４６３１号公報（特許文献３）に開示されている。特許文献１は、クロスカップルされたＰＭＯＳトランジスタとＮＭＯＳ演算部からなる単位論理回路において、入力信号と電圧信号とを同位相で制御する技術を開示している。特許文献２は、ＣＭＯＳ（complementary MOS）論理回路にスイッチングダイオードを結合すると共に、位相が１８０°ずれた入力クロックを供給する技術を開示している。特許文献３は、断熱的回路動作と非断熱的回路動作を切り替え可能である回路装置を開示している。
【０００５】
断熱リサイクル論理回路は、論理レベルでは同期式論理のＣＭＯＳ論理回路と概ね同様の構成であり、回路入力とフリップフロップ（レジスタ）の間、フリップフロップとフリップフロップの間、フリップフロップと回路出力の間に組合せ論理回路をおく構成をとる。図１は、断熱リサイクル動作に対応したＣＭＯＳ論理回路の構成の簡単な例を示している。コア１０１は、断熱リサイクル動作に対応する構成を有しており、コア１０１には、高位側電源クロック信号ＶＤＤ１〜ＶＤＤ３、ＶＤＤＦと、低位側電源クロック信号ＧＮＤ１〜ＧＮＤ３、ＧＮＤＦとが供給されている。コア１０１は、論理セル１０２〜１０４と、フリップフロップ１０５、１０６とを備えている。論理セル１０２〜１０４のそれぞれは、ＣＭＯＳ回路として構成されており、論理セル１０２〜１０４は、組み合わせ論理回路を構成している。
【０００６】
図１の回路では、フリップフロップ１０５は、データ信号Ｄ０を論理セル１０２に出力する。論理セル１０２は、データ信号Ｄ０に応答してデータ信号Ｄ１を出力し、論理セル１０３は、データ信号Ｄ１に応答してデータ信号Ｄ２を出力し、論理セル１０４は、データ信号Ｄ２に応答してデータ信号Ｄ３を出力する。フリップフロップ１０６は、データ信号Ｄ３をラッチする。
【０００７】
断熱リサイクル論理回路では、基本的には、フリップフロップと組合せ論理回路内の論理セルとで、異なる電源クロック信号が供給される。そして、論理パスの前段の論理セルの電源クロック信号が次段の論理セルの電源クロック信号よりも早く変化するように各論理セルに電源クロック信号が供給される。これは、各論理セルは、入力信号の確定の後に電源クロック信号が変化するという順序によって、断熱リサイクル動作を実現するためである。
【０００８】
例えば、図１の回路では、フリップフロップ１０５、１０６に高位側電源クロック信号ＶＤＤＦ及び低位側電源クロック信号ＧＮＤＦが供給される。一方、論理セル１０２、１０３、１０４には、高位側電源クロック信号ＶＤＤ１、ＶＤＤＤ２、ＶＤＤ３がそれぞれ供給され、更に、低位側電源クロック信号ＧＮＤ１、ＧＮＤ２、ＧＮＤ３がそれぞれ供給される。
【０００９】
図２Ａ及び図２Ｂは、図１の回路の各信号の波形の例を示すタイミングチャートである。図２Ａは、低位側電源クロック信号ＧＮＤ１、ＧＮＤ２、ＧＮＤ３が接地電位（ＶＬ（＝０Ｖ））に固定される場合の波形を示しており、図２Ｂは、低位側電源クロック信号ＧＮＤ１、ＧＮＤ２、ＧＮＤ３が高位側電源クロック信号ＶＤＤ１、ＶＤＤＤ２、ＶＤＤ３に同期して変化する場合の波形を示している。図２Ａ、図２Ｂの動作では、フリップフロップ１０５、１０６に供給される高位側電源クロック信号ＶＤＤＦ、低位側電源クロック信号ＧＮＤＦは、それぞれ、正電源電圧ＶＨ、接地電圧ＶＬに固定される。
【００１０】
図２Ａの動作では、論理セル１０２に入力されるデータ信号Ｄ０の値が確定した後（タイミング（１））、高位側電源クロック信号ＶＤＤ１が接地電圧ＶＬから正電源電圧ＶＨに緩やかにプルアップされる（タイミング（２））。これにより、論理セル１０２から出力される（即ち、論理セル１０３に入力される）データ信号Ｄ１の値が確定する。即ち、論理セル１０２の出力ノードの充電が完了する。続いて、高位側電源クロック信号ＶＤＤ２が接地電圧ＶＬから正電源電圧ＶＨに緩やかにプルアップされる。これにより、論理セル１０３から出力される（即ち、論理セル１０４に入力される）データ信号Ｄ２の値が確定する。更に、高位側電源クロック信号ＶＤＤ３が接地電圧ＶＬから正電源電圧ＶＨに緩やかにプルアップされ、論理セル１０４から出力されるデータ信号Ｄ３の値が確定する。高位側電源クロック信号ＶＤＤ１、ＶＤＤ２、ＶＤＤ３が緩やかに（図２Ａではランプ波形状に）変化されることにより、論理セル１０２、１０３、１０４の出力ノードを充電する経路に流れる電流の大きさが小さくなり、消費電力が有効に低減される。
【００１１】
続いて、高位側電源クロック信号ＶＤＤ３が正電源電圧ＶＨから接地電圧ＶＬに緩やかにプルダウンされる。これにより、電荷が、論理セル１０４の出力ノードから高位側電源クロック信号ＶＤＤ３を生成する電源に回収される。続いて、高位側電源クロック信号ＶＤＤ２、ＶＤＤ１が順次に正電源電圧ＶＨから接地電圧ＶＬに緩やかにプルダウンされ、電荷が、論理セル１０３、１０２の出力ノードから電源に回収される。電荷が電源に回収されることにより、消費電力が有効に低減される。
【００１２】
低位側電源クロック信号ＧＮＤ１、ＧＮＤ２、ＧＮＤ３も変化される場合、図２Ｂに図示されているように、低位側電源クロック信号ＧＮＤ１、ＧＮＤ２、ＧＮＤ３が、それぞれ、高位側電源クロック信号ＶＤＤ１、ＶＤＤＤ２、ＶＤＤ３が正電源電圧ＶＨにプルアップされるタイミングで接地電圧ＶＬにプルダウンされ、高位側電源クロック信号ＶＤＤ１、ＶＤＤＤ２、ＶＤＤ３が接地電圧ＶＬにプルダウンされるタイミングで正電源電圧ＶＨにプルアップされる。これにより、消費電力の低減が実現される。
【００１３】
多段の論理セルに供給される電源クロック信号の変動において適切な時間差を実現するためには、理想的には、図１に図示されているように、組合せ論理回路の最大の論理深さ（最大の論理段数）と同数の電源クロック信号を組合せ論理回路に供給することが望ましい。例えば、図１の回路では、論理セル１０２〜１０４で構成される組合せ論理回路の最大の論理深さが３であり、３つの高位側電源クロック信号ＶＤＤ１〜ＶＤＤ３が当該組合せ論理回路に供給される。ところが、所望のタイミングで変動する交流信号を多数発生させると、回路サイズが大きくなり、また、消費電力が増大するため、一部の論理セルは前段と同じ電源クロック信号を与えざるを得ないことがある。
【００１４】
例えば、図３は、論理セル１０２〜１０４で構成される組合せ論理回路（論理深さが３）に２つの高位側電源クロック信号ＶＤＤ１、ＶＤＤ２しか供給されない場合の断熱リサイクル論理回路の構成の例を示している。図３の回路では、論理セル１０２、１０３に高位側電源クロック信号ＶＤＤ１が共通に供給されている。
【００１５】
このような場合には、図４に図示されているように、後段の論理セル１０３に供給される高位側電源クロック信号ＶＤＤ１が変動を始めるタイミングが、前段の論理セル１０２の出力信号Ｄ１が確定する前になってしまう。そのため、前段の論理セル１０２は断熱リサイクル動作を行うが、後段の論理セル１０３は断熱リサイクル動作を行わなくなってしまう。
【００１６】
よって、できるだけ消費電力が低い断熱リサイクル論理回路を設計するためには、組合せ論理回路部分を組合せ論理回路部分に供給可能な電源クロック信号と同数の電源ドメインにグルーピングしたときに、電源ドメインの第１段になる論理セルの数を増やす一方で、電源ドメインの第２段以降になる論理セルの数を少なくすることが望ましい。
【００１７】
この点は、通常のＣＭＯＳ論理回路と断熱リサイクル論理回路の設計の重要な差異である。図５は、ＣＭＯＳ論理回路と断熱リサイクル論理回路の設計の差異を説明する図である。断熱リサイクル論理回路は、多数の電源を用いるという点でＣＭＯＳ論理回路と共通点があるが、ＣＭＯＳ論理回路では、ＣＰＵ等のコアやコア内部の演算器を単位として同一の電源電圧が供給される電源ドメインが定められる。例えば、図５の左図に示されているように、コア２０１、２０２、２０３のそれぞれに論理セルとフリップフロップとが含まれ、コア２０１、２０２、２０３のそれぞれに含まれている論理セルとフリップフロップに同一の電源電圧が供給される。例えば、コア２０１には論理セル２０４〜２０６とフリップフロップ２０７、２０８が含まれているが、これらの論理セル２０４〜２０６、フリップフロップ２０７、２０８には、高位側電源電圧ＶＤＤ１と低位側電源電圧ＶＳＳ１が供給される。それぞれの電源ドメインでは、機能の使用／不使用にしたがい電源のオン／オフや、要求性能にしたがい電源電圧の昇圧／降圧が行われる。
【００１８】
それに対して、断熱リサイクル論理回路は、図５の右図に図示されているように、原則的に論理セルを単位として電源ドメインのグルーピングが行われる。このとき、各電源ドメインの第１段の論理セル以外は断熱リサイクル動作を行わない。このため、各電源ドメインの第１段の論理セル以外の論理セルでは、消費電力を浪費してしまうことになる。
【００１９】
しかしながら、ここで議論したようなＣＭＯＳ論理回路と断熱リサイクル論理回路の設計における差異に着目し、消費電力をなるべく低減できるように断熱リサイクル論理回路を設計する手法は、発明者の知る限り知られていない。
【先行技術文献】
【特許文献】
【００２０】
【特許文献１】特開平１０−３０８６６２号公報
【特許文献２】特開平７−２２１６３１号公報
【特許文献３】特開２０１１−１２４６３１号公報
【発明の概要】
【発明が解決しようとする課題】
【００２１】
このように、従来技術には消費電力をなるべく低減できるように断熱リサイクル論理回路を設計する技術が存在しないという課題がある。
【課題を解決するための手段】
【００２２】
一実施形態では、集積回路設計方法が、断熱リサイクル論理回路に含まれる複数の論理セルをＮ個（Ｎ≧３）の論理セル集合にグルーピングする工程と、Ｎ個の論理セル集合にＮ個の電源クロック信号を割り当てる工程と、複数の論理セル集合のそれぞれに割り当てられた電源クロック信号が、それぞれに属する論理セルで構成される論理セル集合回路に供給されるように、断熱リサイクル論理回路のネットリストである出力ネットリストを生成する工程とを具備する。ここで、Ｎ個の論理セル集合のうちの一であるフリップフロップ論理セル集合については、該フリップフロップ論理セル集合がフリップフロップで構成されるように複数の論理セルが論理セル集合に割り当てられる。加えて、複数の論理セルのうちフリップフロップ論理セル集合に割り当てられていない論理セルがそれぞれの論理深さに応じてＭ個（Ｍ≧Ｎ）の論理セル部分集合にグルーピングされ、Ｍ個の論理セル部分集合のうちの少なくとも一の論理セル部分集合に属する論理セルの数が増加するように、グルーピングされた複数の論理セルのうちの少なくとも一の論理セルを移動して少なくとも一の論理セルが属する論理セル部分集合が変更される。更に、Ｎ個の論理セル集合のうちのフリップフロップ論理セル集合以外の論理セル集合のそれぞれが、Ｍ個の論理セル部分集合のうちの一の論理セル部分集合又は２以上の論理セル部分集合の和集合として決定される。Ｎ個の論理セル集合のうちのフリップフロップ論理セル集合以外の論理セル集合のそれぞれは、論理セルの数が増加された前記少なくとも一の論理セル部分集合に属する論理セルが、論理セル集合回路の第１段の論理セルになるように決定される。
【発明の効果】
【００２３】
一実施形態によれば、消費電力をなるべく低減できるように断熱リサイクル論理回路を設計する技術が提供される。
【図面の簡単な説明】
【００２４】
【図１】断熱リサイクル論理回路の構成の例を示す回路図である。
【図２Ａ】図１の断熱リサイクル論理回路の動作の例を示すタイミングチャートである。
【図２Ｂ】図１の断熱リサイクル論理回路の動作の他の例を示すタイミングチャートである。
【図３】断熱リサイクル論理回路の構成の他の例を示す回路図である。
【図４】図３の構成の断熱リサイクル論理回路において断熱リサイクル動作を行わない論理セルがあることを示すタイミングチャートである。
【図５】ＣＭＯＳ論理回路と断熱リサイクル論理回路の設計の差異を説明する図である。
【図６】一実施形態の集積回路の設計方法の概要を示すフローチャートである。
【図７】本実施形態の集積回路の設計手順の具体例を示す概念図である。
【図８Ａ】各論理セル部分集合において禁止される論理セルの接続形態の例を説明する図である。
【図８Ｂ】禁止される論理セル部分集合間の接続形態の例を説明する図である。
【図９Ａ】本実施形態の集積回路の設計方法の詳細を説明するフローチャートである。
【図９Ｂ】本実施形態の集積回路の設計方法の詳細を説明するフローチャートである。
【図９Ｃ】本実施形態の集積回路の設計方法の詳細を説明するフローチャートである。
【図１０】各論理セル部分集合に課せられる制約の下での論理セルの移動を説明する図である。
【図１１Ａ】設計される断熱リサイクル論理回路の構成の例を概念的に示す図である。
【図１１Ｂ】図１１Ａの電源ドメインの構成の例を概念的に示す図である。
【図１２】図９Ａ〜図９Ｃに図示されている集積回路の設計方法の具体例を示す概念図である。
【図１３】図９Ａ〜図９Ｃに図示されている集積回路の設計方法の具体例を示す概念図である。
【図１４】図９Ａ〜図９Ｃに図示されている集積回路の設計方法の具体例を示す概念図である。
【図１５】図９Ａ〜図９Ｃに図示されている集積回路の設計方法の具体例を示す概念図である。
【図１６】本実施形態の集積回路の設計方法が適用される断熱リサイクル論理回路の設計手順の全体を示すフローチャートである。
【図１７】図１６の設計手順を実行するための集積回路設計装置の構成の例を示すブロック図である。
【発明を実施するための形態】
【００２５】
以下、添付図面を参照しながら、一実施形態の集積回路の設計方法を説明する。まず、以下の説明において使用される用語について説明する。
【００２６】
（１）論理セル
論理セルとは、例えば、フリップフロップや、組合せ論理ゲート（ＡＮＤゲート、ＯＲゲート、インバータ等）のような、一つの機能を実現する単位となる論理回路をいう。本実施形態では、各論理セルが（少なくとも一のＮＭＯＳトランジスタと少なくとも一のＰＭＯＳトランジスタとを備える）ＣＭＯＳ回路として構成されている。
【００２７】
（２）論理セル集合
論理セル集合とは、最終的に１つの電源ドメインを構成する（即ち、同一の電源クロック回路が供給される）論理セルの集合である。例えば、Ｎ個の高電位電源クロック信号が供給される場合、本実施形態の設計方法の最終的な目標は、Ｎ個の論理セル集合を最適に決定することにある。後述されるように、本実施形態の設計方法では、フリップフロップだけで構成される論理セル集合が一つ定義され、他の論理セルは、Ｎ−１個の論理セル集合にグルーピングされる。
【００２８】
（３）論理セル集合回路
ある論理セル集合の論理セル集合回路とは、該論理セル集合に含まれる論理セルで構成される回路である。１つの電源ドメインに１つの論理セル集合回路が存在する。各論理セル集合について論理セル集合回路は定義可能である。
【００２９】
（４）論理セル部分集合
論理セル部分集合とは、論理セル集合を最終的に決定するために補助的に利用される集合である。後述されるように、論理セル部分集合は、初期的に、フリップフロップ間に設けられる組合せ論理回路の入力からの論理深さ（後述）に基づいて定義される。最終的には、論理セル集合が、一つ以上の論理セル部分集合の集合として定義される。即ち、複数の論理セル部分集合を併合して一つの論理セル集合が決定されることがあり、また、単一の論理セル部分集合がそのまま一つの論理セル集合として決定されることもあり得る。
【００３０】
（５）論理深さ
組合せ論理回路の特定の論理セル（以下、「対象論理セル」という）の論理深さとは、当該組合せ論理回路の入力から対象論理セルに到達するパスに存在する論理セル（対象論理セルを含む）の数の最大値である。ここで、組合せ論理回路の入力から対象論理セルに到達するパスが複数存在し得ることに留意されたい。
【００３１】
図６は、本発明の一実施形態における断熱リサイクル論理回路の設計手順の概略を示すフローチャートであり、図７は、設計方法の例を示す概念図である。図７の例では、設計対象の断熱リサイクル論理回路に３つの高位側電源クロック信号Ｖｄｄ１、Ｖｄｄ２、Ｖｄｄ３が割り当てられる。ここで、図７の例では、理解を容易にするために、各論理セルの接地端子が接地電圧ＶＬに固定される（即ち、低位側電源クロック信号が接地電圧ＶＬに固定される）ものとする。この場合、各論理セルが、電源クロック信号Ｖｄｄ１、Ｖｄｄ２、Ｖｄｄ３にそれぞれに対応する電源ドメイン（即ち、論理セル集合）のいずれに属するかを決定するかが本実施形態の設計方法の主題である。入力としては、断熱リサイクル論理回路における論理セルとその接続関係を記述したネットリスト（入力ネットリストという）が与えられる。なお、当該設計方法は、コンピュータにインストールされたプログラムによって実行されてもよい。
【００３２】
図６に戻り、第１の工程では、入力ネットリストに含まれる論理セルのうち組合せ論理回路に属する論理セル（フリップフロップ以外の論理セル）が、それぞれの論理深さに応じて論理セル部分集合にグルーピングされる（ステップＳ１０１）。このとき、フリップフロップは、特定の論理セル集合（以下では、フリップフロップ論理セル集合という。）にグルーピングされ、論理セル部分集合にはグルーピングされない。これは、本実施形態では、全フリップフロップが、組合せ論理回路に属する論理セルとは別に同一の電源ドメインに属するように決定されるからである。なお、本実施形態では、フリップフロップとは、データを保持する機能を有する記憶素子を意味し、ラッチやレジスタを含むことを意味している。
【００３３】
ここで、（１）各論理セル部分集合は、直接接続するパス（配線）を有する２つの論理セルを含んではならず、また、（２）論理セル部分集合の接続関係を有向グラフにしたときに帰還ループが存在してはならないという２つの制約を有する。ここで、該有向グラフの辺は、論理セル部分集合の間の配線として定義され、且つ、各辺の向きは、該辺の一端に第１の論理セルの出力が接続され他端に第２の論理セルの入力が接続される場合に、第１の論理セルの出力から第２の論理セルの入力に向かう方向と定義される。
【００３４】
例えば、図８Ａは、直接接続するパスを有する２つの論理セルＣ１、Ｃ２の例を示しており、論理セルＣ１の出力が配線を通じて直接に論理セルＣ２の出力に接続されている。図８Ａの論理セルＣ１、Ｃ２が同一の論理セル部分集合に属することは禁止される。また、図８Ｂは、論理セル部分集合の接続関係に帰還ループが存在する例を示している。図８Ｂでは、論理セルＣ１、Ｃ２、Ｃ３が論理セル部分集合＃１に属し、論理セルＣ４、Ｃ５、Ｃ６が論理セル部分集合＃２に属している。ここで、図８Ｂでは、論理セル部分集合＃１の論理セルＣ２の出力から論理セル部分集合＃２の論理セルＣ６の入力に接続された配線が存在する一方で、論理セル部分集合＃２の論理セルＣ５の出力が論理セル部分集合＃１の論理セルＣ３の入力に接続されている。即ち、論理セル部分集合＃１から論理セル部分集合＃２に送られる信号と、論理セル部分集合＃２から論理セル部分集合＃１に送られる信号とが存在し、論理セル部分集合の間に帰還ループが存在する。図８Ｂに示されているような論理セル部分集合＃１、＃２を定義することは禁止される。
【００３５】
図７の左図は、ステップＳ１０１のグルーピングの例を示している。図７の例では、入力ネットリストに記述された設計対象の断熱リサイクル論理回路が、フリップフロップＦ１〜Ｆ８と、論理セルＣ１〜Ｃ１４とを備えている。論理セルＣ１〜Ｃ１４は、フリップフロップＦ１〜Ｆ４と、フリップフロップＦ５〜Ｆ８との間に設けられた組合せ論理回路を構成している。図７では、フリップフロップＦ１〜Ｆ４の出力が、当該組合せ論理回路の入力となっており、各論理セルの論理深さは、フリップフロップＦ１〜Ｆ４の出力から起算される。
【００３６】
図７の例では、論理深さが１である論理セル、即ち、論理セルＣ１〜Ｃ４は、論理セル部分集合＃１にグルーピングされ、論理深さが２である論理セル、即ち、論理セルＣ５〜Ｃ８は、論理セル部分集合＃２にグルーピングされる。更に、論理深さが３である論理セル、即ち、論理セルＣ９〜Ｃ１２は、論理セル部分集合＃３にグルーピングされ、論理深さが４である論理セル、即ち、論理セルＣ１３は、論理セル部分集合＃４にグルーピングされる。そして、論理深さが５である論理セル、即ち、論理セルＣ１４は、論理セル部分集合＃５にグルーピングされる。フリップフロップＦ１〜Ｆ８は、論理セル部分集合にはグルーピングされず、別個にフリップフロップ論理セル集合に分類される。フリップフロップ論理セル集合には、後のステップＳ１０３において、一つの電源クロック信号が割り当てられる。
【００３７】
第２の工程では、論理セルを論理セル部分集合の間で移動することでグルーピングが変更される（ステップＳ１０２）。論理セルの移動は、組合せ論理回路に割り当てられる電源クロック信号の数と同数の論理セル部分集合になるべく多くの論理セルが属するように行われる。論理セルの移動後にも、上述の制約（各論理セル部分集合は、直接接続するパスを有する２つの論理セルを含んではならず、また、論理セル部分集合の接続関係を有向グラフにしたときに帰還ループが存在してはならない）が満たされていなければならない。論理セルの移動については、後に詳細に説明する。
【００３８】
例えば、図７の例では、既に、フリップフロップ論理セル集合に一つの電源クロック信号が割り当てられると決定されているから、組合せ論理回路に割り当てられる電源クロック信号の数は２である。よって、２つの論理セル部分集合に多くの論理セルが集まるように論理セルが移動される。図７の例では、論理セルＣ７、Ｃ８が論理セル部分集合＃３に移動され、論理セルＣ１２が論理セル部分集合＃５に移動されている。これにより、論理セル部分集合＃１、＃３により多くの論理セルが集まるように論理セルが移動されることになる。
【００３９】
第３の工程では、ステップＳ１０２で決定された論理セル部分集合から論理セル集合が最終的に決定され、各論理セル集合に１つの電源クロック信号が割り当てられる（ステップＳ１０３）。論理セル集合は、それに含まれる論理セルによって構成される論理セル集合回路において、ステップＳ１０２において多くの論理セルが集められた論理セル部分集合に含まれる論理セルが第１段となるように生成される。
【００４０】
第４の工程では、各々の論理セルに供給される電源クロック信号の情報を含むネットリストが生成されて出力される（ステップＳ１０４）。このとき、各論理セル集合に属する論理セルには、該論理セル集合に割り当てられた電源クロック信号が供給されるようにネットリストが生成される。
【００４１】
ステップＳ１０２における論理セルの移動、ステップＳ１０３における電源割当、及び、ステップＳ１０４におけるネットリストの作成の結果、ステップＳ１０２において少なくとも一の論理セル部分集合に属する論理セルの数が増加され、更に、該少なくとも一の論理セル部分集合に属する論理セルが、対応する論理セル集合回路（電源ドメイン）において第１段の論理セルとなる。この結果、各電源ドメインの第１段に位置する論理セルが増加され、断熱リサイクル動作を行う論理セルの数を増加させることができる。
【００４２】
特に、ステップＳ１０２において、組合せ論理回路に割り当てられる電源クロック信号の数と同数の論理セル部分集合に属する論理セルの数を増加し、論理セルの数を増加させた該論理セル部分集合を対応する論理セル集合回路（電源ドメイン）において第１段の論理セルとすることで、断熱リサイクル動作を行う論理セルの数を増加させることができる。
【００４３】
図７の例では、図７の左下図から理解されるようにステップＳ１０１におけるグルーピングで決められた論理セル部分集合から論理セル集合を決定し、該論理セル集合に対して電源の割り当てを行った場合、断熱リサイクル動作を行う論理セルの数は、８個になる。一方、図７の右下図から理解されるようにステップＳ１０２において論理セルを論理セル部分集合の間で移動させることで、断熱リサイクル動作を行う論理セルの数が９個に増加する。これは、本実施形態の設計方法は、消費電力を低減した設計を実現していることを意味している。
【００４４】
以下では、本実施形態の集積回路設計方法について詳細に説明する。図９Ａ〜図９Ｃは、本実施形態における断熱リサイクル論理回路の設計手順を示すフローチャートである。後述のように、図９Ａ〜図９Ｃに示された設計手順は、データ処理装置にインストールされたデータ処理プログラムによって実行される。該データ処理プログラムは、非一時的に（non-transitory）データを記録する記録媒体に書き込まれて当該データ処理装置に提供されてもよい。
【００４５】
以下では、設計対象の断熱リサイクル論理回路にＮ個の高位側電源クロック信号Ｖｄｄ１、Ｖｄｄ２・・・Ｖｄｄ（Ｎ）が割り当てられるものとして説明を行う。ここで、理解を容易にするために、各論理セルの接地端子が接地電圧ＶＬに固定される（即ち、低位側電源クロック信号が接地電圧ＶＬに固定される）ものとし、高位側電源クロック信号を、単に、電源クロック信号と記述することにする。上述のように、電源クロック信号には、１からＮまでの番号が与えられる。ここで、後述されるように、１つの電源クロック信号はフリップフロップで構成される論理セル集合に割り当てられ、且つ、少なくとも２つの電源クロック信号が組合せ論理回路に供給されなければ組合せ論理回路を構成する論理セルをグルーピングする意味がないから、Ｎは３以上の整数である。
【００４６】
該データ処理プログラムの入力データは、ＲＴＬ（Register Transfer Level）記述を論理合成ツールにより変換して得られる断熱リサイクル論理回路のネットリストである入力ネットリストと、供給される電源クロック信号の数である。入力ネットリストには、該断熱リサイクル論理回路に含まれる論理セル（例えば、フリップフロップ、ＮＡＮＤゲート、ＮＯＲゲート、インバータ等）と、それらの間の接続関係が記述される。一方、最終的に得ようとするデータ、即ち、当該データ処理プログラムの出力データは、各々の論理セルに電源情報を付加したネットリストである。
【００４７】
まず、入力ネットリストに記述された断熱リサイクル論理回路に含まれるフリップフロップを、組合せ論理回路を構成する論理セルとは別にグルーピングして、フリップフロップで構成される論理セル集合＃１を生成する（ステップＳ１）。組合せ論理回路を構成する論理セル（即ち、断熱リサイクル論理回路に含まれる論理セルのうち、フリップフロップ以外の論理セル）は、以下、組合せ論理セルということにする。
【００４８】
以下では、組合せ論理セルを（Ｎ−１）個の論理セル集合に最適にグルーピングする手法について説明する。本実施形態では、論理セル集合の形成に当たり、まず論理セル部分集合を生成する。この論理セル部分集合は、論理セル集合＃２〜＃Ｎを形成するために補助的に用いられる。最終的に、各論理セル集合を少なくとも１つ以上の論理セル部分集合に含まれる論理セルの集合として定義することで、同一の電源クロック信号が供給される論理セルで構成される論理セル集合が形成される。
【００４９】
本実施形態で論理セル部分集合を用いる目的は、論理セルの断熱リサイクル動作の可能性を集約的に計算することにある。この目的のため、複数の論理セル部分集合を併合して一つの電源クロック信号が供給される論理セル集合を形成したときに、該論理セル集合を構成する論理セル部分集合のうちの一つの論理セル部分集合に含まれる全ての論理セルが当該電源ドメイン（即ち、該論理セル集合の論理セル集合回路）での第１段になっているように、各々の論理セル部分集合を形成する。このため、上述のように、論理セル部分集合は、直接接続するパスを有する２つの論理セルを含んではならないこと（図８Ａ参照）と、論理セル部分集合の接続関係を有向グラフにしたときに帰還ループが存在してはならないこと（図８Ｂ参照）の２つの制約を有する。
【００５０】
本実施形態では、組合せ論理セルで構成される組合せ論理回路の入力からの論理深さに基づいて論理セルをグルーピングし、同一の論理深さの論理セル全てを１つの論理セル部分集合に含めることで各論理セル部分集合を定義する方法を用いる。
【００５１】
具体的には、まず、入力ネットリストの断熱リサイクル論理回路に記述された組合せ論理セルの論理深さの最大値Ｄｅｐｔｈを求め、Ｄｅｐｔｈ個の論理セル部分集合を、空集合として生成する（ステップＳ２）。ここで、上述のように、特定の論理セルの論理深さとは、当該組合せ論理回路の入力から該特定の論理セルに到達するパスに存在する論理セル（該特定の論理セルを含む）の数の最大値である。論理セル部分集合には論理深さに対応して１〜Ｄｅｐｔｈの番号が与えられる。ここで、論理セル部分集合の個数Ｄｅｐｔｈが、組合せ論理回路に割り当てられる電源クロック信号の数（Ｎ−１）以下である場合には、論理セル部分集合のグルーピングに関わらず全ての組合せ論理セルについて断熱リサイクル動作を行うことが可能であることに留意されたい。結果として、以下の手順は、論理セル部分集合の個数Ｄｅｐｔｈが組合せ論理回路に割り当てられる電源クロック信号の数（Ｎ−１）より多いである場合、即ち、Ｄｅｐｔｈ≧Ｎである場合に意味があることに留意されたい。
【００５２】
次に、組合せ論理セル（フリップフロップ以外の論理セル）の各々について、それぞれの論理深さに対応する論理セル部分集合へのグルーピングを行う。具体的には、まだグルーピングされていない組合せ論理セルが存在する場合（ステップＳ１１で「Ｙｅｓ」）、そのうち一つが選択され（ステップＳ１２）、選択された組合せ論理セルの論理深さｄが求められる。選択された組合せ論理セルの論理深さがｄである場合、該組合せ論理セルは、論理セル部分集合＃ｄにグルーピングされる（ステップＳ１３）。ステップＳ１２、Ｓ１３の過程は、未分配の組合せ論理セルがなくなるまで（ステップＳ１１で「Ｎｏ」）行われる。以上の図９ＡのステップＳ１〜Ｓ１３が、第１の工程（図６のステップＳ１０１）に相当する。
【００５３】
続いて、ステップＳ３１〜Ｓ３３、Ｓ４１〜Ｓ４７、Ｓ５１〜Ｓ５４における論理セルの移動の前準備として、組合せ論理回路の出力に直接に接続された出力を有する組合せ論理セルが、論理セル部分集合＃Ｄｅｐｔｈに移動される。これは、以降で述べられる論理セルの移動の際に、論理セルの移動可能範囲をなるべく広くするためである。
【００５４】
更に、組合せ論理回路に割り当てられる電源クロック信号の数（即ち、Ｎ−１）と同数の論理セル部分集合に属する論理セルの数が最大になるように論理セル部分集合間で論理セルの移動を行う（ステップＳ３１〜Ｓ３３、Ｓ４１〜Ｓ４７、Ｓ５１〜Ｓ５４）。この移動の結果、前述の２つの制約を違反してはならない。この移動の制約について図１０の例を用いて説明する。
【００５５】
図１０において、論理セル部分集合＃３に含まれる論理セルＣ４が、３つの入力と２つの出力を有していて、該３つの入力を供給する論理セルＣ１〜Ｃ３が論理セル部分集合＃１、＃２に含まれ、２つの出力を受ける論理セルＣ９、Ｃ１１が論理セル部分集合＃７、論理セル部分集合＃９に含まれる場合を考える。論理セルＣ４が論理セル部分集合＃２に移動されると、入力を供給する論理セルＣ２と同一の論理セル部分集合に属することになる。この場合、論理セルＣ２が電源ドメインの第１段で維持される一方で論理セルＣ４が第２段になる可能性がある。また、論理セルＣ４が論理セル部分集合＃７に移動されると、出力を受ける論理セルＣ９と同一の論理セル部分集合に属することになる。この場合、論理セルＣ７が電源ドメインの第１段になる一方で論理セルＣ９が電源ドメインの第２段になる可能性がある。このような移動は（１）各論理セル部分集合は、直接接続するパス（配線）を有する２つの論理セルを含んではならないという制約を満足しないから、禁止されなくてはならない。一方、論理セルＣ４の移動先が論理セル部分集合＃３〜＃６であれば、同じ論理セル部分集合に含まれる論理セルとともに電源ドメインの第１段になるか、ともに第２段以降になるかのどちらかとなる。このような移動は許容される。
【００５６】
そこで、以下で述べられる処理においては、まず、各論理セルの移動先となり得る候補（移動先候補）の論理セル部分集合を求め、最も多くの論理セルが所属可能な論理セル部分集合を求める。このような論理セル部分集合へ論理セルを集結させ、該論理セル部分集合を電源ドメインの第１段とすることで断熱リサイクル動作を行う論理セルの割合を高めることが可能となる。そのため、論理セル部分集合の各々について、所属可能な論理セルの個数を求めて、所属可能な論理セル数が最多の論理セル部分集合に所属可能な論理セルが移動される。組合せ論理回路電源数と同数の論理セル部分集合に論理セルを最大限に集めることで、断熱リサイクル動作を行う論理セルの割合を最大化できるため、所属可能セル数の計算と論理セルの論理セル部分集合間の移動を（Ｎ−１）回繰り返す。
【００５７】
具体的な手順としては、まず、上述の繰り返しのカウンタとして使用する変数ｉの初期値をｉ＝２と定め（ステップＳ３１）、カウンタｉが電源クロック信号の数Ｎ以下である場合には（ステップＳ３２で「Ｙｅｓ」）、ステップＳ４１〜Ｓ４７とステップＳ５１〜Ｓ５４におけるセル移動処理を繰り返して行う。セル移動処理が行われる毎にカウンタｉが１増加させる（ステップＳ３３）。
【００５８】
各セル移動処理では、まず各々の部分集合の所属可能セル数を０にリセットする（ステップＳ４１）。
【００５９】
続いて、各論理セルについて、それぞれが所属可能な論理セル部分集合を計算する。具体的には、所属可能な論理セル部分集合が未計算の論理セルが存在する限りは（ステップＳ４２で「Ｙｅｓ」）、そのうち１つを対象セルＣとして選んで（ステップＳ４３）、対象セルＣのファンインセル（対象セルＣの入力に接続された出力を有する論理セル）が所属する論理セル部分集合の番号の最大値ｄＭａｘと（ステップＳ４４）、対象セルＣのファンアウトセル（対象セルＣの出力に接続された入力を有する論理セル）の所属する論理セル部分集合の番号の最小値ｄＭｉｎを求める（ステップＳ４５）。このとき、当該論理セルの移動先候補である論理セル部分集合ｄＭａｘ＋１から部分集合ｄＭｉｎ−１の全てについて所属可能セル数を１増加させる（ステップＳ４６）。すべての論理セルについて前述の計算が行われた後（ステップＳ４２で「Ｎｏ」）、過去に移動先としたことのない論理セル部分集合のうちで、所属可能論理セル数が最大である論理セル部分集合Ｍを移動先の論理セル部分集合として選択する（ステップＳ４７）。初めてセル移動処理が行われる場合には、過去に移動先として選択した論理セル部分集合が無いため、単純に所属可能論理セル数が最大である論理セル部分集合が論理セル部分集合Ｍとして選択される。一方、既に少なくとも一回のセル移動処理が行われている場合には、ステップＳ４７において既にセル移動処理を行った論理セル部分集合については論理セル部分集合Ｍとして選択しない。
【００６０】
次に、各論理セルが論理セル部分集合Ｍに移動可能かの判断を行う。具体的には、全ての論理セルのうち論理セル部分集合Ｍへの移動可否の判定を行っていない論理セルがあれば（ステップＳ５１で「Ｙｅｓ」）、そのうち一つの論理セルＣが選択される（ステップＳ５２）。更に、ステップＳ４４、Ｓ４５で求めたｄＭａｘとｄＭｉｎから、論理セルＣが論理セル部分集合Ｍに所属可能であれば（ステップＳ５３で「Ｙｅｓ」）、論理セルＣを論理セル部分集合Ｍに移動し（ステップＳ５４）、所属不能であれば（ステップＳ５３で「Ｎｏ」）、次の移動可否が未判定の論理セルを選択してステップＳ５１〜Ｓ５４を行う。論理セル部分集合Ｍに移動可能かの判断を行っていない論理セルがもし残っていなければ（ステップＳ５１で「Ｎｏ」）、カウンタｉを１だけ増加した上で（ステップＳ３３）、セル移動処理を再度行う（ステップＳ４１〜Ｓ４７、ステップＳ５１〜Ｓ５４）。
【００６１】
以上のステップＳ２１、Ｓ３１〜Ｓ３３、Ｓ４１〜Ｓ４７及びＳ５１〜Ｓ５４が、図６のステップＳ１０２に相当する。
【００６２】
組合せ論理回路に割り当てられる電源クロック信号の数と同じ回数（Ｎ−１回）だけセル移動処理を繰り返した後（即ち、ステップＳ３３においてカウンタｉが電源クロック信号の数Ｎを超えてステップＳ３２で「Ｎｏ」と判断された場合）、論理セル部分集合を必要に応じで併合することで電源クロック信号の数Ｎと同一の数の論理セル集合を求める（ステップＳ６１〜６６）。更に、各々の論理セル集合に電源を割り当てる（ステップＳ７１〜７３）。
【００６３】
より具体的には、まず、論理セル部分集合を数えるためのカウンタｄと論理セル集合を数えるためのカウンタｖをともに１に初期化する（ステップＳ６１）。このとき、論理セル集合＃２〜論理セル集合＃Ｎは初期的には空集合であるとする。なお、上述のように、論理セル集合＃１は、全てのフリップフロップが属する論理セル集合であると既に決定されていることに留意されたい。
【００６４】
カウンタｄが論理セル部分集合の数Ｄｅｐｔｈ以下である間は（ステップＳ６２で「Ｙｅｓ」）、論理セル部分集合ｄの、論理セル部分集合＃１〜＃Ｄｅｐｔｈにおける所属する論理セルの数の多さの順位（即ち、論理セル部分集合＃１〜＃Ｄｅｐｔｈのうち、論理セル部分集合ｄは何番目に論理セルの数が多いか）が求められる。その順位が（Ｎ−１）以下である場合には（ステップＳ６３で「Ｙｅｓ」）、論理セル集合を数えるカウンタｖを１増加させる（ステップＳ６４）。一方、前記の順位がＮ以上であれば、カウンタｖをそのままに維持する。続いて、論理セル部分集合ｄと論理セル集合ｖの和集合を求めて、和集合を新たに論理セル集合ｖと決定する（ステップＳ６５）。更に、次の論理セル部分集合の併合処理を行うためにカウンタｄを１増加させる（ステップＳ６６）。
【００６５】
カウンタｄが論理セル部分集合の数Ｄｅｐｔｈを超えると（ステップＳ６２で「Ｙｅｓ」）、全ての論理セル部分集合について併合処理が完了する。この結果、論理セル集合＃２〜＃Ｎが決定される。ここで、論理セル集合＃２〜＃Ｎのそれぞれは、一の論理セル部分集合、又は、複数の論理セル部分集合の和集合として決定される。
【００６６】
続いて、論理セル集合＃１〜＃Ｎのそれぞれに電源クロック信号が割り当てられる。具体的には、再度カウンタｖが１に初期化される（ステップＳ７１）。更に、カウンタｖが電源クロック信号の数Ｎ以下の間は（ステップＳ７２で「Ｙｅｓ」）、論理セル集合ｖに電源クロック信号Ｖｄｄ（ｖ）を割り当ててカウンタｖが１だけ増加される（ステップＳ７３）。カウンタｖが電源クロック数Ｎを超えると（ステップＳ７２で「Ｎｏ」）、論理セル集合＃１〜＃Ｎのそれぞれへの電源クロック信号の割り当てが完了したことになる。以上のステップＳ７１〜Ｓ７３が、図６のステップＳ１０３に相当している。
【００６７】
更に、各論理セルに割り当てられた電源クロック信号を記述する割り当て電源情報を含む出力ネットリストが生成されて出力される（ステップＳ９９）。上述のステップＳ７１〜Ｓ７３において論理セル集合＃ｉに属する論理セルに電源クロック信号Ｖｄｄ（ｉ）が割り当てられるが、ステップＳ９９では、このことが割当電源情報に記述される。このステップＳ９９が、図６のステップＳ１０４に相当している。
【００６８】
図９Ａ〜図９Ｃのフローチャートに示された設計方法によって生成される出力ネットリストが、最終的には半導体装置として実装される。実装形態の一例を図１１Ａ、図１１Ｂに示す。図１１Ａの例では、半導体基板に電源の数（電源クロック信号の数）と同数の矩形の電源ドメイン２０−１〜２０−Ｎが定義され、電源ドメイン２０のそれぞれに電源クロック信号を供給する電源配線が配置される。電源制御回路１０は、該電源配線を介して各電源ドメイン２０に電源クロック信号を供給する。電源ドメイン２０−１〜２０−Ｎに、それぞれ、上述の設計方法によって論理セル集合＃１〜＃Ｎに属すると決定された論理セルが配置される。論理セル間の配線もまた実装される。その結果、電源ドメイン間を接続する配線が多数存在して、電源ドメイン内での論理セル間配線が少数存在する半導体装置が製造される。
【００６９】
例えば、電源ドメイン２０−ｋの構成の一例を図示する図１１Ｂにおいて、符号１１は、電源ドメイン２０−ｋに属する論理セルのうち第１段である論理セルを示しており、符号１２は、第２段以降の論理セルを示している。符号１３は、電源ドメイン２０−ｋとは異なる電源ドメインに属する論理セルと、電源ドメイン２０−ｋに属する論理セル１１とを接続する外部配線を示しており、符号１４は、電源ドメイン２０−ｋに属する論理セル動詞を接続する内部配線を示している。図９Ａ〜図９Ｃのフローチャートに示された設計方法は、各電源ドメイン２０−ｋの第１段の論理セル１１を増加する一方で、各電源ドメイン２０−ｋの第２段以降の論理セル１２を減少させる。即ち、外部配線１３が多く存在する一方、内部配線１４が少数存在する半導体集積回路が設計されることになる。
【００７０】
図１２〜図１５は、本実施形態の設計方法の具体例、特に、論理セル部分集合間の論理セルの移動の例を示す概念図である。本実施形態の設計方法を実現するデータ処理プログラムに、図１２の上図に示すような１４個の組合せ論理セルＣ１〜Ｃ１４と８個のフリップフロップＦ１〜Ｆ８から成る断熱リサイクル論理回路のネットリストが入力されたとする。このとき、電源の数（即ち、断熱リサイクル論理回路に供給される電源クロック信号の数）は、３（＝Ｎ）とする（図９ＡのステップＳ０）。１つの電源クロック信号はフリップフロップＦ１〜Ｆ８で構成される論理セル集合（電源ドメイン）に割り当てられるから、論理セルＣ１〜Ｃ１４で構成される組合せ論理回路に割り当てられる電源クロック信号の数は２である。
【００７１】
まず、フリップフロップＦ１〜Ｆ８から成る論理セル集合＃１が生成され（ステップＳ１）、残る組合せ論理セルＣ１〜Ｃ１４を入力からの論理深さに従って論理セル部分集合にグルーピングする。フリップフロップＦ１〜Ｆ４とフリップフロップＦ５〜Ｆ８の間に設けられた組合せ論理回路の論理深さの最大値Ｄｅｐｔｈは５であるから、５つの論理セル部分集合＃１〜＃５が生成される（ステップＳ２）。便宜的に、組合せ論理回路の入力側のフリップフロップＦ１〜Ｆ４は仮想的な論理セル部分集合＃０に属すると見なし、出力側のフリップフロップＦ５〜Ｆ８は論理セル部分集合＃６（＝Ｄｅｐｔｈ＋１）に所属すると見なす。ここで、図１２の上図では、簡単のため組合せ論理回路の入力側と出力側で共通のフリップフロップが存在しないが、仮に存在する場合は双方に所属していると見なす。
【００７２】
初期状態では、論理セルＣ１〜Ｃ１４は、いずれも、論理セル部分集合にグルーピングされていない状態である（ステップＳ１１で「Ｙｅｓ」）。まず、未グルーピングの論理セルの１つである論理セルＣ１を選択すると（ステップＳ１２）、論理セルＣ１の入力に接続される配線はフリップフロップＦ１、Ｆ２の出力からの配線（組合せ論理回路の入力に直接接続される配線）のみであるため論理深さは１となり、論理セルＣ１は論理セル部分集合＃１へグルーピングされる（ステップＳ１２）。論理セルＣ２〜Ｃ４についても同様にステップＳ１２〜Ｓ１３が適用され、論理セルＣ２〜Ｃ４が論理セル部分集合＃１へグルーピングされる。論理セルＣ５の入力は、フリップフロップＦ１からの配線だけでなく、論理深さが１である論理セルＣ１、Ｃ２からの配線に接続されているため、論理セルＣ５の論理深さは２となり、論理セルＣ５は論理セル部分集合＃２へ分配される。同様の動作を論理セルＣ６〜Ｃ１４に対して適用すると（ステップＳ１１〜Ｓ１３）、図１２の上図のような論理セル部分集合＃１〜＃５を得る。その結果、全ての論理セルが論理セル部分集合＃１〜＃５のいずれかにグルーピングされる（ステップＳ１１で「Ｎｏ」）。
【００７３】
次に、図１３に図示されているように、出力がフリップフロップＦ５〜Ｆ８の入力（組合せ論理回路の出力）に直接接続されている（即ち、他の論理セルの入力に直接接続されていない）論理セルＣ１２、Ｃ９が論理セル部分集合＃５（＝Ｄｅｐｔｈ）に移動される（ステップＳ２１）。尚、論理セルＣ１４は本ステップでの移動以前に論理セル部分集合＃５に属している。
【００７４】
更に、ステップＳ３２〜Ｓ５４のループ回数を示すカウンタｉが２に設定される（ステップＳ３１）。ｉ≦Ｎ（＝３）であるので（ステップＳ３２で「Ｙｅｓ」）、各論理セル部分集合に所属可能な論理セルの数を計算する。まず、各論理セル部分集合に所属可能な論理セルの数を示す変数を０に設定して（ステップＳ４１）、各々の論理セルについて移動先の候補となる論理セル部分集合を列挙する。図１４は、各論理セルについて移動先の候補となる論理セル部分集合を列挙する方法を示している。
【００７５】
最初は全てについて未計算であるので（ステップＳ４２で「Ｙｅｓ」）、そのうちの１つである論理セルＣ１は、入力がフリップフロップＦ１、Ｆ２に接続され、出力は論理セル部分集合＃２に属する論理セルＣ５に接続されている。即ち、論理セルＣ１のファンインセルはフリップフロップＦ１、Ｆ２であり、それらが即する論理セル部分集合の番号は仮想的に０としてあるのでｄＭａｘ＝０となる（ステップＳ４４）。一方、論理セルＣ１のファンアウトセルは論理セルＣ５であり、論理セルＣ５が所属する論理セル部分集合の番号は２であるのでｄＭｉｎ＝２となる（ステップＳ４５）。そのため、論理セルＣ１が所属可能な論理セル部分集合の番号はｄＭａｘ＋１からｄＭｉｎ−１、即ち、１のみとなり、論理セル部分集合＃１に所属可能な論理セルの数を表わす変数を０から１に増加させる（ステップＳ４６）。
【００７６】
未計算セルが残っているため（ステップＳ４２で「Ｙｅｓ」）、そのうち論理セルＣ２を選ぶ（ステップＳ４３）。論理セルＣ２に対してもステップＳ４４〜４５が同様に適用される。論理セルＣ２は、それが所属可能な論理セル部分集合の番号は１のみと計算され、論理セル部分集合＃１に所属可能な論理セルの数を表わす変数を１から２に増加させる（ステップＳ４６）。論理セルＣ３〜Ｃ４に対しても同様の計算が行われ、論理セル部分集合＃１に所属可能な論理セルの数を表わす係数は４となる（ステップＳ４２〜４６）。
【００７７】
論理セルＣ５に対しては（ステップＳ４２〜４３）、ファンインセルであるフリップフロップＦ１が所属する論理セル部分集合の番号は０、論理セルＣ１、Ｃ２の所属する論理セル部分の番号は１であるので、ｄＭａｘ＝１となる（ステップＳ４４）。またファンアウトセルである論理セルＣ９、Ｃ１０の所属する論理セル部分集合の番号は３であるので、ｄＭａｘ＝３となる（ステップＳ４５）。そのため、論理セルＣ５が所属可能な論理セル部分集合の番号はｄＭａｘ＋１からｄＭｉｎ−１、即ち、２のみとなり、論理セル部分集合＃２に所属可能な論理セルの数を表わす変数を０から１に増加させる（ステップＳ４６）。論理セルＣ６に対しても同様の計算が行われ、論理セル部分集合＃２に所属可能な論理セルの数を表わす変数は２となる（ステップＳ４２〜４６）。
【００７８】
論理セルＣ７に対しては（ステップＳ４２〜４３）、ファンインセルである論理セルＣ３、Ｃ４が所属する論理セル部分集合の番号は１であるので、ｄＭａｘ＝１となる（ステップＳ４４）。またファンアウトセルである論理セルＣ１２、Ｃ１４の所属する論理セル部分集合の番号は５であるので、ｄＭａｘ＝５となる（ステップＳ４５）。そのため、論理セルＣ７が所属可能な部分集合の番号はｄＭａｘ＋１からｄＭｉｎ−１、即ち、２から４となる。つまり、論理セルＣ７は論理セル部分集合＃２〜＃４のいずれに属してもよい。そのため、論理セル部分集合＃２〜＃４に所属可能な論理セルの数を表わす変数を、それぞれ１だけ増加させる。つまり、この段階では、論理セル部分集合＃２の所属可能な論理セルの数を表わす変数は３となり、論理セル部分集合＃３に所属可能な論理セルの数を表わす変数は１となり、論理セル部分集合＃４に所属可能な論理セルの数を表わす変数は１となる。（ステップＳ４６）。論理セルＣ８〜Ｃ１４に対しても同様の計算が行われる（ステップＳ４２〜４６）。
【００７９】
全ての論理セルに対して計算が終了したとき（ステップＳ４２で「Ｙｅｓ」）、論理セル部分集合＃１に所属可能な論理セルの数を表わす変数は４、論理セル部分集合＃２については４、論理セル部分集合＃３については６、論理セル部分集合＃４については５、論理セル部分集合＃５については３となり、そのうち所属可能な論理セルの数を表わす変数が最大の論理セル部分集合＃３（＝Ｍ）が選択される（ステップＳ４７）。
【００８０】
次に、論理セル部分集合＃３に移動可能な論理セル全てが論理セル部分集合＃３に移動される（ステップＳ５１〜５４）。具体的には、全ての論理セルＣ１〜Ｃ１４に対して、最初は移動の可否が判定された論理セルがなく未移動セルが存在するため（ステップＳ５１で「Ｙｅｓ」）、そのうちの１つである論理セルＣ１が選択される（ステップＳ５２）。論理セルＣ１の移動先の候補は論理セル部分集合＃１のみで、論理セル部分集合＃３は移動先として選択できないので（ステップＳ５３で「Ｎｏ」）、移動を行わない。
【００８１】
論理セルＣ２〜Ｃ６に対しても論理セルＣ１に対する処理と同様の処理が行われる（ステップＳ５１〜５３）。
【００８２】
次に残る論理セルＣ７〜Ｃ１４のうち（ステップＳ５１で「Ｙｅｓ」）、論理セルＣ７を選択すると（ステップＳ５２）、移動先候補は論理セル部分集合＃２〜＃４で、論理セル部分集合＃３が含まれている（ステップＳ５３で「Ｙｅｓ」）。このため、図１５の上図に示されてように、論理セルＣ７が論理セル部分集合＃３に移動される（ステップＳ５４）。論理セルＣ８〜Ｃ１１に対しても、論理セルＣ７に対する処理と同様の処理が行われる（ステップＳ５１〜５４）。
【００８３】
次に、残る論理セルＣ１２〜Ｃ１４のうち（ステップＳ５１で「Ｙｅｓ」）、論理セルＣ１２を選択すると（ステップＳ５２）、図１４では論理セルＣ１２の移動先候補は論理セル部分集合＃３〜＃５であり、論理セル部分集合＃３が含まれている。しかしながら、図１５の上図に図示されているように既にファンインセルである論理セルＣ７、Ｃ８が論理セル部分集合＃３に移動されているため、移動先候補が論理セル部分集合＃４、＃５になっている（ステップＳ５３で「Ｎｏ」）。そのため、論理セルＣ１２は論理セル部分集合＃３に移動されない。論理セルＣ１３〜Ｃ１４に対しても、論理セルＣ１に対する処理と同様の処理を行う（ステップＳ５１〜５３）。
【００８４】
全ての論理セルについての移動の可否の判定が完了したため（ステップＳ５１で「Ｙｅｓ」）、カウンタｉを１だけ増加させてｉ＝３とし（ステップＳ３３）、更に、ステップＳ４７で論理セル部分集合＃３を除外するようにして、ステップＳ４２〜５４が再度に実行される。このとき、論理セル部分集合＃１に所属可能な論理セルの数を表わす変数が４となるため、ステップＳ４７で論理セル部分集合＃１が選択される。論理セルの移動の結果、論理セル部分集合＃１〜＃５は、それぞれ、図１５の上図に図示されているような構成となる。
【００８５】
次にカウンタｉを１増加させると（ステップＳ３３）、ｉは４となり、ｉ＞Ｎ（＝３）となるため（ステップＳ３２で「Ｎｏ」）、論理セル部分集合の併合による論理セル集合の形成に処理が移る（ステップＳ６１〜Ｓ６６）。
【００８６】
まず、論理セル集合をカウントする変数ｖと論理セル部分集合をカウントする変数ｄとがｖ＝１、ｄ＝１に初期化される（ステップＳ６１）。カウンタｄの値は１であり、ｄ≦Ｄｅｐｔｈ（＝５）が成立するので（ステップＳ６２で「Ｙｅｓ」）、論理セル部分集合＃１に含まれる論理セルの数が数えられる。その結果、論理セル部分集合＃１の論理セルの数の順位は２位でＮ−１（＝２）以下であるため（ステップＳ６３で「Ｙｅｓ」）、カウンタｖを１増加させてｖ＝２とする（ステップＳ６４）。論理セル集合＃２に論理セル部分集合＃１に含まれる論理セルを追加して（ステップＳ６５）、カウンタｄを１増加させてｄ＝２とする（ステップＳ６６）。
【００８７】
次の段階では、カウンタｄが２であり、ｄ≦Ｄｅｐｔｈ（＝５）が成立するので（ステップＳ６２で「Ｙｅｓ」）、論理セル部分集合＃２に含まれる論理セルの数が数えられる。その結果、論理セルの数の順位は３位でＮ−１（＝２）を超えるため（ステップＳ６３で「Ｎｏ」）、論理セル集合＃２に論理セル部分集合＃２に含まれる論理セルを追加して（ステップＳ６５）、カウンタｄを１増加させてｄ＝３とする（ステップＳ６６）。
【００８８】
次の段階では、カウンタｄが３であり、ｄ≦Ｄｅｐｔｈ（＝５）が成立するので（ステップＳ６２で「Ｙｅｓ」）、論理セル部分集合＃３に含まれる論理セルの数が数えられる。その結果、論理セルの数の順位は１位でＮ−１（＝２）以下であるため（ステップＳ６３で「Ｙｅｓ」）、カウンタｖを１増加させてｖ＝３とする（ステップＳ６４）。更に、論理セル集合＃３に論理セル部分集合＃３に含まれる論理セルを追加して（ステップＳ６５）、カウンタｄを１増加させてｄ＝４とする（ステップＳ６６）。
【００８９】
カウンタｄの値がｄ＝４およびｄ＝５のときは、カウンタｄの値がｄ＝２である場合同様の処理を行う（ステップＳ６１〜６３、Ｓ６５〜６６）。
【００９０】
その結果、論理セル部分集合＃１、＃２に含まれる論理セルから成る論理セル集合＃２と、論理セル部分集合＃３〜＃５に含まれる論理セルから成る論理セル集合＃３が得られる。続いて、カウンタｄが増加されて６になると、ｄ＞Ｄｅｐｔｈ（＝５）が成立し（ステップ６２で「Ｎｏ」）、手順が電源割り当て（ステップＳ７１〜７３）に移る。
【００９１】
電源割り当てでは、まず論理セル集合をカウントするためのカウンタｖが初期化され、ｖ＝１に設定される（ステップＳ７１）。カウンタｖについてｖ≦Ｎ（＝３）が成立する（ステップＳ７２で「Ｙｅｓ」）、図１５の下図に図示されているようにフリップフロップから成る論理セル集合＃１に電源クロック信号Ｖｄｄ１が割り当てられる。続いて、カウンタｖが１だけ増加されてｖ＝２に設定される（ステップＳ７３）。
【００９２】
同様に、論理セルＣ１〜Ｃ６から成る論理セル集合＃２に電源クロック信号Ｖｄｄ２が割り当てられる。続いて、カウンタｖが１だけ増加されてｖ＝３に設定される。同様に、論理セルＣ７〜Ｃ１４から成る論理セル集合３＃に電源クロック信号Ｖｄｄ３が割り当てられる。更に、カウンタｖが１だけ増加されてｖ＝４に設定される。これによりカウンタｖについてｖ＞Ｎ（＝３）となったため（ステップＳ７２で「Ｎｏ」）、図１５の下図に図示されているような各論理セルへ供給される電源クロック信号の情報を含むネットリストを出力して処理を終了する（ステップＳ９９）。
【００９３】
以上に説明されている本実施形態の設計方法は、（互いが配線で直接接続されていない論理セルで構成される）論理セル部分集合のうち電源の数と同数の論理セル部分集合の論理セルの数を最大化することで断熱リサイクル動作が可能な論理セルの個数を最大化する機能を実現している。これにより、設計された断熱リサイクル論理回路を低い電力で動作させることができる。例えば、図１２の下図に示されているように、論理深さに基づくグルーピングのみを行った電源割り当てを行った場合では、断熱リサイクル動作する論理セルは１４個中の８個にすぎない。一方、図１５の下段に示されているように、本実施形態の設計手法を適用することで断熱リサイクル動作する論理セルが１４個中の９個に増えている。これは、本実施形態の設計手法が、断熱リサイクル論理回路の消費電力を低減させる効果を有していることが示している。
【００９４】
なお、上述では、高位側電源クロック信号ＶＤＤ１、ＶＤＤ２、ＶＤＤ３が変化される一方で、低位側電源クロック信号ＧＮＤ１、ＧＮＤ２、ＧＮＤ３が接地電圧ＶＬに固定される場合について説明したが、低位側電源クロック信号ＧＮＤ１、ＧＮＤ２、ＧＮＤ３も高位側電源クロック信号ＶＤＤ１、ＶＤＤ２、ＶＤＤ３に同期して変化されてもよい。この場合、高位側電源クロック信号ＶＤＤ１と、それに同期する低位側電源クロック信号ＧＮＤ１が同一の電源ドメイン（論理セル集合）に割り当てられ、高位側電源クロック信号ＶＤＤ２と、それに同期する低位側電源クロック信号ＧＮＤ２が同一の電源ドメイン（論理セル集合）に割り当てられ、高位側電源クロック信号ＶＤＤ３と、それに同期する低位側電源クロック信号ＧＮＤ３が同一の電源ドメイン（論理セル集合）に割り当てられる。
【００９５】
本実施形態の設計方法は、例えば、図１６に図示されているような断熱リサイクル論理回路を含む集積回路の設計手順に適用される。図１６に示されている設計手順では、Ｓｙｓｔｅｍ  Ｃ等の高級言語記述２１に対して高位合成（ステップＳ２０１）が行われ、該高級言語記述２１がＲＴＬ記述２２に変換される。ＲＴＬ記述としては、例えば、Ｖｅｒｉｌｏｇ又はＶＨＤＬ（VHSIC(Very High Speed Integrated Circuits)Hardware Description
Language）が使用され得る。本実施形態では、入力ネットリストに含まれる組合せ論理回路の論理深さが小さいほど論理セル部分集合が少なくなり、論理セル部分集合のなかで断熱リサイクル動作する論理セルで構成される部分集合の割合が高くなる効果が期待される。したがって、ステップＳ２０１の高位合成では、組合せ論理回路が所定の論理深さ以下になるように中間フリップフロップ（中間レジスタ）を配置する工程を含んでいることが好ましい。
【００９６】
ＲＴＬ記述２２に対して論理合成が行われ（ステップＳ２０２）、テクノロジ独立なネットリスト２３が生成される。
【００９７】
この論理合成のステップにおいては、使用する論理セルを限定してもよい。例えば、論理実現部をスタティックＣＭＯＳ論理と同様に構成する断熱リサイクル論理回路については、それに使用する論理セルを負論理関数を実現する論理セルに限定してもよい。スタティックＣＭＯＳ論理は１段の論理セルで実現可能な論理関数はＮＯＴやＮＯＲやＮＡＮＤのような単純な負論理関数や、ＡＮＤ−ＯＲ−ＩＮＶのような複合的な負論理関数に限定される。ＯＲやＡＮＤのような正論理関数はさらに負論理セルの出力にＩＮＶを設けて実質的に２段にすることで実現される。正論理関数を１つの断熱リサイクル論理で実現すると、２段のＣＭＯＳ論理部へ同一の電源が供給されることになり、第２段のＩＮＶ素子部が断熱リサイクル動作をしなくなってしまう。そこで、負論理セルに限定することで、入力ネットリストの段階で断熱リサイクル動作不能な部分を含めてしまうことを回避することが可能となる。
【００９８】
また、ネットリスト２３の生成に際して、論理合成で生成されたネットリスト２３の一部を論理的に等価な部分回路と置き換える工程を含んでもよい。一例としては、論理回路中に含まれる直列接続された２段のインバータを前段インバータの入力と後段インバータの出力を直接接続するような置換が挙げられる。また、第１段と複数の多入力１出力ＮＡＮＤセルとして、第２段を第１段のセルからの信号を入力とする２段ＮＡＮＤ部分回路を、第１段のＮＡＮＤセルの入力元と第２段のＮＡＮＤセルの出力先をそれぞれ入出力端子に接続されるＡＮＤ−ＯＲ複合セルへの置換が挙げられる。この工程により、断熱リサイクル動作可能な論理セルの割合を高めることが可能になるという効果が期待される。これは、前述のように入力ネットリストに含まれる組合せ論理回路の論理深さの最大値が小さいことが本実施形態の設計方法において好ましいためである。論理深さが小さい組合せ論理回路に含まれる論理セルは少数の論理セル部分集合に分割される。このとき、断熱リサイクル動作を行う論理セルから成る論理セル部分集合の全論理セル部分集合に対する割合を高くすることができる。
【００９９】
テクノロジ独立なネットリスト２３に対してテクノロジマッピング・論理最適化が行われ（ステップＳ２０３）、テクノロジ依存のネットリスト２４が生成される。上述された本実施形態の設計手順は、テクノロジマッピング・論理最適化の工程の一部に含まれる。本工程において、本実施形態の設計方法は当該テクノロジ依存のネットリスト２４、又は、所定の論理最適化を適用した結果として得られるテクノロジ依存のネットリスト２４に対して適用される。
【０１００】
テクノロジ依存のネットリスト２４に対して電源配線（ステップＳ２０４）、フロアプラン（ステップＳ２０５）、セル配置（ステップＳ２０６）、ＣＴＳ(clock tree synthesis)（ステップＳ２０７）、配線（ステップＳ２０８）が行われ、設計対象の集積回路のＧＤＳファイル（レイアウトデータ）が生成される。
【０１０１】
図１６に図示されているような設計方法は、例えば、図１７に図示されている集積回路設計装置３０によって提供される環境で実行される。図１７の集積回路設計装置３０は、ＣＰＵ３１、メモリ３２、入力装置３３、出力装置３４、及び外部記憶装置３５を備えている。外部記憶装置３５には、高位合成ツール４１、論理合成ツール４２、テクノロジマッピング論理最適化ツール４３、及び配置・配線ツール４４がインストールされている。高位合成ツール４１は、図１６の高位合成（ステップＳ２０１）を行うために使用されるコンピュータプログラムであり、論理合成ツール４２は、論理合成（ステップＳ２０２）を行うために使用されるコンピュータプログラムである。また、テクノロジマッピング論理最適化ツール４３は、テクノロジマッピング・論理最適化（ステップＳ２０３）を行うために使用されるコンピュータプログラムであり、配置・配線ツール４４は、電源配線（ステップＳ２０４）、フロアプラン（ステップＳ２０５）、セル配置（ステップＳ２０６）、ＣＴＳ(clock tree synthesis)（ステップＳ２０７）、及び、配線（ステップＳ２０８）を行うために使用されるコンピュータプログラムである。ＣＰＵ３１及びメモリ３２によって高位合成ツール４１、論理合成ツール４２、テクノロジマッピング論理最適化ツール４３、及び配置・配線ツール４４が実行されることで、本実施形態の設計手順が実行される。このとき、入力ネットリスト及び出力ネットリストを含む、本実施形態の設計手順において生成されるデータは、メモリ３２又は外部記憶装置３５に保存される。
【０１０２】
上述されている本実施形態の設計方法は、様々に変更可能である。例えば、本実施形態の設計方法のフローチャート（図９Ａ〜図９Ｃ）のステップＳ３２では、分岐の条件をｉ≦Ｎとしているが、本条件式の右辺はＮに限定する必要はない。例えば、当該条件式の右辺をＮ未満で２以上の任意の数とする場合は、ステップＳ３２〜Ｓ５４の繰り返し適用回数を低減できるため、本方法による設計時間の短縮が可能となる。また、当該条件式の右辺をＮよりも大きい値とする場合、Ｎとする場合よりも結果として得られる回路の断熱リサイクル率を向上させる確率があるという効果がある。
【０１０３】
また、本実施形態の設計方法のフローチャートのステップＳ４６〜Ｓ４７では、各論理セル部分集合の所属可能な論理セルの数の算出と所属可能な論理セルの数に基づく論理セル部分集合の選択が行われているが、所属可能な論理セルの数の代わりに所属可能な論理セルのトータルの面積や、所属可能な論理セルが非断熱リサイクル動作をしたときの推定消費電力を用いてもよい。
【０１０４】
また、本実施形態の設計方法において、入力として部分集合番号１と論理深さの最大値Ｄｅｐｔｈが与えられ、ｉ＝２のときにステップＳ４７で部分集合１を選択して、ｉ＝３のときにステップＳ４７で部分集合Ｄｅｐｔｈを選択するように設計手順を変更してもよい。この場合、ステップＳ６１において、論理セル集合＃２に論理セル部分集合＃１を組み込んで、カウンタ初期値をｄ＝２とｖ＝１とするように設計手順を変更する。
【０１０５】
このような変形例は、動作機序の異なるフリップフロップと組合せ論理回路の第１段の論理セルを異なる電源で駆動させることを保証する効果を有する。また、組合せ論理回路の出力に接続されている論理セルを最終段の論理セル部分集合＃Ｄｅｐｔｈに移動させることによって、それ以降のセル移動の際に各々の論理セルの所属可能な論理セル部分集合の数を増やして、断熱リサイクル動作が可能な論理セルの比率を高め、論理回路全体の消費電力を低減する効果を有する。
【０１０６】
また、上述の実施形態において、異なる位相で動作するフリップフロップやメモリを含むネットリストが入力ネットリストとするように変更してもよい。ステップＳ１は、フリップフロップを動作する位相で分類したときに最多のものが抽出され、そのフリップフロップを論理セル集合＃１にグルーピングするように変更される。その他のフリップフロップはステップＳ３以降において、組合せ論理セルと同様に扱う。
【０１０７】
このような変形例は、１サイクルの間にレジスタや同期式メモリにアクセスして演算を行いレジスタへ結果を格納するために異なる位相で動作するフリップフロップやメモリを含む断熱リサイクル論理回路の設計を可能にするという効果を有する。
【０１０８】
また、上述の実施形態において、入力ネットリストが、それに含まれる論理セルの遅延を示す遅延情報を含んでいてもよい。この場合、ステップＳ３は、回路入力からの論理深さを計算する際に、遅延が所定値より大きいセルを遅延に応じてＤ段（Ｄは、２以上の整数）として扱うように変更される。例えば、組合せ論理回路入力からの段数が第３段の論理セルの遅延が平均的な論理セルの遅延の２倍であれば、その論理セルの出力を入力とするファンアウト論理セルの論理深さが第５段と決定される。さらに、ステップＳ４４を、論理セルＣのファンイン論理セルにＤ段相当の遅延をもつ論理セルが存在する場合は、当該ファンイン論理セルが属する論理セル部分集合の番号を当該番号からＤ−１だけ減じた番号として計算するように変更する。ステップＳ４６は、論理セルＣ自身がＤ段相当の遅延をもつ場合、ｄＭｉｎ−１をｄＭｉｎ−１＋（Ｄ−１）と置き換えて各部分集合の所属可能セル数に１を加算するように変更される。
【０１０９】
このような変形例は、高性能で低電力な断熱リサイクル論理回路を設計できるという効果を有する。各電源クロック信号は、所定の周期で、且つ、異なるタイミングで順々に変動している。遅延の大きい論理セルとその出力信号が入力される論理セルの間で、それぞれに供給される電源クロック信号の変動のタイミング差が遅延よりも小さい場合、後者の論理セルが電源ドメインの第１段であったとしても、データ入力信号と電源入力信号の変動タイミングが逆転してしまう。電源クロック信号の電圧レベルの変動を高速に行う場合は、電荷のリサイクルが不可能となり、電力を浪費してしまう。電力の浪費を避けるために電源クロック信号の変動を低速に行えばよいが、性能が低下してしまう。本変形例の改良によって、遅延の大きい論理セルの電源クロック信号を隣接しないようにすることが可能となるため、その論理セルの前後で電源クロック信号が変動する時間間隔を大きく保つことが可能になる。そのため、電力浪費および性能低下を抑制することが可能となる。
【０１１０】
以上に説明された実施形態及びその変形例は、適宜に組み合わせて実施可能である。
【０１１１】
以上、本発明者の実施形態を具体的に説明したが、本発明は、上記の実施形態に限定されるものではなく、その要旨を逸脱しない範囲で様々に変更可能であることはいうまでもない。
【符号の説明】
【０１１２】
１０１、２０１、２０２、２０３：コア
１０２、１０３、１０４、２０４、２０５、２０６：論理セル
１０５、１０６、２０７、２０８：フリップフロップ
Ｃ、Ｃ１、Ｃ２、Ｃ３、Ｃ４、Ｃ５、Ｃ６、Ｃ７、Ｃ８、Ｃ９、Ｃ１０、Ｃ１１、Ｃ１２、Ｃ１３、Ｃ１４：論理セル
Ｆ１、Ｆ２、Ｆ３、Ｆ４、Ｆ５、Ｆ６、Ｆ７、Ｆ８：フリップフロップ
１０：電源制御回路
１１、１２：論理セル
１３：外部配線
１４：内部配線
２０：電源ドメイン
２１：高級言語記述
２２：ＲＴＬ記述
２３：テクノロジ独立なネットリスト
２４：テクノロジ依存のネットリスト
２５：ＧＤＳデータ
３０：集積回路設計装置
３１：ＣＰＵ
３２：メモリ
３３：入力装置
３４：出力装置
３５：外部記憶装置
４１：高位合成ツール
４２：論理合成ツール
４３：テクノロジマッピング論理最適化ツール
４４：配置・配線ツール
【図１】
2013149122.tif 000003
【図２Ａ】
2013149122.tif 000004
【図２Ｂ】
2013149122.tif 000005
【図３】
2013149122.tif 000006
【図４】
2013149122.tif 000007
【図５】
2013149122.tif 000008
【図６】
2013149122.tif 000009
【図７】
2013149122.tif 000010
【図８Ａ】
2013149122.tif 000011
【図８Ｂ】
2013149122.tif 000012
【図９Ａ】
2013149122.tif 000013
【図９Ｂ】
2013149122.tif 000014
【図９Ｃ】
2013149122.tif 000015
【図１０】
2013149122.tif 000016
【図１１Ａ】
2013149122.tif 000017
【図１１Ｂ】
2013149122.tif 000018
【図１２】
2013149122.tif 000019
【図１３】
2013149122.tif 000020
【図１４】
2013149122.tif 000021
【図１５】
2013149122.tif 000022
【図１６】
2013149122.tif 000023
【図１７】
2013149122.tif 000024