低電力・小型FPGA
Lattice、Efinix、Gowin、Renesas、Microchipの小型FPGAファミリー、電力はどこへ消えるか、スリープとクロックゲーティングの効果、そして作る前に消費電力を見積もる方法を解説します。
概要
FPGAに関する文章の大半は大型部品についてのものですが、販売されるFPGAの大半は小型です。1,000から20,000 LUTで1米ドルから10米ドルのデバイスが、カメラ、ウェアラブル、産業用センサー、グルーロジックの役割に収まっており、多くはバッテリーや厳しい熱予算の下で動いています。このハブは、そうしたデバイスを選び、使うエンジニアのためのページです。そこでの問いは「収まるか」であることはまれで、たいてい「どれだけ消費するか」です。FPGAの電力の計算はマイクロコントローラとは十分に異なるので、きちんと学ぶ価値があります。
FPGAは同じ仕事をするASICより多く消費します。配線マルチプレクサとコンフィギュレーションメモリが容量とリークを加えるからです。小型ファミリーはこれに対し、より古くリークの少ないプロセス(7 nmではなく40 nmや28 nm)、外部メモリを必要としないフラッシュやOTPのコンフィギュレーション、きめ細かなスリープモードで対抗しています。その結果、最良の部品では待機時に数十マイクロワット、有用な仕事をしているときに数ミリワットになります。
重要な考え方
静的電力対動的電力
静的電力は、コンフィギュレーション済みでアイドル状態のデバイスが消費するものです。トランジスタのリークに由来し、プロセス、温度、ダイサイズで決まります。古いプロセスでは、ジャンクション温度が10度から15度上がるごとにおよそ2倍になります。動的電力は、容量、電源電圧の2乗、スイッチング率に比例し、すべてのネットについて合計されます。FPGAでは配線が支配的なので、設計の動的電力はLUT数ではなく、何本の長い配線がどれだけ頻繁にトグルするかで決まります。実践的な帰結はこうです。部品が許す範囲でコア電圧を下げ、トグルの多いロジックを物理的にコンパクトに保ち、毎サイクル必要でないものはすべてクロックイネーブルまたはクロックゲーティングで止めることです。ブロックRAMとSerDesには独自の固定コストがあります。有効にしたブロックRAM 1個で、100個以上のLUTより多く消費することがあります。
スリープモードと復帰時間
バッテリーに優しい部品は、クロック停止以上のものを提供します。iCE40 UltraPlusはスタンバイ時に約75 µAのコア電流で状態を保持し(Latticeは電力ではなく電流で示しています)、ハードSPIとI2Cブロックはメッセージを受けてファブリックを起こせます。CrossLink-NXとCertus-NXは、未使用バンクのプログラマブルなパワーダウンを備えています。内蔵フラッシュをもつGowin GW1N部品は、電源を完全に切ってもコンフィギュレーションを保持し、ミリ秒で再コンフィギュレーションできます。Renesas ForgeFPGAは、数百から数千LUTと最小のクラスで、マイクロアンペア級のスタンバイを狙い、数個のディスクリートロジック部品の置き換えとして販売されています。確認すべき変数は復帰レイテンシです。外部フラッシュから再読み込みするSRAM部品は数十ミリ秒と電流のバーストを必要とし、フラッシュベースの部品はマイクロ秒で動作状態になります。間欠動作のセンサーノードでは、復帰ごとの再コンフィギュレーションのエネルギーが仕事そのものを上回ることがあります。
作る前に見積もる
どのベンダーも、LUT数、クロック周波数、活性率、I/Oリストを入力するとミリワットの数値を返すスプレッドシートやツールを提供しています。LatticeにはRadiant内のPower Calculator、EfinixにはEfinity Power Estimator、MicrochipにはPolarFire power estimator、AMDとAlteraには大型部品向けのPower Design ManagerとEarly Power Estimatorがあります。いずれも入力する活性率の精度次第であり、通常のデフォルトである12.5%はほとんどの設計で間違っています。信頼できる方法は、代表的なワークロードのゲートレベルシミュレーションを実行し、スイッチング活性(SAIFまたはVCD)を書き出し、それをベンダーの配線後解析ツールに与えることです。それから測定します。LatticeとEfinixの開発ボードは、まさにこの目的のためにコアレールをジャンパに引き出しています。
どこから始めるか
小型FPGAは学習に自然な場所であり、入門トラックはこれらの上で動きます。/learn/beginner/01-what-is-an-fpga/はFPGAがなぜその電力を消費するのかを説明し、/learn/beginner/04-registers-clocks-and-state/は最初の省電力ツールであるクロックイネーブルを紹介し、/learn/beginner/08-counters-timers-and-debouncing/は測定に適した最初の設計です。iCE40ボードのコアレールに電流計をつなぎ、同じLED点滅設計を1 MHzと48 MHzで試してみてください。その差はデータシートより多くを教えてくれます。電力を意識した設計に関する中級トラックは準備中です。
ツールとベンダー
| ファミリー | ベンダー | プロセス | ロジック規模 | コンフィギュレーション | 位置づけ |
|---|---|---|---|---|---|
| iCE40 UltraPlus | Lattice | 40 nm | 2.8kから5.3k LUT | SRAM、外部またはNVCM | 常時稼働センシング、オープンソースフロー |
| CrossLink-NX、Certus-NX | Lattice | 28 nm FD-SOI | 17kから40k LUT | SRAM、高速ブート | MIPIブリッジ、低リーク |
| Trion | Efinix | 40 nm | 4kから120k LE | SRAM、外部フラッシュ | 小型パッケージ、安価、大型品にハードMIPI |
| Titanium | Efinix | 16 nm | ロードマップ上は35kから2M LE、出荷中は最大370k | SRAM | 低電力で高性能 |
| GW1N、GW1NR | Gowin | 55 nm | 1kから9k LUT | 内蔵フラッシュとSRAM | 最安、R品種はパッケージ内PSRAM |
| GW2A、GW5A | Gowin | 55 nm、22 nm | 18kから138k LUT | SRAM | ミドルレンジ、Apiculaサポート拡大中 |
| ForgeFPGA | Renesas | 非公開 | 数百から数千LUT | OTP | ディスクリートロジック置き換え、無料のGo Configureツール |
| IGLOO2、PolarFire | Microchip | 65 nm、28 nm | 6kから481k LE | フラッシュ、電源投入時に即動作 | ミドルレンジで最低の静的電力、セキュリティ、信頼性 |
Microchipは、PolarFireの静的電力は同規模のSRAMベース競合品のおよそ半分だと主張しています。フラッシュコンフィギュレーションとプロセスを考えればもっともらしい話ですが、推定ツールで自分の数値を比較してください。
よくある間違い
- データシートの25度での典型的な静的電力値を読んで、70度の筐体向けに設計する。
- コンフィギュレーションフラッシュ、レギュレータ、発振器を忘れる。小さな設計では、これらがFPGAより多く消費することがあります。
- 1ミリ秒に1サンプル処理する設計に、フリーランの100 MHzクロックを使う。遅く動かすか、バーストで速く動かしてスリープしてください。
- 未使用のI/Oバンクに電源を入れたままにし、未使用の入力をフローティングにする。
- 再コンフィギュレーションのエネルギーを見積もらずに、間欠動作の用途にSRAMベースの部品を選ぶ。
- 推定ツールのデフォルト活性率を信頼する。
さらに深く
- Lattice iCE40 UltraPlus製品ページ。ファミリーのデータシートと電力値があります。
- Lattice CrossLink-NX。28 nm FD-SOIファミリーです。
- Efinix Trion。Quantumアーキテクチャの概要を含みます。
- Gowin製品概要。GW1N、GW2A、GW5Aのデータシートがあります。
- Renesas ForgeFPGA。
- Microchip PolarFire FPGA。電力推定ツールはdesign resourcesタブからリンクされています。