【回路設計ヒント】どうする?FPGAの端子アサイン ~仮デザイン作成編~

FPGAの端子アサインを誤ると、基板完成後に設計をやり直す事態になりかねません。本記事では、基板製造前に確認できる"仮デザイン"の作り方と、Vivado™でGenerate Bitstreamまで通すためのポイントを解説します。
この記事でわかること
- 仮デザインを作成する目的
- 端子アサイン、クロック、ハードマクロを仮デザインに組み込む際の考え方と注意点
- インプリ実行時に確認すべきこと(Generate Bitstreamまで確認する理由)
- ロジックが削減(リダクション)されるのを回避する工夫
皆さん、こんにちは。FPGAの端子アサインはどうやって決めていますか?
FPGA設計者が主体で決めている、回路(基板)設計者が主体で決めている、FPGAも回路も一人で両方行っている、等々あると思います。
一人で両方を行っている場合には臨機応変に修正対応が行えそうですが、分業にしている場合には

FPGA設計者が決めている場合は「パターンの引き回しが考慮されない」
回路設計者が決めている場合は「FPGAの機能や仕組みが考慮されない」
といった問題が起きることがあるかと思います。
中でも一番困るのが、基板は出来上がったのに端子アサインが原因でVivado™やISE™がエラーで通らず、実機が動かせなかったり、基板が作り直しになったりする場合ですね。
そこで、FPGAを使い始めた方やFPGA内部をあまりご存じない方に向けて、FPGAの端子アサインに関するヒントをお伝えしたいと思います。
それでは、はじめましょう。
仮デザインの目的
この仮デザインを作る目的は
- 端子が希望通りにアサインできるか
- クロックの入力とクロックリソースが希望通りに使用できるか
- 端子のオプションと端子につながるハードマクロが希望通りに使用できるか
- Vivado™やISE™で問題なくインプリが行えるか
- 基板の設計に影響がないか
の確認になります。
「基板の製造が終わってから、端子アサインを変更しないとFPGAのデザインが作れない」
という悲劇を可能な限り回避するためのものとなります。
※本内容は100%回避できることを保証するものではありませんので、予めご了承ください
FPGAの端子アサイン設定のポイント(XDC/UCFへの記載)
必要な端子はすべてHDLやブロックデザインに記述し、I/O Standard やオプションなどもすべて設定ファイル.XDC/.UCFに記載しましょう。
DDRメモリ・LVDS・MIPI D-PHYなどのインタフェースIPは、ウイザードを使って今回使う形にIPを作成するか、リファレンスデザインを今回使う形に修正して組み込みます。
クロックの組み込み
クロック入力端子、クロックバッファ、PLL(MMCM)といったクロックリソースは、今回使用する構成ですべての内容をデザインに組み込みましょう。
PLL(MMCM)の必要な出力はすべて接続します。PLL(MMCM)をカスケードで使用する場合やクロック切り替えを行うなど複雑な構成にする場合には、その内容もすべて組み込みます。
トランシーバやCPU(SoCのPS)から供給されるクロックを使用する場合にはそちらの接続もお忘れなく。
ハードマクロの組み込み
ISERDES、OSERDES、IDELAY、トランシーバブロック、A/Dコンバータなどなど、FPGAの外と中をつなぐのに必要なハードマクロ全てをデザインに組み込みます。
DDRメモリ・LVDS・MIPI D-PHYなどのインタフェースIPやリファレンスデザインがあればそれを組み込みます。
※端子に関係ないブロックRAMやDSPなどのハードマクロはこのデザインでは考慮していません
インプリ(論理合成・配置配線)の実行とGenerate Bitstreamまでの確認
デザインが出来上がったらwarningの確認も必要ですが、確認は必ず「Generate Bitstream」まで行ってください。
論理合成・配置配線ができていても最後の「Generate Bitstream」でルール違反が判明しエラーが出ることがあります。
削減(リダクション)の回避
せっかくデザインを作成してインプリしたのにロジックが削除(リダクション)されて中身が空っぽになったりしていませんか?
FPGAのツールは最適化の際に使われていない不要なロジックを削除しますので、最後まで残らなければ確認ができていないことになってしまいます。
各種使用量をチェックして、組み込んだものが必要数あるか必ず確認しましょう。
もし、ロジックが削除されている場合には次のように工夫をしてみましょう。
- 入力端子と出力端子すべてを接続する。間にFFやAND/ORなどの論理を挿入してもよいです。
- クロックは使用する構成で作成し、全クロックがFFで使われるように接続します。このFFも削除されないよう注意してください
- IPやハードマクロの入出力もすべて入力端子と出力端子に接続します。テスト用ロジックがある場合にはそれを組み込みましょう
イメージ図

※ここではロジックが削除されないようにするのが目的なため、クロックの切り替え等の考慮は考えていません。
まとめ
FPGAの外と中をつなぐ端子(I/F)部分は、基板が出来上がってしまうと変更が難しくなってしまうため、基板作成前に確認を行うようにしましょう。
仮デザイン作成の主なポイントは以下のとおりです。
- 必要な端子・クロック・ハードマクロをすべてデザインに組み込む
- XDC/UCFにI/O Standardなどのオプションをすべて記載する
- Generate Bitstreamまでエラーなく通過することを確認する
- リダクションが発生していないか使用量をチェックする
基板完成後の端子アサイン変更は設計コスト・リードタイムに直結します。仮デザインによる事前確認を習慣にしましょう。
いかがでしたか?
今回お伝えした仮デザインの作成は確認方法のひとつであり、他の方法もあるかと思います。大事なことは、FPGAを使いたい形で使えるか・基板設計に影響がないかを確認できることです。
最後までご覧いただきましてありがとうございました!
これからもブログを通じて、皆様の設計にお役立てできればと思います。 次回のブログもどうぞよろしくお願いいたします。
弊社ではFPGA設計や回路図設計、レイアウト設計、ソフトウェア設計、筐体設計などを受託開発しています。
サービス内容をWEBサイトに掲載していますので、ぜひご覧ください。
FPGAの活用に際して設計検討などありましたら、お気軽にお問い合わせください。




