図1.35の場合は論理やゲート段数が決まっていたが、次の図1.36では入力容量の64倍の負荷容量を駆動する場合に、1段から4段のインバータを使う場合の遅延時間を比較している。なお、インバータの段数が奇数段の場合は出力の極性が反転するが、入力の極性で調整できるという前提で、極性の反転は無視して考える。
図1.36の構成では、パス全体のEffortは64であり、左端の1段のインバータの場合は、64のEffortを1段で負担するので、全体の遅延は65単位と大きくなってしまう。右隣の2段の構成では、各段の分担するEffortは8、基本遅延を含めると各段の遅延は9単位。それが2段分で18単位の遅延と大幅に高速化される。これを3段にすると各段のEffortは4、遅延は5単位となって、全体の遅延は15単位となる。
これを更に4段とすると、各段のEffortは2.83、遅延は3.83単位となる。全体遅延は15.3単位となって、3段の場合の15より若干大きくなってしまう。この例に見られるように、各段が分担するEffortが4の場合が最短の遅延時間を与えることが示されている。しかし、 Effortを横軸にとり、遅延を縦軸にとってグラフを書くと、底は平たくなり、Effortが2.4~6の範囲では遅延時間の最適値からの増加は15%以内と小さいので、ぴったり4でなくとも、この範囲に収めればほぼ最短の遅延時間が得られる。
図1.36の各構成で、充放電される容量を見てみると、1段の構成では負荷の64Cと1Cの入力容量のインバータであり、全体でも65Cである。2段の構成ではインバータが1Cと8Cであり、全体の容量は73Cとなる。そして3段の場合は85C、4段の場合は98.5Cとなる。この容量の比が消費電力の比となるので、遅延時間×消費電力を計算すると次の表1.2のようになる。
段数 | 1 | 2 | 3 | 4 |
---|---|---|---|---|
Effort | 64 | 8 | 4 | 2.83 |
消費電力(比率) | 65 | 73 | 85 | 98.5 |
遅延×消費電力(比率) | 1 | 0.311 | 0.302 | 0.357 |
表1.2 64倍の負荷を駆動する場合の遅延時間×消費電力の比較 |
この比較では3段の場合が遅延電力積がもっとも小さくなっているが、各段のEffortを横軸、遅延電力積を縦軸にとったグラフは、遅延時間を縦軸としたグラフよりEffortが大きい方にずれ、Effortが5~6程度の部分が底となる。従って、速度最高を狙うならEffort 4.0であるが、わずかな速度低下を許容するなら5~6程度にする方が消費電力的には有利である。
最適のEffort値を実現するためには、任意のサイズのゲートが作れることが必要であるが、実際の設計では使用できる論理回路のタイプとそれぞれに何種類かのサイズがあるというようなゲートライブラリが用意され、そのライブラリにあるゲートを選択して使用することになる。このため、必ずしもぴったりのサイズのゲートがあるとは限らないので、理論値に一番近いサイズのもので我慢することになる。
ここでは原理を説明するために、1つの入力から1つの出力までのパスについてLogical Effortの理論の説明を行ったが、実際の論理回路では1つの出力には多数の入力が関係し、多数のパスが存在する。従って、まず、最長の遅延時間のパスをここで述べた方法で最適化し、それで決まったゲートのサイズは保存して次に長いパスの最適化を行うというように、順次、ゲートのサイズを決めて行く。