FPGAバンクのVCCIO割付、いつまで手作業でやりますか?
FPGA基板の設計でいちばん気を遣うのが、I/Oバンクごとの VCCIO 電圧アサイン。
10バンクを超える大規模FPGAだと、Excelシートに「Bank番号 / 接続するインターフェース / 必要電圧 / VCCIO_N ピン番号」と書き出して、データシートと照合しながら整合チェック…という光景が今も日本中の設計現場で続いています。
本記事ではこの作業を自動化する考え方と、ScoutCheckerでの具体的な実現方法を解説します。
なぜ VCCIO アサインは事故りやすいか
1. バンク境界がデバイスごとに異なる
Cyclone V 5CGXFC9C7F23C8N は I/O バンクが10個、Kintex-7 XC7K325T-2FFG900C は16個、Stratix V GX は20個以上…と、デバイスでバンク数も境界も違う。データシートのピンテーブルから抜き出す作業に半日かかります。
2. 規格と電圧の整合制約
差動規格(LVDS / SSTL / HSTL)は VCCIO 電圧と論理的にリンクしています:
| 規格 | 必須VCCIO |
|---|---|
| LVDS | 2.5V |
| LVCMOS33 | 3.3V |
| LVCMOS18 | 1.8V |
| SSTL15 | 1.5V |
| HSTL18 | 1.8V |
「LVDS は 2.5V でしか動かない」のに、`Bank A は 3.3V で運用してる、しかも LVDS インターフェースを Bank A に割り当てた」という設計、実際にあります。基板実装後に動かなくて発覚する典型。
3. VREF ピンの位置決め
差動規格を使うバンクは VREF ピンに VCCIO/2 の基準電圧が必要。VREF ピンは I/O ピンと共有されているので、「I/O として使うつもりだったピンが実は VREF 必須」みたいな衝突が起こる。
4. バンク跨ぎの参照
Quartus / Vivado の制約ファイルでピンを縛った後、レイアウト工程でいざルーティングを始めると 「このピン、別のバンクに移したい」 が頻発。VCCIO 整合チェックを、ピン移動のたびに手作業でやり直すのは現実的でない。
自動化のアプローチ
ScoutChecker は内蔵のFPGAピンライブラリから、ピン番号 → バンク番号、バンク番号 → 必須電圧グループの対応を自動取得します。これと BOM の信号アサインを組み合わせると:
入力:
- ネットリスト(どの IC ピンにどんな信号が来てるか)
- BOMで指定された FPGA 型番
- signal_assignments(このネットは LVDS 規格、このネットは LVCMOS33、等)
処理:
1. 各FPGAピンを Bank N に分類
2. 同一 Bank 内の信号規格を集計
3. 規格 → VCCIO 必須電圧マッピング
4. VCCIO_N ピンに来ているネットの電圧と照合
出力:
- 規格不整合警告("Bank 14 has LVDS signal but VCCIO_14 = 3.3V")
- VREF 衝突警告
- 同一バンクに混在する規格のサマリ
検出例
仮に Kintex-7 XC7K325T-2FFG900C で「Bank 14 を 3.3V で運用しているが、LVDS 信号も Bank 14 に割り当ててしまっている」設計を解析した場合:
[Step03c] FPGA pin enrichment: XC7K325T_FFG900
[Step15b] FPGA bank voltage check:
Bank 14 (VCCIO_14 = 3.3V from VCC_3V3)
Signals on this bank:
- U7.AB1: LVDS_OUT_P (LVDS - requires 2.5V) ← MISMATCH
- U7.AB2: LVDS_OUT_N (LVDS - requires 2.5V) ← MISMATCH
- U7.AC3: GPIO_LED1 (LVCMOS33 - OK)
- U7.AC4: SPI_MISO (LVCMOS33 - OK)
WARNING: Bank 14 has 2 signals requiring 2.5V VCCIO,
but VCCIO_14 net (VCC_3V3) = 3.3V.
Move LVDS signals to a 2.5V bank or change VCCIO_14 to 2.5V.
これが全バンク × 全インターフェース で機械的にチェックされる。手作業ではほぼ無理な精度です。
自動化できる範囲・できない範囲
| 項目 | 自動化可能? |
|---|---|
| バンクごとの信号規格集計 | ✅ |
| VCCIO 電圧との整合 | ✅ |
| VREF ピンの衝突検出 | ✅ |
| 終端抵抗の値推奨 | ⚠️ 設計ルール次第 |
| インピーダンス整合 | ❌ レイアウト依存 |
| EMI への影響 | ❌ 物理レイアウト依存 |
CADのERCでは見えない領域の大半は 「ピン機能と信号属性の整合」 で、これがScoutCheckerが得意とする領域です。
運用上のヒント
- 設計初期にバンク方針を固定する — 「Bank 0,1,14 は 3.3V系、Bank 13,15 は 1.8V系」みたいな運用ルールを決めて、レビューでは方針からの逸脱だけ見る
- 解析を CI に組み込む — BOM 変更や制約ファイル更新のたびに自動回す
- 設計レビューは「不整合だけ」見る — 全バンクを目視チェックしない
まとめ
VCCIO バンクアサインは、本質的に「ピン機能・信号規格・電圧」の3項対応なので、機械的にチェックできる領域です。Excel と人力でやってる時間を解析ツールに任せて、レビューは判断が必要なところだけに集中する、というのが現代的な運用の形だと思います。
Cyclone V対応一覧 や Kintex-7対応一覧 でScoutCheckerが解析対応しているデバイスを確認できます。