このコラムでは「意外と知られていないけど、知っていると差がつく FPGA の技術情報」をご紹介します。
FPGA初心者の方からベテランの方まで、幅広くご活用いただける内容ですので、ぜひ最後までお付き合いください。

【第 9 回】 ショートサーキット(貫通)電力を削減する方法

消費電力計算式の中からショートサーキット電力のパラメータの1つである “Q(貫通電流による電荷)” を低減する方法を検討します。

“Q” はpMOSとnMOSの両トランジスタが開いた状態に流れるので、“Q”を低減するにはトランジスタを迅速に閉じることです。 
そのためには、出力の負荷容量を減らすか、トランジスタの駆動力を上げる方法があります。 

負荷容量を下げる

負荷容量は、出力につながった配線の容量と次段の入力ピン容量の合計です。
負荷容量を下げるとショートサーキット電力以上にスイッチング電力が下がり、遅延時間も早くなります。

負荷容量を下げる方法は第 6 回を参照してください。

トランジスタの駆動力を上げる

トランジスタの駆動力を上げには、トランジスタを並列化する方法とトランジスタの大きさを大きくする方法があります。

例えば、ゲートアレイはトランジスタの大きさが決まっているので、並列化で駆動力を上げることができます。
1 倍⇒ 2 倍の駆動力にするには、 pMOS を 1 個だけ追加します(たったの 1/4 ゲート)。
スタンダードセルはトランジスタの大きさを変えられるので、トランジスタを大きさを最適化して求める駆動力のセルを用意できます。
(実際には大きなトランジスタを 1 つ用意するよりも、トランジスタの駆動力を 2.7 倍毎に徐々に大きくする方法が最適です。)

ところが、FPGAで駆動力を上げるには大きなブロックを並列化するので、駆動力を上げると電力を多く消費することがあります。よって、FPGAの場合はショートサーキット電力を下げるために駆動力を上げるのはあまりお勧めできません。

Bi-directional バッファ

Bi-directional バッファの信号がコンフリクト(L信号とH信号がぶつかる)すると、かなり大きな貫通電力を消費しますので、できるだけコンフリクトしないようにします。

グリッジ

信号が“L”でも“H”でもない中間電位の時にショートサーキット電力を消費します。
演算回路でグリッジが多く発生すると中間電位の信号になるので、ショートサーキット電力を多く消費します。パワーシミュレータの多くがこの電力を扱えませんのでグリッジは注意が必要です。


電源電圧が 5V の時代はショートサーキット電力が回路全体の~30%も占めていました。今では電源電圧が 1V 以下になったので、リーク電力やスイッチング電力と比べてあまり気にする必要はなくなりました。
ただし、貫通電流はデバイスの寿命を短くしますので、できるだけ抑えた方がいいと思います。