FPGAピン配置で見落としがちな5つの落とし穴
CADのERC(Electrical Rule Check)はネットリストの整合性は見てくれますが、FPGAデバイス固有のピン要件までは知りません。結果として、回路図レビューでは見つからず、基板実装後の電源投入で初めて気付く、という事故が多発します。
本記事では現行FPGA(Intel Cyclone V、AMD/Xilinx Artix-7、Microchip PolarFire)の基板設計レビューで、ERCを通っていても残りやすい5つの落とし穴を整理します。
1. VCCIO バンクとI/O電圧の不整合
FPGAは複数のI/Oバンクに分かれており、各バンクの VCCIO ピンが個別に存在します。
例えば Cyclone V の 5CGXFC9C7F23C8N は I/O バンクが10以上あり、それぞれが独立した VCCIO 入力を持ちます。バンクA を 1.8V、バンクB を 3.3V で運用したい場合、それぞれの VCCIO に正しい電源を供給する必要があります。
よくあるミス:
- 全 VCCIO を 3.3V につないでしまい、1.8V LVDS インターフェースが動かない
- VCCIO_0 だけ 1.8V にし忘れて、コンフィグレーション系のピンが規格外電圧で動作
ScoutChecker は VCCIO_X 系のピンを cVOLT:VCCIO_<番号> でグルーピングし、一つでも違う電圧ネットに繋がっていれば指摘します。
2. VREF ピンの未終端
差動入力規格(HSTL、SSTL)を使う場合、各バンクに VREF ピン が存在します。これは外部抵抗分圧で VCCIO/2 を作って入力する基準電圧ピンです。
差動規格を使わない場合は VREF ピンは I/O として使えますが、未使用 + 未接続だとそのピン位置を I/O 配置できなくなる場合があります。これは PCB レイアウト後に Quartus / Vivado でピン制約を入れた段階で気付く、というパターン。
設計時のチェックポイント:
- どのバンクで差動規格を使うか確定しているか?
- 使わないバンクの VREF ピンは I/O として使う気か、放置か?
3. PLL の専用入力ピンを汎用 I/O に使ってしまう
Cyclone V / Stratix V には CLK_X 系の専用クロック入力ピンがあり、PLL に接続するクロックはこれら専用ピンに入れないとジッタ性能が出ません。
- 専用ピンに別の信号を割り当てる → PLL 入力がない → 後付けで配線変更
- グローバルクロックネットの代わりにロジックエレメント経由でクロック分配 → タイミングクロージャ不能
CLK_X_PIN という名前のピンは、原則 PLL 入力以外に使わない、という方針が安全です。
4. JTAG ピンのプルアップ/プルダウン
JTAGピン(TDI / TDO / TCK / TMS)は デバイスごとに推奨プルアップ/プルダウン が決まっています。
- TDI: プルアップ
- TMS: プルアップ
- TCK: プルダウン
- TDO: プルアップ(チェーン接続時はオプショナル)
Xilinx 7 シリーズの場合、PROGRAM_B や INIT_B も同様にプルアップが必須。これを忘れるとコンフィグレーション失敗が確率的に発生します。
ScoutChecker は JTAG / コンフィグレーション系ピンに対し、終端抵抗の有無と方向(VCC側 / GND側)を自動チェックします。
5. 未使用 I/O の処理(FLOAT / 終端 / プルダウン)
未使用 I/O ピンは:
- フローティング(NC) → ノイズ拾いやすく EMI 観点で非推奨
- プルダウン抵抗 → 一般的に推奨
- 内部プルアップ/プルダウン有効化 → コンフィグレーション後のみ有効
Intel の場合 As input tri-stated with weak pull-up が初期値で、Xilinx は Pulldown が初期値、というデフォルトの違いも要注意です。
まとめ:ERCの外側を埋める
CADのERCは「ネット名と接続関係」を見ます。FPGA 設計レビューで本当に大事なのは、**「そのピンがどう使われるか」「電圧/論理レベルが整合しているか」**といった文脈情報のチェックです。
ScoutChecker はこれを自動化することを目的に開発しています。BOMから FPGA 型番を読み取り、対応するピン機能テーブルを自動マッチングして、上記5項目を含むチェックを実施します。
対応FPGA一覧 で利用可能なデバイスを確認できます。