JP3117910B2 - 組み合わせ論理回路及びその設計方法 - Google Patents
組み合わせ論理回路及びその設計方法Info
- Publication number
- JP3117910B2 JP3117910B2 JP08097070A JP9707096A JP3117910B2 JP 3117910 B2 JP3117910 B2 JP 3117910B2 JP 08097070 A JP08097070 A JP 08097070A JP 9707096 A JP9707096 A JP 9707096A JP 3117910 B2 JP3117910 B2 JP 3117910B2
- Authority
- JP
- Japan
- Prior art keywords
- gate
- operating voltage
- gates
- logic circuit
- main
- 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
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/0008—Arrangements for reducing power consumption
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Logic Circuits (AREA)
Description
【0001】
【発明の属する技術分野】本発明は、大規模半導体集積
回路の消費電力を低減する技術に関する。特に、本発明
は、大規模半導体集積回路で用いられる消費電力の小さ
な組み合わせ論理回路及びその設計方法に関するもので
ある。
回路の消費電力を低減する技術に関する。特に、本発明
は、大規模半導体集積回路で用いられる消費電力の小さ
な組み合わせ論理回路及びその設計方法に関するもので
ある。
【0002】
【従来の技術】CMOS回路の消費電力は、大部分が負
荷の充放電によるダイナミック・パワーであり、これは
印加されている動作電圧の2乗に比例する。消費電力を
低減化する方法として、動作電圧を下げる方法はきわめ
て効果的であるが、動作電圧を下げるとトランジスタの
ドレイン電流が減少するため、回路の遅延時間が増大
し、性能低下を引き起こす。
荷の充放電によるダイナミック・パワーであり、これは
印加されている動作電圧の2乗に比例する。消費電力を
低減化する方法として、動作電圧を下げる方法はきわめ
て効果的であるが、動作電圧を下げるとトランジスタの
ドレイン電流が減少するため、回路の遅延時間が増大
し、性能低下を引き起こす。
【0003】たとえば、図22に示すような組み合わせ
論理回路を低消費電力化する際に、各ゲートの動作電圧
をすベて下げてしまうと、もともとタイミング・クリテ
ィカルパスだったところは、タイミング・スペックを満
足できなくなる。
論理回路を低消費電力化する際に、各ゲートの動作電圧
をすベて下げてしまうと、もともとタイミング・クリテ
ィカルパスだったところは、タイミング・スペックを満
足できなくなる。
【0004】いっぽう、論理回路の中で、すべてのパス
がクリティカルパスになっているわけではない。そこ
で、クリティカルパスに乗っていない部分のゲートに対
してのみ、動作電圧を下げることが可能である。ところ
が、CMOS回路の場合には、以下に説明するように、
低い動作電圧で動かすゲートと高い動作電圧で動かすゲ
ートのインターフエース部分に、DC電流防止用のレベ
ルコンバータ回路が必要となる。
がクリティカルパスになっているわけではない。そこ
で、クリティカルパスに乗っていない部分のゲートに対
してのみ、動作電圧を下げることが可能である。ところ
が、CMOS回路の場合には、以下に説明するように、
低い動作電圧で動かすゲートと高い動作電圧で動かすゲ
ートのインターフエース部分に、DC電流防止用のレベ
ルコンバータ回路が必要となる。
【0005】ここで、レベルコンパータが何故必要なの
かについて、説明を加える。CMOS論理回路中で、2
つの異なる動作電圧を使用する場合、図23に示すよう
に、低動作電圧(動作電圧VDDL)で動かす回路と高
動作電圧(動作電圧VDDH)で動かす回路をダイレク
トに接続すると、インターフエース部分で、DC電流が
流れてしまう。
かについて、説明を加える。CMOS論理回路中で、2
つの異なる動作電圧を使用する場合、図23に示すよう
に、低動作電圧(動作電圧VDDL)で動かす回路と高
動作電圧(動作電圧VDDH)で動かす回路をダイレク
トに接続すると、インターフエース部分で、DC電流が
流れてしまう。
【0006】この理由は、図中のノードN1がハイレベ
ル(動作電圧VDDH)のとき、VthpをPチャネル
トランジスタMP1のしきい値として、もし動作電圧V
DDLが動作電圧VDDL<動作電圧VDDHーVth
pを満たす程度に低い場合、PチャネルトランジスタM
P1は完全にオフせず、NチヤネルトランジスタMN1
を介して、動作電圧VDDHからVSSに向かってDC
電流が流れる。DC電流が流れることによる電力消量は
非常に大きいので、通常、DC電流が流れないようにす
る回路(レベルコンバータ)をインターフエース部分に
挟む方法をとる。
ル(動作電圧VDDH)のとき、VthpをPチャネル
トランジスタMP1のしきい値として、もし動作電圧V
DDLが動作電圧VDDL<動作電圧VDDHーVth
pを満たす程度に低い場合、PチャネルトランジスタM
P1は完全にオフせず、NチヤネルトランジスタMN1
を介して、動作電圧VDDHからVSSに向かってDC
電流が流れる。DC電流が流れることによる電力消量は
非常に大きいので、通常、DC電流が流れないようにす
る回路(レベルコンバータ)をインターフエース部分に
挟む方法をとる。
【0007】典型的なレベルコンバータ回路を図24に
示す。このレベルコンバータ回路は、一方のドレインが
他方のゲートに接続された一対のPチヤネルトランジス
タMP2、MP3からなっている。Pチヤネルトランジ
スタMP2は、NチヤネルトランジスタMN2によって
接地レベルに接続され、他方のPチヤネルトランジスタ
MP3は、第2のNチヤネルトランジスタMN3によっ
て接地レベルに接続されている。これらNチヤネルトラ
ンジスタMN2、MN3は、動作電圧VDDLで動作
し、やはり動作電圧VDDLで動作するゲートの出力信
号によってオンオフするが、NチヤネルトランジスタM
N3にはインバータが設けられているので、一方がオン
したときは他方がオフする。
示す。このレベルコンバータ回路は、一方のドレインが
他方のゲートに接続された一対のPチヤネルトランジス
タMP2、MP3からなっている。Pチヤネルトランジ
スタMP2は、NチヤネルトランジスタMN2によって
接地レベルに接続され、他方のPチヤネルトランジスタ
MP3は、第2のNチヤネルトランジスタMN3によっ
て接地レベルに接続されている。これらNチヤネルトラ
ンジスタMN2、MN3は、動作電圧VDDLで動作
し、やはり動作電圧VDDLで動作するゲートの出力信
号によってオンオフするが、NチヤネルトランジスタM
N3にはインバータが設けられているので、一方がオン
したときは他方がオフする。
【0008】なお、動作電圧VDDHで動かす回路の出
力に、動作電圧VDDLで動かす回路を直接接続して
も、こちらのほうは図23の場合と異なり、DC電流が
流れる問題はない。即ち、動作電圧VDDLで動かす回
路の入力のハイレベルが動作電圧VDDHまで引き上げ
られるため、Pチヤネルトランジスタは完全にオフす
る。
力に、動作電圧VDDLで動かす回路を直接接続して
も、こちらのほうは図23の場合と異なり、DC電流が
流れる問題はない。即ち、動作電圧VDDLで動かす回
路の入力のハイレベルが動作電圧VDDHまで引き上げ
られるため、Pチヤネルトランジスタは完全にオフす
る。
【0009】
【発明が解決しようとする課題】しかしながら、レベル
コンバータは、DC電流を遮断するはたらきをもつもの
の、スイッチングの際にかなり大きなダイナミック・パ
ワーを消費する。したがって、レベルコンバータの個数
が多くなればなるほど、レベルコンバータ全体で消費す
るパワーが増え、消資電力低減化の効果を弱めてしま
う。
コンバータは、DC電流を遮断するはたらきをもつもの
の、スイッチングの際にかなり大きなダイナミック・パ
ワーを消費する。したがって、レベルコンバータの個数
が多くなればなるほど、レベルコンバータ全体で消費す
るパワーが増え、消資電力低減化の効果を弱めてしま
う。
【0010】例えば、図22に与えられた論理回路に対
し、タイミング制約を満たしながら、動作電圧VDDH
を与えるゲートと動作電圧VDDLを与えるゲートを決
定する際に、従来技術では、図25のような構造が生成
されてしまう場合があった。図中、ハッチングで区別さ
れた動作電圧VDDLゲートの出力と動作電圧VDDH
ゲートの間に、レベルコンバータが設けられてる。すな
わち、図25に示す構造では、動作電圧VDDLゲート
の出力が動作電圧VDDHゲートの入力に入る接続構造
をたくさん抱えており、そのため多数のレベルコンバー
タが必要である。
し、タイミング制約を満たしながら、動作電圧VDDH
を与えるゲートと動作電圧VDDLを与えるゲートを決
定する際に、従来技術では、図25のような構造が生成
されてしまう場合があった。図中、ハッチングで区別さ
れた動作電圧VDDLゲートの出力と動作電圧VDDH
ゲートの間に、レベルコンバータが設けられてる。すな
わち、図25に示す構造では、動作電圧VDDLゲート
の出力が動作電圧VDDHゲートの入力に入る接続構造
をたくさん抱えており、そのため多数のレベルコンバー
タが必要である。
【0011】レベルコンバータの設置自体、かなり大き
なダイナミック・パワーを消費するため、多数のレベル
コンバータを挿入する構造は、消費電力を低減化すると
いう目的に合致しない。したがって、これまで論理回路
の一部分のゲートに対して、動作電圧を下げて消費電力
を下げる試みはなされていなかった。
なダイナミック・パワーを消費するため、多数のレベル
コンバータを挿入する構造は、消費電力を低減化すると
いう目的に合致しない。したがって、これまで論理回路
の一部分のゲートに対して、動作電圧を下げて消費電力
を下げる試みはなされていなかった。
【0012】本発明は、上述の如き従来の問題点を解決
するためになされたもので、その目的は、大規模半導体
集積回路の消費電力を低減することである。
するためになされたもので、その目的は、大規模半導体
集積回路の消費電力を低減することである。
【0013】また、その他の目的は、大規模半導体集積
回路で用いられる消費電力の小さな組み合わせ論理回路
及びその設計方法を提供することである。
回路で用いられる消費電力の小さな組み合わせ論理回路
及びその設計方法を提供することである。
【0014】
【課題を解決するための手段】上記目的を達成するため
に、本発明の組み合わせ論理回路は、少なくとも1つの
主入力端子と少なくとも1つの主出力端子を備え、入力
ノードと出力ノードを持ち第1の動作電圧で駆動される
複数の第1のゲートと、入力ノードと出力ノードを持ち
前記第1の動作電圧よりも低い第2の動作電圧で駆動さ
れる複数の第2のゲートとを備え、前記第2のゲートの
すべての出力ノードは、前記第2のゲートの入力ノード
と前記主出力端子のいずれかのみに接続されていること
を特徴とする。
に、本発明の組み合わせ論理回路は、少なくとも1つの
主入力端子と少なくとも1つの主出力端子を備え、入力
ノードと出力ノードを持ち第1の動作電圧で駆動される
複数の第1のゲートと、入力ノードと出力ノードを持ち
前記第1の動作電圧よりも低い第2の動作電圧で駆動さ
れる複数の第2のゲートとを備え、前記第2のゲートの
すべての出力ノードは、前記第2のゲートの入力ノード
と前記主出力端子のいずれかのみに接続されていること
を特徴とする。
【0015】又、本発明の組み合わせ論理回路を設計す
る方法は、少なくとも1つの主入力端子と、少なくとも
1つの主出力端子と、それらの間に接続された論理ゲー
トを備えた組み合わせ論理回路に適用され、前記論理ゲ
ートの全体に第1の動作電圧を供給した場合に所定のタ
イミング・スペックを満足する論理回路を設計する段階
と、前記主出力端子から前記主入力端子へ向かって、前
記論理ゲートの夫々について1つづつ前記第1の動作電
圧を、前記第1の動作電圧よりも低い第2の動作電圧に
変更できるか否かを検討する段階を含み、前記検討段階
では、前記論理ゲートの1つへ前記第2の動作電圧を与
えた場合に、前記論理回路全体で前記タイミング・スペ
ックを満たせばその論理ゲートへ供給する電圧を前記第
2の動作電圧に決定され、前記タイミング・スペックを
満たさなければその論理ゲート及びその入力端子に接続
されている論理ゲートへ供給する電圧を前記第1の動作
電圧に決定することを特徴とする。
る方法は、少なくとも1つの主入力端子と、少なくとも
1つの主出力端子と、それらの間に接続された論理ゲー
トを備えた組み合わせ論理回路に適用され、前記論理ゲ
ートの全体に第1の動作電圧を供給した場合に所定のタ
イミング・スペックを満足する論理回路を設計する段階
と、前記主出力端子から前記主入力端子へ向かって、前
記論理ゲートの夫々について1つづつ前記第1の動作電
圧を、前記第1の動作電圧よりも低い第2の動作電圧に
変更できるか否かを検討する段階を含み、前記検討段階
では、前記論理ゲートの1つへ前記第2の動作電圧を与
えた場合に、前記論理回路全体で前記タイミング・スペ
ックを満たせばその論理ゲートへ供給する電圧を前記第
2の動作電圧に決定され、前記タイミング・スペックを
満たさなければその論理ゲート及びその入力端子に接続
されている論理ゲートへ供給する電圧を前記第1の動作
電圧に決定することを特徴とする。
【0016】上述の如き構成によれば、一般的な実施形
態では、論理回路のゲートは動作電圧によって、次のよ
うにクラスタ化される。先ず、主入力端子側には最も高
い動作電圧で動かすゲートがクラスタ化し、さらに、そ
のクラスタの出カに、その次に高い動作電圧で動かすゲ
ートをクラスタ化して接続し、以下同様に次々に接続し
て、最後に、最も主出力端子に近い側に最も低い動作電
圧で動かすゲートをクラスタ化して接続される。本発明
の回路構造では、レベルコンパータの個数を、最大でも
出力ピンと同数に抑えることができるため、消費電力低
減化の効果が非常に大きい。
態では、論理回路のゲートは動作電圧によって、次のよ
うにクラスタ化される。先ず、主入力端子側には最も高
い動作電圧で動かすゲートがクラスタ化し、さらに、そ
のクラスタの出カに、その次に高い動作電圧で動かすゲ
ートをクラスタ化して接続し、以下同様に次々に接続し
て、最後に、最も主出力端子に近い側に最も低い動作電
圧で動かすゲートをクラスタ化して接続される。本発明
の回路構造では、レベルコンパータの個数を、最大でも
出力ピンと同数に抑えることができるため、消費電力低
減化の効果が非常に大きい。
【0017】
【発明の実施の形態】以下、本発明の一実施形態につい
て、図面を用いながら説明する。
て、図面を用いながら説明する。
【0018】図1は、本発明を利用して設計されたゲー
トアレイやスタンダードセル等のASICチツプの全体
を示す図である。このLSIチップは、大まかに3つの
部分からなっている。すなわち、外部回路との接続を行
うI/O部、予め回路構造の設計されているメガセルで
構成される機能ブロックMC及びMB1ー3、そして、
ランダムロジック部を構成する機能ブロックRL1ー5
によってこのLSIチップが構成される。ここで、メガ
セルMCは、メモリ部分であり、メガセルMB1ー3は
マクロブロックである。
トアレイやスタンダードセル等のASICチツプの全体
を示す図である。このLSIチップは、大まかに3つの
部分からなっている。すなわち、外部回路との接続を行
うI/O部、予め回路構造の設計されているメガセルで
構成される機能ブロックMC及びMB1ー3、そして、
ランダムロジック部を構成する機能ブロックRL1ー5
によってこのLSIチップが構成される。ここで、メガ
セルMCは、メモリ部分であり、メガセルMB1ー3は
マクロブロックである。
【0019】この内、本発明による設計方法に適した部
分は、ロジックを実現するランダムロジック部RL1ー
5である。又、マイクロプロセツサやDSP 等のフルカス
タム・チツブに応用する場合には、主にその制御ロジッ
ク部分に適用すると効果がある。
分は、ロジックを実現するランダムロジック部RL1ー
5である。又、マイクロプロセツサやDSP 等のフルカス
タム・チツブに応用する場合には、主にその制御ロジッ
ク部分に適用すると効果がある。
【0020】機能ブロックRL1ー5は単体としては組
合わせ回路であり、図2に例示するように、フリップフ
ロップを介して信号のやり取りを行う。夫々の機能ブロ
ックRLのランダムロジックを構成するゲートは、矢印
のように一般に複数の信号パスを形成して接続してい
る。そして、同一機能ブロックであっても、内部の信号
パスの遅延時間は異なる。タイミング・スペックを満た
す信号パス上の各ゲートについては、供給される動作電
圧を下げることのできる可能性がある。本発明は、この
ように、個々の機能ブロック内部の信号パスを調査し
て、構成ゲートの一部について、低い動作電圧を与える
ことにより低消費電力構造を実現するものである。
合わせ回路であり、図2に例示するように、フリップフ
ロップを介して信号のやり取りを行う。夫々の機能ブロ
ックRLのランダムロジックを構成するゲートは、矢印
のように一般に複数の信号パスを形成して接続してい
る。そして、同一機能ブロックであっても、内部の信号
パスの遅延時間は異なる。タイミング・スペックを満た
す信号パス上の各ゲートについては、供給される動作電
圧を下げることのできる可能性がある。本発明は、この
ように、個々の機能ブロック内部の信号パスを調査し
て、構成ゲートの一部について、低い動作電圧を与える
ことにより低消費電力構造を実現するものである。
【0021】図22に示す組み合わせ論理回路を用い
て、このような機能ブロックを低消費電力構造に設計す
る方法を説明する。主入力端子(i1−i5)や主出力
端子(o1−o5)において、実際に信号が有効となる
時刻を信号到着時刻ATとし、入力信号に応じて主出力
端子(o1−o5)等で出力される信号が有効となって
いなければならない時刻を信号要求時刻RTとする。即
ち、主入力端子でのATと主出力端子でのRTとの差異
が、この回路に与えられたタイミング制約である。
て、このような機能ブロックを低消費電力構造に設計す
る方法を説明する。主入力端子(i1−i5)や主出力
端子(o1−o5)において、実際に信号が有効となる
時刻を信号到着時刻ATとし、入力信号に応じて主出力
端子(o1−o5)等で出力される信号が有効となって
いなければならない時刻を信号要求時刻RTとする。即
ち、主入力端子でのATと主出力端子でのRTとの差異
が、この回路に与えられたタイミング制約である。
【0022】この論理回路全体の性能低下を引き起こす
ことなく消費電力を減らすためには、与えられたタイミ
ング制約を違反することなく、動作電圧VDDHで動か
す回路部分と動作電圧VDDLで動かす回路部分を、図
22の論理回路の中で形成する必要がある。さらに、消
費電力を最小にするためには、レベルコンバータの個数
を最小にし、かつ、動作電圧VDDLで動かす回路部分
ができるだけ多くなるようにする必要がある。その為
に、動作電圧VDDLで動作するゲートの後には、動作
電圧VDDHで動作するゲートは置かないことを条件と
して設定する。
ことなく消費電力を減らすためには、与えられたタイミ
ング制約を違反することなく、動作電圧VDDHで動か
す回路部分と動作電圧VDDLで動かす回路部分を、図
22の論理回路の中で形成する必要がある。さらに、消
費電力を最小にするためには、レベルコンバータの個数
を最小にし、かつ、動作電圧VDDLで動かす回路部分
ができるだけ多くなるようにする必要がある。その為
に、動作電圧VDDLで動作するゲートの後には、動作
電圧VDDHで動作するゲートは置かないことを条件と
して設定する。
【0023】まず、図22に与えられた回路中のすベて
の論理ゲートが、動作電圧VDDHで動作していると仮
定する。そして図22の回路全体に対し、スタティック
・パス解析というよく知られた手法を施し、各主出力端
子での信号到着時刻ATを計算する。一方、各主出力端
子について信号要求時刻RTはタイミング制約として与
えられているから、RTとATの差を取ることにより、
各主出力端子でのタイミング余裕(Slack)が求め
られる。
の論理ゲートが、動作電圧VDDHで動作していると仮
定する。そして図22の回路全体に対し、スタティック
・パス解析というよく知られた手法を施し、各主出力端
子での信号到着時刻ATを計算する。一方、各主出力端
子について信号要求時刻RTはタイミング制約として与
えられているから、RTとATの差を取ることにより、
各主出力端子でのタイミング余裕(Slack)が求め
られる。
【0024】タイミング余裕があれば(すなわちSla
ckが正の値であれば)、その主出力端子に接続したゲ
ートへの供給電圧を下げることのできる可能性がある。
しかし、タイミング余裕がなければ(すなわちSlac
kがゼロか負の値であれば)、その主出力端子に接続し
たゲートへの供給電圧を下げることはできない。十分の
タイミング余裕のある主出力端子について、以下の処理
をおこなう。ここでは説明のため、o1、o2、o3、
o4のすべてにおいて、Slackが正であるものと仮
定する。o1、o2、o3、o4をひとつづつ順に処理
していく。選ぶ順序については経験則に従う。有効な順
序の例としては、Slackの大きい順に選ぶ方法、又
は接続している負荷容量の大きい順に選ぶ方法等があ
る。
ckが正の値であれば)、その主出力端子に接続したゲ
ートへの供給電圧を下げることのできる可能性がある。
しかし、タイミング余裕がなければ(すなわちSlac
kがゼロか負の値であれば)、その主出力端子に接続し
たゲートへの供給電圧を下げることはできない。十分の
タイミング余裕のある主出力端子について、以下の処理
をおこなう。ここでは説明のため、o1、o2、o3、
o4のすべてにおいて、Slackが正であるものと仮
定する。o1、o2、o3、o4をひとつづつ順に処理
していく。選ぶ順序については経験則に従う。有効な順
序の例としては、Slackの大きい順に選ぶ方法、又
は接続している負荷容量の大きい順に選ぶ方法等があ
る。
【0025】ここでは、最初にo1を選んだものとす
る。o1から回路の接続をたどって、上流に向けて動作
電圧VDDL(例えば、3.3V)の採用の可能性を探
索していく。ここでは探索に、Depth-First-Searchと呼
ばれる、深さ方向にたどっていく方法を使う。別の探索
方法に、Breadth-First-Searchもある。これらはグラフ
理論に基づくもので、"Horowitz, Ellis, et al.; Fund
amentals of Data Structures in C, Computer Science
Press, 1994" 等に一般的な実装方法の説明がある。
る。o1から回路の接続をたどって、上流に向けて動作
電圧VDDL(例えば、3.3V)の採用の可能性を探
索していく。ここでは探索に、Depth-First-Searchと呼
ばれる、深さ方向にたどっていく方法を使う。別の探索
方法に、Breadth-First-Searchもある。これらはグラフ
理論に基づくもので、"Horowitz, Ellis, et al.; Fund
amentals of Data Structures in C, Computer Science
Press, 1994" 等に一般的な実装方法の説明がある。
【0026】o1から回路の接続をたどると、ゲートG
8に出会う。そこで、ゲートG8に対して動作電圧VD
DLを供給した場合の、G8のゲート遅延(D8ー動作
電圧VDDL)を計算する。G8に対して動作電圧VD
DHが与えられていたときのゲート遅延(D8ー動作電
圧VDDH)に比べると、D8−動作電圧VDDLは大
きくなる。このD8ー動作電圧VDDLの値を用いて、
図22の論理回路全体に対し、再度スタティック・パス
解析を施す。そして、その結果、o1からo4でのSl
ackが負にならなければ、G8には動作電圧VDDL
を与えることができると判断し、さらに主入力端子に向
けて探索を進める。以後、G8のゲート遅延としては、
D8ー動作電圧VDDLの値を使う。
8に出会う。そこで、ゲートG8に対して動作電圧VD
DLを供給した場合の、G8のゲート遅延(D8ー動作
電圧VDDL)を計算する。G8に対して動作電圧VD
DHが与えられていたときのゲート遅延(D8ー動作電
圧VDDH)に比べると、D8−動作電圧VDDLは大
きくなる。このD8ー動作電圧VDDLの値を用いて、
図22の論理回路全体に対し、再度スタティック・パス
解析を施す。そして、その結果、o1からo4でのSl
ackが負にならなければ、G8には動作電圧VDDL
を与えることができると判断し、さらに主入力端子に向
けて探索を進める。以後、G8のゲート遅延としては、
D8ー動作電圧VDDLの値を使う。
【0027】次に出会うのはゲートG5であり、今度は
G5に対して動作電圧VDDLを供給することを試み
る。しかし、G5の出力にはG8だけでなくG9も接続
されている。このような場合、先ずG9に動作電圧VD
DLを与えることができるかどうかを調べなければなら
ない。ディレイ計算およびスタティック・パス解析の結
果、G9及びG5に動作電圧VDDLを与えることがで
きると判断されれば、探索を進めて、次にG1およびG
3に動作電圧VDDLが供給できないかを試みるG1と
G3のどちらを先にチエックするかについては経験則に
従う。
G5に対して動作電圧VDDLを供給することを試み
る。しかし、G5の出力にはG8だけでなくG9も接続
されている。このような場合、先ずG9に動作電圧VD
DLを与えることができるかどうかを調べなければなら
ない。ディレイ計算およびスタティック・パス解析の結
果、G9及びG5に動作電圧VDDLを与えることがで
きると判断されれば、探索を進めて、次にG1およびG
3に動作電圧VDDLが供給できないかを試みるG1と
G3のどちらを先にチエックするかについては経験則に
従う。
【0028】このようにして、動作電圧VDDLを供給
する試みと探索を、Slackが非負であるかぎり続け
る。そして、Slackが負となるか、主入力端子に刻
達したら、次の主出力端子に移り、調査および上記と同
様の試みを始める。以上の手続きを全ての主出力端子か
ら行えば、動作電圧VDDL供給の可能性を回路全体の
ゲートについて調べることができる。
する試みと探索を、Slackが非負であるかぎり続け
る。そして、Slackが負となるか、主入力端子に刻
達したら、次の主出力端子に移り、調査および上記と同
様の試みを始める。以上の手続きを全ての主出力端子か
ら行えば、動作電圧VDDL供給の可能性を回路全体の
ゲートについて調べることができる。
【0029】上記実施形態で述べたとおり、ここでひと
つ注意すべきはフアンアウトに対する考慮である。即
ち、もし調査対象のゲートの出力に複数のゲートが接続
されていれば、それら下流のゲートを先に調査しなけれ
ばならない。たとえば、G8に動作電圧VDDLを供給
できることがわかって、次にG5に動作電圧VDDL供
給を試みるとする。一方、動作電圧VDDLで動作する
ゲートの後には、動作電圧VDDHで動作するゲートは
置いてはならない。G5の出力には、G8のみならずG
9が接続しているから、G5に動作電圧VDDLを与え
ることができるという前提条件として、G9も動作電圧
VDDLを供給ができなければならない。
つ注意すべきはフアンアウトに対する考慮である。即
ち、もし調査対象のゲートの出力に複数のゲートが接続
されていれば、それら下流のゲートを先に調査しなけれ
ばならない。たとえば、G8に動作電圧VDDLを供給
できることがわかって、次にG5に動作電圧VDDL供
給を試みるとする。一方、動作電圧VDDLで動作する
ゲートの後には、動作電圧VDDHで動作するゲートは
置いてはならない。G5の出力には、G8のみならずG
9が接続しているから、G5に動作電圧VDDLを与え
ることができるという前提条件として、G9も動作電圧
VDDLを供給ができなければならない。
【0030】このように、与えられた論理回路内の接続
構造として、主入力端子ー>動作電圧VDDHクラスタ
ー>動作電圧VDDLクラスター>レベルコンバーター
>主出力端子という、図3に示す構造が完結する。その
結果、主入力端子から主出力端子への信号の経路として
は、次の何れかを取る。
構造として、主入力端子ー>動作電圧VDDHクラスタ
ー>動作電圧VDDLクラスター>レベルコンバーター
>主出力端子という、図3に示す構造が完結する。その
結果、主入力端子から主出力端子への信号の経路として
は、次の何れかを取る。
【0031】(1)主入力端子ー>動作電圧VDDHが
供給されるゲートー>動作電圧VDDLが供給されるゲ
ートー>レベルコンバーター>主出力端子 または (2)主入力端子ー>動作電圧VDDLが供給されるゲ
ートー>レベルコンバーター>主出力端子 または (3)主入力端子ー>動作電圧VDDHが供給されるゲ
ートー>主出力端子 上記(3)の場合には、動作電圧VDDLが供給される
ゲートが入っていないため、レベルコンバータは不要と
なっている。
供給されるゲートー>動作電圧VDDLが供給されるゲ
ートー>レベルコンバーター>主出力端子 または (2)主入力端子ー>動作電圧VDDLが供給されるゲ
ートー>レベルコンバーター>主出力端子 または (3)主入力端子ー>動作電圧VDDHが供給されるゲ
ートー>主出力端子 上記(3)の場合には、動作電圧VDDLが供給される
ゲートが入っていないため、レベルコンバータは不要と
なっている。
【0032】上記(1)乃至(3)のいずれの構造に
も、「動作電圧VDDLが供給されるゲートー>動作電
圧VDDHが供給されるゲート」という接続構造は出現
しないため、与えられた論理回路内部で、ゲート間にレ
ベルコンバータを挿入する必要はない。
も、「動作電圧VDDLが供給されるゲートー>動作電
圧VDDHが供給されるゲート」という接続構造は出現
しないため、与えられた論理回路内部で、ゲート間にレ
ベルコンバータを挿入する必要はない。
【0033】このようにして、すべての主出力端子から
の探索および動作電圧VDDL供給の試みが終了する
と、最終的に、図3に示すように、図中ハッチングで区
別された動作電圧VDDLが供給されるゲート群と、動
作電圧VDDHが供給されるゲート群が、それぞれ出力
側と入力側にクラスタ化した回路構造が形成される。与
えられた論理回路外部へ出力する際に、0〜動作電圧V
DDHの電圧振幅が必要なら、動作電圧VDDLが供給
されるゲート群(動作電圧VDDLクラスタ)と主出力
端子の間に、レベルコンバータを挿入する。
の探索および動作電圧VDDL供給の試みが終了する
と、最終的に、図3に示すように、図中ハッチングで区
別された動作電圧VDDLが供給されるゲート群と、動
作電圧VDDHが供給されるゲート群が、それぞれ出力
側と入力側にクラスタ化した回路構造が形成される。与
えられた論理回路外部へ出力する際に、0〜動作電圧V
DDHの電圧振幅が必要なら、動作電圧VDDLが供給
されるゲート群(動作電圧VDDLクラスタ)と主出力
端子の間に、レベルコンバータを挿入する。
【0034】以上の処理は、各ゲートについて、図4に
示したようなテーブルをメモリ上に作成して行われる。
このテーブルには、各エントリに3つの属性が与えられ
ている。すなわち、各ゲートの識別記号に対して、その
ゲートが既に探索されているか否かを示すフィールド "
Visited"、及びそのゲートに与えられている供給電圧レ
ベル "L/H" が対応づけられている。"Visited" の初期
値は"No"、であり、"L/H" の初期値は"H" である。
示したようなテーブルをメモリ上に作成して行われる。
このテーブルには、各エントリに3つの属性が与えられ
ている。すなわち、各ゲートの識別記号に対して、その
ゲートが既に探索されているか否かを示すフィールド "
Visited"、及びそのゲートに与えられている供給電圧レ
ベル "L/H" が対応づけられている。"Visited" の初期
値は"No"、であり、"L/H" の初期値は"H" である。
【0035】以下、本発明による処理手順の詳細を図5
のフローチャートを参照しながら説明する。先ず、ステ
ップ1で、すべてのゲートが、動作電圧VDDHで動作
していると仮定した上で、1つの主出力端子から主入力
端子に向かって探索する。出会ったゲートで、そこに動
作電圧VDDLを与えたと仮定し、Slackを計算す
る(ステップ2)。Slack>0であれば(ステップ
3)、ファンアウトをチェックし(ステップ4)、ファ
ンアウトの下流のゲートすべてに動作電圧VDDLを与
えたと仮定してもSlack>0であれば(ステップ
5)、そのゲートには動作電圧VDDLを与えると決定
し(ステップ6)、テーブルの該当するフィールド "Vi
sited"に "Yes"、"L/H" に" L" を書き込んでおく。
のフローチャートを参照しながら説明する。先ず、ステ
ップ1で、すべてのゲートが、動作電圧VDDHで動作
していると仮定した上で、1つの主出力端子から主入力
端子に向かって探索する。出会ったゲートで、そこに動
作電圧VDDLを与えたと仮定し、Slackを計算す
る(ステップ2)。Slack>0であれば(ステップ
3)、ファンアウトをチェックし(ステップ4)、ファ
ンアウトの下流のゲートすべてに動作電圧VDDLを与
えたと仮定してもSlack>0であれば(ステップ
5)、そのゲートには動作電圧VDDLを与えると決定
し(ステップ6)、テーブルの該当するフィールド "Vi
sited"に "Yes"、"L/H" に" L" を書き込んでおく。
【0036】次に、ステップ7で、そのゲートの入力へ
接続する未探索(Visited=No)のゲートが存在するかど
うかをチェックする。存在する場合、そのゲート番号を
すべてスタックに積み(ステップ8)、ステップ10で
ゲート番号をポップし次にチェックすべきゲートとして
設定する。そして、ステップ2に戻って同様の処理を行
う。未探索のゲートが存在しなければ、ステップ9でス
タックを調べ、スタックに取り出すべきゲート番号があ
るかどうかを調べ、あればポップし対応するゲートを探
索対象に設定する(ステップ10)。存在しなければ、
すべての主出力端子からの探索が済んでいるかどうかを
調べ(ステップ11)、済んでいれば処理終了、済んで
いなければ次の主出力端子からの探索を開始し、最初に
出会ったゲートを対象にして、ステップ2に戻り同様の
処理を行う。
接続する未探索(Visited=No)のゲートが存在するかど
うかをチェックする。存在する場合、そのゲート番号を
すべてスタックに積み(ステップ8)、ステップ10で
ゲート番号をポップし次にチェックすべきゲートとして
設定する。そして、ステップ2に戻って同様の処理を行
う。未探索のゲートが存在しなければ、ステップ9でス
タックを調べ、スタックに取り出すべきゲート番号があ
るかどうかを調べ、あればポップし対応するゲートを探
索対象に設定する(ステップ10)。存在しなければ、
すべての主出力端子からの探索が済んでいるかどうかを
調べ(ステップ11)、済んでいれば処理終了、済んで
いなければ次の主出力端子からの探索を開始し、最初に
出会ったゲートを対象にして、ステップ2に戻り同様の
処理を行う。
【0037】もしも、ステップ3でSlack>0でな
ければ、そのゲートには動作電圧VDDHを与えると決
定し(ステップ12)、テーブルの該当するフィールド
"Visited"に "Yes"、"L/H" に" H" を書き込んでお
く。そして、スタックに取り出すべきゲート番号がある
かどうかを調べ(ステップ9)、あればポップし対応す
るゲートを探索対象に設定する(ステップ10)。なけ
れば、すべての主出力端子からの探索が済んでいるかど
うかを調べ(ステップ11)、済んでいれば処理終了、
済んでいなければ次の主出力端子からの探索を開始し、
最初に出会ったゲートを対象にして、ステップ2に戻り
同様の処理を行う。
ければ、そのゲートには動作電圧VDDHを与えると決
定し(ステップ12)、テーブルの該当するフィールド
"Visited"に "Yes"、"L/H" に" H" を書き込んでお
く。そして、スタックに取り出すべきゲート番号がある
かどうかを調べ(ステップ9)、あればポップし対応す
るゲートを探索対象に設定する(ステップ10)。なけ
れば、すべての主出力端子からの探索が済んでいるかど
うかを調べ(ステップ11)、済んでいれば処理終了、
済んでいなければ次の主出力端子からの探索を開始し、
最初に出会ったゲートを対象にして、ステップ2に戻り
同様の処理を行う。
【0038】もしも、ステップ5で、ファンアウトの下
流のゲートすべてに動作電圧VDDLを与えることがで
きない場合、そのゲートには動作電圧VDDHを与える
と決定し(ステップ12)、テーブルの該当するフィー
ルド "Visited"に "Yes"、"L/H" に" H" を書き込んで
おく。そして、スタックに取り出すべきゲート番号があ
るかどうかを調べ(ステップ9)、あればポップし対応
するゲートを探索対象に設定する(ステップ10)。な
ければ、すべての主出力端子からの探索が済んでいるか
どうかを調べ(ステップ11)、済んでいれば処理終
了、済んでいなければ次の主出力端子からの探索を開始
し、最初に出会ったゲートを対象にして、ステップ2に
戻り同様の処理を行う。このようなスタックを用いた処
理は、再帰アルゴリズム(recursive algorithm )によ
るプログラムで実装することができる。
流のゲートすべてに動作電圧VDDLを与えることがで
きない場合、そのゲートには動作電圧VDDHを与える
と決定し(ステップ12)、テーブルの該当するフィー
ルド "Visited"に "Yes"、"L/H" に" H" を書き込んで
おく。そして、スタックに取り出すべきゲート番号があ
るかどうかを調べ(ステップ9)、あればポップし対応
するゲートを探索対象に設定する(ステップ10)。な
ければ、すべての主出力端子からの探索が済んでいるか
どうかを調べ(ステップ11)、済んでいれば処理終
了、済んでいなければ次の主出力端子からの探索を開始
し、最初に出会ったゲートを対象にして、ステップ2に
戻り同様の処理を行う。このようなスタックを用いた処
理は、再帰アルゴリズム(recursive algorithm )によ
るプログラムで実装することができる。
【0039】実際のプログラムでは、ステップ4のファ
ンアウトのチェックは、サブルーチンコールで行う。こ
のサブルーチンに対応するフローチャートを図6に示
す。このフローチャートは、図23のステップ4及びス
テップ5の処理に対応するものである。
ンアウトのチェックは、サブルーチンコールで行う。こ
のサブルーチンに対応するフローチャートを図6に示
す。このフローチャートは、図23のステップ4及びス
テップ5の処理に対応するものである。
【0040】先ず、ステップ3でSlack>0であれ
ば、ステップ20で、動作電圧VDDHを与えると決定
されたゲート(Visited=Yes,H/L=H) が、そのゲートの出
力へ接続しているかどうかをチェックする。接続してい
なければ、ステップ21で、そのゲートの出力へ接続す
る未探索(Visited=No)のゲートが存在するかどうかを
チェックする。存在する場合、そのゲート番号をすべて
スタックに積み(ステップ22)、ステップ23でゲー
ト番号をポップし次にチェックすべきゲートとして設定
し、ステップ24でファンアウトリストに登録する。そ
して、ステップ20に戻って同様の処理を行う。
ば、ステップ20で、動作電圧VDDHを与えると決定
されたゲート(Visited=Yes,H/L=H) が、そのゲートの出
力へ接続しているかどうかをチェックする。接続してい
なければ、ステップ21で、そのゲートの出力へ接続す
る未探索(Visited=No)のゲートが存在するかどうかを
チェックする。存在する場合、そのゲート番号をすべて
スタックに積み(ステップ22)、ステップ23でゲー
ト番号をポップし次にチェックすべきゲートとして設定
し、ステップ24でファンアウトリストに登録する。そ
して、ステップ20に戻って同様の処理を行う。
【0041】ステップ21で、そのゲートの出力へ接続
する未探索のゲートが存在しない場合、ステップ25で
スタックに取り出すべきゲート番号が残っているかどう
かをチェックする。残っていれば、ステップ23でゲー
ト番号をポップし次にチェックすべきゲートとして設定
し、ステップ24でファンアウトリストに登録して、ス
テップ20から同様の処理を行う。ここでいう取り出す
べきゲート番号とは、このルーチンでポップしたゲート
番号のことである。つまり、ステップ22でポップした
ゲート番号のことである。
する未探索のゲートが存在しない場合、ステップ25で
スタックに取り出すべきゲート番号が残っているかどう
かをチェックする。残っていれば、ステップ23でゲー
ト番号をポップし次にチェックすべきゲートとして設定
し、ステップ24でファンアウトリストに登録して、ス
テップ20から同様の処理を行う。ここでいう取り出す
べきゲート番号とは、このルーチンでポップしたゲート
番号のことである。つまり、ステップ22でポップした
ゲート番号のことである。
【0042】スタックにゲート番号が残っていなけれ
ば、ファンアウトリストが完成したので、ステップ26
で、このサブルーチンに入る直前のゲートとファンアウ
トリストに登録されたゲートのすべてに動作電圧VDD
Lを与える条件で、Slack>0であるかどうかを計
算する。
ば、ファンアウトリストが完成したので、ステップ26
で、このサブルーチンに入る直前のゲートとファンアウ
トリストに登録されたゲートのすべてに動作電圧VDD
Lを与える条件で、Slack>0であるかどうかを計
算する。
【0043】Slack>0ならば、ステップ27でそ
のサブルーチンに入る直前のゲートとファンアウトリス
トに登録されたゲートには動作電圧VDDLを与えると
決定し、夫々の"Visited" フィールドに "Yes"、"L/H"
に" L" を書き込んで、ファンアウトリストをクリアし
ておく。そして、メインのルーチンに戻って同様の処理
を行う。
のサブルーチンに入る直前のゲートとファンアウトリス
トに登録されたゲートには動作電圧VDDLを与えると
決定し、夫々の"Visited" フィールドに "Yes"、"L/H"
に" L" を書き込んで、ファンアウトリストをクリアし
ておく。そして、メインのルーチンに戻って同様の処理
を行う。
【0044】又、Slack>0でないならば、ステッ
プ28でファンアウトリストをクリアして、ステップ1
2でそのサブルーチンに入る直前のゲートには動作電圧
VDDHを与えると決定し、その"Visited" フィールド
に "Yes"、"L/H" に"H" を書き込んでおく。そして、メ
インのルーチンに戻って同様の処理を行う。
プ28でファンアウトリストをクリアして、ステップ1
2でそのサブルーチンに入る直前のゲートには動作電圧
VDDHを与えると決定し、その"Visited" フィールド
に "Yes"、"L/H" に"H" を書き込んでおく。そして、メ
インのルーチンに戻って同様の処理を行う。
【0045】又、ステップ20で、動作電圧VDDHを
与えると決定されたゲート(H/M/L=H) が、そのゲートの
出力へ接続している場合にも、ステップ28でファンア
ウトリストをクリアして、ステップ12でそのサブルー
チンに入る直前のゲートには動作電圧VDDHを与える
と決定し、その"Visited" フィールドに "Yes"、"L/H"
に"H" を書き込んで、メインのルーチンに戻って同様の
処理を行う。
与えると決定されたゲート(H/M/L=H) が、そのゲートの
出力へ接続している場合にも、ステップ28でファンア
ウトリストをクリアして、ステップ12でそのサブルー
チンに入る直前のゲートには動作電圧VDDHを与える
と決定し、その"Visited" フィールドに "Yes"、"L/H"
に"H" を書き込んで、メインのルーチンに戻って同様の
処理を行う。
【0046】以上は、クラスタが2段の場合であるが、
更に1つ又は複数の中間の動作電圧を設定しても良い。
図8のフローチャートを参照して、3段の場合を説明す
る。すなわち、高い動作電圧VDDH、中間の動作電圧
VDDM及び低い動作電圧VDDLの三種類の動作電圧
を与える場合を説明する。
更に1つ又は複数の中間の動作電圧を設定しても良い。
図8のフローチャートを参照して、3段の場合を説明す
る。すなわち、高い動作電圧VDDH、中間の動作電圧
VDDM及び低い動作電圧VDDLの三種類の動作電圧
を与える場合を説明する。
【0047】この場合、各ゲートについて、図7に示し
たようなテーブルをメモリ上に作成して行われる。この
テーブルには、各エントリに3つの属性が与えられてい
る。すなわち、各ゲートの識別記号に対して、そのゲー
トが既に探索されているか否かを示すフィールド "Visi
ted"、及びそのゲートに与えられている供給電圧レベル
"L/M/H" が対応づけられている。"Visited" の初期値
は"No"、であり、"L/M/H" の初期値は"H" である。
たようなテーブルをメモリ上に作成して行われる。この
テーブルには、各エントリに3つの属性が与えられてい
る。すなわち、各ゲートの識別記号に対して、そのゲー
トが既に探索されているか否かを示すフィールド "Visi
ted"、及びそのゲートに与えられている供給電圧レベル
"L/M/H" が対応づけられている。"Visited" の初期値
は"No"、であり、"L/M/H" の初期値は"H" である。
【0048】先ず、ステップ31で、すべてのゲート
が、動作電圧VDDHで動作していると仮定した上で、
1つの主出力端子から主入力端子に向かって探索する。
出会ったゲートで、そこに動作電圧VDDLを与えたと
仮定し、Slackを計算する(ステップ32)。Sl
ack>0であれば(ステップ33)、ファンアウトを
チェックする。ここでは、先ずステップ34で、動作電
圧VDDHを与えなければならないかどうかをチェック
する。動作電圧VDDM又は動作電圧VDDLで動作す
る可能性があれば、ファンアウトの下流のゲートすべて
に動作電圧VDDLを与えたと仮定してもSlack>
0であるかどうかチェックする(ステップ35)。Sl
ack>0であれば、そのゲートには動作電圧VDDL
を与えると決定し(ステップ36)、テーブルの該当す
るフィールド "Visited"に "Yes"、"L/M/H" に" L" を
書き込んでおく。
が、動作電圧VDDHで動作していると仮定した上で、
1つの主出力端子から主入力端子に向かって探索する。
出会ったゲートで、そこに動作電圧VDDLを与えたと
仮定し、Slackを計算する(ステップ32)。Sl
ack>0であれば(ステップ33)、ファンアウトを
チェックする。ここでは、先ずステップ34で、動作電
圧VDDHを与えなければならないかどうかをチェック
する。動作電圧VDDM又は動作電圧VDDLで動作す
る可能性があれば、ファンアウトの下流のゲートすべて
に動作電圧VDDLを与えたと仮定してもSlack>
0であるかどうかチェックする(ステップ35)。Sl
ack>0であれば、そのゲートには動作電圧VDDL
を与えると決定し(ステップ36)、テーブルの該当す
るフィールド "Visited"に "Yes"、"L/M/H" に" L" を
書き込んでおく。
【0049】次に、ステップ37で、そのゲートの入力
へ接続する未探索(Visited=No)のゲートが存在するか
どうかをチェックする。存在する場合、そのゲート番号
をすべてスタックに積み(ステップ38)、ステップ4
0でゲート番号をポップし次にチェックすべきゲートと
して設定する。そして、ステップ32に戻って同様の処
理を行う。未探索のゲートが存在しなければ、ステップ
39でスタックを調べ、スタックに取り出すべきゲート
番号があるかどうかを調べ、あればポップし対応するゲ
ートを探索対象に設定する(ステップ40)。存在しな
ければ、すべての主出力端子からの探索が済んでいるか
どうかを調べ(ステップ41)、済んでいれば処理終
了、済んでいなければ次の主出力端子からの探索を開始
し、最初に出会ったゲートを対象にして、ステップ2に
戻り同様の処理を行う。
へ接続する未探索(Visited=No)のゲートが存在するか
どうかをチェックする。存在する場合、そのゲート番号
をすべてスタックに積み(ステップ38)、ステップ4
0でゲート番号をポップし次にチェックすべきゲートと
して設定する。そして、ステップ32に戻って同様の処
理を行う。未探索のゲートが存在しなければ、ステップ
39でスタックを調べ、スタックに取り出すべきゲート
番号があるかどうかを調べ、あればポップし対応するゲ
ートを探索対象に設定する(ステップ40)。存在しな
ければ、すべての主出力端子からの探索が済んでいるか
どうかを調べ(ステップ41)、済んでいれば処理終
了、済んでいなければ次の主出力端子からの探索を開始
し、最初に出会ったゲートを対象にして、ステップ2に
戻り同様の処理を行う。
【0050】もしも、ステップ33でSlack>0で
なければ、そのゲートには動作電圧VDDMを与えるか
動作電圧VDDHを与えるかを決定しなければならな
い。その処理を、図9のフローチャートを参照して説明
する。
なければ、そのゲートには動作電圧VDDMを与えるか
動作電圧VDDHを与えるかを決定しなければならな
い。その処理を、図9のフローチャートを参照して説明
する。
【0051】先ず、対象ゲートに動作電圧VDDMを与
えたと仮定し、Slackを計算する(ステップ5
3)。Slack>0であれば、ファンアウトをチェッ
クし(ステップ54)、ファンアウトの下流のゲートす
べてに動作電圧VDDMを与えたと仮定してもSlac
k>0であれば(ステップ55)、そのゲートには動作
電圧VDDMを与えると決定し(ステップ56)、テー
ブルの該当するフィールド"Visited"に "Yes"、"L/M/H"
に" M" を書き込んでおく。
えたと仮定し、Slackを計算する(ステップ5
3)。Slack>0であれば、ファンアウトをチェッ
クし(ステップ54)、ファンアウトの下流のゲートす
べてに動作電圧VDDMを与えたと仮定してもSlac
k>0であれば(ステップ55)、そのゲートには動作
電圧VDDMを与えると決定し(ステップ56)、テー
ブルの該当するフィールド"Visited"に "Yes"、"L/M/H"
に" M" を書き込んでおく。
【0052】次に、ステップ57で、そのゲートの入力
へ接続する未探索(Visited=No)のゲートが存在するか
どうかをチェックする。存在する場合、そのゲート番号
をすべてスタックに積み(ステップ58)、ステップ6
0でゲート番号をポップし次にチェックすべきゲートと
して設定する。そして、ステップ52に戻って同様の処
理を行う。未探索のゲートが存在しなければ、ステップ
59でスタックを調べ、スタックに取り出すべきゲート
番号があるかどうかを調べ、あればポップし対応するゲ
ートを探索対象に設定する(ステップ60)。ここでい
う取り出すべきゲート番号とは、このルーチンでポップ
したゲート番号のことである。つまり、ステップ58で
ポップしたゲート番号のことである。
へ接続する未探索(Visited=No)のゲートが存在するか
どうかをチェックする。存在する場合、そのゲート番号
をすべてスタックに積み(ステップ58)、ステップ6
0でゲート番号をポップし次にチェックすべきゲートと
して設定する。そして、ステップ52に戻って同様の処
理を行う。未探索のゲートが存在しなければ、ステップ
59でスタックを調べ、スタックに取り出すべきゲート
番号があるかどうかを調べ、あればポップし対応するゲ
ートを探索対象に設定する(ステップ60)。ここでい
う取り出すべきゲート番号とは、このルーチンでポップ
したゲート番号のことである。つまり、ステップ58で
ポップしたゲート番号のことである。
【0053】もし、ステップ59でスタックに取り出す
べきゲート番号が存在しなければ、メインのルーチンの
ステップ39へ戻り、そこでスタックにゲート番号が残
っているかどうかを調べ、残っていればポップし対応す
るゲートを探索対象に設定する(ステップ40)。ステ
ップ39で取り出すゲート番号とは、このメインのルー
チンでポップしたゲート番号となる。つまり、ステップ
38でポップしたゲート番号である。その後、メインの
ルーチンでの処理は、同様に行われる。
べきゲート番号が存在しなければ、メインのルーチンの
ステップ39へ戻り、そこでスタックにゲート番号が残
っているかどうかを調べ、残っていればポップし対応す
るゲートを探索対象に設定する(ステップ40)。ステ
ップ39で取り出すゲート番号とは、このメインのルー
チンでポップしたゲート番号となる。つまり、ステップ
38でポップしたゲート番号である。その後、メインの
ルーチンでの処理は、同様に行われる。
【0054】もしも、ステップ53でSlack>0で
なければ、そのゲートには動作電圧VDDHを与えると
決定し(ステップ60)、テーブルの該当するフィール
ド "Visited"に "Yes"、"L/M/H" に" H" を書き込んで
おく。そして、スタックに取り出すべきゲート番号があ
るかどうかを調べ(ステップ58)、あればポップし対
応するゲートを探索対象に設定する(ステップ59)。
なければ、メインのルーチンのステップ39へ戻り、メ
インのルーチンでの処理が行われる。
なければ、そのゲートには動作電圧VDDHを与えると
決定し(ステップ60)、テーブルの該当するフィール
ド "Visited"に "Yes"、"L/M/H" に" H" を書き込んで
おく。そして、スタックに取り出すべきゲート番号があ
るかどうかを調べ(ステップ58)、あればポップし対
応するゲートを探索対象に設定する(ステップ59)。
なければ、メインのルーチンのステップ39へ戻り、メ
インのルーチンでの処理が行われる。
【0055】ステップ54のファンアウトのチェック
も、サブルーチンコールで行う。このサブルーチンに対
応するフローチャートを図10に示す。このフローチャ
ートは、図9のステップ54及びステップ55の処理に
対応するものである。
も、サブルーチンコールで行う。このサブルーチンに対
応するフローチャートを図10に示す。このフローチャ
ートは、図9のステップ54及びステップ55の処理に
対応するものである。
【0056】先ず、ステップ53でSlack>0であ
れば、ステップ70で、動作電圧VDDHを与えると決
定されたゲート(H/M/L=H) が、そのゲートの出力へ接続
しているかどうかをチェックする。接続していなけれ
ば、ステップ71で、そのゲートの出力へ接続する未探
索(Visited=No)のゲートが存在するかどうかをチェッ
クする。存在する場合、そのゲート番号をすべてスタッ
クに積み(ステップ72)、ステップ73でゲート番号
をポップし次にチェックすべきゲートとして設定し、ス
テップ74でファンアウトリストに登録する。そして、
ステップ71に戻って同様の処理を行う。
れば、ステップ70で、動作電圧VDDHを与えると決
定されたゲート(H/M/L=H) が、そのゲートの出力へ接続
しているかどうかをチェックする。接続していなけれ
ば、ステップ71で、そのゲートの出力へ接続する未探
索(Visited=No)のゲートが存在するかどうかをチェッ
クする。存在する場合、そのゲート番号をすべてスタッ
クに積み(ステップ72)、ステップ73でゲート番号
をポップし次にチェックすべきゲートとして設定し、ス
テップ74でファンアウトリストに登録する。そして、
ステップ71に戻って同様の処理を行う。
【0057】ステップ71で、そのゲートの出力へ接続
する未探索のゲートが存在しない場合、ステップ75で
スタックに取り出すべきゲート番号が残っているかどう
かをチェックする。残っていれば、ステップ73でゲー
ト番号をポップし次にチェックすべきゲートとして設定
し、ステップ74でファンアウトリストに登録して、ス
テップ70から同様の処理を行う。ここでいう取り出す
べきゲート番号とは、このルーチンでポップしたゲート
番号のことである。つまり、ステップ72でポップした
ゲート番号のことである。
する未探索のゲートが存在しない場合、ステップ75で
スタックに取り出すべきゲート番号が残っているかどう
かをチェックする。残っていれば、ステップ73でゲー
ト番号をポップし次にチェックすべきゲートとして設定
し、ステップ74でファンアウトリストに登録して、ス
テップ70から同様の処理を行う。ここでいう取り出す
べきゲート番号とは、このルーチンでポップしたゲート
番号のことである。つまり、ステップ72でポップした
ゲート番号のことである。
【0058】スタックにゲート番号が残っていなけれ
ば、ファンアウトリストが完成したので、ステップ76
で、このサブルーチンに入る直前のゲートとファンアウ
トリストに登録されたゲートのすべてに動作電圧VDD
Mを与える条件で、Slack>0であるかどうかを計
算する(ステップ95)。
ば、ファンアウトリストが完成したので、ステップ76
で、このサブルーチンに入る直前のゲートとファンアウ
トリストに登録されたゲートのすべてに動作電圧VDD
Mを与える条件で、Slack>0であるかどうかを計
算する(ステップ95)。
【0059】Slack>0ならば、ステップ77でそ
のサブルーチンに入る直前のゲートとファンアウトリス
トに登録されたゲートには動作電圧VDDMを与えると
決定し、夫々の"Visited" フィールドに "Yes"、"H/M/
L" に" M" を書き込んで、ファンアウトリストをクリ
アしておく。そして、メインのルーチンに戻って同様の
処理を行う。
のサブルーチンに入る直前のゲートとファンアウトリス
トに登録されたゲートには動作電圧VDDMを与えると
決定し、夫々の"Visited" フィールドに "Yes"、"H/M/
L" に" M" を書き込んで、ファンアウトリストをクリ
アしておく。そして、メインのルーチンに戻って同様の
処理を行う。
【0060】又、Slack>0でないならば、ステッ
プ78でファンアウトリストをクリアして、ステップ6
2に戻って、動作電圧VDDHを与えると決定する。
プ78でファンアウトリストをクリアして、ステップ6
2に戻って、動作電圧VDDHを与えると決定する。
【0061】又、ステップ70で、動作電圧VDDHを
与えると決定されたゲート(H/M/L=H) が、そのゲートの
出力へ接続している場合にも、ステップ78でファンア
ウトリストをクリアして、動作電圧VDDHを与えると
決定する(ステップ62)。
与えると決定されたゲート(H/M/L=H) が、そのゲートの
出力へ接続している場合にも、ステップ78でファンア
ウトリストをクリアして、動作電圧VDDHを与えると
決定する(ステップ62)。
【0062】ステップ34とステップ35の処理は、サ
ブルーチンコールで行う。このサブルーチンに対応する
フローチャートを図11に示す。先ず、ステップ79
で、動作電圧VDDHを与えると決定されたゲート("Vi
sited=Yes"、"H/M/L= H") が、そのゲートの出力へ接続
しているかどうかをチェックする。接続していなけれ
ば、ステップ80で、動作電圧VDDMを与えると決定
されたゲート("Visited=Yes"、"H/M/L= M") が、そのゲ
ートの出力へ接続しているかどうかをチェックする。こ
れも接続していなければ、ステップ81で、そのゲート
の出力へ接続する未探索(Visited=No)のゲートが存在
するかどうかをチェックする。存在する場合、そのゲー
ト番号をすべてスタックに積み(ステップ82)、ステ
ップ83でゲート番号をポップし次にチェックすべきゲ
ートとして設定し、ステップ84でファンアウトリスト
に登録する。そして、ステップ79に戻って同様の処理
を行う。
ブルーチンコールで行う。このサブルーチンに対応する
フローチャートを図11に示す。先ず、ステップ79
で、動作電圧VDDHを与えると決定されたゲート("Vi
sited=Yes"、"H/M/L= H") が、そのゲートの出力へ接続
しているかどうかをチェックする。接続していなけれ
ば、ステップ80で、動作電圧VDDMを与えると決定
されたゲート("Visited=Yes"、"H/M/L= M") が、そのゲ
ートの出力へ接続しているかどうかをチェックする。こ
れも接続していなければ、ステップ81で、そのゲート
の出力へ接続する未探索(Visited=No)のゲートが存在
するかどうかをチェックする。存在する場合、そのゲー
ト番号をすべてスタックに積み(ステップ82)、ステ
ップ83でゲート番号をポップし次にチェックすべきゲ
ートとして設定し、ステップ84でファンアウトリスト
に登録する。そして、ステップ79に戻って同様の処理
を行う。
【0063】ステップ81で、そのゲートの出力へ接続
する未探索のゲートが存在しない場合、ステップ85で
スタックに取り出すべきゲート番号が残っているかどう
かをチェックする。残っていれば、ステップ83でゲー
ト番号をポップし次にチェックすべきゲートとして設定
し、ステップ84でファンアウトリストに登録して、ス
テップ79から同様の処理を行う。ここでいう取り出す
べきゲート番号とは、このルーチンでポップしたゲート
番号のことである。つまり、ステップ82でポップした
ゲート番号のことである。
する未探索のゲートが存在しない場合、ステップ85で
スタックに取り出すべきゲート番号が残っているかどう
かをチェックする。残っていれば、ステップ83でゲー
ト番号をポップし次にチェックすべきゲートとして設定
し、ステップ84でファンアウトリストに登録して、ス
テップ79から同様の処理を行う。ここでいう取り出す
べきゲート番号とは、このルーチンでポップしたゲート
番号のことである。つまり、ステップ82でポップした
ゲート番号のことである。
【0064】スタックにゲート番号が残っていなけれ
ば、ファンアウトリストが完成したので、ステップ86
で、このサブルーチンに入る直前のゲートとファンアウ
トリストに登録されたゲートのすべてに動作電圧VDD
Lを与える条件で、Slack>0であるかどうかを計
算する。
ば、ファンアウトリストが完成したので、ステップ86
で、このサブルーチンに入る直前のゲートとファンアウ
トリストに登録されたゲートのすべてに動作電圧VDD
Lを与える条件で、Slack>0であるかどうかを計
算する。
【0065】Slack>0ならば、ステップ36でそ
のサブルーチンに入る直前のゲートとファンアウトリス
トに登録されたゲートには動作電圧VDDLを与えると
決定し、夫々の"Visited" フィールドに "Yes"、"H/M/
L" に" L" を書き込んで、ファンアウトリストをクリ
アしておく。そして、メインのルーチンに戻って同様の
処理を行う。
のサブルーチンに入る直前のゲートとファンアウトリス
トに登録されたゲートには動作電圧VDDLを与えると
決定し、夫々の"Visited" フィールドに "Yes"、"H/M/
L" に" L" を書き込んで、ファンアウトリストをクリ
アしておく。そして、メインのルーチンに戻って同様の
処理を行う。
【0066】又、ステップ79で、動作電圧VDDHを
与えると決定されたゲート("Visited=Yes"、"H/M/L=
H") が、そのゲートの出力へ接続していれば、最初のゲ
ートの"Visited" フィールドに "Yes"、"H/M/L" に"
H" を書き込んで、ファンアウトリストをクリアしてお
く(ステップ88)。
与えると決定されたゲート("Visited=Yes"、"H/M/L=
H") が、そのゲートの出力へ接続していれば、最初のゲ
ートの"Visited" フィールドに "Yes"、"H/M/L" に"
H" を書き込んで、ファンアウトリストをクリアしてお
く(ステップ88)。
【0067】又、ステップ80で、動作電圧VDDMを
与えると決定されたゲート("Visited=Yes"、"H/M/L=
M") が、そのゲートの出力へ接続していれば、図9のス
テップ52へ移り、その後は動作電圧VDDMが与えら
れるかどうかを、主入力端子へ向かって探索していく。
手順は図9のフローチャートで説明した通り。
与えると決定されたゲート("Visited=Yes"、"H/M/L=
M") が、そのゲートの出力へ接続していれば、図9のス
テップ52へ移り、その後は動作電圧VDDMが与えら
れるかどうかを、主入力端子へ向かって探索していく。
手順は図9のフローチャートで説明した通り。
【0068】以上は、Depth-First-Searchと呼ばれる方
法を応用している。別の探索方法として、Breadth-Firs
t-Searchと呼ばれる幅方向にたどっていく方法を利用し
ても良い。以下、その具体例を示す。
法を応用している。別の探索方法として、Breadth-Firs
t-Searchと呼ばれる幅方向にたどっていく方法を利用し
ても良い。以下、その具体例を示す。
【0069】再び、図22に示す組み合わせ論理回路を
用いて、機能ブロックを低消費電力構造に設計する方法
を説明する。ここでも、主入力端子(i1−i5)や主
出力端子(o1−o5)において、実際に信号が有効と
なる時刻を信号到着時刻ATとし、入力信号に応じて主
出力端子(o1−o5)等で出力される信号が有効とな
っていなければならない時刻を信号要求時刻RTとす
る。
用いて、機能ブロックを低消費電力構造に設計する方法
を説明する。ここでも、主入力端子(i1−i5)や主
出力端子(o1−o5)において、実際に信号が有効と
なる時刻を信号到着時刻ATとし、入力信号に応じて主
出力端子(o1−o5)等で出力される信号が有効とな
っていなければならない時刻を信号要求時刻RTとす
る。
【0070】この論理回路全体の性能低下を引き起こす
ことなく消費電力を減らすために、動作電圧VDDHで
動かす回路部分と、動作電圧VDDM動作電圧で動かす
回路部分と、動作電圧VDDLで動かす回路部分を、夫
々Breadth-First-Searchに従って図22の論理回路の中
に形成する手順を説明する。
ことなく消費電力を減らすために、動作電圧VDDHで
動かす回路部分と、動作電圧VDDM動作電圧で動かす
回路部分と、動作電圧VDDLで動かす回路部分を、夫
々Breadth-First-Searchに従って図22の論理回路の中
に形成する手順を説明する。
【0071】まず、図22に与えられた回路中のすベて
の論理ゲートが、動作電圧VDDHで動作していると仮
定する。そして図22の回路全体に対し、スタティック
・パス解析によって各主出力端子での信号到着時刻AT
を計算する。一方、各主出力端子について信号要求時刻
RTはタイミング制約として与えられているから、RT
とATの差を取ることにより、各主出力端子でのタイミ
ング余裕(Slack)が求められる。タイミング余裕
があれば、その主出力端子に接続した夫々のゲートへの
供給電圧を下げることができるかどうかを上流に向かっ
て探索していく。ここまでは、Depth-First-Searchによ
る上記の方法と同じである。Breadth-First-Searchで
は、探索の順序が異なる。
の論理ゲートが、動作電圧VDDHで動作していると仮
定する。そして図22の回路全体に対し、スタティック
・パス解析によって各主出力端子での信号到着時刻AT
を計算する。一方、各主出力端子について信号要求時刻
RTはタイミング制約として与えられているから、RT
とATの差を取ることにより、各主出力端子でのタイミ
ング余裕(Slack)が求められる。タイミング余裕
があれば、その主出力端子に接続した夫々のゲートへの
供給電圧を下げることができるかどうかを上流に向かっ
て探索していく。ここまでは、Depth-First-Searchによ
る上記の方法と同じである。Breadth-First-Searchで
は、探索の順序が異なる。
【0072】先ず、説明のため、o1、o2、o3、o
4のすべてにおいて、Slackが正であるものと仮定
する。o1、o2、o3、o4をひとつづつ順に処理し
ていく。選ぶ順序については経験則に従う。有効な順序
の例としては、Slackの大きい順に選ぶ方法、又は
接続している負荷容量の大きい順に選ぶ方法等がある。
4のすべてにおいて、Slackが正であるものと仮定
する。o1、o2、o3、o4をひとつづつ順に処理し
ていく。選ぶ順序については経験則に従う。有効な順序
の例としては、Slackの大きい順に選ぶ方法、又は
接続している負荷容量の大きい順に選ぶ方法等がある。
【0073】ここでは、最初にo1を選んだものとす
る。Depth-First-Searchでは、o1から回路の接続をた
どって、上流に向けて動作電圧VDDLの採用の可能性
を探索していくが、Breadth-First-Searchでは、主出力
端子o1、o2、o3、o4に近いゲートから探索して
いく。即ち、主出力端子o1、o2、o3、o4に直接
接続しているゲートを0レベル、ゲートを1つ介して接
続しているゲートを1レベル、ゲートを2つ介して接続
しているゲートを2レベル、ゲートを3つ介して接続し
ているゲートを3レベル等として、夫々のレベル毎にS
lackの計算を行う。
る。Depth-First-Searchでは、o1から回路の接続をた
どって、上流に向けて動作電圧VDDLの採用の可能性
を探索していくが、Breadth-First-Searchでは、主出力
端子o1、o2、o3、o4に近いゲートから探索して
いく。即ち、主出力端子o1、o2、o3、o4に直接
接続しているゲートを0レベル、ゲートを1つ介して接
続しているゲートを1レベル、ゲートを2つ介して接続
しているゲートを2レベル、ゲートを3つ介して接続し
ているゲートを3レベル等として、夫々のレベル毎にS
lackの計算を行う。
【0074】先ず、o1から回路の接続をたどると、ゲ
ートG8に出会う。そこで、ゲートG8に対して動作電
圧VDDLを供給した場合の、G8のゲート遅延(D8
ー動作電圧VDDL)を計算する。G8に対して動作電
圧VDDHが与えられていたときのゲート遅延(D8ー
動作電圧VDDH)に比べると、D8−動作電圧VDD
Lは大きくなる。このD8ー動作電圧VDDLの値を用
いて、図22の論理回路全体に対し、再度スタティック
・パス解析を施す。そして、その結果、o1からo4で
のSlackが負にならなければ、G8には動作電圧V
DDLを与えることができると判断する。
ートG8に出会う。そこで、ゲートG8に対して動作電
圧VDDLを供給した場合の、G8のゲート遅延(D8
ー動作電圧VDDL)を計算する。G8に対して動作電
圧VDDHが与えられていたときのゲート遅延(D8ー
動作電圧VDDH)に比べると、D8−動作電圧VDD
Lは大きくなる。このD8ー動作電圧VDDLの値を用
いて、図22の論理回路全体に対し、再度スタティック
・パス解析を施す。そして、その結果、o1からo4で
のSlackが負にならなければ、G8には動作電圧V
DDLを与えることができると判断する。
【0075】その後、Breadth-First-Searchでは、主出
力端子o2へ移る。o2から回路の接続をたどると、ゲ
ートG9に出会うので、そこで、ゲートG9に対して動
作電圧VDDLを供給した場合に、図22の論理回路全
体に対し、再度スタティック・パス解析を施してSla
ckを計算する。そして、主出力端子o3、o4に対し
ても、同様の処理を行う。その結果、ゲートG8、G
9、G10、G7には動作電圧VDDLを与えることが
できると判断する。
力端子o2へ移る。o2から回路の接続をたどると、ゲ
ートG9に出会うので、そこで、ゲートG9に対して動
作電圧VDDLを供給した場合に、図22の論理回路全
体に対し、再度スタティック・パス解析を施してSla
ckを計算する。そして、主出力端子o3、o4に対し
ても、同様の処理を行う。その結果、ゲートG8、G
9、G10、G7には動作電圧VDDLを与えることが
できると判断する。
【0076】次に探索するゲートは、主出力端子o1、
o2、o3、o4から、ゲートを1つ介して接続してい
るゲートである。すなわち、ゲートG5、G2、G6を
対象にして、動作電圧VDDLを供給した場合の全体の
Slackを計算する。尚、主出力端子o4とゲートを
1つ介して接続しているゲートはゲートG2であり、主
出力端子o2とゲートを1つ介して接続しているゲート
と同一である。
o2、o3、o4から、ゲートを1つ介して接続してい
るゲートである。すなわち、ゲートG5、G2、G6を
対象にして、動作電圧VDDLを供給した場合の全体の
Slackを計算する。尚、主出力端子o4とゲートを
1つ介して接続しているゲートはゲートG2であり、主
出力端子o2とゲートを1つ介して接続しているゲート
と同一である。
【0077】その次に探索するゲートは、主出力端子o
1、o2、o3、o4から、ゲートを2つ介して接続し
ているゲートである。すなわち、ゲートG1、G3、G
4を対象にして、動作電圧VDDLを供給した場合の全
体のSlackを計算する。
1、o2、o3、o4から、ゲートを2つ介して接続し
ているゲートである。すなわち、ゲートG1、G3、G
4を対象にして、動作電圧VDDLを供給した場合の全
体のSlackを計算する。
【0078】更に、その次に探索するゲートは、主出力
端子o1、o2、o3、o4から、ゲートを3つ介して
接続しているゲートである。この場合、ゲートG1だけ
が対象である。尚、動作電圧VDDHは与えられず、動
作電圧VDDMの供給が決定したゲートの下流では、動
作電圧VDDMを与えられるかどうかの調査を行う。
又、動作電圧VDDHの供給が決定したゲートの下流に
あるゲートは、動作電圧VDDHの供給が自動的に決定
するのは Depth-First-Search と同じである。
端子o1、o2、o3、o4から、ゲートを3つ介して
接続しているゲートである。この場合、ゲートG1だけ
が対象である。尚、動作電圧VDDHは与えられず、動
作電圧VDDMの供給が決定したゲートの下流では、動
作電圧VDDMを与えられるかどうかの調査を行う。
又、動作電圧VDDHの供給が決定したゲートの下流に
あるゲートは、動作電圧VDDHの供給が自動的に決定
するのは Depth-First-Search と同じである。
【0079】勿論、各レベルに属するゲートには多数重
複が有り、ファンアウトの調査も行うので、計算の不要
なゲートは飛ばしていく。
複が有り、ファンアウトの調査も行うので、計算の不要
なゲートは飛ばしていく。
【0080】その結果、図12に示したように、動作電
圧VDDHで動かす回路部分である動作電圧VDDHク
ラスタと、動作電圧VDDMで動かす回路部分である動
作電圧VDDMクラスタと、動作電圧VDDLで動かす
回路部分である動作電圧VDDLクラスタが確定する。
圧VDDHで動かす回路部分である動作電圧VDDHク
ラスタと、動作電圧VDDMで動かす回路部分である動
作電圧VDDMクラスタと、動作電圧VDDLで動かす
回路部分である動作電圧VDDLクラスタが確定する。
【0081】以上の処理も、Depth-First-Searchと同様
に、各ゲートについて、図に示したようなテーブルをメ
モリ上に作成して行われる。このテーブルには、各エン
トリに3つの属性が与えられている。すなわち、各ゲー
トの識別記号に対して、そのゲートが既に探索されてい
るか否かを示すフィールド "Visited"、及びそのゲート
に与えられている供給電圧レベル "L/H" が対応づけら
れている。"Visited"の初期値は"No"、であり、"L/H"
の初期値は"H" である。
に、各ゲートについて、図に示したようなテーブルをメ
モリ上に作成して行われる。このテーブルには、各エン
トリに3つの属性が与えられている。すなわち、各ゲー
トの識別記号に対して、そのゲートが既に探索されてい
るか否かを示すフィールド "Visited"、及びそのゲート
に与えられている供給電圧レベル "L/H" が対応づけら
れている。"Visited"の初期値は"No"、であり、"L/H"
の初期値は"H" である。
【0082】以下、詳細を図13のフローチャートを参
照しながら説明する。先ず、ステップ101で、すべて
のゲートが、動作電圧VDDHで動作していると仮定し
た上で、レベルを表すレベル番号Nを0で初期化する。
ステップ103で、レベル番号Nの未探索のゲートを1
つ選択し、そのゲートに動作電圧VDDLを与えたと仮
定し(ステップ104)、Slackを計算する(ステ
ップ105)。Slack>0であれば、ファンアウト
をチェックし(ステップ106)、ファンアウトの下流
のゲートすべてに動作電圧VDDLを与えたと仮定して
もSlack>0であれば(ステップ107)、そのゲ
ートには動作電圧VDDLを与えると決定し(ステップ
108)、テーブルの該当するフィールド "Visited"に
"Yes"、"L/H" に" L" を書き込んでおく。
照しながら説明する。先ず、ステップ101で、すべて
のゲートが、動作電圧VDDHで動作していると仮定し
た上で、レベルを表すレベル番号Nを0で初期化する。
ステップ103で、レベル番号Nの未探索のゲートを1
つ選択し、そのゲートに動作電圧VDDLを与えたと仮
定し(ステップ104)、Slackを計算する(ステ
ップ105)。Slack>0であれば、ファンアウト
をチェックし(ステップ106)、ファンアウトの下流
のゲートすべてに動作電圧VDDLを与えたと仮定して
もSlack>0であれば(ステップ107)、そのゲ
ートには動作電圧VDDLを与えると決定し(ステップ
108)、テーブルの該当するフィールド "Visited"に
"Yes"、"L/H" に" L" を書き込んでおく。
【0083】次に、ステップ109で、同一レベルの未
探索のゲートが存在するかどうかをチェックする。存在
する場合、ステップ104に戻って、そのレベルでの探
索を続ける。同一レベルの未探索のゲートが存在しない
場合、ステップ110で、次のレベル番号N+1のゲー
トが存在するか否かをチェックする。存在する場合、ス
テップ103に戻って、レベル番号N+1のゲートにつ
いて探索を続ける。レベル番号N+1のゲートが存在し
ない場合、処理終了。
探索のゲートが存在するかどうかをチェックする。存在
する場合、ステップ104に戻って、そのレベルでの探
索を続ける。同一レベルの未探索のゲートが存在しない
場合、ステップ110で、次のレベル番号N+1のゲー
トが存在するか否かをチェックする。存在する場合、ス
テップ103に戻って、レベル番号N+1のゲートにつ
いて探索を続ける。レベル番号N+1のゲートが存在し
ない場合、処理終了。
【0084】もしも、ステップ105でSlack>0
でなければ、そのゲートには動作電圧VDDHを与える
と決定し(ステップ112)、テーブルの該当するフィ
ールド "Visited"に "Yes"、"L/H" に" H" を書き込ん
でおく。そして、同一レベルの未探索のゲートが存在す
るかどうかを調べ(ステップ109)、あれば、ステッ
プ104に戻って、そのレベルでの探索を続ける。同一
レベルの未探索のゲートが存在しない場合は、上記のよ
うにステップ103に戻って、レベル番号N+1のゲー
トについて探索を続ける。
でなければ、そのゲートには動作電圧VDDHを与える
と決定し(ステップ112)、テーブルの該当するフィ
ールド "Visited"に "Yes"、"L/H" に" H" を書き込ん
でおく。そして、同一レベルの未探索のゲートが存在す
るかどうかを調べ(ステップ109)、あれば、ステッ
プ104に戻って、そのレベルでの探索を続ける。同一
レベルの未探索のゲートが存在しない場合は、上記のよ
うにステップ103に戻って、レベル番号N+1のゲー
トについて探索を続ける。
【0085】もしも、ステップ107で、ファンアウト
の下流のゲートすべてに動作電圧VDDLを与えること
ができない場合、そのゲートには動作電圧VDDHを与
えると決定し(ステップ112)、テーブルの該当する
フィールド "Visited"に "Yes"、"L/H" に" H" を書き
込んでおく。そして、同一レベルの未探索のゲートが存
在するかどうかを調べ(ステップ109)、あれば、ス
テップ104に戻って、そのレベルでの探索を続ける。
同一レベルの未探索のゲートが存在しない場合、ステッ
プ110で、次のレベル番号N+1のゲートが存在する
か否かをチェックする。存在する場合、ステップ103
に戻って、レベル番号N+1のゲートについて探索を続
ける。レベル番号N+1のゲートが存在しない場合、処
理を終了する。
の下流のゲートすべてに動作電圧VDDLを与えること
ができない場合、そのゲートには動作電圧VDDHを与
えると決定し(ステップ112)、テーブルの該当する
フィールド "Visited"に "Yes"、"L/H" に" H" を書き
込んでおく。そして、同一レベルの未探索のゲートが存
在するかどうかを調べ(ステップ109)、あれば、ス
テップ104に戻って、そのレベルでの探索を続ける。
同一レベルの未探索のゲートが存在しない場合、ステッ
プ110で、次のレベル番号N+1のゲートが存在する
か否かをチェックする。存在する場合、ステップ103
に戻って、レベル番号N+1のゲートについて探索を続
ける。レベル番号N+1のゲートが存在しない場合、処
理を終了する。
【0086】実際のプログラムでは、ステップ106の
ファンアウトのチェックは、サブルーチンコールで行
う。このサブルーチンに対応するフローチャートを図1
4に示す。このフローチャートは、図12のステップ1
06及びステップ107の処理に対応するものである。
ファンアウトのチェックは、サブルーチンコールで行
う。このサブルーチンに対応するフローチャートを図1
4に示す。このフローチャートは、図12のステップ1
06及びステップ107の処理に対応するものである。
【0087】先ず、ステップ105でSlack>0で
あれば、ステップ120で、動作電圧VDDHを与える
と決定されたゲート(Visited=Yes,H/L=H) が、そのゲー
トの出力へ接続しているかどうかをチェックする。接続
していなければ、ステップ121で、そのゲートの出力
へ接続する未探索(Visited=No)のゲートが存在するか
どうかをチェックする。存在する場合、そのゲート番号
をすべてスタックに積み(ステップ122)、ステップ
123でゲート番号をポップし次にチェックすべきゲー
トとして設定し、ステップ124でファンアウトリスト
に登録する。そして、ステップ120に戻って同様の処
理を行う。
あれば、ステップ120で、動作電圧VDDHを与える
と決定されたゲート(Visited=Yes,H/L=H) が、そのゲー
トの出力へ接続しているかどうかをチェックする。接続
していなければ、ステップ121で、そのゲートの出力
へ接続する未探索(Visited=No)のゲートが存在するか
どうかをチェックする。存在する場合、そのゲート番号
をすべてスタックに積み(ステップ122)、ステップ
123でゲート番号をポップし次にチェックすべきゲー
トとして設定し、ステップ124でファンアウトリスト
に登録する。そして、ステップ120に戻って同様の処
理を行う。
【0088】ステップ121で、そのゲートの出力へ接
続する未探索のゲートが存在しない場合、ステップ12
5でスタックに取り出すべきゲート番号が残っているか
どうかをチェックする。残っていれば、ステップ123
でゲート番号をポップし次にチェックすべきゲートとし
て設定し、ステップ124でファンアウトリストに登録
して、ステップ120から同様の処理を行う。ここでい
う取り出すべきゲート番号とは、このルーチンでポップ
したゲート番号のことである。つまり、ステップ122
でポップしたゲート番号のことである。
続する未探索のゲートが存在しない場合、ステップ12
5でスタックに取り出すべきゲート番号が残っているか
どうかをチェックする。残っていれば、ステップ123
でゲート番号をポップし次にチェックすべきゲートとし
て設定し、ステップ124でファンアウトリストに登録
して、ステップ120から同様の処理を行う。ここでい
う取り出すべきゲート番号とは、このルーチンでポップ
したゲート番号のことである。つまり、ステップ122
でポップしたゲート番号のことである。
【0089】スタックにゲート番号が残っていなけれ
ば、ファンアウトリストが完成したので、ステップ12
6で、このサブルーチンに入る直前のゲートとファンア
ウトリストに登録されたゲートのすべてに動作電圧VD
DLを与える条件で、Slack>0であるかどうかを
計算する。
ば、ファンアウトリストが完成したので、ステップ12
6で、このサブルーチンに入る直前のゲートとファンア
ウトリストに登録されたゲートのすべてに動作電圧VD
DLを与える条件で、Slack>0であるかどうかを
計算する。
【0090】Slack>0ならば、ステップ127で
そのサブルーチンに入る直前のゲートとファンアウトリ
ストに登録されたゲートには動作電圧VDDLを与える
と決定し、夫々の"Visited" フィールドに "Yes"、"L/
H" に" L" を書き込んで、ファンアウトリストをクリ
アしておく。そして、メインのルーチンに戻って同様の
処理を行う。
そのサブルーチンに入る直前のゲートとファンアウトリ
ストに登録されたゲートには動作電圧VDDLを与える
と決定し、夫々の"Visited" フィールドに "Yes"、"L/
H" に" L" を書き込んで、ファンアウトリストをクリ
アしておく。そして、メインのルーチンに戻って同様の
処理を行う。
【0091】又、Slack>0でないならば、ステッ
プ128でファンアウトリストをクリアして、ステップ
112でそのサブルーチンに入る直前のゲートには動作
電圧VDDHを与えると決定し、その"Visited" フィー
ルドに "Yes"、"L/H" に"H"を書き込んでおく。そし
て、メインのルーチンに戻って同様の処理を行う。
プ128でファンアウトリストをクリアして、ステップ
112でそのサブルーチンに入る直前のゲートには動作
電圧VDDHを与えると決定し、その"Visited" フィー
ルドに "Yes"、"L/H" に"H"を書き込んでおく。そし
て、メインのルーチンに戻って同様の処理を行う。
【0092】又、ステップ120で、動作電圧VDDH
を与えると決定されたゲート(H/M/L=H) が、そのゲート
の出力へ接続している場合にも、ステップ128でファ
ンアウトリストをクリアして、ステップ112でそのサ
ブルーチンに入る直前のゲートには動作電圧VDDHを
与えると決定し、その"Visited" フィールドに "Ye
s"、"L/H" に"H" を書き込んで、メインのルーチンに戻
って同様の処理を行う。
を与えると決定されたゲート(H/M/L=H) が、そのゲート
の出力へ接続している場合にも、ステップ128でファ
ンアウトリストをクリアして、ステップ112でそのサ
ブルーチンに入る直前のゲートには動作電圧VDDHを
与えると決定し、その"Visited" フィールドに "Ye
s"、"L/H" に"H" を書き込んで、メインのルーチンに戻
って同様の処理を行う。
【0093】以上は、クラスタが2段の場合であるが、
Bredth-First-Search を用いた場合でも、更に1つ又は
複数の中間の動作電圧を設定することも可能である。図
のフローチャートを参照して、3段の場合を説明する。
すなわち、高い動作電圧VDDH、中間の動作電圧VD
DM及び低い動作電圧VDDLの三種類の動作電圧を与
える場合を説明する。
Bredth-First-Search を用いた場合でも、更に1つ又は
複数の中間の動作電圧を設定することも可能である。図
のフローチャートを参照して、3段の場合を説明する。
すなわち、高い動作電圧VDDH、中間の動作電圧VD
DM及び低い動作電圧VDDLの三種類の動作電圧を与
える場合を説明する。
【0094】この場合、各ゲートについて、やはり図7
に示したようなテーブルをメモリ上に作成して行われ
る。このテーブルには、各エントリに3つの属性が与え
られている。すなわち、各ゲートの識別記号に対して、
そのゲートが既に探索されているか否かを示すフィール
ド "Visited"、及びそのゲートに与えられている供給電
圧レベル "L/M/H" が対応づけられている。"Visited"
の初期値は"No"、であり、"L/M/H" の初期値は"H" であ
る。
に示したようなテーブルをメモリ上に作成して行われ
る。このテーブルには、各エントリに3つの属性が与え
られている。すなわち、各ゲートの識別記号に対して、
そのゲートが既に探索されているか否かを示すフィール
ド "Visited"、及びそのゲートに与えられている供給電
圧レベル "L/M/H" が対応づけられている。"Visited"
の初期値は"No"、であり、"L/M/H" の初期値は"H" であ
る。
【0095】以下、処理手順の詳細を図15のフローチ
ャートを参照しながら説明する。先ず、ステップ131
で、すべてのゲートが、動作電圧VDDHで動作してい
ると仮定した上で、レベルを表すレベル番号Nを0で初
期化する(ステップ132)。ステップ133で、レベ
ル番号Nの未探索のゲートを1つ選択し、そのゲートに
動作電圧VDDLを与えたと仮定し、Slackを計算
する(ステップ134)。Slack>0であれば(ス
テップ135)、ファンアウトをチェックする。ここで
は、先ずステップ136で、動作電圧VDDHを与えな
ければならないかどうかをチェックする。動作電圧VD
DM又は動作電圧VDDLで動作する可能性があれば、
ファンアウトの下流のゲートすべてに動作電圧VDDL
を与えたと仮定してもSlack>0であるかどうかチ
ェックする(ステップ137)。Slack>0であれ
ば、そのゲートには動作電圧VDDLを与えると決定し
(ステップ138)、テーブルの該当するフィールド "
Visited"に "Yes"、"L/M/H" に" L" を書き込んでお
く。
ャートを参照しながら説明する。先ず、ステップ131
で、すべてのゲートが、動作電圧VDDHで動作してい
ると仮定した上で、レベルを表すレベル番号Nを0で初
期化する(ステップ132)。ステップ133で、レベ
ル番号Nの未探索のゲートを1つ選択し、そのゲートに
動作電圧VDDLを与えたと仮定し、Slackを計算
する(ステップ134)。Slack>0であれば(ス
テップ135)、ファンアウトをチェックする。ここで
は、先ずステップ136で、動作電圧VDDHを与えな
ければならないかどうかをチェックする。動作電圧VD
DM又は動作電圧VDDLで動作する可能性があれば、
ファンアウトの下流のゲートすべてに動作電圧VDDL
を与えたと仮定してもSlack>0であるかどうかチ
ェックする(ステップ137)。Slack>0であれ
ば、そのゲートには動作電圧VDDLを与えると決定し
(ステップ138)、テーブルの該当するフィールド "
Visited"に "Yes"、"L/M/H" に" L" を書き込んでお
く。
【0096】次に、ステップ139で、同一レベルの未
探索のゲートが存在するかどうかをチェックする。存在
する場合、ステップ133に戻って、そのレベルでの探
索を続ける。同一レベルの未探索のゲートが存在しない
場合、ステップ140で、次のレベル番号N+1のゲー
トが存在するか否かをチェックする。存在する場合、ス
テップ133に戻って、レベル番号N+1のゲートにつ
いて探索を続ける。レベル番号N+1のゲートが存在し
ない場合は処理を終了する。
探索のゲートが存在するかどうかをチェックする。存在
する場合、ステップ133に戻って、そのレベルでの探
索を続ける。同一レベルの未探索のゲートが存在しない
場合、ステップ140で、次のレベル番号N+1のゲー
トが存在するか否かをチェックする。存在する場合、ス
テップ133に戻って、レベル番号N+1のゲートにつ
いて探索を続ける。レベル番号N+1のゲートが存在し
ない場合は処理を終了する。
【0097】もしも、ステップ135でSlack>0
でなければ、そのゲートには動作電圧VDDMを与える
か動作電圧VDDHを与えるかを決定しなければならな
い。その処理を、図16のフローチャートを参照して説
明する。
でなければ、そのゲートには動作電圧VDDMを与える
か動作電圧VDDHを与えるかを決定しなければならな
い。その処理を、図16のフローチャートを参照して説
明する。
【0098】先ず、対象ゲートに動作電圧VDDMを与
えたと仮定し、Slackを計算する(ステップ15
2)。Slack>0であれば、ファンアウトをチェッ
クし(ステップ156)、ファンアウトの下流のゲート
すべてに動作電圧VDDLを与えたと仮定してもSla
ck>0であれば(ステップ157)、そのゲートには
動作電圧VDDLを与えると決定し(ステップ15
8)、テーブルの該当するフィールド "Visited"に "Ye
s"、"L/H" に" L" を書き込んでおく。そして、ステッ
プ139から同様の処理を行う。
えたと仮定し、Slackを計算する(ステップ15
2)。Slack>0であれば、ファンアウトをチェッ
クし(ステップ156)、ファンアウトの下流のゲート
すべてに動作電圧VDDLを与えたと仮定してもSla
ck>0であれば(ステップ157)、そのゲートには
動作電圧VDDLを与えると決定し(ステップ15
8)、テーブルの該当するフィールド "Visited"に "Ye
s"、"L/H" に" L" を書き込んでおく。そして、ステッ
プ139から同様の処理を行う。
【0099】もしも、ステップ155でSlack>0
でなければ、そのゲートには動作電圧VDDHを与える
と決定し(ステップ112)、テーブルの該当するフィ
ールド "Visited"に "Yes"、"L/H" に" H" を書き込ん
でおく。そして、ステップ139から同様の処理を行
う。
でなければ、そのゲートには動作電圧VDDHを与える
と決定し(ステップ112)、テーブルの該当するフィ
ールド "Visited"に "Yes"、"L/H" に" H" を書き込ん
でおく。そして、ステップ139から同様の処理を行
う。
【0100】又、もしも、ステップ157で、ファンア
ウトの下流のゲートすべてに動作電圧VDDLを与える
ことができない場合、そのゲートには動作電圧VDDH
を与えると決定し(ステップ152)、テーブルの該当
するフィールド "Visited"に"Yes"、"L/H" に" H" を
書き込んでおく。そして、ステップ139から同様の処
理を行う。
ウトの下流のゲートすべてに動作電圧VDDLを与える
ことができない場合、そのゲートには動作電圧VDDH
を与えると決定し(ステップ152)、テーブルの該当
するフィールド "Visited"に"Yes"、"L/H" に" H" を
書き込んでおく。そして、ステップ139から同様の処
理を行う。
【0101】ステップ156のファンアウトのチェック
も、サブルーチンコールで行う。このサブルーチンに対
応するフローチャートを図17に示す。このフローチャ
ートは、図16のステップ156及びステップ157の
処理に対応するものである。
も、サブルーチンコールで行う。このサブルーチンに対
応するフローチャートを図17に示す。このフローチャ
ートは、図16のステップ156及びステップ157の
処理に対応するものである。
【0102】先ず、ステップ155でSlack>0で
あれば、ステップ170で、動作電圧VDDHを与える
と決定されたゲート(H/M/L=H) が、そのゲートの出力へ
接続しているかどうかをチェックする。接続していなけ
れば、ステップ171で、そのゲートの出力へ接続する
未探索(Visited=No)のゲートが存在するかどうかをチ
ェックする。存在する場合、そのゲート番号をすべてス
タックに積み(ステップ172)、ステップ173でゲ
ート番号をポップし次にチェックすべきゲートとして設
定し、ステップ174でファンアウトリストに登録す
る。そして、ステップ171に戻って同様の処理を行
う。
あれば、ステップ170で、動作電圧VDDHを与える
と決定されたゲート(H/M/L=H) が、そのゲートの出力へ
接続しているかどうかをチェックする。接続していなけ
れば、ステップ171で、そのゲートの出力へ接続する
未探索(Visited=No)のゲートが存在するかどうかをチ
ェックする。存在する場合、そのゲート番号をすべてス
タックに積み(ステップ172)、ステップ173でゲ
ート番号をポップし次にチェックすべきゲートとして設
定し、ステップ174でファンアウトリストに登録す
る。そして、ステップ171に戻って同様の処理を行
う。
【0103】ステップ171で、そのゲートの出力へ接
続する未探索のゲートが存在しない場合、ステップ17
5でスタックに取り出すべきゲート番号が残っているか
どうかをチェックする。残っていれば、ステップ173
でゲート番号をポップし次にチェックすべきゲートとし
て設定し、ステップ174でファンアウトリストに登録
して、ステップ170から同様の処理を行う。ここでい
う取り出すべきゲート番号とは、このルーチンでポップ
したゲート番号のことである。つまり、ステップ172
でポップしたゲート番号のことである。
続する未探索のゲートが存在しない場合、ステップ17
5でスタックに取り出すべきゲート番号が残っているか
どうかをチェックする。残っていれば、ステップ173
でゲート番号をポップし次にチェックすべきゲートとし
て設定し、ステップ174でファンアウトリストに登録
して、ステップ170から同様の処理を行う。ここでい
う取り出すべきゲート番号とは、このルーチンでポップ
したゲート番号のことである。つまり、ステップ172
でポップしたゲート番号のことである。
【0104】スタックにゲート番号が残っていなけれ
ば、ファンアウトリストが完成したので、ステップ17
6で、このサブルーチンに入る直前のゲートとファンア
ウトリストに登録されたゲートのすべてに動作電圧VD
DMを与える条件で、Slack>0であるかどうかを
計算する。
ば、ファンアウトリストが完成したので、ステップ17
6で、このサブルーチンに入る直前のゲートとファンア
ウトリストに登録されたゲートのすべてに動作電圧VD
DMを与える条件で、Slack>0であるかどうかを
計算する。
【0105】Slack>0ならば、ステップ177で
そのサブルーチンに入る直前のゲートとファンアウトリ
ストに登録されたゲートには動作電圧VDDMを与える
と決定し、夫々の"Visited" フィールドに "Yes"、"H/M
/L" に" M" を書き込んで、ファンアウトリストをクリ
アしておく。そして、メインのルーチンに戻って同様の
処理を行う。
そのサブルーチンに入る直前のゲートとファンアウトリ
ストに登録されたゲートには動作電圧VDDMを与える
と決定し、夫々の"Visited" フィールドに "Yes"、"H/M
/L" に" M" を書き込んで、ファンアウトリストをクリ
アしておく。そして、メインのルーチンに戻って同様の
処理を行う。
【0106】又、Slack>0でないならば、ステッ
プ178でファンアウトリストをクリアして、ステップ
152に戻って、動作電圧VDDHを与えると決定す
る。
プ178でファンアウトリストをクリアして、ステップ
152に戻って、動作電圧VDDHを与えると決定す
る。
【0107】又、ステップ170で、動作電圧VDDH
を与えると決定されたゲート(H/M/L=H) が、そのゲート
の出力へ接続している場合にも、ステップ178でファ
ンアウトリストをクリアして、動作電圧VDDHを与え
ると決定する(ステップ152)。
を与えると決定されたゲート(H/M/L=H) が、そのゲート
の出力へ接続している場合にも、ステップ178でファ
ンアウトリストをクリアして、動作電圧VDDHを与え
ると決定する(ステップ152)。
【0108】ステップ136とステップ137の処理
は、サブルーチンコールで行う。このサブルーチンに対
応するフローチャートを図18に示す。先ず、ステップ
179で、動作電圧VDDHを与えると決定されたゲー
ト("Visited=Yes"、"H/M/L= H") が、そのゲートの出力
へ接続しているかどうかをチェックする。接続していな
ければ、ステップ180で、動作電圧VDDMを与える
と決定されたゲート("Visited=Yes"、"H/M/L= M") が、
そのゲートの出力へ接続しているかどうかをチェックす
る。これも接続していなければ、ステップ181で、そ
のゲートの出力へ接続する未探索(Visited=No)のゲー
トが存在するかどうかをチェックする。存在する場合、
そのゲート番号をすべてスタックに積み(ステップ18
2)、ステップ183でゲート番号をポップし次にチェ
ックすべきゲートとして設定し、ステップ184でファ
ンアウトリストに登録する。そして、ステップ179に
戻って同様の処理を行う。
は、サブルーチンコールで行う。このサブルーチンに対
応するフローチャートを図18に示す。先ず、ステップ
179で、動作電圧VDDHを与えると決定されたゲー
ト("Visited=Yes"、"H/M/L= H") が、そのゲートの出力
へ接続しているかどうかをチェックする。接続していな
ければ、ステップ180で、動作電圧VDDMを与える
と決定されたゲート("Visited=Yes"、"H/M/L= M") が、
そのゲートの出力へ接続しているかどうかをチェックす
る。これも接続していなければ、ステップ181で、そ
のゲートの出力へ接続する未探索(Visited=No)のゲー
トが存在するかどうかをチェックする。存在する場合、
そのゲート番号をすべてスタックに積み(ステップ18
2)、ステップ183でゲート番号をポップし次にチェ
ックすべきゲートとして設定し、ステップ184でファ
ンアウトリストに登録する。そして、ステップ179に
戻って同様の処理を行う。
【0109】ステップ181で、そのゲートの出力へ接
続する未探索のゲートが存在しない場合、ステップ18
5でスタックに取り出すべきゲート番号が残っているか
どうかをチェックする。残っていれば、ステップ183
でゲート番号をポップし次にチェックすべきゲートとし
て設定し、ステップ184でファンアウトリストに登録
して、ステップ179から同様の処理を行う。ここでい
う取り出すべきゲート番号とは、このルーチンでポップ
したゲート番号のことである。つまり、ステップ182
でポップしたゲート番号のことである。
続する未探索のゲートが存在しない場合、ステップ18
5でスタックに取り出すべきゲート番号が残っているか
どうかをチェックする。残っていれば、ステップ183
でゲート番号をポップし次にチェックすべきゲートとし
て設定し、ステップ184でファンアウトリストに登録
して、ステップ179から同様の処理を行う。ここでい
う取り出すべきゲート番号とは、このルーチンでポップ
したゲート番号のことである。つまり、ステップ182
でポップしたゲート番号のことである。
【0110】スタックにゲート番号が残っていなけれ
ば、ファンアウトリストが完成したので、ステップ18
6で、このサブルーチンに入る直前のゲートとファンア
ウトリストに登録されたゲートのすべてに動作電圧VD
DLを与える条件で、Slack>0であるかどうかを
計算する。
ば、ファンアウトリストが完成したので、ステップ18
6で、このサブルーチンに入る直前のゲートとファンア
ウトリストに登録されたゲートのすべてに動作電圧VD
DLを与える条件で、Slack>0であるかどうかを
計算する。
【0111】Slack>0ならば、ステップ136で
そのサブルーチンに入る直前のゲートとファンアウトリ
ストに登録されたゲートには動作電圧VDDLを与える
と決定し、夫々の"Visited" フィールドに "Yes"、"H/M
/L" に" L" を書き込んで、ファンアウトリストをクリ
アしておく。そして、メインのルーチンに戻って同様の
処理を行う。
そのサブルーチンに入る直前のゲートとファンアウトリ
ストに登録されたゲートには動作電圧VDDLを与える
と決定し、夫々の"Visited" フィールドに "Yes"、"H/M
/L" に" L" を書き込んで、ファンアウトリストをクリ
アしておく。そして、メインのルーチンに戻って同様の
処理を行う。
【0112】又、ステップ179で、動作電圧VDDH
を与えると決定されたゲート("Visited=Yes"、"H/M/L=
H") が、そのゲートの出力へ接続していれば、最初のゲ
ートの"Visited" フィールドに "Yes"、"H/M/L" に"
H" を書き込んで、ファンアウトリストをクリアしてお
く(ステップ188)。
を与えると決定されたゲート("Visited=Yes"、"H/M/L=
H") が、そのゲートの出力へ接続していれば、最初のゲ
ートの"Visited" フィールドに "Yes"、"H/M/L" に"
H" を書き込んで、ファンアウトリストをクリアしてお
く(ステップ188)。
【0113】又、ステップ180で、動作電圧VDDM
を与えると決定されたゲート("Visited=Yes"、"H/M/L=
M") が、そのゲートの出力へ接続していれば、図のステ
ップ152へ移り、その後は動作電圧VDDMが与えら
れるかどうかを、主入力端子へ向かって探索していく。
手順は図のフローチャートで説明した通り。
を与えると決定されたゲート("Visited=Yes"、"H/M/L=
M") が、そのゲートの出力へ接続していれば、図のステ
ップ152へ移り、その後は動作電圧VDDMが与えら
れるかどうかを、主入力端子へ向かって探索していく。
手順は図のフローチャートで説明した通り。
【0114】動作電圧VDDLの値は、本発明を適用す
る回路全体の消費電力が、最小になるように設定するの
が最も望ましい。回路全体の消費電力を最小にする動作
電圧VDDLの値は、タイミング制約を満たす範囲で、
「(VDDLゲート単体での消費電力の削減量)x (VDDLゲ
ートに置換される個数)」が最大になる値である。「VD
DLゲート単体での消費電力の削減量」は、動作電圧VD
DLが低ければ低いほど大きくなる。一方、「VDDLゲー
トに置換される個数」は、動作電圧VDDLの電圧値が
高ければ高いほど多くなる。これは、動作電圧VDDL
が低ければ低いほどVDDLゲートの遅延が大きくなり、タ
イミング制約を満たす範囲でVDDLゲートヘの置換が行い
にくくなるためである。以上から、「VDDLゲート単体で
の消費電力の削減量」と「VDDLゲートに置換される個
数) 」の積は、VDDLが0ボルトからVDDHの間のどこかの
点で、最大値をとることがわかる。
る回路全体の消費電力が、最小になるように設定するの
が最も望ましい。回路全体の消費電力を最小にする動作
電圧VDDLの値は、タイミング制約を満たす範囲で、
「(VDDLゲート単体での消費電力の削減量)x (VDDLゲ
ートに置換される個数)」が最大になる値である。「VD
DLゲート単体での消費電力の削減量」は、動作電圧VD
DLが低ければ低いほど大きくなる。一方、「VDDLゲー
トに置換される個数」は、動作電圧VDDLの電圧値が
高ければ高いほど多くなる。これは、動作電圧VDDL
が低ければ低いほどVDDLゲートの遅延が大きくなり、タ
イミング制約を満たす範囲でVDDLゲートヘの置換が行い
にくくなるためである。以上から、「VDDLゲート単体で
の消費電力の削減量」と「VDDLゲートに置換される個
数) 」の積は、VDDLが0ボルトからVDDHの間のどこかの
点で、最大値をとることがわかる。
【0115】上記の積が最大になるVDDLの値を実際に求
めるには、次のようにして行う。動作電圧VDDLの値
を、ある刻みで動作電圧VDDHより少しずつ低く設定
し、本発明の回路構造を実際に生成して、「(VDDL ゲー
ト単体での消費電力の削減量)X(VDDL ゲートに置換され
る個数) 」の値を順次求める。そして、前記の積が最大
になる動作電圧VDDLの値を見つければよい。経験的
には、図19に示したような関係があり、動作電圧VD
DLを動作電圧VDDHの1/2 あたりに設定すると、前
記の積が最大になる。
めるには、次のようにして行う。動作電圧VDDLの値
を、ある刻みで動作電圧VDDHより少しずつ低く設定
し、本発明の回路構造を実際に生成して、「(VDDL ゲー
ト単体での消費電力の削減量)X(VDDL ゲートに置換され
る個数) 」の値を順次求める。そして、前記の積が最大
になる動作電圧VDDLの値を見つければよい。経験的
には、図19に示したような関係があり、動作電圧VD
DLを動作電圧VDDHの1/2 あたりに設定すると、前
記の積が最大になる。
【0116】本発明をプロセッサを構成する回路に応用
する場合には、上記基本構造に若干の変更を加えること
により更に消費電力を押さえることができる。即ち、プ
ロセッサの制御ロジックでは、多くの場合、組み合わせ
論理回路の主出力端子にラッチが設けられている。この
ような場合には、レベルコンバータとして図24に示す
回路を使う代わりに、図20に示したようなレベルコン
バータとラッチをミックスした「レベル変換機能付ラッ
チ」を使うことができる。この回路は、信号をラッチす
る機能と、動作電圧VDDLを動作電圧VDDHに変換
する機能とを有する。
する場合には、上記基本構造に若干の変更を加えること
により更に消費電力を押さえることができる。即ち、プ
ロセッサの制御ロジックでは、多くの場合、組み合わせ
論理回路の主出力端子にラッチが設けられている。この
ような場合には、レベルコンバータとして図24に示す
回路を使う代わりに、図20に示したようなレベルコン
バータとラッチをミックスした「レベル変換機能付ラッ
チ」を使うことができる。この回路は、信号をラッチす
る機能と、動作電圧VDDLを動作電圧VDDHに変換
する機能とを有する。
【0117】このレベル変換機能付ラッチは、動作電圧
VDDHで動作するラッチ回路LHを備えている。ラッ
チ回路は、互いの入出力ノードを逆方向に接続した一対
のインバータI2、I3からなっている。そして、その
出力は、やはり動作電圧VDDHで動作するインバータ
I4の入力に接続され、インバータI4の出力が主出力
端子となっている。インバータの一方は、Nチヤネルト
ランジスタMN4によって接地レベルに接続され、他方
はNチヤネルトランジスタMN5によって接地レベルに
接続されている。これらNチヤネルトランジスタMN
4、MN5は、動作電圧VDDLで動作し、やはり動作
電圧VDDLで動作するゲートの出力信号によってオン
オフするが、NチヤネルトランジスタMN5にはインバ
ータが設けられているので、一方がオンしたときは他方
がオフする。又、ラッチ回路LHとNチヤネルトランジ
スタMN4、MN5の間には、クロック信号CLKに同
期して、ラッチ回路LHへの信号の取込を行うNチヤネ
ルトランジスタMN6、MN7が設けられている。図2
0に示す回路は、通常のラッチ回路とほぼ同じ消費電力
で、レベル変換機能とラッチ機能の両方を満たすもので
あり、消費電力低減化の観点から、効率の良い回路であ
る。
VDDHで動作するラッチ回路LHを備えている。ラッ
チ回路は、互いの入出力ノードを逆方向に接続した一対
のインバータI2、I3からなっている。そして、その
出力は、やはり動作電圧VDDHで動作するインバータ
I4の入力に接続され、インバータI4の出力が主出力
端子となっている。インバータの一方は、Nチヤネルト
ランジスタMN4によって接地レベルに接続され、他方
はNチヤネルトランジスタMN5によって接地レベルに
接続されている。これらNチヤネルトランジスタMN
4、MN5は、動作電圧VDDLで動作し、やはり動作
電圧VDDLで動作するゲートの出力信号によってオン
オフするが、NチヤネルトランジスタMN5にはインバ
ータが設けられているので、一方がオンしたときは他方
がオフする。又、ラッチ回路LHとNチヤネルトランジ
スタMN4、MN5の間には、クロック信号CLKに同
期して、ラッチ回路LHへの信号の取込を行うNチヤネ
ルトランジスタMN6、MN7が設けられている。図2
0に示す回路は、通常のラッチ回路とほぼ同じ消費電力
で、レベル変換機能とラッチ機能の両方を満たすもので
あり、消費電力低減化の観点から、効率の良い回路であ
る。
【0118】言うまでもなく、図20に示すレベル変換
機能付ラッチを動作電圧VDDLが供給されるゲートに
使うには、図3に示す回路構造、すなわち、動作電圧V
DDLが供給されるゲートは主出力端子側に設けられて
いる必要がある。なぜなら、レベル変換機能付ラッチ
は、元々ラッチが設けられているところにしか使えない
からである。即ち、レベル変換機能付ラッチは、通常の
レベルコンバータの代わりにはならない。このように、
図3に提案する回路構造は、図20に示す低消費電力の
レベル変換機能付ラッチ回路の利用に非常に都合のよい
ものである。
機能付ラッチを動作電圧VDDLが供給されるゲートに
使うには、図3に示す回路構造、すなわち、動作電圧V
DDLが供給されるゲートは主出力端子側に設けられて
いる必要がある。なぜなら、レベル変換機能付ラッチ
は、元々ラッチが設けられているところにしか使えない
からである。即ち、レベル変換機能付ラッチは、通常の
レベルコンバータの代わりにはならない。このように、
図3に提案する回路構造は、図20に示す低消費電力の
レベル変換機能付ラッチ回路の利用に非常に都合のよい
ものである。
【0119】更に図3に示す回路構造は、パターンレイ
アウトの観点からしても、非常に利点が多い。即ち、動
作電圧VDDHが供給されるゲートと動作電圧VDDL
が供給されるゲートとが、それぞれ別々にクラスタ化さ
れているので、シンプルなパターンのレイアウトが実現
する。
アウトの観点からしても、非常に利点が多い。即ち、動
作電圧VDDHが供給されるゲートと動作電圧VDDL
が供給されるゲートとが、それぞれ別々にクラスタ化さ
れているので、シンプルなパターンのレイアウトが実現
する。
【0120】その様なレイアウトの具体的な例を、図2
1に示す。ここでは、スタンダード・セルを用いて、レ
イアウトをデザインする場合について説明をする。スタ
ンダード・セルは、複数の列に並べられ、夫々の論理回
路が列の内部に配置され、夫々の列を貫いて電源線が通
っている。又、スタンダード・セル間の接続は隣接する
列の間のチャネルと呼ばれるスペースに設けられた配線
で行われる。
1に示す。ここでは、スタンダード・セルを用いて、レ
イアウトをデザインする場合について説明をする。スタ
ンダード・セルは、複数の列に並べられ、夫々の論理回
路が列の内部に配置され、夫々の列を貫いて電源線が通
っている。又、スタンダード・セル間の接続は隣接する
列の間のチャネルと呼ばれるスペースに設けられた配線
で行われる。
【0121】図では、6つの列に図3の回路が実現され
ている。第1の列R1及び第2の列R2に動作電圧VD
DHクラスタが組み立てられ、第3の列R3、第4の列
R4及び第5の列R5に動作電圧VDDLクラスタが組
み立てられ、第6の列R6にレベルコンバータが組み立
てられている。この場合、主入力端子は第1の列R1に
上端に位置し、主出力端子は第2の列R2の下端に位置
する。従って、信号の流れは上から下へとむかうシンプ
ルな回路レイアウトとなる。
ている。第1の列R1及び第2の列R2に動作電圧VD
DHクラスタが組み立てられ、第3の列R3、第4の列
R4及び第5の列R5に動作電圧VDDLクラスタが組
み立てられ、第6の列R6にレベルコンバータが組み立
てられている。この場合、主入力端子は第1の列R1に
上端に位置し、主出力端子は第2の列R2の下端に位置
する。従って、信号の流れは上から下へとむかうシンプ
ルな回路レイアウトとなる。
【0122】図21に示すパターンレイアウト方式は、
2つの理由から面積を小さくする上で有利である。その
1つは、レベルコンバータの形成されている第6の列R
6を除いて、スタンダード・セルの各列には、動作電圧
VDDH又は動作電圧VDDLの何れか一方のみを供給
すればよく、電源ラインは1つの列に対して1本で足り
る。従って、2本の電源ラインを利用するスタンダード
・セルを用いる場合に比較して、電源ラインの分だけ高
さ方向のサイズが小さくなる。
2つの理由から面積を小さくする上で有利である。その
1つは、レベルコンバータの形成されている第6の列R
6を除いて、スタンダード・セルの各列には、動作電圧
VDDH又は動作電圧VDDLの何れか一方のみを供給
すればよく、電源ラインは1つの列に対して1本で足り
る。従って、2本の電源ラインを利用するスタンダード
・セルを用いる場合に比較して、電源ラインの分だけ高
さ方向のサイズが小さくなる。
【0123】もう1つは、ウエルの分離が容易になると
いうことである。もし、動作電圧VDDH及び動作電圧
VDDLの2電源が共存するCMOS回路をレイアウト
する際に、スタンダード・セルの同一列内に動作電圧V
DDHが供給されるゲートと、動作電圧VDDLが供給
されるゲートを配置する場合には、構成要素であるトラ
ンジスタは、次のように形成される。CMOS回路で
は、動作電圧VDDHが供給されるゲートのPチャネル
トランジスタは、通常ウエル電位として動作電圧VDD
Hが与えられたNウエル内に形成される。一方、動作電
圧VDDLが供給されるゲートのPチャネルトランジス
タは、通常ウエル電位として動作電圧VDDLが与えら
れたNウエル内に形成される。この場合、ウエルの電位
が異なるので、これら2種類のPチャネルトランジスタ
は、隣り合わせにおく場合、分離したNウエルに形成す
る必要がある。
いうことである。もし、動作電圧VDDH及び動作電圧
VDDLの2電源が共存するCMOS回路をレイアウト
する際に、スタンダード・セルの同一列内に動作電圧V
DDHが供給されるゲートと、動作電圧VDDLが供給
されるゲートを配置する場合には、構成要素であるトラ
ンジスタは、次のように形成される。CMOS回路で
は、動作電圧VDDHが供給されるゲートのPチャネル
トランジスタは、通常ウエル電位として動作電圧VDD
Hが与えられたNウエル内に形成される。一方、動作電
圧VDDLが供給されるゲートのPチャネルトランジス
タは、通常ウエル電位として動作電圧VDDLが与えら
れたNウエル内に形成される。この場合、ウエルの電位
が異なるので、これら2種類のPチャネルトランジスタ
は、隣り合わせにおく場合、分離したNウエルに形成す
る必要がある。
【0124】これに対して、図21に示すパターンレイ
アウト方式では、スタンダード・セルの1つの列に形成
されるトランジスタは、動作電圧VDDH又は動作電圧
VDDLの何れか一方のみで動作し、ウエル電位は同一
なので、ウエルの分離は一切必要ない。従って、ウエル
の分離に必要な面積の分だけ、占有面積は小さくなる。
アウト方式では、スタンダード・セルの1つの列に形成
されるトランジスタは、動作電圧VDDH又は動作電圧
VDDLの何れか一方のみで動作し、ウエル電位は同一
なので、ウエルの分離は一切必要ない。従って、ウエル
の分離に必要な面積の分だけ、占有面積は小さくなる。
【0125】又、このようなレイアウトの、横方向(ro
w 方向)の配置では、信号経路がなるべく垂直方向に並
べるようにして、信号線の長さを短くする配慮を行う。
これにより、信号遅延が小さくなり、信号線の占めるス
ペースも少なくなる。
w 方向)の配置では、信号経路がなるべく垂直方向に並
べるようにして、信号線の長さを短くする配慮を行う。
これにより、信号遅延が小さくなり、信号線の占めるス
ペースも少なくなる。
【0126】更に、図21に示すパターンレイアウト
は、スタンダードセルであるものとしたが、ゲートアレ
イでも全く同様である。ゲートアレイでは、横方向では
なく縦方向を row方向と呼ぶのが普通である。
は、スタンダードセルであるものとしたが、ゲートアレ
イでも全く同様である。ゲートアレイでは、横方向では
なく縦方向を row方向と呼ぶのが普通である。
【0127】上記、発明の実施形態では、2つの異なる
電位の動作電圧を使用する場合について、具体的に説明
した。3種類以上の動作電圧(例えば、2.5V、3.
3V及び5V)を使う場合にも、本提案の構造は容易に
応用できる。すなわち、主入力端子側には最も高い動作
電圧で動かすゲートをクラスタ化し、さらに、そのクラ
スタの出カに、その次に高い動作電圧で動かすゲートを
クラスタ化して接続し、以下同様に次々に接続して、最
後に、最も主出力端子に近い側に最も低い動作電圧で動
かすゲートをクラスタ化して接続すればよい。
電位の動作電圧を使用する場合について、具体的に説明
した。3種類以上の動作電圧(例えば、2.5V、3.
3V及び5V)を使う場合にも、本提案の構造は容易に
応用できる。すなわち、主入力端子側には最も高い動作
電圧で動かすゲートをクラスタ化し、さらに、そのクラ
スタの出カに、その次に高い動作電圧で動かすゲートを
クラスタ化して接続し、以下同様に次々に接続して、最
後に、最も主出力端子に近い側に最も低い動作電圧で動
かすゲートをクラスタ化して接続すればよい。
【0128】またさらに、与えられた論理回路の外部
に、該論理回路とは別に動作電圧VDDLで動かす回路
があり、与えられた論理回路の出力を該外部回路で受け
るような場合には、わざわざレベルコンパータで信号振
幅を0〜動作電圧VDDHまで増幅して出力する必要は
ない。このような場合には、該出力信号に対しては、与
えられた論理回路内でレベルコンバータを挿入せずに、
動作電圧VDDLクラスタ内のゲートから直接、論理回
路外部へ出力すればよい。
に、該論理回路とは別に動作電圧VDDLで動かす回路
があり、与えられた論理回路の出力を該外部回路で受け
るような場合には、わざわざレベルコンパータで信号振
幅を0〜動作電圧VDDHまで増幅して出力する必要は
ない。このような場合には、該出力信号に対しては、与
えられた論理回路内でレベルコンバータを挿入せずに、
動作電圧VDDLクラスタ内のゲートから直接、論理回
路外部へ出力すればよい。
【0129】
【発明の効果】以上詳細に説明したように本発明によれ
ば、レベルコンパータの個数を、最大でも出力ピンと同
数に抑えることができるため、大規模半導体集積回路の
消費電力の低減化の効果が非常に大きい。
ば、レベルコンパータの個数を、最大でも出力ピンと同
数に抑えることができるため、大規模半導体集積回路の
消費電力の低減化の効果が非常に大きい。
【図1】図1は、本発明を利用して設計されたゲートア
レイやスタンダードセル等のASICチツプの全体を示
す図である。
レイやスタンダードセル等のASICチツプの全体を示
す図である。
【図2】本発明による設計方法に適したランダムロジッ
ク部における信号パスとフリップフロップとの配置を示
す図である。
ク部における信号パスとフリップフロップとの配置を示
す図である。
【図3】本発明の実施形態により設計され、動作電圧V
DDHのクラスタと動作電圧VDDLのクラスタからな
るCMOS組み合わせ論理回路を示すブロックダイアグ
ラムである。
DDHのクラスタと動作電圧VDDLのクラスタからな
るCMOS組み合わせ論理回路を示すブロックダイアグ
ラムである。
【図4】各ゲートと、そのゲートが既に探索されている
か否かを示すフィールド "Visited"、及びそのゲートに
与えられている供給電圧レベル "L/H" を対応づけるテ
ーブルをを示す図である。
か否かを示すフィールド "Visited"、及びそのゲートに
与えられている供給電圧レベル "L/H" を対応づけるテ
ーブルをを示す図である。
【図5】Depth-First-Searchに従って、動作電圧VDD
Hを動作電圧VDDLに置き換える処理のメインのルー
チンを示すフローチャートである。
Hを動作電圧VDDLに置き換える処理のメインのルー
チンを示すフローチャートである。
【図6】Depth-First-Searchに従って、動作電圧VDD
Hを動作電圧VDDLに置き換える処理のサブルーチン
を示すフローチャートである。
Hを動作電圧VDDLに置き換える処理のサブルーチン
を示すフローチャートである。
【図7】各ゲートと、そのゲートが既に探索されている
か否かを示すフィールド "Visited"、及びそのゲートに
与えられている供給電圧レベル "L/M/H" を対応づける
テーブルをを示す図である。
か否かを示すフィールド "Visited"、及びそのゲートに
与えられている供給電圧レベル "L/M/H" を対応づける
テーブルをを示す図である。
【図8】Depth-First-Searchに従って、動作電圧VDD
Hを動作電圧VDDL又は動作電圧VDDMに置き換え
る処理のメインのルーチンを示すフローチャートであ
る。
Hを動作電圧VDDL又は動作電圧VDDMに置き換え
る処理のメインのルーチンを示すフローチャートであ
る。
【図9】Depth-First-Searchに従って、動作電圧VDD
Hを動作電圧VDDMに置き換える処理を示すフローチ
ャートである。
Hを動作電圧VDDMに置き換える処理を示すフローチ
ャートである。
【図10】Depth-First-Searchに従って、動作電圧VD
DHを動作電圧VDDMに置き換える処理のサブルーチ
ンを示すフローチャートである。
DHを動作電圧VDDMに置き換える処理のサブルーチ
ンを示すフローチャートである。
【図11】Depth-First-Searchに従って、動作電圧VD
DHを動作電圧VDDL又は動作電圧VDDMに置き換
える処理のサブルーチンを示すフローチャートである。
DHを動作電圧VDDL又は動作電圧VDDMに置き換
える処理のサブルーチンを示すフローチャートである。
【図12】本発明の実施形態により設計され、動作電圧
VDDHのクラスタ、動作電圧VDDLのクラスタ及び
動作電圧VDDMのクラスタからなるCMOS組み合わ
せ論理回路を示すブロックダイアグラムである。
VDDHのクラスタ、動作電圧VDDLのクラスタ及び
動作電圧VDDMのクラスタからなるCMOS組み合わ
せ論理回路を示すブロックダイアグラムである。
【図13】Bredth-First-Search に従って、動作電圧V
DDHを動作電圧VDDLに置き換える処理のメインの
ルーチンを示すフローチャートである。
DDHを動作電圧VDDLに置き換える処理のメインの
ルーチンを示すフローチャートである。
【図14】Bredth-First-Search に従って、動作電圧V
DDHを動作電圧VDDLに置き換える処理のサブルー
チンを示すフローチャートである。
DDHを動作電圧VDDLに置き換える処理のサブルー
チンを示すフローチャートである。
【図15】Bredth-First-Search に従って、動作電圧V
DDHを動作電圧VDDL又は動作電圧VDDMに置き
換える処理のメインのルーチンを示すフローチャートで
ある。
DDHを動作電圧VDDL又は動作電圧VDDMに置き
換える処理のメインのルーチンを示すフローチャートで
ある。
【図16】Bredth-First-Search に従って、動作電圧V
DDHを動作電圧VDDMに置き換える処理を示すフロ
ーチャートである。
DDHを動作電圧VDDMに置き換える処理を示すフロ
ーチャートである。
【図17】Bredth-First-Search に従って、動作電圧V
DDHを動作電圧VDDMに置き換える処理のサブルー
チンを示すフローチャートである。
DDHを動作電圧VDDMに置き換える処理のサブルー
チンを示すフローチャートである。
【図18】Bredth-First-Search に従って、動作電圧V
DDHを動作電圧VDDL又は動作電圧VDDMに置き
換える処理のサブルーチンを示すフローチャートであ
る。
DDHを動作電圧VDDL又は動作電圧VDDMに置き
換える処理のサブルーチンを示すフローチャートであ
る。
【図19】低動作電圧VDDLの設定値と回路全体の消
費電力との関係を示す図である。
費電力との関係を示す図である。
【図20】信号をラッチする機能と、動作電圧VDDL
を動作電圧VDDHに変換する機能とを有するレベル変
換機能付ラッチを示す図である。
を動作電圧VDDHに変換する機能とを有するレベル変
換機能付ラッチを示す図である。
【図21】スタンダード・セルによって設計された本発
明の実施形態によるCMOS組み合わせ論理回路を示す
ブロックダイアグラムである。
明の実施形態によるCMOS組み合わせ論理回路を示す
ブロックダイアグラムである。
【図22】本発明が適用可能なCMOS組み合わせ論理
回路を示すブロックダイアグラムである。
回路を示すブロックダイアグラムである。
【図23】低動作電圧VDDLで動かす回路と高動作電
圧VDDHで動かす回路をダイレクトに接続する場合に
生じる問題点を示す図である。
圧VDDHで動かす回路をダイレクトに接続する場合に
生じる問題点を示す図である。
【図24】レベルコンバータを示す回路図である。
【図25】消費電力を低減する為に、構成要素のゲート
の一部に加わる動作電圧を下げる場合に生じる問題点を
示す回路図である。
の一部に加わる動作電圧を下げる場合に生じる問題点を
示す回路図である。
G1〜G10 ゲート LC レベルコンバータ i1〜i4 主入力端子 o1〜o4 主出力端子 VDDH 高動作電圧 VDDL 低動作電圧 R1〜R6 スタンダード・セル列 MP1、MP2、MP3 Pチャネルトランジスタ MN1〜MN7 Nチヤネルトランジスタ I1、I2、I3 インバータ MC、MB1〜MB3 メガセルで構成される機能ブロ
ック RL1〜RL5 ランダムロジックを構成する機能ブロ
ック MC メモリ
ック RL1〜RL5 ランダムロジックを構成する機能ブロ
ック MC メモリ
Claims (17)
- 【請求項1】 少なくとも1つの主入力端子と少なくと
も1つの主出力端子を備えた組み合わせ論理回路であっ
て、入力ノードと出力ノードを持ち第1の動作電圧で駆
動される複数の第1のゲートと、入力ノードと出力ノー
ドを持ち前記第1の動作電圧よりも低い第2の動作電圧
で駆動される複数の第2のゲートとを備え、前記第2の
ゲートのすべての出力ノードは、前記第2のゲートの入
力ノードと前記主出力端子のいずれかのみに接続されて
いることを特徴とする組み合わせ論理回路。 - 【請求項2】 前記少なくとも1つの主出力端子と、前
記少なくとも1つの第2のゲートの間にレベルコンバー
タが設けられていることを特徴とする請求項1に記載の
組み合わせ論理回路。 - 【請求項3】 前記レベルコンバータは、入力した信号
を保持し、前記第2の動作電圧から前記第1の動作電圧
へ変換するレベル変換機能付ラッチであることを特徴と
する請求項1に記載の組み合わせ論理回路。 - 【請求項4】 前記レベル変換機能付ラッチは、前記第
1の動作電圧で動作し、互いの入出力ノードを逆方向に
接続した一対のインバータからなるラッチ回路を備え、
インバータの一方は、第1のトランジスタによって接地
レベルに接続され、他方は第2のトランジスタによって
接地レベルに接続され、前記第2のトランジスタの入力
にはインバータが設けられており、前記第2のゲートに
より前記第1及び第2のトランジスタは、逆相でオンオ
フすることを特徴とする請求項3に記載の組み合わせ論
理回路。 - 【請求項5】 前記第1の動作電圧で駆動される複数の
第1のゲートと前記第2の動作電圧で駆動される複数の
第2のゲートは、夫々別々に平行な複数の列に配置され
ていることを特徴とする請求項1に記載の組み合わせ論
理回路。 - 【請求項6】 更に、レベルコンバータからなる別の列
が前記複数の列と平行に配置されていることを特徴とす
る請求項5に記載の組み合わせ論理回路。 - 【請求項7】 前記第1の動作電圧で駆動される複数の
第1のゲートと前記第2の動作電圧で駆動される複数の
第2のゲートは、それらが互いに接続して構成される複
数の信号経路が前記複数の列に対して直角になるように
配置されていることを特徴とする請求項5に記載の組み
合わせ論理回路。 - 【請求項8】 少なくとも1つの主入力端子と少なくと
も1つの主出力端子を備えた組み合わせ論理回路であっ
て、入力ノードと出力ノードを持ち第1の動作電圧で駆
動される複数の第1のゲートと、入力ノードと出力ノー
ドを持ち前記第1の動作電圧よりも低い第2の動作電圧
で駆動される複数の第2のゲートと、入力ノードと出力
ノードを持ち前記第2の動作電圧よりも低い第3の動作
電圧で駆動される複数の第3のゲートとを備え、前記第
3のゲートのすべての出力ノードは、前記第3のゲート
の入力ノード及び前記主出力端子のいずれかのみに接続
されており、前記第2のゲートのすべての出力ノード
は、前記第2のゲートの入力ノード、前記第3のゲート
の入力ノード及び前記主出力端子のいずれかのみに接続
されていることを特徴とする組み合わせ論理回路。 - 【請求項9】 少なくとも1つの主入力端子と、少なく
とも1つの主出力端子と、それらの間に接続された論理
ゲートを備えた組み合わせ論理回路を設計する方法であ
って、 前記論理ゲートの全体に第1の動作電圧を供給した場合
に所定のタイミング・スペックを満足する論理回路を設
計する段階と、 前記主出力端子から前記主入力端子へ向かって、前記論
理ゲートの夫々について1つづつ前記第1の動作電圧
を、前記第1の動作電圧よりも低い第2の動作電圧に変
更できるか否かを検討する段階を含み、 前記検討段階では、前記論理ゲートの1つへ前記第2の
動作電圧を与えた場合に、前記論理回路全体で前記タイ
ミング・スペックを満たせばその論理ゲートへ供給する
電圧を前記第2の動作電圧に決定され、前記タイミング
・スペックを満たさなければその論理ゲート及びその入
力端子に接続されている論理ゲートへ供給する電圧を前
記第1の動作電圧に決定することを特徴とする組み合わ
せ論理回路を設計する方法。 - 【請求項10】 前記主出力端子は複数あり、前記主出
力端子を1つづつ順に選択し、選択された前記主出力端
子に接続されている論理ゲートに関して前記検討段階を
行い、それが終了した後、次に選択した前記主出力端子
移ることを特徴とする請求項9に記載の組み合わせ論理
回路を設計する方法。 - 【請求項11】 少なくとも1つの主入力端子と、少な
くとも1つの主出力端子と、それらの間に接続された論
理ゲートを備えた組み合わせ論理回路を設計する方法で
あって、 前記論理ゲートの全体に第1の動作電圧を供給した場合
に所定のタイミング・スペックを満足する論理回路を設
計する段階と、 前記主出力端子に対する接続関係の近いゲートから順
に、前記論理ゲートの夫々について1つづつ前記第1の
動作電圧を、前記第1の動作電圧よりも低い第2の動作
電圧に変更できるか否かを検討する段階を含み、 前記検討段階では、前記論理ゲートの1つへ前記第2の
動作電圧を与えた場合に、前記論理回路全体で前記タイ
ミング・スペックを満たせばその論理ゲートへ供給する
電圧を前記第2の動作電圧に決定され、前記タイミング
・スペックを満たさなければその論理ゲート及びその入
力端子に接続されている論理ゲートへ供給する電圧を前
記第1の動作電圧に決定することを特徴とする組み合わ
せ論理回路を設計する方法。 - 【請求項12】 前記主出力端子は複数あり、夫々の主
出力端子にN個(Nは0に初期化)のゲートを介して接
続されている論理ゲートに関して前記検討段階を行い、
それが終了した後、Nを1づつ増加させて同じ手順繰り
返すことを特徴とする請求項11に記載の組み合わせ論
理回路を設計する方法。 - 【請求項13】 少なくとも1つ以上の主入力端子と、 少なくとも1つ以上の主出力端子と、を備えた組み合わ
せ論理回路であって、入力ノードと出力ノードを持ち第
1の動作電圧で駆動される複数の第1のゲートと、入力
ノードと出力ノードを持ち前記第1の動作電圧よりも低
い第2の動作電圧で駆動される複数の第2のゲートとを
備え、前記第2のゲートのすべての出力ノードは、前記
第2のゲートの入力ノードと前記主出力端子のいずれか
のみに接続されていることを特徴とする組み合わせ論理
回路。 - 【請求項14】 少なくとも1つ以上の主入力端子と、 少なくとも1つ以上の主出力端子と、 入カノードと出カノードを持ち第1の動作電庄で駆動さ
れる複数の第1のゲートと、 入カノードと出カノードを持ち前記第1の動作電圧より
も低い第2の動作電圧で駆動される複数の第2のゲート
とを備え、 前記主入力端子は前記第1のゲートの入カノードまたは
前記第2のゲートの入カノードに接続され、 前記第1のゲートの出カノードはその第1のゲートとは
異なる前記第1のゲートの入カノード、前記第2のゲー
トの入カノード、前記主出力端子のうちのいずれかに接
続され、 前記第2のゲートの出カノードはその第2のゲートとは
異なる前記第2のゲートの入カノードまたはレベルコン
バータに接続され、 前記レベルコンバ一夕は前記主出力端子に接続されてい
ることを特徴とする組み合わせ論理回路。 - 【請求項15】 少なくとも1つ以上の主入力端子と、 少なくとも1つ以上の主出力端子と、 入カノードと出カノードを持ち第1の動作電庄で駆動さ
れる複数の第1のゲートと、 入カノードと出カノードを持ち前記第1の動作電圧より
も低い第2の動作電圧で駆動される複数の第2のゲート
と、 入カノードと出カノードを持ち前記第2の動作電圧より
も低い第3の動作電圧で駆動される複数の第3のゲート
とを備え、 前記主入力端子は前記第1のゲートの入カノード、前記
第2のゲートの入力ノード、前記第3のゲートの入力ノ
ードのうちのいずれかに接続され、 前記第1のゲートの出カノードはその第1のゲートとは
異なる前記第1のゲートの入カノード、前記第2のゲー
トの入カノード、前記第3のゲートの入カノード、前記
主出力端子のうちのいずれかに接続され、 前記第2のゲートの出カノードはその第2のゲートとは
異なる前記第2のゲートの入カノード、前記第3のゲー
トの入カノード、レベルコンバータのうちのいずれかに
接続され、 前記第3のゲートの出カノードはその第3のゲートとは
異なる前記第3のゲートの入カノードまたはレベルコン
バータに接続され、 前記レベルコンバ一夕は前記主出力端子に接続されてい
ることを特徴とする組み合わせ論理回路。 - 【請求項16】 第1の動作電圧で駆動される複数の論
理回路で構成される第1の領域と、前記第1の動作電圧
よりも低い第2の動作電圧で駆動される複数の論理回路
で構成される第2の領域と、この第2の領域の出力側の
端子が接続されているレベルコンバ一夕とがらなる組み
合わせ論理回路を内部に有していることを特徴とする半
導体集積回路。 - 【請求項17】 前記第1の領域の出力側の端子の少な
くとも一部は前記第2の領域の入力側の端子に接続され
ていることを特徴とする半導体集積回路。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/423,943 | 1995-04-19 | ||
US08/423,943 US5594368A (en) | 1995-04-19 | 1995-04-19 | Low power combinational logic circuit |
Publications (2)
Publication Number | Publication Date |
---|---|
JPH09162720A JPH09162720A (ja) | 1997-06-20 |
JP3117910B2 true JP3117910B2 (ja) | 2000-12-18 |
Family
ID=23680824
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP08097070A Expired - Fee Related JP3117910B2 (ja) | 1995-04-19 | 1996-04-18 | 組み合わせ論理回路及びその設計方法 |
Country Status (2)
Country | Link |
---|---|
US (2) | US5594368A (ja) |
JP (1) | JP3117910B2 (ja) |
Families Citing this family (20)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0862127B1 (en) | 1994-01-19 | 2002-09-04 | Matsushita Electric Industrial Co., Ltd. | Method of designing semiconductor integrated circuit |
JP3204848B2 (ja) * | 1994-08-09 | 2001-09-04 | 株式会社東芝 | レベル変換回路及びこのレベル変換回路を用いてレベル変換されたデータを出力する方法 |
US5594368A (en) * | 1995-04-19 | 1997-01-14 | Kabushiki Kaisha Toshiba | Low power combinational logic circuit |
TW305958B (ja) * | 1995-05-26 | 1997-05-21 | Matsushita Electric Ind Co Ltd | |
JP3625930B2 (ja) * | 1995-10-26 | 2005-03-02 | 株式会社日立製作所 | 半導体集積回路装置 |
JPH10163843A (ja) * | 1996-12-04 | 1998-06-19 | Toshiba Corp | 組み合わせ論理回路及びその設計方法 |
JP3777768B2 (ja) * | 1997-12-26 | 2006-05-24 | 株式会社日立製作所 | 半導体集積回路装置およびセルライブラリを記憶した記憶媒体および半導体集積回路の設計方法 |
US6307397B1 (en) * | 1998-03-09 | 2001-10-23 | Infineontechnologies Ag | Reduced voltage input/reduced voltage output repeaters for high capacitance signal lines and methods therefor |
JPH11328238A (ja) | 1998-05-12 | 1999-11-30 | Toshiba Corp | 多電源集積回路の評価装置及び多電源集積回路の評価方法 |
US6329838B1 (en) * | 1999-03-09 | 2001-12-11 | Kabushiki Kaisha Toshiba | Logic circuits and carry-lookahead circuits |
US20020070782A1 (en) * | 1999-12-13 | 2002-06-13 | Afghahi Morteza Cyrus | High speed flip-flop |
US6683485B1 (en) * | 2001-12-04 | 2004-01-27 | National Semiconductor Corporation | Double translation voltage level shifter and method |
US7205684B2 (en) | 2002-11-18 | 2007-04-17 | Matsushita Electric Industrial Co., Ltd. | Semiconductor integrated circuit device and method for designing the same |
US7111266B2 (en) * | 2003-11-24 | 2006-09-19 | International Business Machines Corp. | Multiple voltage integrated circuit and design method therefor |
US7089510B2 (en) * | 2003-11-24 | 2006-08-08 | International Business Machines Corp. | Method and program product of level converter optimization |
US7119578B2 (en) * | 2003-11-24 | 2006-10-10 | International Business Machines Corp. | Single supply level converter |
US7400167B2 (en) * | 2005-08-16 | 2008-07-15 | Altera Corporation | Apparatus and methods for optimizing the performance of programmable logic devices |
JP4562456B2 (ja) * | 2004-08-20 | 2010-10-13 | パナソニック株式会社 | 半導体集積回路 |
US20060119382A1 (en) * | 2004-12-07 | 2006-06-08 | Shumarayev Sergey Y | Apparatus and methods for adjusting performance characteristics of programmable logic devices |
JP5093860B2 (ja) * | 2010-07-30 | 2012-12-12 | ルネサスエレクトロニクス株式会社 | 半導体集積回路 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS57162838A (en) * | 1981-03-31 | 1982-10-06 | Fujitsu Ltd | Emitter coupling type logical circuit |
JPH0728214B2 (ja) * | 1987-02-06 | 1995-03-29 | 株式会社日立製作所 | 半導体集積回路装置 |
JPH01195719A (ja) * | 1988-01-30 | 1989-08-07 | Nec Corp | 半導体集積回路 |
US5084637A (en) * | 1989-05-30 | 1992-01-28 | International Business Machines Corp. | Bidirectional level shifting interface circuit |
JP2833657B2 (ja) * | 1989-07-13 | 1998-12-09 | 株式会社日立製作所 | 半導体集積回路装置 |
JPH03109767A (ja) * | 1989-09-25 | 1991-05-09 | Nec Corp | 半導体集積回路装置 |
JP3079515B2 (ja) * | 1991-01-29 | 2000-08-21 | 株式会社東芝 | ゲ−トアレイ装置及び入力回路及び出力回路及び降圧回路 |
US5313079A (en) * | 1992-06-22 | 1994-05-17 | Vlsi Technology, Inc. | Gate array bases with flexible routing |
US5594368A (en) * | 1995-04-19 | 1997-01-14 | Kabushiki Kaisha Toshiba | Low power combinational logic circuit |
-
1995
- 1995-04-19 US US08/423,943 patent/US5594368A/en not_active Expired - Lifetime
-
1996
- 1996-04-18 JP JP08097070A patent/JP3117910B2/ja not_active Expired - Fee Related
- 1996-06-11 US US08/661,764 patent/US5818256A/en not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
JPH09162720A (ja) | 1997-06-20 |
US5818256A (en) | 1998-10-06 |
US5594368A (en) | 1997-01-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3117910B2 (ja) | 組み合わせ論理回路及びその設計方法 | |
US7336100B2 (en) | Single supply level converter | |
US9557380B2 (en) | Scan flip-flop and associated method | |
US8487658B2 (en) | Compact and robust level shifter layout design | |
US20070096154A1 (en) | Standard cell | |
JP2004022877A (ja) | 複数電源用スタンダードセル、自動配置配線用スタンダードセルライブラリ、電源配線方法及び半導体集積装置 | |
JP2007329920A (ja) | Mtmos回路のモード遷移中に電荷を再利用して消費電力を削減する回路及び方法 | |
US6252425B1 (en) | Method and apparatus for an N-NARY logic circuit | |
CN112331634A (zh) | 金属氧化物半导体mos器件 | |
EP1649493B1 (en) | Nested voltage island architecture | |
JP2011054980A (ja) | 半導体集積回路装置 | |
EP3379406B1 (en) | Processing circuit capable of dynamically modifying its precision | |
US7844922B2 (en) | Semiconductor integrated circuit device and design method thereof | |
CN113113404B (zh) | 集成电路结构、器件和计算机实现的方法 | |
JP2005327862A (ja) | 半導体集積回路及び半導体集積回路の設計方法 | |
JP3216409B2 (ja) | 半導体集積回路装置 | |
Sinha et al. | Current-sensing for crossbars | |
US6911846B1 (en) | Method and apparatus for a 1 of N signal | |
US6167554A (en) | Combinational logic circuit, its design method and integrated circuit device | |
US6223330B1 (en) | System and method for designing integrated circuits using cells with multiple unrelated outputs | |
Pedram et al. | Power optimization in VLSI layout: a survey | |
Patil | Flow based logic design partitioning | |
Shin et al. | Semicustom design of zigzag power-gated circuits in standard cell elements | |
US6653858B2 (en) | Bypass capacitance localization | |
US20230418556A1 (en) | Static cmos-based full adder circuits |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081006 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20081006 Year of fee payment: 8 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20091006 Year of fee payment: 9 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20101006 Year of fee payment: 10 |
|
LAPS | Cancellation because of no payment of annual fees |