![見出し画像](https://assets.st-note.com/production/uploads/images/27770457/rectangle_large_type_2_a217306a8b3a34cab2b684cbb607a52d.jpeg?width=1200)
ロジック設計とデバイス設定
FPGAの設計は、VHDLやVerilogHDL、更にはVivado HLSのようにC言語を使った高位合成まで出て来て、随分とやり易くなりました。
それ以上に規模が増えているので、実務は一向に楽になった気がしませんがね。
さて、ロジック設計はそうやって言語設計が出来ますから、ソフトウェアを担当していた人がロジック設計を行うというのも、ありです。
ありですが、設計結果がどういう形でデバイスにアサインされるのかを知らないと、シミュレーションまでは動くのに実機で動かせない事態になってしまいます。
ロジック設計とは別に行わなければならない「デバイス設定」。FPGAを始めたばかりだったり、ハードウェアに馴染みがなかったりすると結構苦労するところです。
良い記事があったのでご紹介していきます。
1.タイミング解析
クロックの乗せ換えの記事でも簡単に触れたのですが、デバイスにはそれぞれ必要なセットアップタイム、ホールドタイムという規定があり、これに違反すると正しく動作しません。
しかし、このあたりは専門用語ばかりでVivadoのタイミングレポートを見ても、何がダメでエラーになってるのか、サッパリ分からないと思います。
詳しく書いてあったのがこの記事です。
4ビットカウンタでわかる FPGA のための論理回路 入門 (5)
https://www.acri.c.titech.ac.jp/wordpress/archives/1541
セットアップタイム、ホールドタイムの他に、クロックスキュー(クロック信号の伝搬遅延)やスラック(余裕値)の話も載っています。
この記事を理解出来れば、Vivadoのタイミングレポートを読んでも、何が書いてあるのか理解出来るようになるでしょう。
2.ピン配置の設定
ピン配置とは、デバイスの何番ピンに、どの信号を接続するかという設定です。
最近のデバイスは普通に400ピンとかありますから、結構な手間なんですよね。あ、大丈夫ですよ。電源ピンなんかの専用ピンは設定がいりませんから、設定するのは200ピンくらいです。
設定にはXDCファイルと呼ばれるテキストファイルを使用します。
拡張子がxdcというだけです。テキストエディタ―で編集します。
その説明記事はこちら。
FPGA オリジナルボード設計 I/O ピンの配置を決める「XDC ファイル」の書き方
https://www.acri.c.titech.ac.jp/wordpress/archives/3449
市販されている開発ボードですと、メーカーがXDCファイルを配布していることが多いです。ただ、専用の、仕事で回路設計して、基板を起こしたものであれば全部の設定を手作業でする必要があります。
XDCファイルの書き方を知らないと、デバイスが動かないんです。
そんなわけで、デバイス設定に必要な知識が書かれた素晴らしい記事を2つ、ご紹介させて頂きました。
実のところ、部分的にですが、VivadoにはGUI上から設定出来る機能もあります。
それを使えば、細かい文法とか知らなくても設定することは可能なのですが、使うのが面倒な上に、全ての設定は出来ません。テキストエディタで直接XDCを書く方が、格段に楽なので覚えてしまいましょう。
ちなみに、Vivadoから使う場合には、一度、Synthesisを通して、Synthesized Designを開く必要があります。
Synthesized Designを開いた状態で、Constraints Wizard なり、Edit Timing Constraints を使用すればタイミング制約を追加することが出来ます。